summaryrefslogtreecommitdiff
path: root/asm/image_processing_effects.s
diff options
context:
space:
mode:
authorPikalaxALT <pikalaxalt@gmail.com>2020-01-07 16:42:53 -0500
committerPikalaxALT <pikalaxalt@gmail.com>2020-01-07 16:47:50 -0500
commit4b0befea41350d6da1f4e6e3d2841242e3167d82 (patch)
tree16a671144a0f4a4cba46f8609b58b0833cb5aa6e /asm/image_processing_effects.s
parent1235d7c50643f925a30e0e4dfa299ea6ff624dc2 (diff)
Split out image_processing_effects
Diffstat (limited to 'asm/image_processing_effects.s')
-rw-r--r--asm/image_processing_effects.s3486
1 files changed, 3486 insertions, 0 deletions
diff --git a/asm/image_processing_effects.s b/asm/image_processing_effects.s
new file mode 100644
index 000000000..1f63bde6c
--- /dev/null
+++ b/asm/image_processing_effects.s
@@ -0,0 +1,3486 @@
+ .include "asm/macros.inc"
+ .include "constants/constants.inc"
+
+ .syntax unified
+
+ .text
+
+ thumb_func_start sub_80C52D0
+sub_80C52D0: @ 80C52D0
+ push {lr}
+ ldr r2, _080C5318 @ =gUnknown_3005334
+ ldr r1, [r0, 0x4]
+ str r1, [r2]
+ ldr r2, _080C531C @ =gUnknown_3005348
+ ldrb r1, [r0, 0x1F]
+ strb r1, [r2]
+ ldr r2, _080C5320 @ =gUnknown_3005330
+ ldrb r1, [r0, 0x19]
+ strb r1, [r2]
+ ldr r2, _080C5324 @ =gUnknown_3005344
+ ldrb r1, [r0, 0x1A]
+ strb r1, [r2]
+ ldr r2, _080C5328 @ =gUnknown_3005340
+ ldrb r1, [r0, 0x1B]
+ strb r1, [r2]
+ ldr r2, _080C532C @ =gUnknown_3005338
+ ldrb r1, [r0, 0x1C]
+ strb r1, [r2]
+ ldr r2, _080C5330 @ =gUnknown_300534C
+ ldrb r1, [r0, 0x1D]
+ strb r1, [r2]
+ ldr r2, _080C5334 @ =gUnknown_300533C
+ ldrb r1, [r0, 0x1E]
+ strb r1, [r2]
+ ldrb r0, [r0]
+ subs r0, 0x2
+ cmp r0, 0x22
+ bls _080C530C
+ b _080C5458
+_080C530C:
+ lsls r0, 2
+ ldr r1, _080C5338 @ =_080C533C
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080C5318: .4byte gUnknown_3005334
+_080C531C: .4byte gUnknown_3005348
+_080C5320: .4byte gUnknown_3005330
+_080C5324: .4byte gUnknown_3005344
+_080C5328: .4byte gUnknown_3005340
+_080C532C: .4byte gUnknown_3005338
+_080C5330: .4byte gUnknown_300534C
+_080C5334: .4byte gUnknown_300533C
+_080C5338: .4byte _080C533C
+ .align 2, 0
+_080C533C:
+ .4byte _080C53C8
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5428
+ .4byte _080C5458
+ .4byte _080C53CE
+ .4byte _080C53D4
+ .4byte _080C53E8
+ .4byte _080C53FA
+ .4byte _080C5458
+ .4byte _080C5410
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5416
+ .4byte _080C53F4
+ .4byte _080C541C
+ .4byte _080C5422
+ .4byte _080C5458
+ .4byte _080C5458
+ .4byte _080C5434
+_080C53C8:
+ bl sub_80C55D4
+ b _080C5458
+_080C53CE:
+ bl sub_80C568C
+ b _080C5458
+_080C53D4:
+ bl sub_80C5884
+ ldr r0, _080C53E4 @ =gUnknown_3005348
+ ldrb r0, [r0]
+ bl sub_80C5748
+ b _080C5458
+ .align 2, 0
+_080C53E4: .4byte gUnknown_3005348
+_080C53E8:
+ bl sub_80C5884
+ bl sub_80C59D4
+ bl sub_80C57EC
+_080C53F4:
+ bl sub_80C59D4
+ b _080C5458
+_080C53FA:
+ bl sub_80C5884
+ bl sub_80C5B9C
+ bl sub_80C5B9C
+ bl sub_80C5C44
+ bl sub_80C57EC
+ b _080C5458
+_080C5410:
+ bl sub_80C5A6C
+ b _080C5458
+_080C5416:
+ bl sub_80C5884
+ b _080C5458
+_080C541C:
+ bl sub_80C5B9C
+ b _080C5458
+_080C5422:
+ bl sub_80C5C44
+ b _080C5458
+_080C5428:
+ bl sub_80C55F4
+ movs r0, 0x3
+ bl sub_80C545C
+ b _080C5458
+_080C5434:
+ bl sub_80C5884
+ bl sub_80C5B9C
+ bl sub_80C5C44
+ bl sub_80C57EC
+ bl sub_80C568C
+ bl sub_80C568C
+ movs r0, 0x2
+ bl sub_80C545C
+ movs r0, 0x4
+ bl sub_80C5514
+_080C5458:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80C52D0
+
+ thumb_func_start sub_80C545C
+sub_80C545C: @ 80C545C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r7, r0, 24
+ movs r2, 0
+ ldr r0, _080C54FC @ =gUnknown_3005338
+ mov r8, r0
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C54EE
+ ldr r1, _080C5500 @ =gUnknown_3005340
+ mov r12, r1
+ ldr r3, _080C5504 @ =gUnknown_300534C
+ mov r10, r3
+ ldr r0, _080C5508 @ =gUnknown_3005330
+ mov r9, r0
+_080C5482:
+ ldr r1, _080C550C @ =gUnknown_3005344
+ ldrb r0, [r1]
+ adds r0, r2
+ mov r3, r10
+ ldrb r1, [r3]
+ muls r0, r1
+ lsls r0, 1
+ ldr r3, _080C5510 @ =gUnknown_3005334
+ ldr r1, [r3]
+ adds r1, r0
+ mov r3, r9
+ ldrb r0, [r3]
+ lsls r0, 1
+ adds r3, r1, r0
+ movs r4, 0
+ adds r5, r2, 0x1
+ mov r0, r12
+ ldrb r0, [r0]
+ cmp r4, r0
+ bcs _080C54E2
+ movs r6, 0x80
+ lsls r6, 8
+_080C54AE:
+ ldrh r1, [r3]
+ adds r0, r6, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080C54D2
+ movs r0, 0x1F
+ ands r0, r1
+ adds r0, r7
+ lsls r0, 24
+ lsrs r2, r0, 24
+ cmp r2, 0x1F
+ bls _080C54C8
+ movs r2, 0x1F
+_080C54C8:
+ lsls r0, r2, 10
+ lsls r1, r2, 5
+ orrs r0, r1
+ orrs r0, r2
+ strh r0, [r3]
+_080C54D2:
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ adds r3, 0x2
+ mov r1, r12
+ ldrb r1, [r1]
+ cmp r4, r1
+ bcc _080C54AE
+_080C54E2:
+ lsls r0, r5, 24
+ lsrs r2, r0, 24
+ mov r3, r8
+ ldrb r3, [r3]
+ cmp r2, r3
+ bcc _080C5482
+_080C54EE:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C54FC: .4byte gUnknown_3005338
+_080C5500: .4byte gUnknown_3005340
+_080C5504: .4byte gUnknown_300534C
+_080C5508: .4byte gUnknown_3005330
+_080C550C: .4byte gUnknown_3005344
+_080C5510: .4byte gUnknown_3005334
+ thumb_func_end sub_80C545C
+
+ thumb_func_start sub_80C5514
+sub_80C5514: @ 80C5514
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r2, 0
+ ldr r0, _080C55BC @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C55AC
+ ldr r1, _080C55C0 @ =gUnknown_3005340
+ mov r10, r1
+_080C5532:
+ ldr r3, _080C55C4 @ =gUnknown_3005344
+ ldrb r0, [r3]
+ adds r0, r2
+ ldr r3, _080C55C8 @ =gUnknown_300534C
+ ldrb r1, [r3]
+ muls r0, r1
+ lsls r0, 1
+ ldr r3, _080C55CC @ =gUnknown_3005334
+ ldr r1, [r3]
+ adds r1, r0
+ ldr r3, _080C55D0 @ =gUnknown_3005330
+ ldrb r0, [r3]
+ lsls r0, 1
+ adds r3, r1, r0
+ movs r5, 0
+ adds r7, r2, 0x1
+ mov r0, r10
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcs _080C55A0
+ movs r1, 0x80
+ lsls r1, 8
+ mov r9, r1
+ movs r0, 0x1F
+ mov r12, r0
+ mov r1, r8
+ subs r6, r0, r1
+_080C5568:
+ ldrh r1, [r3]
+ mov r0, r9
+ ands r0, r1
+ cmp r0, 0
+ bne _080C5590
+ movs r4, 0x1F
+ mov r2, r12
+ ands r2, r1
+ cmp r2, r6
+ ble _080C5586
+ mov r1, r8
+ lsrs r0, r1, 1
+ subs r0, r4, r0
+ lsls r0, 24
+ lsrs r2, r0, 24
+_080C5586:
+ lsls r0, r2, 10
+ lsls r1, r2, 5
+ orrs r0, r1
+ orrs r0, r2
+ strh r0, [r3]
+_080C5590:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r3, 0x2
+ mov r0, r10
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcc _080C5568
+_080C55A0:
+ lsls r0, r7, 24
+ lsrs r2, r0, 24
+ ldr r1, _080C55BC @ =gUnknown_3005338
+ ldrb r1, [r1]
+ cmp r2, r1
+ bcc _080C5532
+_080C55AC:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C55BC: .4byte gUnknown_3005338
+_080C55C0: .4byte gUnknown_3005340
+_080C55C4: .4byte gUnknown_3005344
+_080C55C8: .4byte gUnknown_300534C
+_080C55CC: .4byte gUnknown_3005334
+_080C55D0: .4byte gUnknown_3005330
+ thumb_func_end sub_80C5514
+
+ thumb_func_start sub_80C55D4
+sub_80C55D4: @ 80C55D4
+ push {r4,r5,lr}
+ movs r4, 0
+ ldr r5, _080C55F0 @ =0x00000c7f
+_080C55DA:
+ lsls r0, r4, 16
+ lsrs r0, 16
+ bl sub_80C5CF8
+ adds r4, 0x1
+ cmp r4, r5
+ bls _080C55DA
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C55F0: .4byte 0x00000c7f
+ thumb_func_end sub_80C55D4
+
+ thumb_func_start sub_80C55F4
+sub_80C55F4: @ 80C55F4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r2, 0
+ ldr r0, _080C5674 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C5666
+ ldr r0, _080C5678 @ =gUnknown_3005334
+ mov r8, r0
+ ldr r3, _080C567C @ =gUnknown_3005340
+_080C560C:
+ ldr r0, _080C5680 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C5684 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r4, r8
+ ldr r1, [r4]
+ adds r1, r0
+ ldr r0, _080C5688 @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r5, 0
+ adds r6, r2, 0x1
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcs _080C565A
+ movs r0, 0x80
+ lsls r0, 8
+ adds r7, r0, 0
+_080C5638:
+ ldrh r0, [r4]
+ ands r0, r7
+ cmp r0, 0
+ bne _080C564C
+ adds r0, r4, 0
+ str r3, [sp]
+ bl sub_80C5ECC
+ strh r0, [r4]
+ ldr r3, [sp]
+_080C564C:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcc _080C5638
+_080C565A:
+ lsls r0, r6, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C5674 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C560C
+_080C5666:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5674: .4byte gUnknown_3005338
+_080C5678: .4byte gUnknown_3005334
+_080C567C: .4byte gUnknown_3005340
+_080C5680: .4byte gUnknown_3005344
+_080C5684: .4byte gUnknown_300534C
+_080C5688: .4byte gUnknown_3005330
+ thumb_func_end sub_80C55F4
+
+ thumb_func_start sub_80C568C
+sub_80C568C: @ 80C568C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ movs r2, 0
+ ldr r0, _080C5730 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C5722
+ ldr r0, _080C5734 @ =gUnknown_3005334
+ mov r8, r0
+ ldr r3, _080C5738 @ =gUnknown_300534C
+_080C56A4:
+ ldr r0, _080C573C @ =gUnknown_3005344
+ ldrb r1, [r0]
+ ldrb r0, [r3]
+ muls r0, r1
+ lsls r0, 1
+ mov r4, r8
+ ldr r1, [r4]
+ adds r1, r0
+ ldr r0, _080C5740 @ =gUnknown_3005330
+ ldrb r0, [r0]
+ adds r0, r2
+ lsls r0, 1
+ adds r4, r1, r0
+ ldrh r1, [r4]
+ mov r0, sp
+ strh r1, [r0]
+ movs r5, 0x1
+ ldrb r0, [r3]
+ lsls r0, 1
+ adds r4, r0
+ ldr r0, _080C5744 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r7, r2, 0x1
+ cmp r5, r0
+ bge _080C5716
+ ldr r6, _080C5738 @ =gUnknown_300534C
+_080C56DA:
+ ldrh r0, [r4]
+ movs r2, 0x80
+ lsls r2, 8
+ adds r1, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080C5700
+ ldrb r2, [r6]
+ lsls r2, 1
+ adds r2, r4, r2
+ mov r0, sp
+ adds r1, r4, 0
+ str r3, [sp, 0x4]
+ bl sub_80C61BC
+ strh r0, [r4]
+ mov r1, sp
+ strh r0, [r1]
+ ldr r3, [sp, 0x4]
+_080C5700:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r6]
+ lsls r0, 1
+ adds r4, r0
+ ldr r0, _080C5744 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ subs r0, 0x1
+ cmp r5, r0
+ blt _080C56DA
+_080C5716:
+ lsls r0, r7, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C5730 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C56A4
+_080C5722:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5730: .4byte gUnknown_3005340
+_080C5734: .4byte gUnknown_3005334
+_080C5738: .4byte gUnknown_300534C
+_080C573C: .4byte gUnknown_3005344
+_080C5740: .4byte gUnknown_3005330
+_080C5744: .4byte gUnknown_3005338
+ thumb_func_end sub_80C568C
+
+ thumb_func_start sub_80C5748
+sub_80C5748: @ 80C5748
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ sub sp, 0x4
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ movs r2, 0
+ ldr r0, _080C57D4 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C57C4
+ ldr r0, _080C57D8 @ =gUnknown_3005334
+ mov r9, r0
+ ldr r3, _080C57DC @ =gUnknown_3005340
+_080C5768:
+ ldr r0, _080C57E0 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C57E4 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r4, r9
+ ldr r1, [r4]
+ adds r1, r0
+ ldr r0, _080C57E8 @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r5, 0
+ adds r6, r2, 0x1
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcs _080C57B8
+ movs r0, 0x80
+ lsls r0, 8
+ adds r7, r0, 0
+_080C5794:
+ ldrh r0, [r4]
+ ands r0, r7
+ cmp r0, 0
+ bne _080C57AA
+ adds r0, r4, 0
+ mov r1, r8
+ str r3, [sp]
+ bl sub_80C5F00
+ strh r0, [r4]
+ ldr r3, [sp]
+_080C57AA:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcc _080C5794
+_080C57B8:
+ lsls r0, r6, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C57D4 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C5768
+_080C57C4:
+ add sp, 0x4
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C57D4: .4byte gUnknown_3005338
+_080C57D8: .4byte gUnknown_3005334
+_080C57DC: .4byte gUnknown_3005340
+_080C57E0: .4byte gUnknown_3005344
+_080C57E4: .4byte gUnknown_300534C
+_080C57E8: .4byte gUnknown_3005330
+ thumb_func_end sub_80C5748
+
+ thumb_func_start sub_80C57EC
+sub_80C57EC: @ 80C57EC
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r2, 0
+ ldr r0, _080C586C @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C585E
+ ldr r0, _080C5870 @ =gUnknown_3005334
+ mov r8, r0
+ ldr r3, _080C5874 @ =gUnknown_3005340
+_080C5804:
+ ldr r0, _080C5878 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C587C @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r4, r8
+ ldr r1, [r4]
+ adds r1, r0
+ ldr r0, _080C5880 @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r5, 0
+ adds r6, r2, 0x1
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcs _080C5852
+ movs r0, 0x80
+ lsls r0, 8
+ adds r7, r0, 0
+_080C5830:
+ ldrh r0, [r4]
+ ands r0, r7
+ cmp r0, 0
+ bne _080C5844
+ adds r0, r4, 0
+ str r3, [sp]
+ bl sub_80C600C
+ strh r0, [r4]
+ ldr r3, [sp]
+_080C5844:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcc _080C5830
+_080C5852:
+ lsls r0, r6, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C586C @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C5804
+_080C585E:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C586C: .4byte gUnknown_3005338
+_080C5870: .4byte gUnknown_3005334
+_080C5874: .4byte gUnknown_3005340
+_080C5878: .4byte gUnknown_3005344
+_080C587C: .4byte gUnknown_300534C
+_080C5880: .4byte gUnknown_3005330
+ thumb_func_end sub_80C57EC
+
+ thumb_func_start sub_80C5884
+sub_80C5884: @ 80C5884
+ push {r4-r7,lr}
+ mov r7, r9
+ mov r6, r8
+ push {r6,r7}
+ movs r7, 0
+ ldr r0, _080C59BC @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r7, r0
+ bcs _080C5910
+ ldr r0, _080C59C0 @ =gUnknown_3005334
+ mov r8, r0
+_080C589A:
+ ldr r0, _080C59C4 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r7
+ ldr r0, _080C59C8 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r2, r8
+ ldr r1, [r2]
+ adds r1, r0
+ ldr r0, _080C59CC @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r5, r1, r0
+ adds r4, r5, 0x2
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ movs r6, 0x1
+ adds r5, r4, 0
+ ldr r0, _080C59D0 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r7, 0x1
+ cmp r6, r0
+ bge _080C58FA
+_080C58D2:
+ adds r4, r5, 0x2
+ adds r0, r5, 0
+ adds r1, r4, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ subs r1, r5, 0x2
+ adds r0, r5, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r5, r4, 0
+ ldr r0, _080C59D0 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ subs r0, 0x1
+ cmp r6, r0
+ blt _080C58D2
+_080C58FA:
+ subs r1, r5, 0x2
+ adds r0, r5, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ lsls r0, r7, 24
+ lsrs r7, r0, 24
+ ldr r0, _080C59BC @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r7, r0
+ bcc _080C589A
+_080C5910:
+ movs r6, 0
+ ldr r0, _080C59D0 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r6, r0
+ bcs _080C59B0
+ ldr r3, _080C59C0 @ =gUnknown_3005334
+ mov r9, r3
+ ldr r0, _080C59C8 @ =gUnknown_300534C
+ mov r8, r0
+_080C5922:
+ ldr r0, _080C59C4 @ =gUnknown_3005344
+ ldrb r0, [r0]
+ mov r2, r8
+ ldrb r1, [r2]
+ muls r0, r1
+ lsls r0, 1
+ mov r3, r9
+ ldr r2, [r3]
+ adds r2, r0
+ ldr r0, _080C59CC @ =gUnknown_3005330
+ ldrb r0, [r0]
+ adds r0, r6
+ lsls r0, 1
+ adds r5, r2, r0
+ lsls r1, 1
+ adds r1, r5, r1
+ adds r0, r5, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ movs r7, 0x1
+ mov r1, r8
+ ldrb r0, [r1]
+ lsls r0, 1
+ adds r5, r0
+ ldr r0, _080C59BC @ =gUnknown_3005338
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r6, 0x1
+ cmp r7, r0
+ bge _080C5994
+ ldr r4, _080C59C8 @ =gUnknown_300534C
+_080C5962:
+ ldrb r1, [r4]
+ lsls r1, 1
+ adds r1, r5, r1
+ adds r0, r5, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ ldrb r1, [r4]
+ lsls r1, 1
+ subs r1, r5, r1
+ adds r0, r5, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ ldrb r0, [r4]
+ lsls r0, 1
+ adds r5, r0
+ ldr r0, _080C59BC @ =gUnknown_3005338
+ ldrb r0, [r0]
+ subs r0, 0x1
+ cmp r7, r0
+ blt _080C5962
+_080C5994:
+ mov r2, r8
+ ldrb r1, [r2]
+ lsls r1, 1
+ subs r1, r5, r1
+ adds r0, r5, 0
+ bl sub_80C603C
+ strh r0, [r5]
+ lsls r0, r6, 24
+ lsrs r6, r0, 24
+ ldr r0, _080C59D0 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r6, r0
+ bcc _080C5922
+_080C59B0:
+ pop {r3,r4}
+ mov r8, r3
+ mov r9, r4
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C59BC: .4byte gUnknown_3005338
+_080C59C0: .4byte gUnknown_3005334
+_080C59C4: .4byte gUnknown_3005344
+_080C59C8: .4byte gUnknown_300534C
+_080C59CC: .4byte gUnknown_3005330
+_080C59D0: .4byte gUnknown_3005340
+ thumb_func_end sub_80C5884
+
+ thumb_func_start sub_80C59D4
+sub_80C59D4: @ 80C59D4
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r2, 0
+ ldr r0, _080C5A54 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C5A46
+ ldr r0, _080C5A58 @ =gUnknown_3005334
+ mov r8, r0
+ ldr r3, _080C5A5C @ =gUnknown_3005340
+_080C59EC:
+ ldr r0, _080C5A60 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C5A64 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r4, r8
+ ldr r1, [r4]
+ adds r1, r0
+ ldr r0, _080C5A68 @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r5, 0
+ adds r6, r2, 0x1
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcs _080C5A3A
+ movs r0, 0x80
+ lsls r0, 8
+ adds r7, r0, 0
+_080C5A18:
+ ldrh r0, [r4]
+ ands r0, r7
+ cmp r0, 0
+ bne _080C5A2C
+ adds r0, r4, 0
+ str r3, [sp]
+ bl sub_80C606C
+ strh r0, [r4]
+ ldr r3, [sp]
+_080C5A2C:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldrb r0, [r3]
+ cmp r5, r0
+ bcc _080C5A18
+_080C5A3A:
+ lsls r0, r6, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C5A54 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C59EC
+_080C5A46:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5A54: .4byte gUnknown_3005338
+_080C5A58: .4byte gUnknown_3005334
+_080C5A5C: .4byte gUnknown_3005340
+_080C5A60: .4byte gUnknown_3005344
+_080C5A64: .4byte gUnknown_300534C
+_080C5A68: .4byte gUnknown_3005330
+ thumb_func_end sub_80C59D4
+
+ thumb_func_start sub_80C5A6C
+sub_80C5A6C: @ 80C5A6C
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ ldr r0, _080C5B98 @ =gUnknown_3005334
+ ldr r4, [r0]
+ movs r6, 0
+ movs r0, 0x80
+ lsls r0, 8
+ adds r5, r0, 0
+_080C5A84:
+ movs r7, 0
+_080C5A86:
+ ldrh r0, [r4]
+ ands r0, r5
+ cmp r0, 0
+ bne _080C5A96
+ adds r0, r4, 0
+ bl sub_80C606C
+ strh r0, [r4]
+_080C5A96:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r4, 0x2
+ cmp r7, 0x3F
+ bls _080C5A86
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x3F
+ bls _080C5A84
+ movs r7, 0
+ ldr r1, _080C5B98 @ =gUnknown_3005334
+ mov r10, r1
+ mov r3, sp
+ movs r2, 0x80
+ lsls r2, 8
+ mov r9, r2
+_080C5ABA:
+ lsls r0, r7, 1
+ mov r2, r10
+ ldr r1, [r2]
+ adds r4, r1, r0
+ ldrh r1, [r4]
+ strh r1, [r3]
+ mov r1, r9
+ strh r1, [r4]
+ movs r6, 0x1
+ adds r4, 0x80
+ adds r5, r0, 0
+_080C5AD0:
+ ldrh r0, [r4]
+ movs r2, 0x80
+ lsls r2, 8
+ ands r0, r2
+ cmp r0, 0
+ bne _080C5AF0
+ adds r2, r4, 0
+ adds r2, 0x80
+ mov r0, sp
+ adds r1, r4, 0
+ str r3, [sp, 0x4]
+ bl sub_80C62DC
+ strh r0, [r4]
+ ldr r3, [sp, 0x4]
+ strh r0, [r3]
+_080C5AF0:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r4, 0x80
+ cmp r6, 0x3E
+ bls _080C5AD0
+ mov r0, r9
+ strh r0, [r4]
+ mov r1, r10
+ ldr r0, [r1]
+ adds r4, r0, r5
+ ldrh r0, [r4]
+ strh r0, [r3]
+ mov r2, r9
+ strh r2, [r4]
+ movs r6, 0x1
+ adds r4, 0x80
+ movs r0, 0x80
+ lsls r0, 8
+ mov r8, r0
+_080C5B18:
+ ldrh r0, [r4]
+ mov r1, r8
+ ands r0, r1
+ adds r5, r4, 0
+ adds r5, 0x80
+ cmp r0, 0
+ bne _080C5B38
+ mov r0, sp
+ adds r1, r4, 0
+ adds r2, r5, 0
+ str r3, [sp, 0x4]
+ bl sub_80C62DC
+ strh r0, [r4]
+ ldr r3, [sp, 0x4]
+ strh r0, [r3]
+_080C5B38:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r4, r5, 0
+ cmp r6, 0x3E
+ bls _080C5B18
+ mov r2, r9
+ strh r2, [r4]
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ cmp r7, 0x3F
+ bls _080C5ABA
+ ldr r0, _080C5B98 @ =gUnknown_3005334
+ ldr r4, [r0]
+ movs r6, 0
+ movs r0, 0x80
+ lsls r0, 8
+ mov r8, r0
+_080C5B5E:
+ movs r7, 0
+ adds r5, r6, 0x1
+_080C5B62:
+ ldrh r0, [r4]
+ mov r1, r8
+ ands r0, r1
+ cmp r0, 0
+ bne _080C5B74
+ adds r0, r4, 0
+ bl sub_80C606C
+ strh r0, [r4]
+_080C5B74:
+ adds r0, r7, 0x1
+ lsls r0, 24
+ lsrs r7, r0, 24
+ adds r4, 0x2
+ cmp r7, 0x3F
+ bls _080C5B62
+ lsls r0, r5, 24
+ lsrs r6, r0, 24
+ cmp r6, 0x3F
+ bls _080C5B5E
+ 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
+_080C5B98: .4byte gUnknown_3005334
+ thumb_func_end sub_80C5A6C
+
+ thumb_func_start sub_80C5B9C
+sub_80C5B9C: @ 80C5B9C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r2, 0
+ ldr r0, _080C5C2C @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C5C1E
+ ldr r0, _080C5C30 @ =gUnknown_3005334
+ mov r8, r0
+_080C5BB2:
+ ldr r0, _080C5C34 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C5C38 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r3, r8
+ ldr r1, [r3]
+ adds r1, r0
+ ldr r0, _080C5C3C @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ ldrh r1, [r4]
+ mov r0, sp
+ strh r1, [r0]
+ movs r5, 0x1
+ adds r4, 0x2
+ ldr r0, _080C5C40 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r6, r2, 0x1
+ cmp r5, r0
+ bge _080C5C12
+ movs r0, 0x80
+ lsls r0, 8
+ adds r7, r0, 0
+_080C5BEA:
+ ldrh r0, [r4]
+ ands r0, r7
+ cmp r0, 0
+ bne _080C5C00
+ mov r0, sp
+ adds r1, r4, 0
+ bl sub_80C6098
+ strh r0, [r4]
+ mov r1, sp
+ strh r0, [r1]
+_080C5C00:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldr r0, _080C5C40 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ subs r0, 0x1
+ cmp r5, r0
+ blt _080C5BEA
+_080C5C12:
+ lsls r0, r6, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C5C2C @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C5BB2
+_080C5C1E:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5C2C: .4byte gUnknown_3005338
+_080C5C30: .4byte gUnknown_3005334
+_080C5C34: .4byte gUnknown_3005344
+_080C5C38: .4byte gUnknown_300534C
+_080C5C3C: .4byte gUnknown_3005330
+_080C5C40: .4byte gUnknown_3005340
+ thumb_func_end sub_80C5B9C
+
+ thumb_func_start sub_80C5C44
+sub_80C5C44: @ 80C5C44
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x8
+ movs r2, 0
+ ldr r0, _080C5CE0 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C5CD2
+ ldr r0, _080C5CE4 @ =gUnknown_3005334
+ mov r8, r0
+ ldr r7, _080C5CE8 @ =gUnknown_300534C
+_080C5C5C:
+ ldr r0, _080C5CEC @ =gUnknown_3005344
+ ldrb r1, [r0]
+ ldrb r0, [r7]
+ muls r0, r1
+ lsls r0, 1
+ mov r3, r8
+ ldr r1, [r3]
+ adds r1, r0
+ ldr r0, _080C5CF0 @ =gUnknown_3005330
+ ldrb r0, [r0]
+ adds r0, r2
+ lsls r0, 1
+ adds r4, r1, r0
+ ldrh r1, [r4]
+ mov r0, sp
+ strh r1, [r0]
+ movs r5, 0x1
+ ldrb r0, [r7]
+ lsls r0, 1
+ adds r4, r0
+ ldr r0, _080C5CF4 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ subs r0, 0x1
+ adds r6, r2, 0x1
+ cmp r5, r0
+ bge _080C5CC6
+ movs r0, 0x80
+ lsls r0, 8
+ adds r2, r0, 0
+_080C5C96:
+ ldrh r0, [r4]
+ ands r0, r2
+ cmp r0, 0
+ bne _080C5CB0
+ mov r0, sp
+ adds r1, r4, 0
+ str r2, [sp, 0x4]
+ bl sub_80C6098
+ strh r0, [r4]
+ mov r1, sp
+ strh r0, [r1]
+ ldr r2, [sp, 0x4]
+_080C5CB0:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ ldrb r0, [r7]
+ lsls r0, 1
+ adds r4, r0
+ ldr r0, _080C5CF4 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ subs r0, 0x1
+ cmp r5, r0
+ blt _080C5C96
+_080C5CC6:
+ lsls r0, r6, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C5CE0 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C5C5C
+_080C5CD2:
+ add sp, 0x8
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C5CE0: .4byte gUnknown_3005340
+_080C5CE4: .4byte gUnknown_3005334
+_080C5CE8: .4byte gUnknown_300534C
+_080C5CEC: .4byte gUnknown_3005344
+_080C5CF0: .4byte gUnknown_3005330
+_080C5CF4: .4byte gUnknown_3005338
+ thumb_func_end sub_80C5C44
+
+ thumb_func_start sub_80C5CF8
+sub_80C5CF8: @ 80C5CF8
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x20
+ lsls r0, 16
+ lsrs r0, 16
+ mov r10, r0
+ mov r2, sp
+ ldr r3, _080C5D64 @ =gUnknown_83F3024
+ lsls r1, r0, 1
+ add r1, r10
+ adds r0, r1, r3
+ ldrb r0, [r0]
+ strb r0, [r2]
+ adds r0, r3, 0x1
+ adds r0, r1, r0
+ ldrb r0, [r0]
+ strb r0, [r2, 0x1]
+ mov r5, sp
+ adds r0, r3, 0x2
+ adds r1, r0
+ ldrb r4, [r1]
+ lsls r2, r4, 24
+ lsrs r1, r2, 27
+ movs r0, 0x7
+ ands r1, r0
+ strh r1, [r5, 0x2]
+ lsrs r2, 25
+ mov r9, r2
+ movs r0, 0x3
+ ands r2, r0
+ mov r9, r2
+ movs r5, 0x1
+ ands r5, r4
+ movs r4, 0x1
+ mov r8, r4
+ cmp r8, r1
+ bcs _080C5DAA
+ mov r3, sp
+_080C5D4A:
+ cmp r5, 0
+ bne _080C5D68
+ mov r0, r8
+ lsls r2, r0, 2
+ mov r4, sp
+ adds r1, r4, r2
+ ldrb r0, [r3]
+ mov r4, r8
+ subs r0, r4
+ strb r0, [r1]
+ ldrb r0, [r3, 0x1]
+ add r0, r8
+ b _080C5D7A
+ .align 2, 0
+_080C5D64: .4byte gUnknown_83F3024
+_080C5D68:
+ mov r0, r8
+ lsls r2, r0, 2
+ mov r4, sp
+ adds r1, r4, r2
+ ldrb r0, [r3]
+ adds r0, 0x1
+ strb r0, [r1]
+ ldrb r0, [r3, 0x1]
+ subs r0, 0x1
+_080C5D7A:
+ strb r0, [r1, 0x1]
+ add r2, sp
+ ldrb r0, [r2]
+ cmp r0, 0x3F
+ bhi _080C5D8A
+ ldrb r0, [r2, 0x1]
+ cmp r0, 0x3F
+ bls _080C5D92
+_080C5D8A:
+ mov r0, r8
+ subs r0, 0x1
+ strh r0, [r3, 0x2]
+ b _080C5DAA
+_080C5D92:
+ ldrh r0, [r3, 0x2]
+ mov r1, r8
+ subs r0, r1
+ strh r0, [r2, 0x2]
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ ldrh r0, [r3, 0x2]
+ cmp r8, r0
+ bcc _080C5D4A
+_080C5DAA:
+ movs r2, 0
+ mov r8, r2
+ mov r0, sp
+ ldrh r0, [r0, 0x2]
+ cmp r8, r0
+ bcc _080C5DB8
+ b _080C5EBA
+_080C5DB8:
+ movs r3, 0x1F
+_080C5DBA:
+ ldr r1, _080C5E18 @ =gUnknown_3005334
+ mov r4, r8
+ lsls r0, r4, 2
+ mov r2, sp
+ adds r6, r2, r0
+ ldrb r0, [r6, 0x1]
+ lsls r0, 7
+ ldr r1, [r1]
+ adds r1, r0
+ ldrb r0, [r6]
+ lsls r0, 1
+ adds r2, r1, r0
+ ldrh r1, [r2]
+ movs r4, 0x80
+ lsls r4, 8
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080C5EA6
+ movs r7, 0x1F
+ ands r7, r1
+ lsls r0, r1, 16
+ lsrs r5, r0, 21
+ ands r5, r3
+ lsrs r4, r0, 26
+ ands r4, r3
+ mov r0, r9
+ cmp r0, 0
+ blt _080C5E9C
+ cmp r0, 0x1
+ ble _080C5E1C
+ cmp r0, 0x3
+ bgt _080C5E9C
+ ldrh r0, [r6, 0x2]
+ adds r1, r7, r0
+ lsls r1, 16
+ lsrs r7, r1, 16
+ adds r1, r5, r0
+ lsls r1, 16
+ lsrs r5, r1, 16
+ adds r0, r4, r0
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r7, 0x1F
+ bls _080C5E90
+ movs r7, 0x1F
+ b _080C5E90
+ .align 2, 0
+_080C5E18: .4byte gUnknown_3005334
+_080C5E1C:
+ mov r1, r10
+ lsls r0, r1, 1
+ add r0, r10
+ ldr r1, _080C5E50 @ =gUnknown_83F3024
+ adds r1, 0x2
+ adds r0, r1
+ ldrb r0, [r0]
+ lsrs r0, 3
+ movs r1, 0x7
+ ands r0, r1
+ movs r1, 0x3
+ str r2, [sp, 0x18]
+ str r3, [sp, 0x1C]
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ ldr r2, [sp, 0x18]
+ ldr r3, [sp, 0x1C]
+ cmp r0, 0x1
+ beq _080C5E6C
+ cmp r0, 0x1
+ bgt _080C5E54
+ cmp r0, 0
+ beq _080C5E5A
+ b _080C5E9C
+ .align 2, 0
+_080C5E50: .4byte gUnknown_83F3024
+_080C5E54:
+ cmp r0, 0x2
+ beq _080C5E7E
+ b _080C5E9C
+_080C5E5A:
+ ldrh r0, [r6, 0x2]
+ cmp r7, r0
+ bcc _080C5E68
+ subs r0, r7, r0
+ lsls r0, 16
+ lsrs r7, r0, 16
+ b _080C5E9C
+_080C5E68:
+ movs r7, 0
+ b _080C5E9C
+_080C5E6C:
+ ldrh r0, [r6, 0x2]
+ cmp r5, r0
+ bcc _080C5E7A
+ subs r0, r5, r0
+ lsls r0, 16
+ lsrs r5, r0, 16
+ b _080C5E9C
+_080C5E7A:
+ movs r5, 0
+ b _080C5E9C
+_080C5E7E:
+ ldrh r0, [r6, 0x2]
+ cmp r4, r0
+ bcc _080C5E8C
+ subs r0, r4, r0
+ lsls r0, 16
+ lsrs r4, r0, 16
+ b _080C5E9C
+_080C5E8C:
+ movs r4, 0
+ b _080C5E9C
+_080C5E90:
+ cmp r5, 0x1F
+ bls _080C5E96
+ movs r5, 0x1F
+_080C5E96:
+ cmp r4, 0x1F
+ bls _080C5E9C
+ movs r4, 0x1F
+_080C5E9C:
+ lsls r0, r4, 10
+ lsls r1, r5, 5
+ orrs r0, r1
+ orrs r7, r0
+ strh r7, [r2]
+_080C5EA6:
+ mov r0, r8
+ adds r0, 0x1
+ lsls r0, 24
+ lsrs r0, 24
+ mov r8, r0
+ mov r0, sp
+ ldrh r0, [r0, 0x2]
+ cmp r8, r0
+ bcs _080C5EBA
+ b _080C5DBA
+_080C5EBA:
+ add sp, 0x20
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80C5CF8
+
+ thumb_func_start sub_80C5ECC
+sub_80C5ECC: @ 80C5ECC
+ push {lr}
+ ldrh r1, [r0]
+ movs r3, 0x1F
+ movs r0, 0x1F
+ ands r0, r1
+ lsls r1, 16
+ lsrs r2, r1, 21
+ ands r2, r3
+ lsrs r1, 26
+ ands r1, r3
+ adds r0, r2
+ adds r0, r1
+ movs r1, 0x3
+ bl __divsi3
+ adds r1, r0, 0
+ lsls r1, 16
+ lsrs r1, 16
+ lsls r0, r1, 10
+ lsls r2, r1, 5
+ orrs r0, r2
+ orrs r0, r1
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C5ECC
+
+ thumb_func_start sub_80C5F00
+sub_80C5F00: @ 80C5F00
+ push {r4,lr}
+ lsls r1, 24
+ lsrs r4, r1, 24
+ ldrh r0, [r0]
+ movs r2, 0x1F
+ movs r1, 0x1F
+ ands r1, r0
+ lsls r0, 16
+ lsrs r3, r0, 21
+ ands r3, r2
+ lsrs r0, 26
+ ands r0, r2
+ cmp r1, 0x10
+ bhi _080C5F30
+ cmp r3, 0x10
+ bhi _080C5F30
+ cmp r0, 0x10
+ bhi _080C5F30
+ adds r0, r4, 0
+ bl sub_80C5F3C
+ lsls r0, 16
+ lsrs r0, 16
+ b _080C5F32
+_080C5F30:
+ ldr r0, _080C5F38 @ =0x00007fff
+_080C5F32:
+ pop {r4}
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080C5F38: .4byte 0x00007fff
+ thumb_func_end sub_80C5F00
+
+ thumb_func_start sub_80C5F3C
+sub_80C5F3C: @ 80C5F3C
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ adds r4, r0, 0
+ lsls r4, 24
+ lsrs r4, 24
+ movs r0, 0
+ mov r8, r0
+ movs r6, 0
+ movs r7, 0
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl __udivsi3
+ lsls r0, 24
+ lsrs r0, 24
+ movs r1, 0x3
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r0, r4, 0
+ movs r1, 0x6
+ bl __umodsi3
+ lsls r0, 24
+ lsrs r0, 24
+ cmp r0, 0x5
+ bhi _080C5FF4
+ lsls r0, 2
+ ldr r1, _080C5F80 @ =_080C5F84
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080C5F80: .4byte _080C5F84
+ .align 2, 0
+_080C5F84:
+ .4byte _080C5F9C
+ .4byte _080C5FAC
+ .4byte _080C5FBC
+ .4byte _080C5FCA
+ .4byte _080C5FD8
+ .4byte _080C5FE6
+_080C5F9C:
+ movs r0, 0x15
+ subs r0, r5
+ lsls r0, 16
+ lsrs r6, r0, 16
+ adds r7, r6, 0
+ movs r1, 0
+ mov r8, r1
+ b _080C5FF4
+_080C5FAC:
+ movs r7, 0
+ movs r0, 0x15
+ subs r0, r5
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ mov r6, r8
+ b _080C5FF4
+_080C5FBC:
+ movs r0, 0x15
+ subs r0, r5
+ lsls r0, 16
+ lsrs r7, r0, 16
+ movs r6, 0
+ mov r8, r7
+ b _080C5FF4
+_080C5FCA:
+ movs r7, 0
+ movs r6, 0
+ movs r0, 0x17
+ subs r0, r5
+ lsls r0, 16
+ lsrs r0, 16
+ b _080C5FF2
+_080C5FD8:
+ movs r0, 0x17
+ subs r0, r5
+ lsls r0, 16
+ lsrs r7, r0, 16
+ movs r6, 0
+ mov r8, r6
+ b _080C5FF4
+_080C5FE6:
+ movs r7, 0
+ movs r0, 0x17
+ subs r0, r5
+ lsls r0, 16
+ lsrs r6, r0, 16
+ movs r0, 0
+_080C5FF2:
+ mov r8, r0
+_080C5FF4:
+ lsls r0, r7, 10
+ lsls r1, r6, 5
+ orrs r0, r1
+ mov r1, r8
+ orrs r1, r0
+ lsls r0, r1, 16
+ lsrs r0, 16
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C5F3C
+
+ thumb_func_start sub_80C600C
+sub_80C600C: @ 80C600C
+ push {lr}
+ ldrh r0, [r0]
+ movs r2, 0x1F
+ movs r1, 0x1F
+ ands r1, r0
+ lsls r0, 16
+ lsrs r3, r0, 21
+ ands r3, r2
+ lsrs r0, 26
+ ands r0, r2
+ cmp r1, 0x10
+ bhi _080C6030
+ cmp r3, 0x10
+ bhi _080C6030
+ cmp r0, 0x10
+ bhi _080C6030
+ movs r0, 0
+ b _080C6032
+_080C6030:
+ ldr r0, _080C6038 @ =0x00007fff
+_080C6032:
+ pop {r1}
+ bx r1
+ .align 2, 0
+_080C6038: .4byte 0x00007fff
+ thumb_func_end sub_80C600C
+
+ thumb_func_start sub_80C603C
+sub_80C603C: @ 80C603C
+ push {r4,lr}
+ adds r4, r0, 0
+ ldrh r3, [r4]
+ cmp r3, 0
+ beq _080C6064
+ movs r2, 0x80
+ lsls r2, 8
+ adds r0, r2, 0
+ ands r0, r3
+ cmp r0, 0
+ beq _080C6056
+ adds r0, r2, 0
+ b _080C6066
+_080C6056:
+ ldrh r1, [r1]
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ bne _080C6064
+ ldrh r0, [r4]
+ b _080C6066
+_080C6064:
+ movs r0, 0
+_080C6066:
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C603C
+
+ thumb_func_start sub_80C606C
+sub_80C606C: @ 80C606C
+ push {r4,lr}
+ ldrh r1, [r0]
+ movs r0, 0x1F
+ movs r3, 0x1F
+ ands r3, r1
+ lsls r1, 16
+ lsrs r2, r1, 21
+ lsrs r1, 26
+ subs r3, r0, r3
+ adds r4, r0, 0
+ bics r4, r2
+ adds r2, r4, 0
+ bics r0, r1
+ lsls r0, 10
+ lsls r2, 5
+ orrs r0, r2
+ orrs r0, r3
+ lsls r0, 16
+ lsrs r0, 16
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C606C
+
+ thumb_func_start sub_80C6098
+sub_80C6098: @ 80C6098
+ push {r4-r7,lr}
+ sub sp, 0x14
+ adds r7, r1, 0
+ ldrh r4, [r0]
+ ldrh r5, [r7]
+ lsls r6, r4, 16
+ lsls r0, r5, 16
+ mov r12, r0
+ cmp r4, r5
+ beq _080C610A
+ mov r2, sp
+ movs r3, 0x1F
+ movs r1, 0x1F
+ adds r0, r1, 0
+ ands r0, r4
+ strh r0, [r2]
+ lsrs r0, r6, 21
+ ands r0, r3
+ strh r0, [r2, 0x2]
+ lsrs r0, r6, 26
+ ands r0, r3
+ strh r0, [r2, 0x4]
+ mov r0, sp
+ ands r1, r5
+ strh r1, [r0, 0x6]
+ mov r1, sp
+ mov r2, r12
+ lsrs r0, r2, 21
+ ands r0, r3
+ strh r0, [r1, 0x8]
+ lsrs r0, r2, 26
+ ands r0, r3
+ strh r0, [r1, 0xA]
+ mov r0, sp
+ ldrh r0, [r0]
+ cmp r0, 0x19
+ bls _080C60F2
+ mov r0, sp
+ ldrh r0, [r0, 0x2]
+ cmp r0, 0x19
+ bls _080C60F2
+ mov r0, sp
+ ldrh r0, [r0, 0x4]
+ cmp r0, 0x19
+ bhi _080C610A
+_080C60F2:
+ mov r0, sp
+ ldrh r0, [r0, 0x6]
+ cmp r0, 0x19
+ bls _080C610E
+ mov r0, sp
+ ldrh r0, [r0, 0x8]
+ cmp r0, 0x19
+ bls _080C610E
+ mov r0, sp
+ ldrh r0, [r0, 0xA]
+ cmp r0, 0x19
+ bls _080C610E
+_080C610A:
+ ldrh r0, [r7]
+ b _080C61B4
+_080C610E:
+ movs r4, 0
+ add r6, sp, 0xC
+ mov r7, sp
+ adds r7, 0x6
+ adds r5, r6, 0
+_080C6118:
+ lsls r2, r4, 1
+ mov r1, sp
+ adds r0, r1, r2
+ adds r1, r7, r2
+ ldrh r3, [r0]
+ ldrh r0, [r1]
+ cmp r3, r0
+ bls _080C612E
+ adds r1, r5, r2
+ subs r0, r3, r0
+ b _080C6132
+_080C612E:
+ adds r1, r5, r2
+ subs r0, r3
+_080C6132:
+ strh r0, [r1]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0x2
+ bls _080C6118
+ adds r1, r6, 0
+ ldrh r0, [r1, 0x2]
+ ldrh r3, [r1]
+ cmp r3, r0
+ bcc _080C6158
+ ldrh r2, [r1, 0x4]
+ cmp r3, r2
+ bcc _080C6152
+ adds r2, r3, 0
+ b _080C616C
+_080C6152:
+ cmp r0, r2
+ bcs _080C615E
+ b _080C6166
+_080C6158:
+ ldrh r2, [r1, 0x4]
+ cmp r0, r2
+ bcc _080C6162
+_080C615E:
+ ldrh r2, [r1, 0x2]
+ b _080C616C
+_080C6162:
+ cmp r2, r3
+ bcc _080C616A
+_080C6166:
+ ldrh r2, [r1, 0x4]
+ b _080C616C
+_080C616A:
+ ldrh r2, [r6]
+_080C616C:
+ mov r0, sp
+ ldrh r1, [r0, 0x6]
+ lsrs r0, r2, 1
+ movs r6, 0x1F
+ subs r6, r0
+ adds r0, r1, 0
+ muls r0, r6
+ movs r1, 0x1F
+ bl __divsi3
+ adds r5, r0, 0
+ lsls r5, 16
+ lsrs r5, 16
+ mov r0, sp
+ ldrh r0, [r0, 0x8]
+ muls r0, r6
+ movs r1, 0x1F
+ bl __divsi3
+ adds r4, r0, 0
+ lsls r4, 16
+ lsrs r4, 16
+ mov r0, sp
+ ldrh r0, [r0, 0xA]
+ muls r0, r6
+ movs r1, 0x1F
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 6
+ lsls r4, 5
+ orrs r0, r4
+ orrs r5, r0
+ lsls r5, 16
+ lsrs r5, 16
+ adds r0, r5, 0
+_080C61B4:
+ add sp, 0x14
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C6098
+
+ thumb_func_start sub_80C61BC
+sub_80C61BC: @ 80C61BC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r3, r0, 0
+ mov r10, r1
+ str r2, [sp]
+ ldrh r1, [r3]
+ mov r0, r10
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _080C61E4
+ ldrh r0, [r2]
+ cmp r0, r1
+ bne _080C61E4
+ mov r1, r10
+ ldrh r0, [r1]
+ b _080C62CC
+_080C61E4:
+ mov r2, r10
+ ldrh r0, [r2]
+ movs r1, 0x1F
+ mov r9, r1
+ movs r4, 0x1F
+ adds r5, r4, 0
+ ands r5, r0
+ lsls r0, 16
+ lsrs r2, r0, 21
+ mov r1, r9
+ ands r1, r2
+ mov r8, r1
+ lsrs r0, 26
+ mov r2, r9
+ ands r2, r0
+ str r2, [sp, 0x4]
+ ldrh r2, [r3]
+ adds r0, r4, 0
+ ands r0, r2
+ lsls r2, 16
+ lsrs r1, r2, 21
+ mov r3, r9
+ ands r1, r3
+ adds r0, r1
+ lsrs r2, 26
+ ands r2, r3
+ adds r0, r2
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+ mov r1, r8
+ adds r0, r5, r1
+ ldr r2, [sp, 0x4]
+ adds r0, r2
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldr r3, [sp]
+ ldrh r1, [r3]
+ ands r4, r1
+ lsls r1, 16
+ lsrs r0, r1, 21
+ mov r2, r9
+ ands r0, r2
+ adds r4, r0
+ lsrs r1, 26
+ ands r1, r2
+ adds r4, r1
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r7, r6
+ bne _080C6266
+ cmp r1, r6
+ bne _080C6266
+ mov r3, r10
+ ldrh r0, [r3]
+ b _080C62CC
+_080C6266:
+ cmp r7, r6
+ bls _080C626E
+ subs r0, r7, r6
+ b _080C6270
+_080C626E:
+ subs r0, r6, r7
+_080C6270:
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r1, r6
+ bls _080C627C
+ subs r0, r1, r6
+ b _080C627E
+_080C627C:
+ subs r0, r6, r1
+_080C627E:
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r2, r0
+ bcc _080C6288
+ adds r0, r2, 0
+_080C6288:
+ lsrs r0, 1
+ movs r4, 0x1F
+ subs r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r5, 0
+ muls r0, r4
+ movs r1, 0x1F
+ bl __divsi3
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r0, r8
+ muls r0, r4
+ movs r1, 0x1F
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r1, [sp, 0x4]
+ adds r0, r1, 0
+ muls r0, r4
+ movs r1, 0x1F
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 6
+ mov r2, r8
+ lsls r1, r2, 5
+ orrs r0, r1
+ orrs r5, r0
+ lsls r0, r5, 16
+ lsrs r0, 16
+_080C62CC:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C61BC
+
+ thumb_func_start sub_80C62DC
+sub_80C62DC: @ 80C62DC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0x8
+ adds r3, r0, 0
+ mov r10, r1
+ str r2, [sp]
+ ldrh r1, [r3]
+ mov r0, r10
+ ldrh r0, [r0]
+ cmp r1, r0
+ bne _080C6304
+ ldrh r0, [r2]
+ cmp r0, r1
+ bne _080C6304
+ mov r1, r10
+ ldrh r0, [r1]
+ b _080C63EA
+_080C6304:
+ mov r2, r10
+ ldrh r0, [r2]
+ movs r1, 0x1F
+ mov r9, r1
+ movs r4, 0x1F
+ adds r5, r4, 0
+ ands r5, r0
+ lsls r0, 16
+ lsrs r2, r0, 21
+ mov r1, r9
+ ands r1, r2
+ mov r8, r1
+ lsrs r0, 26
+ mov r2, r9
+ ands r2, r0
+ str r2, [sp, 0x4]
+ ldrh r2, [r3]
+ adds r0, r4, 0
+ ands r0, r2
+ lsls r2, 16
+ lsrs r1, r2, 21
+ mov r3, r9
+ ands r1, r3
+ adds r0, r1
+ lsrs r2, 26
+ ands r2, r3
+ adds r0, r2
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 16
+ lsrs r7, r0, 16
+ mov r1, r8
+ adds r0, r5, r1
+ ldr r2, [sp, 0x4]
+ adds r0, r2
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 16
+ lsrs r6, r0, 16
+ ldr r3, [sp]
+ ldrh r1, [r3]
+ ands r4, r1
+ lsls r1, 16
+ lsrs r0, r1, 21
+ mov r2, r9
+ ands r0, r2
+ adds r4, r0
+ lsrs r1, 26
+ ands r1, r2
+ adds r4, r1
+ adds r0, r4, 0
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 16
+ lsrs r1, r0, 16
+ cmp r7, r6
+ bne _080C6386
+ cmp r1, r6
+ bne _080C6386
+ mov r3, r10
+ ldrh r0, [r3]
+ b _080C63EA
+_080C6386:
+ cmp r7, r6
+ bls _080C638E
+ subs r0, r7, r6
+ b _080C6390
+_080C638E:
+ subs r0, r6, r7
+_080C6390:
+ lsls r0, 16
+ lsrs r2, r0, 16
+ cmp r1, r6
+ bls _080C639C
+ subs r0, r1, r6
+ b _080C639E
+_080C639C:
+ subs r0, r6, r1
+_080C639E:
+ lsls r0, 16
+ lsrs r0, 16
+ cmp r2, r0
+ bcc _080C63A8
+ adds r0, r2, 0
+_080C63A8:
+ movs r4, 0x1F
+ subs r4, r0
+ lsls r4, 16
+ lsrs r4, 16
+ adds r0, r5, 0
+ muls r0, r4
+ movs r1, 0x1F
+ bl __divsi3
+ lsls r0, 16
+ lsrs r5, r0, 16
+ mov r0, r8
+ muls r0, r4
+ movs r1, 0x1F
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 16
+ mov r8, r0
+ ldr r1, [sp, 0x4]
+ adds r0, r1, 0
+ muls r0, r4
+ movs r1, 0x1F
+ bl __divsi3
+ lsls r0, 16
+ lsrs r0, 6
+ mov r2, r8
+ lsls r1, r2, 5
+ orrs r0, r1
+ orrs r5, r0
+ lsls r0, r5, 16
+ lsrs r0, 16
+_080C63EA:
+ add sp, 0x8
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C62DC
+
+ thumb_func_start sub_80C63FC
+sub_80C63FC: @ 80C63FC
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ sub sp, 0xC
+ ldrb r1, [r0, 0x1D]
+ lsrs r5, r1, 3
+ ldrb r1, [r0, 0x1E]
+ lsrs r1, 3
+ str r1, [sp, 0x8]
+ ldr r1, [r0, 0x4]
+ str r1, [sp]
+ ldr r2, [r0, 0x10]
+ str r2, [sp, 0x4]
+ ldrh r0, [r0, 0x16]
+ cmp r0, 0x2
+ bne _080C64AC
+ movs r1, 0
+ ldr r0, [sp, 0x8]
+ cmp r1, r0
+ bcc _080C642A
+ b _080C6538
+_080C642A:
+ movs r0, 0
+ adds r2, r1, 0x1
+ mov r10, r2
+ cmp r0, r5
+ bcs _080C649E
+ adds r2, r1, 0
+ muls r2, r5
+ mov r9, r2
+ lsls r1, 3
+ mov r8, r1
+_080C643E:
+ movs r4, 0
+ lsls r6, r0, 4
+ adds r7, r0, 0x1
+ add r0, r9
+ lsls r0, 6
+ ldr r1, [sp, 0x4]
+ adds r1, r0
+ mov r12, r1
+_080C644E:
+ lsls r0, r4, 3
+ mov r2, r12
+ adds r3, r2, r0
+ mov r1, r8
+ adds r0, r1, r4
+ lsls r0, 3
+ muls r0, r5
+ lsls r0, 1
+ ldr r2, [sp]
+ adds r0, r2, r0
+ adds r2, r0, r6
+ ldrh r0, [r2, 0x2]
+ lsls r0, 8
+ ldrh r1, [r2]
+ orrs r0, r1
+ strh r0, [r3]
+ ldrh r0, [r2, 0x6]
+ lsls r0, 8
+ ldrh r1, [r2, 0x4]
+ orrs r0, r1
+ strh r0, [r3, 0x2]
+ ldrh r0, [r2, 0xA]
+ lsls r0, 8
+ ldrh r1, [r2, 0x8]
+ orrs r0, r1
+ strh r0, [r3, 0x4]
+ ldrh r0, [r2, 0xE]
+ lsls r0, 8
+ ldrh r1, [r2, 0xC]
+ orrs r0, r1
+ strh r0, [r3, 0x6]
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x7
+ bls _080C644E
+ lsls r0, r7, 16
+ lsrs r0, 16
+ cmp r0, r5
+ bcc _080C643E
+_080C649E:
+ mov r1, r10
+ lsls r0, r1, 16
+ lsrs r1, r0, 16
+ ldr r2, [sp, 0x8]
+ cmp r1, r2
+ bcc _080C642A
+ b _080C6538
+_080C64AC:
+ movs r1, 0
+ ldr r0, [sp, 0x8]
+ cmp r1, r0
+ bcs _080C6538
+_080C64B4:
+ movs r0, 0
+ adds r2, r1, 0x1
+ mov r10, r2
+ cmp r0, r5
+ bcs _080C652C
+ adds r2, r1, 0
+ muls r2, r5
+ mov r9, r2
+ lsls r1, 3
+ mov r8, r1
+_080C64C8:
+ movs r4, 0
+ lsls r6, r0, 4
+ adds r7, r0, 0x1
+ add r0, r9
+ lsls r0, 5
+ ldr r1, [sp, 0x4]
+ adds r1, r0
+ mov r12, r1
+_080C64D8:
+ lsls r0, r4, 2
+ mov r2, r12
+ adds r3, r2, r0
+ mov r1, r8
+ adds r0, r1, r4
+ lsls r0, 3
+ muls r0, r5
+ lsls r0, 1
+ ldr r2, [sp]
+ adds r0, r2, r0
+ adds r2, r0, r6
+ ldrh r1, [r2, 0x2]
+ lsls r1, 4
+ ldrh r0, [r2]
+ orrs r1, r0
+ ldrh r0, [r2, 0x4]
+ lsls r0, 8
+ orrs r1, r0
+ ldrh r0, [r2, 0x6]
+ lsls r0, 12
+ orrs r1, r0
+ strh r1, [r3]
+ ldrh r1, [r2, 0xA]
+ lsls r1, 4
+ ldrh r0, [r2, 0x8]
+ orrs r1, r0
+ ldrh r0, [r2, 0xC]
+ lsls r0, 8
+ orrs r1, r0
+ ldrh r0, [r2, 0xE]
+ lsls r0, 12
+ orrs r1, r0
+ strh r1, [r3, 0x2]
+ adds r0, r4, 0x1
+ lsls r0, 16
+ lsrs r4, r0, 16
+ cmp r4, 0x7
+ bls _080C64D8
+ lsls r0, r7, 16
+ lsrs r0, 16
+ cmp r0, r5
+ bcc _080C64C8
+_080C652C:
+ mov r1, r10
+ lsls r0, r1, 16
+ lsrs r1, r0, 16
+ ldr r2, [sp, 0x8]
+ cmp r1, r2
+ bcc _080C64B4
+_080C6538:
+ 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_80C63FC
+
+ thumb_func_start sub_80C6548
+sub_80C6548: @ 80C6548
+ push {lr}
+ ldr r2, _080C6598 @ =gUnknown_3005354
+ ldrb r1, [r0, 0x18]
+ lsls r1, 4
+ strh r1, [r2]
+ ldr r3, _080C659C @ =gUnknown_3005350
+ ldrh r2, [r2]
+ lsls r2, 1
+ ldr r1, [r0, 0x8]
+ adds r1, r2
+ str r1, [r3]
+ ldr r2, _080C65A0 @ =gUnknown_3005334
+ ldr r1, [r0, 0x4]
+ str r1, [r2]
+ ldr r2, _080C65A4 @ =gUnknown_3005330
+ ldrb r1, [r0, 0x19]
+ strb r1, [r2]
+ ldr r2, _080C65A8 @ =gUnknown_3005344
+ ldrb r1, [r0, 0x1A]
+ strb r1, [r2]
+ ldr r2, _080C65AC @ =gUnknown_3005340
+ ldrb r1, [r0, 0x1B]
+ strb r1, [r2]
+ ldr r2, _080C65B0 @ =gUnknown_3005338
+ ldrb r1, [r0, 0x1C]
+ strb r1, [r2]
+ ldr r2, _080C65B4 @ =gUnknown_300534C
+ ldrb r1, [r0, 0x1D]
+ strb r1, [r2]
+ ldr r2, _080C65B8 @ =gUnknown_300533C
+ ldrb r1, [r0, 0x1E]
+ strb r1, [r2]
+ ldrh r0, [r0, 0x14]
+ cmp r0, 0x5
+ bhi _080C660E
+ lsls r0, 2
+ ldr r1, _080C65BC @ =_080C65C0
+ adds r0, r1
+ ldr r0, [r0]
+ mov pc, r0
+ .align 2, 0
+_080C6598: .4byte gUnknown_3005354
+_080C659C: .4byte gUnknown_3005350
+_080C65A0: .4byte gUnknown_3005334
+_080C65A4: .4byte gUnknown_3005330
+_080C65A8: .4byte gUnknown_3005344
+_080C65AC: .4byte gUnknown_3005340
+_080C65B0: .4byte gUnknown_3005338
+_080C65B4: .4byte gUnknown_300534C
+_080C65B8: .4byte gUnknown_300533C
+_080C65BC: .4byte _080C65C0
+ .align 2, 0
+_080C65C0:
+ .4byte _080C65D8
+ .4byte _080C65E0
+ .4byte _080C65E8
+ .4byte _080C65F2
+ .4byte _080C65FC
+ .4byte _080C6606
+_080C65D8:
+ movs r0, 0
+ bl sub_80C6748
+ b _080C660E
+_080C65E0:
+ movs r0, 0x1
+ bl sub_80C6748
+ b _080C660E
+_080C65E8:
+ bl sub_80C6614
+ bl sub_80C6AB8
+ b _080C660E
+_080C65F2:
+ bl sub_80C6714
+ bl sub_80C6A08
+ b _080C660E
+_080C65FC:
+ bl sub_80C66D8
+ bl sub_80C6958
+ b _080C660E
+_080C6606:
+ bl sub_80C66BC
+ bl sub_80C68A0
+_080C660E:
+ pop {r0}
+ bx r0
+ thumb_func_end sub_80C6548
+
+ thumb_func_start sub_80C6614
+sub_80C6614: @ 80C6614
+ ldr r2, _080C667C @ =gUnknown_3005350
+ ldr r1, [r2]
+ movs r0, 0
+ strh r0, [r1]
+ ldr r0, [r2]
+ ldr r2, _080C6680 @ =0x000018c6
+ adds r1, r2, 0
+ strh r1, [r0, 0x2]
+ ldr r2, _080C6684 @ =0x000077bd
+ adds r1, r2, 0
+ strh r1, [r0, 0x4]
+ ldr r2, _080C6688 @ =0x00002d6b
+ adds r1, r2, 0
+ strh r1, [r0, 0x6]
+ ldr r2, _080C668C @ =0x000018dd
+ adds r1, r2, 0
+ strh r1, [r0, 0x8]
+ ldr r2, _080C6690 @ =0x00001ba6
+ adds r1, r2, 0
+ strh r1, [r0, 0xA]
+ ldr r2, _080C6694 @ =0x000074c6
+ adds r1, r2, 0
+ strh r1, [r0, 0xC]
+ ldr r2, _080C6698 @ =0x00001bbd
+ adds r1, r2, 0
+ strh r1, [r0, 0xE]
+ ldr r2, _080C669C @ =0x000074dd
+ adds r1, r2, 0
+ strh r1, [r0, 0x10]
+ ldr r2, _080C66A0 @ =0x000077a6
+ adds r1, r2, 0
+ strh r1, [r0, 0x12]
+ ldr r2, _080C66A4 @ =0x0000197d
+ adds r1, r2, 0
+ strh r1, [r0, 0x14]
+ ldr r2, _080C66A8 @ =0x00001bab
+ adds r1, r2, 0
+ strh r1, [r0, 0x16]
+ ldr r2, _080C66AC @ =0x00007566
+ adds r1, r2, 0
+ strh r1, [r0, 0x18]
+ ldr r2, _080C66B0 @ =0x00002cdd
+ adds r1, r2, 0
+ strh r1, [r0, 0x1A]
+ ldr r2, _080C66B4 @ =0x00002fa6
+ adds r1, r2, 0
+ strh r1, [r0, 0x1C]
+ ldr r2, _080C66B8 @ =0x000074cb
+ adds r1, r2, 0
+ strh r1, [r0, 0x1E]
+ bx lr
+ .align 2, 0
+_080C667C: .4byte gUnknown_3005350
+_080C6680: .4byte 0x000018c6
+_080C6684: .4byte 0x000077bd
+_080C6688: .4byte 0x00002d6b
+_080C668C: .4byte 0x000018dd
+_080C6690: .4byte 0x00001ba6
+_080C6694: .4byte 0x000074c6
+_080C6698: .4byte 0x00001bbd
+_080C669C: .4byte 0x000074dd
+_080C66A0: .4byte 0x000077a6
+_080C66A4: .4byte 0x0000197d
+_080C66A8: .4byte 0x00001bab
+_080C66AC: .4byte 0x00007566
+_080C66B0: .4byte 0x00002cdd
+_080C66B4: .4byte 0x00002fa6
+_080C66B8: .4byte 0x000074cb
+ thumb_func_end sub_80C6614
+
+ thumb_func_start sub_80C66BC
+sub_80C66BC: @ 80C66BC
+ ldr r2, _080C66D0 @ =gUnknown_3005350
+ ldr r0, [r2]
+ movs r1, 0
+ strh r1, [r0]
+ ldr r2, [r2]
+ strh r1, [r2, 0x2]
+ ldr r1, _080C66D4 @ =0x00007fff
+ adds r0, r1, 0
+ strh r0, [r2, 0x4]
+ bx lr
+ .align 2, 0
+_080C66D0: .4byte gUnknown_3005350
+_080C66D4: .4byte 0x00007fff
+ thumb_func_end sub_80C66BC
+
+ thumb_func_start sub_80C66D8
+sub_80C66D8: @ 80C66D8
+ push {r4,r5,lr}
+ ldr r1, _080C6710 @ =gUnknown_3005350
+ ldr r0, [r1]
+ movs r2, 0
+ strh r2, [r0]
+ ldr r0, [r1]
+ strh r2, [r0, 0x2]
+ movs r4, 0
+ adds r5, r1, 0
+_080C66EA:
+ ldr r0, [r5]
+ lsls r2, r4, 1
+ adds r2, r0
+ adds r0, r4, 0x2
+ lsls r3, r0, 1
+ lsls r1, r0, 11
+ lsls r0, 6
+ orrs r1, r0
+ orrs r1, r3
+ strh r1, [r2, 0x4]
+ adds r0, r4, 0x1
+ lsls r0, 24
+ lsrs r4, r0, 24
+ cmp r4, 0xD
+ bls _080C66EA
+ pop {r4,r5}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C6710: .4byte gUnknown_3005350
+ thumb_func_end sub_80C66D8
+
+ thumb_func_start sub_80C6714
+sub_80C6714: @ 80C6714
+ push {r4,lr}
+ ldr r2, _080C6744 @ =gUnknown_3005350
+ ldr r1, [r2]
+ movs r0, 0
+ strh r0, [r1]
+ movs r3, 0
+ adds r4, r2, 0
+_080C6722:
+ ldr r0, [r4]
+ lsls r2, r3, 1
+ adds r2, r0
+ lsls r0, r3, 10
+ lsls r1, r3, 5
+ orrs r0, r1
+ orrs r0, r3
+ strh r0, [r2, 0x2]
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, 0x1F
+ bls _080C6722
+ pop {r4}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C6744: .4byte gUnknown_3005350
+ thumb_func_end sub_80C6714
+
+ thumb_func_start sub_80C6748
+sub_80C6748: @ 80C6748
+ push {r4-r7,lr}
+ mov r7, r10
+ mov r6, r9
+ mov r5, r8
+ push {r5-r7}
+ lsls r0, 24
+ movs r1, 0xDF
+ mov r9, r1
+ cmp r0, 0
+ bne _080C6760
+ movs r2, 0xFF
+ mov r9, r2
+_080C6760:
+ movs r6, 0
+ ldr r3, _080C67E4 @ =gUnknown_3005350
+ mov r12, r3
+ mov r0, r9
+ lsls r4, r0, 1
+ ldr r5, _080C67E8 @ =gUnknown_3005338
+ cmp r6, r9
+ bcs _080C6784
+ movs r2, 0
+_080C6772:
+ ldr r0, [r3]
+ lsls r1, r6, 1
+ adds r1, r0
+ strh r2, [r1]
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ cmp r6, r9
+ bcc _080C6772
+_080C6784:
+ mov r1, r12
+ ldr r0, [r1]
+ adds r0, r4, r0
+ ldr r2, _080C67EC @ =0x00003def
+ adds r1, r2, 0
+ strh r1, [r0]
+ movs r3, 0
+ ldrb r5, [r5]
+ cmp r3, r5
+ bcs _080C6888
+_080C6798:
+ ldr r2, _080C67F0 @ =gUnknown_3005334
+ ldr r0, _080C67F4 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r3
+ ldr r0, _080C67F8 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ ldr r1, [r2]
+ adds r1, r0
+ ldr r0, _080C67FC @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r6, 0
+ ldr r0, _080C6800 @ =gUnknown_3005340
+ adds r2, r0, 0
+ adds r3, 0x1
+ mov r10, r3
+ ldrb r3, [r2]
+ cmp r6, r3
+ bcs _080C687A
+ ldr r0, _080C6804 @ =gUnknown_3005354
+ mov r8, r0
+_080C67C8:
+ ldrh r0, [r4]
+ movs r3, 0x80
+ lsls r3, 8
+ adds r1, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6808
+ mov r1, r8
+ ldrh r0, [r1]
+ strh r0, [r4]
+ adds r6, 0x1
+ adds r7, r4, 0x2
+ b _080C686E
+ .align 2, 0
+_080C67E4: .4byte gUnknown_3005350
+_080C67E8: .4byte gUnknown_3005338
+_080C67EC: .4byte 0x00003def
+_080C67F0: .4byte gUnknown_3005334
+_080C67F4: .4byte gUnknown_3005344
+_080C67F8: .4byte gUnknown_300534C
+_080C67FC: .4byte gUnknown_3005330
+_080C6800: .4byte gUnknown_3005340
+_080C6804: .4byte gUnknown_3005354
+_080C6808:
+ adds r0, r4, 0
+ bl sub_80C6B68
+ lsls r0, 16
+ lsrs r5, r0, 16
+ movs r3, 0x1
+ adds r6, 0x1
+ adds r7, r4, 0x2
+ cmp r3, r9
+ bcs _080C6864
+ ldr r0, _080C6834 @ =gUnknown_3005350
+ ldr r2, [r0]
+ ldrh r1, [r2, 0x2]
+ mov r12, r0
+ cmp r1, 0
+ bne _080C6838
+ strh r5, [r2, 0x2]
+ mov r2, r8
+ ldrh r0, [r2]
+ adds r0, 0x1
+ b _080C6862
+ .align 2, 0
+_080C6834: .4byte gUnknown_3005350
+_080C6838:
+ mov r2, r12
+ ldr r1, [r2]
+ lsls r0, r3, 1
+ adds r0, r1
+ ldrh r0, [r0]
+ cmp r0, r5
+ beq _080C685C
+ adds r0, r3, 0x1
+ lsls r0, 24
+ lsrs r3, r0, 24
+ cmp r3, r9
+ bcs _080C6864
+ lsls r0, r3, 1
+ adds r1, r0, r1
+ ldrh r0, [r1]
+ cmp r0, 0
+ bne _080C6838
+ strh r5, [r1]
+_080C685C:
+ mov r1, r8
+ ldrh r0, [r1]
+ adds r0, r3
+_080C6862:
+ strh r0, [r4]
+_080C6864:
+ ldr r2, _080C6898 @ =gUnknown_3005340
+ cmp r3, r9
+ bne _080C686E
+ mov r3, r9
+ strh r3, [r4]
+_080C686E:
+ lsls r0, r6, 24
+ lsrs r6, r0, 24
+ adds r4, r7, 0
+ ldrb r0, [r2]
+ cmp r6, r0
+ bcc _080C67C8
+_080C687A:
+ mov r1, r10
+ lsls r0, r1, 24
+ lsrs r3, r0, 24
+ ldr r0, _080C689C @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r3, r0
+ bcc _080C6798
+_080C6888:
+ pop {r3-r5}
+ mov r8, r3
+ mov r9, r4
+ mov r10, r5
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C6898: .4byte gUnknown_3005340
+_080C689C: .4byte gUnknown_3005338
+ thumb_func_end sub_80C6748
+
+ thumb_func_start sub_80C68A0
+sub_80C68A0: @ 80C68A0
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ movs r2, 0
+ ldr r0, _080C68F4 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C6944
+ ldr r0, _080C68F8 @ =gUnknown_3005334
+ mov r8, r0
+_080C68B4:
+ ldr r0, _080C68FC @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C6900 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r3, r8
+ ldr r1, [r3]
+ adds r1, r0
+ ldr r0, _080C6904 @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r6, 0
+ ldr r0, _080C6908 @ =gUnknown_3005340
+ adds r3, r0, 0
+ adds r7, r2, 0x1
+ ldrb r0, [r3]
+ cmp r6, r0
+ bcs _080C6938
+ ldr r5, _080C690C @ =gUnknown_3005354
+_080C68E0:
+ ldrh r0, [r4]
+ movs r2, 0x80
+ lsls r2, 8
+ adds r1, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6910
+ ldrh r0, [r5]
+ strh r0, [r4]
+ b _080C692A
+ .align 2, 0
+_080C68F4: .4byte gUnknown_3005338
+_080C68F8: .4byte gUnknown_3005334
+_080C68FC: .4byte gUnknown_3005344
+_080C6900: .4byte gUnknown_300534C
+_080C6904: .4byte gUnknown_3005330
+_080C6908: .4byte gUnknown_3005340
+_080C690C: .4byte gUnknown_3005354
+_080C6910:
+ adds r0, r4, 0
+ bl sub_80C600C
+ lsls r0, 16
+ cmp r0, 0
+ bne _080C6922
+ ldrh r0, [r5]
+ adds r0, 0x1
+ b _080C6926
+_080C6922:
+ ldrh r0, [r5]
+ adds r0, 0x2
+_080C6926:
+ strh r0, [r4]
+ ldr r3, _080C6950 @ =gUnknown_3005340
+_080C692A:
+ adds r0, r6, 0x1
+ lsls r0, 24
+ lsrs r6, r0, 24
+ adds r4, 0x2
+ ldrb r0, [r3]
+ cmp r6, r0
+ bcc _080C68E0
+_080C6938:
+ lsls r0, r7, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C6954 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C68B4
+_080C6944:
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C6950: .4byte gUnknown_3005340
+_080C6954: .4byte gUnknown_3005338
+ thumb_func_end sub_80C68A0
+
+ thumb_func_start sub_80C6958
+sub_80C6958: @ 80C6958
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r2, 0
+ ldr r0, _080C69AC @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C69F4
+ ldr r0, _080C69B0 @ =gUnknown_3005334
+ mov r8, r0
+_080C696E:
+ ldr r0, _080C69B4 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C69B8 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r3, r8
+ ldr r1, [r3]
+ adds r1, r0
+ ldr r0, _080C69BC @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r5, 0
+ ldr r0, _080C69C0 @ =gUnknown_3005340
+ adds r7, r2, 0x1
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcs _080C69E8
+ ldr r6, _080C69C4 @ =gUnknown_3005354
+ movs r0, 0x80
+ lsls r0, 8
+ adds r2, r0, 0
+_080C699E:
+ ldrh r0, [r4]
+ ands r0, r2
+ cmp r0, 0
+ beq _080C69C8
+ ldrh r0, [r6]
+ strh r0, [r4]
+ b _080C69D8
+ .align 2, 0
+_080C69AC: .4byte gUnknown_3005338
+_080C69B0: .4byte gUnknown_3005334
+_080C69B4: .4byte gUnknown_3005344
+_080C69B8: .4byte gUnknown_300534C
+_080C69BC: .4byte gUnknown_3005330
+_080C69C0: .4byte gUnknown_3005340
+_080C69C4: .4byte gUnknown_3005354
+_080C69C8:
+ adds r0, r4, 0
+ str r2, [sp]
+ bl sub_80C6CAC
+ ldrh r1, [r6]
+ adds r0, r1
+ strh r0, [r4]
+ ldr r2, [sp]
+_080C69D8:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldr r0, _080C6A00 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcc _080C699E
+_080C69E8:
+ lsls r0, r7, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C6A04 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C696E
+_080C69F4:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C6A00: .4byte gUnknown_3005340
+_080C6A04: .4byte gUnknown_3005338
+ thumb_func_end sub_80C6958
+
+ thumb_func_start sub_80C6A08
+sub_80C6A08: @ 80C6A08
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r2, 0
+ ldr r0, _080C6A5C @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C6AA4
+ ldr r0, _080C6A60 @ =gUnknown_3005334
+ mov r8, r0
+_080C6A1E:
+ ldr r0, _080C6A64 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C6A68 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r3, r8
+ ldr r1, [r3]
+ adds r1, r0
+ ldr r0, _080C6A6C @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r5, 0
+ ldr r0, _080C6A70 @ =gUnknown_3005340
+ adds r7, r2, 0x1
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcs _080C6A98
+ ldr r6, _080C6A74 @ =gUnknown_3005354
+ movs r0, 0x80
+ lsls r0, 8
+ adds r2, r0, 0
+_080C6A4E:
+ ldrh r0, [r4]
+ ands r0, r2
+ cmp r0, 0
+ beq _080C6A78
+ ldrh r0, [r6]
+ strh r0, [r4]
+ b _080C6A88
+ .align 2, 0
+_080C6A5C: .4byte gUnknown_3005338
+_080C6A60: .4byte gUnknown_3005334
+_080C6A64: .4byte gUnknown_3005344
+_080C6A68: .4byte gUnknown_300534C
+_080C6A6C: .4byte gUnknown_3005330
+_080C6A70: .4byte gUnknown_3005340
+_080C6A74: .4byte gUnknown_3005354
+_080C6A78:
+ adds r0, r4, 0
+ str r2, [sp]
+ bl sub_80C6CE0
+ ldrh r1, [r6]
+ adds r0, r1
+ strh r0, [r4]
+ ldr r2, [sp]
+_080C6A88:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldr r0, _080C6AB0 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcc _080C6A4E
+_080C6A98:
+ lsls r0, r7, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C6AB4 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C6A1E
+_080C6AA4:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C6AB0: .4byte gUnknown_3005340
+_080C6AB4: .4byte gUnknown_3005338
+ thumb_func_end sub_80C6A08
+
+ thumb_func_start sub_80C6AB8
+sub_80C6AB8: @ 80C6AB8
+ push {r4-r7,lr}
+ mov r7, r8
+ push {r7}
+ sub sp, 0x4
+ movs r2, 0
+ ldr r0, _080C6B0C @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcs _080C6B54
+ ldr r0, _080C6B10 @ =gUnknown_3005334
+ mov r8, r0
+_080C6ACE:
+ ldr r0, _080C6B14 @ =gUnknown_3005344
+ ldrb r1, [r0]
+ adds r1, r2
+ ldr r0, _080C6B18 @ =gUnknown_300534C
+ ldrb r0, [r0]
+ muls r0, r1
+ lsls r0, 1
+ mov r3, r8
+ ldr r1, [r3]
+ adds r1, r0
+ ldr r0, _080C6B1C @ =gUnknown_3005330
+ ldrb r0, [r0]
+ lsls r0, 1
+ adds r4, r1, r0
+ movs r5, 0
+ ldr r0, _080C6B20 @ =gUnknown_3005340
+ adds r7, r2, 0x1
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcs _080C6B48
+ ldr r6, _080C6B24 @ =gUnknown_3005354
+ movs r0, 0x80
+ lsls r0, 8
+ adds r2, r0, 0
+_080C6AFE:
+ ldrh r0, [r4]
+ ands r0, r2
+ cmp r0, 0
+ beq _080C6B28
+ ldrh r0, [r6]
+ strh r0, [r4]
+ b _080C6B38
+ .align 2, 0
+_080C6B0C: .4byte gUnknown_3005338
+_080C6B10: .4byte gUnknown_3005334
+_080C6B14: .4byte gUnknown_3005344
+_080C6B18: .4byte gUnknown_300534C
+_080C6B1C: .4byte gUnknown_3005330
+_080C6B20: .4byte gUnknown_3005340
+_080C6B24: .4byte gUnknown_3005354
+_080C6B28:
+ adds r0, r4, 0
+ str r2, [sp]
+ bl sub_80C6BDC
+ ldrh r1, [r6]
+ adds r0, r1
+ strh r0, [r4]
+ ldr r2, [sp]
+_080C6B38:
+ adds r0, r5, 0x1
+ lsls r0, 24
+ lsrs r5, r0, 24
+ adds r4, 0x2
+ ldr r0, _080C6B60 @ =gUnknown_3005340
+ ldrb r0, [r0]
+ cmp r5, r0
+ bcc _080C6AFE
+_080C6B48:
+ lsls r0, r7, 24
+ lsrs r2, r0, 24
+ ldr r0, _080C6B64 @ =gUnknown_3005338
+ ldrb r0, [r0]
+ cmp r2, r0
+ bcc _080C6ACE
+_080C6B54:
+ add sp, 0x4
+ pop {r3}
+ mov r8, r3
+ pop {r4-r7}
+ pop {r0}
+ bx r0
+ .align 2, 0
+_080C6B60: .4byte gUnknown_3005340
+_080C6B64: .4byte gUnknown_3005338
+ thumb_func_end sub_80C6AB8
+
+ thumb_func_start sub_80C6B68
+sub_80C6B68: @ 80C6B68
+ push {r4,lr}
+ ldrh r0, [r0]
+ movs r1, 0x1F
+ movs r4, 0x1F
+ ands r4, r0
+ lsls r0, 16
+ lsrs r3, r0, 21
+ ands r3, r1
+ lsrs r2, r0, 26
+ ands r2, r1
+ movs r1, 0x3
+ adds r0, r4, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6B8C
+ movs r0, 0x1C
+ ands r0, r4
+ adds r4, r0, 0x4
+_080C6B8C:
+ adds r0, r3, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6B9A
+ movs r0, 0x1C
+ ands r0, r3
+ adds r3, r0, 0x4
+_080C6B9A:
+ adds r0, r2, 0
+ ands r0, r1
+ cmp r0, 0
+ beq _080C6BA8
+ movs r0, 0x1C
+ ands r0, r2
+ adds r2, r0, 0x4
+_080C6BA8:
+ cmp r4, 0x5
+ bhi _080C6BAE
+ movs r4, 0x6
+_080C6BAE:
+ cmp r4, 0x1E
+ bls _080C6BB4
+ movs r4, 0x1E
+_080C6BB4:
+ cmp r3, 0x5
+ bhi _080C6BBA
+ movs r3, 0x6
+_080C6BBA:
+ cmp r3, 0x1E
+ bls _080C6BC0
+ movs r3, 0x1E
+_080C6BC0:
+ cmp r2, 0x5
+ bhi _080C6BC6
+ movs r2, 0x6
+_080C6BC6:
+ cmp r2, 0x1E
+ bls _080C6BCC
+ movs r2, 0x1E
+_080C6BCC:
+ lsls r0, r2, 10
+ lsls r1, r3, 5
+ orrs r0, r1
+ orrs r4, r0
+ adds r0, r4, 0
+ pop {r4}
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C6B68
+
+ thumb_func_start sub_80C6BDC
+sub_80C6BDC: @ 80C6BDC
+ push {lr}
+ ldrh r0, [r0]
+ movs r1, 0x1F
+ movs r3, 0x1F
+ ands r3, r0
+ lsls r0, 16
+ lsrs r2, r0, 21
+ ands r2, r1
+ lsrs r0, 26
+ ands r0, r1
+ cmp r3, 0xB
+ bhi _080C6C00
+ cmp r2, 0xA
+ bhi _080C6C00
+ cmp r0, 0xA
+ bhi _080C6C00
+ movs r0, 0x1
+ b _080C6CA6
+_080C6C00:
+ cmp r3, 0x13
+ bls _080C6C24
+ cmp r2, 0x13
+ bls _080C6C0C
+ cmp r0, 0x13
+ bhi _080C6C30
+_080C6C0C:
+ cmp r3, 0x13
+ bls _080C6C24
+ cmp r2, 0x13
+ bls _080C6C1A
+ cmp r0, 0xE
+ bhi _080C6C30
+ b _080C6C68
+_080C6C1A:
+ cmp r0, 0x13
+ bls _080C6C24
+ cmp r2, 0xE
+ bhi _080C6C30
+ b _080C6C44
+_080C6C24:
+ cmp r2, 0x13
+ bls _080C6C34
+ cmp r0, 0x13
+ bls _080C6C34
+ cmp r3, 0xE
+ bls _080C6C8C
+_080C6C30:
+ movs r0, 0x2
+ b _080C6CA6
+_080C6C34:
+ cmp r3, 0x13
+ bls _080C6C58
+ cmp r2, 0xB
+ bls _080C6C4C
+ cmp r0, 0xB
+ bls _080C6C48
+ cmp r2, r0
+ bcs _080C6C68
+_080C6C44:
+ movs r0, 0x8
+ b _080C6CA6
+_080C6C48:
+ movs r0, 0xA
+ b _080C6CA6
+_080C6C4C:
+ cmp r0, 0xB
+ bls _080C6C54
+ movs r0, 0xD
+ b _080C6CA6
+_080C6C54:
+ movs r0, 0x4
+ b _080C6CA6
+_080C6C58:
+ cmp r2, 0x13
+ bls _080C6C7C
+ cmp r3, 0xB
+ bls _080C6C70
+ cmp r0, 0xB
+ bls _080C6C6C
+ cmp r3, r0
+ bcc _080C6C8C
+_080C6C68:
+ movs r0, 0x7
+ b _080C6CA6
+_080C6C6C:
+ movs r0, 0xB
+ b _080C6CA6
+_080C6C70:
+ cmp r0, 0xB
+ bls _080C6C78
+ movs r0, 0xE
+ b _080C6CA6
+_080C6C78:
+ movs r0, 0x5
+ b _080C6CA6
+_080C6C7C:
+ cmp r0, 0x13
+ bls _080C6CA4
+ cmp r3, 0xB
+ bls _080C6C90
+ cmp r2, 0xB
+ bls _080C6C98
+ cmp r3, r2
+ bcs _080C6C44
+_080C6C8C:
+ movs r0, 0x9
+ b _080C6CA6
+_080C6C90:
+ cmp r2, 0xB
+ bls _080C6C98
+ movs r0, 0xC
+ b _080C6CA6
+_080C6C98:
+ cmp r0, 0xB
+ bls _080C6CA0
+ movs r0, 0xF
+ b _080C6CA6
+_080C6CA0:
+ movs r0, 0x6
+ b _080C6CA6
+_080C6CA4:
+ movs r0, 0x3
+_080C6CA6:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C6BDC
+
+ thumb_func_start sub_80C6CAC
+sub_80C6CAC: @ 80C6CAC
+ push {lr}
+ ldrh r1, [r0]
+ movs r3, 0x1F
+ movs r0, 0x1F
+ ands r0, r1
+ lsls r1, 16
+ lsrs r2, r1, 21
+ ands r2, r3
+ lsrs r1, 26
+ ands r1, r3
+ adds r0, r2
+ adds r0, r1
+ movs r1, 0x3
+ bl __divsi3
+ movs r1, 0x1E
+ ands r0, r1
+ lsls r0, 16
+ cmp r0, 0
+ beq _080C6CD8
+ lsrs r0, 17
+ b _080C6CDA
+_080C6CD8:
+ movs r0, 0x1
+_080C6CDA:
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C6CAC
+
+ thumb_func_start sub_80C6CE0
+sub_80C6CE0: @ 80C6CE0
+ push {lr}
+ ldrh r1, [r0]
+ movs r3, 0x1F
+ movs r0, 0x1F
+ ands r0, r1
+ lsls r1, 16
+ lsrs r2, r1, 21
+ ands r2, r3
+ lsrs r1, 26
+ ands r1, r3
+ adds r0, r2
+ adds r0, r1
+ movs r1, 0x3
+ bl __divsi3
+ lsls r0, 16
+ movs r1, 0x80
+ lsls r1, 9
+ adds r0, r1
+ lsrs r0, 16
+ pop {r1}
+ bx r1
+ thumb_func_end sub_80C6CE0
+
+ .align 2, 0 @ Don't pad with nop.