pokefirered/asm/image_processing_effects.s
2020-01-07 16:47:50 -05:00

3487 lines
56 KiB
ArmAsm

.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.