summaryrefslogtreecommitdiff
path: root/asm/load_save.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/load_save.s
first commit
Diffstat (limited to 'asm/load_save.s')
-rw-r--r--asm/load_save.s814
1 files changed, 814 insertions, 0 deletions
diff --git a/asm/load_save.s b/asm/load_save.s
new file mode 100644
index 000000000..570d44cfa
--- /dev/null
+++ b/asm/load_save.s
@@ -0,0 +1,814 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_804BFE4
+sub_804BFE4: @ 804BFE4
+ push {lr}
+ bl IdentifyFlash
+ lsls r0, 16
+ cmp r0, 0
+ bne _0804C000
+ ldr r1, _0804BFFC @ =gUnknown_3005004
+ movs r0, 0x1
+ str r0, [r1]
+ bl sub_80007C8
+ b _0804C006
+ .align 2, 0
+_0804BFFC: .4byte gUnknown_3005004
+_0804C000:
+ ldr r1, _0804C00C @ =gUnknown_3005004
+ movs r0, 0
+ str r0, [r1]
+_0804C006:
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C00C: .4byte gUnknown_3005004
+ thumb_func_end sub_804BFE4
+
+ thumb_func_start sub_804C010
+sub_804C010: @ 804C010
+ push {lr}
+ sub sp, 0x4
+ mov r1, sp
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0804C02C @ =gUnknown_2024588
+ ldr r2, _0804C030 @ =0x010007d2
+ mov r0, sp
+ bl CpuSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C02C: .4byte gUnknown_2024588
+_0804C030: .4byte 0x010007d2
+ thumb_func_end sub_804C010
+
+ thumb_func_start sub_804C034
+sub_804C034: @ 804C034
+ push {lr}
+ sub sp, 0x4
+ mov r1, sp
+ movs r0, 0
+ strh r0, [r1]
+ ldr r1, _0804C050 @ =gUnknown_202552C
+ ldr r2, _0804C054 @ =0x01001ef4
+ mov r0, sp
+ bl CpuSet
+ add sp, 0x4
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C050: .4byte gUnknown_202552C
+_0804C054: .4byte 0x01001ef4
+ thumb_func_end sub_804C034
+
+ thumb_func_start sub_804C058
+sub_804C058: @ 804C058
+ push {r4,r5,lr}
+ ldr r4, _0804C08C @ =gUnknown_3005008
+ ldr r5, [r4]
+ bl sub_8044EC8
+ movs r1, 0x7C
+ ands r1, r0
+ ldr r2, _0804C090 @ =gUnknown_300500C
+ ldr r0, _0804C094 @ =gUnknown_2024588
+ adds r0, r1, r0
+ str r0, [r2]
+ ldr r0, _0804C098 @ =gUnknown_202552C
+ adds r0, r1, r0
+ str r0, [r4]
+ ldr r2, _0804C09C @ =gUnknown_3005010
+ ldr r0, _0804C0A0 @ =gUnknown_2029314
+ adds r1, r0
+ str r1, [r2]
+ bl sub_8099E44
+ adds r0, r5, 0
+ bl sub_8110840
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C08C: .4byte gUnknown_3005008
+_0804C090: .4byte gUnknown_300500C
+_0804C094: .4byte gUnknown_2024588
+_0804C098: .4byte gUnknown_202552C
+_0804C09C: .4byte gUnknown_3005010
+_0804C0A0: .4byte gUnknown_2029314
+ thumb_func_end sub_804C058
+
+ thumb_func_start sub_804C0A4
+sub_804C0A4: @ 804C0A4
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ ldr r4, _0804C160 @ =gUnknown_30030F0
+ ldr r0, [r4, 0xC]
+ str r0, [sp]
+ ldr r1, [r4, 0x10]
+ str r1, [sp, 0x4]
+ movs r0, 0
+ str r0, [r4, 0xC]
+ str r0, [r4, 0x10]
+ str r0, [r4, 0x20]
+ ldr r5, _0804C164 @ =gHeap
+ ldr r0, _0804C168 @ =gUnknown_300500C
+ ldr r1, [r0]
+ ldr r0, _0804C16C @ =0x00000f24
+ mov r9, r0
+ adds r0, r5, 0
+ mov r2, r9
+ bl memcpy
+ ldr r1, _0804C170 @ =gUnknown_3005008
+ mov r10, r1
+ ldr r1, [r1]
+ ldr r7, _0804C174 @ =0x00003d68
+ ldr r0, _0804C178 @ =gHeap + 0xf24
+ adds r2, r7, 0
+ bl memcpy
+ ldr r6, _0804C17C @ =gUnknown_3005010
+ ldr r1, [r6]
+ ldr r0, _0804C180 @ =0x000083d0
+ mov r8, r0
+ ldr r0, _0804C184 @ =gHeap + 0x4c8c
+ mov r2, r8
+ bl memcpy
+ bl sub_804C058
+ ldr r1, _0804C168 @ =gUnknown_300500C
+ ldr r0, [r1]
+ adds r1, r5, 0
+ mov r2, r9
+ bl memcpy
+ mov r1, r10
+ ldr r0, [r1]
+ ldr r1, _0804C178 @ =gHeap + 0xf24
+ adds r2, r7, 0
+ bl memcpy
+ ldr r0, [r6]
+ ldr r1, _0804C184 @ =gHeap + 0x4c8c
+ mov r2, r8
+ bl memcpy
+ movs r1, 0xE0
+ lsls r1, 9
+ adds r0, r5, 0
+ bl sub_8002B80
+ ldr r0, [sp, 0x4]
+ str r0, [r4, 0x10]
+ ldr r1, [sp]
+ str r1, [r4, 0xC]
+ bl sub_8044EC8
+ adds r4, r0, 0
+ bl sub_8044EC8
+ lsls r4, 16
+ lsls r0, 16
+ lsrs r0, 16
+ adds r4, r0
+ adds r0, r4, 0
+ bl sub_804C5A4
+ ldr r1, _0804C168 @ =gUnknown_300500C
+ ldr r0, [r1]
+ movs r1, 0xF2
+ lsls r1, 4
+ adds r0, r1
+ str r4, [r0]
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C160: .4byte gUnknown_30030F0
+_0804C164: .4byte gHeap
+_0804C168: .4byte gUnknown_300500C
+_0804C16C: .4byte 0x00000f24
+_0804C170: .4byte gUnknown_3005008
+_0804C174: .4byte 0x00003d68
+_0804C178: .4byte gHeap + 0xf24
+_0804C17C: .4byte gUnknown_3005010
+_0804C180: .4byte 0x000083d0
+_0804C184: .4byte gHeap + 0x4c8c
+ thumb_func_end sub_804C0A4
+
+ thumb_func_start sub_804C188
+sub_804C188: @ 804C188
+ ldr r0, _0804C194 @ =gUnknown_300500C
+ ldr r0, [r0]
+ ldrb r1, [r0, 0x9]
+ movs r0, 0x1
+ ands r0, r1
+ bx lr
+ .align 2, 0
+_0804C194: .4byte gUnknown_300500C
+ thumb_func_end sub_804C188
+
+ thumb_func_start sub_804C198
+sub_804C198: @ 804C198
+ ldr r0, _0804C1A8 @ =gUnknown_300500C
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0xFE
+ ands r0, r1
+ strb r0, [r2, 0x9]
+ bx lr
+ .align 2, 0
+_0804C1A8: .4byte gUnknown_300500C
+ thumb_func_end sub_804C198
+
+ thumb_func_start sub_804C1AC
+sub_804C1AC: @ 804C1AC
+ ldr r0, _0804C1BC @ =gUnknown_300500C
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x1
+ orrs r0, r1
+ strb r0, [r2, 0x9]
+ bx lr
+ .align 2, 0
+_0804C1BC: .4byte gUnknown_300500C
+ thumb_func_end sub_804C1AC
+
+ thumb_func_start sub_804C1C0
+sub_804C1C0: @ 804C1C0
+ push {lr}
+ movs r0, 0
+ bl sub_8055778
+ ldr r0, _0804C1D8 @ =gUnknown_300500C
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0x1
+ orrs r0, r1
+ strb r0, [r2, 0x9]
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C1D8: .4byte gUnknown_300500C
+ thumb_func_end sub_804C1C0
+
+ thumb_func_start sub_804C1DC
+sub_804C1DC: @ 804C1DC
+ ldr r0, _0804C1EC @ =gUnknown_300500C
+ ldr r2, [r0]
+ ldrb r1, [r2, 0x9]
+ movs r0, 0xFE
+ ands r0, r1
+ strb r0, [r2, 0x9]
+ bx lr
+ .align 2, 0
+_0804C1EC: .4byte gUnknown_300500C
+ thumb_func_end sub_804C1DC
+
+ thumb_func_start sub_804C1F0
+sub_804C1F0: @ 804C1F0
+ push {r4,lr}
+ ldr r0, _0804C224 @ =gUnknown_3005008
+ ldr r0, [r0]
+ ldr r1, _0804C228 @ =gUnknown_2024029
+ ldrb r1, [r1]
+ adds r0, 0x34
+ strb r1, [r0]
+ movs r4, 0
+_0804C200:
+ ldr r0, _0804C224 @ =gUnknown_3005008
+ ldr r0, [r0]
+ movs r1, 0x64
+ muls r1, r4
+ adds r0, r1
+ ldr r2, _0804C22C @ =gUnknown_2024284
+ adds r1, r2
+ adds r0, 0x38
+ movs r2, 0x64
+ bl memcpy
+ adds r4, 0x1
+ cmp r4, 0x5
+ ble _0804C200
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C224: .4byte gUnknown_3005008
+_0804C228: .4byte gUnknown_2024029
+_0804C22C: .4byte gUnknown_2024284
+ thumb_func_end sub_804C1F0
+
+ thumb_func_start sub_804C230
+sub_804C230: @ 804C230
+ push {r4,r5,lr}
+ ldr r1, _0804C264 @ =gUnknown_2024029
+ ldr r0, _0804C268 @ =gUnknown_3005008
+ ldr r0, [r0]
+ adds r0, 0x34
+ ldrb r0, [r0]
+ strb r0, [r1]
+ movs r4, 0
+ ldr r5, _0804C26C @ =gUnknown_2024284
+_0804C242:
+ movs r0, 0x64
+ adds r2, r4, 0
+ muls r2, r0
+ adds r0, r2, r5
+ ldr r1, _0804C268 @ =gUnknown_3005008
+ ldr r1, [r1]
+ adds r1, r2
+ adds r1, 0x38
+ movs r2, 0x64
+ bl memcpy
+ adds r4, 0x1
+ cmp r4, 0x5
+ ble _0804C242
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C264: .4byte gUnknown_2024029
+_0804C268: .4byte gUnknown_3005008
+_0804C26C: .4byte gUnknown_2024284
+ thumb_func_end sub_804C230
+
+ thumb_func_start sub_804C270
+sub_804C270: @ 804C270
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, _0804C2B0 @ =gUnknown_3005008
+ mov r12, r0
+ movs r5, 0xD4
+ lsls r5, 3
+ mov r8, r5
+ ldr r4, _0804C2B4 @ =gUnknown_2036E38
+ movs r3, 0
+ movs r2, 0xF
+_0804C286:
+ mov r6, r12
+ ldr r1, [r6]
+ adds r1, r3
+ add r1, r8
+ adds r0, r4, 0
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0804C286
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C2B0: .4byte gUnknown_3005008
+_0804C2B4: .4byte gUnknown_2036E38
+ thumb_func_end sub_804C270
+
+ thumb_func_start sub_804C2B8
+sub_804C2B8: @ 804C2B8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ ldr r0, _0804C2F8 @ =gUnknown_3005008
+ mov r12, r0
+ movs r5, 0xD4
+ lsls r5, 3
+ mov r8, r5
+ ldr r4, _0804C2FC @ =gUnknown_2036E38
+ movs r3, 0
+ movs r2, 0xF
+_0804C2CE:
+ mov r6, r12
+ ldr r1, [r6]
+ adds r1, r3
+ adds r0, r4, 0
+ add r1, r8
+ ldm r1!, {r5-r7}
+ stm r0!, {r5-r7}
+ ldm r1!, {r5-r7}
+ stm r0!, {r5-r7}
+ ldm r1!, {r5-r7}
+ stm r0!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0804C2CE
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C2F8: .4byte gUnknown_3005008
+_0804C2FC: .4byte gUnknown_2036E38
+ thumb_func_end sub_804C2B8
+
+ thumb_func_start sub_804C300
+sub_804C300: @ 804C300
+ push {lr}
+ bl sub_804C1F0
+ bl sub_804C270
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804C300
+
+ thumb_func_start sub_804C310
+sub_804C310: @ 804C310
+ push {lr}
+ bl sub_804C230
+ bl sub_804C2B8
+ pop {r0}
+ bx r0
+ thumb_func_end sub_804C310
+
+ thumb_func_start sub_804C320
+sub_804C320: @ 804C320
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r2, 0
+ ldr r0, _0804C424 @ =gUnknown_2031C8C
+ mov r12, r0
+ ldr r1, _0804C428 @ =gUnknown_300500C
+ mov r10, r1
+ ldr r5, _0804C42C @ =gUnknown_3005008
+ movs r3, 0xC4
+ lsls r3, 2
+ ldr r4, _0804C430 @ =gUnknown_2031764
+_0804C33C:
+ lsls r0, r2, 2
+ ldr r1, [r5]
+ adds r1, r3
+ adds r1, r0
+ ldr r0, [r1]
+ stm r4!, {r0}
+ adds r2, 0x1
+ cmp r2, 0x29
+ ble _0804C33C
+ movs r2, 0
+ ldr r0, _0804C430 @ =gUnknown_2031764
+ ldr r5, _0804C42C @ =gUnknown_3005008
+ movs r3, 0xEE
+ lsls r3, 2
+ adds r4, r0, 0
+ adds r4, 0xA8
+_0804C35C:
+ lsls r0, r2, 2
+ ldr r1, [r5]
+ adds r1, r3
+ adds r1, r0
+ ldr r0, [r1]
+ stm r4!, {r0}
+ adds r2, 0x1
+ cmp r2, 0x1D
+ ble _0804C35C
+ movs r2, 0
+ ldr r0, _0804C430 @ =gUnknown_2031764
+ ldr r5, _0804C42C @ =gUnknown_3005008
+ movs r6, 0x90
+ lsls r6, 1
+ adds r4, r0, r6
+ movs r3, 0x86
+ lsls r3, 3
+_0804C37E:
+ lsls r0, r2, 2
+ ldr r1, [r5]
+ adds r1, r3
+ adds r1, r0
+ ldr r0, [r1]
+ stm r4!, {r0}
+ adds r2, 0x1
+ cmp r2, 0xC
+ ble _0804C37E
+ movs r2, 0
+ ldr r0, _0804C430 @ =gUnknown_2031764
+ ldr r5, _0804C42C @ =gUnknown_3005008
+ movs r7, 0xAA
+ lsls r7, 1
+ adds r4, r0, r7
+ ldr r3, _0804C434 @ =0x00000464
+_0804C39E:
+ lsls r0, r2, 2
+ ldr r1, [r5]
+ adds r1, r3
+ adds r1, r0
+ ldr r0, [r1]
+ stm r4!, {r0}
+ adds r2, 0x1
+ cmp r2, 0x39
+ ble _0804C39E
+ movs r2, 0
+ ldr r0, _0804C430 @ =gUnknown_2031764
+ ldr r5, _0804C42C @ =gUnknown_3005008
+ movs r1, 0x8F
+ lsls r1, 2
+ adds r4, r0, r1
+ ldr r3, _0804C438 @ =0x0000054c
+_0804C3BE:
+ lsls r0, r2, 2
+ ldr r1, [r5]
+ adds r1, r3
+ adds r1, r0
+ ldr r0, [r1]
+ stm r4!, {r0}
+ adds r2, 0x1
+ cmp r2, 0x2A
+ ble _0804C3BE
+ ldr r0, _0804C430 @ =gUnknown_2031764
+ ldr r5, _0804C42C @ =gUnknown_3005008
+ mov r8, r5
+ movs r6, 0xBA
+ lsls r6, 2
+ adds r4, r0, r6
+ movs r3, 0
+ ldr r7, _0804C43C @ =0x00002cd0
+ mov r9, r7
+ movs r2, 0xF
+_0804C3E4:
+ mov r0, r8
+ ldr r1, [r0]
+ adds r1, r3
+ adds r0, r4, 0
+ add r1, r9
+ ldm r1!, {r5-r7}
+ stm r0!, {r5-r7}
+ ldm r1!, {r5-r7}
+ stm r0!, {r5-r7}
+ ldm r1!, {r5-r7}
+ stm r0!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0804C3E4
+ mov r1, r10
+ ldr r0, [r1]
+ movs r5, 0xF2
+ lsls r5, 4
+ adds r0, r5
+ ldr r0, [r0]
+ mov r6, r12
+ str r0, [r6]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C424: .4byte gUnknown_2031C8C
+_0804C428: .4byte gUnknown_300500C
+_0804C42C: .4byte gUnknown_3005008
+_0804C430: .4byte gUnknown_2031764
+_0804C434: .4byte 0x00000464
+_0804C438: .4byte 0x0000054c
+_0804C43C: .4byte 0x00002cd0
+ thumb_func_end sub_804C320
+
+ thumb_func_start sub_804C440
+sub_804C440: @ 804C440
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ movs r2, 0
+ ldr r0, _0804C550 @ =gUnknown_300500C
+ mov r8, r0
+ ldr r1, _0804C554 @ =gUnknown_2031C8C
+ mov r12, r1
+ ldr r5, _0804C558 @ =gUnknown_3005008
+ movs r3, 0xC4
+ lsls r3, 2
+ ldr r4, _0804C55C @ =gUnknown_2031764
+_0804C45C:
+ ldr r0, [r5]
+ lsls r1, r2, 2
+ adds r0, r3
+ adds r0, r1
+ ldm r4!, {r1}
+ str r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x29
+ ble _0804C45C
+ movs r2, 0
+ ldr r5, _0804C558 @ =gUnknown_3005008
+ movs r4, 0xEE
+ lsls r4, 2
+ ldr r0, _0804C55C @ =gUnknown_2031764
+ adds r3, r0, 0
+ adds r3, 0xA8
+_0804C47C:
+ ldr r0, [r5]
+ lsls r1, r2, 2
+ adds r0, r4
+ adds r0, r1
+ ldm r3!, {r1}
+ str r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x1D
+ ble _0804C47C
+ movs r2, 0
+ ldr r5, _0804C558 @ =gUnknown_3005008
+ movs r4, 0x86
+ lsls r4, 3
+ ldr r0, _0804C55C @ =gUnknown_2031764
+ movs r6, 0x90
+ lsls r6, 1
+ adds r3, r0, r6
+_0804C49E:
+ ldr r0, [r5]
+ lsls r1, r2, 2
+ adds r0, r4
+ adds r0, r1
+ ldm r3!, {r1}
+ str r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0xC
+ ble _0804C49E
+ movs r2, 0
+ ldr r5, _0804C558 @ =gUnknown_3005008
+ ldr r4, _0804C560 @ =0x00000464
+ ldr r0, _0804C55C @ =gUnknown_2031764
+ movs r7, 0xAA
+ lsls r7, 1
+ adds r3, r0, r7
+_0804C4BE:
+ ldr r0, [r5]
+ lsls r1, r2, 2
+ adds r0, r4
+ adds r0, r1
+ ldm r3!, {r1}
+ str r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x39
+ ble _0804C4BE
+ movs r2, 0
+ ldr r5, _0804C558 @ =gUnknown_3005008
+ ldr r4, _0804C564 @ =0x0000054c
+ ldr r0, _0804C55C @ =gUnknown_2031764
+ movs r1, 0x8F
+ lsls r1, 2
+ adds r3, r0, r1
+_0804C4DE:
+ ldr r0, [r5]
+ lsls r1, r2, 2
+ adds r0, r4
+ adds r0, r1
+ ldm r3!, {r1}
+ str r1, [r0]
+ adds r2, 0x1
+ cmp r2, 0x2A
+ ble _0804C4DE
+ ldr r2, _0804C558 @ =gUnknown_3005008
+ mov r9, r2
+ ldr r5, _0804C568 @ =0x00002cd0
+ mov r10, r5
+ ldr r4, _0804C55C @ =gUnknown_2031764
+ movs r3, 0
+ movs r2, 0xF
+_0804C4FE:
+ mov r6, r9
+ ldr r1, [r6]
+ adds r1, r3
+ add r1, r10
+ movs r7, 0xBA
+ lsls r7, 2
+ adds r0, r4, r7
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ ldm r0!, {r5-r7}
+ stm r1!, {r5-r7}
+ adds r4, 0x24
+ adds r3, 0x24
+ subs r2, 0x1
+ cmp r2, 0
+ bge _0804C4FE
+ mov r1, r8
+ ldr r0, [r1]
+ movs r5, 0xF2
+ lsls r5, 4
+ adds r0, r5
+ ldr r4, [r0]
+ mov r2, r12
+ ldr r1, [r2]
+ str r1, [r0]
+ adds r0, r4, 0
+ bl sub_8099DE0
+ mov r6, r8
+ ldr r0, [r6]
+ adds r0, r5
+ str r4, [r0]
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C550: .4byte gUnknown_300500C
+_0804C554: .4byte gUnknown_2031C8C
+_0804C558: .4byte gUnknown_3005008
+_0804C55C: .4byte gUnknown_2031764
+_0804C560: .4byte 0x00000464
+_0804C564: .4byte 0x0000054c
+_0804C568: .4byte 0x00002cd0
+ thumb_func_end sub_804C440
+
+ thumb_func_start sub_804C56C
+sub_804C56C: @ 804C56C
+ ldr r2, _0804C584 @ =gUnknown_300500C
+ ldr r2, [r2]
+ movs r3, 0xF2
+ lsls r3, 4
+ adds r2, r3
+ ldr r2, [r2]
+ ldrh r3, [r0]
+ eors r2, r3
+ eors r2, r1
+ strh r2, [r0]
+ bx lr
+ .align 2, 0
+_0804C584: .4byte gUnknown_300500C
+ thumb_func_end sub_804C56C
+
+ thumb_func_start sub_804C588
+sub_804C588: @ 804C588
+ ldr r2, _0804C5A0 @ =gUnknown_300500C
+ ldr r3, [r2]
+ movs r2, 0xF2
+ lsls r2, 4
+ adds r3, r2
+ ldr r2, [r0]
+ ldr r3, [r3]
+ eors r2, r3
+ eors r2, r1
+ str r2, [r0]
+ bx lr
+ .align 2, 0
+_0804C5A0: .4byte gUnknown_300500C
+ thumb_func_end sub_804C588
+
+ thumb_func_start sub_804C5A4
+sub_804C5A4: @ 804C5A4
+ push {r4-r7,lr}
+ adds r5, r0, 0
+ ldr r7, _0804C5F8 @ =gUnknown_3005008
+ ldr r6, _0804C5FC @ =0x00003d38
+ movs r4, 0x3
+_0804C5AE:
+ ldr r0, [r7]
+ adds r0, r6
+ adds r0, 0x4
+ adds r1, r5, 0
+ bl sub_804C588
+ adds r6, 0xC
+ subs r4, 0x1
+ cmp r4, 0
+ bge _0804C5AE
+ adds r0, r5, 0
+ bl sub_8054F38
+ adds r0, r5, 0
+ bl sub_8099E38
+ adds r0, r5, 0
+ bl sub_815EE6C
+ ldr r4, _0804C5F8 @ =gUnknown_3005008
+ ldr r0, [r4]
+ movs r1, 0xA4
+ lsls r1, 2
+ adds r0, r1
+ adds r1, r5, 0
+ bl sub_804C588
+ ldr r0, [r4]
+ movs r1, 0xA5
+ lsls r1, 2
+ adds r0, r1
+ adds r1, r5, 0
+ bl sub_804C56C
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_0804C5F8: .4byte gUnknown_3005008
+_0804C5FC: .4byte 0x00003d38
+ thumb_func_end sub_804C5A4
+
+ .align 2, 0 @ Don't pad with nop.