summaryrefslogtreecommitdiff
path: root/asm/window.s
diff options
context:
space:
mode:
authorsceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
committersceptillion <33798691+sceptillion@users.noreply.github.com>2017-12-16 23:54:22 -0800
commit670fef77ac4d9116d5fdc28c0da40622919a062b (patch)
tree61c0e925f059404473826ac775305ba5e2706ab1 /asm/window.s
first commit
Diffstat (limited to 'asm/window.s')
-rw-r--r--asm/window.s2039
1 files changed, 2039 insertions, 0 deletions
diff --git a/asm/window.s b/asm/window.s
new file mode 100644
index 000000000..b65bd849e
--- /dev/null
+++ b/asm/window.s
@@ -0,0 +1,2039 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start nullsub_6
+nullsub_6: @ 8003B20
+ bx lr
+ thumb_func_end nullsub_6
+
+ thumb_func_start sub_8003B24
+sub_8003B24: @ 8003B24
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r5, r0, 0
+ movs r0, 0
+ mov r8, r0
+ ldr r4, _08003BB8 @ =gUnknown_3003E40
+_08003B38:
+ mov r1, r8
+ lsls r0, r1, 24
+ lsrs r0, 24
+ bl sub_8002008
+ cmp r0, 0
+ beq _08003B48
+ ldr r0, _08003BBC @ =nullsub_6
+_08003B48:
+ str r0, [r4]
+ adds r4, 0x4
+ movs r2, 0x1
+ add r8, r2
+ mov r0, r8
+ cmp r0, 0x3
+ ble _08003B38
+ ldr r0, _08003BC0 @ =gUnknown_81EA144
+ ldr r2, [r0]
+ ldr r3, [r0, 0x4]
+ ldr r1, _08003BC4 @ =gUnknown_20204B4
+ movs r0, 0
+ movs r4, 0x1F
+ mov r8, r4
+_08003B64:
+ str r2, [r1]
+ str r3, [r1, 0x4]
+ str r0, [r1, 0x8]
+ adds r1, 0xC
+ movs r4, 0x1
+ negs r4, r4
+ add r8, r4
+ mov r4, r8
+ cmp r4, 0
+ bge _08003B64
+ movs r0, 0
+ mov r8, r0
+ movs r1, 0
+ str r1, [sp]
+ ldrb r7, [r5]
+ cmp r7, 0xFF
+ bne _08003B88
+ b _08003CC0
+_08003B88:
+ adds r6, r5, 0
+ movs r2, 0
+ str r2, [sp, 0x4]
+_08003B8E:
+ ldr r0, _08003BC8 @ =gUnknown_3003D8C
+ ldr r0, [r0]
+ cmp r0, 0x1
+ bne _08003BCC
+ ldrb r1, [r6, 0x3]
+ ldrb r0, [r6, 0x4]
+ adds r2, r1, 0
+ muls r2, r0
+ adds r0, r7, 0
+ movs r1, 0
+ movs r3, 0
+ bl sub_80014F0
+ str r0, [sp]
+ movs r0, 0x1
+ negs r0, r0
+ ldr r4, [sp]
+ cmp r4, r0
+ bne _08003BCC
+_08003BB4:
+ movs r0, 0
+ b _08003CC8
+ .align 2, 0
+_08003BB8: .4byte gUnknown_3003E40
+_08003BBC: .4byte nullsub_6
+_08003BC0: .4byte gUnknown_81EA144
+_08003BC4: .4byte gUnknown_20204B4
+_08003BC8: .4byte gUnknown_3003D8C
+_08003BCC:
+ ldr r0, _08003C04 @ =gUnknown_3003E40
+ mov r9, r0
+ lsls r0, r7, 2
+ mov r2, r9
+ adds r1, r0, r2
+ ldr r1, [r1]
+ mov r10, r0
+ cmp r1, 0
+ bne _08003C2E
+ adds r0, r7, 0
+ movs r1, 0x8
+ bl sub_8001AA8
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldr r0, _08003C08 @ =0x0000ffff
+ cmp r5, r0
+ beq _08003C2E
+ adds r0, r5, 0
+ bl sub_8002B9C
+ adds r4, r0, 0
+ cmp r4, 0
+ bne _08003C0C
+ bl sub_8003ECC
+ b _08003BB4
+ .align 2, 0
+_08003C04: .4byte gUnknown_3003E40
+_08003C08: .4byte 0x0000ffff
+_08003C0C:
+ movs r1, 0
+ mov r3, r9
+ cmp r1, r5
+ bge _08003C20
+ movs r2, 0
+_08003C16:
+ adds r0, r4, r1
+ strb r2, [r0]
+ adds r1, 0x1
+ cmp r1, r5
+ blt _08003C16
+_08003C20:
+ mov r1, r10
+ adds r0, r1, r3
+ str r4, [r0]
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl sub_8001FA0
+_08003C2E:
+ ldrb r1, [r6, 0x3]
+ ldrb r0, [r6, 0x4]
+ muls r0, r1
+ lsls r0, 21
+ lsrs r0, 16
+ bl sub_8002B9C
+ adds r4, r0, 0
+ cmp r4, 0
+ bne _08003C70
+ adds r0, r7, 0
+ bl sub_8004A34
+ lsls r0, 24
+ cmp r0, 0
+ bne _08003BB4
+ ldr r0, _08003C68 @ =gUnknown_3003E40
+ mov r2, r10
+ adds r5, r2, r0
+ ldr r1, [r5]
+ ldr r0, _08003C6C @ =nullsub_6
+ cmp r1, r0
+ beq _08003BB4
+ adds r0, r1, 0
+ bl sub_8002BC4
+ str r4, [r5]
+ b _08003BB4
+ .align 2, 0
+_08003C68: .4byte gUnknown_3003E40
+_08003C6C: .4byte nullsub_6
+_08003C70:
+ ldr r1, _08003CD8 @ =gUnknown_20204B4
+ adds r0, r1, 0
+ adds r0, 0x8
+ ldr r2, [sp, 0x4]
+ adds r0, r2, r0
+ str r4, [r0]
+ adds r2, r1
+ ldr r0, [r6]
+ ldr r1, [r6, 0x4]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ ldr r0, _08003CDC @ =gUnknown_3003D8C
+ ldr r0, [r0]
+ cmp r0, 0x1
+ bne _08003CA6
+ mov r4, sp
+ ldrh r4, [r4]
+ strh r4, [r2, 0x6]
+ ldrb r0, [r6, 0x3]
+ ldrb r1, [r6, 0x4]
+ adds r2, r0, 0
+ muls r2, r1
+ adds r0, r7, 0
+ ldr r1, [sp]
+ movs r3, 0x1
+ bl sub_80014F0
+_08003CA6:
+ adds r6, 0x8
+ ldr r0, [sp, 0x4]
+ adds r0, 0xC
+ str r0, [sp, 0x4]
+ movs r1, 0x1
+ add r8, r1
+ ldrb r7, [r6]
+ cmp r7, 0xFF
+ beq _08003CC0
+ mov r2, r8
+ cmp r2, 0x1F
+ bgt _08003CC0
+ b _08003B8E
+_08003CC0:
+ ldr r1, _08003CE0 @ =gUnknown_3003E30
+ movs r0, 0
+ strb r0, [r1]
+ movs r0, 0x1
+_08003CC8:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08003CD8: .4byte gUnknown_20204B4
+_08003CDC: .4byte gUnknown_3003D8C
+_08003CE0: .4byte gUnknown_3003E30
+ thumb_func_end sub_8003B24
+
+ thumb_func_start sub_8003CE4
+sub_8003CE4: @ 8003CE4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x4
+ mov r8, r0
+ movs r6, 0
+ ldr r1, _08003DD4 @ =gUnknown_20204B4
+ ldrb r0, [r1]
+ cmp r0, 0xFF
+ beq _08003D14
+_08003CFC:
+ adds r0, r6, 0x1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ cmp r6, 0x1F
+ bhi _08003D14
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r0, r1
+ ldrb r0, [r0]
+ cmp r0, 0xFF
+ bne _08003CFC
+_08003D14:
+ cmp r6, 0x20
+ beq _08003DCE
+ mov r0, r8
+ ldrb r7, [r0]
+ movs r1, 0
+ mov r9, r1
+ ldr r0, _08003DD8 @ =gUnknown_3003D8C
+ ldr r0, [r0]
+ cmp r0, 0x1
+ bne _08003D46
+ mov r2, r8
+ ldrb r1, [r2, 0x3]
+ ldrb r0, [r2, 0x4]
+ adds r2, r1, 0
+ muls r2, r0
+ adds r0, r7, 0
+ movs r1, 0
+ movs r3, 0
+ bl sub_80014F0
+ mov r9, r0
+ movs r0, 0x1
+ negs r0, r0
+ cmp r9, r0
+ beq _08003DCE
+_08003D46:
+ ldr r3, _08003DDC @ =gUnknown_3003E40
+ mov r10, r3
+ lsls r0, r7, 2
+ adds r1, r0, r3
+ ldr r1, [r1]
+ str r0, [sp]
+ cmp r1, 0
+ bne _08003D96
+ adds r0, r7, 0
+ movs r1, 0x8
+ bl sub_8001AA8
+ lsls r0, 16
+ lsrs r5, r0, 16
+ ldr r0, _08003DE0 @ =0x0000ffff
+ cmp r5, r0
+ beq _08003D96
+ adds r0, r5, 0
+ bl sub_8002B9C
+ adds r4, r0, 0
+ cmp r4, 0
+ beq _08003DCE
+ movs r1, 0
+ mov r3, r10
+ cmp r1, r5
+ bge _08003D88
+ movs r2, 0
+_08003D7E:
+ adds r0, r4, r1
+ strb r2, [r0]
+ adds r1, 0x1
+ cmp r1, r5
+ blt _08003D7E
+_08003D88:
+ ldr r1, [sp]
+ adds r0, r1, r3
+ str r4, [r0]
+ adds r0, r7, 0
+ adds r1, r4, 0
+ bl sub_8001FA0
+_08003D96:
+ mov r2, r8
+ ldrb r1, [r2, 0x3]
+ ldrb r0, [r2, 0x4]
+ muls r0, r1
+ lsls r0, 21
+ lsrs r0, 16
+ bl sub_8002B9C
+ adds r4, r0, 0
+ cmp r4, 0
+ bne _08003DE8
+ adds r0, r7, 0
+ bl sub_8004A34
+ lsls r0, 24
+ cmp r0, 0
+ bne _08003DCE
+ ldr r0, _08003DDC @ =gUnknown_3003E40
+ ldr r3, [sp]
+ adds r5, r3, r0
+ ldr r1, [r5]
+ ldr r0, _08003DE4 @ =nullsub_6
+ cmp r1, r0
+ beq _08003DCE
+ adds r0, r1, 0
+ bl sub_8002BC4
+ str r4, [r5]
+_08003DCE:
+ movs r0, 0xFF
+ b _08003E24
+ .align 2, 0
+_08003DD4: .4byte gUnknown_20204B4
+_08003DD8: .4byte gUnknown_3003D8C
+_08003DDC: .4byte gUnknown_3003E40
+_08003DE0: .4byte 0x0000ffff
+_08003DE4: .4byte nullsub_6
+_08003DE8:
+ ldr r2, _08003E34 @ =gUnknown_20204B4
+ lsls r1, r6, 1
+ adds r1, r6
+ lsls r1, 2
+ adds r0, r2, 0
+ adds r0, 0x8
+ adds r0, r1, r0
+ str r4, [r0]
+ adds r2, r1, r2
+ mov r3, r8
+ ldr r0, [r3]
+ ldr r1, [r3, 0x4]
+ str r0, [r2]
+ str r1, [r2, 0x4]
+ ldr r0, _08003E38 @ =gUnknown_3003D8C
+ ldr r0, [r0]
+ cmp r0, 0x1
+ bne _08003E22
+ mov r0, r9
+ strh r0, [r2, 0x6]
+ ldrb r0, [r2, 0x3]
+ ldrb r1, [r2, 0x4]
+ adds r2, r0, 0
+ muls r2, r1
+ adds r0, r7, 0
+ mov r1, r9
+ movs r3, 0x1
+ bl sub_80014F0
+_08003E22:
+ adds r0, r6, 0
+_08003E24:
+ 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
+_08003E34: .4byte gUnknown_20204B4
+_08003E38: .4byte gUnknown_3003D8C
+ thumb_func_end sub_8003CE4
+
+ thumb_func_start sub_8003E3C
+sub_8003E3C: @ 8003E3C
+ push {r4-r7,lr}
+ lsls r0, 24
+ lsrs r6, r0, 24
+ ldr r1, _08003EB8 @ =gUnknown_20204B4
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r4, r0, r1
+ ldrb r3, [r4]
+ adds r7, r3, 0
+ ldr r0, _08003EBC @ =gUnknown_3003D8C
+ ldr r0, [r0]
+ cmp r0, 0x1
+ bne _08003E68
+ ldrh r1, [r4, 0x6]
+ ldrb r2, [r4, 0x3]
+ ldrb r0, [r4, 0x4]
+ muls r2, r0
+ adds r0, r3, 0
+ movs r3, 0x2
+ bl sub_80014F0
+_08003E68:
+ ldr r0, _08003EC0 @ =gUnknown_81EA144
+ ldr r1, [r0, 0x4]
+ ldr r0, [r0]
+ str r0, [r4]
+ str r1, [r4, 0x4]
+ adds r0, r7, 0
+ bl sub_8004A34
+ lsls r0, 24
+ lsrs r5, r0, 24
+ cmp r5, 0
+ bne _08003E96
+ ldr r0, _08003EC4 @ =gUnknown_3003E40
+ lsls r1, r7, 2
+ adds r4, r1, r0
+ ldr r1, [r4]
+ ldr r0, _08003EC8 @ =nullsub_6
+ cmp r1, r0
+ beq _08003E96
+ adds r0, r1, 0
+ bl sub_8002BC4
+ str r5, [r4]
+_08003E96:
+ ldr r1, _08003EB8 @ =gUnknown_20204B4
+ lsls r0, r6, 1
+ adds r0, r6
+ lsls r0, 2
+ adds r1, 0x8
+ adds r4, r0, r1
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _08003EB0
+ bl sub_8002BC4
+ movs r0, 0
+ str r0, [r4]
+_08003EB0:
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08003EB8: .4byte gUnknown_20204B4
+_08003EBC: .4byte gUnknown_3003D8C
+_08003EC0: .4byte gUnknown_81EA144
+_08003EC4: .4byte gUnknown_3003E40
+_08003EC8: .4byte nullsub_6
+ thumb_func_end sub_8003E3C
+
+ thumb_func_start sub_8003ECC
+sub_8003ECC: @ 8003ECC
+ push {r4-r6,lr}
+ ldr r4, _08003F14 @ =gUnknown_3003E40
+ movs r5, 0x3
+_08003ED2:
+ ldr r1, [r4]
+ cmp r1, 0
+ beq _08003EE8
+ ldr r0, _08003F18 @ =nullsub_6
+ cmp r1, r0
+ beq _08003EE8
+ adds r0, r1, 0
+ bl sub_8002BC4
+ movs r0, 0
+ str r0, [r4]
+_08003EE8:
+ adds r4, 0x4
+ subs r5, 0x1
+ cmp r5, 0
+ bge _08003ED2
+ ldr r0, _08003F1C @ =gUnknown_20204B4
+ adds r4, r0, 0
+ adds r4, 0x8
+ movs r6, 0
+ movs r5, 0x1F
+_08003EFA:
+ ldr r0, [r4]
+ cmp r0, 0
+ beq _08003F06
+ bl sub_8002BC4
+ str r6, [r4]
+_08003F06:
+ adds r4, 0xC
+ subs r5, 0x1
+ cmp r5, 0
+ bge _08003EFA
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08003F14: .4byte gUnknown_3003E40
+_08003F18: .4byte nullsub_6
+_08003F1C: .4byte gUnknown_20204B4
+ thumb_func_end sub_8003ECC
+
+ thumb_func_start sub_8003F20
+sub_8003F20: @ 8003F20
+ push {r4-r6,lr}
+ sub sp, 0xC
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r3, r1, 24
+ adds r5, r3, 0
+ ldr r2, _08003F58 @ =gUnknown_20204B4
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ mov r0, sp
+ adds r1, r2
+ ldm r1!, {r2,r4,r6}
+ stm r0!, {r2,r4,r6}
+ mov r0, sp
+ ldrb r1, [r0, 0x3]
+ ldrb r0, [r0, 0x4]
+ muls r0, r1
+ lsls r0, 21
+ lsrs r4, r0, 16
+ cmp r3, 0x2
+ beq _08003F6C
+ cmp r3, 0x2
+ bgt _08003F5C
+ cmp r3, 0x1
+ beq _08003F62
+ b _08003F96
+ .align 2, 0
+_08003F58: .4byte gUnknown_20204B4
+_08003F5C:
+ cmp r5, 0x3
+ beq _08003F7E
+ b _08003F96
+_08003F62:
+ mov r0, sp
+ ldrb r0, [r0]
+ bl sub_80020BC
+ b _08003F96
+_08003F6C:
+ mov r0, sp
+ ldrb r0, [r0]
+ ldr r1, [sp, 0x8]
+ mov r2, sp
+ ldrh r3, [r2, 0x6]
+ adds r2, r4, 0
+ bl sub_80017D0
+ b _08003F96
+_08003F7E:
+ mov r0, sp
+ ldrb r0, [r0]
+ ldr r1, [sp, 0x8]
+ mov r2, sp
+ ldrh r3, [r2, 0x6]
+ adds r2, r4, 0
+ bl sub_80017D0
+ mov r0, sp
+ ldrb r0, [r0]
+ bl sub_80020BC
+_08003F96:
+ add sp, 0xC
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_8003F20
+
+ thumb_func_start sub_8003FA0
+sub_8003FA0: @ 8003FA0
+ push {r4,lr}
+ sub sp, 0x1C
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08003FFC @ =gUnknown_20204B4
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ add r0, sp, 0x10
+ adds r1, r2
+ ldm r1!, {r2-r4}
+ stm r0!, {r2-r4}
+ add r0, sp, 0x10
+ ldrb r0, [r0]
+ movs r1, 0xA
+ bl sub_8001AA8
+ adds r1, r0, 0
+ add r0, sp, 0x10
+ ldrh r0, [r0, 0x6]
+ adds r1, r0
+ lsls r1, 16
+ lsrs r1, 16
+ add r0, sp, 0x10
+ ldrb r0, [r0]
+ add r2, sp, 0x10
+ ldrb r2, [r2, 0x1]
+ add r3, sp, 0x10
+ ldrb r3, [r3, 0x2]
+ add r4, sp, 0x10
+ ldrb r4, [r4, 0x3]
+ str r4, [sp]
+ add r4, sp, 0x10
+ ldrb r4, [r4, 0x4]
+ str r4, [sp, 0x4]
+ add r4, sp, 0x10
+ ldrb r4, [r4, 0x5]
+ str r4, [sp, 0x8]
+ movs r4, 0x1
+ str r4, [sp, 0xC]
+ bl sub_8002590
+ add sp, 0x1C
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08003FFC: .4byte gUnknown_20204B4
+ thumb_func_end sub_8003FA0
+
+ thumb_func_start sub_8004000
+sub_8004000: @ 8004000
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x24
+ ldr r4, [sp, 0x44]
+ ldr r5, [sp, 0x48]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ lsls r3, 24
+ lsrs r3, 24
+ str r3, [sp, 0x1C]
+ lsls r4, 24
+ lsrs r4, 24
+ mov r8, r4
+ lsls r5, 24
+ lsrs r5, 24
+ str r5, [sp, 0x20]
+ ldr r2, _080040B4 @ =gUnknown_20204B4
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ add r0, sp, 0x10
+ adds r1, r2
+ ldm r1!, {r2-r4}
+ stm r0!, {r2-r4}
+ add r0, sp, 0x10
+ ldrb r0, [r0]
+ movs r1, 0xA
+ bl sub_8001AA8
+ add r2, sp, 0x10
+ adds r1, r2, 0
+ ldrb r1, [r1, 0x3]
+ mov r3, r9
+ muls r3, r1
+ adds r1, r3, 0
+ ldrh r2, [r2, 0x6]
+ adds r1, r2
+ add r1, r10
+ adds r0, r1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ movs r5, 0
+ cmp r5, r8
+ bge _080040A2
+ add r4, sp, 0x10
+ movs r7, 0x1
+_0800406E:
+ ldrb r0, [r4]
+ ldrb r2, [r4, 0x1]
+ add r2, r10
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ add r3, r9
+ adds r3, r5
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r1, [sp, 0x1C]
+ str r1, [sp]
+ str r7, [sp, 0x4]
+ ldr r1, [sp, 0x20]
+ str r1, [sp, 0x8]
+ str r7, [sp, 0xC]
+ adds r1, r6, 0
+ bl sub_8002590
+ ldrb r0, [r4, 0x3]
+ adds r0, r6, r0
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r5, 0x1
+ cmp r5, r8
+ blt _0800406E
+_080040A2:
+ add sp, 0x24
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080040B4: .4byte gUnknown_20204B4
+ thumb_func_end sub_8004000
+
+ thumb_func_start sub_80040B8
+sub_80040B8: @ 80040B8
+ push {r4,lr}
+ sub sp, 0x18
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _08004100 @ =gUnknown_20204B4
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ add r0, sp, 0xC
+ adds r1, r2
+ ldm r1!, {r2-r4}
+ stm r0!, {r2-r4}
+ add r0, sp, 0xC
+ ldrb r0, [r0]
+ ldr r1, _08004104 @ =gUnknown_3003E30
+ ldrb r1, [r1]
+ add r2, sp, 0xC
+ ldrb r2, [r2, 0x1]
+ add r3, sp, 0xC
+ ldrb r3, [r3, 0x2]
+ add r4, sp, 0xC
+ ldrb r4, [r4, 0x3]
+ str r4, [sp]
+ add r4, sp, 0xC
+ ldrb r4, [r4, 0x4]
+ str r4, [sp, 0x4]
+ add r4, sp, 0xC
+ ldrb r4, [r4, 0x5]
+ str r4, [sp, 0x8]
+ bl sub_8002554
+ add sp, 0x18
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08004100: .4byte gUnknown_20204B4
+_08004104: .4byte gUnknown_3003E30
+ thumb_func_end sub_80040B8
+
+ thumb_func_start sub_8004108
+sub_8004108: @ 8004108
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ ldr r4, [sp, 0x40]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r10, r1
+ lsls r2, 24
+ lsrs r2, 24
+ mov r9, r2
+ lsls r3, 24
+ lsrs r3, 24
+ str r3, [sp, 0x1C]
+ lsls r4, 24
+ lsrs r4, 24
+ mov r8, r4
+ ldr r2, _080041B4 @ =gUnknown_20204B4
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ add r0, sp, 0x10
+ adds r1, r2
+ ldm r1!, {r2-r4}
+ stm r0!, {r2-r4}
+ add r0, sp, 0x10
+ ldrb r0, [r0]
+ movs r1, 0xA
+ bl sub_8001AA8
+ add r2, sp, 0x10
+ adds r1, r2, 0
+ ldrb r1, [r1, 0x3]
+ mov r3, r9
+ muls r3, r1
+ adds r1, r3, 0
+ ldrh r2, [r2, 0x6]
+ adds r1, r2
+ add r1, r10
+ adds r0, r1
+ lsls r0, 16
+ lsrs r6, r0, 16
+ movs r5, 0
+ cmp r5, r8
+ bge _080041A2
+ add r4, sp, 0x10
+ movs r7, 0x1
+_0800416E:
+ ldrb r0, [r4]
+ ldrb r2, [r4, 0x1]
+ add r2, r10
+ lsls r2, 24
+ lsrs r2, 24
+ ldrb r3, [r4, 0x2]
+ add r3, r9
+ adds r3, r5
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r1, [sp, 0x1C]
+ str r1, [sp]
+ str r7, [sp, 0x4]
+ ldrb r1, [r4, 0x5]
+ str r1, [sp, 0x8]
+ str r7, [sp, 0xC]
+ adds r1, r6, 0
+ bl sub_8002590
+ ldrb r0, [r4, 0x3]
+ adds r0, r6, r0
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r5, 0x1
+ cmp r5, r8
+ blt _0800416E
+_080041A2:
+ add sp, 0x20
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080041B4: .4byte gUnknown_20204B4
+ thumb_func_end sub_8004108
+
+ thumb_func_start sub_80041B8
+sub_80041B8: @ 80041B8
+ push {r4,r5,lr}
+ sub sp, 0x18
+ ldr r4, [sp, 0x24]
+ ldr r5, [sp, 0x28]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r4, 16
+ lsrs r4, 16
+ lsls r5, 16
+ lsrs r5, 16
+ str r4, [sp]
+ str r5, [sp, 0x4]
+ str r2, [sp, 0x8]
+ str r3, [sp, 0xC]
+ str r4, [sp, 0x10]
+ str r5, [sp, 0x14]
+ movs r2, 0
+ movs r3, 0
+ bl sub_80041F0
+ add sp, 0x18
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80041B8
+
+ thumb_func_start sub_80041F0
+sub_80041F0: @ 80041F0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x24
+ ldr r4, [sp, 0x44]
+ ldr r5, [sp, 0x48]
+ ldr r6, [sp, 0x4C]
+ mov r8, r6
+ ldr r6, [sp, 0x50]
+ mov r9, r6
+ ldr r6, [sp, 0x54]
+ mov r10, r6
+ ldr r6, [sp, 0x58]
+ mov r12, r6
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r4, 16
+ mov r6, r8
+ lsls r6, 16
+ lsrs r6, 16
+ mov r8, r6
+ mov r6, r9
+ lsls r6, 16
+ lsrs r6, 16
+ mov r9, r6
+ mov r6, r10
+ lsls r6, 16
+ lsrs r6, 16
+ mov r10, r6
+ mov r6, r12
+ lsls r6, 16
+ lsrs r6, 16
+ mov r12, r6
+ str r1, [sp, 0x14]
+ ldr r7, _080042A4 @ =0xffff0000
+ lsls r5, 16
+ ldr r6, _080042A8 @ =0x0000ffff
+ lsrs r4, 16
+ orrs r4, r5
+ str r4, [sp, 0x18]
+ ldr r1, _080042AC @ =gUnknown_20204B4
+ lsls r5, r0, 1
+ adds r5, r0
+ lsls r5, 2
+ adds r0, r1, 0
+ adds r0, 0x8
+ adds r0, r5, r0
+ ldr r0, [r0]
+ str r0, [sp, 0x1C]
+ adds r5, r1
+ ldrb r0, [r5, 0x3]
+ lsls r0, 3
+ add r1, sp, 0x1C
+ ldr r4, [r1, 0x4]
+ ands r4, r7
+ orrs r4, r0
+ str r4, [r1, 0x4]
+ ldrb r0, [r5, 0x4]
+ lsls r0, 19
+ ands r6, r4
+ orrs r6, r0
+ str r6, [r1, 0x4]
+ mov r0, r8
+ str r0, [sp]
+ mov r6, r9
+ str r6, [sp, 0x4]
+ mov r0, r10
+ str r0, [sp, 0x8]
+ mov r6, r12
+ str r6, [sp, 0xC]
+ movs r0, 0
+ str r0, [sp, 0x10]
+ add r0, sp, 0x14
+ bl sub_8004AA4
+ add sp, 0x24
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080042A4: .4byte 0xffff0000
+_080042A8: .4byte 0x0000ffff
+_080042AC: .4byte gUnknown_20204B4
+ thumb_func_end sub_80041F0
+
+ thumb_func_start sub_80042B0
+sub_80042B0: @ 80042B0
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x28
+ ldr r4, [sp, 0x48]
+ ldr r5, [sp, 0x4C]
+ ldr r6, [sp, 0x50]
+ mov r8, r6
+ ldr r7, [sp, 0x54]
+ mov r9, r7
+ ldr r6, [sp, 0x58]
+ mov r10, r6
+ ldr r7, [sp, 0x5C]
+ mov r12, r7
+ ldr r6, [sp, 0x60]
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r2, 16
+ lsrs r2, 16
+ lsls r3, 16
+ lsrs r3, 16
+ lsls r4, 16
+ mov r7, r8
+ lsls r7, 16
+ lsrs r7, 16
+ mov r8, r7
+ mov r7, r9
+ lsls r7, 16
+ lsrs r7, 16
+ mov r9, r7
+ mov r7, r10
+ lsls r7, 16
+ lsrs r7, 16
+ mov r10, r7
+ mov r7, r12
+ lsls r7, 16
+ lsrs r7, 16
+ mov r12, r7
+ lsls r6, 24
+ lsrs r6, 24
+ str r6, [sp, 0x24]
+ str r1, [sp, 0x14]
+ lsls r5, 16
+ ldr r6, _0800436C @ =0x0000ffff
+ lsrs r4, 16
+ orrs r4, r5
+ str r4, [sp, 0x18]
+ ldr r1, _08004370 @ =gUnknown_20204B4
+ lsls r5, r0, 1
+ adds r5, r0
+ lsls r5, 2
+ adds r0, r1, 0
+ adds r0, 0x8
+ adds r0, r5, r0
+ ldr r0, [r0]
+ str r0, [sp, 0x1C]
+ adds r5, r1
+ ldrb r0, [r5, 0x3]
+ lsls r0, 3
+ add r1, sp, 0x1C
+ ldr r4, [r1, 0x4]
+ ldr r7, _08004374 @ =0xffff0000
+ ands r4, r7
+ orrs r4, r0
+ str r4, [r1, 0x4]
+ ldrb r0, [r5, 0x4]
+ lsls r0, 19
+ ands r6, r4
+ orrs r6, r0
+ str r6, [r1, 0x4]
+ mov r0, r8
+ str r0, [sp]
+ mov r6, r9
+ str r6, [sp, 0x4]
+ mov r7, r10
+ str r7, [sp, 0x8]
+ mov r0, r12
+ str r0, [sp, 0xC]
+ ldr r6, [sp, 0x24]
+ str r6, [sp, 0x10]
+ add r0, sp, 0x14
+ bl sub_8004AA4
+ add sp, 0x28
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0800436C: .4byte 0x0000ffff
+_08004370: .4byte gUnknown_20204B4
+_08004374: .4byte 0xffff0000
+ thumb_func_end sub_80042B0
+
+ thumb_func_start sub_8004378
+sub_8004378: @ 8004378
+ push {r4-r6,lr}
+ mov r6, r9
+ mov r5, r8
+ push {r5,r6}
+ sub sp, 0x10
+ mov r9, r3
+ ldr r3, [sp, 0x28]
+ ldr r4, [sp, 0x2C]
+ mov r8, r4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ lsls r2, 16
+ lsrs r2, 16
+ mov r4, r9
+ lsls r4, 16
+ lsrs r4, 16
+ mov r9, r4
+ lsls r3, 16
+ lsrs r3, 16
+ mov r4, r8
+ lsls r4, 16
+ lsrs r4, 16
+ mov r8, r4
+ ldr r5, _080043F8 @ =gUnknown_20204B4
+ lsls r4, r0, 1
+ adds r4, r0
+ lsls r4, 2
+ adds r0, r5, 0
+ adds r0, 0x8
+ adds r0, r4, r0
+ ldr r0, [r0]
+ str r0, [sp, 0x8]
+ adds r4, r5
+ ldrb r0, [r4, 0x3]
+ lsls r0, 3
+ ldr r6, _080043FC @ =0xffff0000
+ ldr r5, [sp, 0xC]
+ ands r5, r6
+ orrs r5, r0
+ str r5, [sp, 0xC]
+ ldrb r4, [r4, 0x4]
+ lsls r4, 19
+ ldr r0, _08004400 @ =0x0000ffff
+ ands r0, r5
+ orrs r0, r4
+ str r0, [sp, 0xC]
+ mov r0, r8
+ str r0, [sp]
+ str r1, [sp, 0x4]
+ add r0, sp, 0x8
+ adds r1, r2, 0
+ mov r2, r9
+ bl sub_8004C84
+ add sp, 0x10
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080043F8: .4byte gUnknown_20204B4
+_080043FC: .4byte 0xffff0000
+_08004400: .4byte 0x0000ffff
+ thumb_func_end sub_8004378
+
+ thumb_func_start sub_8004404
+sub_8004404: @ 8004404
+ push {r4-r6,lr}
+ adds r6, r1, 0
+ lsls r0, 24
+ lsrs r4, r0, 24
+ lsls r5, r2, 16
+ lsls r3, 16
+ lsrs r2, r3, 16
+ cmp r5, 0
+ beq _08004438
+ ldr r1, _08004434 @ =gUnknown_20204B4
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 2
+ adds r1, 0x8
+ adds r0, r1
+ lsls r2, 5
+ ldr r1, [r0]
+ adds r1, r2
+ lsrs r2, r5, 17
+ adds r0, r6, 0
+ bl CpuSet
+ b _08004450
+ .align 2, 0
+_08004434: .4byte gUnknown_20204B4
+_08004438:
+ ldr r1, _08004458 @ =gUnknown_20204B4
+ lsls r0, r4, 1
+ adds r0, r4
+ lsls r0, 2
+ adds r1, 0x8
+ adds r0, r1
+ lsls r2, 5
+ ldr r1, [r0]
+ adds r1, r2
+ adds r0, r6, 0
+ bl LZ77UnCompWram
+_08004450:
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_08004458: .4byte gUnknown_20204B4
+ thumb_func_end sub_8004404
+
+ thumb_func_start sub_800445C
+sub_800445C: @ 800445C
+ push {r4,r5,lr}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ ldr r5, _080044A4 @ =gUnknown_20204B4
+ lsls r4, r0, 1
+ adds r4, r0
+ lsls r4, 2
+ adds r0, r4, r5
+ ldrb r2, [r0, 0x3]
+ ldrb r0, [r0, 0x4]
+ muls r2, r0
+ lsls r0, r1, 24
+ lsls r3, r1, 16
+ orrs r0, r3
+ lsls r3, r1, 8
+ orrs r0, r3
+ orrs r0, r1
+ str r0, [sp]
+ adds r5, 0x8
+ adds r4, r5
+ ldr r1, [r4]
+ lsls r2, 3
+ movs r0, 0x80
+ lsls r0, 17
+ orrs r2, r0
+ mov r0, sp
+ bl CpuFastSet
+ add sp, 0x4
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080044A4: .4byte gUnknown_20204B4
+ thumb_func_end sub_800445C
+
+ thumb_func_start sub_80044A8
+sub_80044A8: @ 80044A8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ lsls r0, 24
+ lsrs r0, 24
+ lsls r1, 24
+ lsrs r1, 24
+ mov r8, r1
+ lsls r2, 24
+ lsrs r2, 24
+ str r2, [sp]
+ lsls r3, 24
+ lsrs r3, 24
+ ldr r2, _08004544 @ =gUnknown_20204B4
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r4, r1, r2
+ adds r2, 0x8
+ adds r1, r2
+ ldr r5, [r1]
+ lsls r7, r3, 24
+ lsls r0, r3, 16
+ orrs r7, r0
+ lsls r0, r3, 8
+ orrs r7, r0
+ orrs r7, r3
+ ldr r1, [r4]
+ ldr r2, [r4, 0x4]
+ ldrb r3, [r4, 0x4]
+ lsrs r0, r1, 24
+ muls r0, r3
+ lsls r6, r0, 5
+ lsrs r1, 24
+ mov r12, r1
+ mov r0, r8
+ cmp r0, 0x1
+ bne _080044FC
+ b _080046B2
+_080044FC:
+ cmp r0, 0x1
+ ble _08004502
+ b _0800485A
+_08004502:
+ cmp r0, 0
+ beq _08004508
+ b _0800485A
+_08004508:
+ movs r4, 0
+ cmp r4, r6
+ blt _08004510
+ b _0800485A
+_08004510:
+ movs r1, 0x8
+ negs r1, r1
+ mov r9, r1
+ movs r2, 0x7
+ mov r8, r2
+ mov r10, r5
+_0800451C:
+ ldr r3, [sp]
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ adds r0, r3, 0
+ mov r2, r8
+ ands r0, r2
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _08004548
+ adds r0, r5, r1
+ ldr r0, [r0]
+ mov r1, r10
+ str r0, [r1]
+ b _0800454C
+ .align 2, 0
+_08004544: .4byte gUnknown_20204B4
+_08004548:
+ mov r2, r10
+ str r7, [r2]
+_0800454C:
+ adds r3, 0x1
+ adds r2, r4, 0x4
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _08004578
+ adds r0, r5, r2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _0800457C
+_08004578:
+ adds r0, r5, r2
+ str r7, [r0]
+_0800457C:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x8
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _080045AA
+ adds r0, r5, r2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _080045AE
+_080045AA:
+ adds r0, r5, r2
+ str r7, [r0]
+_080045AE:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0xC
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _080045DC
+ adds r0, r5, r2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _080045E0
+_080045DC:
+ adds r0, r5, r2
+ str r7, [r0]
+_080045E0:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x10
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _0800460E
+ adds r0, r5, r2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08004612
+_0800460E:
+ adds r0, r5, r2
+ str r7, [r0]
+_08004612:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x14
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _08004640
+ adds r0, r5, r2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08004644
+_08004640:
+ adds r0, r5, r2
+ str r7, [r0]
+_08004644:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x18
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _08004672
+ adds r0, r5, r2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08004676
+_08004672:
+ adds r0, r5, r2
+ str r7, [r0]
+_08004676:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x1C
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ adds r0, r1, 0
+ mov r1, r8
+ ands r3, r1
+ orrs r0, r3
+ lsls r0, 2
+ adds r1, r4, r0
+ cmp r1, r6
+ bge _080046A0
+ adds r0, r5, r2
+ adds r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _080046A4
+_080046A0:
+ adds r0, r5, r2
+ str r7, [r0]
+_080046A4:
+ movs r2, 0x20
+ add r10, r2
+ adds r4, 0x20
+ cmp r4, r6
+ bge _080046B0
+ b _0800451C
+_080046B0:
+ b _0800485A
+_080046B2:
+ subs r0, r6, 0x4
+ adds r5, r0
+ movs r4, 0
+ cmp r4, r6
+ blt _080046BE
+ b _0800485A
+_080046BE:
+ movs r0, 0x8
+ negs r0, r0
+ mov r9, r0
+ movs r1, 0x7
+ mov r8, r1
+ mov r10, r5
+_080046CA:
+ ldr r3, [sp]
+ adds r0, r3, 0
+ mov r2, r9
+ ands r0, r2
+ mov r1, r12
+ muls r1, r0
+ adds r0, r3, 0
+ mov r2, r8
+ ands r0, r2
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _080046F0
+ subs r0, r5, r1
+ ldr r0, [r0]
+ mov r1, r10
+ str r0, [r1]
+ b _080046F4
+_080046F0:
+ mov r2, r10
+ str r7, [r2]
+_080046F4:
+ adds r3, 0x1
+ adds r2, r4, 0x4
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _08004720
+ subs r0, r5, r2
+ subs r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08004724
+_08004720:
+ subs r0, r5, r2
+ str r7, [r0]
+_08004724:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x8
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _08004752
+ subs r0, r5, r2
+ subs r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08004756
+_08004752:
+ subs r0, r5, r2
+ str r7, [r0]
+_08004756:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0xC
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _08004784
+ subs r0, r5, r2
+ subs r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _08004788
+_08004784:
+ subs r0, r5, r2
+ str r7, [r0]
+_08004788:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x10
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _080047B6
+ subs r0, r5, r2
+ subs r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _080047BA
+_080047B6:
+ subs r0, r5, r2
+ str r7, [r0]
+_080047BA:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x14
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _080047E8
+ subs r0, r5, r2
+ subs r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _080047EC
+_080047E8:
+ subs r0, r5, r2
+ str r7, [r0]
+_080047EC:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x18
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ str r1, [sp, 0x4]
+ adds r0, r3, 0
+ mov r1, r8
+ ands r0, r1
+ ldr r1, [sp, 0x4]
+ orrs r1, r0
+ lsls r1, 2
+ adds r1, r4, r1
+ cmp r1, r6
+ bge _0800481A
+ subs r0, r5, r2
+ subs r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _0800481E
+_0800481A:
+ subs r0, r5, r2
+ str r7, [r0]
+_0800481E:
+ adds r3, 0x1
+ adds r2, r4, 0
+ adds r2, 0x1C
+ adds r0, r3, 0
+ mov r1, r9
+ ands r0, r1
+ mov r1, r12
+ muls r1, r0
+ adds r0, r1, 0
+ mov r1, r8
+ ands r3, r1
+ orrs r0, r3
+ lsls r0, 2
+ adds r1, r4, r0
+ cmp r1, r6
+ bge _08004848
+ subs r0, r5, r2
+ subs r1, r5, r1
+ ldr r1, [r1]
+ str r1, [r0]
+ b _0800484C
+_08004848:
+ subs r0, r5, r2
+ str r7, [r0]
+_0800484C:
+ movs r2, 0x20
+ negs r2, r2
+ add r10, r2
+ adds r4, 0x20
+ cmp r4, r6
+ bge _0800485A
+ b _080046CA
+_0800485A:
+ 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_80044A8
+
+ thumb_func_start sub_800486C
+sub_800486C: @ 800486C
+ push {r4-r6,lr}
+ mov r6, r8
+ push {r6}
+ sub sp, 0x8
+ mov r8, r1
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, _080048B8 @ =gUnknown_20204B4
+ lsls r1, r0, 1
+ adds r1, r0
+ lsls r1, 2
+ adds r1, r2
+ ldr r5, [r1]
+ ldr r6, [r1, 0x4]
+ ldrb r0, [r1]
+ lsrs r1, r5, 8
+ lsls r1, 24
+ lsrs r1, 24
+ lsrs r2, r5, 16
+ lsls r2, 24
+ lsrs r2, 24
+ lsrs r3, r5, 24
+ lsls r4, r6, 24
+ lsrs r4, 24
+ str r4, [sp]
+ lsrs r4, r6, 8
+ lsls r4, 24
+ lsrs r4, 24
+ str r4, [sp, 0x4]
+ bl _call_via_r8
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r6}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080048B8: .4byte gUnknown_20204B4
+ thumb_func_end sub_800486C
+
+ thumb_func_start sub_80048BC
+sub_80048BC: @ 80048BC
+ push {lr}
+ lsls r0, 24
+ lsrs r3, r0, 24
+ lsls r1, 24
+ lsrs r0, r1, 24
+ cmp r0, 0x7
+ bhi _08004948
+ lsls r0, 2
+ ldr r1, _080048D4 @ =_080048D8
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080048D4: .4byte _080048D8
+ .align 2, 0
+_080048D8:
+ .4byte _08004948
+ .4byte _080048F8
+ .4byte _0800490C
+ .4byte _08004948
+ .4byte _08004948
+ .4byte _08004920
+ .4byte _08004934
+ .4byte _08004948
+_080048F8:
+ ldr r1, _08004908 @ =gUnknown_20204B4
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ strb r2, [r0, 0x1]
+ movs r0, 0
+ b _0800494A
+ .align 2, 0
+_08004908: .4byte gUnknown_20204B4
+_0800490C:
+ ldr r1, _0800491C @ =gUnknown_20204B4
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ strb r2, [r0, 0x2]
+ movs r0, 0
+ b _0800494A
+ .align 2, 0
+_0800491C: .4byte gUnknown_20204B4
+_08004920:
+ ldr r1, _08004930 @ =gUnknown_20204B4
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ strb r2, [r0, 0x5]
+ movs r0, 0
+ b _0800494A
+ .align 2, 0
+_08004930: .4byte gUnknown_20204B4
+_08004934:
+ ldr r1, _08004944 @ =gUnknown_20204B4
+ lsls r0, r3, 1
+ adds r0, r3
+ lsls r0, 2
+ adds r0, r1
+ strh r2, [r0, 0x6]
+ movs r0, 0
+ b _0800494A
+ .align 2, 0
+_08004944: .4byte gUnknown_20204B4
+_08004948:
+ movs r0, 0x1
+_0800494A:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80048BC
+
+ thumb_func_start sub_8004950
+sub_8004950: @ 8004950
+ push {lr}
+ lsls r0, 24
+ lsrs r2, r0, 24
+ lsls r1, 24
+ lsrs r0, r1, 24
+ cmp r0, 0x7
+ bhi _08004A2C
+ lsls r0, 2
+ ldr r1, _08004968 @ =_0800496C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_08004968: .4byte _0800496C
+ .align 2, 0
+_0800496C:
+ .4byte _0800498C
+ .4byte _080049A0
+ .4byte _080049B4
+ .4byte _080049C8
+ .4byte _080049DC
+ .4byte _080049F0
+ .4byte _08004A04
+ .4byte _08004A18
+_0800498C:
+ ldr r0, _0800499C @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1]
+ b _08004A2E
+ .align 2, 0
+_0800499C: .4byte gUnknown_20204B4
+_080049A0:
+ ldr r0, _080049B0 @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x1]
+ b _08004A2E
+ .align 2, 0
+_080049B0: .4byte gUnknown_20204B4
+_080049B4:
+ ldr r0, _080049C4 @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x2]
+ b _08004A2E
+ .align 2, 0
+_080049C4: .4byte gUnknown_20204B4
+_080049C8:
+ ldr r0, _080049D8 @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x3]
+ b _08004A2E
+ .align 2, 0
+_080049D8: .4byte gUnknown_20204B4
+_080049DC:
+ ldr r0, _080049EC @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x4]
+ b _08004A2E
+ .align 2, 0
+_080049EC: .4byte gUnknown_20204B4
+_080049F0:
+ ldr r0, _08004A00 @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrb r0, [r1, 0x5]
+ b _08004A2E
+ .align 2, 0
+_08004A00: .4byte gUnknown_20204B4
+_08004A04:
+ ldr r0, _08004A14 @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r1, r0
+ ldrh r0, [r1, 0x6]
+ b _08004A2E
+ .align 2, 0
+_08004A14: .4byte gUnknown_20204B4
+_08004A18:
+ ldr r0, _08004A28 @ =gUnknown_20204B4
+ lsls r1, r2, 1
+ adds r1, r2
+ lsls r1, 2
+ adds r0, 0x8
+ adds r1, r0
+ ldr r0, [r1]
+ b _08004A2E
+ .align 2, 0
+_08004A28: .4byte gUnknown_20204B4
+_08004A2C:
+ movs r0, 0
+_08004A2E:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_8004950
+
+ thumb_func_start sub_8004A34
+sub_8004A34: @ 8004A34
+ push {r4,lr}
+ lsls r0, 24
+ lsrs r4, r0, 24
+ movs r3, 0
+ ldr r2, _08004A5C @ =gUnknown_20204B4
+ movs r1, 0x1F
+_08004A40:
+ ldrb r0, [r2]
+ cmp r0, r4
+ bne _08004A4C
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+_08004A4C:
+ adds r2, 0xC
+ subs r1, 0x1
+ cmp r1, 0
+ bge _08004A40
+ adds r0, r3, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_08004A5C: .4byte gUnknown_20204B4
+ thumb_func_end sub_8004A34
+
+ .align 2, 0 @ Don't pad with nop.