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