summaryrefslogtreecommitdiff
path: root/asm/pixel_buffer.s
diff options
context:
space:
mode:
authorYamaArashi <shadow962@live.com>2015-10-06 05:46:30 -0700
committerYamaArashi <shadow962@live.com>2015-10-06 05:46:30 -0700
commit25342bcf33e2662a916b93e47e405df6024e30bd (patch)
tree0426703bc9a2873f2ff112022730eea61952bd70 /asm/pixel_buffer.s
parentb05c4231a9692eed9640b6503917592ebbfea797 (diff)
split out some code
Diffstat (limited to 'asm/pixel_buffer.s')
-rw-r--r--asm/pixel_buffer.s809
1 files changed, 809 insertions, 0 deletions
diff --git a/asm/pixel_buffer.s b/asm/pixel_buffer.s
new file mode 100644
index 000000000..e45102453
--- /dev/null
+++ b/asm/pixel_buffer.s
@@ -0,0 +1,809 @@
+ thumb_func_start sub_8002BDC
+sub_8002BDC: @ 8002BDC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x14
+ ldr r4, [sp, 0x2C]
+ ldr r5, [sp, 0x30]
+ ldr r6, [sp, 0x34]
+ ldr r7, [sp, 0x38]
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r6, 16
+ lsrs r6, 16
+ lsls r7, 16
+ lsrs r7, 16
+ str r4, [sp]
+ str r5, [sp, 0x4]
+ str r6, [sp, 0x8]
+ str r7, [sp, 0xC]
+ movs r4, 0xFF
+ str r4, [sp, 0x10]
+ bl PixelBlock_CopyRect4Bpp
+ add sp, 0x14
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8002BDC
+
+ thumb_func_start PixelBlock_CopyRect4Bpp
+PixelBlock_CopyRect4Bpp: @ 8002C20
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x2C
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ ldr r0, [sp, 0x4C]
+ ldr r1, [sp, 0x50]
+ ldr r4, [sp, 0x54]
+ ldr r5, [sp, 0x58]
+ ldr r6, [sp, 0x5C]
+ lsls r2, 16
+ lsrs r2, 16
+ str r2, [sp, 0x8]
+ lsls r3, 16
+ lsrs r7, r3, 16
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0xC]
+ lsls r1, 16
+ lsrs r1, 16
+ mov r9, r1
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r6, 24
+ lsrs r6, 24
+ str r6, [sp, 0x10]
+ ldr r0, [sp, 0x4]
+ ldrh r3, [r0, 0x4]
+ ldr r1, [sp, 0xC]
+ subs r0, r3, r1
+ adds r2, r4
+ mov r8, r2
+ cmp r0, r4
+ bge _08002C74
+ ldr r2, [sp, 0x8]
+ adds r0, r2
+ mov r8, r0
+_08002C74:
+ ldr r4, [sp, 0x4]
+ ldrh r0, [r4, 0x6]
+ mov r1, r9
+ subs r0, r1
+ adds r2, r5, r7
+ str r2, [sp, 0x14]
+ cmp r0, r5
+ bge _08002C88
+ adds r0, r7
+ str r0, [sp, 0x14]
+_08002C88:
+ ldr r4, [sp]
+ ldrh r1, [r4, 0x4]
+ movs r2, 0x7
+ adds r0, r1, 0
+ ands r0, r2
+ adds r1, r0
+ asrs r1, 3
+ str r1, [sp, 0x18]
+ adds r0, r3, 0
+ ands r0, r2
+ adds r0, r3, r0
+ asrs r0, 3
+ str r0, [sp, 0x1C]
+ ldr r0, [sp, 0x10]
+ cmp r0, 0xFF
+ bne _08002D46
+ adds r3, r7, 0
+ mov r1, r9
+ ldr r2, [sp, 0x14]
+ cmp r3, r2
+ blt _08002CB4
+ b _08002DEE
+_08002CB4:
+ ldr r5, [sp, 0x8]
+ ldr r6, [sp, 0xC]
+ adds r4, r3, 0x1
+ str r4, [sp, 0x24]
+ adds r0, r1, 0x1
+ str r0, [sp, 0x28]
+ cmp r5, r8
+ bge _08002D3A
+ movs r7, 0x3
+ asrs r0, r3, 3
+ ldr r2, [sp, 0x18]
+ muls r0, r2
+ lsls r0, 5
+ mov r10, r0
+ lsls r0, r3, 29
+ lsrs r0, 27
+ mov r9, r0
+ asrs r0, r1, 3
+ ldr r4, [sp, 0x1C]
+ muls r0, r4
+ lsls r0, 5
+ mov r12, r0
+ lsls r0, r1, 29
+ lsrs r3, r0, 27
+_08002CE4:
+ asrs r0, r5, 1
+ ands r0, r7
+ ldr r2, [sp]
+ ldr r1, [r2]
+ adds r1, r0
+ asrs r0, r5, 3
+ lsls r0, 5
+ adds r1, r0
+ add r1, r10
+ mov r4, r9
+ adds r2, r1, r4
+ asrs r0, r6, 1
+ ands r0, r7
+ ldr r4, [sp, 0x4]
+ ldr r1, [r4]
+ adds r1, r0
+ asrs r0, r6, 3
+ lsls r0, 5
+ adds r1, r0
+ add r1, r12
+ adds r4, r1, r3
+ ldrb r2, [r2]
+ adds r0, r5, 0
+ movs r1, 0x1
+ ands r0, r1
+ lsls r0, 2
+ asrs r2, r0
+ movs r0, 0xF
+ ands r2, r0
+ adds r0, r6, 0
+ ands r0, r1
+ lsls r1, r0, 2
+ lsls r2, r1
+ movs r0, 0xF0
+ asrs r0, r1
+ ldrb r1, [r4]
+ ands r0, r1
+ orrs r2, r0
+ strb r2, [r4]
+ adds r5, 0x1
+ adds r6, 0x1
+ cmp r5, r8
+ blt _08002CE4
+_08002D3A:
+ ldr r3, [sp, 0x24]
+ ldr r1, [sp, 0x28]
+ ldr r2, [sp, 0x14]
+ cmp r3, r2
+ blt _08002CB4
+ b _08002DEE
+_08002D46:
+ adds r3, r7, 0
+ mov r1, r9
+ ldr r4, [sp, 0x14]
+ cmp r3, r4
+ bge _08002DEE
+_08002D50:
+ ldr r5, [sp, 0x8]
+ ldr r6, [sp, 0xC]
+ adds r0, r3, 0x1
+ str r0, [sp, 0x24]
+ adds r2, r1, 0x1
+ str r2, [sp, 0x28]
+ cmp r5, r8
+ bge _08002DE4
+ movs r4, 0x3
+ mov r9, r4
+ asrs r0, r3, 3
+ ldr r2, [sp, 0x18]
+ muls r0, r2
+ lsls r0, 5
+ str r0, [sp, 0x20]
+ lsls r0, r3, 29
+ lsrs r0, 27
+ mov r10, r0
+ movs r3, 0x1
+ asrs r0, r1, 3
+ ldr r4, [sp, 0x1C]
+ muls r0, r4
+ lsls r0, 5
+ mov r12, r0
+ lsls r0, r1, 29
+ lsrs r7, r0, 27
+_08002D84:
+ asrs r0, r5, 1
+ mov r1, r9
+ ands r0, r1
+ ldr r2, [sp]
+ ldr r1, [r2]
+ adds r1, r0
+ asrs r0, r5, 3
+ lsls r0, 5
+ adds r1, r0
+ ldr r4, [sp, 0x20]
+ adds r1, r4
+ mov r0, r10
+ adds r2, r1, r0
+ asrs r0, r6, 1
+ mov r1, r9
+ ands r0, r1
+ ldr r4, [sp, 0x4]
+ ldr r1, [r4]
+ adds r1, r0
+ asrs r0, r6, 3
+ lsls r0, 5
+ adds r1, r0
+ add r1, r12
+ adds r4, r1, r7
+ ldrb r2, [r2]
+ adds r0, r5, 0
+ ands r0, r3
+ lsls r0, 2
+ asrs r2, r0
+ movs r0, 0xF
+ ands r2, r0
+ ldr r0, [sp, 0x10]
+ cmp r2, r0
+ beq _08002DDC
+ adds r0, r6, 0
+ ands r0, r3
+ lsls r1, r0, 2
+ lsls r2, r1
+ movs r0, 0xF0
+ asrs r0, r1
+ ldrb r1, [r4]
+ ands r0, r1
+ orrs r2, r0
+ strb r2, [r4]
+_08002DDC:
+ adds r5, 0x1
+ adds r6, 0x1
+ cmp r5, r8
+ blt _08002D84
+_08002DE4:
+ ldr r3, [sp, 0x24]
+ ldr r1, [sp, 0x28]
+ ldr r2, [sp, 0x14]
+ cmp r3, r2
+ blt _08002D50
+_08002DEE:
+ add sp, 0x2C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end PixelBlock_CopyRect4Bpp
+
+ thumb_func_start PixelBlock_FillRect4Bpp
+PixelBlock_FillRect4Bpp: @ 8002E00
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ mov r9, r0
+ ldr r0, [sp, 0x28]
+ ldr r4, [sp, 0x2C]
+ lsls r1, 16
+ lsrs r1, 16
+ str r1, [sp]
+ lsls r2, 16
+ lsrs r2, 16
+ adds r6, r2, 0
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 24
+ lsrs r5, r4, 24
+ adds r4, r1, r3
+ mov r3, r9
+ ldrh r1, [r3, 0x4]
+ cmp r4, r1
+ ble _08002E36
+ adds r4, r1, 0
+_08002E36:
+ adds r2, r0
+ mov r12, r2
+ mov r2, r9
+ ldrh r0, [r2, 0x6]
+ cmp r12, r0
+ ble _08002E44
+ mov r12, r0
+_08002E44:
+ movs r0, 0x7
+ ands r0, r1
+ adds r0, r1, r0
+ asrs r0, 3
+ str r0, [sp, 0x4]
+ lsls r0, r5, 28
+ lsrs r0, 24
+ mov r8, r0
+ movs r3, 0xF
+ mov r10, r3
+ mov r0, r10
+ ands r0, r5
+ mov r10, r0
+ adds r1, r6, 0
+ cmp r1, r12
+ bge _08002EB6
+_08002E64:
+ ldr r3, [sp]
+ adds r7, r1, 0x1
+ cmp r3, r4
+ bge _08002EB0
+ asrs r0, r1, 3
+ ldr r2, [sp, 0x4]
+ muls r0, r2
+ lsls r6, r0, 5
+ lsls r0, r1, 29
+ lsrs r5, r0, 27
+_08002E78:
+ asrs r2, r3, 1
+ movs r0, 0x3
+ ands r2, r0
+ mov r0, r9
+ ldr r1, [r0]
+ adds r1, r2
+ asrs r0, r3, 3
+ lsls r0, 5
+ adds r1, r0
+ adds r1, r6
+ adds r2, r1, r5
+ lsls r0, r3, 31
+ cmp r0, 0
+ beq _08002E9E
+ ldrb r1, [r2]
+ movs r0, 0xF
+ ands r0, r1
+ mov r1, r8
+ b _08002EA6
+_08002E9E:
+ ldrb r1, [r2]
+ movs r0, 0xF0
+ ands r0, r1
+ mov r1, r10
+_08002EA6:
+ orrs r0, r1
+ strb r0, [r2]
+ adds r3, 0x1
+ cmp r3, r4
+ blt _08002E78
+_08002EB0:
+ adds r1, r7, 0
+ cmp r1, r12
+ blt _08002E64
+_08002EB6:
+ 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 PixelBlock_FillRect4Bpp
+
+ thumb_func_start PixelBlock_CopyRect4BppTo8Bpp
+PixelBlock_CopyRect4BppTo8Bpp: @ 8002EC8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x3C
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ ldr r0, [sp, 0x5C]
+ ldr r1, [sp, 0x60]
+ ldr r5, [sp, 0x64]
+ ldr r4, [sp, 0x68]
+ ldr r6, [sp, 0x6C]
+ ldr r7, [sp, 0x70]
+ mov r8, r7
+ lsls r2, 16
+ lsrs r2, 16
+ str r2, [sp, 0x8]
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r0, 16
+ lsrs r0, 16
+ str r0, [sp, 0xC]
+ lsls r1, 16
+ lsrs r7, r1, 16
+ lsls r5, 16
+ lsrs r5, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r6, 24
+ lsrs r6, 24
+ str r6, [sp, 0x10]
+ mov r0, r8
+ lsls r0, 28
+ lsrs r0, 24
+ str r0, [sp, 0x14]
+ lsls r0, r6, 28
+ lsrs r0, 24
+ str r0, [sp, 0x28]
+ ldr r1, [sp, 0x4]
+ ldrh r0, [r1, 0x4]
+ ldr r2, [sp, 0xC]
+ subs r0, r2
+ ldr r1, [sp, 0x8]
+ adds r1, r5, r1
+ str r1, [sp, 0x18]
+ cmp r0, r5
+ bge _08002F2E
+ ldr r2, [sp, 0x8]
+ adds r0, r2
+ str r0, [sp, 0x18]
+_08002F2E:
+ ldr r5, [sp, 0x4]
+ ldrh r1, [r5, 0x6]
+ subs r0, r1, r7
+ cmp r0, r4
+ bge _08002F40
+ adds r0, r3, r1
+ subs r0, r7
+ str r0, [sp, 0x1C]
+ b _08002F44
+_08002F40:
+ adds r4, r3, r4
+ str r4, [sp, 0x1C]
+_08002F44:
+ ldr r0, [sp]
+ ldrh r1, [r0, 0x4]
+ movs r2, 0x7
+ adds r0, r1, 0
+ ands r0, r2
+ adds r1, r0
+ asrs r1, 3
+ str r1, [sp, 0x20]
+ ldr r5, [sp, 0x4]
+ ldrh r1, [r5, 0x4]
+ adds r0, r1, 0
+ ands r0, r2
+ adds r1, r0
+ asrs r1, 3
+ str r1, [sp, 0x24]
+ ldr r0, [sp, 0x10]
+ cmp r0, 0xFF
+ bne _08003024
+ adds r2, r3, 0
+ adds r5, r7, 0
+ ldr r1, [sp, 0x1C]
+ cmp r2, r1
+ blt _08002F74
+ b _08003106
+_08002F74:
+ ldr r3, [sp, 0x8]
+ lsrs r3, 1
+ str r3, [sp, 0x2C]
+ movs r0, 0x3
+ ands r3, r0
+ str r3, [sp, 0x2C]
+ ldr r7, [sp, 0x8]
+ lsrs r0, r7, 3
+ lsls r0, 5
+ str r0, [sp, 0x30]
+_08002F88:
+ ldr r0, [sp]
+ ldr r1, [r0]
+ ldr r3, [sp, 0x2C]
+ adds r1, r3
+ ldr r7, [sp, 0x30]
+ adds r1, r7
+ asrs r0, r2, 3
+ ldr r3, [sp, 0x20]
+ muls r0, r3
+ lsls r0, 5
+ mov r8, r0
+ add r1, r8
+ lsls r0, r2, 29
+ lsrs r7, r0, 27
+ adds r6, r1, r7
+ ldr r3, [sp, 0x8]
+ ldr r4, [sp, 0xC]
+ adds r2, 0x1
+ mov r10, r2
+ adds r0, r5, 0x1
+ str r0, [sp, 0x38]
+ ldr r1, [sp, 0x18]
+ cmp r3, r1
+ bge _08003018
+ asrs r0, r5, 3
+ ldr r2, [sp, 0x24]
+ muls r0, r2
+ lsls r0, 6
+ mov r12, r0
+ lsls r0, r5, 29
+ lsrs r0, 26
+ mov r9, r0
+_08002FC8:
+ movs r0, 0x7
+ ands r0, r4
+ ldr r5, [sp, 0x4]
+ ldr r1, [r5]
+ adds r1, r0
+ asrs r0, r4, 3
+ lsls r0, 6
+ adds r1, r0
+ add r1, r12
+ mov r0, r9
+ adds r5, r1, r0
+ movs r0, 0x1
+ ands r0, r3
+ cmp r0, 0
+ beq _08002FEC
+ ldrb r0, [r6]
+ lsrs r0, 4
+ b _08003008
+_08002FEC:
+ asrs r2, r3, 1
+ movs r0, 0x3
+ ands r2, r0
+ ldr r0, [sp]
+ ldr r1, [r0]
+ adds r1, r2
+ asrs r0, r3, 3
+ lsls r0, 5
+ adds r1, r0
+ add r1, r8
+ adds r6, r1, r7
+ ldrb r1, [r6]
+ movs r0, 0xF
+ ands r0, r1
+_08003008:
+ ldr r1, [sp, 0x14]
+ adds r0, r1, r0
+ strb r0, [r5]
+ adds r3, 0x1
+ adds r4, 0x1
+ ldr r2, [sp, 0x18]
+ cmp r3, r2
+ blt _08002FC8
+_08003018:
+ mov r2, r10
+ ldr r5, [sp, 0x38]
+ ldr r3, [sp, 0x1C]
+ cmp r2, r3
+ blt _08002F88
+ b _08003106
+_08003024:
+ adds r2, r3, 0
+ adds r5, r7, 0
+ ldr r7, [sp, 0x1C]
+ cmp r2, r7
+ bge _08003106
+ ldr r0, [sp, 0x8]
+ lsrs r0, 1
+ str r0, [sp, 0x34]
+ movs r0, 0x3
+ ldr r1, [sp, 0x34]
+ ands r1, r0
+ str r1, [sp, 0x34]
+_0800303C:
+ ldr r3, [sp]
+ ldr r1, [r3]
+ ldr r7, [sp, 0x34]
+ adds r1, r7
+ ldr r3, [sp, 0x8]
+ lsrs r0, r3, 3
+ lsls r0, 5
+ adds r1, r0
+ asrs r0, r2, 3
+ ldr r7, [sp, 0x20]
+ muls r0, r7
+ lsls r0, 5
+ mov r8, r0
+ add r1, r8
+ lsls r0, r2, 29
+ lsrs r7, r0, 27
+ adds r6, r1, r7
+ ldr r4, [sp, 0xC]
+ adds r2, 0x1
+ mov r10, r2
+ adds r0, r5, 0x1
+ str r0, [sp, 0x38]
+ ldr r1, [sp, 0x18]
+ cmp r3, r1
+ bge _080030FC
+ asrs r0, r5, 3
+ ldr r2, [sp, 0x24]
+ muls r0, r2
+ lsls r0, 6
+ mov r9, r0
+ lsls r0, r5, 29
+ lsrs r0, 26
+ mov r12, r0
+_0800307E:
+ movs r0, 0x1
+ ands r0, r3
+ cmp r0, 0
+ beq _080030B2
+ ldrb r2, [r6]
+ movs r0, 0xF0
+ ands r0, r2
+ ldr r5, [sp, 0x28]
+ cmp r0, r5
+ beq _080030F2
+ adds r0, r4, 0
+ movs r1, 0x7
+ ands r0, r1
+ ldr r5, [sp, 0x4]
+ ldr r1, [r5]
+ adds r1, r0
+ asrs r0, r4, 3
+ lsls r0, 6
+ adds r1, r0
+ add r1, r9
+ mov r0, r12
+ adds r5, r1, r0
+ lsrs r0, r2, 4
+ ldr r1, [sp, 0x14]
+ adds r0, r1, r0
+ b _080030F0
+_080030B2:
+ asrs r2, r3, 1
+ movs r0, 0x3
+ ands r2, r0
+ ldr r5, [sp]
+ ldr r1, [r5]
+ adds r1, r2
+ asrs r0, r3, 3
+ lsls r0, 5
+ adds r1, r0
+ add r1, r8
+ adds r6, r1, r7
+ ldrb r0, [r6]
+ movs r2, 0xF
+ ands r2, r0
+ ldr r0, [sp, 0x10]
+ cmp r2, r0
+ beq _080030F2
+ adds r0, r4, 0
+ movs r1, 0x7
+ ands r0, r1
+ ldr r5, [sp, 0x4]
+ ldr r1, [r5]
+ adds r1, r0
+ asrs r0, r4, 3
+ lsls r0, 6
+ adds r1, r0
+ add r1, r9
+ mov r0, r12
+ adds r5, r1, r0
+ ldr r1, [sp, 0x14]
+ adds r0, r1, r2
+_080030F0:
+ strb r0, [r5]
+_080030F2:
+ adds r3, 0x1
+ adds r4, 0x1
+ ldr r2, [sp, 0x18]
+ cmp r3, r2
+ blt _0800307E
+_080030FC:
+ mov r2, r10
+ ldr r5, [sp, 0x38]
+ ldr r3, [sp, 0x1C]
+ cmp r2, r3
+ blt _0800303C
+_08003106:
+ add sp, 0x3C
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end PixelBlock_CopyRect4BppTo8Bpp
+
+ thumb_func_start PixelBlock_FillRect8Bpp
+PixelBlock_FillRect8Bpp: @ 8003118
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ mov r8, r0
+ ldr r0, [sp, 0x28]
+ ldr r4, [sp, 0x2C]
+ lsls r1, 16
+ lsrs r1, 16
+ mov r10, r1
+ lsls r2, 16
+ lsrs r2, 16
+ adds r6, r2, 0
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r0, 16
+ lsrs r0, 16
+ lsls r4, 24
+ lsrs r4, 24
+ mov r9, r4
+ adds r5, r1, r3
+ mov r3, r8
+ ldrh r1, [r3, 0x4]
+ cmp r5, r1
+ ble _08003150
+ adds r5, r1, 0
+_08003150:
+ adds r7, r2, r0
+ mov r2, r8
+ ldrh r0, [r2, 0x6]
+ cmp r7, r0
+ ble _0800315C
+ adds r7, r0, 0
+_0800315C:
+ movs r0, 0x7
+ ands r0, r1
+ adds r0, r1, r0
+ asrs r0, 3
+ str r0, [sp]
+ adds r1, r6, 0
+ cmp r1, r7
+ bge _080031AC
+_0800316C:
+ mov r3, r10
+ adds r6, r1, 0x1
+ str r6, [sp, 0x4]
+ cmp r3, r5
+ bge _080031A6
+ movs r0, 0x7
+ mov r12, r0
+ asrs r0, r1, 3
+ ldr r2, [sp]
+ muls r0, r2
+ lsls r4, r0, 6
+ lsls r0, r1, 29
+ lsrs r2, r0, 26
+_08003186:
+ adds r0, r3, 0
+ mov r6, r12
+ ands r0, r6
+ mov r6, r8
+ ldr r1, [r6]
+ adds r1, r0
+ asrs r0, r3, 3
+ lsls r0, 6
+ adds r1, r0
+ adds r1, r4
+ adds r1, r2
+ mov r0, r9
+ strb r0, [r1]
+ adds r3, 0x1
+ cmp r3, r5
+ blt _08003186
+_080031A6:
+ ldr r1, [sp, 0x4]
+ cmp r1, r7
+ blt _0800316C
+_080031AC:
+ 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 PixelBlock_FillRect8Bpp