diff options
author | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-11 03:20:15 -0800 |
---|---|---|
committer | sceptillion <33798691+sceptillion@users.noreply.github.com> | 2017-12-11 03:20:15 -0800 |
commit | ab3471804884dbd9d5703e44a3f742a936d3d1a0 (patch) | |
tree | 4ac8a191f4c17e0a8c50c1a3748e284e74994306 | |
parent | a5df1bf9e97771c8b4c7abe99450e5661b8c3b9a (diff) |
split memory.s
-rw-r--r-- | asm/code.s | 7063 | ||||
-rw-r--r-- | asm/code_80035F0.s | 6004 | ||||
-rw-r--r-- | asm/memory.s | 1075 | ||||
-rw-r--r-- | ld_script.txt | 2 |
4 files changed, 7081 insertions, 7063 deletions
@@ -5689,7067 +5689,4 @@ _08002E78: bx r1 thumb_func_end sub_8002DF0 - thumb_func_start InitHeap -InitHeap: - push {lr} - bl InitHeapInternal - pop {r0} - bx r0 - thumb_func_end InitHeap - - thumb_func_start MemoryClear8 -MemoryClear8: - push {lr} - cmp r1, 0 - ble _08002EAA - movs r2, 0 -_08002EA0: - subs r1, 0x1 - strb r2, [r0] - adds r0, 0x1 - cmp r1, 0 - bgt _08002EA0 -_08002EAA: - pop {r0} - bx r0 - thumb_func_end MemoryClear8 - - thumb_func_start MemoryClear16 -MemoryClear16: - push {lr} - cmp r1, 0 - ble _08002EC2 - movs r2, 0 -_08002EB8: - subs r1, 0x2 - strh r2, [r0] - adds r0, 0x2 - cmp r1, 0 - bgt _08002EB8 -_08002EC2: - pop {r0} - bx r0 - thumb_func_end MemoryClear16 - - thumb_func_start MemoryClear32 -MemoryClear32: - push {lr} - bl CpuClear - pop {r0} - bx r0 - thumb_func_end MemoryClear32 - - thumb_func_start MemoryFill8 -MemoryFill8: - push {lr} - lsls r1, 24 - lsrs r1, 24 - cmp r2, 0 - ble _08002EE8 -_08002EDE: - subs r2, 0x1 - strb r1, [r0] - adds r0, 0x1 - cmp r2, 0 - bgt _08002EDE -_08002EE8: - pop {r0} - bx r0 - thumb_func_end MemoryFill8 - - thumb_func_start MemoryFill16 -MemoryFill16: - push {lr} - lsls r1, 16 - lsrs r1, 16 - cmp r2, 0 - ble _08002F00 -_08002EF6: - subs r2, 0x2 - strh r1, [r0] - adds r0, 0x2 - cmp r2, 0 - bgt _08002EF6 -_08002F00: - pop {r0} - bx r0 - thumb_func_end MemoryFill16 - - thumb_func_start MemoryFill32 -MemoryFill32: - push {lr} - cmp r2, 0 - ble _08002F12 -_08002F0A: - subs r2, 0x4 - stm r0!, {r1} - cmp r2, 0 - bgt _08002F0A -_08002F12: - pop {r0} - bx r0 - thumb_func_end MemoryFill32 - - thumb_func_start MemoryCopy8 -MemoryCopy8: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F2E -_08002F20: - subs r2, 0x1 - ldrb r0, [r1] - strb r0, [r3] - adds r1, 0x1 - adds r3, 0x1 - cmp r2, 0 - bgt _08002F20 -_08002F2E: - pop {r0} - bx r0 - thumb_func_end MemoryCopy8 - - thumb_func_start MemoryCopy16 -MemoryCopy16: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F4A -_08002F3C: - subs r2, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - cmp r2, 0 - bgt _08002F3C -_08002F4A: - pop {r0} - bx r0 - thumb_func_end MemoryCopy16 - - thumb_func_start MemoryCopy32 -MemoryCopy32: - push {lr} - adds r3, r0, 0 - cmp r2, 0 - ble _08002F62 -_08002F58: - subs r2, 0x4 - ldm r1!, {r0} - stm r3!, {r0} - cmp r2, 0 - bgt _08002F58 -_08002F62: - pop {r0} - bx r0 - thumb_func_end MemoryCopy32 - - thumb_func_start InitHeapInternal -InitHeapInternal: - push {lr} - sub sp, 0x8 - ldr r0, _08002F90 - str r0, [sp] - movs r0, 0x90 - lsls r0, 10 - str r0, [sp, 0x4] - ldr r1, _08002F94 - movs r0, 0 - str r0, [r1] - ldr r0, _08002F98 - ldr r2, _08002F9C - mov r1, sp - movs r3, 0x20 - bl DoInitHeap - add sp, 0x8 - pop {r0} - bx r0 - .align 2, 0 -_08002F90: .4byte gUnknown_20011D0 -_08002F94: .4byte gUnknown_2000EA8 -_08002F98: .4byte gUnknown_2000EB0 -_08002F9C: .4byte gUnknown_2000ED0 - thumb_func_end InitHeapInternal - - thumb_func_start DoInitHeap -DoInitHeap: - push {r4-r6,lr} - mov r6, r9 - mov r5, r8 - push {r5,r6} - ldr r4, [r1, 0x4] - mov r9, r4 - movs r4, 0x4 - negs r4, r4 - mov r5, r9 - ands r5, r4 - mov r9, r5 - ldr r6, _08002FFC - ldr r4, _08003000 - mov r8, r4 - ldr r5, [r4] - lsls r4, r5, 2 - adds r4, r6 - str r0, [r4] - adds r5, 0x1 - mov r4, r8 - str r5, [r4] - ldr r5, [r1] - str r5, [r0, 0x14] - mov r1, r9 - str r1, [r0, 0x18] - movs r1, 0x2 - str r1, [r0] - movs r4, 0 - str r4, [r0, 0x4] - str r2, [r0, 0x8] - movs r1, 0x1 - str r1, [r0, 0xC] - str r3, [r0, 0x10] - str r4, [r2] - str r4, [r2, 0x4] - str r5, [r2, 0xC] - mov r5, r9 - str r5, [r2, 0x10] - str r4, [r2, 0x14] - str r4, [r2, 0x8] - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08002FFC: .4byte gUnknown_2000E88 -_08003000: .4byte gUnknown_2000EA8 - thumb_func_end DoInitHeap - - thumb_func_start InitSubHeap -InitSubHeap: - push {r4,r5,lr} - sub sp, 0x8 - adds r3, r2, 0 - lsls r4, r3, 1 - adds r4, r3 - movs r2, 0x4 - negs r2, r2 - lsls r4, 3 - ldr r5, [r1, 0x4] - subs r5, r4 - ands r5, r2 - ldr r2, [r1] - adds r4, r2, r4 - str r4, [sp] - str r5, [sp, 0x4] - mov r1, sp - bl DoInitHeap - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end InitSubHeap - - thumb_func_start xxx_memory_attr_related -xxx_memory_attr_related: - push {lr} - adds r1, r0, 0 - cmp r1, 0 - bne _0800303C - movs r0, 0 - b _08003060 -_0800303C: - movs r0, 0x8 - ands r0, r1 - cmp r0, 0 - beq _08003048 - movs r0, 0x4 - b _08003060 -_08003048: - movs r2, 0x7 - ands r2, r1 - movs r0, 0x1 - cmp r2, 0x7 - beq _08003060 - movs r0, 0x2 - cmp r2, 0x1 - beq _08003060 - movs r0, 0x5 - cmp r2, 0x3 - bne _08003060 - movs r0, 0x3 -_08003060: - pop {r1} - bx r1 - thumb_func_end xxx_memory_attr_related - - thumb_func_start MemorySearchFromFront -MemorySearchFromFront: - push {r4-r7,lr} - adds r5, r0, 0 - adds r6, r2, 0 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _080030CC - movs r4, 0 - ldr r3, [r5, 0x8] - ldr r2, [r5, 0xC] - cmp r4, r2 - bge _08003104 - ldr r0, [r3, 0x4] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08003090 - ldr r0, [r3, 0x10] - cmp r0, r6 - blt _080030AC - movs r0, 0 - b _08003108 -_08003090: - adds r4, 0x1 - adds r3, 0x18 - cmp r4, r2 - bge _08003104 - ldr r0, [r3, 0x4] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08003090 - ldr r0, [r3, 0x10] - cmp r0, r6 - blt _080030AC -_080030A8: - adds r0, r4, 0 - b _08003108 -_080030AC: - cmp r4, r2 - bge _08003104 - movs r5, 0x1 - adds r1, r2, 0 -_080030B4: - ldr r0, [r3, 0x4] - ands r0, r5 - cmp r0, 0 - bne _080030C2 - ldr r0, [r3, 0x10] - cmp r0, r6 - bge _080030A8 -_080030C2: - adds r4, 0x1 - adds r3, 0x18 - cmp r4, r1 - blt _080030B4 - b _08003104 -_080030CC: - movs r7, 0x1 - negs r7, r7 - ldr r1, _08003100 - movs r4, 0 - ldr r3, [r5, 0x8] - ldr r2, [r5, 0xC] - cmp r4, r2 - bge _080030FC - movs r5, 0x1 -_080030DE: - ldr r0, [r3, 0x4] - ands r0, r5 - cmp r0, 0 - bne _080030F4 - ldr r0, [r3, 0x10] - cmp r0, r6 - blt _080030F4 - cmp r0, r1 - bge _080030F4 - adds r7, r4, 0 - adds r1, r0, 0 -_080030F4: - adds r4, 0x1 - adds r3, 0x18 - cmp r4, r2 - blt _080030DE -_080030FC: - adds r0, r7, 0 - b _08003108 - .align 2, 0 -_08003100: .4byte 0x00024001 -_08003104: - movs r0, 0x1 - negs r0, r0 -_08003108: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MemorySearchFromFront - - thumb_func_start MemorySearchFromBack -MemorySearchFromBack: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r2, 0 - movs r0, 0x4 - ands r0, r1 - cmp r0, 0 - beq _08003168 - ldr r0, [r4, 0xC] - subs r3, r0, 0x1 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - ldr r1, [r4, 0x8] - adds r2, r1, r0 - b _08003132 -_0800312E: - subs r3, 0x1 - subs r2, 0x18 -_08003132: - cmp r3, 0 - blt _080031A8 - ldr r0, [r2, 0x4] - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _0800312E - ldr r0, [r2, 0x10] - cmp r0, r5 - blt _0800314A -_08003146: - adds r0, r3, 0 - b _080031AC -_0800314A: - cmp r3, 0 - blt _080031A8 - movs r1, 0x1 -_08003150: - ldr r0, [r2, 0x4] - ands r0, r1 - cmp r0, 0 - bne _0800315E - ldr r0, [r2, 0x10] - cmp r0, r5 - bge _08003146 -_0800315E: - subs r3, 0x1 - subs r2, 0x18 - cmp r3, 0 - bge _08003150 - b _080031A8 -_08003168: - movs r7, 0x1 - negs r7, r7 - ldr r6, _080031A4 - ldr r0, [r4, 0xC] - subs r3, r0, 0x1 - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - ldr r1, [r4, 0x8] - adds r2, r1, r0 - cmp r3, 0 - blt _080031A0 - movs r1, 0x1 -_08003182: - ldr r0, [r2, 0x4] - ands r0, r1 - cmp r0, 0 - bne _08003198 - ldr r0, [r2, 0x10] - cmp r0, r5 - blt _08003198 - cmp r0, r6 - bge _08003198 - adds r7, r3, 0 - adds r6, r0, 0 -_08003198: - subs r3, 0x1 - subs r2, 0x18 - cmp r3, 0 - bge _08003182 -_080031A0: - adds r0, r7, 0 - b _080031AC - .align 2, 0 -_080031A4: .4byte 0x00024001 -_080031A8: - movs r0, 0x1 - negs r0, r0 -_080031AC: - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MemorySearchFromBack - - thumb_func_start MemorySplitFront -MemorySplitFront: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - str r0, [sp, 0x8] - str r1, [sp, 0xC] - str r2, [sp] - str r3, [sp, 0x4] - adds r0, r3, 0 - adds r0, 0x3 - str r0, [sp, 0x10] - movs r0, 0x4 - negs r0, r0 - ldr r1, [sp, 0x10] - ands r1, r0 - str r1, [sp, 0x10] - ldr r2, [sp, 0xC] - lsls r2, 1 - mov r12, r2 - ldr r0, [sp, 0xC] - add r0, r12 - lsls r0, 3 - ldr r5, [sp, 0x8] - ldr r2, [r5, 0x8] - adds r4, r2, r0 - ldr r0, [r4, 0x10] - cmp r0, r1 - ble _08003260 - ldr r3, [r5, 0xC] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - adds r1, r2, r0 - mov r9, r12 - mov r10, r2 - mov r12, r3 - ldr r6, [r5, 0x10] - mov r8, r6 - ldr r7, [sp, 0xC] - cmp r12, r7 - ble _08003222 -_0800320A: - adds r2, r1, 0 - subs r2, 0x18 - adds r0, r2, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - subs r3, 0x1 - adds r1, r2, 0 - ldr r0, [sp, 0xC] - cmp r3, r0 - bgt _0800320A -_08003222: - mov r2, r12 - adds r2, 0x1 - ldr r1, [sp, 0x8] - str r2, [r1, 0xC] - cmp r2, r8 - ble _08003240 - ldr r0, _08003238 - ldr r1, _0800323C - mov r3, r8 - bl FatalError - .align 2, 0 -_08003238: .4byte gUnknown_80B7EB8 -_0800323C: .4byte gUnknown_80B7EC4 -_08003240: - ldr r0, [sp, 0xC] - add r0, r9 - lsls r0, 3 - adds r0, 0x18 - mov r2, r10 - adds r1, r2, r0 - ldr r0, [r1, 0xC] - ldr r5, [sp, 0x10] - adds r0, r5 - str r0, [r1, 0xC] - ldr r0, [r1, 0x10] - subs r0, r5 - str r0, [r1, 0x10] - str r5, [r4, 0x10] - ldr r6, [sp, 0x4] - str r6, [r4, 0x14] -_08003260: - ldr r0, [sp] - bl xxx_memory_attr_related - str r0, [r4] - ldr r7, [sp] - str r7, [r4, 0x4] - ldr r0, [sp, 0x34] - str r0, [r4, 0x8] - adds r0, r4, 0 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MemorySplitFront - - thumb_func_start MemorySplitBack -MemorySplitBack: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x14 - str r0, [sp, 0x8] - str r1, [sp, 0xC] - str r2, [sp] - str r3, [sp, 0x4] - adds r0, r3, 0 - adds r0, 0x3 - str r0, [sp, 0x10] - movs r0, 0x4 - negs r0, r0 - ldr r1, [sp, 0x10] - ands r1, r0 - str r1, [sp, 0x10] - ldr r2, [sp, 0xC] - lsls r0, r2, 1 - adds r0, r2 - lsls r0, 3 - ldr r5, [sp, 0x8] - ldr r1, [r5, 0x8] - adds r4, r1, r0 - ldr r0, [r4, 0x10] - ldr r6, [sp, 0x10] - cmp r0, r6 - ble _08003328 - ldr r3, [r5, 0xC] - lsls r0, r3, 1 - adds r0, r3 - lsls r0, 3 - adds r1, r0 - mov r12, r3 - ldr r7, [r5, 0x10] - mov r8, r7 - ldr r0, [r4, 0xC] - mov r9, r0 - movs r2, 0x18 - adds r2, r4 - mov r10, r2 - ldr r5, [sp, 0xC] - cmp r12, r5 - ble _080032F6 -_080032DE: - adds r2, r1, 0 - subs r2, 0x18 - adds r0, r2, 0 - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - ldm r0!, {r5-r7} - stm r1!, {r5-r7} - subs r3, 0x1 - adds r1, r2, 0 - ldr r6, [sp, 0xC] - cmp r3, r6 - bgt _080032DE -_080032F6: - mov r2, r12 - adds r2, 0x1 - ldr r7, [sp, 0x8] - str r2, [r7, 0xC] - cmp r2, r8 - ble _08003314 - ldr r0, _0800330C - ldr r1, _08003310 - mov r3, r8 - bl FatalError - .align 2, 0 -_0800330C: .4byte gUnknown_80B7EFC -_08003310: .4byte gUnknown_80B7EC4 -_08003314: - ldr r0, [r4, 0x10] - ldr r1, [sp, 0x10] - subs r0, r1 - str r0, [r4, 0x10] - add r0, r9 - mov r4, r10 - str r0, [r4, 0xC] - str r1, [r4, 0x10] - ldr r2, [sp, 0x4] - str r2, [r4, 0x14] -_08003328: - ldr r0, [sp] - bl xxx_memory_attr_related - str r0, [r4] - ldr r5, [sp] - str r5, [r4, 0x4] - ldr r0, [sp, 0x34] - str r0, [r4, 0x8] - adds r0, r4, 0 - add sp, 0x14 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MemorySplitBack - - thumb_func_start MemoryLocateSet -MemoryLocateSet: - push {r4-r7,lr} - sub sp, 0x8 - adds r5, r0, 0 - adds r7, r1, 0 - adds r6, r2, 0 - cmp r5, 0 - bne _0800335C - ldr r5, _08003390 -_0800335C: - asrs r4, r6, 8 - movs r0, 0x1 - orrs r4, r0 - movs r0, 0xFF - ands r6, r0 - movs r0, 0x2 - ands r0, r4 - cmp r0, 0 - beq _08003394 - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r7, 0 - bl MemorySearchFromFront - adds r1, r0, 0 - cmp r1, 0 - blt _080033B4 - str r6, [sp] - adds r0, r5, 0 - adds r2, r4, 0 - adds r3, r7, 0 - bl MemorySplitFront - ldr r0, [r0, 0xC] - b _080033CC - .align 2, 0 -_08003390: .4byte gUnknown_2000EB0 -_08003394: - adds r0, r5, 0 - adds r1, r4, 0 - adds r2, r7, 0 - bl MemorySearchFromBack - adds r1, r0, 0 - cmp r1, 0 - blt _080033B4 - str r6, [sp] - adds r0, r5, 0 - adds r2, r4, 0 - adds r3, r7, 0 - bl MemorySplitBack - ldr r0, [r0, 0xC] - b _080033CC -_080033B4: - ldr r0, _080033C4 - ldr r1, _080033C8 - str r4, [sp] - str r6, [sp, 0x4] - adds r2, r5, 0 - adds r3, r7, 0 - bl FatalError - .align 2, 0 -_080033C4: .4byte gUnknown_80B7F14 -_080033C8: .4byte gUnknown_80B7F20 -_080033CC: - add sp, 0x8 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end MemoryLocateSet - - thumb_func_start MemoryAlloc -MemoryAlloc: - push {lr} - adds r3, r0, 0 - adds r2, r1, 0 - ldr r0, _080033E8 - adds r1, r3, 0 - bl DoAlloc - pop {r1} - bx r1 - .align 2, 0 -_080033E8: .4byte gUnknown_2000EB0 - thumb_func_end MemoryAlloc - - thumb_func_start MemoryFree -MemoryFree: - push {lr} - adds r1, r0, 0 - ldr r0, _080033FC - bl DoFree - pop {r0} - bx r0 - .align 2, 0 -_080033FC: .4byte gUnknown_2000EB0 - thumb_func_end MemoryFree - - thumb_func_start CreateSubHeap -CreateSubHeap: - push {r4-r7,lr} - sub sp, 0xC - adds r4, r0, 0 - adds r5, r1, 0 - adds r7, r2, 0 - adds r6, r3, 0 - cmp r4, 0 - bne _08003412 - ldr r4, _0800342C -_08003412: - adds r0, r4, 0 - movs r1, 0x9 - adds r2, r5, 0 - bl MemorySearchFromBack - adds r1, r0, 0 - cmp r1, 0 - bge _08003438 - ldr r0, _08003430 - ldr r1, _08003434 - adds r2, r5, 0 - bl FatalError - .align 2, 0 -_0800342C: .4byte gUnknown_2000EB0 -_08003430: .4byte gUnknown_80B7F88 -_08003434: .4byte gUnknown_80B7F94 -_08003438: - str r6, [sp] - adds r0, r4, 0 - movs r2, 0x9 - adds r3, r5, 0 - bl MemorySplitBack - ldr r1, [r0, 0xC] - str r1, [sp, 0x4] - ldr r0, [r0, 0x10] - str r0, [sp, 0x8] - add r0, sp, 0x4 - adds r1, r7, 0 - bl DoCreateSubHeap - str r4, [r0, 0x4] - add sp, 0xC - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end CreateSubHeap - - thumb_func_start DoCreateSubHeap -DoCreateSubHeap: - push {r4,lr} - sub sp, 0x8 - adds r2, r1, 0 - ldr r4, [r0] - adds r1, r4, 0 - adds r1, 0x1C - str r1, [sp] - ldr r0, [r0, 0x4] - subs r0, 0x1C - str r0, [sp, 0x4] - adds r0, r4, 0 - mov r1, sp - bl InitSubHeap - adds r0, r4, 0 - add sp, 0x8 - pop {r4} - pop {r1} - bx r1 - thumb_func_end DoCreateSubHeap - - thumb_func_start xxx_unused_memory_free -xxx_unused_memory_free: - push {r4-r7,lr} - adds r4, r0, 0 - cmp r4, 0 - beq _08003504 - movs r1, 0 - ldr r0, [r4, 0xC] - cmp r0, 0x1 - bne _080034A2 - ldr r0, [r4, 0x8] - ldr r0, [r0, 0x4] - cmp r0, 0 - bne _080034A2 - movs r1, 0x1 -_080034A2: - cmp r1, 0 - beq _08003504 - movs r0, 0 - mov r12, r0 - movs r3, 0 - ldr r6, _080034E0 - ldr r0, [r6] - cmp r12, r0 - bge _080034F2 - ldr r5, _080034E4 - adds r1, r6, 0 - adds r7, r5, 0 - movs r2, 0 -_080034BC: - adds r0, r2, r5 - ldr r0, [r0] - cmp r0, r4 - bne _080034E8 - ldr r0, [r1] - subs r0, 0x1 - str r0, [r1] - cmp r3, r0 - bge _080034F8 - ldr r1, _080034E0 - adds r2, r7 -_080034D2: - ldr r0, [r2, 0x4] - stm r2!, {r0} - adds r3, 0x1 - ldr r0, [r1] - cmp r3, r0 - blt _080034D2 - b _080034F8 - .align 2, 0 -_080034E0: .4byte gUnknown_2000EA8 -_080034E4: .4byte gUnknown_2000E88 -_080034E8: - adds r2, 0x4 - adds r3, 0x1 - ldr r0, [r6] - cmp r3, r0 - blt _080034BC -_080034F2: - mov r0, r12 - cmp r0, 0 - beq _08003504 -_080034F8: - ldr r0, [r4, 0x4] - cmp r0, 0 - beq _08003504 - adds r1, r4, 0 - bl DoFree -_08003504: - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end xxx_unused_memory_free - - thumb_func_start DoAlloc -DoAlloc: - push {lr} - movs r3, 0x80 - lsls r3, 1 - orrs r3, r2 - adds r2, r3, 0 - bl MemoryLocateSet - pop {r1} - bx r1 - thumb_func_end DoAlloc - - thumb_func_start DoFree -DoFree: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r0, 0 - cmp r4, 0 - bne _0800352E - ldr r4, _080035D4 -_0800352E: - cmp r1, 0 - beq _080035E4 - movs r0, 0 - mov r8, r0 - ldr r3, [r4, 0x8] - mov r12, r3 - ldr r3, [r4, 0xC] - cmp r8, r3 - bge _080035E4 - movs r2, 0 -_08003542: - mov r5, r12 - ldr r0, [r5, 0xC] - cmp r0, r1 - bne _080035D8 - str r2, [r5] - str r2, [r5, 0x4] - str r2, [r5, 0x14] - str r2, [r5, 0x8] - ldr r0, [r4, 0xC] - subs r0, 0x1 - cmp r8, r0 - bge _08003592 - mov r2, r12 - adds r2, 0x18 - ldr r0, [r2, 0x4] - cmp r0, 0 - bne _08003592 - ldr r0, [r5, 0x10] - ldr r1, [r2, 0x10] - adds r0, r1 - str r0, [r5, 0x10] - ldr r0, [r4, 0xC] - subs r0, 0x1 - str r0, [r4, 0xC] - mov r3, r8 - adds r3, 0x1 - cmp r3, r0 - bge _08003592 -_0800357A: - adds r0, r2, 0 - adds r1, r2, 0 - adds r1, 0x18 - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - adds r3, 0x1 - adds r2, 0x18 - ldr r0, [r4, 0xC] - cmp r3, r0 - blt _0800357A -_08003592: - mov r6, r8 - cmp r6, 0 - ble _080035E4 - mov r2, r12 - subs r2, 0x18 - ldr r0, [r2, 0x4] - cmp r0, 0 - bne _080035E4 - ldr r0, [r2, 0x10] - mov r7, r12 - ldr r1, [r7, 0x10] - adds r0, r1 - str r0, [r2, 0x10] - ldr r0, [r4, 0xC] - subs r0, 0x1 - str r0, [r4, 0xC] - mov r2, r12 - mov r3, r8 - cmp r3, r0 - bge _080035E4 -_080035BA: - adds r0, r2, 0 - adds r1, r2, 0 - adds r1, 0x18 - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - ldm r1!, {r5-r7} - stm r0!, {r5-r7} - adds r3, 0x1 - adds r2, 0x18 - ldr r0, [r4, 0xC] - cmp r3, r0 - blt _080035BA - b _080035E4 - .align 2, 0 -_080035D4: .4byte gUnknown_2000EB0 -_080035D8: - movs r0, 0x1 - add r8, r0 - movs r5, 0x18 - add r12, r5 - cmp r8, r3 - blt _08003542 -_080035E4: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end DoFree - - thumb_func_start nullsub_141 -nullsub_141: - bx lr - thumb_func_end nullsub_141 - - thumb_func_start nullsub_142 -nullsub_142: - bx lr - thumb_func_end nullsub_142 - - thumb_func_start sub_80035F8 -sub_80035F8: - push {lr} - pop {r0} - bx r0 - thumb_func_end sub_80035F8 - - thumb_func_start sub_8003600 -sub_8003600: - push {r4-r6,lr} - ldr r1, _08003650 - ldr r6, _08003654 - movs r2, 0 - ldr r0, _08003658 - movs r3, 0x80 - lsls r3, 2 -_0800360E: - strb r2, [r0] - strb r2, [r0, 0x1] - strb r2, [r0, 0x2] - strb r2, [r0, 0x3] - adds r0, 0x4 - subs r3, 0x1 - cmp r3, 0 - bne _0800360E - movs r0, 0 - movs r5, 0x80 - lsls r5, 1 - ldr r4, _0800365C - movs r3, 0x20 - ldr r2, _08003660 -_0800362A: - strb r0, [r1] - strh r5, [r1, 0x2] - strb r0, [r1, 0x4] - strb r0, [r1, 0x5] - strb r0, [r1, 0x6] - strb r0, [r1, 0x7] - str r0, [r1, 0x8] - str r4, [r1, 0xC] - str r2, [r1, 0x10] - subs r3, 0x1 - adds r1, 0x14 - cmp r3, 0 - bge _0800362A - movs r0, 0x1 - strb r0, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08003650: .4byte gUnknown_3000C00 -_08003654: .4byte gUnknown_3001B58 -_08003658: .4byte gUnknown_3000400 -_0800365C: .4byte sub_8003A34 -_08003660: .4byte sub_8003A74 - thumb_func_end sub_8003600 - - thumb_func_start sub_8003664 -sub_8003664: - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - ldr r0, _0800369C - adds r2, r0 - movs r3, 0 - movs r4, 0x1 - strb r4, [r2] - movs r0, 0 - strh r1, [r2, 0x2] - strb r0, [r2, 0x4] - strb r0, [r2, 0x5] - strb r0, [r2, 0x6] - strb r0, [r2, 0x7] - str r3, [r2, 0x8] - ldr r0, _080036A0 - str r0, [r2, 0xC] - ldr r0, _080036A4 - str r0, [r2, 0x10] - ldr r0, _080036A8 - strb r4, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800369C: .4byte gUnknown_3000C00 -_080036A0: .4byte sub_8003AC0 -_080036A4: .4byte sub_8003B50 -_080036A8: .4byte gUnknown_3001B58 - thumb_func_end sub_8003664 - - thumb_func_start sub_80036AC -sub_80036AC: - push {r4,lr} - sub sp, 0x4 - str r2, [sp] - lsls r0, 16 - lsrs r0, 16 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - ldr r0, _080036E4 - adds r2, r0 - movs r3, 0 - movs r4, 0x1 - strb r4, [r2] - strh r1, [r2, 0x2] - ldr r0, [sp] - str r0, [r2, 0x4] - str r3, [r2, 0x8] - ldr r0, _080036E8 - str r0, [r2, 0xC] - ldr r0, _080036EC - str r0, [r2, 0x10] - ldr r0, _080036F0 - strb r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080036E4: .4byte gUnknown_3000C00 -_080036E8: .4byte sub_8003C18 -_080036EC: .4byte sub_8003D00 -_080036F0: .4byte gUnknown_3001B58 - thumb_func_end sub_80036AC - - thumb_func_start sub_80036F4 -sub_80036F4: - push {r4,lr} - sub sp, 0x4 - str r2, [sp] - lsls r0, 16 - lsrs r0, 16 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - ldr r0, _0800372C - adds r2, r0 - movs r3, 0 - movs r4, 0x1 - strb r4, [r2] - strh r1, [r2, 0x2] - ldr r0, [sp] - str r0, [r2, 0x4] - str r3, [r2, 0x8] - ldr r0, _08003730 - str r0, [r2, 0xC] - ldr r0, _08003734 - str r0, [r2, 0x10] - ldr r0, _08003738 - strb r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_0800372C: .4byte gUnknown_3000C00 -_08003730: .4byte sub_8003E2C -_08003734: .4byte sub_8003EC0 -_08003738: .4byte gUnknown_3001B58 - thumb_func_end sub_80036F4 - - thumb_func_start sub_800373C -sub_800373C: - push {r4,lr} - lsls r0, 16 - lsrs r0, 16 - lsls r3, r0, 2 - adds r3, r0 - lsls r3, 2 - ldr r0, _08003770 - adds r3, r0 - movs r4, 0x1 - strb r4, [r3] - movs r0, 0 - strh r1, [r3, 0x2] - strb r0, [r3, 0x4] - strb r0, [r3, 0x5] - strb r0, [r3, 0x6] - strb r0, [r3, 0x7] - str r2, [r3, 0x8] - ldr r0, _08003774 - str r0, [r3, 0xC] - ldr r0, _08003778 - str r0, [r3, 0x10] - ldr r0, _0800377C - strb r4, [r0] - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08003770: .4byte gUnknown_3000C00 -_08003774: .4byte sub_8003F60 -_08003778: .4byte sub_8004034 -_0800377C: .4byte gUnknown_3001B58 - thumb_func_end sub_800373C - - thumb_func_start sub_8003780 -sub_8003780: - push {r4,lr} - sub sp, 0x4 - str r2, [sp] - lsls r0, 16 - lsrs r0, 16 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - ldr r0, _080037B8 - adds r2, r0 - movs r3, 0 - movs r4, 0x1 - strb r4, [r2] - strh r1, [r2, 0x2] - ldr r0, [sp] - str r0, [r2, 0x4] - str r3, [r2, 0x8] - ldr r0, _080037BC - str r0, [r2, 0xC] - ldr r0, _080037C0 - str r0, [r2, 0x10] - ldr r0, _080037C4 - strb r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080037B8: .4byte gUnknown_3000C00 -_080037BC: .4byte sub_8004170 -_080037C0: .4byte sub_8004264 -_080037C4: .4byte gUnknown_3001B58 - thumb_func_end sub_8003780 - - thumb_func_start sub_80037C8 -sub_80037C8: - push {r4,lr} - sub sp, 0x4 - str r2, [sp] - lsls r0, 16 - lsrs r0, 16 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - ldr r0, _08003800 - adds r2, r0 - movs r3, 0 - movs r4, 0x1 - strb r4, [r2] - strh r1, [r2, 0x2] - ldr r0, [sp] - str r0, [r2, 0x4] - str r3, [r2, 0x8] - ldr r0, _08003804 - str r0, [r2, 0xC] - ldr r0, _08003808 - str r0, [r2, 0x10] - ldr r0, _0800380C - strb r4, [r0] - add sp, 0x4 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08003800: .4byte gUnknown_3000C00 -_08003804: .4byte sub_8004388 -_08003808: .4byte sub_8004434 -_0800380C: .4byte gUnknown_3001B58 - thumb_func_end sub_80037C8 - - thumb_func_start sub_8003810 -sub_8003810: - sub sp, 0x4 - str r1, [sp] - lsls r0, 16 - lsrs r2, r0, 20 - lsls r1, r2, 2 - adds r1, r2 - lsls r1, 2 - ldr r2, _08003838 - adds r1, r2 - movs r2, 0x1 - strb r2, [r1] - ldr r1, _0800383C - lsrs r0, 14 - adds r0, r1 - ldr r1, [sp] - str r1, [r0] - ldr r0, _08003840 - strb r2, [r0] - add sp, 0x4 - bx lr - .align 2, 0 -_08003838: .4byte gUnknown_3000C00 -_0800383C: .4byte gUnknown_3000400 -_08003840: .4byte gUnknown_3001B58 - thumb_func_end sub_8003810 - - thumb_func_start sub_8003844 -sub_8003844: - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r4, r0, 16 - lsls r1, 16 - lsrs r1, 16 - lsrs r0, 20 - lsls r2, r0, 2 - adds r2, r0 - lsls r2, 2 - ldr r0, _08003880 - adds r2, r0 - movs r5, 0x1 - strb r5, [r2] - adds r0, r1, 0 - bl sub_80027A0 - str r0, [sp] - ldr r0, _08003884 - lsls r4, 2 - adds r4, r0 - ldr r0, [sp] - str r0, [r4] - ldr r0, _08003888 - strb r5, [r0] - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08003880: .4byte gUnknown_3000C00 -_08003884: .4byte gUnknown_3000400 -_08003888: .4byte gUnknown_3001B58 - thumb_func_end sub_8003844 - - thumb_func_start sub_800388C -sub_800388C: - push {r4-r7,lr} - adds r6, r1, 0 - lsls r0, 16 - lsrs r1, r0, 16 - lsrs r4, r0, 20 - adds r3, r1, r2 - subs r0, r3, 0x1 - cmp r0, 0 - bge _080038A0 - adds r0, 0xF -_080038A0: - lsls r0, 12 - lsrs r3, r0, 16 - lsls r1, 2 - ldr r0, _080038E4 - adds r1, r0 - lsls r5, r4, 2 - ldr r7, _080038E8 - ldr r0, _080038EC - mov r12, r0 - cmp r2, 0 - ble _080038C0 -_080038B6: - ldm r6!, {r0} - stm r1!, {r0} - subs r2, 0x1 - cmp r2, 0 - bne _080038B6 -_080038C0: - adds r0, r5, r4 - lsls r0, 2 - adds r0, r7 - adds r2, r4, 0 - cmp r2, r3 - bgt _080038D8 - movs r1, 0x1 -_080038CE: - strb r1, [r0] - adds r2, 0x1 - adds r0, 0x14 - cmp r2, r3 - ble _080038CE -_080038D8: - movs r0, 0x1 - mov r1, r12 - strb r0, [r1] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080038E4: .4byte gUnknown_3000400 -_080038E8: .4byte gUnknown_3000C00 -_080038EC: .4byte gUnknown_3001B58 - thumb_func_end sub_800388C - - thumb_func_start sub_80038F0 -sub_80038F0: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x4 - adds r5, r1, 0 - lsls r0, 16 - lsrs r1, r0, 16 - lsrs r6, r0, 20 - adds r3, r1, r2 - subs r0, r3, 0x1 - cmp r0, 0 - bge _0800390C - adds r0, 0xF -_0800390C: - lsls r0, 12 - lsrs r7, r0, 16 - lsls r1, 2 - ldr r0, _0800396C - adds r1, r0 - mov r8, r1 - lsls r0, r6, 2 - mov r9, r0 - cmp r2, 0 - ble _0800393C - adds r4, r2, 0 -_08003922: - ldrh r0, [r5] - adds r5, 0x2 - bl sub_80027A0 - str r0, [sp] - mov r1, r8 - adds r1, 0x4 - mov r8, r1 - subs r1, 0x4 - stm r1!, {r0} - subs r4, 0x1 - cmp r4, 0 - bne _08003922 -_0800393C: - mov r1, r9 - adds r0, r1, r6 - lsls r0, 2 - ldr r1, _08003970 - adds r0, r1 - adds r4, r6, 0 - ldr r2, _08003974 - cmp r4, r7 - bgt _0800395A - movs r1, 0x1 -_08003950: - strb r1, [r0] - adds r4, 0x1 - adds r0, 0x14 - cmp r4, r7 - ble _08003950 -_0800395A: - movs r0, 0x1 - strb r0, [r2] - add sp, 0x4 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800396C: .4byte gUnknown_3000400 -_08003970: .4byte gUnknown_3000C00 -_08003974: .4byte gUnknown_3001B58 - thumb_func_end sub_80038F0 - - thumb_func_start sub_8003978 -sub_8003978: - lsls r0, 16 - ldr r1, _08003984 - lsrs r0, 14 - adds r0, r1 - ldr r0, [r0] - bx lr - .align 2, 0 -_08003984: .4byte gUnknown_3000400 - thumb_func_end sub_8003978 - - thumb_func_start sub_8003988 -sub_8003988: - push {lr} - lsls r0, 16 - ldr r1, _080039A0 - lsrs r0, 14 - adds r0, r1 - ldr r0, [r0] - bl sub_8002774 - lsls r0, 16 - lsrs r0, 16 - pop {r1} - bx r1 - .align 2, 0 -_080039A0: .4byte gUnknown_3000400 - thumb_func_end sub_8003988 - - thumb_func_start sub_80039A4 -sub_80039A4: - lsls r0, 16 - lsrs r0, 16 - ldr r2, _080039B4 - ldrh r1, [r2] - orrs r0, r1 - strh r0, [r2] - bx lr - .align 2, 0 -_080039B4: .4byte gUnknown_3001B5A - thumb_func_end sub_80039A4 - - thumb_func_start sub_80039B8 -sub_80039B8: - push {r4,r5,lr} - ldr r0, _08003A28 - ldrb r0, [r0] - cmp r0, 0 - beq _08003A20 - ldr r4, _08003A2C - movs r1, 0x96 - lsls r1, 1 - adds r0, r4, r1 - ldrb r0, [r0] - cmp r0, 0 - beq _080039DA - movs r0, 0xA0 - lsls r0, 2 - adds r1, r4, r0 - movs r0, 0x1 - strb r0, [r1] -_080039DA: - movs r5, 0 -_080039DC: - ldrb r0, [r4] - cmp r0, 0 - beq _080039F0 - lsls r0, r5, 16 - lsrs r0, 16 - ldr r1, [r4, 0x10] - bl _call_via_r1 - movs r0, 0 - strb r0, [r4] -_080039F0: - adds r5, 0x1 - adds r4, 0x14 - cmp r5, 0x1F - ble _080039DC - ldr r0, _08003A2C - movs r1, 0xA0 - lsls r1, 2 - adds r5, r0, r1 - ldrb r0, [r5] - cmp r0, 0 - beq _08003A14 - ldr r2, [r4, 0xC] - movs r0, 0x20 - movs r1, 0xF0 - bl _call_via_r2 - movs r0, 0 - strb r0, [r5] -_08003A14: - ldr r1, _08003A30 - movs r0, 0x3 - strh r0, [r1] - ldr r1, _08003A28 - movs r0, 0 - strb r0, [r1] -_08003A20: - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08003A28: .4byte gUnknown_3001B58 -_08003A2C: .4byte gUnknown_3000C00 -_08003A30: .4byte gUnknown_3001B5A - thumb_func_end sub_80039B8 - - thumb_func_start sub_8003A34 -sub_8003A34: - push {r4,r5,lr} - sub sp, 0x4 - lsls r0, r1, 16 - lsrs r0, 16 - lsls r5, r0, 2 - ldr r1, _08003A70 - adds r5, r1 - ldrb r1, [r5, 0x2] - movs r2, 0xF8 - adds r3, r2, 0 - ands r3, r1 - lsls r3, 7 - ldrb r4, [r5, 0x1] - adds r1, r2, 0 - ands r1, r4 - lsls r1, 2 - orrs r3, r1 - ldrb r1, [r5] - ands r2, r1 - lsrs r2, 3 - orrs r2, r3 - mov r1, sp - strh r2, [r1] - bl SetBGPaletteBufferColor - add sp, 0x4 - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08003A70: .4byte gUnknown_3000400 - thumb_func_end sub_8003A34 - - thumb_func_start sub_8003A74 -sub_8003A74: - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 20 - lsrs r6, r0, 16 - lsls r1, r6, 2 - ldr r0, _08003ABC - adds r4, r1, r0 - movs r5, 0 - movs r7, 0xF8 -_08003A86: - ldrb r0, [r4, 0x2] - adds r1, r7, 0 - ands r1, r0 - lsls r1, 7 - ldrb r2, [r4, 0x1] - adds r0, r7, 0 - ands r0, r2 - lsls r0, 2 - orrs r1, r0 - ldrb r2, [r4] - adds r0, r7, 0 - ands r0, r2 - lsrs r0, 3 - orrs r0, r1 - mov r1, sp - strh r0, [r1] - adds r0, r6, r5 - bl SetBGPaletteBufferColor - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08003A86 - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08003ABC: .4byte gUnknown_3000400 - thumb_func_end sub_8003A74 - - thumb_func_start sub_8003AC0 -sub_8003AC0: - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r0, _08003B04 - adds r1, r0 - ldrh r2, [r1, 0x2] - adds r6, r2, 0 - lsls r1, r7, 2 - ldr r0, _08003B08 - adds r4, r1, r0 - cmp r2, 0xFF - bls _08003B0C - ldrb r0, [r4, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - ldrb r3, [r4, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - ldrb r0, [r4] - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - b _08003B3A - .align 2, 0 -_08003B04: .4byte gUnknown_3000C00 -_08003B08: .4byte gUnknown_3000400 -_08003B0C: - cmp r2, 0 - bne _08003B16 - mov r0, sp - strh r2, [r0] - b _08003B3E -_08003B16: - ldrb r0, [r4, 0x2] - muls r0, r2 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r5, r0, 7 - ldrb r0, [r4, 0x1] - muls r0, r2 - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 2 - orrs r1, r5 - ldrb r0, [r4] - muls r0, r6 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r1, r0 -_08003B3A: - mov r0, sp - strh r1, [r0] -_08003B3E: - adds r0, r7, 0 - mov r1, sp - bl SetBGPaletteBufferColor - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8003AC0 - - thumb_func_start sub_8003B50 -sub_8003B50: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r2, _08003BAC - adds r1, r2 - ldrh r6, [r1, 0x2] - lsls r0, 20 - lsrs r7, r0, 16 - lsls r1, r7, 2 - ldr r0, _08003BB0 - adds r4, r1, r0 - cmp r6, 0xFF - bls _08003BB4 - movs r5, 0 - movs r6, 0xF8 -_08003B7A: - ldrb r0, [r4, 0x2] - adds r1, r6, 0 - ands r1, r0 - lsls r1, 7 - ldrb r2, [r4, 0x1] - adds r0, r6, 0 - ands r0, r2 - lsls r0, 2 - orrs r1, r0 - ldrb r2, [r4] - adds r0, r6, 0 - ands r0, r2 - lsrs r0, 3 - orrs r0, r1 - mov r1, sp - strh r0, [r1] - adds r0, r7, r5 - bl SetBGPaletteBufferColor - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08003B7A - b _08003C0A - .align 2, 0 -_08003BAC: .4byte gUnknown_3000C00 -_08003BB0: .4byte gUnknown_3000400 -_08003BB4: - cmp r6, 0 - bne _08003BCE - mov r0, sp - strh r6, [r0] - movs r5, 0 -_08003BBE: - adds r0, r7, r5 - mov r1, sp - bl SetBGPaletteBufferColor - adds r5, 0x1 - cmp r5, 0xF - ble _08003BBE - b _08003C0A -_08003BCE: - movs r5, 0 - mov r8, sp -_08003BD2: - ldrb r0, [r4, 0x2] - muls r0, r6 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r2, r0, 7 - ldrb r0, [r4, 0x1] - muls r0, r6 - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 2 - orrs r1, r2 - ldrb r0, [r4] - muls r0, r6 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r1, r0 - mov r0, r8 - strh r1, [r0] - adds r0, r7, r5 - mov r1, sp - bl SetBGPaletteBufferColor - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08003BD2 -_08003C0A: - add sp, 0x4 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8003B50 - - thumb_func_start sub_8003C18 -sub_8003C18: - push {r4-r7,lr} - mov r7, r8 - push {r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r8, r1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r0, _08003C68 - adds r1, r0 - ldrh r2, [r1, 0x2] - mov r12, r2 - ldr r0, [r1, 0x4] - str r0, [sp] - mov r0, r8 - lsls r1, r0, 2 - ldr r0, _08003C6C - adds r4, r1, r0 - cmp r2, 0xFF - bls _08003C70 - ldrb r0, [r4, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - ldrb r3, [r4, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - ldrb r0, [r4] - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - b _08003CE8 - .align 2, 0 -_08003C68: .4byte gUnknown_3000C00 -_08003C6C: .4byte gUnknown_3000400 -_08003C70: - cmp r2, 0 - bne _08003C98 - mov r0, sp - ldrb r0, [r0, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - mov r0, sp - ldrb r3, [r0, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - mov r0, sp - ldrb r0, [r0] - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - b _08003CE8 -_08003C98: - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - subs r0, r2 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - ldrb r1, [r1] - adds r7, r1, 0 - muls r7, r0 - mov r1, sp - ldrb r1, [r1, 0x1] - adds r6, r1, 0 - muls r6, r0 - mov r1, sp - ldrb r1, [r1, 0x2] - muls r1, r0 - ldrb r0, [r4, 0x2] - muls r0, r2 - adds r0, r1 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r5, r0, 7 - ldrb r0, [r4, 0x1] - muls r0, r2 - adds r0, r6 - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 2 - orrs r1, r5 - ldrb r0, [r4] - mov r2, r12 - muls r2, r0 - adds r0, r2, 0 - adds r0, r7 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r1, r0 -_08003CE8: - add r0, sp, 0x4 - strh r1, [r0] - adds r1, r0, 0 - mov r0, r8 - bl SetBGPaletteBufferColor - add sp, 0x8 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8003C18 - - thumb_func_start sub_8003D00 -sub_8003D00: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0xC - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r2, _08003D68 - adds r1, r2 - ldrh r6, [r1, 0x2] - ldr r1, [r1, 0x4] - str r1, [sp] - lsls r0, 20 - lsrs r0, 16 - mov r8, r0 - lsls r1, r0, 2 - ldr r0, _08003D6C - adds r4, r1, r0 - cmp r6, 0xFF - bls _08003D70 - movs r5, 0 - movs r7, 0xF8 - add r6, sp, 0x4 -_08003D36: - ldrb r0, [r4, 0x2] - adds r1, r7, 0 - ands r1, r0 - lsls r1, 7 - ldrb r2, [r4, 0x1] - adds r0, r7, 0 - ands r0, r2 - lsls r0, 2 - orrs r1, r0 - ldrb r2, [r4] - adds r0, r7, 0 - ands r0, r2 - lsrs r0, 3 - orrs r0, r1 - strh r0, [r6] - mov r1, r8 - adds r0, r1, r5 - adds r1, r6, 0 - bl SetBGPaletteBufferColor - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08003D36 - b _08003E1C - .align 2, 0 -_08003D68: .4byte gUnknown_3000C00 -_08003D6C: .4byte gUnknown_3000400 -_08003D70: - cmp r6, 0 - bne _08003DAE - add r4, sp, 0x4 - mov r0, sp - ldrb r0, [r0, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - mov r0, sp - ldrb r3, [r0, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - mov r0, sp - ldrb r0, [r0] - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - strh r1, [r4] - movs r5, 0 -_08003D9C: - mov r2, r8 - adds r0, r2, r5 - adds r1, r4, 0 - bl SetBGPaletteBufferColor - adds r5, 0x1 - cmp r5, 0xF - ble _08003D9C - b _08003E1C -_08003DAE: - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - subs r0, r6 - lsls r0, 16 - lsrs r0, 16 - mov r1, sp - ldrb r1, [r1] - adds r2, r1, 0 - muls r2, r0 - str r2, [sp, 0x8] - mov r1, sp - ldrb r1, [r1, 0x1] - adds r2, r1, 0 - muls r2, r0 - mov r10, r2 - mov r1, sp - ldrb r1, [r1, 0x2] - adds r2, r1, 0 - muls r2, r0 - mov r9, r2 - movs r5, 0 - add r7, sp, 0x4 -_08003DDC: - ldrb r0, [r4, 0x2] - muls r0, r6 - add r0, r9 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r2, r0, 7 - ldrb r0, [r4, 0x1] - muls r0, r6 - add r0, r10 - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 2 - orrs r1, r2 - ldrb r0, [r4] - muls r0, r6 - ldr r2, [sp, 0x8] - adds r0, r2 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r1, r0 - strh r1, [r7] - mov r1, r8 - adds r0, r1, r5 - adds r1, r7, 0 - bl SetBGPaletteBufferColor - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08003DDC -_08003E1C: - add sp, 0xC - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8003D00 - - thumb_func_start sub_8003E2C -sub_8003E2C: - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r6, r1, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r0, _08003E74 - adds r1, r0 - ldrh r2, [r1, 0x2] - adds r5, r2, 0 - ldr r0, [r1, 0x4] - str r0, [sp] - cmp r2, 0xFF - bls _08003E78 - mov r0, sp - ldrb r0, [r0, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - mov r0, sp - ldrb r3, [r0, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - mov r0, sp - ldrb r0, [r0] - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - b _08003EAC - .align 2, 0 -_08003E74: .4byte gUnknown_3000C00 -_08003E78: - cmp r2, 0 - bne _08003E82 - add r0, sp, 0x4 - strh r2, [r0] - b _08003EB0 -_08003E82: - mov r0, sp - ldrb r0, [r0, 0x2] - muls r0, r2 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r4, r0, 7 - mov r0, sp - ldrb r0, [r0, 0x1] - muls r0, r2 - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 2 - orrs r1, r4 - mov r0, sp - ldrb r0, [r0] - muls r0, r5 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r1, r0 -_08003EAC: - add r0, sp, 0x4 - strh r1, [r0] -_08003EB0: - adds r1, r0, 0 - adds r0, r6, 0 - bl SetBGPaletteBufferColor - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8003E2C - - thumb_func_start sub_8003EC0 -sub_8003EC0: - push {r4-r6,lr} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r2, _08003F08 - adds r1, r2 - ldrh r2, [r1, 0x2] - adds r5, r2, 0 - ldr r1, [r1, 0x4] - str r1, [sp] - lsls r0, 20 - lsrs r6, r0, 16 - cmp r2, 0xFF - bls _08003F0C - mov r0, sp - ldrb r0, [r0, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - mov r0, sp - ldrb r3, [r0, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - mov r0, sp - ldrb r0, [r0] - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - b _08003F40 - .align 2, 0 -_08003F08: .4byte gUnknown_3000C00 -_08003F0C: - cmp r2, 0 - bne _08003F16 - add r0, sp, 0x4 - strh r2, [r0] - b _08003F44 -_08003F16: - mov r0, sp - ldrb r0, [r0, 0x2] - muls r0, r2 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r4, r0, 7 - mov r0, sp - ldrb r0, [r0, 0x1] - muls r0, r2 - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 2 - orrs r1, r4 - mov r0, sp - ldrb r0, [r0] - muls r0, r5 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r1, r0 -_08003F40: - add r0, sp, 0x4 - strh r1, [r0] -_08003F44: - adds r5, r0, 0 - movs r4, 0 -_08003F48: - adds r0, r6, r4 - adds r1, r5, 0 - bl SetBGPaletteBufferColor - adds r4, 0x1 - cmp r4, 0xF - ble _08003F48 - add sp, 0x8 - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_8003EC0 - - thumb_func_start sub_8003F60 -sub_8003F60: - push {r4-r7,lr} - sub sp, 0x4 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r7, r1, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r0, _08003FA8 - adds r1, r0 - ldrh r2, [r1, 0x2] - adds r3, r2, 0 - movs r0, 0xF - ands r0, r7 - lsls r0, 2 - ldr r1, [r1, 0x8] - adds r5, r1, r0 - lsls r1, r7, 2 - ldr r0, _08003FAC - adds r4, r1, r0 - cmp r2, 0xFF - bls _08003FB0 - ldrb r0, [r4, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - ldrb r3, [r4, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - ldrb r0, [r4] - b _08003FCA - .align 2, 0 -_08003FA8: .4byte gUnknown_3000C00 -_08003FAC: .4byte gUnknown_3000400 -_08003FB0: - cmp r2, 0 - bne _08003FD6 - ldrb r0, [r5, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - ldrb r3, [r5, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - ldrb r0, [r5] -_08003FCA: - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - mov r0, sp - strh r1, [r0] - b _08004024 -_08003FD6: - movs r1, 0x80 - lsls r1, 1 - adds r0, r1, 0 - subs r0, r3 - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r5] - adds r2, r1, 0 - muls r2, r0 - ldrb r1, [r4] - muls r1, r3 - adds r6, r2, r1 - ldrb r1, [r5, 0x1] - adds r2, r1, 0 - muls r2, r0 - ldrb r1, [r4, 0x1] - muls r1, r3 - adds r2, r1 - ldrb r1, [r5, 0x2] - muls r1, r0 - ldrb r0, [r4, 0x2] - muls r0, r3 - adds r0, r1, r0 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r1, r0, 7 - adds r0, r2, 0 - asrs r0, 8 - ands r0, r3 - lsls r2, r0, 2 - orrs r2, r1 - adds r0, r6, 0 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r2, r0 - mov r0, sp - strh r2, [r0] -_08004024: - adds r0, r7, 0 - mov r1, sp - bl SetBGPaletteBufferColor - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8003F60 - - thumb_func_start sub_8004034 -sub_8004034: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r2, _0800409C - adds r1, r2 - ldrh r2, [r1, 0x2] - mov r8, r2 - ldr r5, [r1, 0x8] - lsls r0, 20 - lsrs r0, 16 - mov r10, r0 - lsls r1, r0, 2 - ldr r0, _080040A0 - adds r4, r1, r0 - cmp r2, 0xFF - bls _080040A4 - movs r7, 0 - movs r5, 0xF8 -_08004068: - ldrb r0, [r4, 0x2] - adds r1, r5, 0 - ands r1, r0 - lsls r1, 7 - ldrb r2, [r4, 0x1] - adds r0, r5, 0 - ands r0, r2 - lsls r0, 2 - orrs r1, r0 - ldrb r2, [r4] - adds r0, r5, 0 - ands r0, r2 - lsrs r0, 3 - orrs r0, r1 - mov r1, sp - strh r0, [r1] - mov r1, r10 - adds r0, r1, r7 - mov r1, sp - bl SetBGPaletteBufferColor - adds r4, 0x4 - adds r7, 0x1 - cmp r7, 0xF - ble _08004068 - b _0800415E - .align 2, 0 -_0800409C: .4byte gUnknown_3000C00 -_080040A0: .4byte gUnknown_3000400 -_080040A4: - mov r2, r8 - cmp r2, 0 - bne _080040E2 - movs r7, 0 - mov r6, sp - movs r4, 0xF8 -_080040B0: - ldrb r0, [r5, 0x2] - adds r1, r4, 0 - ands r1, r0 - lsls r1, 7 - ldrb r2, [r5, 0x1] - adds r0, r4, 0 - ands r0, r2 - lsls r0, 2 - orrs r1, r0 - ldrb r2, [r5] - adds r0, r4, 0 - ands r0, r2 - lsrs r0, 3 - orrs r0, r1 - strh r0, [r6] - mov r1, r10 - adds r0, r1, r7 - mov r1, sp - bl SetBGPaletteBufferColor - adds r5, 0x4 - adds r7, 0x1 - cmp r7, 0xF - ble _080040B0 - b _0800415E -_080040E2: - movs r2, 0x80 - lsls r2, 1 - adds r0, r2, 0 - mov r1, r8 - subs r0, r1 - lsls r0, 16 - lsrs r0, 16 - mov r9, r0 - movs r7, 0 - mov r2, sp - str r2, [sp, 0x4] -_080040F8: - ldrb r0, [r5] - mov r1, r9 - muls r1, r0 - ldrb r0, [r4] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r1, r0 - mov r12, r1 - ldrb r0, [r5, 0x1] - mov r1, r9 - muls r1, r0 - ldrb r0, [r4, 0x1] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r6, r1, r0 - ldrb r0, [r5, 0x2] - mov r1, r9 - muls r1, r0 - ldrb r0, [r4, 0x2] - mov r2, r8 - muls r2, r0 - adds r0, r2, 0 - adds r0, r1, r0 - asrs r0, 8 - movs r3, 0xF8 - ands r0, r3 - lsls r2, r0, 7 - adds r0, r6, 0 - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 2 - orrs r1, r2 - mov r0, r12 - asrs r0, 8 - ands r0, r3 - lsrs r0, 3 - orrs r1, r0 - ldr r0, [sp, 0x4] - strh r1, [r0] - mov r1, r10 - adds r0, r1, r7 - mov r1, sp - bl SetBGPaletteBufferColor - adds r4, 0x4 - adds r5, 0x4 - adds r7, 0x1 - cmp r7, 0xF - ble _080040F8 -_0800415E: - add sp, 0x8 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8004034 - - thumb_func_start sub_8004170 -sub_8004170: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r0, _080041C4 - adds r1, r0 - ldrh r2, [r1, 0x2] - adds r4, r2, 0 - ldr r0, [r1, 0x4] - str r0, [sp] - mov r0, r9 - lsls r1, r0, 2 - ldr r0, _080041C8 - adds r6, r1, r0 - cmp r2, 0xFF - bls _080041CC - ldrb r0, [r6, 0x2] - movs r1, 0xF8 - adds r2, r1, 0 - ands r2, r0 - lsls r2, 7 - ldrb r3, [r6, 0x1] - adds r0, r1, 0 - ands r0, r3 - lsls r0, 2 - orrs r2, r0 - ldrb r0, [r6] - ands r1, r0 - lsrs r1, 3 - orrs r1, r2 - add r0, sp, 0x4 - strh r1, [r0] - b _0800424C - .align 2, 0 -_080041C4: .4byte gUnknown_3000C00 -_080041C8: .4byte gUnknown_3000400 -_080041CC: - mov r0, sp - ldrb r1, [r0] - movs r3, 0xFF - subs r0, r3, r1 - muls r0, r2 - cmp r0, 0 - bge _080041DC - adds r0, 0xFF -_080041DC: - asrs r0, 8 - adds r0, r1, r0 - lsls r0, 16 - lsrs r0, 16 - mov r8, r0 - mov r0, sp - ldrb r1, [r0, 0x1] - subs r0, r3, r1 - muls r0, r2 - cmp r0, 0 - bge _080041F4 - adds r0, 0xFF -_080041F4: - asrs r0, 8 - adds r0, r1, r0 - lsls r0, 16 - lsrs r7, r0, 16 - mov r0, sp - ldrb r1, [r0, 0x2] - subs r0, r3, r1 - muls r0, r4 - cmp r0, 0 - bge _0800420A - adds r0, 0xFF -_0800420A: - asrs r0, 8 - adds r0, r1, r0 - lsls r0, 16 - lsrs r0, 16 - ldrb r1, [r6, 0x2] - muls r0, r1 - movs r1, 0xFF - bl __divsi3 - adds r4, r0, 0 - movs r5, 0xF8 - ands r4, r5 - lsls r4, 7 - ldrb r0, [r6, 0x1] - muls r0, r7 - movs r1, 0xFF - bl __divsi3 - ands r0, r5 - lsls r0, 2 - orrs r4, r0 - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0xFF - bl __divsi3 - ands r0, r5 - lsrs r0, 3 - orrs r4, r0 - add r0, sp, 0x4 - strh r4, [r0] -_0800424C: - adds r1, r0, 0 - mov r0, r9 - bl SetBGPaletteBufferColor - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8004170 - - thumb_func_start sub_8004264 -sub_8004264: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r2, _080042CC - adds r1, r2 - ldrh r2, [r1, 0x2] - ldr r1, [r1, 0x4] - str r1, [sp] - lsls r0, 20 - lsrs r0, 16 - mov r9, r0 - lsls r1, r0, 2 - ldr r0, _080042D0 - adds r5, r1, r0 - cmp r2, 0xFF - bls _080042D4 - movs r6, 0 - movs r7, 0xF8 - add r4, sp, 0x4 -_0800429A: - ldrb r0, [r5, 0x2] - adds r1, r7, 0 - ands r1, r0 - lsls r1, 7 - ldrb r2, [r5, 0x1] - adds r0, r7, 0 - ands r0, r2 - lsls r0, 2 - orrs r1, r0 - ldrb r2, [r5] - adds r0, r7, 0 - ands r0, r2 - lsrs r0, 3 - orrs r0, r1 - strh r0, [r4] - mov r1, r9 - adds r0, r1, r6 - adds r1, r4, 0 - bl SetBGPaletteBufferColor - adds r5, 0x4 - adds r6, 0x1 - cmp r6, 0xF - ble _0800429A - b _08004378 - .align 2, 0 -_080042CC: .4byte gUnknown_3000C00 -_080042D0: .4byte gUnknown_3000400 -_080042D4: - mov r0, sp - ldrb r1, [r0] - movs r3, 0xFF - subs r0, r3, r1 - muls r0, r2 - cmp r0, 0 - bge _080042E4 - adds r0, 0xFF -_080042E4: - asrs r0, 8 - adds r0, r1, r0 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0x8] - mov r0, sp - ldrb r1, [r0, 0x1] - subs r0, r3, r1 - muls r0, r2 - cmp r0, 0 - bge _080042FC - adds r0, 0xFF -_080042FC: - asrs r0, 8 - adds r0, r1, r0 - lsls r0, 16 - lsrs r0, 16 - str r0, [sp, 0xC] - mov r0, sp - ldrb r1, [r0, 0x2] - subs r0, r3, r1 - muls r0, r2 - cmp r0, 0 - bge _08004314 - adds r0, 0xFF -_08004314: - asrs r0, 8 - adds r0, r1, r0 - lsls r0, 16 - lsrs r0, 16 - mov r10, r0 - movs r6, 0 - add r7, sp, 0x4 - movs r0, 0xF8 - mov r8, r0 -_08004326: - ldrb r0, [r5, 0x2] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0xFF - bl __divsi3 - adds r4, r0, 0 - mov r0, r8 - ands r4, r0 - lsls r4, 7 - ldrb r0, [r5, 0x1] - ldr r1, [sp, 0xC] - muls r0, r1 - movs r1, 0xFF - bl __divsi3 - mov r1, r8 - ands r0, r1 - lsls r0, 2 - orrs r4, r0 - ldrb r0, [r5] - ldr r1, [sp, 0x8] - muls r0, r1 - movs r1, 0xFF - bl __divsi3 - mov r1, r8 - ands r0, r1 - lsrs r0, 3 - orrs r4, r0 - strh r4, [r7] - mov r1, r9 - adds r0, r1, r6 - adds r1, r7, 0 - bl SetBGPaletteBufferColor - adds r5, 0x4 - adds r6, 0x1 - cmp r6, 0xF - ble _08004326 -_08004378: - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8004264 - - thumb_func_start sub_8004388 -sub_8004388: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0x8 - lsls r0, 16 - lsrs r0, 16 - lsls r1, 16 - lsrs r1, 16 - mov r9, r1 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r0, _0800442C - adds r1, r0 - ldrh r2, [r1, 0x2] - ldr r0, [r1, 0x4] - str r0, [sp] - mov r0, r9 - lsls r1, r0, 2 - ldr r0, _08004430 - adds r6, r1, r0 - cmp r2, 0xFF - bls _080043BC - movs r2, 0x80 - lsls r2, 1 -_080043BC: - mov r0, sp - ldrb r0, [r0] - muls r0, r2 - lsls r0, 8 - lsrs r0, 16 - mov r8, r0 - mov r0, sp - ldrb r0, [r0, 0x1] - muls r0, r2 - lsls r0, 8 - lsrs r7, r0, 16 - mov r0, sp - ldrb r0, [r0, 0x2] - muls r0, r2 - lsls r0, 8 - lsrs r0, 16 - ldrb r1, [r6, 0x2] - muls r0, r1 - movs r1, 0xFF - bl __divsi3 - adds r4, r0, 0 - movs r5, 0xF8 - ands r4, r5 - lsls r4, 7 - ldrb r0, [r6, 0x1] - muls r0, r7 - movs r1, 0xFF - bl __divsi3 - ands r0, r5 - lsls r0, 2 - orrs r4, r0 - ldrb r0, [r6] - mov r1, r8 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0xFF - bl __divsi3 - ands r0, r5 - lsrs r0, 3 - orrs r4, r0 - add r1, sp, 0x4 - strh r4, [r1] - mov r0, r9 - bl SetBGPaletteBufferColor - add sp, 0x8 - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800442C: .4byte gUnknown_3000C00 -_08004430: .4byte gUnknown_3000400 - thumb_func_end sub_8004388 - - thumb_func_start sub_8004434 -sub_8004434: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x10 - lsls r0, 16 - lsrs r0, 16 - lsls r1, r0, 2 - adds r1, r0 - lsls r1, 2 - ldr r2, _080044F8 - adds r1, r2 - ldrh r2, [r1, 0x2] - ldr r1, [r1, 0x4] - str r1, [sp] - lsls r0, 20 - lsrs r0, 16 - mov r9, r0 - lsls r1, r0, 2 - ldr r0, _080044FC - adds r5, r1, r0 - cmp r2, 0xFF - bls _08004468 - movs r2, 0x80 - lsls r2, 1 -_08004468: - mov r0, sp - ldrb r0, [r0] - muls r0, r2 - lsls r0, 8 - lsrs r0, 16 - str r0, [sp, 0x8] - mov r0, sp - ldrb r0, [r0, 0x1] - muls r0, r2 - lsls r0, 8 - lsrs r0, 16 - str r0, [sp, 0xC] - mov r0, sp - ldrb r0, [r0, 0x2] - muls r0, r2 - lsls r0, 8 - lsrs r0, 16 - mov r10, r0 - movs r6, 0 - movs r0, 0xF8 - mov r8, r0 - add r7, sp, 0x4 -_08004494: - ldrb r0, [r5, 0x2] - mov r1, r10 - muls r1, r0 - adds r0, r1, 0 - movs r1, 0xFF - bl __divsi3 - adds r4, r0, 0 - mov r0, r8 - ands r4, r0 - lsls r4, 7 - ldrb r0, [r5, 0x1] - ldr r1, [sp, 0xC] - muls r0, r1 - movs r1, 0xFF - bl __divsi3 - mov r1, r8 - ands r0, r1 - lsls r0, 2 - orrs r4, r0 - ldrb r0, [r5] - ldr r1, [sp, 0x8] - muls r0, r1 - movs r1, 0xFF - bl __divsi3 - mov r1, r8 - ands r0, r1 - lsrs r0, 3 - orrs r4, r0 - strh r4, [r7] - mov r1, r9 - adds r0, r1, r6 - adds r1, r7, 0 - bl SetBGPaletteBufferColor - adds r5, 0x4 - adds r6, 0x1 - cmp r6, 0xF - ble _08004494 - add sp, 0x10 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080044F8: .4byte gUnknown_3000C00 -_080044FC: .4byte gUnknown_3000400 - thumb_func_end sub_8004434 - - thumb_func_start sub_8004500 -sub_8004500: - ldr r1, _08004514 - ldrh r2, [r1] - movs r0, 0x6D - muls r0, r2 - ldr r2, _08004518 - adds r0, r2 - strh r0, [r1] - ldrh r0, [r1] - bx lr - .align 2, 0 -_08004514: .4byte gUnknown_203B070 -_08004518: .4byte 0x000003fd - thumb_func_end sub_8004500 - - thumb_func_start sub_800451C -sub_800451C: - push {r4,lr} - adds r4, r0, 0 - bl sub_8004500 - muls r0, r4 - asrs r0, 16 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_800451C - - thumb_func_start sub_8004530 -sub_8004530: - push {r4,lr} - adds r4, r0, 0 - subs r0, r1, r4 - bl sub_800451C - adds r0, r4 - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8004530 - - thumb_func_start sub_8004544 -sub_8004544: - push {r4,r5,lr} - adds r3, r0, 0 - subs r4, r1, 0x1 - adds r2, r3, r4 - movs r5, 0 - cmp r5, r4 - bge _08004566 -_08004552: - ldrb r1, [r3] - ldrb r0, [r2] - strb r0, [r3] - adds r3, 0x1 - strb r1, [r2] - subs r2, 0x1 - adds r5, 0x1 - subs r4, 0x1 - cmp r5, r4 - blt _08004552 -_08004566: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8004544 - - thumb_func_start sub_800456C -sub_800456C: - push {r4-r7,lr} - adds r4, r1, 0 - cmp r4, 0 - ble _08004578 - movs r7, 0x1 - b _0800457E -_08004578: - negs r4, r4 - movs r7, 0x1 - negs r7, r7 -_0800457E: - cmp r2, 0 - ble _080045A0 - adds r6, r0, 0 - adds r5, r2, 0 -_08004586: - adds r0, r4, 0 - movs r1, 0xA - bl __modsi3 - stm r6!, {r0} - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - adds r4, r0, 0 - subs r5, 0x1 - cmp r5, 0 - bne _08004586 -_080045A0: - adds r0, r7, 0 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_800456C - - thumb_func_start sub_80045A8 -sub_80045A8: - push {r4,r5,lr} - adds r4, r0, 0 - adds r5, r1, 0 - ldm r4!, {r1} - movs r3, 0xA - cmp r2, 0x1 - ble _080045CA - subs r2, 0x1 -_080045B8: - ldm r4!, {r0} - muls r0, r3 - adds r1, r0 - subs r2, 0x1 - lsls r0, r3, 2 - adds r0, r3 - lsls r3, r0, 1 - cmp r2, 0 - bne _080045B8 -_080045CA: - adds r0, r1, 0 - cmp r5, 0 - bge _080045D2 - negs r0, r0 -_080045D2: - pop {r4,r5} - pop {r1} - bx r1 - thumb_func_end sub_80045A8 - - thumb_func_start ConvertFromBCD -ConvertFromBCD: - push {r4,lr} - adds r1, r0, 0 - movs r2, 0x1 - movs r3, 0 - cmp r1, 0 - ble _080045FA - movs r4, 0xF -_080045E6: - adds r0, r1, 0 - ands r0, r4 - muls r0, r2 - adds r3, r0 - lsls r0, r2, 2 - adds r0, r2 - lsls r2, r0, 1 - asrs r1, 4 - cmp r1, 0 - bgt _080045E6 -_080045FA: - adds r0, r3, 0 - pop {r4} - pop {r1} - bx r1 - thumb_func_end ConvertFromBCD - - thumb_func_start ConvertToBCD -ConvertToBCD: - push {r4-r6,lr} - adds r4, r0, 0 - movs r5, 0 - movs r6, 0 - cmp r4, 0 - ble _0800462C -_08004610: - adds r0, r4, 0 - movs r1, 0xA - bl __modsi3 - lsls r0, r5 - adds r6, r0 - adds r5, 0x4 - adds r0, r4, 0 - movs r1, 0xA - bl __divsi3 - adds r4, r0, 0 - cmp r4, 0 - bgt _08004610 -_0800462C: - adds r0, r6, 0 - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end ConvertToBCD - - thumb_func_start InitBGPaletteBuffer -InitBGPaletteBuffer: - push {lr} - movs r2, 0 - ldr r1, _0800465C - movs r0, 0x80 - lsls r0, 2 -_0800463E: - strh r2, [r1] - adds r1, 0x2 - subs r0, 0x1 - cmp r0, 0 - bne _0800463E - ldr r1, _08004660 - movs r2, 0x1 - adds r0, r1, 0 - adds r0, 0x1F -_08004650: - strb r2, [r0] - subs r0, 0x1 - cmp r0, r1 - bge _08004650 - pop {r0} - bx r0 - .align 2, 0 -_0800465C: .4byte gUnknown_20251F0 -_08004660: .4byte gUnknown_20251D0 - thumb_func_end InitBGPaletteBuffer - - thumb_func_start SetBGPaletteBufferColorRGB -SetBGPaletteBufferColorRGB: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - cmp r2, 0 - bge _08004670 - movs r2, 0 -_08004670: - cmp r2, 0x1F - ble _08004676 - movs r2, 0x1F -_08004676: - ldr r1, _080046CC - adds r0, r4, 0 - cmp r4, 0 - bge _08004680 - adds r0, 0xF -_08004680: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - cmp r3, 0 - bne _080046D4 - ldr r0, _080046D0 - lsls r1, r4, 1 - adds r6, r1, r0 - ldrb r0, [r5, 0x2] - muls r0, r2 - cmp r0, 0 - bge _0800469C - adds r0, 0xFF -_0800469C: - asrs r0, 8 - movs r3, 0x1F - ands r0, r3 - lsls r4, r0, 10 - ldrb r0, [r5, 0x1] - muls r0, r2 - cmp r0, 0 - bge _080046AE - adds r0, 0xFF -_080046AE: - asrs r0, 8 - ands r0, r3 - lsls r1, r0, 5 - orrs r1, r4 - ldrb r0, [r5] - muls r0, r2 - cmp r0, 0 - bge _080046C0 - adds r0, 0xFF -_080046C0: - asrs r0, 8 - ands r0, r3 - orrs r1, r0 - strh r1, [r6] - b _08004722 - .align 2, 0 -_080046CC: .4byte gUnknown_20251D0 -_080046D0: .4byte gUnknown_20251F0 -_080046D4: - ldr r1, _08004728 - lsls r0, r4, 1 - adds r7, r0, r1 - ldrb r0, [r5, 0x2] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x2] - muls r0, r2 - cmp r0, 0 - bge _080046EA - adds r0, 0xFF -_080046EA: - asrs r0, 8 - movs r4, 0x1F - ands r0, r4 - lsls r6, r0, 10 - ldrb r0, [r5, 0x1] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0, 0x1] - muls r0, r2 - cmp r0, 0 - bge _08004702 - adds r0, 0xFF -_08004702: - asrs r0, 8 - ands r0, r4 - lsls r1, r0, 5 - orrs r1, r6 - ldrb r0, [r5] - lsls r0, 2 - adds r0, r3 - ldrb r0, [r0] - muls r0, r2 - cmp r0, 0 - bge _0800471A - adds r0, 0xFF -_0800471A: - asrs r0, 8 - ands r0, r4 - orrs r1, r0 - strh r1, [r7] -_08004722: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08004728: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColorRGB - - thumb_func_start SetBGPaletteBufferColorArray -SetBGPaletteBufferColorArray: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldr r1, _08004764 - cmp r2, 0 - bge _0800473A - adds r0, 0xF -_0800473A: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r0, _08004768 - lsls r2, 1 - adds r2, r0 - ldrb r1, [r3, 0x2] - lsrs r1, 3 - lsls r1, 10 - ldrb r0, [r3, 0x1] - lsrs r0, 3 - lsls r0, 5 - orrs r1, r0 - ldrb r0, [r3] - lsrs r0, 3 - orrs r0, r1 - strh r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_08004764: .4byte gUnknown_20251D0 -_08004768: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColorArray - - thumb_func_start SetBGPaletteBufferColor -SetBGPaletteBufferColor: - push {lr} - adds r2, r0, 0 - adds r3, r1, 0 - ldr r1, _08004790 - cmp r2, 0 - bge _0800477A - adds r0, 0xF -_0800477A: - asrs r0, 4 - adds r0, r1 - movs r1, 0x1 - strb r1, [r0] - ldr r1, _08004794 - lsls r0, r2, 1 - adds r0, r1 - ldrh r1, [r3] - strh r1, [r0] - pop {r0} - bx r0 - .align 2, 0 -_08004790: .4byte gUnknown_20251D0 -_08004794: .4byte gUnknown_20251F0 - thumb_func_end SetBGPaletteBufferColor - - thumb_func_start nullsub_4 -nullsub_4: - bx lr - thumb_func_end nullsub_4 - - thumb_func_start nullsub_5 -nullsub_5: - bx lr - thumb_func_end nullsub_5 - - thumb_func_start nullsub_143 -nullsub_143: - bx lr - thumb_func_end nullsub_143 - - thumb_func_start TransferBGPaletteBuffer -TransferBGPaletteBuffer: - push {r4-r6,lr} - movs r6, 0 - movs r4, 0 - movs r5, 0xA0 - lsls r5, 19 -_080047AE: - ldr r0, _080047DC - adds r1, r6, r0 - ldrb r0, [r1] - cmp r0, 0 - beq _080047CA - movs r0, 0 - strb r0, [r1] - lsls r1, r4, 1 - ldr r0, _080047E0 - adds r1, r0 - adds r0, r5, 0 - movs r2, 0x20 - bl CpuCopy -_080047CA: - adds r6, 0x1 - adds r5, 0x20 - adds r4, 0x10 - ldr r0, _080047E4 - cmp r4, r0 - ble _080047AE - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080047DC: .4byte gUnknown_20251D0 -_080047E0: .4byte gUnknown_20251F0 -_080047E4: .4byte 0x000001ff - thumb_func_end TransferBGPaletteBuffer - - thumb_func_start sub_80047E8 -sub_80047E8: - ldr r0, _08004840 - movs r3, 0 - movs r2, 0 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r0, _08004844 - strh r2, [r0] - strh r2, [r0, 0x2] - strh r2, [r0, 0x4] - strh r2, [r0, 0x6] - ldr r1, _08004848 - ldr r0, _0800484C - str r0, [r1] - ldr r0, _08004850 - str r2, [r0, 0x20] - ldr r1, _08004854 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x1C] - strh r1, [r0, 0x1E] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - ldr r0, _08004858 - strh r2, [r0] - strh r2, [r0, 0x2] - bx lr - .align 2, 0 -_08004840: .4byte gUnknown_20255F0 -_08004844: .4byte gUnknown_2025638 -_08004848: .4byte gUnknown_202562C -_0800484C: .4byte 0x004a14c1 -_08004850: .4byte gUnknown_2025600 -_08004854: .4byte 0x0000ffff -_08004858: .4byte gUnknown_2025668 - thumb_func_end sub_80047E8 - - thumb_func_start sub_800485C -sub_800485C: - push {r4,r5,lr} - ldr r2, _080048A8 - ldr r1, _080048AC - adds r0, r2, 0 - ldm r0!, {r3-r5} - stm r1!, {r3-r5} - ldr r0, [r0] - str r0, [r1] - movs r3, 0 - movs r0, 0 - strh r0, [r2] - strh r0, [r2, 0x2] - strh r0, [r2, 0x4] - strh r0, [r2, 0x6] - ldr r0, _080048B0 - ldr r1, _080048B4 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r3, [r1] - adds r0, 0x29 - strb r3, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_080048A8: .4byte gUnknown_2025638 -_080048AC: .4byte gUnknown_20255F0 -_080048B0: .4byte gUnknown_2025600 -_080048B4: .4byte 0x0000ffff - thumb_func_end sub_800485C - - thumb_func_start sub_80048B8 -sub_80048B8: - movs r0, 0 - bx lr - thumb_func_end sub_80048B8 - - thumb_func_start sub_80048BC -sub_80048BC: - movs r0, 0 - bx lr - thumb_func_end sub_80048BC - - thumb_func_start sub_80048C0 -sub_80048C0: - movs r0, 0 - bx lr - thumb_func_end sub_80048C0 - - thumb_func_start sub_80048C4 -sub_80048C4: - movs r0, 0 - bx lr - thumb_func_end sub_80048C4 - - thumb_func_start sub_80048C8 -sub_80048C8: - movs r0, 0 - bx lr - thumb_func_end sub_80048C8 - - thumb_func_start sub_80048CC -sub_80048CC: - movs r0, 0 - bx lr - thumb_func_end sub_80048CC - - thumb_func_start sub_80048D0 -sub_80048D0: - ldr r1, _080048E8 - movs r0, 0 - strh r0, [r1, 0x4] - ldr r1, _080048EC - str r0, [r1, 0xC] - strh r0, [r1, 0x8] - ldr r1, _080048F0 - ldr r0, _080048F4 - strh r0, [r1] - strh r0, [r1, 0x2] - bx lr - .align 2, 0 -_080048E8: .4byte gUnknown_20255F0 -_080048EC: .4byte gUnknown_2025648 -_080048F0: .4byte gUnknown_2025668 -_080048F4: .4byte 0x000003e7 - thumb_func_end sub_80048D0 - - thumb_func_start sub_80048F8 -sub_80048F8: - ldr r0, _08004908 - movs r1, 0 - strh r1, [r0, 0x2] - ldr r0, _0800490C - strh r1, [r0, 0x2] - ldr r0, _08004910 - strh r1, [r0, 0x2] - bx lr - .align 2, 0 -_08004908: .4byte gUnknown_20255F0 -_0800490C: .4byte gUnknown_2025638 -_08004910: .4byte gUnknown_2025648 - thumb_func_end sub_80048F8 - - thumb_func_start sub_8004914 -sub_8004914: - ldr r0, _0800494C - movs r1, 0x5 - str r1, [r0, 0x20] - movs r2, 0 - movs r1, 0 - strh r1, [r0, 0x24] - ldr r1, _08004950 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - strh r1, [r0, 0xC] - strh r1, [r0, 0xE] - strh r1, [r0, 0x10] - strh r1, [r0, 0x12] - strh r1, [r0, 0x14] - strh r1, [r0, 0x16] - adds r1, r0, 0 - adds r1, 0x28 - strb r2, [r1] - adds r0, 0x29 - strb r2, [r0] - bx lr - .align 2, 0 -_0800494C: .4byte gUnknown_2025600 -_08004950: .4byte 0x0000ffff - thumb_func_end sub_8004914 - - thumb_func_start UpdateInput -UpdateInput: - push {r4-r6,lr} - ldr r4, _08004998 - ldr r5, _0800499C - adds r1, r4, 0 - adds r0, r5, 0 - ldm r0!, {r2,r3,r6} - stm r1!, {r2,r3,r6} - ldr r0, [r0] - str r0, [r1] - adds r0, r5, 0 - bl ReadKeyInput - ldrh r0, [r4] - ldrh r3, [r5] - eors r0, r3 - ands r0, r3 - strh r0, [r5, 0x2] - lsls r0, r3, 16 - lsrs r0, 16 - cmp r0, 0 - beq _080049A8 - ldrh r1, [r5, 0x8] - movs r0, 0xF0 - adds r2, r0, 0 - ands r2, r3 - ands r0, r1 - cmp r0, r2 - bne _080049A0 - ldr r0, [r5, 0xC] - cmp r0, 0x31 - bgt _080049AC - adds r0, 0x1 - str r0, [r5, 0xC] - b _080049AC - .align 2, 0 -_08004998: .4byte gUnknown_2025658 -_0800499C: .4byte gUnknown_2025648 -_080049A0: - strh r2, [r5, 0x8] - movs r0, 0x1 - str r0, [r5, 0xC] - b _080049AC -_080049A8: - str r0, [r5, 0xC] - strh r0, [r5, 0x8] -_080049AC: - ldr r0, _080049C4 - ldr r2, [r0, 0xC] - adds r3, r0, 0 - cmp r2, 0x1 - bne _080049C8 - ldrh r0, [r3, 0x8] - movs r1, 0xF0 - ands r1, r0 - ldrh r0, [r3, 0x2] - orrs r1, r0 - strh r1, [r3, 0x4] - b _080049E0 - .align 2, 0 -_080049C4: .4byte gUnknown_2025648 -_080049C8: - cmp r2, 0x30 - bne _080049DC - movs r0, 0x2B - str r0, [r3, 0xC] - ldrh r1, [r3, 0x8] - movs r0, 0xF0 - ands r0, r1 - ldrh r1, [r3, 0x2] - orrs r0, r1 - b _080049DE -_080049DC: - movs r0, 0 -_080049DE: - strh r0, [r3, 0x4] -_080049E0: - movs r0, 0 - strh r0, [r3, 0x6] - ldrh r1, [r3] - movs r5, 0x2 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08004A0C - ldr r0, _08004A08 - ldrh r2, [r0] - movs r4, 0 - ldrsh r1, [r0, r4] - adds r4, r0, 0 - cmp r1, 0x63 - bgt _08004A20 - adds r0, r2, 0x1 - strh r0, [r4] - b _08004A20 - .align 2, 0 -_08004A08: .4byte gUnknown_2025668 -_08004A0C: - ldr r1, _08004A44 - ldrh r0, [r1] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - adds r4, r1, 0 - cmp r0, 0x9 - bhi _08004A1E - strh r5, [r3, 0x6] -_08004A1E: - strh r2, [r4] -_08004A20: - ldrh r1, [r3] - movs r5, 0x80 - lsls r5, 1 - adds r0, r5, 0 - ands r0, r1 - lsls r0, 16 - lsrs r2, r0, 16 - cmp r2, 0 - beq _08004A48 - ldrh r1, [r4, 0x2] - movs r6, 0x2 - ldrsh r0, [r4, r6] - cmp r0, 0x63 - bgt _08004A5E - adds r0, r1, 0x1 - strh r0, [r4, 0x2] - b _08004A5E - .align 2, 0 -_08004A44: .4byte gUnknown_2025668 -_08004A48: - ldrh r0, [r4, 0x2] - subs r0, 0x2 - lsls r0, 16 - lsrs r0, 16 - cmp r0, 0x9 - bhi _08004A5C - ldrh r1, [r3, 0x6] - adds r0, r5, 0 - orrs r0, r1 - strh r0, [r3, 0x6] -_08004A5C: - strh r2, [r4, 0x2] -_08004A5E: - ldr r2, _08004A94 - ldrh r0, [r2] - ldrh r1, [r3] - orrs r0, r1 - strh r0, [r2] - ldrh r0, [r2, 0x2] - ldrh r1, [r3, 0x2] - orrs r0, r1 - strh r0, [r2, 0x2] - ldrh r0, [r2, 0x4] - ldrh r1, [r3, 0x4] - orrs r0, r1 - strh r0, [r2, 0x4] - ldrh r0, [r2, 0x6] - ldrh r1, [r3, 0x6] - orrs r0, r1 - strh r0, [r2, 0x6] - ldr r2, _08004A98 - ldrh r0, [r3] - ldr r1, _08004A9C - orrs r0, r1 - ldr r1, [r2] - muls r0, r1 - str r0, [r2] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08004A94: .4byte gUnknown_2025638 -_08004A98: .4byte gUnknown_202562C -_08004A9C: .4byte 0x054a1c41 - thumb_func_end UpdateInput - - thumb_func_start nullsub_6 -nullsub_6: - bx lr - thumb_func_end nullsub_6 - - thumb_func_start sub_8004AA4 -sub_8004AA4: - push {r4,r5,lr} - adds r3, r0, 0 - ldr r4, [r1, 0x4] - cmp r2, 0 - ble _08004AE8 -_08004AAE: - ldm r4!, {r1} - movs r5, 0 - ldrsh r0, [r1, r5] - cmp r0, 0 - beq _08004ADE - movs r0, 0x80 - lsls r0, 24 - str r0, [r3] - ldrh r0, [r1, 0x2] - strh r0, [r3, 0x6] - ldrh r0, [r1, 0x2] - strh r0, [r3, 0x4] - adds r0, r1, 0x4 - str r0, [r3, 0x8] - str r0, [r3, 0xC] - movs r5, 0 - ldrsh r0, [r1, r5] - lsls r0, 2 - adds r0, 0x4 - adds r0, r1, r0 - str r0, [r3, 0x10] - ldr r0, [r1, 0x4] - str r0, [r3, 0x14] - b _08004AE0 -_08004ADE: - str r0, [r3] -_08004AE0: - adds r3, 0x18 - subs r2, 0x1 - cmp r2, 0 - bne _08004AAE -_08004AE8: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8004AA4 - - thumb_func_start sub_8004AF0 -sub_8004AF0: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - cmp r7, r3 - bge _08004B6A - adds r5, r3, 0 -_08004B08: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004B60 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004B60 - mov r1, r8 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004B4E - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004B42 - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004B42: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r1, 0x1 - movs r7, 0x1 -_08004B4E: - cmp r1, 0 - beq _08004B60 - adds r1, r4, 0 - adds r1, 0x14 - adds r0, r6, 0 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl SetBGPaletteBufferColorRGB -_08004B60: - subs r5, 0x1 - adds r4, 0x18 - adds r6, 0x1 - cmp r5, 0 - bne _08004B08 -_08004B6A: - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8004AF0 - - thumb_func_start sub_8004B78 -sub_8004B78: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r4, r1, 0 - adds r6, r2, 0 - lsls r0, 24 - lsrs r0, 24 - mov r8, r0 - movs r7, 0 - cmp r7, r3 - bge _08004BF2 - adds r5, r3, 0 -_08004B90: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004BE8 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004BE8 - mov r1, r8 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004BD6 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004BCA - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004BCA: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r1, 0x1 - movs r7, 0x1 -_08004BD6: - cmp r1, 0 - beq _08004BE8 - adds r1, r4, 0 - adds r1, 0x14 - adds r0, r6, 0 - ldr r2, [sp, 0x18] - ldr r3, [sp, 0x1C] - bl nullsub_4 -_08004BE8: - subs r5, 0x1 - adds r4, 0x18 - adds r6, 0x1 - cmp r5, 0 - bne _08004B90 -_08004BF2: - adds r0, r7, 0 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r1} - bx r1 - thumb_func_end sub_8004B78 - - thumb_func_start sub_8004C00 -sub_8004C00: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x4 - adds r4, r0, 0 - adds r7, r1, 0 - mov r10, r3 - ldr r0, [sp, 0x28] - mov r8, r0 - movs r1, 0 - mov r9, r1 - cmp r9, r2 - bge _08004CDC - adds r6, r2, 0 -_08004C20: - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D14 - lsls r0, 24 - cmp r0, 0 - beq _08004CD2 - adds r0, r4, 0 - movs r1, 0x1 - bl sub_8004D40 - lsls r0, 24 - cmp r0, 0 - bne _08004CD2 - ldrh r0, [r4, 0x6] - subs r0, 0x1 - strh r0, [r4, 0x6] - lsls r0, 16 - cmp r0, 0 - bgt _08004C64 - ldrh r0, [r4, 0x4] - strh r0, [r4, 0x6] - ldr r1, [r4, 0xC] - ldr r0, [r4, 0x10] - cmp r1, r0 - bcc _08004C58 - ldr r0, [r4, 0x8] - str r0, [r4, 0xC] -_08004C58: - ldr r1, [r4, 0xC] - ldm r1!, {r0} - str r0, [r4, 0x14] - str r1, [r4, 0xC] - movs r2, 0x1 - mov r9, r2 -_08004C64: - mov r3, r8 - movs r5, 0 - ldrsh r0, [r3, r5] - ldrb r2, [r4, 0x14] - adds r1, r0, r2 - movs r5, 0x2 - ldrsh r0, [r3, r5] - ldrb r2, [r4, 0x15] - adds r3, r0, r2 - mov r5, r8 - movs r2, 0x4 - ldrsh r0, [r5, r2] - ldrb r2, [r4, 0x16] - adds r5, r0, r2 - cmp r1, 0xFF - ble _08004C86 - movs r1, 0xFF -_08004C86: - cmp r3, 0xFF - ble _08004C8C - movs r3, 0xFF -_08004C8C: - cmp r5, 0xFF - ble _08004C92 - movs r5, 0xFF -_08004C92: - cmp r1, 0 - bge _08004C98 - movs r1, 0 -_08004C98: - cmp r3, 0 - bge _08004C9E - movs r3, 0 -_08004C9E: - cmp r5, 0 - bge _08004CA4 - movs r5, 0 -_08004CA4: - lsls r1, 24 - lsrs r1, 24 - ldr r2, _08004CF0 - ldr r0, [sp] - ands r0, r2 - orrs r0, r1 - lsls r2, r3, 24 - lsrs r2, 16 - ldr r1, _08004CF4 - ands r0, r1 - orrs r0, r2 - lsls r2, r5, 24 - lsrs r2, 8 - ldr r1, _08004CF8 - ands r0, r1 - orrs r0, r2 - str r0, [sp] - adds r0, r7, 0 - mov r1, sp - mov r2, r10 - ldr r3, [sp, 0x24] - bl SetBGPaletteBufferColorRGB -_08004CD2: - subs r6, 0x1 - adds r4, 0x18 - adds r7, 0x1 - cmp r6, 0 - bne _08004C20 -_08004CDC: - mov r0, r9 - add sp, 0x4 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r1} - bx r1 - .align 2, 0 -_08004CF0: .4byte 0xffffff00 -_08004CF4: .4byte 0xffff00ff -_08004CF8: .4byte 0xff00ffff - thumb_func_end sub_8004C00 - - thumb_func_start sub_8004CFC -sub_8004CFC: - push {lr} - cmp r1, 0 - ble _08004D0E - movs r2, 0 -_08004D04: - str r2, [r0] - adds r0, 0x18 - subs r1, 0x1 - cmp r1, 0 - bne _08004D04 -_08004D0E: - pop {r0} - bx r0 - thumb_func_end sub_8004CFC - - thumb_func_start sub_8004D14 -sub_8004D14: - push {r4,lr} - adds r2, r0, 0 - movs r3, 0 - cmp r3, r1 - bge _08004D36 - movs r4, 0x80 - lsls r4, 24 -_08004D22: - ldr r0, [r2] - ands r0, r4 - cmp r0, 0 - beq _08004D2E - movs r0, 0x1 - b _08004D38 -_08004D2E: - adds r2, 0x18 - adds r3, 0x1 - cmp r3, r1 - blt _08004D22 -_08004D36: - movs r0, 0 -_08004D38: - pop {r4} - pop {r1} - bx r1 - thumb_func_end sub_8004D14 - - thumb_func_start sub_8004D40 -sub_8004D40: - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - movs r1, 0 - cmp r1, r4 - bge _08004D70 - movs r6, 0x80 - lsls r6, 24 - movs r5, 0x80 - lsls r5, 22 -_08004D54: - ldr r2, [r3] - adds r0, r2, 0 - ands r0, r6 - cmp r0, 0 - beq _08004D6A - ands r2, r5 - cmp r2, 0 - bne _08004D68 - movs r0, 0 - b _08004D72 -_08004D68: - adds r3, 0x18 -_08004D6A: - adds r1, 0x1 - cmp r1, r4 - blt _08004D54 -_08004D70: - movs r0, 0x1 -_08004D72: - pop {r4-r6} - pop {r1} - bx r1 - thumb_func_end sub_8004D40 - - thumb_func_start sub_8004D78 -sub_8004D78: - push {lr} - movs r0, 0x1 - bl sub_8004D8C - movs r0, 0 - bl SetSavingIconCoords - pop {r0} - bx r0 - thumb_func_end sub_8004D78 - - thumb_func_start sub_8004D8C -sub_8004D8C: - push {r4,r5,lr} - lsls r0, 24 - lsrs r4, r0, 24 - ldr r1, _08004E68 - movs r0, 0 - str r0, [r1] - ldr r1, _08004E6C - ldr r0, _08004E70 - str r0, [r1] - ldr r1, _08004E74 - ldr r0, _08004E78 - str r0, [r1] - ldr r0, _08004E7C - adds r1, r0, 0 - adds r1, 0x8 - adds r5, r0, 0 - movs r2, 0 - movs r3, 0xF0 -_08004DB0: - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - str r1, [r0] - str r2, [r0, 0x4] - adds r0, 0x8 - adds r1, 0x8 - subs r3, 0x10 - cmp r3, 0 - bge _08004DB0 - cmp r4, 0 - beq _08004E50 - movs r2, 0 - ldr r1, _08004E80 - ldr r0, _08004E84 - movs r3, 0x7F -_08004E42: - str r2, [r0] - str r1, [r0, 0x4] - adds r1, 0x8 - adds r0, 0x8 - subs r3, 0x1 - cmp r3, 0 - bge _08004E42 -_08004E50: - movs r1, 0x80 - lsls r1, 4 - adds r0, r5, r1 - movs r1, 0 - str r1, [r0] - ldr r2, _08004E88 - adds r0, r5, r2 - str r1, [r0] - pop {r4,r5} - pop {r0} - bx r0 - .align 2, 0 -_08004E68: .4byte gUnknown_20266A8 -_08004E6C: .4byte gUnknown_2026E30 -_08004E70: .4byte 0x06010000 -_08004E74: .4byte gUnknown_203B074 -_08004E78: .4byte gUnknown_20266B0 -_08004E7C: .4byte gUnknown_20256A0 -_08004E80: .4byte gUnknown_20262A8 -_08004E84: .4byte gUnknown_2025EA8 -_08004E88: .4byte 0x00000804 - thumb_func_end sub_8004D8C - - thumb_func_start sub_8004E8C -sub_8004E8C: - ldr r1, _08004EA4 - strh r1, [r0] - movs r1, 0x1 - negs r1, r1 - strh r1, [r0, 0x2] - strh r1, [r0, 0x4] - movs r1, 0 - strh r1, [r0, 0x6] - strh r1, [r0, 0x8] - strh r1, [r0, 0xA] - bx lr - .align 2, 0 -_08004EA4: .4byte 0x0000ffff - thumb_func_end sub_8004E8C - - thumb_func_start sub_8004EA8 -sub_8004EA8: - push {r4-r7,lr} - mov r7, r9 - mov r6, r8 - push {r6,r7} - sub sp, 0xC - adds r5, r0, 0 - mov r8, r1 - adds r0, r2, 0 - adds r6, r3, 0 - cmp r0, 0 - beq _08004EC2 - bl sub_80052BC -_08004EC2: - ldr r0, _08004F40 - ldr r7, [r0] - mov r12, r0 - cmp r7, 0x7F - ble _08004ECE - b _08005082 -_08004ECE: - mov r2, sp - ldrh r0, [r5] - strh r0, [r2] - ldrh r0, [r5, 0x2] - strh r0, [r2, 0x2] - ldrh r4, [r5, 0x4] - ldr r0, _08004F44 - ands r0, r4 - strh r0, [r2, 0x4] - ldrh r3, [r5, 0x6] - ldr r0, _08004F48 - ands r0, r3 - strh r0, [r2, 0x6] - ldrh r0, [r5, 0x8] - strh r0, [r2, 0x8] - movs r1, 0xE0 - lsls r1, 4 - ands r1, r3 - lsrs r1, 9 - ldr r0, _08004F4C - ands r0, r4 - lsls r0, 4 - orrs r1, r0 - strh r1, [r2, 0xA] - lsls r1, r7, 3 - ldr r0, _08004F50 - adds r3, r1, r0 - mov r0, r8 - movs r2, 0x16 - ldrsh r1, [r0, r2] - mov r0, sp - ldrb r0, [r0, 0x3] - lsls r0, 24 - asrs r0, 24 - adds r7, r1, r0 - cmp r7, 0 - bge _08004F1A - movs r7, 0 -_08004F1A: - cmp r7, 0xFF - ble _08004F20 - movs r7, 0xFF -_08004F20: - cmp r6, 0 - bne _08004F54 - add r2, sp, 0x4 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - ldrh r0, [r2] - strh r0, [r3, 0x2] - adds r2, 0x2 - adds r1, r3, 0x4 - ldrh r0, [r2] - strh r0, [r1] - adds r2, 0x2 - ldrh r0, [r2] - strh r0, [r1, 0x2] - b _08004F86 - .align 2, 0 -_08004F40: .4byte gUnknown_20266A8 -_08004F44: .4byte 0x0000fcff -_08004F48: .4byte 0x0000f1ff -_08004F4C: .4byte 0x000003ff -_08004F50: .4byte gUnknown_20262A8 -_08004F54: - add r4, sp, 0x4 - ldrh r1, [r4] - ldrh r0, [r6] - ands r0, r1 - ldrh r1, [r6, 0x6] - orrs r0, r1 - strh r0, [r3] - adds r4, 0x2 - ldrh r1, [r4] - ldrh r0, [r6, 0x2] - ands r0, r1 - ldrh r1, [r6, 0x8] - orrs r0, r1 - strh r0, [r3, 0x2] - adds r4, 0x2 - adds r2, r3, 0x4 - ldrh r1, [r4] - ldrh r0, [r6, 0x4] - ands r0, r1 - ldrh r1, [r6, 0xA] - orrs r0, r1 - strh r0, [r2] - adds r4, 0x2 - ldrh r0, [r4] - strh r0, [r2, 0x2] -_08004F86: - mov r0, sp - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08004FB0 - ldr r1, _08004FA8 - mov r0, sp - ldrb r0, [r0, 0x2] - lsls r0, 1 - adds r1, r0, r1 - movs r4, 0 - ldrsh r0, [r1, r4] - cmp r0, 0 - beq _08004FB0 - adds r1, r0, 0 - ldr r0, _08004FAC - ands r1, r0 - b _08004FC0 - .align 2, 0 -_08004FA8: .4byte gUnknown_2025672 -_08004FAC: .4byte 0x000003ff -_08004FB0: - ldrh r1, [r3, 0x4] - ldr r2, _08005090 - ands r1, r2 - mov r6, r8 - movs r4, 0x14 - ldrsh r0, [r6, r4] - adds r1, r0 - ands r1, r2 -_08004FC0: - ldrh r2, [r3, 0x4] - movs r0, 0xFC - lsls r0, 8 - ands r0, r2 - orrs r0, r1 - strh r0, [r3, 0x4] - ldrh r4, [r3, 0x2] - ldr r5, _08005094 - adds r2, r5, 0 - ands r2, r4 - ldr r6, _08005098 - adds r1, r2, r6 - mov r2, r8 - movs r6, 0 - ldrsh r0, [r2, r6] - adds r2, r1, r0 - movs r0, 0x40 - negs r0, r0 - mov r9, r0 - cmp r2, r9 - blt _08005082 - cmp r2, 0xEF - bgt _08005082 - ands r2, r5 - movs r0, 0xFE - lsls r0, 8 - ands r0, r4 - orrs r0, r2 - strh r0, [r3, 0x2] - ldrh r0, [r3, 0x6] - lsls r4, r0, 16 - ldr r1, _0800509C - adds r5, r1, 0 - lsrs r2, r4, 20 - ldr r6, _080050A0 - adds r1, r2, r6 - mov r2, r8 - movs r6, 0x2 - ldrsh r0, [r2, r6] - adds r2, r1, r0 - cmp r2, r9 - blt _08005082 - cmp r2, 0x9F - bgt _08005082 - movs r0, 0xFF - ands r2, r0 - ldrh r1, [r3] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - orrs r0, r2 - strh r0, [r3] - lsrs r0, r4, 17 - movs r1, 0x1 - ands r0, r1 - cmp r0, 0 - bne _08005044 - mov r0, r8 - ldrb r1, [r0, 0x1E] - movs r0, 0xF - ands r1, r0 - lsls r1, 12 - ldrh r0, [r3, 0x4] - ands r0, r5 - orrs r0, r1 - strh r0, [r3, 0x4] -_08005044: - mov r0, sp - ldrb r0, [r0, 0x2] - cmp r0, 0 - beq _08005068 - ldr r1, _080050A4 - mov r0, sp - ldrb r0, [r0, 0x2] - lsls r0, 1 - adds r0, r1 - movs r2, 0 - ldrsh r1, [r0, r2] - movs r0, 0xF - ands r1, r0 - lsls r1, 12 - ldrh r0, [r3, 0x4] - ands r0, r5 - orrs r0, r1 - strh r0, [r3, 0x4] -_08005068: - ldr r0, _080050A8 - mov r4, r12 - ldr r3, [r4] - lsls r2, r3, 3 - adds r2, r0 - ldr r1, _080050AC - lsls r0, r7, 3 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - str r2, [r0] - adds r3, 0x1 - str r3, [r4] -_08005082: - add sp, 0xC - pop {r3,r4} - mov r8, r3 - mov r9, r4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005090: .4byte 0x000003ff -_08005094: .4byte 0x000001ff -_08005098: .4byte 0xffffff00 -_0800509C: .4byte 0x00000fff -_080050A0: .4byte 0xfffffe00 -_080050A4: .4byte gUnknown_2025682 -_080050A8: .4byte gUnknown_2025EA8 -_080050AC: .4byte gUnknown_20256A0 - thumb_func_end sub_8004EA8 - - thumb_func_start AddSprite -AddSprite: - push {r4-r7,lr} - mov r7, r8 - push {r7} - adds r6, r0, 0 - adds r7, r1, 0 - mov r8, r2 - adds r4, r3, 0 - ldr r0, _080050F4 - ldr r0, [r0] - cmp r0, 0x7F - bgt _08005168 - lsls r1, r0, 3 - ldr r0, _080050F8 - adds r5, r1, r0 - cmp r7, 0 - bge _080050D2 - movs r7, 0 -_080050D2: - cmp r7, 0xFF - ble _080050D8 - movs r7, 0xFF -_080050D8: - cmp r4, 0 - bne _080050FC - ldrh r0, [r6] - strh r0, [r5] - ldrh r0, [r6, 0x2] - strh r0, [r5, 0x2] - adds r1, r6, 0x4 - adds r2, r5, 0x4 - ldrh r0, [r1] - strh r0, [r2] - ldrh r0, [r1, 0x2] - strh r0, [r2, 0x2] - b _08005128 - .align 2, 0 -_080050F4: .4byte gUnknown_20266A8 -_080050F8: .4byte gUnknown_20262A8 -_080050FC: - ldrh r1, [r6] - ldrh r0, [r4] - ands r0, r1 - ldrh r1, [r4, 0x6] - orrs r0, r1 - strh r0, [r5] - ldrh r1, [r6, 0x2] - ldrh r0, [r4, 0x2] - ands r0, r1 - ldrh r1, [r4, 0x8] - orrs r0, r1 - strh r0, [r5, 0x2] - adds r2, r6, 0x4 - adds r3, r5, 0x4 - ldrh r1, [r2] - ldrh r0, [r4, 0x4] - ands r0, r1 - ldrh r1, [r4, 0xA] - orrs r0, r1 - strh r0, [r3] - ldrh r0, [r2, 0x2] - strh r0, [r3, 0x2] -_08005128: - ldrh r4, [r5, 0x6] - lsrs r4, 4 - adds r0, r4, 0 - movs r1, 0 - bl nullsub_3 - movs r0, 0xFF - ands r4, r0 - ldrh r1, [r5] - movs r0, 0xFF - lsls r0, 8 - ands r0, r1 - orrs r0, r4 - strh r0, [r5] - mov r0, r8 - cmp r0, 0 - beq _0800514E - bl sub_80052BC -_0800514E: - ldr r0, _08005174 - ldr r4, _08005178 - ldr r3, [r4] - lsls r2, r3, 3 - adds r2, r0 - ldr r1, _0800517C - lsls r0, r7, 3 - adds r0, r1 - ldr r1, [r0] - str r1, [r2] - str r2, [r0] - adds r3, 0x1 - str r3, [r4] -_08005168: - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005174: .4byte gUnknown_2025EA8 -_08005178: .4byte gUnknown_20266A8 -_0800517C: .4byte gUnknown_20256A0 - thumb_func_end AddSprite - - thumb_func_start sub_8005180 -sub_8005180: - push {lr} - ldr r2, _080051A8 - adds r1, r2, 0 - cmp r2, 0 - beq _0800519E -_0800518A: - ldr r0, [r1, 0x4] - cmp r0, 0 - beq _08005198 - cmp r2, 0 - beq _08005196 - str r1, [r2] -_08005196: - adds r2, r1, 0 -_08005198: - ldr r1, [r1] - cmp r1, 0 - bne _0800518A -_0800519E: - movs r0, 0 - str r0, [r2] - pop {r0} - bx r0 - .align 2, 0 -_080051A8: .4byte gUnknown_20256A0 - thumb_func_end sub_8005180 - - thumb_func_start CopySpritesToOam -CopySpritesToOam: - push {r4-r6,lr} - ldr r3, _08005204 - ldr r2, _08005208 - movs r4, 0 - ldr r6, _0800520C - cmp r3, 0 - beq _080051E0 - ldr r5, _08005210 -_080051BC: - ldr r1, [r3, 0x4] - cmp r1, 0 - beq _080051D6 - subs r2, 0x4 - ldrh r0, [r1, 0x4] - strh r0, [r2] - subs r2, 0x2 - ldrh r0, [r1, 0x2] - strh r0, [r2] - subs r2, 0x2 - ldrh r0, [r1] - strh r0, [r2] - adds r4, 0x1 -_080051D6: - ldr r3, [r3] - cmp r3, 0 - beq _080051E0 - cmp r2, r5 - bhi _080051BC -_080051E0: - ldr r1, _08005210 - cmp r2, r1 - bls _080051FA - movs r0, 0 - movs r3, 0xA0 -_080051EA: - subs r2, 0x4 - strh r0, [r2] - subs r2, 0x2 - strh r0, [r2] - subs r2, 0x2 - strh r3, [r2] - cmp r2, r1 - bhi _080051EA -_080051FA: - strh r4, [r6] - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_08005204: .4byte gUnknown_20256A0 -_08005208: .4byte 0x07000400 -_0800520C: .4byte gUnknown_2025670 -_08005210: .4byte 0x07000008 - thumb_func_end CopySpritesToOam - - thumb_func_start SetSavingIconCoords -SetSavingIconCoords: - push {lr} - adds r3, r0, 0 - cmp r3, 0 - bne _0800522C - ldr r1, _08005228 - strh r3, [r1] - movs r0, 0xA0 - strh r0, [r1, 0x2] - b _0800523C - .align 2, 0 -_08005228: .4byte gUnknown_2025694 -_0800522C: - ldr r1, _08005240 - ldrh r0, [r3] - movs r2, 0 - strh r0, [r1] - ldrh r0, [r3, 0x2] - strh r0, [r1, 0x2] - ldr r0, _08005244 - str r2, [r0] -_0800523C: - pop {r0} - bx r0 - .align 2, 0 -_08005240: .4byte gUnknown_2025694 -_08005244: .4byte gUnknown_2025698 - thumb_func_end SetSavingIconCoords - - thumb_func_start BlinkSavingIcon -BlinkSavingIcon: - push {r4,lr} - movs r2, 0xE0 - lsls r2, 19 - ldr r0, _08005280 - ldr r1, [r0] - adds r3, r1, 0 - adds r1, 0x1 - str r1, [r0] - movs r0, 0x10 - ands r3, r0 - cmp r3, 0 - beq _08005288 - movs r0, 0xA0 - strh r0, [r2] - adds r2, 0x2 - movs r1, 0x80 - lsls r1, 7 - adds r0, r1, 0 - strh r0, [r2] - adds r2, 0x2 - ldr r4, _08005284 - adds r0, r4, 0 - strh r0, [r2] - adds r2, 0x2 - movs r0, 0 - strh r0, [r2] - b _080052A8 - .align 2, 0 -_08005280: .4byte gUnknown_2025698 -_08005284: .4byte 0x0000f3fc -_08005288: - ldr r1, _080052B0 - ldrh r0, [r1, 0x2] - strh r0, [r2] - ldr r2, _080052B4 - movs r4, 0x80 - lsls r4, 7 - adds r0, r4, 0 - ldrh r1, [r1] - adds r0, r1 - strh r0, [r2] - adds r2, 0x2 - ldr r1, _080052B8 - adds r0, r1, 0 - strh r0, [r2] - adds r2, 0x2 - strh r3, [r2] -_080052A8: - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_080052B0: .4byte gUnknown_2025694 -_080052B4: .4byte 0x07000002 -_080052B8: .4byte 0x0000f3fc - thumb_func_end BlinkSavingIcon - - thumb_func_start sub_80052BC -sub_80052BC: - push {r4-r6,lr} - adds r3, r0, 0 - ldr r0, [r3, 0x4] - cmp r0, 0 - beq _080052F2 - ldr r5, _080052F8 - ldr r6, _080052FC - ldr r4, _08005300 -_080052CC: - ldr r2, [r5] - cmp r2, r6 - bcs _080052F2 - ldr r0, [r3, 0x4] - str r0, [r2] - ldr r0, [r3] - str r0, [r2, 0x4] - ldr r1, [r4] - str r1, [r2, 0x8] - ldr r0, [r3, 0x4] - adds r1, r0 - str r1, [r4] - adds r0, r2, 0 - adds r0, 0xC - str r0, [r5] - adds r3, 0x8 - ldr r0, [r3, 0x4] - cmp r0, 0 - bne _080052CC -_080052F2: - pop {r4-r6} - pop {r0} - bx r0 - .align 2, 0 -_080052F8: .4byte gUnknown_203B074 -_080052FC: .4byte gUnknown_2026E30 -_08005300: .4byte gUnknown_2026E30 - thumb_func_end sub_80052BC - - thumb_func_start sub_8005304 -sub_8005304: - push {r4,lr} - ldr r4, _0800530C - b _0800532A - .align 2, 0 -_0800530C: .4byte gUnknown_20266B0 -_08005310: - ldr r1, [r4, 0x4] - cmp r1, 0 - beq _08005320 - ldr r0, [r4, 0x8] - ldr r2, [r4] - bl CpuCopy - b _08005328 -_08005320: - ldr r0, [r4, 0x8] - ldr r1, [r4] - bl CpuClear -_08005328: - adds r4, 0xC -_0800532A: - ldr r0, _08005338 - ldr r0, [r0] - cmp r4, r0 - bcc _08005310 - pop {r4} - pop {r0} - bx r0 - .align 2, 0 -_08005338: .4byte gUnknown_203B074 - thumb_func_end sub_8005304 - - thumb_func_start sub_800533C -sub_800533C: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r1 - adds r5, r2, 0 - adds r7, r3, 0 - ldr r1, [sp, 0x18] - lsls r1, 24 - lsrs r6, r1, 24 - movs r2, 0x18 - ldrsh r1, [r5, r2] - lsls r1, 2 - adds r1, r0 - ldr r4, [r1] - ldr r1, _08005368 - movs r2, 0x14 - ldrsh r0, [r5, r2] - lsls r0, 5 - ldr r2, _0800536C - adds r0, r2 - str r0, [r1] - b _0800538E - .align 2, 0 -_08005368: .4byte gUnknown_2026E30 -_0800536C: .4byte 0x06010000 -_08005370: - cmp r6, 0 - beq _08005382 - movs r1, 0 - ldrsh r0, [r4, r1] - cmp r0, 0 - blt _08005382 - lsls r0, 2 - add r0, r8 - ldr r2, [r0] -_08005382: - adds r0, r4, 0 - adds r1, r5, 0 - adds r3, r7, 0 - bl sub_8004EA8 - adds r4, 0xA -_0800538E: - movs r2, 0 - ldrh r1, [r4] - ldr r0, _080053A8 - cmp r1, r0 - bne _08005370 - ldrh r0, [r4, 0x2] - cmp r0, r1 - bne _08005370 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080053A8: .4byte 0x0000ffff - thumb_func_end sub_800533C - - thumb_func_start sub_80053AC -sub_80053AC: - push {r4-r6,lr} - sub sp, 0xC - ldr r5, [sp, 0x1C] - ldr r6, [sp, 0x20] - ldr r4, [sp, 0x24] - lsls r4, 24 - lsrs r4, 24 - ldr r1, [r1, 0x4] - str r5, [sp] - str r6, [sp, 0x4] - str r4, [sp, 0x8] - bl sub_80053D0 - add sp, 0xC - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_80053AC - - thumb_func_start sub_80053D0 -sub_80053D0: - push {r4-r7,lr} - adds r4, r0, 0 - adds r5, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - ldr r0, [sp, 0x1C] - lsls r0, 24 - movs r2, 0 - movs r3, 0x80 - lsls r3, 8 - strh r3, [r4] - cmp r0, 0 - beq _080053F6 - movs r0, 0x80 - lsls r0, 5 - adds r1, r0, 0 - adds r0, r3, 0 - orrs r0, r1 - strh r0, [r4] -_080053F6: - strh r2, [r4, 0x2] - ldr r0, [sp, 0x18] - strh r0, [r4, 0x4] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - ldr r0, [sp, 0x14] - strh r0, [r4, 0x1C] - ldr r0, _08005438 - strh r0, [r4, 0x20] - movs r0, 0x1 - negs r0, r0 - strh r0, [r4, 0x22] - str r2, [r4, 0x14] - str r2, [r4, 0x18] - strh r2, [r4, 0x6] - ldr r1, [r5, 0x4] - lsls r0, r6, 2 - adds r0, r1 - ldr r1, [r0] - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - str r0, [r4, 0x28] - str r0, [r4, 0x2C] - ldr r0, [r5] - str r0, [r4, 0x34] - ldr r0, [r5, 0xC] - str r0, [r4, 0x38] - ldr r0, [r5, 0x10] - str r0, [r4, 0x30] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005438: .4byte 0x0000ffff - thumb_func_end sub_80053D0 - - thumb_func_start sub_800543C -sub_800543C: - push {r4,r5,lr} - sub sp, 0x8 - ldr r5, [sp, 0x14] - ldr r4, [sp, 0x18] - lsls r4, 24 - lsrs r4, 24 - ldr r1, [r1, 0x4] - str r5, [sp] - str r4, [sp, 0x4] - bl sub_800545C - add sp, 0x8 - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_800543C - - thumb_func_start sub_800545C -sub_800545C: - push {r4-r7,lr} - adds r4, r0, 0 - adds r6, r1, 0 - adds r7, r2, 0 - adds r5, r3, 0 - ldr r0, [sp, 0x18] - lsls r0, 24 - movs r2, 0 - movs r3, 0x80 - lsls r3, 8 - strh r3, [r4] - cmp r0, 0 - beq _08005482 - movs r0, 0x80 - lsls r0, 5 - adds r1, r0, 0 - adds r0, r3, 0 - orrs r0, r1 - strh r0, [r4] -_08005482: - strh r2, [r4, 0x2] - ldr r0, [sp, 0x14] - strh r0, [r4, 0x4] - strh r2, [r4, 0xC] - strh r2, [r4, 0xE] - strh r5, [r4, 0x1C] - ldr r0, _080054B8 - strh r0, [r4, 0x20] - movs r0, 0x1 - negs r0, r0 - strh r0, [r4, 0x22] - str r2, [r4, 0x14] - str r2, [r4, 0x18] - strh r2, [r4, 0x6] - ldr r1, [r6, 0x4] - lsls r0, r7, 2 - adds r0, r1 - ldr r0, [r0] - ldr r0, [r0] - str r0, [r4, 0x28] - str r0, [r4, 0x2C] - ldr r0, [r6] - str r0, [r4, 0x34] - str r2, [r4, 0x30] - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080054B8: .4byte 0x0000ffff - thumb_func_end sub_800545C - - thumb_func_start sub_80054BC -sub_80054BC: - push {r4,lr} - adds r4, r0, 0 - ldrh r1, [r4] - movs r0, 0x80 - lsls r0, 6 - ands r0, r1 - cmp r0, 0 - beq _080054D0 - movs r0, 0 - b _080054D2 -_080054D0: - lsrs r0, r1, 15 -_080054D2: - cmp r0, 0 - beq _08005586 - movs r1, 0x20 - ldrsh r0, [r4, r1] - ldrh r3, [r4] - cmp r0, 0 - blt _08005524 - movs r0, 0x80 - lsls r0, 7 - ands r0, r3 - cmp r0, 0 - bne _08005586 - ldrh r2, [r4, 0x6] - movs r0, 0x6 - ldrsh r1, [r4, r0] - ldr r0, _0800550C - cmp r1, r0 - bgt _080054FA - adds r0, r2, 0x1 - strh r0, [r4, 0x6] -_080054FA: - ldrh r1, [r4, 0x4] - movs r2, 0x4 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08005510 - subs r0, r1, 0x1 - strh r0, [r4, 0x4] - b _08005586 - .align 2, 0 -_0800550C: .4byte 0x0000752f -_08005510: - ldrh r1, [r4, 0x2] - movs r2, 0x2 - ldrsh r0, [r4, r2] - cmp r0, 0 - beq _08005524 - subs r0, r1, 0x1 - strh r0, [r4, 0x2] - lsls r0, 16 - cmp r0, 0 - bgt _08005586 -_08005524: - ldr r0, [r4, 0x2C] - ldrb r0, [r0] - cmp r0, 0 - bne _08005550 - movs r0, 0x80 - lsls r0, 5 - ands r0, r3 - cmp r0, 0 - bne _08005542 - movs r1, 0x80 - lsls r1, 6 - adds r0, r1, 0 - orrs r0, r3 - strh r0, [r4] - b _08005586 -_08005542: - ldr r0, [r4, 0x28] - str r0, [r4, 0x2C] - bl Random - movs r1, 0x1 - ands r0, r1 - strh r0, [r4, 0x4] -_08005550: - ldrh r1, [r4] - movs r2, 0x80 - lsls r2, 4 - adds r0, r2, 0 - orrs r0, r1 - strh r0, [r4] - ldr r1, [r4, 0x2C] - ldrb r0, [r1] - strh r0, [r4, 0x2] - ldrh r0, [r1, 0x2] - strh r0, [r4, 0x20] - ldrh r0, [r1, 0x4] - strh r0, [r4, 0xC] - ldrh r0, [r1, 0x6] - strh r0, [r4, 0xE] - ldrh r0, [r1, 0x8] - strh r0, [r4, 0x10] - ldrh r0, [r1, 0xA] - strh r0, [r4, 0x12] - ldrb r0, [r1, 0x1] - str r0, [r4, 0x14] - ldrb r2, [r1, 0x1] - ldr r0, [r4, 0x18] - orrs r0, r2 - str r0, [r4, 0x18] - adds r1, 0xC - str r1, [r4, 0x2C] -_08005586: - pop {r4} - pop {r0} - bx r0 - thumb_func_end sub_80054BC - - thumb_func_start sub_800558C -sub_800558C: - push {r4-r7,lr} - sub sp, 0x4 - adds r5, r0, 0 - adds r4, r1, 0 - adds r6, r2, 0 - adds r7, r3, 0 - ldrh r0, [r5] - lsrs r0, 15 - cmp r0, 0 - beq _08005602 - movs r1, 0x20 - ldrsh r0, [r5, r1] - cmp r0, 0 - bge _080055AE - adds r0, r5, 0 - bl sub_80054BC -_080055AE: - ldrh r0, [r5] - lsrs r0, 15 - cmp r0, 0 - beq _08005602 - ldrh r0, [r5, 0xC] - adds r0, r4 - strh r0, [r5, 0x8] - ldrh r0, [r5, 0xE] - adds r0, r6 - strh r0, [r5, 0xA] - adds r1, r5, 0 - adds r1, 0x26 - ldr r0, [sp, 0x18] - strb r0, [r1] - strh r7, [r5, 0x1E] - ldr r0, [r5, 0x34] - ldr r1, [r5, 0x38] - adds r2, r5, 0 - adds r2, 0x8 - movs r3, 0x22 - ldrsh r4, [r5, r3] - movs r6, 0x20 - ldrsh r3, [r5, r6] - eors r4, r3 - negs r3, r4 - orrs r3, r4 - lsrs r3, 31 - str r3, [sp] - ldr r3, [sp, 0x1C] - bl sub_800533C - ldrh r0, [r5, 0x20] - strh r0, [r5, 0x22] - ldrh r1, [r5] - movs r0, 0x80 - lsls r0, 4 - ands r0, r1 - cmp r0, 0 - beq _08005602 - ldr r0, _0800560C - ands r0, r1 - strh r0, [r5] -_08005602: - add sp, 0x4 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_0800560C: .4byte 0x0000f7ff - thumb_func_end sub_800558C - - thumb_func_start sub_8005610 -sub_8005610: - push {lr} - ldr r0, [r0, 0x4] - bl sub_800561C - pop {r0} - bx r0 - thumb_func_end sub_8005610 - - thumb_func_start sub_800561C -sub_800561C: - push {r4-r7,lr} - adds r5, r0, 0 - adds r0, r1, 0 - adds r7, r2, 0 - adds r6, r3, 0 - ldr r1, [r5, 0x14] - cmp r1, 0 - beq _0800563A - lsls r0, 5 - ldr r2, _08005664 - adds r0, r2 - ldr r2, [r5, 0x1C] - lsls r2, 5 - bl CpuCopy -_0800563A: - ldr r0, [r5, 0x18] - cmp r0, 0 - beq _0800565C - movs r4, 0 -_08005642: - movs r1, 0xF0 - lsls r1, 1 - adds r0, r4, r1 - lsls r2, r4, 2 - ldr r1, [r5, 0x18] - adds r1, r2 - adds r2, r7, 0 - adds r3, r6, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x1 - cmp r4, 0xF - ble _08005642 -_0800565C: - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_08005664: .4byte 0x06010000 - thumb_func_end sub_800561C - - thumb_func_start sub_8005668 -sub_8005668: - push {lr} - ldr r0, [r0, 0x4] - bl sub_8005674 - pop {r1} - bx r1 - thumb_func_end sub_8005668 - - thumb_func_start sub_8005674 -sub_8005674: - push {r4,lr} - adds r4, r0, 0 - ldr r3, [r4, 0x14] - cmp r3, 0 - beq _0800568E - lsls r0, r1, 5 - ldr r1, _08005698 - adds r0, r1 - ldr r2, [r4, 0x1C] - lsls r2, 5 - adds r1, r3, 0 - bl CpuCopy -_0800568E: - ldr r0, [r4, 0x18] - pop {r4} - pop {r1} - bx r1 - .align 2, 0 -_08005698: .4byte 0x06010000 - thumb_func_end sub_8005674 - - thumb_func_start sub_800569C -sub_800569C: - push {r4-r6,lr} - adds r3, r0, 0 - adds r4, r1, 0 - lsls r2, 24 - lsrs r2, 24 - movs r0, 0 - strh r0, [r3] - strh r0, [r3, 0x2] - ldrh r0, [r4] - lsrs r0, 15 - cmp r0, 0 - beq _080056F8 - cmp r2, 0x3 - bhi _080056F8 - ldr r1, [r4, 0x30] - cmp r1, 0 - beq _080056F2 - movs r5, 0x20 - ldrsh r0, [r4, r5] - lsls r0, 4 - adds r5, r1, r0 - lsls r0, r2, 2 - adds r2, r5, r0 - movs r6, 0 - ldrsh r1, [r2, r6] - cmp r1, 0x63 - bne _080056E0 - movs r6, 0x2 - ldrsh r1, [r2, r6] - cmp r1, 0x63 - bne _080056E0 - strh r1, [r3] - strh r1, [r3, 0x2] - b _080056F8 -_080056E0: - adds r0, r5, r0 - ldrh r1, [r0] - ldrh r2, [r4, 0xC] - adds r1, r2 - strh r1, [r3] - ldrh r0, [r0, 0x2] - ldrh r4, [r4, 0xE] - adds r0, r4 - b _080056F6 -_080056F2: - movs r0, 0x63 - strh r0, [r3] -_080056F6: - strh r0, [r3, 0x2] -_080056F8: - pop {r4-r6} - pop {r0} - bx r0 - thumb_func_end sub_800569C - - thumb_func_start sub_8005700 -sub_8005700: - push {r4,r5,lr} - adds r3, r0, 0 - ldrh r0, [r1] - lsrs r0, 15 - cmp r0, 0 - beq _0800575C - ldr r2, [r1, 0x30] - cmp r2, 0 - beq _0800574C - movs r4, 0x20 - ldrsh r0, [r1, r4] - lsls r0, 4 - adds r2, r0 - adds r4, r2, 0 - adds r4, 0xC -_0800571E: - movs r5, 0 - ldrsh r0, [r2, r5] - cmp r0, 0x63 - bne _08005732 - movs r5, 0x2 - ldrsh r0, [r2, r5] - cmp r0, 0x63 - bne _08005732 - strh r0, [r3] - b _08005740 -_08005732: - ldrh r0, [r2] - ldrh r5, [r1, 0xC] - adds r0, r5 - strh r0, [r3] - ldrh r0, [r2, 0x2] - ldrh r5, [r1, 0xE] - adds r0, r5 -_08005740: - strh r0, [r3, 0x2] - adds r3, 0x4 - adds r2, 0x4 - cmp r2, r4 - ble _0800571E - b _0800575C -_0800574C: - movs r1, 0x63 - movs r0, 0x3 -_08005750: - strh r1, [r3] - strh r1, [r3, 0x2] - adds r3, 0x4 - subs r0, 0x1 - cmp r0, 0 - bge _08005750 -_0800575C: - pop {r4,r5} - pop {r0} - bx r0 - thumb_func_end sub_8005700 - - thumb_func_start sub_8005764 -sub_8005764: - push {lr} - ldr r1, [r1, 0x4] - bl sub_8005770 - pop {r0} - bx r0 - thumb_func_end sub_8005764 - - thumb_func_start sub_8005770 -sub_8005770: - push {r4-r7,lr} - mov r7, r8 - push {r7} - mov r8, r2 - adds r7, r3, 0 - movs r5, 0 - adds r0, 0x10 - lsls r6, r0, 4 - adds r4, r1, 0 -_08005782: - adds r0, r6, r5 - adds r1, r4, 0 - mov r2, r8 - adds r3, r7, 0 - bl SetBGPaletteBufferColorRGB - adds r4, 0x4 - adds r5, 0x1 - cmp r5, 0xF - ble _08005782 - pop {r3} - mov r8, r3 - pop {r4-r7} - pop {r0} - bx r0 - thumb_func_end sub_8005770 - - thumb_func_start nullsub_7 -nullsub_7: - bx lr - thumb_func_end nullsub_7 - - thumb_func_start nullsub_8 -nullsub_8: - bx lr - thumb_func_end nullsub_8 - - thumb_func_start nullsub_9 -nullsub_9: - bx lr - thumb_func_end nullsub_9 - - thumb_func_start nullsub_10 -nullsub_10: - bx lr - thumb_func_end nullsub_10 - - thumb_func_start nullsub_144 -nullsub_144: - bx lr - thumb_func_end nullsub_144 - - thumb_func_start nullsub_11 -nullsub_11: - bx lr - thumb_func_end nullsub_11 - - thumb_func_start nullsub_12 -nullsub_12: - bx lr - thumb_func_end nullsub_12 - - thumb_func_start nullsub_13 -nullsub_13: - bx lr - thumb_func_end nullsub_13 - - thumb_func_start nullsub_145 -nullsub_145: - bx lr - thumb_func_end nullsub_145 - - thumb_func_start nullsub_14 -nullsub_14: - bx lr - thumb_func_end nullsub_14 - - thumb_func_start nullsub_146 -nullsub_146: - bx lr - thumb_func_end nullsub_146 - - thumb_func_start nullsub_147 -nullsub_147: - bx lr - thumb_func_end nullsub_147 - - thumb_func_start nullsub_148 -nullsub_148: - bx lr - thumb_func_end nullsub_148 - - thumb_func_start nullsub_149 -nullsub_149: - bx lr - thumb_func_end nullsub_149 - - thumb_func_start sub_80057D8 -sub_80057D8: - movs r0, 0 - bx lr - thumb_func_end sub_80057D8 - - thumb_func_start sub_80057DC -sub_80057DC: - movs r0, 0 - bx lr - thumb_func_end sub_80057DC - - thumb_func_start nullsub_150 -nullsub_150: - bx lr - thumb_func_end nullsub_150 - - thumb_func_start nullsub_151 -nullsub_151: - bx lr - thumb_func_end nullsub_151 - - thumb_func_start sub_80057E8 -sub_80057E8: - ldr r1, _08005814 - movs r0, 0x1 - strb r0, [r1] - ldr r0, _08005818 - movs r2, 0 - str r2, [r0] - ldr r1, _0800581C - movs r0, 0x1 - str r0, [r1] - ldr r0, _08005820 - str r2, [r0] - ldr r0, _08005824 - str r2, [r0] - ldr r0, _08005828 - strb r2, [r0] - ldr r1, _0800582C - ldr r3, _08005830 - adds r0, r3, 0 - strh r0, [r1] - ldr r0, _08005834 - str r2, [r0] - bx lr - .align 2, 0 -_08005814: .4byte gUnknown_2026E4C -_08005818: .4byte gUnknown_2026E54 -_0800581C: .4byte gUnknown_2026E50 -_08005820: .4byte gUnknown_2026E58 -_08005824: .4byte gUnknown_2026E3C -_08005828: .4byte gUnknown_2026E38 -_0800582C: .4byte gUnknown_2026E4E -_08005830: .4byte 0x0000060c -_08005834: .4byte gUnknown_203B078 - thumb_func_end sub_80057E8 - - thumb_func_start sub_8005838 -sub_8005838: - push {r4-r7,lr} - mov r7, r10 - mov r6, r9 - mov r5, r8 - push {r5-r7} - sub sp, 0x18 - adds r5, r0, 0 - lsls r1, 24 - lsrs r1, 24 - ldr r0, _08005880 - ldrb r0, [r0] - cmp r0, 0 - bne _08005854 - movs r1, 0 -_08005854: - ldr r0, _08005884 - ldr r0, [r0] - ldr r3, _08005888 - cmp r0, 0 - bne _08005860 - ldr r3, _0800588C -_08005860: - ldr r0, _08005890 - ldr r2, [r0] - cmp r2, 0 - bne _0800586A - ldr r2, _08005894 -_0800586A: - ldr r0, _08005898 - str r3, [r0] - cmp r1, 0x5 - bls _08005876 - bl _08006094 -_08005876: - lsls r0, r1, 2 - ldr r1, _0800589C - adds r0, r1 - ldr r0, [r0] - mov pc, r0 - .align 2, 0 -_08005880: .4byte gUnknown_2026E4C -_08005884: .4byte gUnknown_2026E54 -_08005888: .4byte gUnknown_20270E8 -_0800588C: .4byte gUnknown_2026E60 -_08005890: .4byte gUnknown_203B078 -_08005894: .4byte gUnknown_80B83EA -_08005898: .4byte gUnknown_2026E58 -_0800589C: .4byte _080058A0 - .align 2, 0 -_080058A0: - .4byte _080058B8 - .4byte _08005984 - .4byte _08005A98 - .4byte _08005BAC - .4byte _08005D46 - .4byte _08005E58 -_080058B8: - movs r1, 0 - movs r7, 0x9 -_080058BC: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _080058BC - b _08006094 -_08005984: - ldr r1, _08005A94 - movs r7, 0x9 -_08005988: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005A90 - b _08005988 -_08005A90: - b _08006094 - .align 2, 0 -_08005A94: .4byte gUnknown_80B816A -_08005A98: - ldr r1, _08005BA8 - movs r7, 0x9 -_08005A9C: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005BA4 - b _08005A9C -_08005BA4: - b _08006094 - .align 2, 0 -_08005BA8: .4byte gUnknown_80B802A -_08005BAC: - ldr r0, [r5] - mov r10, r0 - cmp r0, 0 - bge _08005BBA - ldr r0, [r5, 0x8] - cmp r0, 0 - blt _08005BDC -_08005BBA: - ldr r1, [r5, 0x4] - cmp r1, 0 - bge _08005BC6 - ldr r0, [r5, 0xC] - cmp r0, 0 - blt _08005BDC -_08005BC6: - mov r4, r10 - cmp r4, 0xEF - ble _08005BD2 - ldr r0, [r5, 0x8] - cmp r0, 0xEF - bgt _08005BDC -_08005BD2: - cmp r1, 0x9F - ble _08005CA8 - ldr r0, [r5, 0xC] - cmp r0, 0x9F - ble _08005CA8 -_08005BDC: - movs r1, 0xF0 - movs r7, 0x9 -_08005BE0: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _08005BE0 - b _08006094 -_08005CA8: - movs r7, 0 - mov r8, r1 - movs r6, 0x80 - lsls r6, 1 - mov r12, r6 - lsls r0, r1, 1 - ldr r1, _08005CCC - subs r6, r1, r0 - mov r9, r10 -_08005CBA: - cmp r8, r7 - ble _08005CD0 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - mov r4, r12 - strh r4, [r3] - b _08005D3A - .align 2, 0 -_08005CCC: .4byte gUnknown_80B8008 -_08005CD0: - ldr r1, [r5, 0xC] - cmp r1, r7 - bgt _08005CE2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - mov r0, r12 - b _08005D38 -_08005CE2: - mov r4, r8 - subs r0, r7, r4 - cmp r0, 0xF - bgt _08005CF0 - movs r0, 0 - ldrsh r1, [r6, r0] - b _08005D00 -_08005CF0: - subs r0, r1, r7 - cmp r0, 0xF - bgt _08005D10 - lsls r0, 1 - ldr r1, _08005D0C - adds r0, r1 - movs r4, 0 - ldrsh r1, [r0, r4] -_08005D00: - mov r0, r9 - adds r4, r0, r1 - ldr r0, [r5, 0x8] - subs r1, r0, r1 - b _08005D14 - .align 2, 0 -_08005D0C: .4byte gUnknown_80B8008 -_08005D10: - mov r4, r10 - ldr r1, [r5, 0x8] -_08005D14: - cmp r4, 0 - bge _08005D1A - movs r4, 0 -_08005D1A: - cmp r4, 0xEF - ble _08005D20 - movs r4, 0xEF -_08005D20: - cmp r1, 0 - bgt _08005D26 - movs r1, 0x1 -_08005D26: - cmp r1, 0xF0 - ble _08005D2C - movs r1, 0xF0 -_08005D2C: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - lsls r0, r1, 8 - orrs r0, r4 -_08005D38: - strh r0, [r3] -_08005D3A: - adds r3, 0x2 - adds r6, 0x2 - adds r7, 0x1 - cmp r7, 0x9F - ble _08005CBA - b _08006094 -_08005D46: - ldr r1, _08005E54 - movs r7, 0xE -_08005D4A: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - ldrh r0, [r1] - strh r0, [r3] - adds r1, 0x2 - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - blt _08005E52 - b _08005D4A -_08005E52: - b _08006094 - .align 2, 0 -_08005E54: .4byte gUnknown_80B82AA -_08005E58: - ldr r4, _08005FF4 - ldr r5, _08005FF8 - ldr r6, _08005FFC - movs r0, 0x80 - lsls r0, 1 - adds r1, r0, 0 - movs r7, 0xE -_08005E66: - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - ldrh r0, [r2] - strh r0, [r3] - adds r2, 0x2 - adds r3, 0x2 - strh r1, [r3] - adds r3, 0x2 - subs r7, 0x1 - cmp r7, 0 - bge _08005E66 - ldr r4, [r4] - str r4, [sp] - ldr r5, [r5] - str r5, [sp, 0x4] - ldr r6, [r6] - str r6, [sp, 0x8] - adds r1, r6, 0 - cmp r6, 0 - bge _08005F40 - adds r1, 0xFF -_08005F40: - asrs r1, 8 - adds r1, 0x1 - movs r0, 0x80 - lsls r0, 3 - bl __divsi3 - str r0, [sp, 0xC] - ldr r0, [sp, 0x4] - cmp r0, 0 - bge _08005F56 - adds r0, 0xFF -_08005F56: - asrs r4, r0, 8 - adds r5, r4, 0 - movs r3, 0 - lsls r0, r4, 2 - adds r7, r0, 0x2 - mov r9, r7 -_08005F62: - adds r0, r3, 0 - str r3, [sp, 0x10] - bl sub_8009C7C - ldr r1, [sp, 0x8] - muls r0, r1 - ldr r3, [sp, 0x10] - cmp r0, 0 - bge _08005F76 - adds r0, 0xFF -_08005F76: - asrs r0, 8 - ldr r2, [sp, 0x4] - adds r1, r2, r0 - cmp r1, 0 - bge _08005F82 - adds r1, 0xFF -_08005F82: - asrs r1, 8 - str r1, [sp, 0x14] - ldr r6, [sp, 0x4] - subs r0, r6, r0 - cmp r0, 0 - bge _08005F90 - adds r0, 0xFF -_08005F90: - asrs r0, 8 - mov r8, r0 - ldr r0, [sp, 0x14] - cmp r5, r0 - blt _08005FA4 - ldr r1, [sp, 0xC] - adds r1, r3 - mov r10, r1 - cmp r4, r8 - ble _0800608A -_08005FA4: - adds r0, r3, 0 - str r3, [sp, 0x10] - bl sub_8009D04 - ldr r2, [sp, 0x8] - muls r0, r2 - ldr r3, [sp, 0x10] - cmp r0, 0 - bge _08005FB8 - adds r0, 0xFF -_08005FB8: - asrs r0, 8 - ldr r6, [sp] - subs r1, r6, r0 - cmp r1, 0 - bge _08005FC4 - adds r1, 0xFF -_08005FC4: - asrs r1, 8 - ldr r2, [sp] - adds r0, r2, r0 - cmp r0, 0 - bge _08005FD0 - adds r0, 0xFF -_08005FD0: - asrs r0, 8 - cmp r1, 0 - bge _08005FD8 - movs r1, 0 -_08005FD8: - cmp r0, 0 - bge _08005FDE - movs r0, 0 -_08005FDE: - cmp r1, 0xEF - ble _08005FE4 - movs r1, 0x9F -_08005FE4: - cmp r0, 0xEF - ble _08005FEA - movs r0, 0x9F -_08005FEA: - cmp r1, r0 - ble _08006000 - lsls r2, r1, 8 - orrs r2, r0 - b _08006004 - .align 2, 0 -_08005FF4: .4byte gUnknown_2026E40 -_08005FF8: .4byte gUnknown_2026E44 -_08005FFC: .4byte gUnknown_2026E48 -_08006000: - lsls r2, r0, 8 - orrs r2, r1 -_08006004: - ldr r6, [sp, 0xC] - adds r3, r6 - mov r10, r3 - ldr r0, [sp, 0x14] - cmp r5, r0 - bge _0800604E - ldr r1, _08006030 - mov r12, r1 - ldr r3, _08006034 - add r3, r9 - ldr r1, _08006038 - add r1, r9 -_0800601C: - cmp r5, 0 - blt _0800603E - cmp r5, 0x9F - bgt _0800603E - mov r6, r12 - ldr r0, [r6] - cmp r0, 0 - bne _0800603C - strh r2, [r1] - b _0800603E - .align 2, 0 -_08006030: .4byte gUnknown_2026E54 -_08006034: .4byte gUnknown_20270E8 -_08006038: .4byte gUnknown_2026E60 -_0800603C: - strh r2, [r3] -_0800603E: - adds r3, 0x4 - adds r1, 0x4 - movs r0, 0x4 - add r9, r0 - adds r5, 0x1 - ldr r6, [sp, 0x14] - cmp r5, r6 - blt _0800601C -_0800604E: - cmp r4, r8 - ble _0800608A - ldr r6, _08006070 - ldr r0, _08006074 - adds r3, r7, r0 - ldr r0, _08006078 - adds r1, r7, r0 -_0800605C: - cmp r4, 0 - blt _0800607E - cmp r4, 0x9F - bgt _0800607E - ldr r0, [r6] - cmp r0, 0 - bne _0800607C - strh r2, [r1] - b _0800607E - .align 2, 0 -_08006070: .4byte gUnknown_2026E54 -_08006074: .4byte gUnknown_20270E8 -_08006078: .4byte gUnknown_2026E60 -_0800607C: - strh r2, [r3] -_0800607E: - subs r3, 0x4 - subs r1, 0x4 - subs r7, 0x4 - subs r4, 0x1 - cmp r4, r8 - bgt _0800605C -_0800608A: - mov r3, r10 - ldr r0, _080060A4 - cmp r3, r0 - bgt _08006094 - b _08005F62 -_08006094: - add sp, 0x18 - pop {r3-r5} - mov r8, r3 - mov r9, r4 - mov r10, r5 - pop {r4-r7} - pop {r0} - bx r0 - .align 2, 0 -_080060A4: .4byte 0x000003ff - thumb_func_end sub_8005838 - - thumb_func_start sub_80060A8 -sub_80060A8: - push {lr} - ldr r1, _080060D8 - ldr r0, _080060DC - ldr r0, [r0] - str r0, [r1] - ldr r2, _080060E0 - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _080060BE - movs r1, 0x1 -_080060BE: - str r1, [r2] - ldr r2, _080060E4 - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _080060CC - movs r1, 0x1 -_080060CC: - str r1, [r2] - ldr r1, _080060E8 - movs r0, 0 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_080060D8: .4byte gUnknown_2026E3C -_080060DC: .4byte gUnknown_2026E58 -_080060E0: .4byte gUnknown_2026E54 -_080060E4: .4byte gUnknown_2026E50 -_080060E8: .4byte gUnknown_2026E38 - thumb_func_end sub_80060A8 - - thumb_func_start sub_80060EC -sub_80060EC: - push {lr} - ldr r1, _08006130 - ldr r0, _08006134 - ldr r0, [r0] - str r0, [r1] - ldr r2, _08006138 - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _08006102 - movs r1, 0x1 -_08006102: - str r1, [r2] - ldr r2, _0800613C - movs r1, 0 - ldr r0, [r2] - cmp r0, 0 - bne _08006110 - movs r1, 0x1 -_08006110: - str r1, [r2] - ldr r0, _08006140 - ldrh r2, [r0] - movs r0, 0xF8 - lsls r0, 5 - ands r0, r2 - lsrs r0, 8 - movs r1, 0x1F - ands r1, r2 - bl sub_800CC44 - ldr r1, _08006144 - movs r0, 0x1 - strb r0, [r1] - pop {r0} - bx r0 - .align 2, 0 -_08006130: .4byte gUnknown_2026E3C -_08006134: .4byte gUnknown_2026E58 -_08006138: .4byte gUnknown_2026E54 -_0800613C: .4byte gUnknown_2026E50 -_08006140: .4byte gUnknown_2026E4E -_08006144: .4byte gUnknown_2026E38 - thumb_func_end sub_80060EC - .align 2, 0 @ Don't pad with nop. diff --git a/asm/code_80035F0.s b/asm/code_80035F0.s new file mode 100644 index 0000000..951ac89 --- /dev/null +++ b/asm/code_80035F0.s @@ -0,0 +1,6004 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start nullsub_141 +nullsub_141: + bx lr + thumb_func_end nullsub_141 + + thumb_func_start nullsub_142 +nullsub_142: + bx lr + thumb_func_end nullsub_142 + + thumb_func_start sub_80035F8 +sub_80035F8: + push {lr} + pop {r0} + bx r0 + thumb_func_end sub_80035F8 + + thumb_func_start sub_8003600 +sub_8003600: + push {r4-r6,lr} + ldr r1, _08003650 + ldr r6, _08003654 + movs r2, 0 + ldr r0, _08003658 + movs r3, 0x80 + lsls r3, 2 +_0800360E: + strb r2, [r0] + strb r2, [r0, 0x1] + strb r2, [r0, 0x2] + strb r2, [r0, 0x3] + adds r0, 0x4 + subs r3, 0x1 + cmp r3, 0 + bne _0800360E + movs r0, 0 + movs r5, 0x80 + lsls r5, 1 + ldr r4, _0800365C + movs r3, 0x20 + ldr r2, _08003660 +_0800362A: + strb r0, [r1] + strh r5, [r1, 0x2] + strb r0, [r1, 0x4] + strb r0, [r1, 0x5] + strb r0, [r1, 0x6] + strb r0, [r1, 0x7] + str r0, [r1, 0x8] + str r4, [r1, 0xC] + str r2, [r1, 0x10] + subs r3, 0x1 + adds r1, 0x14 + cmp r3, 0 + bge _0800362A + movs r0, 0x1 + strb r0, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08003650: .4byte gUnknown_3000C00 +_08003654: .4byte gUnknown_3001B58 +_08003658: .4byte gUnknown_3000400 +_0800365C: .4byte sub_8003A34 +_08003660: .4byte sub_8003A74 + thumb_func_end sub_8003600 + + thumb_func_start sub_8003664 +sub_8003664: + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + ldr r0, _0800369C + adds r2, r0 + movs r3, 0 + movs r4, 0x1 + strb r4, [r2] + movs r0, 0 + strh r1, [r2, 0x2] + strb r0, [r2, 0x4] + strb r0, [r2, 0x5] + strb r0, [r2, 0x6] + strb r0, [r2, 0x7] + str r3, [r2, 0x8] + ldr r0, _080036A0 + str r0, [r2, 0xC] + ldr r0, _080036A4 + str r0, [r2, 0x10] + ldr r0, _080036A8 + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800369C: .4byte gUnknown_3000C00 +_080036A0: .4byte sub_8003AC0 +_080036A4: .4byte sub_8003B50 +_080036A8: .4byte gUnknown_3001B58 + thumb_func_end sub_8003664 + + thumb_func_start sub_80036AC +sub_80036AC: + push {r4,lr} + sub sp, 0x4 + str r2, [sp] + lsls r0, 16 + lsrs r0, 16 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + ldr r0, _080036E4 + adds r2, r0 + movs r3, 0 + movs r4, 0x1 + strb r4, [r2] + strh r1, [r2, 0x2] + ldr r0, [sp] + str r0, [r2, 0x4] + str r3, [r2, 0x8] + ldr r0, _080036E8 + str r0, [r2, 0xC] + ldr r0, _080036EC + str r0, [r2, 0x10] + ldr r0, _080036F0 + strb r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080036E4: .4byte gUnknown_3000C00 +_080036E8: .4byte sub_8003C18 +_080036EC: .4byte sub_8003D00 +_080036F0: .4byte gUnknown_3001B58 + thumb_func_end sub_80036AC + + thumb_func_start sub_80036F4 +sub_80036F4: + push {r4,lr} + sub sp, 0x4 + str r2, [sp] + lsls r0, 16 + lsrs r0, 16 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + ldr r0, _0800372C + adds r2, r0 + movs r3, 0 + movs r4, 0x1 + strb r4, [r2] + strh r1, [r2, 0x2] + ldr r0, [sp] + str r0, [r2, 0x4] + str r3, [r2, 0x8] + ldr r0, _08003730 + str r0, [r2, 0xC] + ldr r0, _08003734 + str r0, [r2, 0x10] + ldr r0, _08003738 + strb r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_0800372C: .4byte gUnknown_3000C00 +_08003730: .4byte sub_8003E2C +_08003734: .4byte sub_8003EC0 +_08003738: .4byte gUnknown_3001B58 + thumb_func_end sub_80036F4 + + thumb_func_start sub_800373C +sub_800373C: + push {r4,lr} + lsls r0, 16 + lsrs r0, 16 + lsls r3, r0, 2 + adds r3, r0 + lsls r3, 2 + ldr r0, _08003770 + adds r3, r0 + movs r4, 0x1 + strb r4, [r3] + movs r0, 0 + strh r1, [r3, 0x2] + strb r0, [r3, 0x4] + strb r0, [r3, 0x5] + strb r0, [r3, 0x6] + strb r0, [r3, 0x7] + str r2, [r3, 0x8] + ldr r0, _08003774 + str r0, [r3, 0xC] + ldr r0, _08003778 + str r0, [r3, 0x10] + ldr r0, _0800377C + strb r4, [r0] + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08003770: .4byte gUnknown_3000C00 +_08003774: .4byte sub_8003F60 +_08003778: .4byte sub_8004034 +_0800377C: .4byte gUnknown_3001B58 + thumb_func_end sub_800373C + + thumb_func_start sub_8003780 +sub_8003780: + push {r4,lr} + sub sp, 0x4 + str r2, [sp] + lsls r0, 16 + lsrs r0, 16 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + ldr r0, _080037B8 + adds r2, r0 + movs r3, 0 + movs r4, 0x1 + strb r4, [r2] + strh r1, [r2, 0x2] + ldr r0, [sp] + str r0, [r2, 0x4] + str r3, [r2, 0x8] + ldr r0, _080037BC + str r0, [r2, 0xC] + ldr r0, _080037C0 + str r0, [r2, 0x10] + ldr r0, _080037C4 + strb r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080037B8: .4byte gUnknown_3000C00 +_080037BC: .4byte sub_8004170 +_080037C0: .4byte sub_8004264 +_080037C4: .4byte gUnknown_3001B58 + thumb_func_end sub_8003780 + + thumb_func_start sub_80037C8 +sub_80037C8: + push {r4,lr} + sub sp, 0x4 + str r2, [sp] + lsls r0, 16 + lsrs r0, 16 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + ldr r0, _08003800 + adds r2, r0 + movs r3, 0 + movs r4, 0x1 + strb r4, [r2] + strh r1, [r2, 0x2] + ldr r0, [sp] + str r0, [r2, 0x4] + str r3, [r2, 0x8] + ldr r0, _08003804 + str r0, [r2, 0xC] + ldr r0, _08003808 + str r0, [r2, 0x10] + ldr r0, _0800380C + strb r4, [r0] + add sp, 0x4 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08003800: .4byte gUnknown_3000C00 +_08003804: .4byte sub_8004388 +_08003808: .4byte sub_8004434 +_0800380C: .4byte gUnknown_3001B58 + thumb_func_end sub_80037C8 + + thumb_func_start sub_8003810 +sub_8003810: + sub sp, 0x4 + str r1, [sp] + lsls r0, 16 + lsrs r2, r0, 20 + lsls r1, r2, 2 + adds r1, r2 + lsls r1, 2 + ldr r2, _08003838 + adds r1, r2 + movs r2, 0x1 + strb r2, [r1] + ldr r1, _0800383C + lsrs r0, 14 + adds r0, r1 + ldr r1, [sp] + str r1, [r0] + ldr r0, _08003840 + strb r2, [r0] + add sp, 0x4 + bx lr + .align 2, 0 +_08003838: .4byte gUnknown_3000C00 +_0800383C: .4byte gUnknown_3000400 +_08003840: .4byte gUnknown_3001B58 + thumb_func_end sub_8003810 + + thumb_func_start sub_8003844 +sub_8003844: + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r4, r0, 16 + lsls r1, 16 + lsrs r1, 16 + lsrs r0, 20 + lsls r2, r0, 2 + adds r2, r0 + lsls r2, 2 + ldr r0, _08003880 + adds r2, r0 + movs r5, 0x1 + strb r5, [r2] + adds r0, r1, 0 + bl sub_80027A0 + str r0, [sp] + ldr r0, _08003884 + lsls r4, 2 + adds r4, r0 + ldr r0, [sp] + str r0, [r4] + ldr r0, _08003888 + strb r5, [r0] + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08003880: .4byte gUnknown_3000C00 +_08003884: .4byte gUnknown_3000400 +_08003888: .4byte gUnknown_3001B58 + thumb_func_end sub_8003844 + + thumb_func_start sub_800388C +sub_800388C: + push {r4-r7,lr} + adds r6, r1, 0 + lsls r0, 16 + lsrs r1, r0, 16 + lsrs r4, r0, 20 + adds r3, r1, r2 + subs r0, r3, 0x1 + cmp r0, 0 + bge _080038A0 + adds r0, 0xF +_080038A0: + lsls r0, 12 + lsrs r3, r0, 16 + lsls r1, 2 + ldr r0, _080038E4 + adds r1, r0 + lsls r5, r4, 2 + ldr r7, _080038E8 + ldr r0, _080038EC + mov r12, r0 + cmp r2, 0 + ble _080038C0 +_080038B6: + ldm r6!, {r0} + stm r1!, {r0} + subs r2, 0x1 + cmp r2, 0 + bne _080038B6 +_080038C0: + adds r0, r5, r4 + lsls r0, 2 + adds r0, r7 + adds r2, r4, 0 + cmp r2, r3 + bgt _080038D8 + movs r1, 0x1 +_080038CE: + strb r1, [r0] + adds r2, 0x1 + adds r0, 0x14 + cmp r2, r3 + ble _080038CE +_080038D8: + movs r0, 0x1 + mov r1, r12 + strb r0, [r1] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080038E4: .4byte gUnknown_3000400 +_080038E8: .4byte gUnknown_3000C00 +_080038EC: .4byte gUnknown_3001B58 + thumb_func_end sub_800388C + + thumb_func_start sub_80038F0 +sub_80038F0: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x4 + adds r5, r1, 0 + lsls r0, 16 + lsrs r1, r0, 16 + lsrs r6, r0, 20 + adds r3, r1, r2 + subs r0, r3, 0x1 + cmp r0, 0 + bge _0800390C + adds r0, 0xF +_0800390C: + lsls r0, 12 + lsrs r7, r0, 16 + lsls r1, 2 + ldr r0, _0800396C + adds r1, r0 + mov r8, r1 + lsls r0, r6, 2 + mov r9, r0 + cmp r2, 0 + ble _0800393C + adds r4, r2, 0 +_08003922: + ldrh r0, [r5] + adds r5, 0x2 + bl sub_80027A0 + str r0, [sp] + mov r1, r8 + adds r1, 0x4 + mov r8, r1 + subs r1, 0x4 + stm r1!, {r0} + subs r4, 0x1 + cmp r4, 0 + bne _08003922 +_0800393C: + mov r1, r9 + adds r0, r1, r6 + lsls r0, 2 + ldr r1, _08003970 + adds r0, r1 + adds r4, r6, 0 + ldr r2, _08003974 + cmp r4, r7 + bgt _0800395A + movs r1, 0x1 +_08003950: + strb r1, [r0] + adds r4, 0x1 + adds r0, 0x14 + cmp r4, r7 + ble _08003950 +_0800395A: + movs r0, 0x1 + strb r0, [r2] + add sp, 0x4 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800396C: .4byte gUnknown_3000400 +_08003970: .4byte gUnknown_3000C00 +_08003974: .4byte gUnknown_3001B58 + thumb_func_end sub_80038F0 + + thumb_func_start sub_8003978 +sub_8003978: + lsls r0, 16 + ldr r1, _08003984 + lsrs r0, 14 + adds r0, r1 + ldr r0, [r0] + bx lr + .align 2, 0 +_08003984: .4byte gUnknown_3000400 + thumb_func_end sub_8003978 + + thumb_func_start sub_8003988 +sub_8003988: + push {lr} + lsls r0, 16 + ldr r1, _080039A0 + lsrs r0, 14 + adds r0, r1 + ldr r0, [r0] + bl sub_8002774 + lsls r0, 16 + lsrs r0, 16 + pop {r1} + bx r1 + .align 2, 0 +_080039A0: .4byte gUnknown_3000400 + thumb_func_end sub_8003988 + + thumb_func_start sub_80039A4 +sub_80039A4: + lsls r0, 16 + lsrs r0, 16 + ldr r2, _080039B4 + ldrh r1, [r2] + orrs r0, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_080039B4: .4byte gUnknown_3001B5A + thumb_func_end sub_80039A4 + + thumb_func_start sub_80039B8 +sub_80039B8: + push {r4,r5,lr} + ldr r0, _08003A28 + ldrb r0, [r0] + cmp r0, 0 + beq _08003A20 + ldr r4, _08003A2C + movs r1, 0x96 + lsls r1, 1 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, 0 + beq _080039DA + movs r0, 0xA0 + lsls r0, 2 + adds r1, r4, r0 + movs r0, 0x1 + strb r0, [r1] +_080039DA: + movs r5, 0 +_080039DC: + ldrb r0, [r4] + cmp r0, 0 + beq _080039F0 + lsls r0, r5, 16 + lsrs r0, 16 + ldr r1, [r4, 0x10] + bl _call_via_r1 + movs r0, 0 + strb r0, [r4] +_080039F0: + adds r5, 0x1 + adds r4, 0x14 + cmp r5, 0x1F + ble _080039DC + ldr r0, _08003A2C + movs r1, 0xA0 + lsls r1, 2 + adds r5, r0, r1 + ldrb r0, [r5] + cmp r0, 0 + beq _08003A14 + ldr r2, [r4, 0xC] + movs r0, 0x20 + movs r1, 0xF0 + bl _call_via_r2 + movs r0, 0 + strb r0, [r5] +_08003A14: + ldr r1, _08003A30 + movs r0, 0x3 + strh r0, [r1] + ldr r1, _08003A28 + movs r0, 0 + strb r0, [r1] +_08003A20: + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08003A28: .4byte gUnknown_3001B58 +_08003A2C: .4byte gUnknown_3000C00 +_08003A30: .4byte gUnknown_3001B5A + thumb_func_end sub_80039B8 + + thumb_func_start sub_8003A34 +sub_8003A34: + push {r4,r5,lr} + sub sp, 0x4 + lsls r0, r1, 16 + lsrs r0, 16 + lsls r5, r0, 2 + ldr r1, _08003A70 + adds r5, r1 + ldrb r1, [r5, 0x2] + movs r2, 0xF8 + adds r3, r2, 0 + ands r3, r1 + lsls r3, 7 + ldrb r4, [r5, 0x1] + adds r1, r2, 0 + ands r1, r4 + lsls r1, 2 + orrs r3, r1 + ldrb r1, [r5] + ands r2, r1 + lsrs r2, 3 + orrs r2, r3 + mov r1, sp + strh r2, [r1] + bl SetBGPaletteBufferColor + add sp, 0x4 + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08003A70: .4byte gUnknown_3000400 + thumb_func_end sub_8003A34 + + thumb_func_start sub_8003A74 +sub_8003A74: + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 20 + lsrs r6, r0, 16 + lsls r1, r6, 2 + ldr r0, _08003ABC + adds r4, r1, r0 + movs r5, 0 + movs r7, 0xF8 +_08003A86: + ldrb r0, [r4, 0x2] + adds r1, r7, 0 + ands r1, r0 + lsls r1, 7 + ldrb r2, [r4, 0x1] + adds r0, r7, 0 + ands r0, r2 + lsls r0, 2 + orrs r1, r0 + ldrb r2, [r4] + adds r0, r7, 0 + ands r0, r2 + lsrs r0, 3 + orrs r0, r1 + mov r1, sp + strh r0, [r1] + adds r0, r6, r5 + bl SetBGPaletteBufferColor + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0xF + ble _08003A86 + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08003ABC: .4byte gUnknown_3000400 + thumb_func_end sub_8003A74 + + thumb_func_start sub_8003AC0 +sub_8003AC0: + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r0, _08003B04 + adds r1, r0 + ldrh r2, [r1, 0x2] + adds r6, r2, 0 + lsls r1, r7, 2 + ldr r0, _08003B08 + adds r4, r1, r0 + cmp r2, 0xFF + bls _08003B0C + ldrb r0, [r4, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + ldrb r3, [r4, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + ldrb r0, [r4] + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + b _08003B3A + .align 2, 0 +_08003B04: .4byte gUnknown_3000C00 +_08003B08: .4byte gUnknown_3000400 +_08003B0C: + cmp r2, 0 + bne _08003B16 + mov r0, sp + strh r2, [r0] + b _08003B3E +_08003B16: + ldrb r0, [r4, 0x2] + muls r0, r2 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r5, r0, 7 + ldrb r0, [r4, 0x1] + muls r0, r2 + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 2 + orrs r1, r5 + ldrb r0, [r4] + muls r0, r6 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r1, r0 +_08003B3A: + mov r0, sp + strh r1, [r0] +_08003B3E: + adds r0, r7, 0 + mov r1, sp + bl SetBGPaletteBufferColor + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8003AC0 + + thumb_func_start sub_8003B50 +sub_8003B50: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r2, _08003BAC + adds r1, r2 + ldrh r6, [r1, 0x2] + lsls r0, 20 + lsrs r7, r0, 16 + lsls r1, r7, 2 + ldr r0, _08003BB0 + adds r4, r1, r0 + cmp r6, 0xFF + bls _08003BB4 + movs r5, 0 + movs r6, 0xF8 +_08003B7A: + ldrb r0, [r4, 0x2] + adds r1, r6, 0 + ands r1, r0 + lsls r1, 7 + ldrb r2, [r4, 0x1] + adds r0, r6, 0 + ands r0, r2 + lsls r0, 2 + orrs r1, r0 + ldrb r2, [r4] + adds r0, r6, 0 + ands r0, r2 + lsrs r0, 3 + orrs r0, r1 + mov r1, sp + strh r0, [r1] + adds r0, r7, r5 + bl SetBGPaletteBufferColor + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0xF + ble _08003B7A + b _08003C0A + .align 2, 0 +_08003BAC: .4byte gUnknown_3000C00 +_08003BB0: .4byte gUnknown_3000400 +_08003BB4: + cmp r6, 0 + bne _08003BCE + mov r0, sp + strh r6, [r0] + movs r5, 0 +_08003BBE: + adds r0, r7, r5 + mov r1, sp + bl SetBGPaletteBufferColor + adds r5, 0x1 + cmp r5, 0xF + ble _08003BBE + b _08003C0A +_08003BCE: + movs r5, 0 + mov r8, sp +_08003BD2: + ldrb r0, [r4, 0x2] + muls r0, r6 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r2, r0, 7 + ldrb r0, [r4, 0x1] + muls r0, r6 + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 2 + orrs r1, r2 + ldrb r0, [r4] + muls r0, r6 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r1, r0 + mov r0, r8 + strh r1, [r0] + adds r0, r7, r5 + mov r1, sp + bl SetBGPaletteBufferColor + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0xF + ble _08003BD2 +_08003C0A: + add sp, 0x4 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8003B50 + + thumb_func_start sub_8003C18 +sub_8003C18: + push {r4-r7,lr} + mov r7, r8 + push {r7} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r8, r1 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r0, _08003C68 + adds r1, r0 + ldrh r2, [r1, 0x2] + mov r12, r2 + ldr r0, [r1, 0x4] + str r0, [sp] + mov r0, r8 + lsls r1, r0, 2 + ldr r0, _08003C6C + adds r4, r1, r0 + cmp r2, 0xFF + bls _08003C70 + ldrb r0, [r4, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + ldrb r3, [r4, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + ldrb r0, [r4] + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + b _08003CE8 + .align 2, 0 +_08003C68: .4byte gUnknown_3000C00 +_08003C6C: .4byte gUnknown_3000400 +_08003C70: + cmp r2, 0 + bne _08003C98 + mov r0, sp + ldrb r0, [r0, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + mov r0, sp + ldrb r3, [r0, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + mov r0, sp + ldrb r0, [r0] + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + b _08003CE8 +_08003C98: + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + subs r0, r2 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + ldrb r1, [r1] + adds r7, r1, 0 + muls r7, r0 + mov r1, sp + ldrb r1, [r1, 0x1] + adds r6, r1, 0 + muls r6, r0 + mov r1, sp + ldrb r1, [r1, 0x2] + muls r1, r0 + ldrb r0, [r4, 0x2] + muls r0, r2 + adds r0, r1 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r5, r0, 7 + ldrb r0, [r4, 0x1] + muls r0, r2 + adds r0, r6 + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 2 + orrs r1, r5 + ldrb r0, [r4] + mov r2, r12 + muls r2, r0 + adds r0, r2, 0 + adds r0, r7 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r1, r0 +_08003CE8: + add r0, sp, 0x4 + strh r1, [r0] + adds r1, r0, 0 + mov r0, r8 + bl SetBGPaletteBufferColor + add sp, 0x8 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8003C18 + + thumb_func_start sub_8003D00 +sub_8003D00: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0xC + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r2, _08003D68 + adds r1, r2 + ldrh r6, [r1, 0x2] + ldr r1, [r1, 0x4] + str r1, [sp] + lsls r0, 20 + lsrs r0, 16 + mov r8, r0 + lsls r1, r0, 2 + ldr r0, _08003D6C + adds r4, r1, r0 + cmp r6, 0xFF + bls _08003D70 + movs r5, 0 + movs r7, 0xF8 + add r6, sp, 0x4 +_08003D36: + ldrb r0, [r4, 0x2] + adds r1, r7, 0 + ands r1, r0 + lsls r1, 7 + ldrb r2, [r4, 0x1] + adds r0, r7, 0 + ands r0, r2 + lsls r0, 2 + orrs r1, r0 + ldrb r2, [r4] + adds r0, r7, 0 + ands r0, r2 + lsrs r0, 3 + orrs r0, r1 + strh r0, [r6] + mov r1, r8 + adds r0, r1, r5 + adds r1, r6, 0 + bl SetBGPaletteBufferColor + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0xF + ble _08003D36 + b _08003E1C + .align 2, 0 +_08003D68: .4byte gUnknown_3000C00 +_08003D6C: .4byte gUnknown_3000400 +_08003D70: + cmp r6, 0 + bne _08003DAE + add r4, sp, 0x4 + mov r0, sp + ldrb r0, [r0, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + mov r0, sp + ldrb r3, [r0, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + mov r0, sp + ldrb r0, [r0] + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + strh r1, [r4] + movs r5, 0 +_08003D9C: + mov r2, r8 + adds r0, r2, r5 + adds r1, r4, 0 + bl SetBGPaletteBufferColor + adds r5, 0x1 + cmp r5, 0xF + ble _08003D9C + b _08003E1C +_08003DAE: + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + subs r0, r6 + lsls r0, 16 + lsrs r0, 16 + mov r1, sp + ldrb r1, [r1] + adds r2, r1, 0 + muls r2, r0 + str r2, [sp, 0x8] + mov r1, sp + ldrb r1, [r1, 0x1] + adds r2, r1, 0 + muls r2, r0 + mov r10, r2 + mov r1, sp + ldrb r1, [r1, 0x2] + adds r2, r1, 0 + muls r2, r0 + mov r9, r2 + movs r5, 0 + add r7, sp, 0x4 +_08003DDC: + ldrb r0, [r4, 0x2] + muls r0, r6 + add r0, r9 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r2, r0, 7 + ldrb r0, [r4, 0x1] + muls r0, r6 + add r0, r10 + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 2 + orrs r1, r2 + ldrb r0, [r4] + muls r0, r6 + ldr r2, [sp, 0x8] + adds r0, r2 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r1, r0 + strh r1, [r7] + mov r1, r8 + adds r0, r1, r5 + adds r1, r7, 0 + bl SetBGPaletteBufferColor + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0xF + ble _08003DDC +_08003E1C: + add sp, 0xC + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8003D00 + + thumb_func_start sub_8003E2C +sub_8003E2C: + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r6, r1, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r0, _08003E74 + adds r1, r0 + ldrh r2, [r1, 0x2] + adds r5, r2, 0 + ldr r0, [r1, 0x4] + str r0, [sp] + cmp r2, 0xFF + bls _08003E78 + mov r0, sp + ldrb r0, [r0, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + mov r0, sp + ldrb r3, [r0, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + mov r0, sp + ldrb r0, [r0] + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + b _08003EAC + .align 2, 0 +_08003E74: .4byte gUnknown_3000C00 +_08003E78: + cmp r2, 0 + bne _08003E82 + add r0, sp, 0x4 + strh r2, [r0] + b _08003EB0 +_08003E82: + mov r0, sp + ldrb r0, [r0, 0x2] + muls r0, r2 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r4, r0, 7 + mov r0, sp + ldrb r0, [r0, 0x1] + muls r0, r2 + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 2 + orrs r1, r4 + mov r0, sp + ldrb r0, [r0] + muls r0, r5 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r1, r0 +_08003EAC: + add r0, sp, 0x4 + strh r1, [r0] +_08003EB0: + adds r1, r0, 0 + adds r0, r6, 0 + bl SetBGPaletteBufferColor + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8003E2C + + thumb_func_start sub_8003EC0 +sub_8003EC0: + push {r4-r6,lr} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r2, _08003F08 + adds r1, r2 + ldrh r2, [r1, 0x2] + adds r5, r2, 0 + ldr r1, [r1, 0x4] + str r1, [sp] + lsls r0, 20 + lsrs r6, r0, 16 + cmp r2, 0xFF + bls _08003F0C + mov r0, sp + ldrb r0, [r0, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + mov r0, sp + ldrb r3, [r0, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + mov r0, sp + ldrb r0, [r0] + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + b _08003F40 + .align 2, 0 +_08003F08: .4byte gUnknown_3000C00 +_08003F0C: + cmp r2, 0 + bne _08003F16 + add r0, sp, 0x4 + strh r2, [r0] + b _08003F44 +_08003F16: + mov r0, sp + ldrb r0, [r0, 0x2] + muls r0, r2 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r4, r0, 7 + mov r0, sp + ldrb r0, [r0, 0x1] + muls r0, r2 + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 2 + orrs r1, r4 + mov r0, sp + ldrb r0, [r0] + muls r0, r5 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r1, r0 +_08003F40: + add r0, sp, 0x4 + strh r1, [r0] +_08003F44: + adds r5, r0, 0 + movs r4, 0 +_08003F48: + adds r0, r6, r4 + adds r1, r5, 0 + bl SetBGPaletteBufferColor + adds r4, 0x1 + cmp r4, 0xF + ble _08003F48 + add sp, 0x8 + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_8003EC0 + + thumb_func_start sub_8003F60 +sub_8003F60: + push {r4-r7,lr} + sub sp, 0x4 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r7, r1, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r0, _08003FA8 + adds r1, r0 + ldrh r2, [r1, 0x2] + adds r3, r2, 0 + movs r0, 0xF + ands r0, r7 + lsls r0, 2 + ldr r1, [r1, 0x8] + adds r5, r1, r0 + lsls r1, r7, 2 + ldr r0, _08003FAC + adds r4, r1, r0 + cmp r2, 0xFF + bls _08003FB0 + ldrb r0, [r4, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + ldrb r3, [r4, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + ldrb r0, [r4] + b _08003FCA + .align 2, 0 +_08003FA8: .4byte gUnknown_3000C00 +_08003FAC: .4byte gUnknown_3000400 +_08003FB0: + cmp r2, 0 + bne _08003FD6 + ldrb r0, [r5, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + ldrb r3, [r5, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + ldrb r0, [r5] +_08003FCA: + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + mov r0, sp + strh r1, [r0] + b _08004024 +_08003FD6: + movs r1, 0x80 + lsls r1, 1 + adds r0, r1, 0 + subs r0, r3 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r5] + adds r2, r1, 0 + muls r2, r0 + ldrb r1, [r4] + muls r1, r3 + adds r6, r2, r1 + ldrb r1, [r5, 0x1] + adds r2, r1, 0 + muls r2, r0 + ldrb r1, [r4, 0x1] + muls r1, r3 + adds r2, r1 + ldrb r1, [r5, 0x2] + muls r1, r0 + ldrb r0, [r4, 0x2] + muls r0, r3 + adds r0, r1, r0 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r1, r0, 7 + adds r0, r2, 0 + asrs r0, 8 + ands r0, r3 + lsls r2, r0, 2 + orrs r2, r1 + adds r0, r6, 0 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r2, r0 + mov r0, sp + strh r2, [r0] +_08004024: + adds r0, r7, 0 + mov r1, sp + bl SetBGPaletteBufferColor + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8003F60 + + thumb_func_start sub_8004034 +sub_8004034: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r2, _0800409C + adds r1, r2 + ldrh r2, [r1, 0x2] + mov r8, r2 + ldr r5, [r1, 0x8] + lsls r0, 20 + lsrs r0, 16 + mov r10, r0 + lsls r1, r0, 2 + ldr r0, _080040A0 + adds r4, r1, r0 + cmp r2, 0xFF + bls _080040A4 + movs r7, 0 + movs r5, 0xF8 +_08004068: + ldrb r0, [r4, 0x2] + adds r1, r5, 0 + ands r1, r0 + lsls r1, 7 + ldrb r2, [r4, 0x1] + adds r0, r5, 0 + ands r0, r2 + lsls r0, 2 + orrs r1, r0 + ldrb r2, [r4] + adds r0, r5, 0 + ands r0, r2 + lsrs r0, 3 + orrs r0, r1 + mov r1, sp + strh r0, [r1] + mov r1, r10 + adds r0, r1, r7 + mov r1, sp + bl SetBGPaletteBufferColor + adds r4, 0x4 + adds r7, 0x1 + cmp r7, 0xF + ble _08004068 + b _0800415E + .align 2, 0 +_0800409C: .4byte gUnknown_3000C00 +_080040A0: .4byte gUnknown_3000400 +_080040A4: + mov r2, r8 + cmp r2, 0 + bne _080040E2 + movs r7, 0 + mov r6, sp + movs r4, 0xF8 +_080040B0: + ldrb r0, [r5, 0x2] + adds r1, r4, 0 + ands r1, r0 + lsls r1, 7 + ldrb r2, [r5, 0x1] + adds r0, r4, 0 + ands r0, r2 + lsls r0, 2 + orrs r1, r0 + ldrb r2, [r5] + adds r0, r4, 0 + ands r0, r2 + lsrs r0, 3 + orrs r0, r1 + strh r0, [r6] + mov r1, r10 + adds r0, r1, r7 + mov r1, sp + bl SetBGPaletteBufferColor + adds r5, 0x4 + adds r7, 0x1 + cmp r7, 0xF + ble _080040B0 + b _0800415E +_080040E2: + movs r2, 0x80 + lsls r2, 1 + adds r0, r2, 0 + mov r1, r8 + subs r0, r1 + lsls r0, 16 + lsrs r0, 16 + mov r9, r0 + movs r7, 0 + mov r2, sp + str r2, [sp, 0x4] +_080040F8: + ldrb r0, [r5] + mov r1, r9 + muls r1, r0 + ldrb r0, [r4] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r1, r0 + mov r12, r1 + ldrb r0, [r5, 0x1] + mov r1, r9 + muls r1, r0 + ldrb r0, [r4, 0x1] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r6, r1, r0 + ldrb r0, [r5, 0x2] + mov r1, r9 + muls r1, r0 + ldrb r0, [r4, 0x2] + mov r2, r8 + muls r2, r0 + adds r0, r2, 0 + adds r0, r1, r0 + asrs r0, 8 + movs r3, 0xF8 + ands r0, r3 + lsls r2, r0, 7 + adds r0, r6, 0 + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 2 + orrs r1, r2 + mov r0, r12 + asrs r0, 8 + ands r0, r3 + lsrs r0, 3 + orrs r1, r0 + ldr r0, [sp, 0x4] + strh r1, [r0] + mov r1, r10 + adds r0, r1, r7 + mov r1, sp + bl SetBGPaletteBufferColor + adds r4, 0x4 + adds r5, 0x4 + adds r7, 0x1 + cmp r7, 0xF + ble _080040F8 +_0800415E: + add sp, 0x8 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004034 + + thumb_func_start sub_8004170 +sub_8004170: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r0, _080041C4 + adds r1, r0 + ldrh r2, [r1, 0x2] + adds r4, r2, 0 + ldr r0, [r1, 0x4] + str r0, [sp] + mov r0, r9 + lsls r1, r0, 2 + ldr r0, _080041C8 + adds r6, r1, r0 + cmp r2, 0xFF + bls _080041CC + ldrb r0, [r6, 0x2] + movs r1, 0xF8 + adds r2, r1, 0 + ands r2, r0 + lsls r2, 7 + ldrb r3, [r6, 0x1] + adds r0, r1, 0 + ands r0, r3 + lsls r0, 2 + orrs r2, r0 + ldrb r0, [r6] + ands r1, r0 + lsrs r1, 3 + orrs r1, r2 + add r0, sp, 0x4 + strh r1, [r0] + b _0800424C + .align 2, 0 +_080041C4: .4byte gUnknown_3000C00 +_080041C8: .4byte gUnknown_3000400 +_080041CC: + mov r0, sp + ldrb r1, [r0] + movs r3, 0xFF + subs r0, r3, r1 + muls r0, r2 + cmp r0, 0 + bge _080041DC + adds r0, 0xFF +_080041DC: + asrs r0, 8 + adds r0, r1, r0 + lsls r0, 16 + lsrs r0, 16 + mov r8, r0 + mov r0, sp + ldrb r1, [r0, 0x1] + subs r0, r3, r1 + muls r0, r2 + cmp r0, 0 + bge _080041F4 + adds r0, 0xFF +_080041F4: + asrs r0, 8 + adds r0, r1, r0 + lsls r0, 16 + lsrs r7, r0, 16 + mov r0, sp + ldrb r1, [r0, 0x2] + subs r0, r3, r1 + muls r0, r4 + cmp r0, 0 + bge _0800420A + adds r0, 0xFF +_0800420A: + asrs r0, 8 + adds r0, r1, r0 + lsls r0, 16 + lsrs r0, 16 + ldrb r1, [r6, 0x2] + muls r0, r1 + movs r1, 0xFF + bl __divsi3 + adds r4, r0, 0 + movs r5, 0xF8 + ands r4, r5 + lsls r4, 7 + ldrb r0, [r6, 0x1] + muls r0, r7 + movs r1, 0xFF + bl __divsi3 + ands r0, r5 + lsls r0, 2 + orrs r4, r0 + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0xFF + bl __divsi3 + ands r0, r5 + lsrs r0, 3 + orrs r4, r0 + add r0, sp, 0x4 + strh r4, [r0] +_0800424C: + adds r1, r0, 0 + mov r0, r9 + bl SetBGPaletteBufferColor + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004170 + + thumb_func_start sub_8004264 +sub_8004264: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r2, _080042CC + adds r1, r2 + ldrh r2, [r1, 0x2] + ldr r1, [r1, 0x4] + str r1, [sp] + lsls r0, 20 + lsrs r0, 16 + mov r9, r0 + lsls r1, r0, 2 + ldr r0, _080042D0 + adds r5, r1, r0 + cmp r2, 0xFF + bls _080042D4 + movs r6, 0 + movs r7, 0xF8 + add r4, sp, 0x4 +_0800429A: + ldrb r0, [r5, 0x2] + adds r1, r7, 0 + ands r1, r0 + lsls r1, 7 + ldrb r2, [r5, 0x1] + adds r0, r7, 0 + ands r0, r2 + lsls r0, 2 + orrs r1, r0 + ldrb r2, [r5] + adds r0, r7, 0 + ands r0, r2 + lsrs r0, 3 + orrs r0, r1 + strh r0, [r4] + mov r1, r9 + adds r0, r1, r6 + adds r1, r4, 0 + bl SetBGPaletteBufferColor + adds r5, 0x4 + adds r6, 0x1 + cmp r6, 0xF + ble _0800429A + b _08004378 + .align 2, 0 +_080042CC: .4byte gUnknown_3000C00 +_080042D0: .4byte gUnknown_3000400 +_080042D4: + mov r0, sp + ldrb r1, [r0] + movs r3, 0xFF + subs r0, r3, r1 + muls r0, r2 + cmp r0, 0 + bge _080042E4 + adds r0, 0xFF +_080042E4: + asrs r0, 8 + adds r0, r1, r0 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0x8] + mov r0, sp + ldrb r1, [r0, 0x1] + subs r0, r3, r1 + muls r0, r2 + cmp r0, 0 + bge _080042FC + adds r0, 0xFF +_080042FC: + asrs r0, 8 + adds r0, r1, r0 + lsls r0, 16 + lsrs r0, 16 + str r0, [sp, 0xC] + mov r0, sp + ldrb r1, [r0, 0x2] + subs r0, r3, r1 + muls r0, r2 + cmp r0, 0 + bge _08004314 + adds r0, 0xFF +_08004314: + asrs r0, 8 + adds r0, r1, r0 + lsls r0, 16 + lsrs r0, 16 + mov r10, r0 + movs r6, 0 + add r7, sp, 0x4 + movs r0, 0xF8 + mov r8, r0 +_08004326: + ldrb r0, [r5, 0x2] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0xFF + bl __divsi3 + adds r4, r0, 0 + mov r0, r8 + ands r4, r0 + lsls r4, 7 + ldrb r0, [r5, 0x1] + ldr r1, [sp, 0xC] + muls r0, r1 + movs r1, 0xFF + bl __divsi3 + mov r1, r8 + ands r0, r1 + lsls r0, 2 + orrs r4, r0 + ldrb r0, [r5] + ldr r1, [sp, 0x8] + muls r0, r1 + movs r1, 0xFF + bl __divsi3 + mov r1, r8 + ands r0, r1 + lsrs r0, 3 + orrs r4, r0 + strh r4, [r7] + mov r1, r9 + adds r0, r1, r6 + adds r1, r7, 0 + bl SetBGPaletteBufferColor + adds r5, 0x4 + adds r6, 0x1 + cmp r6, 0xF + ble _08004326 +_08004378: + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8004264 + + thumb_func_start sub_8004388 +sub_8004388: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0x8 + lsls r0, 16 + lsrs r0, 16 + lsls r1, 16 + lsrs r1, 16 + mov r9, r1 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r0, _0800442C + adds r1, r0 + ldrh r2, [r1, 0x2] + ldr r0, [r1, 0x4] + str r0, [sp] + mov r0, r9 + lsls r1, r0, 2 + ldr r0, _08004430 + adds r6, r1, r0 + cmp r2, 0xFF + bls _080043BC + movs r2, 0x80 + lsls r2, 1 +_080043BC: + mov r0, sp + ldrb r0, [r0] + muls r0, r2 + lsls r0, 8 + lsrs r0, 16 + mov r8, r0 + mov r0, sp + ldrb r0, [r0, 0x1] + muls r0, r2 + lsls r0, 8 + lsrs r7, r0, 16 + mov r0, sp + ldrb r0, [r0, 0x2] + muls r0, r2 + lsls r0, 8 + lsrs r0, 16 + ldrb r1, [r6, 0x2] + muls r0, r1 + movs r1, 0xFF + bl __divsi3 + adds r4, r0, 0 + movs r5, 0xF8 + ands r4, r5 + lsls r4, 7 + ldrb r0, [r6, 0x1] + muls r0, r7 + movs r1, 0xFF + bl __divsi3 + ands r0, r5 + lsls r0, 2 + orrs r4, r0 + ldrb r0, [r6] + mov r1, r8 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0xFF + bl __divsi3 + ands r0, r5 + lsrs r0, 3 + orrs r4, r0 + add r1, sp, 0x4 + strh r4, [r1] + mov r0, r9 + bl SetBGPaletteBufferColor + add sp, 0x8 + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800442C: .4byte gUnknown_3000C00 +_08004430: .4byte gUnknown_3000400 + thumb_func_end sub_8004388 + + thumb_func_start sub_8004434 +sub_8004434: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x10 + lsls r0, 16 + lsrs r0, 16 + lsls r1, r0, 2 + adds r1, r0 + lsls r1, 2 + ldr r2, _080044F8 + adds r1, r2 + ldrh r2, [r1, 0x2] + ldr r1, [r1, 0x4] + str r1, [sp] + lsls r0, 20 + lsrs r0, 16 + mov r9, r0 + lsls r1, r0, 2 + ldr r0, _080044FC + adds r5, r1, r0 + cmp r2, 0xFF + bls _08004468 + movs r2, 0x80 + lsls r2, 1 +_08004468: + mov r0, sp + ldrb r0, [r0] + muls r0, r2 + lsls r0, 8 + lsrs r0, 16 + str r0, [sp, 0x8] + mov r0, sp + ldrb r0, [r0, 0x1] + muls r0, r2 + lsls r0, 8 + lsrs r0, 16 + str r0, [sp, 0xC] + mov r0, sp + ldrb r0, [r0, 0x2] + muls r0, r2 + lsls r0, 8 + lsrs r0, 16 + mov r10, r0 + movs r6, 0 + movs r0, 0xF8 + mov r8, r0 + add r7, sp, 0x4 +_08004494: + ldrb r0, [r5, 0x2] + mov r1, r10 + muls r1, r0 + adds r0, r1, 0 + movs r1, 0xFF + bl __divsi3 + adds r4, r0, 0 + mov r0, r8 + ands r4, r0 + lsls r4, 7 + ldrb r0, [r5, 0x1] + ldr r1, [sp, 0xC] + muls r0, r1 + movs r1, 0xFF + bl __divsi3 + mov r1, r8 + ands r0, r1 + lsls r0, 2 + orrs r4, r0 + ldrb r0, [r5] + ldr r1, [sp, 0x8] + muls r0, r1 + movs r1, 0xFF + bl __divsi3 + mov r1, r8 + ands r0, r1 + lsrs r0, 3 + orrs r4, r0 + strh r4, [r7] + mov r1, r9 + adds r0, r1, r6 + adds r1, r7, 0 + bl SetBGPaletteBufferColor + adds r5, 0x4 + adds r6, 0x1 + cmp r6, 0xF + ble _08004494 + add sp, 0x10 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080044F8: .4byte gUnknown_3000C00 +_080044FC: .4byte gUnknown_3000400 + thumb_func_end sub_8004434 + + thumb_func_start sub_8004500 +sub_8004500: + ldr r1, _08004514 + ldrh r2, [r1] + movs r0, 0x6D + muls r0, r2 + ldr r2, _08004518 + adds r0, r2 + strh r0, [r1] + ldrh r0, [r1] + bx lr + .align 2, 0 +_08004514: .4byte gUnknown_203B070 +_08004518: .4byte 0x000003fd + thumb_func_end sub_8004500 + + thumb_func_start sub_800451C +sub_800451C: + push {r4,lr} + adds r4, r0, 0 + bl sub_8004500 + muls r0, r4 + asrs r0, 16 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_800451C + + thumb_func_start sub_8004530 +sub_8004530: + push {r4,lr} + adds r4, r0, 0 + subs r0, r1, r4 + bl sub_800451C + adds r0, r4 + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8004530 + + thumb_func_start sub_8004544 +sub_8004544: + push {r4,r5,lr} + adds r3, r0, 0 + subs r4, r1, 0x1 + adds r2, r3, r4 + movs r5, 0 + cmp r5, r4 + bge _08004566 +_08004552: + ldrb r1, [r3] + ldrb r0, [r2] + strb r0, [r3] + adds r3, 0x1 + strb r1, [r2] + subs r2, 0x1 + adds r5, 0x1 + subs r4, 0x1 + cmp r5, r4 + blt _08004552 +_08004566: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8004544 + + thumb_func_start sub_800456C +sub_800456C: + push {r4-r7,lr} + adds r4, r1, 0 + cmp r4, 0 + ble _08004578 + movs r7, 0x1 + b _0800457E +_08004578: + negs r4, r4 + movs r7, 0x1 + negs r7, r7 +_0800457E: + cmp r2, 0 + ble _080045A0 + adds r6, r0, 0 + adds r5, r2, 0 +_08004586: + adds r0, r4, 0 + movs r1, 0xA + bl __modsi3 + stm r6!, {r0} + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + adds r4, r0, 0 + subs r5, 0x1 + cmp r5, 0 + bne _08004586 +_080045A0: + adds r0, r7, 0 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_800456C + + thumb_func_start sub_80045A8 +sub_80045A8: + push {r4,r5,lr} + adds r4, r0, 0 + adds r5, r1, 0 + ldm r4!, {r1} + movs r3, 0xA + cmp r2, 0x1 + ble _080045CA + subs r2, 0x1 +_080045B8: + ldm r4!, {r0} + muls r0, r3 + adds r1, r0 + subs r2, 0x1 + lsls r0, r3, 2 + adds r0, r3 + lsls r3, r0, 1 + cmp r2, 0 + bne _080045B8 +_080045CA: + adds r0, r1, 0 + cmp r5, 0 + bge _080045D2 + negs r0, r0 +_080045D2: + pop {r4,r5} + pop {r1} + bx r1 + thumb_func_end sub_80045A8 + + thumb_func_start ConvertFromBCD +ConvertFromBCD: + push {r4,lr} + adds r1, r0, 0 + movs r2, 0x1 + movs r3, 0 + cmp r1, 0 + ble _080045FA + movs r4, 0xF +_080045E6: + adds r0, r1, 0 + ands r0, r4 + muls r0, r2 + adds r3, r0 + lsls r0, r2, 2 + adds r0, r2 + lsls r2, r0, 1 + asrs r1, 4 + cmp r1, 0 + bgt _080045E6 +_080045FA: + adds r0, r3, 0 + pop {r4} + pop {r1} + bx r1 + thumb_func_end ConvertFromBCD + + thumb_func_start ConvertToBCD +ConvertToBCD: + push {r4-r6,lr} + adds r4, r0, 0 + movs r5, 0 + movs r6, 0 + cmp r4, 0 + ble _0800462C +_08004610: + adds r0, r4, 0 + movs r1, 0xA + bl __modsi3 + lsls r0, r5 + adds r6, r0 + adds r5, 0x4 + adds r0, r4, 0 + movs r1, 0xA + bl __divsi3 + adds r4, r0, 0 + cmp r4, 0 + bgt _08004610 +_0800462C: + adds r0, r6, 0 + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end ConvertToBCD + + thumb_func_start InitBGPaletteBuffer +InitBGPaletteBuffer: + push {lr} + movs r2, 0 + ldr r1, _0800465C + movs r0, 0x80 + lsls r0, 2 +_0800463E: + strh r2, [r1] + adds r1, 0x2 + subs r0, 0x1 + cmp r0, 0 + bne _0800463E + ldr r1, _08004660 + movs r2, 0x1 + adds r0, r1, 0 + adds r0, 0x1F +_08004650: + strb r2, [r0] + subs r0, 0x1 + cmp r0, r1 + bge _08004650 + pop {r0} + bx r0 + .align 2, 0 +_0800465C: .4byte gUnknown_20251F0 +_08004660: .4byte gUnknown_20251D0 + thumb_func_end InitBGPaletteBuffer + + thumb_func_start SetBGPaletteBufferColorRGB +SetBGPaletteBufferColorRGB: + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + cmp r2, 0 + bge _08004670 + movs r2, 0 +_08004670: + cmp r2, 0x1F + ble _08004676 + movs r2, 0x1F +_08004676: + ldr r1, _080046CC + adds r0, r4, 0 + cmp r4, 0 + bge _08004680 + adds r0, 0xF +_08004680: + asrs r0, 4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + cmp r3, 0 + bne _080046D4 + ldr r0, _080046D0 + lsls r1, r4, 1 + adds r6, r1, r0 + ldrb r0, [r5, 0x2] + muls r0, r2 + cmp r0, 0 + bge _0800469C + adds r0, 0xFF +_0800469C: + asrs r0, 8 + movs r3, 0x1F + ands r0, r3 + lsls r4, r0, 10 + ldrb r0, [r5, 0x1] + muls r0, r2 + cmp r0, 0 + bge _080046AE + adds r0, 0xFF +_080046AE: + asrs r0, 8 + ands r0, r3 + lsls r1, r0, 5 + orrs r1, r4 + ldrb r0, [r5] + muls r0, r2 + cmp r0, 0 + bge _080046C0 + adds r0, 0xFF +_080046C0: + asrs r0, 8 + ands r0, r3 + orrs r1, r0 + strh r1, [r6] + b _08004722 + .align 2, 0 +_080046CC: .4byte gUnknown_20251D0 +_080046D0: .4byte gUnknown_20251F0 +_080046D4: + ldr r1, _08004728 + lsls r0, r4, 1 + adds r7, r0, r1 + ldrb r0, [r5, 0x2] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x2] + muls r0, r2 + cmp r0, 0 + bge _080046EA + adds r0, 0xFF +_080046EA: + asrs r0, 8 + movs r4, 0x1F + ands r0, r4 + lsls r6, r0, 10 + ldrb r0, [r5, 0x1] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0, 0x1] + muls r0, r2 + cmp r0, 0 + bge _08004702 + adds r0, 0xFF +_08004702: + asrs r0, 8 + ands r0, r4 + lsls r1, r0, 5 + orrs r1, r6 + ldrb r0, [r5] + lsls r0, 2 + adds r0, r3 + ldrb r0, [r0] + muls r0, r2 + cmp r0, 0 + bge _0800471A + adds r0, 0xFF +_0800471A: + asrs r0, 8 + ands r0, r4 + orrs r1, r0 + strh r1, [r7] +_08004722: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08004728: .4byte gUnknown_20251F0 + thumb_func_end SetBGPaletteBufferColorRGB + + thumb_func_start SetBGPaletteBufferColorArray +SetBGPaletteBufferColorArray: + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldr r1, _08004764 + cmp r2, 0 + bge _0800473A + adds r0, 0xF +_0800473A: + asrs r0, 4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r0, _08004768 + lsls r2, 1 + adds r2, r0 + ldrb r1, [r3, 0x2] + lsrs r1, 3 + lsls r1, 10 + ldrb r0, [r3, 0x1] + lsrs r0, 3 + lsls r0, 5 + orrs r1, r0 + ldrb r0, [r3] + lsrs r0, 3 + orrs r0, r1 + strh r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_08004764: .4byte gUnknown_20251D0 +_08004768: .4byte gUnknown_20251F0 + thumb_func_end SetBGPaletteBufferColorArray + + thumb_func_start SetBGPaletteBufferColor +SetBGPaletteBufferColor: + push {lr} + adds r2, r0, 0 + adds r3, r1, 0 + ldr r1, _08004790 + cmp r2, 0 + bge _0800477A + adds r0, 0xF +_0800477A: + asrs r0, 4 + adds r0, r1 + movs r1, 0x1 + strb r1, [r0] + ldr r1, _08004794 + lsls r0, r2, 1 + adds r0, r1 + ldrh r1, [r3] + strh r1, [r0] + pop {r0} + bx r0 + .align 2, 0 +_08004790: .4byte gUnknown_20251D0 +_08004794: .4byte gUnknown_20251F0 + thumb_func_end SetBGPaletteBufferColor + + thumb_func_start nullsub_4 +nullsub_4: + bx lr + thumb_func_end nullsub_4 + + thumb_func_start nullsub_5 +nullsub_5: + bx lr + thumb_func_end nullsub_5 + + thumb_func_start nullsub_143 +nullsub_143: + bx lr + thumb_func_end nullsub_143 + + thumb_func_start TransferBGPaletteBuffer +TransferBGPaletteBuffer: + push {r4-r6,lr} + movs r6, 0 + movs r4, 0 + movs r5, 0xA0 + lsls r5, 19 +_080047AE: + ldr r0, _080047DC + adds r1, r6, r0 + ldrb r0, [r1] + cmp r0, 0 + beq _080047CA + movs r0, 0 + strb r0, [r1] + lsls r1, r4, 1 + ldr r0, _080047E0 + adds r1, r0 + adds r0, r5, 0 + movs r2, 0x20 + bl CpuCopy +_080047CA: + adds r6, 0x1 + adds r5, 0x20 + adds r4, 0x10 + ldr r0, _080047E4 + cmp r4, r0 + ble _080047AE + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080047DC: .4byte gUnknown_20251D0 +_080047E0: .4byte gUnknown_20251F0 +_080047E4: .4byte 0x000001ff + thumb_func_end TransferBGPaletteBuffer + + thumb_func_start sub_80047E8 +sub_80047E8: + ldr r0, _08004840 + movs r3, 0 + movs r2, 0 + strh r2, [r0] + strh r2, [r0, 0x2] + strh r2, [r0, 0x4] + strh r2, [r0, 0x6] + ldr r0, _08004844 + strh r2, [r0] + strh r2, [r0, 0x2] + strh r2, [r0, 0x4] + strh r2, [r0, 0x6] + ldr r1, _08004848 + ldr r0, _0800484C + str r0, [r1] + ldr r0, _08004850 + str r2, [r0, 0x20] + ldr r1, _08004854 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x1C] + strh r1, [r0, 0x1E] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r3, [r1] + adds r0, 0x29 + strb r3, [r0] + ldr r0, _08004858 + strh r2, [r0] + strh r2, [r0, 0x2] + bx lr + .align 2, 0 +_08004840: .4byte gUnknown_20255F0 +_08004844: .4byte gUnknown_2025638 +_08004848: .4byte gUnknown_202562C +_0800484C: .4byte 0x004a14c1 +_08004850: .4byte gUnknown_2025600 +_08004854: .4byte 0x0000ffff +_08004858: .4byte gUnknown_2025668 + thumb_func_end sub_80047E8 + + thumb_func_start sub_800485C +sub_800485C: + push {r4,r5,lr} + ldr r2, _080048A8 + ldr r1, _080048AC + adds r0, r2, 0 + ldm r0!, {r3-r5} + stm r1!, {r3-r5} + ldr r0, [r0] + str r0, [r1] + movs r3, 0 + movs r0, 0 + strh r0, [r2] + strh r0, [r2, 0x2] + strh r0, [r2, 0x4] + strh r0, [r2, 0x6] + ldr r0, _080048B0 + ldr r1, _080048B4 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r3, [r1] + adds r0, 0x29 + strb r3, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_080048A8: .4byte gUnknown_2025638 +_080048AC: .4byte gUnknown_20255F0 +_080048B0: .4byte gUnknown_2025600 +_080048B4: .4byte 0x0000ffff + thumb_func_end sub_800485C + + thumb_func_start sub_80048B8 +sub_80048B8: + movs r0, 0 + bx lr + thumb_func_end sub_80048B8 + + thumb_func_start sub_80048BC +sub_80048BC: + movs r0, 0 + bx lr + thumb_func_end sub_80048BC + + thumb_func_start sub_80048C0 +sub_80048C0: + movs r0, 0 + bx lr + thumb_func_end sub_80048C0 + + thumb_func_start sub_80048C4 +sub_80048C4: + movs r0, 0 + bx lr + thumb_func_end sub_80048C4 + + thumb_func_start sub_80048C8 +sub_80048C8: + movs r0, 0 + bx lr + thumb_func_end sub_80048C8 + + thumb_func_start sub_80048CC +sub_80048CC: + movs r0, 0 + bx lr + thumb_func_end sub_80048CC + + thumb_func_start sub_80048D0 +sub_80048D0: + ldr r1, _080048E8 + movs r0, 0 + strh r0, [r1, 0x4] + ldr r1, _080048EC + str r0, [r1, 0xC] + strh r0, [r1, 0x8] + ldr r1, _080048F0 + ldr r0, _080048F4 + strh r0, [r1] + strh r0, [r1, 0x2] + bx lr + .align 2, 0 +_080048E8: .4byte gUnknown_20255F0 +_080048EC: .4byte gUnknown_2025648 +_080048F0: .4byte gUnknown_2025668 +_080048F4: .4byte 0x000003e7 + thumb_func_end sub_80048D0 + + thumb_func_start sub_80048F8 +sub_80048F8: + ldr r0, _08004908 + movs r1, 0 + strh r1, [r0, 0x2] + ldr r0, _0800490C + strh r1, [r0, 0x2] + ldr r0, _08004910 + strh r1, [r0, 0x2] + bx lr + .align 2, 0 +_08004908: .4byte gUnknown_20255F0 +_0800490C: .4byte gUnknown_2025638 +_08004910: .4byte gUnknown_2025648 + thumb_func_end sub_80048F8 + + thumb_func_start sub_8004914 +sub_8004914: + ldr r0, _0800494C + movs r1, 0x5 + str r1, [r0, 0x20] + movs r2, 0 + movs r1, 0 + strh r1, [r0, 0x24] + ldr r1, _08004950 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + strh r1, [r0, 0xC] + strh r1, [r0, 0xE] + strh r1, [r0, 0x10] + strh r1, [r0, 0x12] + strh r1, [r0, 0x14] + strh r1, [r0, 0x16] + adds r1, r0, 0 + adds r1, 0x28 + strb r2, [r1] + adds r0, 0x29 + strb r2, [r0] + bx lr + .align 2, 0 +_0800494C: .4byte gUnknown_2025600 +_08004950: .4byte 0x0000ffff + thumb_func_end sub_8004914 + + thumb_func_start UpdateInput +UpdateInput: + push {r4-r6,lr} + ldr r4, _08004998 + ldr r5, _0800499C + adds r1, r4, 0 + adds r0, r5, 0 + ldm r0!, {r2,r3,r6} + stm r1!, {r2,r3,r6} + ldr r0, [r0] + str r0, [r1] + adds r0, r5, 0 + bl ReadKeyInput + ldrh r0, [r4] + ldrh r3, [r5] + eors r0, r3 + ands r0, r3 + strh r0, [r5, 0x2] + lsls r0, r3, 16 + lsrs r0, 16 + cmp r0, 0 + beq _080049A8 + ldrh r1, [r5, 0x8] + movs r0, 0xF0 + adds r2, r0, 0 + ands r2, r3 + ands r0, r1 + cmp r0, r2 + bne _080049A0 + ldr r0, [r5, 0xC] + cmp r0, 0x31 + bgt _080049AC + adds r0, 0x1 + str r0, [r5, 0xC] + b _080049AC + .align 2, 0 +_08004998: .4byte gUnknown_2025658 +_0800499C: .4byte gUnknown_2025648 +_080049A0: + strh r2, [r5, 0x8] + movs r0, 0x1 + str r0, [r5, 0xC] + b _080049AC +_080049A8: + str r0, [r5, 0xC] + strh r0, [r5, 0x8] +_080049AC: + ldr r0, _080049C4 + ldr r2, [r0, 0xC] + adds r3, r0, 0 + cmp r2, 0x1 + bne _080049C8 + ldrh r0, [r3, 0x8] + movs r1, 0xF0 + ands r1, r0 + ldrh r0, [r3, 0x2] + orrs r1, r0 + strh r1, [r3, 0x4] + b _080049E0 + .align 2, 0 +_080049C4: .4byte gUnknown_2025648 +_080049C8: + cmp r2, 0x30 + bne _080049DC + movs r0, 0x2B + str r0, [r3, 0xC] + ldrh r1, [r3, 0x8] + movs r0, 0xF0 + ands r0, r1 + ldrh r1, [r3, 0x2] + orrs r0, r1 + b _080049DE +_080049DC: + movs r0, 0 +_080049DE: + strh r0, [r3, 0x4] +_080049E0: + movs r0, 0 + strh r0, [r3, 0x6] + ldrh r1, [r3] + movs r5, 0x2 + adds r0, r5, 0 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08004A0C + ldr r0, _08004A08 + ldrh r2, [r0] + movs r4, 0 + ldrsh r1, [r0, r4] + adds r4, r0, 0 + cmp r1, 0x63 + bgt _08004A20 + adds r0, r2, 0x1 + strh r0, [r4] + b _08004A20 + .align 2, 0 +_08004A08: .4byte gUnknown_2025668 +_08004A0C: + ldr r1, _08004A44 + ldrh r0, [r1] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + adds r4, r1, 0 + cmp r0, 0x9 + bhi _08004A1E + strh r5, [r3, 0x6] +_08004A1E: + strh r2, [r4] +_08004A20: + ldrh r1, [r3] + movs r5, 0x80 + lsls r5, 1 + adds r0, r5, 0 + ands r0, r1 + lsls r0, 16 + lsrs r2, r0, 16 + cmp r2, 0 + beq _08004A48 + ldrh r1, [r4, 0x2] + movs r6, 0x2 + ldrsh r0, [r4, r6] + cmp r0, 0x63 + bgt _08004A5E + adds r0, r1, 0x1 + strh r0, [r4, 0x2] + b _08004A5E + .align 2, 0 +_08004A44: .4byte gUnknown_2025668 +_08004A48: + ldrh r0, [r4, 0x2] + subs r0, 0x2 + lsls r0, 16 + lsrs r0, 16 + cmp r0, 0x9 + bhi _08004A5C + ldrh r1, [r3, 0x6] + adds r0, r5, 0 + orrs r0, r1 + strh r0, [r3, 0x6] +_08004A5C: + strh r2, [r4, 0x2] +_08004A5E: + ldr r2, _08004A94 + ldrh r0, [r2] + ldrh r1, [r3] + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r2, 0x2] + ldrh r1, [r3, 0x2] + orrs r0, r1 + strh r0, [r2, 0x2] + ldrh r0, [r2, 0x4] + ldrh r1, [r3, 0x4] + orrs r0, r1 + strh r0, [r2, 0x4] + ldrh r0, [r2, 0x6] + ldrh r1, [r3, 0x6] + orrs r0, r1 + strh r0, [r2, 0x6] + ldr r2, _08004A98 + ldrh r0, [r3] + ldr r1, _08004A9C + orrs r0, r1 + ldr r1, [r2] + muls r0, r1 + str r0, [r2] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08004A94: .4byte gUnknown_2025638 +_08004A98: .4byte gUnknown_202562C +_08004A9C: .4byte 0x054a1c41 + thumb_func_end UpdateInput + + thumb_func_start nullsub_6 +nullsub_6: + bx lr + thumb_func_end nullsub_6 + + thumb_func_start sub_8004AA4 +sub_8004AA4: + push {r4,r5,lr} + adds r3, r0, 0 + ldr r4, [r1, 0x4] + cmp r2, 0 + ble _08004AE8 +_08004AAE: + ldm r4!, {r1} + movs r5, 0 + ldrsh r0, [r1, r5] + cmp r0, 0 + beq _08004ADE + movs r0, 0x80 + lsls r0, 24 + str r0, [r3] + ldrh r0, [r1, 0x2] + strh r0, [r3, 0x6] + ldrh r0, [r1, 0x2] + strh r0, [r3, 0x4] + adds r0, r1, 0x4 + str r0, [r3, 0x8] + str r0, [r3, 0xC] + movs r5, 0 + ldrsh r0, [r1, r5] + lsls r0, 2 + adds r0, 0x4 + adds r0, r1, r0 + str r0, [r3, 0x10] + ldr r0, [r1, 0x4] + str r0, [r3, 0x14] + b _08004AE0 +_08004ADE: + str r0, [r3] +_08004AE0: + adds r3, 0x18 + subs r2, 0x1 + cmp r2, 0 + bne _08004AAE +_08004AE8: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8004AA4 + + thumb_func_start sub_8004AF0 +sub_8004AF0: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r7, 0 + cmp r7, r3 + bge _08004B6A + adds r5, r3, 0 +_08004B08: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004B60 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004B60 + mov r1, r8 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004B4E + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004B42 + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004B42: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r1, 0x1 + movs r7, 0x1 +_08004B4E: + cmp r1, 0 + beq _08004B60 + adds r1, r4, 0 + adds r1, 0x14 + adds r0, r6, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl SetBGPaletteBufferColorRGB +_08004B60: + subs r5, 0x1 + adds r4, 0x18 + adds r6, 0x1 + cmp r5, 0 + bne _08004B08 +_08004B6A: + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8004AF0 + + thumb_func_start sub_8004B78 +sub_8004B78: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r1, 0 + adds r6, r2, 0 + lsls r0, 24 + lsrs r0, 24 + mov r8, r0 + movs r7, 0 + cmp r7, r3 + bge _08004BF2 + adds r5, r3, 0 +_08004B90: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004BE8 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004BE8 + mov r1, r8 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004BD6 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004BCA + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004BCA: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r1, 0x1 + movs r7, 0x1 +_08004BD6: + cmp r1, 0 + beq _08004BE8 + adds r1, r4, 0 + adds r1, 0x14 + adds r0, r6, 0 + ldr r2, [sp, 0x18] + ldr r3, [sp, 0x1C] + bl nullsub_4 +_08004BE8: + subs r5, 0x1 + adds r4, 0x18 + adds r6, 0x1 + cmp r5, 0 + bne _08004B90 +_08004BF2: + adds r0, r7, 0 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end sub_8004B78 + + thumb_func_start sub_8004C00 +sub_8004C00: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x4 + adds r4, r0, 0 + adds r7, r1, 0 + mov r10, r3 + ldr r0, [sp, 0x28] + mov r8, r0 + movs r1, 0 + mov r9, r1 + cmp r9, r2 + bge _08004CDC + adds r6, r2, 0 +_08004C20: + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D14 + lsls r0, 24 + cmp r0, 0 + beq _08004CD2 + adds r0, r4, 0 + movs r1, 0x1 + bl sub_8004D40 + lsls r0, 24 + cmp r0, 0 + bne _08004CD2 + ldrh r0, [r4, 0x6] + subs r0, 0x1 + strh r0, [r4, 0x6] + lsls r0, 16 + cmp r0, 0 + bgt _08004C64 + ldrh r0, [r4, 0x4] + strh r0, [r4, 0x6] + ldr r1, [r4, 0xC] + ldr r0, [r4, 0x10] + cmp r1, r0 + bcc _08004C58 + ldr r0, [r4, 0x8] + str r0, [r4, 0xC] +_08004C58: + ldr r1, [r4, 0xC] + ldm r1!, {r0} + str r0, [r4, 0x14] + str r1, [r4, 0xC] + movs r2, 0x1 + mov r9, r2 +_08004C64: + mov r3, r8 + movs r5, 0 + ldrsh r0, [r3, r5] + ldrb r2, [r4, 0x14] + adds r1, r0, r2 + movs r5, 0x2 + ldrsh r0, [r3, r5] + ldrb r2, [r4, 0x15] + adds r3, r0, r2 + mov r5, r8 + movs r2, 0x4 + ldrsh r0, [r5, r2] + ldrb r2, [r4, 0x16] + adds r5, r0, r2 + cmp r1, 0xFF + ble _08004C86 + movs r1, 0xFF +_08004C86: + cmp r3, 0xFF + ble _08004C8C + movs r3, 0xFF +_08004C8C: + cmp r5, 0xFF + ble _08004C92 + movs r5, 0xFF +_08004C92: + cmp r1, 0 + bge _08004C98 + movs r1, 0 +_08004C98: + cmp r3, 0 + bge _08004C9E + movs r3, 0 +_08004C9E: + cmp r5, 0 + bge _08004CA4 + movs r5, 0 +_08004CA4: + lsls r1, 24 + lsrs r1, 24 + ldr r2, _08004CF0 + ldr r0, [sp] + ands r0, r2 + orrs r0, r1 + lsls r2, r3, 24 + lsrs r2, 16 + ldr r1, _08004CF4 + ands r0, r1 + orrs r0, r2 + lsls r2, r5, 24 + lsrs r2, 8 + ldr r1, _08004CF8 + ands r0, r1 + orrs r0, r2 + str r0, [sp] + adds r0, r7, 0 + mov r1, sp + mov r2, r10 + ldr r3, [sp, 0x24] + bl SetBGPaletteBufferColorRGB +_08004CD2: + subs r6, 0x1 + adds r4, 0x18 + adds r7, 0x1 + cmp r6, 0 + bne _08004C20 +_08004CDC: + mov r0, r9 + add sp, 0x4 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + .align 2, 0 +_08004CF0: .4byte 0xffffff00 +_08004CF4: .4byte 0xffff00ff +_08004CF8: .4byte 0xff00ffff + thumb_func_end sub_8004C00 + + thumb_func_start sub_8004CFC +sub_8004CFC: + push {lr} + cmp r1, 0 + ble _08004D0E + movs r2, 0 +_08004D04: + str r2, [r0] + adds r0, 0x18 + subs r1, 0x1 + cmp r1, 0 + bne _08004D04 +_08004D0E: + pop {r0} + bx r0 + thumb_func_end sub_8004CFC + + thumb_func_start sub_8004D14 +sub_8004D14: + push {r4,lr} + adds r2, r0, 0 + movs r3, 0 + cmp r3, r1 + bge _08004D36 + movs r4, 0x80 + lsls r4, 24 +_08004D22: + ldr r0, [r2] + ands r0, r4 + cmp r0, 0 + beq _08004D2E + movs r0, 0x1 + b _08004D38 +_08004D2E: + adds r2, 0x18 + adds r3, 0x1 + cmp r3, r1 + blt _08004D22 +_08004D36: + movs r0, 0 +_08004D38: + pop {r4} + pop {r1} + bx r1 + thumb_func_end sub_8004D14 + + thumb_func_start sub_8004D40 +sub_8004D40: + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + movs r1, 0 + cmp r1, r4 + bge _08004D70 + movs r6, 0x80 + lsls r6, 24 + movs r5, 0x80 + lsls r5, 22 +_08004D54: + ldr r2, [r3] + adds r0, r2, 0 + ands r0, r6 + cmp r0, 0 + beq _08004D6A + ands r2, r5 + cmp r2, 0 + bne _08004D68 + movs r0, 0 + b _08004D72 +_08004D68: + adds r3, 0x18 +_08004D6A: + adds r1, 0x1 + cmp r1, r4 + blt _08004D54 +_08004D70: + movs r0, 0x1 +_08004D72: + pop {r4-r6} + pop {r1} + bx r1 + thumb_func_end sub_8004D40 + + thumb_func_start sub_8004D78 +sub_8004D78: + push {lr} + movs r0, 0x1 + bl sub_8004D8C + movs r0, 0 + bl SetSavingIconCoords + pop {r0} + bx r0 + thumb_func_end sub_8004D78 + + thumb_func_start sub_8004D8C +sub_8004D8C: + push {r4,r5,lr} + lsls r0, 24 + lsrs r4, r0, 24 + ldr r1, _08004E68 + movs r0, 0 + str r0, [r1] + ldr r1, _08004E6C + ldr r0, _08004E70 + str r0, [r1] + ldr r1, _08004E74 + ldr r0, _08004E78 + str r0, [r1] + ldr r0, _08004E7C + adds r1, r0, 0 + adds r1, 0x8 + adds r5, r0, 0 + movs r2, 0 + movs r3, 0xF0 +_08004DB0: + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + str r1, [r0] + str r2, [r0, 0x4] + adds r0, 0x8 + adds r1, 0x8 + subs r3, 0x10 + cmp r3, 0 + bge _08004DB0 + cmp r4, 0 + beq _08004E50 + movs r2, 0 + ldr r1, _08004E80 + ldr r0, _08004E84 + movs r3, 0x7F +_08004E42: + str r2, [r0] + str r1, [r0, 0x4] + adds r1, 0x8 + adds r0, 0x8 + subs r3, 0x1 + cmp r3, 0 + bge _08004E42 +_08004E50: + movs r1, 0x80 + lsls r1, 4 + adds r0, r5, r1 + movs r1, 0 + str r1, [r0] + ldr r2, _08004E88 + adds r0, r5, r2 + str r1, [r0] + pop {r4,r5} + pop {r0} + bx r0 + .align 2, 0 +_08004E68: .4byte gUnknown_20266A8 +_08004E6C: .4byte gUnknown_2026E30 +_08004E70: .4byte 0x06010000 +_08004E74: .4byte gUnknown_203B074 +_08004E78: .4byte gUnknown_20266B0 +_08004E7C: .4byte gUnknown_20256A0 +_08004E80: .4byte gUnknown_20262A8 +_08004E84: .4byte gUnknown_2025EA8 +_08004E88: .4byte 0x00000804 + thumb_func_end sub_8004D8C + + thumb_func_start sub_8004E8C +sub_8004E8C: + ldr r1, _08004EA4 + strh r1, [r0] + movs r1, 0x1 + negs r1, r1 + strh r1, [r0, 0x2] + strh r1, [r0, 0x4] + movs r1, 0 + strh r1, [r0, 0x6] + strh r1, [r0, 0x8] + strh r1, [r0, 0xA] + bx lr + .align 2, 0 +_08004EA4: .4byte 0x0000ffff + thumb_func_end sub_8004E8C + + thumb_func_start sub_8004EA8 +sub_8004EA8: + push {r4-r7,lr} + mov r7, r9 + mov r6, r8 + push {r6,r7} + sub sp, 0xC + adds r5, r0, 0 + mov r8, r1 + adds r0, r2, 0 + adds r6, r3, 0 + cmp r0, 0 + beq _08004EC2 + bl sub_80052BC +_08004EC2: + ldr r0, _08004F40 + ldr r7, [r0] + mov r12, r0 + cmp r7, 0x7F + ble _08004ECE + b _08005082 +_08004ECE: + mov r2, sp + ldrh r0, [r5] + strh r0, [r2] + ldrh r0, [r5, 0x2] + strh r0, [r2, 0x2] + ldrh r4, [r5, 0x4] + ldr r0, _08004F44 + ands r0, r4 + strh r0, [r2, 0x4] + ldrh r3, [r5, 0x6] + ldr r0, _08004F48 + ands r0, r3 + strh r0, [r2, 0x6] + ldrh r0, [r5, 0x8] + strh r0, [r2, 0x8] + movs r1, 0xE0 + lsls r1, 4 + ands r1, r3 + lsrs r1, 9 + ldr r0, _08004F4C + ands r0, r4 + lsls r0, 4 + orrs r1, r0 + strh r1, [r2, 0xA] + lsls r1, r7, 3 + ldr r0, _08004F50 + adds r3, r1, r0 + mov r0, r8 + movs r2, 0x16 + ldrsh r1, [r0, r2] + mov r0, sp + ldrb r0, [r0, 0x3] + lsls r0, 24 + asrs r0, 24 + adds r7, r1, r0 + cmp r7, 0 + bge _08004F1A + movs r7, 0 +_08004F1A: + cmp r7, 0xFF + ble _08004F20 + movs r7, 0xFF +_08004F20: + cmp r6, 0 + bne _08004F54 + add r2, sp, 0x4 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + ldrh r0, [r2] + strh r0, [r3, 0x2] + adds r2, 0x2 + adds r1, r3, 0x4 + ldrh r0, [r2] + strh r0, [r1] + adds r2, 0x2 + ldrh r0, [r2] + strh r0, [r1, 0x2] + b _08004F86 + .align 2, 0 +_08004F40: .4byte gUnknown_20266A8 +_08004F44: .4byte 0x0000fcff +_08004F48: .4byte 0x0000f1ff +_08004F4C: .4byte 0x000003ff +_08004F50: .4byte gUnknown_20262A8 +_08004F54: + add r4, sp, 0x4 + ldrh r1, [r4] + ldrh r0, [r6] + ands r0, r1 + ldrh r1, [r6, 0x6] + orrs r0, r1 + strh r0, [r3] + adds r4, 0x2 + ldrh r1, [r4] + ldrh r0, [r6, 0x2] + ands r0, r1 + ldrh r1, [r6, 0x8] + orrs r0, r1 + strh r0, [r3, 0x2] + adds r4, 0x2 + adds r2, r3, 0x4 + ldrh r1, [r4] + ldrh r0, [r6, 0x4] + ands r0, r1 + ldrh r1, [r6, 0xA] + orrs r0, r1 + strh r0, [r2] + adds r4, 0x2 + ldrh r0, [r4] + strh r0, [r2, 0x2] +_08004F86: + mov r0, sp + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _08004FB0 + ldr r1, _08004FA8 + mov r0, sp + ldrb r0, [r0, 0x2] + lsls r0, 1 + adds r1, r0, r1 + movs r4, 0 + ldrsh r0, [r1, r4] + cmp r0, 0 + beq _08004FB0 + adds r1, r0, 0 + ldr r0, _08004FAC + ands r1, r0 + b _08004FC0 + .align 2, 0 +_08004FA8: .4byte gUnknown_2025672 +_08004FAC: .4byte 0x000003ff +_08004FB0: + ldrh r1, [r3, 0x4] + ldr r2, _08005090 + ands r1, r2 + mov r6, r8 + movs r4, 0x14 + ldrsh r0, [r6, r4] + adds r1, r0 + ands r1, r2 +_08004FC0: + ldrh r2, [r3, 0x4] + movs r0, 0xFC + lsls r0, 8 + ands r0, r2 + orrs r0, r1 + strh r0, [r3, 0x4] + ldrh r4, [r3, 0x2] + ldr r5, _08005094 + adds r2, r5, 0 + ands r2, r4 + ldr r6, _08005098 + adds r1, r2, r6 + mov r2, r8 + movs r6, 0 + ldrsh r0, [r2, r6] + adds r2, r1, r0 + movs r0, 0x40 + negs r0, r0 + mov r9, r0 + cmp r2, r9 + blt _08005082 + cmp r2, 0xEF + bgt _08005082 + ands r2, r5 + movs r0, 0xFE + lsls r0, 8 + ands r0, r4 + orrs r0, r2 + strh r0, [r3, 0x2] + ldrh r0, [r3, 0x6] + lsls r4, r0, 16 + ldr r1, _0800509C + adds r5, r1, 0 + lsrs r2, r4, 20 + ldr r6, _080050A0 + adds r1, r2, r6 + mov r2, r8 + movs r6, 0x2 + ldrsh r0, [r2, r6] + adds r2, r1, r0 + cmp r2, r9 + blt _08005082 + cmp r2, 0x9F + bgt _08005082 + movs r0, 0xFF + ands r2, r0 + ldrh r1, [r3] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + orrs r0, r2 + strh r0, [r3] + lsrs r0, r4, 17 + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08005044 + mov r0, r8 + ldrb r1, [r0, 0x1E] + movs r0, 0xF + ands r1, r0 + lsls r1, 12 + ldrh r0, [r3, 0x4] + ands r0, r5 + orrs r0, r1 + strh r0, [r3, 0x4] +_08005044: + mov r0, sp + ldrb r0, [r0, 0x2] + cmp r0, 0 + beq _08005068 + ldr r1, _080050A4 + mov r0, sp + ldrb r0, [r0, 0x2] + lsls r0, 1 + adds r0, r1 + movs r2, 0 + ldrsh r1, [r0, r2] + movs r0, 0xF + ands r1, r0 + lsls r1, 12 + ldrh r0, [r3, 0x4] + ands r0, r5 + orrs r0, r1 + strh r0, [r3, 0x4] +_08005068: + ldr r0, _080050A8 + mov r4, r12 + ldr r3, [r4] + lsls r2, r3, 3 + adds r2, r0 + ldr r1, _080050AC + lsls r0, r7, 3 + adds r0, r1 + ldr r1, [r0] + str r1, [r2] + str r2, [r0] + adds r3, 0x1 + str r3, [r4] +_08005082: + add sp, 0xC + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005090: .4byte 0x000003ff +_08005094: .4byte 0x000001ff +_08005098: .4byte 0xffffff00 +_0800509C: .4byte 0x00000fff +_080050A0: .4byte 0xfffffe00 +_080050A4: .4byte gUnknown_2025682 +_080050A8: .4byte gUnknown_2025EA8 +_080050AC: .4byte gUnknown_20256A0 + thumb_func_end sub_8004EA8 + + thumb_func_start AddSprite +AddSprite: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r6, r0, 0 + adds r7, r1, 0 + mov r8, r2 + adds r4, r3, 0 + ldr r0, _080050F4 + ldr r0, [r0] + cmp r0, 0x7F + bgt _08005168 + lsls r1, r0, 3 + ldr r0, _080050F8 + adds r5, r1, r0 + cmp r7, 0 + bge _080050D2 + movs r7, 0 +_080050D2: + cmp r7, 0xFF + ble _080050D8 + movs r7, 0xFF +_080050D8: + cmp r4, 0 + bne _080050FC + ldrh r0, [r6] + strh r0, [r5] + ldrh r0, [r6, 0x2] + strh r0, [r5, 0x2] + adds r1, r6, 0x4 + adds r2, r5, 0x4 + ldrh r0, [r1] + strh r0, [r2] + ldrh r0, [r1, 0x2] + strh r0, [r2, 0x2] + b _08005128 + .align 2, 0 +_080050F4: .4byte gUnknown_20266A8 +_080050F8: .4byte gUnknown_20262A8 +_080050FC: + ldrh r1, [r6] + ldrh r0, [r4] + ands r0, r1 + ldrh r1, [r4, 0x6] + orrs r0, r1 + strh r0, [r5] + ldrh r1, [r6, 0x2] + ldrh r0, [r4, 0x2] + ands r0, r1 + ldrh r1, [r4, 0x8] + orrs r0, r1 + strh r0, [r5, 0x2] + adds r2, r6, 0x4 + adds r3, r5, 0x4 + ldrh r1, [r2] + ldrh r0, [r4, 0x4] + ands r0, r1 + ldrh r1, [r4, 0xA] + orrs r0, r1 + strh r0, [r3] + ldrh r0, [r2, 0x2] + strh r0, [r3, 0x2] +_08005128: + ldrh r4, [r5, 0x6] + lsrs r4, 4 + adds r0, r4, 0 + movs r1, 0 + bl nullsub_3 + movs r0, 0xFF + ands r4, r0 + ldrh r1, [r5] + movs r0, 0xFF + lsls r0, 8 + ands r0, r1 + orrs r0, r4 + strh r0, [r5] + mov r0, r8 + cmp r0, 0 + beq _0800514E + bl sub_80052BC +_0800514E: + ldr r0, _08005174 + ldr r4, _08005178 + ldr r3, [r4] + lsls r2, r3, 3 + adds r2, r0 + ldr r1, _0800517C + lsls r0, r7, 3 + adds r0, r1 + ldr r1, [r0] + str r1, [r2] + str r2, [r0] + adds r3, 0x1 + str r3, [r4] +_08005168: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005174: .4byte gUnknown_2025EA8 +_08005178: .4byte gUnknown_20266A8 +_0800517C: .4byte gUnknown_20256A0 + thumb_func_end AddSprite + + thumb_func_start sub_8005180 +sub_8005180: + push {lr} + ldr r2, _080051A8 + adds r1, r2, 0 + cmp r2, 0 + beq _0800519E +_0800518A: + ldr r0, [r1, 0x4] + cmp r0, 0 + beq _08005198 + cmp r2, 0 + beq _08005196 + str r1, [r2] +_08005196: + adds r2, r1, 0 +_08005198: + ldr r1, [r1] + cmp r1, 0 + bne _0800518A +_0800519E: + movs r0, 0 + str r0, [r2] + pop {r0} + bx r0 + .align 2, 0 +_080051A8: .4byte gUnknown_20256A0 + thumb_func_end sub_8005180 + + thumb_func_start CopySpritesToOam +CopySpritesToOam: + push {r4-r6,lr} + ldr r3, _08005204 + ldr r2, _08005208 + movs r4, 0 + ldr r6, _0800520C + cmp r3, 0 + beq _080051E0 + ldr r5, _08005210 +_080051BC: + ldr r1, [r3, 0x4] + cmp r1, 0 + beq _080051D6 + subs r2, 0x4 + ldrh r0, [r1, 0x4] + strh r0, [r2] + subs r2, 0x2 + ldrh r0, [r1, 0x2] + strh r0, [r2] + subs r2, 0x2 + ldrh r0, [r1] + strh r0, [r2] + adds r4, 0x1 +_080051D6: + ldr r3, [r3] + cmp r3, 0 + beq _080051E0 + cmp r2, r5 + bhi _080051BC +_080051E0: + ldr r1, _08005210 + cmp r2, r1 + bls _080051FA + movs r0, 0 + movs r3, 0xA0 +_080051EA: + subs r2, 0x4 + strh r0, [r2] + subs r2, 0x2 + strh r0, [r2] + subs r2, 0x2 + strh r3, [r2] + cmp r2, r1 + bhi _080051EA +_080051FA: + strh r4, [r6] + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08005204: .4byte gUnknown_20256A0 +_08005208: .4byte 0x07000400 +_0800520C: .4byte gUnknown_2025670 +_08005210: .4byte 0x07000008 + thumb_func_end CopySpritesToOam + + thumb_func_start SetSavingIconCoords +SetSavingIconCoords: + push {lr} + adds r3, r0, 0 + cmp r3, 0 + bne _0800522C + ldr r1, _08005228 + strh r3, [r1] + movs r0, 0xA0 + strh r0, [r1, 0x2] + b _0800523C + .align 2, 0 +_08005228: .4byte gUnknown_2025694 +_0800522C: + ldr r1, _08005240 + ldrh r0, [r3] + movs r2, 0 + strh r0, [r1] + ldrh r0, [r3, 0x2] + strh r0, [r1, 0x2] + ldr r0, _08005244 + str r2, [r0] +_0800523C: + pop {r0} + bx r0 + .align 2, 0 +_08005240: .4byte gUnknown_2025694 +_08005244: .4byte gUnknown_2025698 + thumb_func_end SetSavingIconCoords + + thumb_func_start BlinkSavingIcon +BlinkSavingIcon: + push {r4,lr} + movs r2, 0xE0 + lsls r2, 19 + ldr r0, _08005280 + ldr r1, [r0] + adds r3, r1, 0 + adds r1, 0x1 + str r1, [r0] + movs r0, 0x10 + ands r3, r0 + cmp r3, 0 + beq _08005288 + movs r0, 0xA0 + strh r0, [r2] + adds r2, 0x2 + movs r1, 0x80 + lsls r1, 7 + adds r0, r1, 0 + strh r0, [r2] + adds r2, 0x2 + ldr r4, _08005284 + adds r0, r4, 0 + strh r0, [r2] + adds r2, 0x2 + movs r0, 0 + strh r0, [r2] + b _080052A8 + .align 2, 0 +_08005280: .4byte gUnknown_2025698 +_08005284: .4byte 0x0000f3fc +_08005288: + ldr r1, _080052B0 + ldrh r0, [r1, 0x2] + strh r0, [r2] + ldr r2, _080052B4 + movs r4, 0x80 + lsls r4, 7 + adds r0, r4, 0 + ldrh r1, [r1] + adds r0, r1 + strh r0, [r2] + adds r2, 0x2 + ldr r1, _080052B8 + adds r0, r1, 0 + strh r0, [r2] + adds r2, 0x2 + strh r3, [r2] +_080052A8: + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_080052B0: .4byte gUnknown_2025694 +_080052B4: .4byte 0x07000002 +_080052B8: .4byte 0x0000f3fc + thumb_func_end BlinkSavingIcon + + thumb_func_start sub_80052BC +sub_80052BC: + push {r4-r6,lr} + adds r3, r0, 0 + ldr r0, [r3, 0x4] + cmp r0, 0 + beq _080052F2 + ldr r5, _080052F8 + ldr r6, _080052FC + ldr r4, _08005300 +_080052CC: + ldr r2, [r5] + cmp r2, r6 + bcs _080052F2 + ldr r0, [r3, 0x4] + str r0, [r2] + ldr r0, [r3] + str r0, [r2, 0x4] + ldr r1, [r4] + str r1, [r2, 0x8] + ldr r0, [r3, 0x4] + adds r1, r0 + str r1, [r4] + adds r0, r2, 0 + adds r0, 0xC + str r0, [r5] + adds r3, 0x8 + ldr r0, [r3, 0x4] + cmp r0, 0 + bne _080052CC +_080052F2: + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_080052F8: .4byte gUnknown_203B074 +_080052FC: .4byte gUnknown_2026E30 +_08005300: .4byte gUnknown_2026E30 + thumb_func_end sub_80052BC + + thumb_func_start sub_8005304 +sub_8005304: + push {r4,lr} + ldr r4, _0800530C + b _0800532A + .align 2, 0 +_0800530C: .4byte gUnknown_20266B0 +_08005310: + ldr r1, [r4, 0x4] + cmp r1, 0 + beq _08005320 + ldr r0, [r4, 0x8] + ldr r2, [r4] + bl CpuCopy + b _08005328 +_08005320: + ldr r0, [r4, 0x8] + ldr r1, [r4] + bl CpuClear +_08005328: + adds r4, 0xC +_0800532A: + ldr r0, _08005338 + ldr r0, [r0] + cmp r4, r0 + bcc _08005310 + pop {r4} + pop {r0} + bx r0 + .align 2, 0 +_08005338: .4byte gUnknown_203B074 + thumb_func_end sub_8005304 + + thumb_func_start sub_800533C +sub_800533C: + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r1 + adds r5, r2, 0 + adds r7, r3, 0 + ldr r1, [sp, 0x18] + lsls r1, 24 + lsrs r6, r1, 24 + movs r2, 0x18 + ldrsh r1, [r5, r2] + lsls r1, 2 + adds r1, r0 + ldr r4, [r1] + ldr r1, _08005368 + movs r2, 0x14 + ldrsh r0, [r5, r2] + lsls r0, 5 + ldr r2, _0800536C + adds r0, r2 + str r0, [r1] + b _0800538E + .align 2, 0 +_08005368: .4byte gUnknown_2026E30 +_0800536C: .4byte 0x06010000 +_08005370: + cmp r6, 0 + beq _08005382 + movs r1, 0 + ldrsh r0, [r4, r1] + cmp r0, 0 + blt _08005382 + lsls r0, 2 + add r0, r8 + ldr r2, [r0] +_08005382: + adds r0, r4, 0 + adds r1, r5, 0 + adds r3, r7, 0 + bl sub_8004EA8 + adds r4, 0xA +_0800538E: + movs r2, 0 + ldrh r1, [r4] + ldr r0, _080053A8 + cmp r1, r0 + bne _08005370 + ldrh r0, [r4, 0x2] + cmp r0, r1 + bne _08005370 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080053A8: .4byte 0x0000ffff + thumb_func_end sub_800533C + + thumb_func_start sub_80053AC +sub_80053AC: + push {r4-r6,lr} + sub sp, 0xC + ldr r5, [sp, 0x1C] + ldr r6, [sp, 0x20] + ldr r4, [sp, 0x24] + lsls r4, 24 + lsrs r4, 24 + ldr r1, [r1, 0x4] + str r5, [sp] + str r6, [sp, 0x4] + str r4, [sp, 0x8] + bl sub_80053D0 + add sp, 0xC + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_80053AC + + thumb_func_start sub_80053D0 +sub_80053D0: + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldr r0, [sp, 0x1C] + lsls r0, 24 + movs r2, 0 + movs r3, 0x80 + lsls r3, 8 + strh r3, [r4] + cmp r0, 0 + beq _080053F6 + movs r0, 0x80 + lsls r0, 5 + adds r1, r0, 0 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r4] +_080053F6: + strh r2, [r4, 0x2] + ldr r0, [sp, 0x18] + strh r0, [r4, 0x4] + strh r2, [r4, 0xC] + strh r2, [r4, 0xE] + ldr r0, [sp, 0x14] + strh r0, [r4, 0x1C] + ldr r0, _08005438 + strh r0, [r4, 0x20] + movs r0, 0x1 + negs r0, r0 + strh r0, [r4, 0x22] + str r2, [r4, 0x14] + str r2, [r4, 0x18] + strh r2, [r4, 0x6] + ldr r1, [r5, 0x4] + lsls r0, r6, 2 + adds r0, r1 + ldr r1, [r0] + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + str r0, [r4, 0x28] + str r0, [r4, 0x2C] + ldr r0, [r5] + str r0, [r4, 0x34] + ldr r0, [r5, 0xC] + str r0, [r4, 0x38] + ldr r0, [r5, 0x10] + str r0, [r4, 0x30] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005438: .4byte 0x0000ffff + thumb_func_end sub_80053D0 + + thumb_func_start sub_800543C +sub_800543C: + push {r4,r5,lr} + sub sp, 0x8 + ldr r5, [sp, 0x14] + ldr r4, [sp, 0x18] + lsls r4, 24 + lsrs r4, 24 + ldr r1, [r1, 0x4] + str r5, [sp] + str r4, [sp, 0x4] + bl sub_800545C + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_800543C + + thumb_func_start sub_800545C +sub_800545C: + push {r4-r7,lr} + adds r4, r0, 0 + adds r6, r1, 0 + adds r7, r2, 0 + adds r5, r3, 0 + ldr r0, [sp, 0x18] + lsls r0, 24 + movs r2, 0 + movs r3, 0x80 + lsls r3, 8 + strh r3, [r4] + cmp r0, 0 + beq _08005482 + movs r0, 0x80 + lsls r0, 5 + adds r1, r0, 0 + adds r0, r3, 0 + orrs r0, r1 + strh r0, [r4] +_08005482: + strh r2, [r4, 0x2] + ldr r0, [sp, 0x14] + strh r0, [r4, 0x4] + strh r2, [r4, 0xC] + strh r2, [r4, 0xE] + strh r5, [r4, 0x1C] + ldr r0, _080054B8 + strh r0, [r4, 0x20] + movs r0, 0x1 + negs r0, r0 + strh r0, [r4, 0x22] + str r2, [r4, 0x14] + str r2, [r4, 0x18] + strh r2, [r4, 0x6] + ldr r1, [r6, 0x4] + lsls r0, r7, 2 + adds r0, r1 + ldr r0, [r0] + ldr r0, [r0] + str r0, [r4, 0x28] + str r0, [r4, 0x2C] + ldr r0, [r6] + str r0, [r4, 0x34] + str r2, [r4, 0x30] + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080054B8: .4byte 0x0000ffff + thumb_func_end sub_800545C + + thumb_func_start sub_80054BC +sub_80054BC: + push {r4,lr} + adds r4, r0, 0 + ldrh r1, [r4] + movs r0, 0x80 + lsls r0, 6 + ands r0, r1 + cmp r0, 0 + beq _080054D0 + movs r0, 0 + b _080054D2 +_080054D0: + lsrs r0, r1, 15 +_080054D2: + cmp r0, 0 + beq _08005586 + movs r1, 0x20 + ldrsh r0, [r4, r1] + ldrh r3, [r4] + cmp r0, 0 + blt _08005524 + movs r0, 0x80 + lsls r0, 7 + ands r0, r3 + cmp r0, 0 + bne _08005586 + ldrh r2, [r4, 0x6] + movs r0, 0x6 + ldrsh r1, [r4, r0] + ldr r0, _0800550C + cmp r1, r0 + bgt _080054FA + adds r0, r2, 0x1 + strh r0, [r4, 0x6] +_080054FA: + ldrh r1, [r4, 0x4] + movs r2, 0x4 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08005510 + subs r0, r1, 0x1 + strh r0, [r4, 0x4] + b _08005586 + .align 2, 0 +_0800550C: .4byte 0x0000752f +_08005510: + ldrh r1, [r4, 0x2] + movs r2, 0x2 + ldrsh r0, [r4, r2] + cmp r0, 0 + beq _08005524 + subs r0, r1, 0x1 + strh r0, [r4, 0x2] + lsls r0, 16 + cmp r0, 0 + bgt _08005586 +_08005524: + ldr r0, [r4, 0x2C] + ldrb r0, [r0] + cmp r0, 0 + bne _08005550 + movs r0, 0x80 + lsls r0, 5 + ands r0, r3 + cmp r0, 0 + bne _08005542 + movs r1, 0x80 + lsls r1, 6 + adds r0, r1, 0 + orrs r0, r3 + strh r0, [r4] + b _08005586 +_08005542: + ldr r0, [r4, 0x28] + str r0, [r4, 0x2C] + bl Random + movs r1, 0x1 + ands r0, r1 + strh r0, [r4, 0x4] +_08005550: + ldrh r1, [r4] + movs r2, 0x80 + lsls r2, 4 + adds r0, r2, 0 + orrs r0, r1 + strh r0, [r4] + ldr r1, [r4, 0x2C] + ldrb r0, [r1] + strh r0, [r4, 0x2] + ldrh r0, [r1, 0x2] + strh r0, [r4, 0x20] + ldrh r0, [r1, 0x4] + strh r0, [r4, 0xC] + ldrh r0, [r1, 0x6] + strh r0, [r4, 0xE] + ldrh r0, [r1, 0x8] + strh r0, [r4, 0x10] + ldrh r0, [r1, 0xA] + strh r0, [r4, 0x12] + ldrb r0, [r1, 0x1] + str r0, [r4, 0x14] + ldrb r2, [r1, 0x1] + ldr r0, [r4, 0x18] + orrs r0, r2 + str r0, [r4, 0x18] + adds r1, 0xC + str r1, [r4, 0x2C] +_08005586: + pop {r4} + pop {r0} + bx r0 + thumb_func_end sub_80054BC + + thumb_func_start sub_800558C +sub_800558C: + push {r4-r7,lr} + sub sp, 0x4 + adds r5, r0, 0 + adds r4, r1, 0 + adds r6, r2, 0 + adds r7, r3, 0 + ldrh r0, [r5] + lsrs r0, 15 + cmp r0, 0 + beq _08005602 + movs r1, 0x20 + ldrsh r0, [r5, r1] + cmp r0, 0 + bge _080055AE + adds r0, r5, 0 + bl sub_80054BC +_080055AE: + ldrh r0, [r5] + lsrs r0, 15 + cmp r0, 0 + beq _08005602 + ldrh r0, [r5, 0xC] + adds r0, r4 + strh r0, [r5, 0x8] + ldrh r0, [r5, 0xE] + adds r0, r6 + strh r0, [r5, 0xA] + adds r1, r5, 0 + adds r1, 0x26 + ldr r0, [sp, 0x18] + strb r0, [r1] + strh r7, [r5, 0x1E] + ldr r0, [r5, 0x34] + ldr r1, [r5, 0x38] + adds r2, r5, 0 + adds r2, 0x8 + movs r3, 0x22 + ldrsh r4, [r5, r3] + movs r6, 0x20 + ldrsh r3, [r5, r6] + eors r4, r3 + negs r3, r4 + orrs r3, r4 + lsrs r3, 31 + str r3, [sp] + ldr r3, [sp, 0x1C] + bl sub_800533C + ldrh r0, [r5, 0x20] + strh r0, [r5, 0x22] + ldrh r1, [r5] + movs r0, 0x80 + lsls r0, 4 + ands r0, r1 + cmp r0, 0 + beq _08005602 + ldr r0, _0800560C + ands r0, r1 + strh r0, [r5] +_08005602: + add sp, 0x4 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_0800560C: .4byte 0x0000f7ff + thumb_func_end sub_800558C + + thumb_func_start sub_8005610 +sub_8005610: + push {lr} + ldr r0, [r0, 0x4] + bl sub_800561C + pop {r0} + bx r0 + thumb_func_end sub_8005610 + + thumb_func_start sub_800561C +sub_800561C: + push {r4-r7,lr} + adds r5, r0, 0 + adds r0, r1, 0 + adds r7, r2, 0 + adds r6, r3, 0 + ldr r1, [r5, 0x14] + cmp r1, 0 + beq _0800563A + lsls r0, 5 + ldr r2, _08005664 + adds r0, r2 + ldr r2, [r5, 0x1C] + lsls r2, 5 + bl CpuCopy +_0800563A: + ldr r0, [r5, 0x18] + cmp r0, 0 + beq _0800565C + movs r4, 0 +_08005642: + movs r1, 0xF0 + lsls r1, 1 + adds r0, r4, r1 + lsls r2, r4, 2 + ldr r1, [r5, 0x18] + adds r1, r2 + adds r2, r7, 0 + adds r3, r6, 0 + bl SetBGPaletteBufferColorRGB + adds r4, 0x1 + cmp r4, 0xF + ble _08005642 +_0800565C: + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_08005664: .4byte 0x06010000 + thumb_func_end sub_800561C + + thumb_func_start sub_8005668 +sub_8005668: + push {lr} + ldr r0, [r0, 0x4] + bl sub_8005674 + pop {r1} + bx r1 + thumb_func_end sub_8005668 + + thumb_func_start sub_8005674 +sub_8005674: + push {r4,lr} + adds r4, r0, 0 + ldr r3, [r4, 0x14] + cmp r3, 0 + beq _0800568E + lsls r0, r1, 5 + ldr r1, _08005698 + adds r0, r1 + ldr r2, [r4, 0x1C] + lsls r2, 5 + adds r1, r3, 0 + bl CpuCopy +_0800568E: + ldr r0, [r4, 0x18] + pop {r4} + pop {r1} + bx r1 + .align 2, 0 +_08005698: .4byte 0x06010000 + thumb_func_end sub_8005674 + + thumb_func_start sub_800569C +sub_800569C: + push {r4-r6,lr} + adds r3, r0, 0 + adds r4, r1, 0 + lsls r2, 24 + lsrs r2, 24 + movs r0, 0 + strh r0, [r3] + strh r0, [r3, 0x2] + ldrh r0, [r4] + lsrs r0, 15 + cmp r0, 0 + beq _080056F8 + cmp r2, 0x3 + bhi _080056F8 + ldr r1, [r4, 0x30] + cmp r1, 0 + beq _080056F2 + movs r5, 0x20 + ldrsh r0, [r4, r5] + lsls r0, 4 + adds r5, r1, r0 + lsls r0, r2, 2 + adds r2, r5, r0 + movs r6, 0 + ldrsh r1, [r2, r6] + cmp r1, 0x63 + bne _080056E0 + movs r6, 0x2 + ldrsh r1, [r2, r6] + cmp r1, 0x63 + bne _080056E0 + strh r1, [r3] + strh r1, [r3, 0x2] + b _080056F8 +_080056E0: + adds r0, r5, r0 + ldrh r1, [r0] + ldrh r2, [r4, 0xC] + adds r1, r2 + strh r1, [r3] + ldrh r0, [r0, 0x2] + ldrh r4, [r4, 0xE] + adds r0, r4 + b _080056F6 +_080056F2: + movs r0, 0x63 + strh r0, [r3] +_080056F6: + strh r0, [r3, 0x2] +_080056F8: + pop {r4-r6} + pop {r0} + bx r0 + thumb_func_end sub_800569C + + thumb_func_start sub_8005700 +sub_8005700: + push {r4,r5,lr} + adds r3, r0, 0 + ldrh r0, [r1] + lsrs r0, 15 + cmp r0, 0 + beq _0800575C + ldr r2, [r1, 0x30] + cmp r2, 0 + beq _0800574C + movs r4, 0x20 + ldrsh r0, [r1, r4] + lsls r0, 4 + adds r2, r0 + adds r4, r2, 0 + adds r4, 0xC +_0800571E: + movs r5, 0 + ldrsh r0, [r2, r5] + cmp r0, 0x63 + bne _08005732 + movs r5, 0x2 + ldrsh r0, [r2, r5] + cmp r0, 0x63 + bne _08005732 + strh r0, [r3] + b _08005740 +_08005732: + ldrh r0, [r2] + ldrh r5, [r1, 0xC] + adds r0, r5 + strh r0, [r3] + ldrh r0, [r2, 0x2] + ldrh r5, [r1, 0xE] + adds r0, r5 +_08005740: + strh r0, [r3, 0x2] + adds r3, 0x4 + adds r2, 0x4 + cmp r2, r4 + ble _0800571E + b _0800575C +_0800574C: + movs r1, 0x63 + movs r0, 0x3 +_08005750: + strh r1, [r3] + strh r1, [r3, 0x2] + adds r3, 0x4 + subs r0, 0x1 + cmp r0, 0 + bge _08005750 +_0800575C: + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end sub_8005700 + + thumb_func_start sub_8005764 +sub_8005764: + push {lr} + ldr r1, [r1, 0x4] + bl sub_8005770 + pop {r0} + bx r0 + thumb_func_end sub_8005764 + + thumb_func_start sub_8005770 +sub_8005770: + push {r4-r7,lr} + mov r7, r8 + push {r7} + mov r8, r2 + adds r7, r3, 0 + movs r5, 0 + adds r0, 0x10 + lsls r6, r0, 4 + adds r4, r1, 0 +_08005782: + adds r0, r6, r5 + adds r1, r4, 0 + mov r2, r8 + adds r3, r7, 0 + bl SetBGPaletteBufferColorRGB + adds r4, 0x4 + adds r5, 0x1 + cmp r5, 0xF + ble _08005782 + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end sub_8005770 + + thumb_func_start nullsub_7 +nullsub_7: + bx lr + thumb_func_end nullsub_7 + + thumb_func_start nullsub_8 +nullsub_8: + bx lr + thumb_func_end nullsub_8 + + thumb_func_start nullsub_9 +nullsub_9: + bx lr + thumb_func_end nullsub_9 + + thumb_func_start nullsub_10 +nullsub_10: + bx lr + thumb_func_end nullsub_10 + + thumb_func_start nullsub_144 +nullsub_144: + bx lr + thumb_func_end nullsub_144 + + thumb_func_start nullsub_11 +nullsub_11: + bx lr + thumb_func_end nullsub_11 + + thumb_func_start nullsub_12 +nullsub_12: + bx lr + thumb_func_end nullsub_12 + + thumb_func_start nullsub_13 +nullsub_13: + bx lr + thumb_func_end nullsub_13 + + thumb_func_start nullsub_145 +nullsub_145: + bx lr + thumb_func_end nullsub_145 + + thumb_func_start nullsub_14 +nullsub_14: + bx lr + thumb_func_end nullsub_14 + + thumb_func_start nullsub_146 +nullsub_146: + bx lr + thumb_func_end nullsub_146 + + thumb_func_start nullsub_147 +nullsub_147: + bx lr + thumb_func_end nullsub_147 + + thumb_func_start nullsub_148 +nullsub_148: + bx lr + thumb_func_end nullsub_148 + + thumb_func_start nullsub_149 +nullsub_149: + bx lr + thumb_func_end nullsub_149 + + thumb_func_start sub_80057D8 +sub_80057D8: + movs r0, 0 + bx lr + thumb_func_end sub_80057D8 + + thumb_func_start sub_80057DC +sub_80057DC: + movs r0, 0 + bx lr + thumb_func_end sub_80057DC + + thumb_func_start nullsub_150 +nullsub_150: + bx lr + thumb_func_end nullsub_150 + + thumb_func_start nullsub_151 +nullsub_151: + bx lr + thumb_func_end nullsub_151 + + thumb_func_start sub_80057E8 +sub_80057E8: + ldr r1, _08005814 + movs r0, 0x1 + strb r0, [r1] + ldr r0, _08005818 + movs r2, 0 + str r2, [r0] + ldr r1, _0800581C + movs r0, 0x1 + str r0, [r1] + ldr r0, _08005820 + str r2, [r0] + ldr r0, _08005824 + str r2, [r0] + ldr r0, _08005828 + strb r2, [r0] + ldr r1, _0800582C + ldr r3, _08005830 + adds r0, r3, 0 + strh r0, [r1] + ldr r0, _08005834 + str r2, [r0] + bx lr + .align 2, 0 +_08005814: .4byte gUnknown_2026E4C +_08005818: .4byte gUnknown_2026E54 +_0800581C: .4byte gUnknown_2026E50 +_08005820: .4byte gUnknown_2026E58 +_08005824: .4byte gUnknown_2026E3C +_08005828: .4byte gUnknown_2026E38 +_0800582C: .4byte gUnknown_2026E4E +_08005830: .4byte 0x0000060c +_08005834: .4byte gUnknown_203B078 + thumb_func_end sub_80057E8 + + thumb_func_start sub_8005838 +sub_8005838: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x18 + adds r5, r0, 0 + lsls r1, 24 + lsrs r1, 24 + ldr r0, _08005880 + ldrb r0, [r0] + cmp r0, 0 + bne _08005854 + movs r1, 0 +_08005854: + ldr r0, _08005884 + ldr r0, [r0] + ldr r3, _08005888 + cmp r0, 0 + bne _08005860 + ldr r3, _0800588C +_08005860: + ldr r0, _08005890 + ldr r2, [r0] + cmp r2, 0 + bne _0800586A + ldr r2, _08005894 +_0800586A: + ldr r0, _08005898 + str r3, [r0] + cmp r1, 0x5 + bls _08005876 + bl _08006094 +_08005876: + lsls r0, r1, 2 + ldr r1, _0800589C + adds r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08005880: .4byte gUnknown_2026E4C +_08005884: .4byte gUnknown_2026E54 +_08005888: .4byte gUnknown_20270E8 +_0800588C: .4byte gUnknown_2026E60 +_08005890: .4byte gUnknown_203B078 +_08005894: .4byte gUnknown_80B83EA +_08005898: .4byte gUnknown_2026E58 +_0800589C: .4byte _080058A0 + .align 2, 0 +_080058A0: + .4byte _080058B8 + .4byte _08005984 + .4byte _08005A98 + .4byte _08005BAC + .4byte _08005D46 + .4byte _08005E58 +_080058B8: + movs r1, 0 + movs r7, 0x9 +_080058BC: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + bge _080058BC + b _08006094 +_08005984: + ldr r1, _08005A94 + movs r7, 0x9 +_08005988: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + blt _08005A90 + b _08005988 +_08005A90: + b _08006094 + .align 2, 0 +_08005A94: .4byte gUnknown_80B816A +_08005A98: + ldr r1, _08005BA8 + movs r7, 0x9 +_08005A9C: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + blt _08005BA4 + b _08005A9C +_08005BA4: + b _08006094 + .align 2, 0 +_08005BA8: .4byte gUnknown_80B802A +_08005BAC: + ldr r0, [r5] + mov r10, r0 + cmp r0, 0 + bge _08005BBA + ldr r0, [r5, 0x8] + cmp r0, 0 + blt _08005BDC +_08005BBA: + ldr r1, [r5, 0x4] + cmp r1, 0 + bge _08005BC6 + ldr r0, [r5, 0xC] + cmp r0, 0 + blt _08005BDC +_08005BC6: + mov r4, r10 + cmp r4, 0xEF + ble _08005BD2 + ldr r0, [r5, 0x8] + cmp r0, 0xEF + bgt _08005BDC +_08005BD2: + cmp r1, 0x9F + ble _08005CA8 + ldr r0, [r5, 0xC] + cmp r0, 0x9F + ble _08005CA8 +_08005BDC: + movs r1, 0xF0 + movs r7, 0x9 +_08005BE0: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + bge _08005BE0 + b _08006094 +_08005CA8: + movs r7, 0 + mov r8, r1 + movs r6, 0x80 + lsls r6, 1 + mov r12, r6 + lsls r0, r1, 1 + ldr r1, _08005CCC + subs r6, r1, r0 + mov r9, r10 +_08005CBA: + cmp r8, r7 + ble _08005CD0 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + mov r4, r12 + strh r4, [r3] + b _08005D3A + .align 2, 0 +_08005CCC: .4byte gUnknown_80B8008 +_08005CD0: + ldr r1, [r5, 0xC] + cmp r1, r7 + bgt _08005CE2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + mov r0, r12 + b _08005D38 +_08005CE2: + mov r4, r8 + subs r0, r7, r4 + cmp r0, 0xF + bgt _08005CF0 + movs r0, 0 + ldrsh r1, [r6, r0] + b _08005D00 +_08005CF0: + subs r0, r1, r7 + cmp r0, 0xF + bgt _08005D10 + lsls r0, 1 + ldr r1, _08005D0C + adds r0, r1 + movs r4, 0 + ldrsh r1, [r0, r4] +_08005D00: + mov r0, r9 + adds r4, r0, r1 + ldr r0, [r5, 0x8] + subs r1, r0, r1 + b _08005D14 + .align 2, 0 +_08005D0C: .4byte gUnknown_80B8008 +_08005D10: + mov r4, r10 + ldr r1, [r5, 0x8] +_08005D14: + cmp r4, 0 + bge _08005D1A + movs r4, 0 +_08005D1A: + cmp r4, 0xEF + ble _08005D20 + movs r4, 0xEF +_08005D20: + cmp r1, 0 + bgt _08005D26 + movs r1, 0x1 +_08005D26: + cmp r1, 0xF0 + ble _08005D2C + movs r1, 0xF0 +_08005D2C: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + lsls r0, r1, 8 + orrs r0, r4 +_08005D38: + strh r0, [r3] +_08005D3A: + adds r3, 0x2 + adds r6, 0x2 + adds r7, 0x1 + cmp r7, 0x9F + ble _08005CBA + b _08006094 +_08005D46: + ldr r1, _08005E54 + movs r7, 0xE +_08005D4A: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + blt _08005E52 + b _08005D4A +_08005E52: + b _08006094 + .align 2, 0 +_08005E54: .4byte gUnknown_80B82AA +_08005E58: + ldr r4, _08005FF4 + ldr r5, _08005FF8 + ldr r6, _08005FFC + movs r0, 0x80 + lsls r0, 1 + adds r1, r0, 0 + movs r7, 0xE +_08005E66: + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + ldrh r0, [r2] + strh r0, [r3] + adds r2, 0x2 + adds r3, 0x2 + strh r1, [r3] + adds r3, 0x2 + subs r7, 0x1 + cmp r7, 0 + bge _08005E66 + ldr r4, [r4] + str r4, [sp] + ldr r5, [r5] + str r5, [sp, 0x4] + ldr r6, [r6] + str r6, [sp, 0x8] + adds r1, r6, 0 + cmp r6, 0 + bge _08005F40 + adds r1, 0xFF +_08005F40: + asrs r1, 8 + adds r1, 0x1 + movs r0, 0x80 + lsls r0, 3 + bl __divsi3 + str r0, [sp, 0xC] + ldr r0, [sp, 0x4] + cmp r0, 0 + bge _08005F56 + adds r0, 0xFF +_08005F56: + asrs r4, r0, 8 + adds r5, r4, 0 + movs r3, 0 + lsls r0, r4, 2 + adds r7, r0, 0x2 + mov r9, r7 +_08005F62: + adds r0, r3, 0 + str r3, [sp, 0x10] + bl sub_8009C7C + ldr r1, [sp, 0x8] + muls r0, r1 + ldr r3, [sp, 0x10] + cmp r0, 0 + bge _08005F76 + adds r0, 0xFF +_08005F76: + asrs r0, 8 + ldr r2, [sp, 0x4] + adds r1, r2, r0 + cmp r1, 0 + bge _08005F82 + adds r1, 0xFF +_08005F82: + asrs r1, 8 + str r1, [sp, 0x14] + ldr r6, [sp, 0x4] + subs r0, r6, r0 + cmp r0, 0 + bge _08005F90 + adds r0, 0xFF +_08005F90: + asrs r0, 8 + mov r8, r0 + ldr r0, [sp, 0x14] + cmp r5, r0 + blt _08005FA4 + ldr r1, [sp, 0xC] + adds r1, r3 + mov r10, r1 + cmp r4, r8 + ble _0800608A +_08005FA4: + adds r0, r3, 0 + str r3, [sp, 0x10] + bl sub_8009D04 + ldr r2, [sp, 0x8] + muls r0, r2 + ldr r3, [sp, 0x10] + cmp r0, 0 + bge _08005FB8 + adds r0, 0xFF +_08005FB8: + asrs r0, 8 + ldr r6, [sp] + subs r1, r6, r0 + cmp r1, 0 + bge _08005FC4 + adds r1, 0xFF +_08005FC4: + asrs r1, 8 + ldr r2, [sp] + adds r0, r2, r0 + cmp r0, 0 + bge _08005FD0 + adds r0, 0xFF +_08005FD0: + asrs r0, 8 + cmp r1, 0 + bge _08005FD8 + movs r1, 0 +_08005FD8: + cmp r0, 0 + bge _08005FDE + movs r0, 0 +_08005FDE: + cmp r1, 0xEF + ble _08005FE4 + movs r1, 0x9F +_08005FE4: + cmp r0, 0xEF + ble _08005FEA + movs r0, 0x9F +_08005FEA: + cmp r1, r0 + ble _08006000 + lsls r2, r1, 8 + orrs r2, r0 + b _08006004 + .align 2, 0 +_08005FF4: .4byte gUnknown_2026E40 +_08005FF8: .4byte gUnknown_2026E44 +_08005FFC: .4byte gUnknown_2026E48 +_08006000: + lsls r2, r0, 8 + orrs r2, r1 +_08006004: + ldr r6, [sp, 0xC] + adds r3, r6 + mov r10, r3 + ldr r0, [sp, 0x14] + cmp r5, r0 + bge _0800604E + ldr r1, _08006030 + mov r12, r1 + ldr r3, _08006034 + add r3, r9 + ldr r1, _08006038 + add r1, r9 +_0800601C: + cmp r5, 0 + blt _0800603E + cmp r5, 0x9F + bgt _0800603E + mov r6, r12 + ldr r0, [r6] + cmp r0, 0 + bne _0800603C + strh r2, [r1] + b _0800603E + .align 2, 0 +_08006030: .4byte gUnknown_2026E54 +_08006034: .4byte gUnknown_20270E8 +_08006038: .4byte gUnknown_2026E60 +_0800603C: + strh r2, [r3] +_0800603E: + adds r3, 0x4 + adds r1, 0x4 + movs r0, 0x4 + add r9, r0 + adds r5, 0x1 + ldr r6, [sp, 0x14] + cmp r5, r6 + blt _0800601C +_0800604E: + cmp r4, r8 + ble _0800608A + ldr r6, _08006070 + ldr r0, _08006074 + adds r3, r7, r0 + ldr r0, _08006078 + adds r1, r7, r0 +_0800605C: + cmp r4, 0 + blt _0800607E + cmp r4, 0x9F + bgt _0800607E + ldr r0, [r6] + cmp r0, 0 + bne _0800607C + strh r2, [r1] + b _0800607E + .align 2, 0 +_08006070: .4byte gUnknown_2026E54 +_08006074: .4byte gUnknown_20270E8 +_08006078: .4byte gUnknown_2026E60 +_0800607C: + strh r2, [r3] +_0800607E: + subs r3, 0x4 + subs r1, 0x4 + subs r7, 0x4 + subs r4, 0x1 + cmp r4, r8 + bgt _0800605C +_0800608A: + mov r3, r10 + ldr r0, _080060A4 + cmp r3, r0 + bgt _08006094 + b _08005F62 +_08006094: + add sp, 0x18 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r0} + bx r0 + .align 2, 0 +_080060A4: .4byte 0x000003ff + thumb_func_end sub_8005838 + + thumb_func_start sub_80060A8 +sub_80060A8: + push {lr} + ldr r1, _080060D8 + ldr r0, _080060DC + ldr r0, [r0] + str r0, [r1] + ldr r2, _080060E0 + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _080060BE + movs r1, 0x1 +_080060BE: + str r1, [r2] + ldr r2, _080060E4 + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _080060CC + movs r1, 0x1 +_080060CC: + str r1, [r2] + ldr r1, _080060E8 + movs r0, 0 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_080060D8: .4byte gUnknown_2026E3C +_080060DC: .4byte gUnknown_2026E58 +_080060E0: .4byte gUnknown_2026E54 +_080060E4: .4byte gUnknown_2026E50 +_080060E8: .4byte gUnknown_2026E38 + thumb_func_end sub_80060A8 + + thumb_func_start sub_80060EC +sub_80060EC: + push {lr} + ldr r1, _08006130 + ldr r0, _08006134 + ldr r0, [r0] + str r0, [r1] + ldr r2, _08006138 + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _08006102 + movs r1, 0x1 +_08006102: + str r1, [r2] + ldr r2, _0800613C + movs r1, 0 + ldr r0, [r2] + cmp r0, 0 + bne _08006110 + movs r1, 0x1 +_08006110: + str r1, [r2] + ldr r0, _08006140 + ldrh r2, [r0] + movs r0, 0xF8 + lsls r0, 5 + ands r0, r2 + lsrs r0, 8 + movs r1, 0x1F + ands r1, r2 + bl sub_800CC44 + ldr r1, _08006144 + movs r0, 0x1 + strb r0, [r1] + pop {r0} + bx r0 + .align 2, 0 +_08006130: .4byte gUnknown_2026E3C +_08006134: .4byte gUnknown_2026E58 +_08006138: .4byte gUnknown_2026E54 +_0800613C: .4byte gUnknown_2026E50 +_08006140: .4byte gUnknown_2026E4E +_08006144: .4byte gUnknown_2026E38 + thumb_func_end sub_80060EC + + .align 2, 0 @ Don't pad with nop. diff --git a/asm/memory.s b/asm/memory.s new file mode 100644 index 0000000..88b3faa --- /dev/null +++ b/asm/memory.s @@ -0,0 +1,1075 @@ + .include "constants/gba_constants.inc" + .include "asm/macros.inc" + + .syntax unified + + .text + + thumb_func_start InitHeap +InitHeap: + push {lr} + bl InitHeapInternal + pop {r0} + bx r0 + thumb_func_end InitHeap + + thumb_func_start MemoryClear8 +MemoryClear8: + push {lr} + cmp r1, 0 + ble _08002EAA + movs r2, 0 +_08002EA0: + subs r1, 0x1 + strb r2, [r0] + adds r0, 0x1 + cmp r1, 0 + bgt _08002EA0 +_08002EAA: + pop {r0} + bx r0 + thumb_func_end MemoryClear8 + + thumb_func_start MemoryClear16 +MemoryClear16: + push {lr} + cmp r1, 0 + ble _08002EC2 + movs r2, 0 +_08002EB8: + subs r1, 0x2 + strh r2, [r0] + adds r0, 0x2 + cmp r1, 0 + bgt _08002EB8 +_08002EC2: + pop {r0} + bx r0 + thumb_func_end MemoryClear16 + + thumb_func_start MemoryClear32 +MemoryClear32: + push {lr} + bl CpuClear + pop {r0} + bx r0 + thumb_func_end MemoryClear32 + + thumb_func_start MemoryFill8 +MemoryFill8: + push {lr} + lsls r1, 24 + lsrs r1, 24 + cmp r2, 0 + ble _08002EE8 +_08002EDE: + subs r2, 0x1 + strb r1, [r0] + adds r0, 0x1 + cmp r2, 0 + bgt _08002EDE +_08002EE8: + pop {r0} + bx r0 + thumb_func_end MemoryFill8 + + thumb_func_start MemoryFill16 +MemoryFill16: + push {lr} + lsls r1, 16 + lsrs r1, 16 + cmp r2, 0 + ble _08002F00 +_08002EF6: + subs r2, 0x2 + strh r1, [r0] + adds r0, 0x2 + cmp r2, 0 + bgt _08002EF6 +_08002F00: + pop {r0} + bx r0 + thumb_func_end MemoryFill16 + + thumb_func_start MemoryFill32 +MemoryFill32: + push {lr} + cmp r2, 0 + ble _08002F12 +_08002F0A: + subs r2, 0x4 + stm r0!, {r1} + cmp r2, 0 + bgt _08002F0A +_08002F12: + pop {r0} + bx r0 + thumb_func_end MemoryFill32 + + thumb_func_start MemoryCopy8 +MemoryCopy8: + push {lr} + adds r3, r0, 0 + cmp r2, 0 + ble _08002F2E +_08002F20: + subs r2, 0x1 + ldrb r0, [r1] + strb r0, [r3] + adds r1, 0x1 + adds r3, 0x1 + cmp r2, 0 + bgt _08002F20 +_08002F2E: + pop {r0} + bx r0 + thumb_func_end MemoryCopy8 + + thumb_func_start MemoryCopy16 +MemoryCopy16: + push {lr} + adds r3, r0, 0 + cmp r2, 0 + ble _08002F4A +_08002F3C: + subs r2, 0x2 + ldrh r0, [r1] + strh r0, [r3] + adds r1, 0x2 + adds r3, 0x2 + cmp r2, 0 + bgt _08002F3C +_08002F4A: + pop {r0} + bx r0 + thumb_func_end MemoryCopy16 + + thumb_func_start MemoryCopy32 +MemoryCopy32: + push {lr} + adds r3, r0, 0 + cmp r2, 0 + ble _08002F62 +_08002F58: + subs r2, 0x4 + ldm r1!, {r0} + stm r3!, {r0} + cmp r2, 0 + bgt _08002F58 +_08002F62: + pop {r0} + bx r0 + thumb_func_end MemoryCopy32 + + thumb_func_start InitHeapInternal +InitHeapInternal: + push {lr} + sub sp, 0x8 + ldr r0, _08002F90 + str r0, [sp] + movs r0, 0x90 + lsls r0, 10 + str r0, [sp, 0x4] + ldr r1, _08002F94 + movs r0, 0 + str r0, [r1] + ldr r0, _08002F98 + ldr r2, _08002F9C + mov r1, sp + movs r3, 0x20 + bl DoInitHeap + add sp, 0x8 + pop {r0} + bx r0 + .align 2, 0 +_08002F90: .4byte gUnknown_20011D0 +_08002F94: .4byte gUnknown_2000EA8 +_08002F98: .4byte gUnknown_2000EB0 +_08002F9C: .4byte gUnknown_2000ED0 + thumb_func_end InitHeapInternal + + thumb_func_start DoInitHeap +DoInitHeap: + push {r4-r6,lr} + mov r6, r9 + mov r5, r8 + push {r5,r6} + ldr r4, [r1, 0x4] + mov r9, r4 + movs r4, 0x4 + negs r4, r4 + mov r5, r9 + ands r5, r4 + mov r9, r5 + ldr r6, _08002FFC + ldr r4, _08003000 + mov r8, r4 + ldr r5, [r4] + lsls r4, r5, 2 + adds r4, r6 + str r0, [r4] + adds r5, 0x1 + mov r4, r8 + str r5, [r4] + ldr r5, [r1] + str r5, [r0, 0x14] + mov r1, r9 + str r1, [r0, 0x18] + movs r1, 0x2 + str r1, [r0] + movs r4, 0 + str r4, [r0, 0x4] + str r2, [r0, 0x8] + movs r1, 0x1 + str r1, [r0, 0xC] + str r3, [r0, 0x10] + str r4, [r2] + str r4, [r2, 0x4] + str r5, [r2, 0xC] + mov r5, r9 + str r5, [r2, 0x10] + str r4, [r2, 0x14] + str r4, [r2, 0x8] + pop {r3,r4} + mov r8, r3 + mov r9, r4 + pop {r4-r6} + pop {r0} + bx r0 + .align 2, 0 +_08002FFC: .4byte gUnknown_2000E88 +_08003000: .4byte gUnknown_2000EA8 + thumb_func_end DoInitHeap + + thumb_func_start InitSubHeap +InitSubHeap: + push {r4,r5,lr} + sub sp, 0x8 + adds r3, r2, 0 + lsls r4, r3, 1 + adds r4, r3 + movs r2, 0x4 + negs r2, r2 + lsls r4, 3 + ldr r5, [r1, 0x4] + subs r5, r4 + ands r5, r2 + ldr r2, [r1] + adds r4, r2, r4 + str r4, [sp] + str r5, [sp, 0x4] + mov r1, sp + bl DoInitHeap + add sp, 0x8 + pop {r4,r5} + pop {r0} + bx r0 + thumb_func_end InitSubHeap + + thumb_func_start xxx_memory_attr_related +xxx_memory_attr_related: + push {lr} + adds r1, r0, 0 + cmp r1, 0 + bne _0800303C + movs r0, 0 + b _08003060 +_0800303C: + movs r0, 0x8 + ands r0, r1 + cmp r0, 0 + beq _08003048 + movs r0, 0x4 + b _08003060 +_08003048: + movs r2, 0x7 + ands r2, r1 + movs r0, 0x1 + cmp r2, 0x7 + beq _08003060 + movs r0, 0x2 + cmp r2, 0x1 + beq _08003060 + movs r0, 0x5 + cmp r2, 0x3 + bne _08003060 + movs r0, 0x3 +_08003060: + pop {r1} + bx r1 + thumb_func_end xxx_memory_attr_related + + thumb_func_start MemorySearchFromFront +MemorySearchFromFront: + push {r4-r7,lr} + adds r5, r0, 0 + adds r6, r2, 0 + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _080030CC + movs r4, 0 + ldr r3, [r5, 0x8] + ldr r2, [r5, 0xC] + cmp r4, r2 + bge _08003104 + ldr r0, [r3, 0x4] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08003090 + ldr r0, [r3, 0x10] + cmp r0, r6 + blt _080030AC + movs r0, 0 + b _08003108 +_08003090: + adds r4, 0x1 + adds r3, 0x18 + cmp r4, r2 + bge _08003104 + ldr r0, [r3, 0x4] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _08003090 + ldr r0, [r3, 0x10] + cmp r0, r6 + blt _080030AC +_080030A8: + adds r0, r4, 0 + b _08003108 +_080030AC: + cmp r4, r2 + bge _08003104 + movs r5, 0x1 + adds r1, r2, 0 +_080030B4: + ldr r0, [r3, 0x4] + ands r0, r5 + cmp r0, 0 + bne _080030C2 + ldr r0, [r3, 0x10] + cmp r0, r6 + bge _080030A8 +_080030C2: + adds r4, 0x1 + adds r3, 0x18 + cmp r4, r1 + blt _080030B4 + b _08003104 +_080030CC: + movs r7, 0x1 + negs r7, r7 + ldr r1, _08003100 + movs r4, 0 + ldr r3, [r5, 0x8] + ldr r2, [r5, 0xC] + cmp r4, r2 + bge _080030FC + movs r5, 0x1 +_080030DE: + ldr r0, [r3, 0x4] + ands r0, r5 + cmp r0, 0 + bne _080030F4 + ldr r0, [r3, 0x10] + cmp r0, r6 + blt _080030F4 + cmp r0, r1 + bge _080030F4 + adds r7, r4, 0 + adds r1, r0, 0 +_080030F4: + adds r4, 0x1 + adds r3, 0x18 + cmp r4, r2 + blt _080030DE +_080030FC: + adds r0, r7, 0 + b _08003108 + .align 2, 0 +_08003100: .4byte 0x00024001 +_08003104: + movs r0, 0x1 + negs r0, r0 +_08003108: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end MemorySearchFromFront + + thumb_func_start MemorySearchFromBack +MemorySearchFromBack: + push {r4-r7,lr} + adds r4, r0, 0 + adds r5, r2, 0 + movs r0, 0x4 + ands r0, r1 + cmp r0, 0 + beq _08003168 + ldr r0, [r4, 0xC] + subs r3, r0, 0x1 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + ldr r1, [r4, 0x8] + adds r2, r1, r0 + b _08003132 +_0800312E: + subs r3, 0x1 + subs r2, 0x18 +_08003132: + cmp r3, 0 + blt _080031A8 + ldr r0, [r2, 0x4] + movs r1, 0x1 + ands r0, r1 + cmp r0, 0 + bne _0800312E + ldr r0, [r2, 0x10] + cmp r0, r5 + blt _0800314A +_08003146: + adds r0, r3, 0 + b _080031AC +_0800314A: + cmp r3, 0 + blt _080031A8 + movs r1, 0x1 +_08003150: + ldr r0, [r2, 0x4] + ands r0, r1 + cmp r0, 0 + bne _0800315E + ldr r0, [r2, 0x10] + cmp r0, r5 + bge _08003146 +_0800315E: + subs r3, 0x1 + subs r2, 0x18 + cmp r3, 0 + bge _08003150 + b _080031A8 +_08003168: + movs r7, 0x1 + negs r7, r7 + ldr r6, _080031A4 + ldr r0, [r4, 0xC] + subs r3, r0, 0x1 + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + ldr r1, [r4, 0x8] + adds r2, r1, r0 + cmp r3, 0 + blt _080031A0 + movs r1, 0x1 +_08003182: + ldr r0, [r2, 0x4] + ands r0, r1 + cmp r0, 0 + bne _08003198 + ldr r0, [r2, 0x10] + cmp r0, r5 + blt _08003198 + cmp r0, r6 + bge _08003198 + adds r7, r3, 0 + adds r6, r0, 0 +_08003198: + subs r3, 0x1 + subs r2, 0x18 + cmp r3, 0 + bge _08003182 +_080031A0: + adds r0, r7, 0 + b _080031AC + .align 2, 0 +_080031A4: .4byte 0x00024001 +_080031A8: + movs r0, 0x1 + negs r0, r0 +_080031AC: + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end MemorySearchFromBack + + thumb_func_start MemorySplitFront +MemorySplitFront: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + str r2, [sp] + str r3, [sp, 0x4] + adds r0, r3, 0 + adds r0, 0x3 + str r0, [sp, 0x10] + movs r0, 0x4 + negs r0, r0 + ldr r1, [sp, 0x10] + ands r1, r0 + str r1, [sp, 0x10] + ldr r2, [sp, 0xC] + lsls r2, 1 + mov r12, r2 + ldr r0, [sp, 0xC] + add r0, r12 + lsls r0, 3 + ldr r5, [sp, 0x8] + ldr r2, [r5, 0x8] + adds r4, r2, r0 + ldr r0, [r4, 0x10] + cmp r0, r1 + ble _08003260 + ldr r3, [r5, 0xC] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r2, r0 + mov r9, r12 + mov r10, r2 + mov r12, r3 + ldr r6, [r5, 0x10] + mov r8, r6 + ldr r7, [sp, 0xC] + cmp r12, r7 + ble _08003222 +_0800320A: + adds r2, r1, 0 + subs r2, 0x18 + adds r0, r2, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + subs r3, 0x1 + adds r1, r2, 0 + ldr r0, [sp, 0xC] + cmp r3, r0 + bgt _0800320A +_08003222: + mov r2, r12 + adds r2, 0x1 + ldr r1, [sp, 0x8] + str r2, [r1, 0xC] + cmp r2, r8 + ble _08003240 + ldr r0, _08003238 + ldr r1, _0800323C + mov r3, r8 + bl FatalError + .align 2, 0 +_08003238: .4byte gUnknown_80B7EB8 +_0800323C: .4byte gUnknown_80B7EC4 +_08003240: + ldr r0, [sp, 0xC] + add r0, r9 + lsls r0, 3 + adds r0, 0x18 + mov r2, r10 + adds r1, r2, r0 + ldr r0, [r1, 0xC] + ldr r5, [sp, 0x10] + adds r0, r5 + str r0, [r1, 0xC] + ldr r0, [r1, 0x10] + subs r0, r5 + str r0, [r1, 0x10] + str r5, [r4, 0x10] + ldr r6, [sp, 0x4] + str r6, [r4, 0x14] +_08003260: + ldr r0, [sp] + bl xxx_memory_attr_related + str r0, [r4] + ldr r7, [sp] + str r7, [r4, 0x4] + ldr r0, [sp, 0x34] + str r0, [r4, 0x8] + adds r0, r4, 0 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end MemorySplitFront + + thumb_func_start MemorySplitBack +MemorySplitBack: + push {r4-r7,lr} + mov r7, r10 + mov r6, r9 + mov r5, r8 + push {r5-r7} + sub sp, 0x14 + str r0, [sp, 0x8] + str r1, [sp, 0xC] + str r2, [sp] + str r3, [sp, 0x4] + adds r0, r3, 0 + adds r0, 0x3 + str r0, [sp, 0x10] + movs r0, 0x4 + negs r0, r0 + ldr r1, [sp, 0x10] + ands r1, r0 + str r1, [sp, 0x10] + ldr r2, [sp, 0xC] + lsls r0, r2, 1 + adds r0, r2 + lsls r0, 3 + ldr r5, [sp, 0x8] + ldr r1, [r5, 0x8] + adds r4, r1, r0 + ldr r0, [r4, 0x10] + ldr r6, [sp, 0x10] + cmp r0, r6 + ble _08003328 + ldr r3, [r5, 0xC] + lsls r0, r3, 1 + adds r0, r3 + lsls r0, 3 + adds r1, r0 + mov r12, r3 + ldr r7, [r5, 0x10] + mov r8, r7 + ldr r0, [r4, 0xC] + mov r9, r0 + movs r2, 0x18 + adds r2, r4 + mov r10, r2 + ldr r5, [sp, 0xC] + cmp r12, r5 + ble _080032F6 +_080032DE: + adds r2, r1, 0 + subs r2, 0x18 + adds r0, r2, 0 + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + ldm r0!, {r5-r7} + stm r1!, {r5-r7} + subs r3, 0x1 + adds r1, r2, 0 + ldr r6, [sp, 0xC] + cmp r3, r6 + bgt _080032DE +_080032F6: + mov r2, r12 + adds r2, 0x1 + ldr r7, [sp, 0x8] + str r2, [r7, 0xC] + cmp r2, r8 + ble _08003314 + ldr r0, _0800330C + ldr r1, _08003310 + mov r3, r8 + bl FatalError + .align 2, 0 +_0800330C: .4byte gUnknown_80B7EFC +_08003310: .4byte gUnknown_80B7EC4 +_08003314: + ldr r0, [r4, 0x10] + ldr r1, [sp, 0x10] + subs r0, r1 + str r0, [r4, 0x10] + add r0, r9 + mov r4, r10 + str r0, [r4, 0xC] + str r1, [r4, 0x10] + ldr r2, [sp, 0x4] + str r2, [r4, 0x14] +_08003328: + ldr r0, [sp] + bl xxx_memory_attr_related + str r0, [r4] + ldr r5, [sp] + str r5, [r4, 0x4] + ldr r0, [sp, 0x34] + str r0, [r4, 0x8] + adds r0, r4, 0 + add sp, 0x14 + pop {r3-r5} + mov r8, r3 + mov r9, r4 + mov r10, r5 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end MemorySplitBack + + thumb_func_start MemoryLocateSet +MemoryLocateSet: + push {r4-r7,lr} + sub sp, 0x8 + adds r5, r0, 0 + adds r7, r1, 0 + adds r6, r2, 0 + cmp r5, 0 + bne _0800335C + ldr r5, _08003390 +_0800335C: + asrs r4, r6, 8 + movs r0, 0x1 + orrs r4, r0 + movs r0, 0xFF + ands r6, r0 + movs r0, 0x2 + ands r0, r4 + cmp r0, 0 + beq _08003394 + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r7, 0 + bl MemorySearchFromFront + adds r1, r0, 0 + cmp r1, 0 + blt _080033B4 + str r6, [sp] + adds r0, r5, 0 + adds r2, r4, 0 + adds r3, r7, 0 + bl MemorySplitFront + ldr r0, [r0, 0xC] + b _080033CC + .align 2, 0 +_08003390: .4byte gUnknown_2000EB0 +_08003394: + adds r0, r5, 0 + adds r1, r4, 0 + adds r2, r7, 0 + bl MemorySearchFromBack + adds r1, r0, 0 + cmp r1, 0 + blt _080033B4 + str r6, [sp] + adds r0, r5, 0 + adds r2, r4, 0 + adds r3, r7, 0 + bl MemorySplitBack + ldr r0, [r0, 0xC] + b _080033CC +_080033B4: + ldr r0, _080033C4 + ldr r1, _080033C8 + str r4, [sp] + str r6, [sp, 0x4] + adds r2, r5, 0 + adds r3, r7, 0 + bl FatalError + .align 2, 0 +_080033C4: .4byte gUnknown_80B7F14 +_080033C8: .4byte gUnknown_80B7F20 +_080033CC: + add sp, 0x8 + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end MemoryLocateSet + + thumb_func_start MemoryAlloc +MemoryAlloc: + push {lr} + adds r3, r0, 0 + adds r2, r1, 0 + ldr r0, _080033E8 + adds r1, r3, 0 + bl DoAlloc + pop {r1} + bx r1 + .align 2, 0 +_080033E8: .4byte gUnknown_2000EB0 + thumb_func_end MemoryAlloc + + thumb_func_start MemoryFree +MemoryFree: + push {lr} + adds r1, r0, 0 + ldr r0, _080033FC + bl DoFree + pop {r0} + bx r0 + .align 2, 0 +_080033FC: .4byte gUnknown_2000EB0 + thumb_func_end MemoryFree + + thumb_func_start CreateSubHeap +CreateSubHeap: + push {r4-r7,lr} + sub sp, 0xC + adds r4, r0, 0 + adds r5, r1, 0 + adds r7, r2, 0 + adds r6, r3, 0 + cmp r4, 0 + bne _08003412 + ldr r4, _0800342C +_08003412: + adds r0, r4, 0 + movs r1, 0x9 + adds r2, r5, 0 + bl MemorySearchFromBack + adds r1, r0, 0 + cmp r1, 0 + bge _08003438 + ldr r0, _08003430 + ldr r1, _08003434 + adds r2, r5, 0 + bl FatalError + .align 2, 0 +_0800342C: .4byte gUnknown_2000EB0 +_08003430: .4byte gUnknown_80B7F88 +_08003434: .4byte gUnknown_80B7F94 +_08003438: + str r6, [sp] + adds r0, r4, 0 + movs r2, 0x9 + adds r3, r5, 0 + bl MemorySplitBack + ldr r1, [r0, 0xC] + str r1, [sp, 0x4] + ldr r0, [r0, 0x10] + str r0, [sp, 0x8] + add r0, sp, 0x4 + adds r1, r7, 0 + bl DoCreateSubHeap + str r4, [r0, 0x4] + add sp, 0xC + pop {r4-r7} + pop {r1} + bx r1 + thumb_func_end CreateSubHeap + + thumb_func_start DoCreateSubHeap +DoCreateSubHeap: + push {r4,lr} + sub sp, 0x8 + adds r2, r1, 0 + ldr r4, [r0] + adds r1, r4, 0 + adds r1, 0x1C + str r1, [sp] + ldr r0, [r0, 0x4] + subs r0, 0x1C + str r0, [sp, 0x4] + adds r0, r4, 0 + mov r1, sp + bl InitSubHeap + adds r0, r4, 0 + add sp, 0x8 + pop {r4} + pop {r1} + bx r1 + thumb_func_end DoCreateSubHeap + + thumb_func_start xxx_unused_memory_free +xxx_unused_memory_free: + push {r4-r7,lr} + adds r4, r0, 0 + cmp r4, 0 + beq _08003504 + movs r1, 0 + ldr r0, [r4, 0xC] + cmp r0, 0x1 + bne _080034A2 + ldr r0, [r4, 0x8] + ldr r0, [r0, 0x4] + cmp r0, 0 + bne _080034A2 + movs r1, 0x1 +_080034A2: + cmp r1, 0 + beq _08003504 + movs r0, 0 + mov r12, r0 + movs r3, 0 + ldr r6, _080034E0 + ldr r0, [r6] + cmp r12, r0 + bge _080034F2 + ldr r5, _080034E4 + adds r1, r6, 0 + adds r7, r5, 0 + movs r2, 0 +_080034BC: + adds r0, r2, r5 + ldr r0, [r0] + cmp r0, r4 + bne _080034E8 + ldr r0, [r1] + subs r0, 0x1 + str r0, [r1] + cmp r3, r0 + bge _080034F8 + ldr r1, _080034E0 + adds r2, r7 +_080034D2: + ldr r0, [r2, 0x4] + stm r2!, {r0} + adds r3, 0x1 + ldr r0, [r1] + cmp r3, r0 + blt _080034D2 + b _080034F8 + .align 2, 0 +_080034E0: .4byte gUnknown_2000EA8 +_080034E4: .4byte gUnknown_2000E88 +_080034E8: + adds r2, 0x4 + adds r3, 0x1 + ldr r0, [r6] + cmp r3, r0 + blt _080034BC +_080034F2: + mov r0, r12 + cmp r0, 0 + beq _08003504 +_080034F8: + ldr r0, [r4, 0x4] + cmp r0, 0 + beq _08003504 + adds r1, r4, 0 + bl DoFree +_08003504: + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end xxx_unused_memory_free + + thumb_func_start DoAlloc +DoAlloc: + push {lr} + movs r3, 0x80 + lsls r3, 1 + orrs r3, r2 + adds r2, r3, 0 + bl MemoryLocateSet + pop {r1} + bx r1 + thumb_func_end DoAlloc + + thumb_func_start DoFree +DoFree: + push {r4-r7,lr} + mov r7, r8 + push {r7} + adds r4, r0, 0 + cmp r4, 0 + bne _0800352E + ldr r4, _080035D4 +_0800352E: + cmp r1, 0 + beq _080035E4 + movs r0, 0 + mov r8, r0 + ldr r3, [r4, 0x8] + mov r12, r3 + ldr r3, [r4, 0xC] + cmp r8, r3 + bge _080035E4 + movs r2, 0 +_08003542: + mov r5, r12 + ldr r0, [r5, 0xC] + cmp r0, r1 + bne _080035D8 + str r2, [r5] + str r2, [r5, 0x4] + str r2, [r5, 0x14] + str r2, [r5, 0x8] + ldr r0, [r4, 0xC] + subs r0, 0x1 + cmp r8, r0 + bge _08003592 + mov r2, r12 + adds r2, 0x18 + ldr r0, [r2, 0x4] + cmp r0, 0 + bne _08003592 + ldr r0, [r5, 0x10] + ldr r1, [r2, 0x10] + adds r0, r1 + str r0, [r5, 0x10] + ldr r0, [r4, 0xC] + subs r0, 0x1 + str r0, [r4, 0xC] + mov r3, r8 + adds r3, 0x1 + cmp r3, r0 + bge _08003592 +_0800357A: + adds r0, r2, 0 + adds r1, r2, 0 + adds r1, 0x18 + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + adds r3, 0x1 + adds r2, 0x18 + ldr r0, [r4, 0xC] + cmp r3, r0 + blt _0800357A +_08003592: + mov r6, r8 + cmp r6, 0 + ble _080035E4 + mov r2, r12 + subs r2, 0x18 + ldr r0, [r2, 0x4] + cmp r0, 0 + bne _080035E4 + ldr r0, [r2, 0x10] + mov r7, r12 + ldr r1, [r7, 0x10] + adds r0, r1 + str r0, [r2, 0x10] + ldr r0, [r4, 0xC] + subs r0, 0x1 + str r0, [r4, 0xC] + mov r2, r12 + mov r3, r8 + cmp r3, r0 + bge _080035E4 +_080035BA: + adds r0, r2, 0 + adds r1, r2, 0 + adds r1, 0x18 + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + ldm r1!, {r5-r7} + stm r0!, {r5-r7} + adds r3, 0x1 + adds r2, 0x18 + ldr r0, [r4, 0xC] + cmp r3, r0 + blt _080035BA + b _080035E4 + .align 2, 0 +_080035D4: .4byte gUnknown_2000EB0 +_080035D8: + movs r0, 0x1 + add r8, r0 + movs r5, 0x18 + add r12, r5 + cmp r8, r3 + blt _08003542 +_080035E4: + pop {r3} + mov r8, r3 + pop {r4-r7} + pop {r0} + bx r0 + thumb_func_end DoFree + + .align 2, 0 @ Don't pad with nop. diff --git a/ld_script.txt b/ld_script.txt index 847e6cc..7869f1b 100644 --- a/ld_script.txt +++ b/ld_script.txt @@ -35,6 +35,8 @@ SECTIONS { { asm/crt0.o(.text); asm/code.o(.text); + asm/memory.o(.text); + asm/code_80035F0.o(.text); src/random.o(.text); asm/code_8006218.o(.text); src/main.o(.text); |