diff --git a/asm/GetProgressFlag.s b/asm/GetProgressFlag.s new file mode 100644 index 00000000..3c0e62e6 --- /dev/null +++ b/asm/GetProgressFlag.s @@ -0,0 +1,11 @@ + .include "asm/macros.inc" + .text + .syntax unified + + thumb_func_start GetProgressFlag +GetProgressFlag: @ 0x0807CC30 + push {lr} + adds r1, r0, #0 + movs r0, #0 + bl GetProgressFlagWithOffset + pop {pc} \ No newline at end of file diff --git a/asm/InitializeLink.s b/asm/InitializeLink.s new file mode 100644 index 00000000..c86d7656 --- /dev/null +++ b/asm/InitializeLink.s @@ -0,0 +1,174 @@ + .include "asm/macros.inc" + .text + .syntax unified + + thumb_func_start InitializeLink +InitializeLink: @ 0x080524A8 + push {r4, r5, r6, lr} + bl sub_080784C8 + ldr r0, _08052510 @ =gUnk_03000B80 + movs r1, #0x70 + bl sub_0801D630 + ldr r6, _08052514 @ =gUnk_03003F80 + adds r0, r6, #0 + movs r1, #0xb0 + bl sub_0801D630 + movs r0, #1 + rsbs r0, r0, #0 + adds r1, r6, #0 + adds r1, #0x40 + movs r2, #0x40 + bl sub_0801D610 + ldr r4, _08052518 @ =gLinkEntity + adds r0, r4, #0 + movs r1, #0x88 + bl sub_0801D630 + ldr r0, _0805251C @ =gUnk_03000BF0 + str r4, [r0, #0x30] + ldr r1, _08052520 @ =gUnk_080FCAC8 + ldr r5, _08052524 @ =gUnk_030010A0 + ldrb r0, [r5, #0xf] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r6, #0xc] + movs r0, #0x14 + bl GetProgressFlag + cmp r0, #0 + bne _080524FA + ldr r0, [r6, #0x30] + movs r1, #8 + orrs r0, r1 + str r0, [r6, #0x30] +_080524FA: + ldrb r0, [r5, #0xf] + subs r0, #2 + adds r2, r5, #0 + cmp r0, #0xa + bhi _080525C2 + lsls r0, r0, #2 + ldr r1, _08052528 @ =_0805252C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08052510: .4byte gUnk_03000B80 +_08052514: .4byte gUnk_03003F80 +_08052518: .4byte gLinkEntity +_0805251C: .4byte gUnk_03000BF0 +_08052520: .4byte gUnk_080FCAC8 +_08052524: .4byte gUnk_030010A0 +_08052528: .4byte _0805252C +_0805252C: @ jump table + .4byte _08052558 @ case 0 + .4byte _08052576 @ case 1 + .4byte _08052564 @ case 2 + .4byte _080525C2 @ case 3 + .4byte _08052558 @ case 4 + .4byte _08052584 @ case 5 + .4byte _08052584 @ case 6 + .4byte _080525C2 @ case 7 + .4byte _080525A0 @ case 8 + .4byte _080525AC @ case 9 + .4byte _080525B8 @ case 10 +_08052558: + ldr r0, _08052560 @ =0x0000FF40 + strh r0, [r4, #0x36] + b _080525C0 + .align 2, 0 +_08052560: .4byte 0x0000FF40 +_08052564: + ldr r0, _0805257C @ =gUnk_03003F80 + adds r0, #0x38 + movs r1, #0x10 + strb r1, [r0] + ldr r1, _08052580 @ =gUnk_030010A0 + ldrb r0, [r1, #0xe] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + adds r2, r1, #0 +_08052576: + movs r0, #0xe0 + strh r0, [r4, #0x24] + b _080525C2 + .align 2, 0 +_0805257C: .4byte gUnk_03003F80 +_08052580: .4byte gUnk_030010A0 +_08052584: + ldr r1, _08052598 @ =gUnk_03003F80 + adds r2, r1, #0 + adds r2, #0x38 + movs r0, #1 + strb r0, [r2] + ldr r2, _0805259C @ =gUnk_030010A0 + ldrb r0, [r2, #0xf] + adds r1, #0x39 + strb r0, [r1] + b _080525C2 + .align 2, 0 +_08052598: .4byte gUnk_03003F80 +_0805259C: .4byte gUnk_030010A0 +_080525A0: + ldr r0, _080525A8 @ =gUnk_03003F80 + adds r0, #0x38 + movs r1, #1 + b _080525BE + .align 2, 0 +_080525A8: .4byte gUnk_03003F80 +_080525AC: + ldr r0, _080525B4 @ =gUnk_03003F80 + adds r0, #0x38 + movs r1, #3 + b _080525BE + .align 2, 0 +_080525B4: .4byte gUnk_03003F80 +_080525B8: + ldr r0, _08052614 @ =gUnk_03003F80 + adds r0, #0x38 + movs r1, #4 +_080525BE: + strb r1, [r0] +_080525C0: + ldr r2, _08052618 @ =gUnk_030010A0 +_080525C2: + movs r0, #1 + strb r0, [r4, #8] + ldrb r1, [r4, #0x10] + movs r0, #0xa0 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldr r0, _0805261C @ =gUnk_02002A40 + adds r0, #0xaa + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] + ldrh r0, [r2, #0x10] + strh r0, [r4, #0x2e] + ldrh r0, [r2, #0x12] + strh r0, [r4, #0x32] + ldrb r0, [r2, #0xe] + strb r0, [r4, #0x14] + ldrb r1, [r2, #0x14] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #1 + bl sub_0805EA2C + bl sub_08017640 + pop {r4, r5, r6, pc} + .align 2, 0 +_08052614: .4byte gUnk_03003F80 +_08052618: .4byte gUnk_030010A0 +_0805261C: .4byte gUnk_02002A40 diff --git a/asm/code_0801D6E0.s b/asm/code_0801D6E0.s new file mode 100644 index 00000000..0b86aff4 --- /dev/null +++ b/asm/code_0801D6E0.s @@ -0,0 +1,97263 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_0801D6E0 +sub_0801D6E0: @ 0x0801D6E0 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2] + adds r3, r1, #0 + bics r3, r0 + strh r3, [r2, #2] + cmp r1, r0 + bne _0801D70A + ldrb r0, [r2, #7] + subs r0, #1 + strb r0, [r2, #7] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801D704 + movs r0, #4 + strb r0, [r2, #7] + strh r1, [r2, #4] + b _0801D710 +_0801D704: + movs r0, #0 + strh r0, [r2, #4] + b _0801D710 +_0801D70A: + movs r0, #0x14 + strb r0, [r2, #7] + strh r3, [r2, #4] +_0801D710: + strh r1, [r2] + pop {pc} + + thumb_func_start sub_0801D714 +sub_0801D714: @ 0x0801D714 + push {r4, lr} + ldr r1, _0801D748 @ =gUnk_080FF850 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] +_0801D71E: + ldrb r3, [r4, #2] + ldrb r0, [r4, #3] + movs r2, #0xf + ands r2, r0 + cmp r2, #0 + bne _0801D72C + movs r2, #0x10 +_0801D72C: + ldrh r0, [r4] + lsls r0, r0, #5 + ldr r1, _0801D74C @ =gUnk_085A2E80 + adds r0, r0, r1 + adds r1, r3, #0 + bl sub_0801D754 + ldrb r1, [r4, #3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801D750 + adds r4, #4 + b _0801D71E + .align 2, 0 +_0801D748: .4byte gUnk_080FF850 +_0801D74C: .4byte gUnk_085A2E80 +_0801D750: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801D754 +sub_0801D754: @ 0x0801D754 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + lsls r5, r2, #5 + movs r3, #1 + lsls r3, r1 + subs r2, #1 + ldr r4, _0801D790 @ =gUnk_0200B644 + ldr r7, _0801D794 @ =gUnk_020176A0 + cmp r2, #0 + ble _0801D772 +_0801D768: + lsls r0, r3, #1 + orrs r3, r0 + subs r2, #1 + cmp r2, #0 + bgt _0801D768 +_0801D772: + ldr r0, [r4] + orrs r0, r3 + str r0, [r4] + lsls r0, r1, #5 + adds r0, r0, r7 + ldr r2, _0801D798 @ =0x040000D4 + str r6, [r2] + str r0, [r2, #4] + lsrs r0, r5, #2 + movs r1, #0x84 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801D790: .4byte gUnk_0200B644 +_0801D794: .4byte gUnk_020176A0 +_0801D798: .4byte 0x040000D4 + + thumb_func_start sub_0801D79C +sub_0801D79C: @ 0x0801D79C + ldr r3, _0801D7B4 @ =gUnk_020176A0 + lsls r2, r0, #1 + adds r2, r2, r3 + strh r1, [r2] + ldr r2, _0801D7B8 @ =gUnk_0200B644 + lsrs r0, r0, #4 + movs r1, #1 + lsls r1, r0 + ldr r0, [r2] + orrs r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_0801D7B4: .4byte gUnk_020176A0 +_0801D7B8: .4byte gUnk_0200B644 + + thumb_func_start sub_0801D7BC +sub_0801D7BC: @ 0x0801D7BC + push {lr} + adds r2, r0, #0 + cmp r1, #0 + beq _0801D7D4 + ldr r1, _0801D7CC @ =gUnk_03000F50 + ldr r0, _0801D7D0 @ =0x0000E0FF + b _0801D7D8 + .align 2, 0 +_0801D7CC: .4byte gUnk_03000F50 +_0801D7D0: .4byte 0x0000E0FF +_0801D7D4: + ldr r1, _0801D7E4 @ =gUnk_03000F50 + ldr r0, _0801D7E8 @ =0x0000FFFF +_0801D7D8: + strh r0, [r1, #6] + movs r0, #0 + adds r1, r2, #0 + bl sub_0801D79C + pop {pc} + .align 2, 0 +_0801D7E4: .4byte gUnk_03000F50 +_0801D7E8: .4byte 0x0000FFFF + + thumb_func_start sub_0801D7EC +sub_0801D7EC: @ 0x0801D7EC + push {r4, r5, r6, lr} + ldr r1, _0801D814 @ =gUnk_08100AA8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r6, #0x80 + lsls r6, r6, #0x12 + ldr r5, _0801D818 @ =0x040000D4 +_0801D7FC: + movs r2, #0 + ldrb r1, [r4, #3] + movs r0, #0xf + ands r1, r0 + cmp r1, #0xd + beq _0801D894 + cmp r1, #0xd + bhi _0801D81C + cmp r1, #7 + beq _0801D842 + b _0801D836 + .align 2, 0 +_0801D814: .4byte gUnk_08100AA8 +_0801D818: .4byte 0x040000D4 +_0801D81C: + cmp r1, #0xe + beq _0801D826 + cmp r1, #0xf + beq _0801D82E + b _0801D836 +_0801D826: + ldrb r0, [r6, #7] + cmp r0, #1 + bls _0801D83E + b _0801D842 +_0801D82E: + ldrb r0, [r6, #7] + cmp r0, #0 + beq _0801D83E + b _0801D842 +_0801D836: + ldrb r0, [r6, #7] + cmp r1, r0 + bne _0801D83E + movs r2, #1 +_0801D83E: + cmp r2, #0 + beq _0801D888 +_0801D842: + ldr r0, [r4] + ldr r1, _0801D868 @ =0x00FFFFFF + ands r0, r1 + ldr r1, _0801D86C @ =gUnk_085A2E80 + adds r2, r0, r1 + ldr r1, [r4, #4] + ldr r0, [r4, #8] + movs r3, #0x80 + lsls r3, r3, #0x18 + cmp r0, #0 + bge _0801D87C + ldr r0, _0801D870 @ =0x05FFFFFF + cmp r1, r0 + bls _0801D874 + adds r0, r2, #0 + bl LZ77UnCompVram + b _0801D888 + .align 2, 0 +_0801D868: .4byte 0x00FFFFFF +_0801D86C: .4byte gUnk_085A2E80 +_0801D870: .4byte 0x05FFFFFF +_0801D874: + adds r0, r2, #0 + bl LZ77UnCompWram + b _0801D888 +_0801D87C: + str r2, [r5] + str r1, [r5, #4] + lsrs r0, r0, #1 + orrs r0, r3 + str r0, [r5, #8] + ldr r0, [r5, #8] +_0801D888: + ldrb r1, [r4, #3] + movs r0, #0x80 + ands r1, r0 + adds r4, #0xc + cmp r1, #0 + bne _0801D7FC +_0801D894: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0801D898 +sub_0801D898: @ 0x0801D898 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r3 + movs r1, #0x20 + mov ip, r1 + cmp r0, #0 + beq _0801D8B2 + movs r0, #0x40 + mov ip, r0 +_0801D8B2: + ldr r0, _0801D8D8 @ =0x00007FFF + ands r3, r0 + ldr r1, _0801D8DC @ =0x040000D4 + movs r2, #0x80 + lsls r2, r2, #0x18 + orrs r2, r6 + lsls r7, r6, #1 + mov r0, ip + lsls r6, r0, #1 +_0801D8C4: + str r4, [r1] + str r5, [r1, #4] + str r2, [r1, #8] + ldr r0, [r1, #8] + adds r4, r4, r7 + adds r5, r5, r6 + subs r3, #1 + cmp r3, #0 + bne _0801D8C4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801D8D8: .4byte 0x00007FFF +_0801D8DC: .4byte 0x040000D4 + + thumb_func_start sub_0801D8E0 +sub_0801D8E0: @ 0x0801D8E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov ip, r0 + movs r0, #3 + add ip, r0 + subs r0, #7 + mov r1, ip + ands r1, r0 + mov ip, r1 + ldr r6, _0801D90C @ =gUnk_02035540 + mov sb, r6 + ldrh r7, [r6] + movs r5, #1 + movs r3, #0x80 + lsls r3, r3, #5 + add r3, sb + subs r4, r3, r1 + movs r2, #0 + b _0801D926 + .align 2, 0 +_0801D90C: .4byte gUnk_02035540 +_0801D910: + cmp r1, r4 + bhi _0801D918 + cmp r3, r0 + bls _0801D952 +_0801D918: + cmp r4, r1 + bhi _0801D920 + cmp r0, r3 + bls _0801D952 +_0801D920: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_0801D926: + cmp r2, r7 + bhs _0801D94A + lsls r0, r2, #2 + add r0, sb + ldrh r1, [r0, #2] + ldr r6, _0801D95C @ =gUnk_02035540 + adds r1, r1, r6 + ldrh r0, [r0, #4] + adds r0, r0, r6 + cmp r1, r4 + bhi _0801D940 + cmp r4, r0 + bls _0801D952 +_0801D940: + cmp r1, r3 + bhi _0801D910 + cmp r3, r0 + bhi _0801D910 + movs r5, #0 +_0801D94A: + lsls r0, r7, #2 + mov sl, r0 + cmp r5, #0 + bne _0801D9D8 +_0801D952: + movs r1, #0 + mov r8, r1 + lsls r6, r7, #2 + mov sl, r6 + b _0801D970 + .align 2, 0 +_0801D95C: .4byte gUnk_02035540 +_0801D960: + movs r5, #0 +_0801D962: + mov r0, r8 + adds r0, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r0 + cmp r8, r7 + bhs _0801D9D4 +_0801D970: + mov r1, r8 + lsls r0, r1, #2 + add r0, sb + ldrh r0, [r0, #2] + ldr r6, _0801D994 @ =gUnk_02035540 + adds r3, r0, r6 + mov r0, ip + subs r4, r3, r0 + movs r5, #0 + mov r0, sl + adds r0, #2 + add r0, sb + adds r0, #4 + cmp r4, r0 + blo _0801D962 + movs r5, #1 + movs r2, #0 + b _0801D9AE + .align 2, 0 +_0801D994: .4byte gUnk_02035540 +_0801D998: + cmp r1, r4 + bhi _0801D9A0 + cmp r3, r0 + bls _0801D960 +_0801D9A0: + cmp r4, r1 + bhi _0801D9A8 + cmp r0, r3 + bls _0801D960 +_0801D9A8: + adds r0, r2, #1 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 +_0801D9AE: + cmp r2, r7 + bhs _0801D9D0 + lsls r0, r2, #2 + add r0, sb + ldrh r1, [r0, #2] + adds r1, r1, r6 + ldrh r0, [r0, #4] + adds r0, r0, r6 + cmp r1, r4 + bhi _0801D9C6 + cmp r4, r0 + blo _0801D960 +_0801D9C6: + cmp r1, r3 + bhs _0801D998 + cmp r3, r0 + bhi _0801D998 + movs r5, #0 +_0801D9D0: + cmp r5, #0 + beq _0801D962 +_0801D9D4: + cmp r5, #0 + beq _0801DA00 +_0801D9D8: + ldr r0, _0801D9FC @ =gUnk_02035542 + mov r1, sl + adds r2, r1, r0 + subs r3, r0, #2 + subs r1, r4, r3 + strh r1, [r2] + adds r0, #2 + add r0, sl + add r1, ip + strh r1, [r0] + adds r0, r7, #1 + strh r0, [r3] + adds r0, r4, #0 + mov r1, ip + bl sub_0801D630 + adds r0, r4, #0 + b _0801DA02 + .align 2, 0 +_0801D9FC: .4byte gUnk_02035542 +_0801DA00: + movs r0, #0 +_0801DA02: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0801DA0C +sub_0801DA0C: @ 0x0801DA0C + push {r4, r5, lr} + ldr r3, _0801DA44 @ =gUnk_02035540 + subs r1, r0, r3 + ldr r0, _0801DA48 @ =0x00000FFF + cmp r1, r0 + bhi _0801DA74 + adds r4, r3, #0 + ldrh r5, [r4] + adds r4, #2 + movs r2, #0 + cmp r2, r5 + bhs _0801DA74 + ldrh r0, [r4] + cmp r0, r1 + bne _0801DA4C + lsls r0, r5, #2 + subs r1, r3, #2 + adds r0, r0, r1 + ldrh r1, [r0] + strh r1, [r4] + strh r2, [r0] + adds r0, #2 + ldrh r1, [r0] + strh r1, [r4, #2] + strh r2, [r0] + subs r0, r5, #1 + strh r0, [r3] + b _0801DA74 + .align 2, 0 +_0801DA44: .4byte gUnk_02035540 +_0801DA48: .4byte 0x00000FFF +_0801DA4C: + adds r4, #4 + adds r2, #1 + cmp r2, r5 + bhs _0801DA74 + ldrh r0, [r4] + cmp r0, r1 + bne _0801DA4C + lsls r1, r5, #2 + ldr r3, _0801DA78 @ =gUnk_0203553E + adds r1, r1, r3 + ldrh r0, [r1] + strh r0, [r4] + movs r2, #0 + strh r2, [r1] + adds r1, #2 + ldrh r0, [r1] + strh r0, [r4, #2] + strh r2, [r1] + subs r0, r5, #1 + strh r0, [r3, #2] +_0801DA74: + pop {r4, r5, pc} + .align 2, 0 +_0801DA78: .4byte gUnk_0203553E + + thumb_func_start sub_0801DA7C +sub_0801DA7C: @ 0x0801DA7C + push {lr} + ldr r0, _0801DA8C @ =gUnk_02035540 + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_0801DA8C: .4byte gUnk_02035540 + + thumb_func_start sub_0801DA90 +sub_0801DA90: @ 0x0801DA90 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0801DAEC @ =gUnk_03001000 + ldrb r0, [r1] + movs r3, #0 + movs r0, #1 + strb r0, [r1] + ldr r0, _0801DAF0 @ =gUnk_03003DE0 + strb r3, [r0] + ldr r0, _0801DAF4 @ =gUnk_03000FD0 + strb r3, [r0] + ldr r5, _0801DAF8 @ =gUnk_03000F50 + adds r0, r5, #0 + adds r0, #0x6d + strb r3, [r0] + subs r0, #1 + strb r3, [r0] + ldr r1, _0801DAFC @ =0x040000B0 + ldrh r2, [r1, #0xa] + ldr r0, _0801DB00 @ =0x0000C5FF + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _0801DB04 @ =0x00007FFF + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + movs r0, #0x80 + lsls r0, r0, #0x13 + strh r3, [r0] + bl sub_0801DB10 + bl sub_0801DB34 + ldr r0, _0801DB08 @ =0x0600C000 + movs r1, #0x20 + bl sub_0801D630 + ldr r0, _0801DB0C @ =gUnk_02034CB0 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + strh r4, [r5, #0xe] + pop {r4, r5, pc} + .align 2, 0 +_0801DAEC: .4byte gUnk_03001000 +_0801DAF0: .4byte gUnk_03003DE0 +_0801DAF4: .4byte gUnk_03000FD0 +_0801DAF8: .4byte gUnk_03000F50 +_0801DAFC: .4byte 0x040000B0 +_0801DB00: .4byte 0x0000C5FF +_0801DB04: .4byte 0x00007FFF +_0801DB08: .4byte 0x0600C000 +_0801DB0C: .4byte gUnk_02034CB0 + + thumb_func_start sub_0801DB10 +sub_0801DB10: @ 0x0801DB10 + push {r4, lr} + ldr r3, _0801DB30 @ =gUnk_03000020 + movs r1, #0xe0 + lsls r1, r1, #0x13 + movs r0, #0x80 + movs r4, #0xa8 + lsls r4, r4, #2 + adds r2, r4, #0 +_0801DB20: + strh r2, [r3] + adds r3, #8 + strh r2, [r1] + adds r1, #8 + subs r0, #1 + cmp r0, #0 + bne _0801DB20 + pop {r4, pc} + .align 2, 0 +_0801DB30: .4byte gUnk_03000020 + + thumb_func_start sub_0801DB34 +sub_0801DB34: @ 0x0801DB34 + push {r4, lr} + ldr r4, _0801DB6C @ =gUnk_03000F50 + adds r0, r4, #0 + movs r1, #0x7c + bl sub_0801D630 + ldr r0, _0801DB70 @ =gUnk_02034CB0 + str r0, [r4, #0x10] + ldr r0, _0801DB74 @ =0x00001F0C + strh r0, [r4, #8] + ldr r0, _0801DB78 @ =gUnk_02021F30 + str r0, [r4, #0x1c] + ldr r0, _0801DB7C @ =0x00001C01 + strh r0, [r4, #0x14] + ldr r0, _0801DB80 @ =gUnk_020344B0 + str r0, [r4, #0x28] + ldr r0, _0801DB84 @ =0x00001D02 + strh r0, [r4, #0x20] + ldr r0, _0801DB88 @ =gUnk_02001A40 + str r0, [r4, #0x34] + ldr r0, _0801DB8C @ =0x00001E03 + strh r0, [r4, #0x2c] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r4] + ldr r0, _0801DB90 @ =0x0000FFFF + strh r0, [r4, #6] + pop {r4, pc} + .align 2, 0 +_0801DB6C: .4byte gUnk_03000F50 +_0801DB70: .4byte gUnk_02034CB0 +_0801DB74: .4byte 0x00001F0C +_0801DB78: .4byte gUnk_02021F30 +_0801DB7C: .4byte 0x00001C01 +_0801DB80: .4byte gUnk_020344B0 +_0801DB84: .4byte 0x00001D02 +_0801DB88: .4byte gUnk_02001A40 +_0801DB8C: .4byte 0x00001E03 +_0801DB90: .4byte 0x0000FFFF + + thumb_func_start sub_0801DB94 +sub_0801DB94: @ 0x0801DB94 + ldr r0, _0801DB9C @ =gUnk_030010A0 + ldrh r0, [r0, #0x1e] + lsrs r0, r0, #0xb + bx lr + .align 2, 0 +_0801DB9C: .4byte gUnk_030010A0 + + thumb_func_start sub_0801DBA0 +sub_0801DBA0: @ 0x0801DBA0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + adds r1, r2, #0 + adds r0, r5, #0 + bl sub_0801D630 + movs r0, #1 + strb r0, [r5] + ldr r2, _0801DBE4 @ =gUnk_030010A0 + ldrh r0, [r2, #0x1c] + lsrs r0, r0, #4 + movs r1, #0x7f + ands r0, r1 + strb r0, [r5, #1] + ldrh r0, [r2, #0x1e] + lsrs r0, r0, #4 + ands r0, r1 + strb r0, [r5, #2] + adds r5, #3 + ldr r1, _0801DBE8 @ =gUnk_080C9C50 + ldr r0, _0801DBEC @ =gUnk_02033A90 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r6, [r4] + b _0801DD3A + .align 2, 0 +_0801DBE4: .4byte gUnk_030010A0 +_0801DBE8: .4byte gUnk_080C9C50 +_0801DBEC: .4byte gUnk_02033A90 +_0801DBF0: + ldrb r0, [r6] + ldrb r1, [r6, #1] + movs r2, #3 + bl sub_0804B0FC + adds r4, r0, #0 + cmp r4, #0 + bne _0801DC04 + adds r6, #8 + b _0801DD3A +_0801DC04: + adds r0, r6, #0 + bl sub_0801DF10 + mov r8, r0 + bl sub_0805279C + movs r1, #8 + adds r1, r1, r6 + mov sb, r1 + cmp r0, #0 + beq _0801DCAE + ldrb r0, [r4] + cmp r0, #0 + beq _0801DCAE + movs r3, #0xfc + lsls r3, r3, #2 + ldr r7, _0801DC84 @ =0x000007FF +_0801DC26: + ldrb r0, [r4] + cmp r0, #3 + bgt _0801DCA6 + cmp r0, #2 + blt _0801DCA6 + ldrb r1, [r4, #1] + mov r0, r8 + str r3, [sp] + bl GetProgressFlagWithOffset + ldr r3, [sp] + cmp r0, #0 + bne _0801DCA6 + ldr r0, _0801DC88 @ =gUnk_0811E214 + ldrb r2, [r6] + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r1, [r6, #1] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, [r2] + adds r2, r1, r0 + movs r0, #2 + strb r0, [r5] + ldrb r0, [r4] + cmp r0, #2 + bne _0801DC8C + ldrh r0, [r4, #4] + lsls r0, r0, #4 + ands r0, r3 + movs r1, #8 + orrs r0, r1 + ldrh r1, [r2] + ands r1, r7 + adds r0, r0, r1 + asrs r0, r0, #4 + strb r0, [r5, #1] + ldrh r0, [r4, #4] + lsrs r0, r0, #2 + ands r0, r3 + movs r1, #8 + orrs r0, r1 + ldrh r1, [r2, #2] + ands r1, r7 + b _0801DC9E + .align 2, 0 +_0801DC84: .4byte 0x000007FF +_0801DC88: .4byte gUnk_0811E214 +_0801DC8C: + ldrh r0, [r2] + ands r0, r7 + ldrh r1, [r4, #4] + adds r0, r0, r1 + asrs r0, r0, #4 + strb r0, [r5, #1] + ldrh r0, [r2, #2] + ands r0, r7 + ldrh r1, [r4, #6] +_0801DC9E: + adds r0, r0, r1 + asrs r0, r0, #4 + strb r0, [r5, #2] + adds r5, #3 +_0801DCA6: + adds r4, #8 + ldrb r0, [r4] + cmp r0, #0 + bne _0801DC26 +_0801DCAE: + bl sub_0805279C + cmp r0, #0 + beq _0801DD16 + ldrb r1, [r6, #2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0801DD16 + ldr r0, _0801DD4C @ =gUnk_02033A90 + ldrb r0, [r0, #3] + adds r0, #1 + bl GetProgressFlag + cmp r0, #0 + bne _0801DD16 + ldr r0, _0801DD50 @ =gUnk_0811E214 + ldrb r2, [r6] + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r1, [r6, #1] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, [r2] + adds r2, r1, r0 + movs r0, #4 + strb r0, [r5] + ldrh r0, [r2, #4] + lsrs r0, r0, #1 + ldrh r1, [r2] + adds r0, r0, r1 + asrs r1, r0, #4 + adds r0, r1, #0 + cmp r1, #0 + bge _0801DCF8 + adds r0, #0x7f +_0801DCF8: + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + strb r0, [r5, #1] + ldrh r0, [r2, #6] + lsrs r0, r0, #1 + ldrh r2, [r2, #2] + adds r0, r0, r2 + asrs r1, r0, #4 + adds r0, r1, #0 + asrs r0, r0, #7 + lsls r0, r0, #7 + subs r0, r1, r0 + strb r0, [r5, #2] + adds r5, #3 +_0801DD16: + ldr r2, _0801DD54 @ =gUnk_030010A0 + ldrh r0, [r6] + ldrh r1, [r2, #0x16] + cmp r0, r1 + bne _0801DD38 + movs r0, #3 + strb r0, [r5] + ldrh r0, [r2, #0x18] + lsrs r0, r0, #4 + movs r1, #0x7f + ands r0, r1 + strb r0, [r5, #1] + ldrh r0, [r2, #0x1a] + lsrs r0, r0, #4 + ands r0, r1 + strb r0, [r5, #2] + adds r5, #3 +_0801DD38: + mov r6, sb +_0801DD3A: + ldrb r0, [r6] + cmp r0, #0 + beq _0801DD42 + b _0801DBF0 +_0801DD42: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801DD4C: .4byte gUnk_02033A90 +_0801DD50: .4byte gUnk_0811E214 +_0801DD54: .4byte gUnk_030010A0 + + thumb_func_start sub_0801DD58 +sub_0801DD58: @ 0x0801DD58 + ldr r2, _0801DD7C @ =gUnk_0811E214 + lsls r0, r0, #2 + adds r0, r0, r2 + lsls r2, r1, #2 + adds r2, r2, r1 + lsls r2, r2, #1 + ldr r3, [r0] + adds r3, r3, r2 + ldr r0, _0801DD80 @ =gUnk_02033A90 + ldr r1, _0801DD84 @ =0x0000085C + adds r0, r0, r1 + ldr r2, [r0] + ldrh r1, [r3] + strh r1, [r2, #4] + ldr r1, [r0] + ldrh r0, [r3, #2] + strh r0, [r1, #6] + bx lr + .align 2, 0 +_0801DD7C: .4byte gUnk_0811E214 +_0801DD80: .4byte gUnk_02033A90 +_0801DD84: .4byte 0x0000085C + + thumb_func_start sub_0801DD88 +sub_0801DD88: @ 0x0801DD88 + push {lr} + ldr r0, _0801DD98 @ =gUnk_0201AEE0 + ldr r1, _0801DD9C @ =0x06006000 + movs r2, #0x80 + lsls r2, r2, #6 + bl sub_08000E96 + pop {pc} + .align 2, 0 +_0801DD98: .4byte gUnk_0201AEE0 +_0801DD9C: .4byte 0x06006000 + + thumb_func_start sub_0801DDA0 +sub_0801DDA0: @ 0x0801DDA0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r4, r0, #0 + bl sub_08052690 + cmp r0, #0 + bne _0801DDB8 + b _0801DEEA +_0801DDB8: + ldr r1, _0801DDD8 @ =gUnk_080C9C50 + ldr r0, _0801DDDC @ =gUnk_02033A90 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r4, [r0] + ldr r0, _0801DDE0 @ =gUnk_02019EE0 + movs r1, #0x80 + lsls r1, r1, #8 + bl sub_0801D630 + b _0801DEE2 + .align 2, 0 +_0801DDD8: .4byte gUnk_080C9C50 +_0801DDDC: .4byte gUnk_02033A90 +_0801DDE0: .4byte gUnk_02019EE0 +_0801DDE4: + ldrb r0, [r4] + ldrb r1, [r4, #1] + movs r2, #3 + bl sub_0804B0FC + adds r6, r0, #0 + adds r0, r4, #0 + bl sub_0801DF10 + adds r5, r0, #0 + movs r0, #0 + str r0, [sp, #0xc] + ldrh r2, [r4] + ldr r0, _0801DE14 @ =gUnk_02032EC0 + ldrh r3, [r0, #0x20] + ldr r1, _0801DE18 @ =0x0000FFFF + ands r1, r2 + ldr r0, _0801DE18 @ =0x0000FFFF + ands r0, r3 + cmp r1, r0 + bne _0801DE1C + movs r3, #8 + b _0801DE36 + .align 2, 0 +_0801DE14: .4byte gUnk_02032EC0 +_0801DE18: .4byte 0x0000FFFF +_0801DE1C: + bl sub_080527CC + cmp r0, #0 + beq _0801DE28 + movs r0, #2 + str r0, [sp, #0xc] +_0801DE28: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0801DF90 + cmp r0, #0 + beq _0801DE38 + movs r3, #3 +_0801DE36: + str r3, [sp, #0xc] +_0801DE38: + ldrb r1, [r4, #2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801DE46 + movs r0, #0 + str r0, [sp, #0xc] +_0801DE46: + adds r3, r4, #0 + adds r3, #8 + str r3, [sp, #0x10] + ldr r0, [sp, #0xc] + cmp r0, #0 + beq _0801DEE0 + ldr r2, _0801DEF8 @ =0x040000D4 + ldr r0, [r4, #4] + ldr r1, _0801DEFC @ =gUnk_08324AE4 + adds r0, r0, r1 + str r0, [r2] + ldr r0, _0801DF00 @ =gUnk_02019EE0 + str r0, [r2, #4] + ldr r0, _0801DF04 @ =0x84000100 + str r0, [r2, #8] + ldr r0, [r2, #8] + ldr r0, _0801DF08 @ =gUnk_0811E214 + ldrb r2, [r4] + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r1, [r4, #1] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r2, [r2] + adds r2, r2, r0 + ldrh r0, [r2] + lsrs r0, r0, #4 + str r0, [sp] + ldrh r0, [r2, #2] + ldr r1, _0801DF0C @ =0x000007FF + ands r0, r1 + lsrs r0, r0, #4 + str r0, [sp, #4] + ldrh r0, [r2, #4] + lsrs r7, r0, #4 + ldrh r0, [r2, #6] + lsrs r0, r0, #4 + mov sl, r0 + adds r0, r7, #3 + lsrs r0, r0, #2 + str r0, [sp, #8] + movs r6, #0 + cmp r6, sl + bhs _0801DEE0 +_0801DEA0: + ldr r3, [sp, #8] + adds r1, r6, #0 + muls r1, r3, r1 + ldr r0, _0801DF00 @ =gUnk_02019EE0 + adds r1, r1, r0 + mov r8, r1 + movs r5, #0 + adds r0, r6, #1 + mov sb, r0 + cmp r5, r7 + bhs _0801DEDA +_0801DEB6: + ldr r3, [sp] + adds r4, r3, r5 + adds r0, r5, #0 + mov r1, r8 + bl sub_0801DF60 + ldr r1, [sp, #0xc] + bl sub_0801DF78 + adds r2, r0, #0 + adds r0, r4, #0 + ldr r3, [sp, #4] + adds r1, r3, r6 + bl sub_0801DF28 + adds r5, #1 + cmp r5, r7 + blo _0801DEB6 +_0801DEDA: + mov r6, sb + cmp r6, sl + blo _0801DEA0 +_0801DEE0: + ldr r4, [sp, #0x10] +_0801DEE2: + ldrb r0, [r4] + cmp r0, #0 + beq _0801DEEA + b _0801DDE4 +_0801DEEA: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801DEF8: .4byte 0x040000D4 +_0801DEFC: .4byte gUnk_08324AE4 +_0801DF00: .4byte gUnk_02019EE0 +_0801DF04: .4byte 0x84000100 +_0801DF08: .4byte gUnk_0811E214 +_0801DF0C: .4byte 0x000007FF + + thumb_func_start sub_0801DF10 +sub_0801DF10: @ 0x0801DF10 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #3] + cmp r0, #1 + bne _0801DF20 + movs r0, #0xc0 + lsls r0, r0, #2 + b _0801DF26 +_0801DF20: + ldrb r0, [r1] + bl sub_08052D58 +_0801DF26: + pop {pc} + + thumb_func_start sub_0801DF28 +sub_0801DF28: @ 0x0801DF28 + push {r4, lr} + lsrs r4, r1, #3 + lsls r4, r4, #4 + lsrs r3, r0, #3 + adds r4, r4, r3 + lsls r4, r4, #5 + ldr r3, _0801DF58 @ =gUnk_0201AEE0 + adds r4, r4, r3 + movs r3, #7 + ands r1, r3 + lsls r1, r1, #2 + adds r4, r4, r1 + ands r0, r3 + lsls r0, r0, #2 + lsls r2, r0 + ldr r1, _0801DF5C @ =gUnk_080C9460 + adds r0, r0, r1 + ldr r1, [r4] + ldr r0, [r0] + ands r1, r0 + orrs r1, r2 + str r1, [r4] + pop {r4, pc} + .align 2, 0 +_0801DF58: .4byte gUnk_0201AEE0 +_0801DF5C: .4byte gUnk_080C9460 + + thumb_func_start sub_0801DF60 +sub_0801DF60: @ 0x0801DF60 + adds r3, r0, #0 + lsrs r0, r3, #2 + adds r0, r0, r1 + ldrb r0, [r0] + movs r2, #3 + adds r1, r2, #0 + bics r1, r3 + lsls r1, r1, #1 + asrs r0, r1 + ands r0, r2 + bx lr + .align 2, 0 + + thumb_func_start sub_0801DF78 +sub_0801DF78: @ 0x0801DF78 + push {lr} + cmp r0, #2 + beq _0801DF88 + cmp r0, #2 + blo _0801DF8E + cmp r0, #3 + beq _0801DF8C + b _0801DF8E +_0801DF88: + adds r0, r1, #0 + b _0801DF8E +_0801DF8C: + movs r0, #7 +_0801DF8E: + pop {pc} + + thumb_func_start sub_0801DF90 +sub_0801DF90: @ 0x0801DF90 + push {lr} + adds r2, r1, #0 + cmp r0, #0 + bne _0801DFAA + b _0801DFB0 +_0801DF9A: + ldrb r1, [r0, #1] + adds r0, r2, #0 + bl GetProgressFlagWithOffset + b _0801DFB2 +_0801DFA4: + cmp r1, #1 + beq _0801DF9A + adds r0, #8 +_0801DFAA: + ldrb r1, [r0] + cmp r1, #0 + bne _0801DFA4 +_0801DFB0: + movs r0, #0 +_0801DFB2: + pop {pc} + + thumb_func_start sub_0801DFB4 +sub_0801DFB4: @ 0x0801DFB4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r7, _0801E004 @ =gUnk_02022740 + adds r0, r7, #0 + movs r1, #0x10 + bl sub_0801D630 + strh r4, [r7, #6] + strh r5, [r7, #8] + strh r6, [r7, #0xa] + mov r0, r8 + str r0, [r7, #0xc] + ldr r0, _0801E008 @ =gUnk_03003DF0 + ldrb r0, [r0, #2] + strb r0, [r7, #3] + mov r1, r8 + cmp r1, #0 + beq _0801DFF8 + ldrb r1, [r1, #0x11] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + strb r0, [r7, #4] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + mov r1, r8 + strb r0, [r1, #0x11] +_0801DFF8: + movs r0, #0 + strb r0, [r7] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801E004: .4byte gUnk_02022740 +_0801E008: .4byte gUnk_03003DF0 + + thumb_func_start sub_0801E00C +sub_0801E00C: @ 0x0801E00C + push {r4, lr} + ldr r1, _0801E024 @ =gUnk_080C9CAC + ldr r4, _0801E028 @ =gUnk_02022740 + ldrb r0, [r4, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldrb r0, [r4] + pop {r4, pc} + .align 2, 0 +_0801E024: .4byte gUnk_080C9CAC +_0801E028: .4byte gUnk_02022740 + + thumb_func_start sub_0801E02C +sub_0801E02C: @ 0x0801E02C + push {r4, lr} + ldr r4, _0801E040 @ =gUnk_02022740 + ldrh r0, [r4, #6] + bl sub_0801E0E0 + movs r0, #3 + strb r0, [r4] + movs r0, #1 + strb r0, [r4, #1] + pop {r4, pc} + .align 2, 0 +_0801E040: .4byte gUnk_02022740 + + thumb_func_start sub_0801E044 +sub_0801E044: @ 0x0801E044 + push {lr} + ldr r0, _0801E06C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0801E06A + movs r0, #4 + movs r1, #0 + bl sub_080A7138 + ldr r0, _0801E070 @ =gUnk_02022740 + movs r1, #4 + strb r1, [r0] + movs r1, #2 + strb r1, [r0, #1] + movs r0, #0x6b + bl sub_080A3268 +_0801E06A: + pop {pc} + .align 2, 0 +_0801E06C: .4byte gUnk_02000050 +_0801E070: .4byte gUnk_02022740 + + thumb_func_start sub_0801E074 +sub_0801E074: @ 0x0801E074 + push {lr} + ldr r0, _0801E084 @ =gUnk_02022740 + ldrb r1, [r0] + cmp r1, #5 + beq _0801E088 + cmp r1, #6 + beq _0801E08C + b _0801E098 + .align 2, 0 +_0801E084: .4byte gUnk_02022740 +_0801E088: + ldrh r0, [r0, #8] + b _0801E08E +_0801E08C: + ldrh r0, [r0, #0xa] +_0801E08E: + bl sub_0801E0E0 + ldr r1, _0801E09C @ =gUnk_02022740 + movs r0, #3 + strb r0, [r1, #1] +_0801E098: + pop {pc} + .align 2, 0 +_0801E09C: .4byte gUnk_02022740 + + thumb_func_start sub_0801E0A0 +sub_0801E0A0: @ 0x0801E0A0 + push {r4, lr} + ldr r0, _0801E0D8 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0801E0D4 + ldr r4, _0801E0DC @ =gUnk_02022740 + ldr r3, [r4, #0xc] + cmp r3, #0 + beq _0801E0C8 + ldrb r0, [r4, #4] + movs r1, #0xf + ands r1, r0 + ldrb r2, [r3, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x11] +_0801E0C8: + ldrb r0, [r4] + movs r1, #1 + cmp r0, #6 + bne _0801E0D2 + movs r1, #2 +_0801E0D2: + strb r1, [r4] +_0801E0D4: + pop {r4, pc} + .align 2, 0 +_0801E0D8: .4byte gUnk_02000050 +_0801E0DC: .4byte gUnk_02022740 + + thumb_func_start sub_0801E0E0 +sub_0801E0E0: @ 0x0801E0E0 + push {lr} + adds r2, r0, #0 + cmp r2, #0 + beq _0801E102 + ldr r0, _0801E0F8 @ =gUnk_02022740 + ldr r1, [r0, #0xc] + cmp r1, #0 + beq _0801E0FC + adds r0, r2, #0 + bl sub_08056398 + b _0801E102 + .align 2, 0 +_0801E0F8: .4byte gUnk_02022740 +_0801E0FC: + adds r0, r2, #0 + bl sub_08056378 +_0801E102: + pop {pc} + + thumb_func_start sub_0801E104 +sub_0801E104: @ 0x0801E104 + ldr r1, _0801E118 @ =gUnk_03000F50 + ldrh r2, [r1] + ldr r0, _0801E11C @ =0x00009FFF + ands r0, r2 + movs r2, #0 + strh r0, [r1] + adds r1, #0x6c + strb r2, [r1] + bx lr + .align 2, 0 +_0801E118: .4byte gUnk_03000F50 +_0801E11C: .4byte 0x00009FFF + + thumb_func_start sub_0801E120 +sub_0801E120: @ 0x0801E120 + ldr r3, _0801E14C @ =gUnk_03000F50 + ldrh r1, [r3] + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r2, #0 + movs r2, #0 + orrs r0, r1 + strh r0, [r3] + adds r1, r3, #0 + adds r1, #0x60 + ldr r0, _0801E150 @ =0x00003F37 + strh r0, [r1] + adds r1, #2 + movs r0, #0x3f + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0x58 + strh r2, [r0] + subs r1, #6 + movs r0, #0xa0 + strh r0, [r1] + bx lr + .align 2, 0 +_0801E14C: .4byte gUnk_03000F50 +_0801E150: .4byte 0x00003F37 + + thumb_func_start sub_0801E154 +sub_0801E154: @ 0x0801E154 + push {lr} + movs r1, #0 + bl sub_0801E24C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801E160 +sub_0801E160: @ 0x0801E160 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r6, r0, #0 + mov r8, r1 + mov sb, r2 + ldr r5, _0801E1A8 @ =gUnk_03003DE4 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r4, _0801E1AC @ =gUnk_02017AA0 + adds r0, r0, r4 + movs r1, #0xa0 + lsls r1, r1, #4 + bl sub_0801D630 + adds r0, r6, #0 + mov r1, r8 + mov r2, sb + bl sub_0801E290 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + adds r0, r0, r4 + ldr r1, _0801E1B0 @ =0x04000040 + ldr r2, _0801E1B4 @ =0xA2600001 + bl sub_0805622C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_0801E1A8: .4byte gUnk_03003DE4 +_0801E1AC: .4byte gUnk_02017AA0 +_0801E1B0: .4byte 0x04000040 +_0801E1B4: .4byte 0xA2600001 + + thumb_func_start sub_0801E1B8 +sub_0801E1B8: @ 0x0801E1B8 + push {r4, lr} + ldr r2, _0801E1E8 @ =gUnk_03000F50 + mov ip, r2 + ldrh r3, [r2] + movs r4, #0x80 + lsls r4, r4, #6 + adds r2, r4, #0 + movs r4, #0 + orrs r2, r3 + mov r3, ip + strh r2, [r3] + mov r2, ip + adds r2, #0x60 + strh r0, [r2] + mov r0, ip + adds r0, #0x62 + strh r1, [r0] + subs r0, #0xa + strh r4, [r0] + mov r1, ip + adds r1, #0x5c + movs r0, #0xa0 + strh r0, [r1] + pop {r4, pc} + .align 2, 0 +_0801E1E8: .4byte gUnk_03000F50 + + thumb_func_start sub_0801E1EC +sub_0801E1EC: @ 0x0801E1EC + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + mov r8, r0 + mov sb, r1 + adds r4, r2, #0 + ldr r6, _0801E23C @ =gUnk_03003DE4 + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r5, _0801E240 @ =gUnk_02017AA0 + adds r0, r0, r5 + movs r1, #0xa0 + lsls r1, r1, #4 + bl sub_0801D630 + adds r0, r4, #0 + movs r1, #0 + bl sub_0801E24C + mov r0, r8 + mov r1, sb + adds r2, r4, #0 + bl sub_0801E290 + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + adds r0, r0, r5 + ldr r1, _0801E244 @ =0x04000040 + ldr r2, _0801E248 @ =0xA2600001 + bl sub_0805622C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_0801E23C: .4byte gUnk_03003DE4 +_0801E240: .4byte gUnk_02017AA0 +_0801E244: .4byte 0x04000040 +_0801E248: .4byte 0xA2600001 + + thumb_func_start sub_0801E24C +sub_0801E24C: @ 0x0801E24C + push {r4, r5, lr} + lsls r1, r1, #1 + ldr r2, _0801E278 @ =gUnk_02018EE0 + adds r5, r1, r2 + movs r3, #0 + adds r2, r0, #0 + lsls r4, r2, #1 + movs r0, #3 + subs r1, r0, r4 + cmp r3, r2 + bgt _0801E28E + adds r4, r4, r5 +_0801E264: + lsls r0, r3, #1 + adds r0, r0, r5 + strh r2, [r0] + strh r3, [r4] + cmp r1, #0 + bge _0801E27C + adds r1, #6 + lsls r0, r3, #2 + adds r1, r1, r0 + b _0801E288 + .align 2, 0 +_0801E278: .4byte gUnk_02018EE0 +_0801E27C: + adds r1, #0xa + subs r0, r3, r2 + lsls r0, r0, #2 + adds r1, r1, r0 + subs r4, #2 + subs r2, #1 +_0801E288: + adds r3, #1 + cmp r3, r2 + ble _0801E264 +_0801E28E: + pop {r4, r5, pc} + + thumb_func_start sub_0801E290 +sub_0801E290: @ 0x0801E290 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov ip, r0 + adds r6, r2, #0 + ldr r0, _0801E2BC @ =gUnk_03003DE4 + ldrb r0, [r0] + lsls r2, r0, #2 + adds r2, r2, r0 + lsls r2, r2, #9 + lsls r0, r1, #1 + ldr r3, _0801E2C0 @ =gUnk_02017AA0 + adds r0, r0, r3 + adds r2, r2, r0 + adds r4, r2, #0 + adds r5, r1, #0 + mov sb, r5 + ldr r0, _0801E2C4 @ =gUnk_02018EE0 + mov r8, r0 + b _0801E30A + .align 2, 0 +_0801E2BC: .4byte gUnk_03003DE4 +_0801E2C0: .4byte gUnk_02017AA0 +_0801E2C4: .4byte gUnk_02018EE0 +_0801E2C8: + mov r1, r8 + movs r3, #0 + ldrsh r0, [r1, r3] + movs r7, #2 + add r8, r7 + mov r3, ip + subs r1, r3, r0 + adds r3, r3, r0 + cmp r1, #0 + bge _0801E2DE + movs r1, #0 +_0801E2DE: + cmp r3, #0xef + ble _0801E2E4 + movs r3, #0xf0 +_0801E2E4: + mov r7, sb + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x9f + bhi _0801E2F2 + strb r3, [r4] + strb r1, [r4, #1] +_0801E2F2: + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x9f + bhi _0801E2FE + strb r3, [r2] + strb r1, [r2, #1] +_0801E2FE: + subs r4, #2 + adds r2, #2 + movs r0, #1 + rsbs r0, r0, #0 + add sb, r0 + adds r5, #1 +_0801E30A: + adds r0, r6, #0 + subs r6, #1 + cmp r0, #0 + bne _0801E2C8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0801E31C +sub_0801E31C: @ 0x0801E31C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x20 + str r0, [sp] + str r1, [sp, #4] + mov sl, r2 + mov sb, r3 + ldr r0, _0801E3AC @ =gUnk_03003DE4 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _0801E3B0 @ =gUnk_02017AA0 + adds r0, r0, r1 + movs r1, #0xa0 + lsls r1, r1, #4 + bl sub_0801D630 + cmp sl, sb + bge _0801E3DC + movs r6, #0 + mov r8, sl + mov r7, r8 + mov r0, r8 + lsls r1, r0, #1 + movs r0, #3 + subs r5, r0, r1 + cmp r6, r8 + ble _0801E35E + b _0801E45E +_0801E35E: + mov r1, r8 + lsls r0, r1, #2 + ldr r4, _0801E3B4 @ =gUnk_02018EE0 + adds r0, r0, r4 + str r0, [sp, #0x10] + mov r1, sb + mov r0, r8 + muls r0, r1, r0 + str r0, [sp, #0x14] + movs r3, #0 +_0801E372: + adds r0, r3, #0 + mov r1, sl + str r3, [sp, #0x18] + bl Div + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp, #0x1c] + ldr r0, [sp, #0x14] + mov r1, sl + bl Div + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r6, #2 + ldr r4, _0801E3B4 @ =gUnk_02018EE0 + adds r1, r2, r4 + str r0, [r1] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #0x10] + str r0, [r1] + ldr r3, [sp, #0x18] + cmp r5, #0 + bge _0801E3B8 + adds r0, r5, #6 + adds r5, r0, r2 + b _0801E3D2 + .align 2, 0 +_0801E3AC: .4byte gUnk_03003DE4 +_0801E3B0: .4byte gUnk_02017AA0 +_0801E3B4: .4byte gUnk_02018EE0 +_0801E3B8: + adds r1, r5, #0 + adds r1, #0xa + subs r0, r6, r7 + lsls r0, r0, #2 + adds r5, r1, r0 + ldr r4, [sp, #0x10] + subs r4, #4 + str r4, [sp, #0x10] + ldr r0, [sp, #0x14] + mov r1, sb + subs r0, r0, r1 + str r0, [sp, #0x14] + subs r7, #1 +_0801E3D2: + add r3, sb + adds r6, #1 + cmp r6, r7 + ble _0801E372 + b _0801E45E +_0801E3DC: + movs r6, #0 + mov r8, sb + mov r7, r8 + mov r4, r8 + lsls r1, r4, #1 + movs r0, #3 + subs r5, r0, r1 + cmp r6, r8 + bgt _0801E45E + lsls r0, r4, #2 + ldr r1, _0801E438 @ =gUnk_02018EE0 + adds r0, r0, r1 + str r0, [sp, #8] + mov r0, sl + mov r4, r8 + muls r4, r0, r4 + str r4, [sp, #0xc] + movs r3, #0 +_0801E400: + adds r0, r3, #0 + mov r1, sb + str r3, [sp, #0x18] + bl Div + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + str r4, [sp, #0x1c] + ldr r0, [sp, #0xc] + mov r1, sb + bl Div + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r2, r6, #2 + ldr r4, _0801E438 @ =gUnk_02018EE0 + adds r1, r2, r4 + str r0, [r1] + ldr r0, [sp, #0x1c] + ldr r1, [sp, #8] + str r0, [r1] + ldr r3, [sp, #0x18] + cmp r5, #0 + bge _0801E43C + adds r0, r5, #6 + adds r5, r0, r2 + b _0801E456 + .align 2, 0 +_0801E438: .4byte gUnk_02018EE0 +_0801E43C: + adds r1, r5, #0 + adds r1, #0xa + subs r0, r6, r7 + lsls r0, r0, #2 + adds r5, r1, r0 + ldr r4, [sp, #8] + subs r4, #4 + str r4, [sp, #8] + ldr r0, [sp, #0xc] + mov r1, sl + subs r0, r0, r1 + str r0, [sp, #0xc] + subs r7, #1 +_0801E456: + add r3, sl + adds r6, #1 + cmp r6, r7 + ble _0801E400 +_0801E45E: + ldr r0, [sp] + ldr r1, [sp, #4] + mov r2, r8 + bl sub_0801E290 + ldr r0, _0801E48C @ =gUnk_03003DE4 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _0801E490 @ =gUnk_02017AA0 + adds r0, r0, r1 + ldr r1, _0801E494 @ =0x04000040 + ldr r2, _0801E498 @ =0xA2600001 + bl sub_0805622C + add sp, #0x20 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801E48C: .4byte gUnk_03003DE4 +_0801E490: .4byte gUnk_02017AA0 +_0801E494: .4byte 0x04000040 +_0801E498: .4byte 0xA2600001 + + thumb_func_start sub_0801E49C +sub_0801E49C: @ 0x0801E49C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov r8, r0 + str r1, [sp, #4] + mov sb, r2 + adds r5, r3, #0 + ldr r0, _0801E5E4 @ =0x0000FFFF + movs r2, #0xf0 + lsls r2, r2, #3 + ldr r1, _0801E5E8 @ =gUnk_02018EE0 + bl sub_0801D5EC + adds r3, r5, #0 + subs r3, #0x40 + movs r2, #0xff + ands r3, r2 + ldr r1, _0801E5EC @ =gUnk_080C9160 + adds r0, r3, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r4, #0 + ldrsh r0, [r0, r4] + mov r4, sb + muls r4, r0, r4 + adds r0, r4, #0 + asrs r0, r0, #8 + mov r4, r8 + adds r7, r4, r0 + lsls r0, r3, #1 + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + mov r4, sb + muls r4, r0, r4 + adds r0, r4, #0 + asrs r0, r0, #8 + ldr r3, [sp, #4] + adds r3, r3, r0 + mov sl, r3 + adds r3, r5, #0 + adds r3, #0x68 + ands r3, r2 + adds r0, r3, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r4, #0 + ldrsh r0, [r0, r4] + mov r4, sb + muls r4, r0, r4 + adds r0, r4, #0 + asrs r0, r0, #8 + mov r4, r8 + adds r6, r4, r0 + lsls r0, r3, #1 + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + mov r4, sb + muls r4, r0, r4 + adds r0, r4, #0 + asrs r0, r0, #8 + ldr r3, [sp, #4] + adds r4, r3, r0 + adds r3, r5, #0 + subs r3, #0xe8 + ands r3, r2 + adds r0, r3, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + mov r2, sb + muls r2, r0, r2 + adds r0, r2, #0 + asrs r0, r0, #8 + mov r2, r8 + adds r5, r2, r0 + lsls r0, r3, #1 + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + mov r1, sb + muls r1, r0, r1 + adds r0, r1, #0 + asrs r0, r0, #8 + ldr r2, [sp, #4] + adds r2, r2, r0 + mov r8, r2 + movs r0, #0 + str r0, [sp] + adds r0, r7, #0 + mov r1, sl + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_0801E64C + movs r0, #1 + str r0, [sp] + adds r0, r7, #0 + mov r1, sl + adds r2, r5, #0 + mov r3, r8 + bl sub_0801E64C + movs r0, #2 + str r0, [sp] + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + mov r3, r8 + bl sub_0801E64C + ldr r5, _0801E5F0 @ =gUnk_03003DE4 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r6, _0801E5F4 @ =gUnk_02017AA0 + adds r0, r0, r6 + movs r1, #0xa0 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r2, _0801E5E8 @ =gUnk_02018EE0 + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + adds r1, r0, r6 + movs r3, #0xa0 + mov sl, r3 +_0801E5B0: + ldr r7, [r2] + ldr r6, [r2, #4] + ldr r5, [r2, #8] + adds r2, #0xc + cmp r7, r6 + ble _0801E5C2 + adds r4, r7, #0 + adds r7, r6, #0 + adds r6, r4, #0 +_0801E5C2: + cmp r7, r5 + ble _0801E5CC + adds r4, r7, #0 + adds r7, r5, #0 + adds r5, r4, #0 +_0801E5CC: + cmp r6, r5 + ble _0801E5D6 + adds r4, r6, #0 + adds r6, r5, #0 + adds r5, r4, #0 +_0801E5D6: + movs r0, #1 + rsbs r0, r0, #0 + cmp r7, r0 + beq _0801E5F8 + strb r5, [r1] + strb r7, [r1, #1] + b _0801E60A + .align 2, 0 +_0801E5E4: .4byte 0x0000FFFF +_0801E5E8: .4byte gUnk_02018EE0 +_0801E5EC: .4byte gUnk_080C9160 +_0801E5F0: .4byte gUnk_03003DE4 +_0801E5F4: .4byte gUnk_02017AA0 +_0801E5F8: + cmp r6, r7 + beq _0801E602 + strb r5, [r1] + strb r6, [r1, #1] + b _0801E60A +_0801E602: + cmp r5, r7 + beq _0801E60A + strb r7, [r1, #1] + strb r7, [r1] +_0801E60A: + movs r4, #1 + rsbs r4, r4, #0 + add sl, r4 + adds r1, #2 + mov r0, sl + cmp r0, #0 + bgt _0801E5B0 + ldr r0, _0801E63C @ =gUnk_03003DE4 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _0801E640 @ =gUnk_02017AA0 + adds r0, r0, r1 + ldr r1, _0801E644 @ =0x04000040 + ldr r2, _0801E648 @ =0xA2600001 + bl sub_0805622C + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801E63C: .4byte gUnk_03003DE4 +_0801E640: .4byte gUnk_02017AA0 +_0801E644: .4byte 0x04000040 +_0801E648: .4byte 0xA2600001 + + thumb_func_start sub_0801E64C +sub_0801E64C: @ 0x0801E64C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r3, #0 + ldr r7, _0801E6C4 @ =gUnk_02018EE0 + cmp r4, #0 + bge _0801E65E + cmp r6, #0 + blt _0801E6C2 +_0801E65E: + cmp r4, #0x9f + ble _0801E666 + cmp r6, #0x9f + bgt _0801E6C2 +_0801E666: + cmp r4, r6 + ble _0801E676 + adds r1, r4, #0 + adds r4, r6, #0 + adds r6, r1, #0 + adds r1, r5, #0 + adds r5, r2, #0 + adds r2, r1, #0 +_0801E676: + cmp r4, r6 + beq _0801E6C2 + subs r0, r2, r5 + lsls r0, r0, #0x10 + subs r1, r6, r4 + bl Div + adds r3, r0, #0 + cmp r4, #0 + bge _0801E694 + rsbs r0, r4, #0 + muls r0, r3, r0 + asrs r0, r0, #0x10 + adds r5, r5, r0 + movs r4, #0 +_0801E694: + cmp r6, #0x9f + ble _0801E69A + movs r6, #0x9f +_0801E69A: + lsls r2, r5, #0x10 + lsls r0, r4, #1 + adds r0, r0, r4 + ldr r1, [sp, #0x14] + adds r0, r0, r1 + lsls r0, r0, #2 + adds r7, r0, r7 +_0801E6A8: + cmp r5, #0 + bge _0801E6AE + movs r5, #0 +_0801E6AE: + cmp r5, #0xf0 + ble _0801E6B4 + movs r5, #0xf0 +_0801E6B4: + str r5, [r7] + adds r2, r2, r3 + asrs r5, r2, #0x10 + adds r4, #1 + adds r7, #0xc + cmp r4, r6 + ble _0801E6A8 +_0801E6C2: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801E6C4: .4byte gUnk_02018EE0 + + thumb_func_start sub_0801E6C8 +sub_0801E6C8: @ 0x0801E6C8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + subs r0, r4, #1 + cmp r0, #0x63 + bhi _0801E722 + movs r1, #0 + ldr r5, _0801E724 @ =gUnk_02022740 + ldr r3, _0801E728 @ =gUnk_02002C01 + movs r2, #0xf1 +_0801E6DA: + adds r0, r1, r3 + ldrb r6, [r0] + cmp r4, r6 + bne _0801E6E4 + strb r2, [r0] +_0801E6E4: + adds r1, #1 + cmp r1, #0x7f + bls _0801E6DA + ldr r0, [r5, #0xc] + bl sub_08002632 + adds r1, r0, #0 + subs r0, r1, #1 + cmp r0, #0x7e + bhi _0801E70A + ldr r0, _0801E72C @ =gUnk_02002A40 + ldr r2, _0801E730 @ =0x000001C1 + adds r0, r0, r2 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xf1 + bne _0801E70A + movs r0, #0xf2 + strb r0, [r1] +_0801E70A: + movs r1, #0 + ldr r0, _0801E734 @ =gUnk_03003DF0 + movs r2, #0xf1 + adds r0, #0xb +_0801E712: + ldrb r3, [r0] + cmp r4, r3 + bne _0801E71A + strb r2, [r0] +_0801E71A: + adds r0, #0xc + adds r1, #1 + cmp r1, #0x1f + bls _0801E712 +_0801E722: + pop {r4, r5, r6, pc} + .align 2, 0 +_0801E724: .4byte gUnk_02022740 +_0801E728: .4byte gUnk_02002C01 +_0801E72C: .4byte gUnk_02002A40 +_0801E730: .4byte 0x000001C1 +_0801E734: .4byte gUnk_03003DF0 + + thumb_func_start sub_0801E738 +sub_0801E738: @ 0x0801E738 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E82C + adds r0, r4, #0 + subs r0, #0x65 + cmp r0, #0x10 + bhi _0801E790 + adds r0, r4, #0 + bl sub_0801E8B0 + adds r1, r0, #0 + cmp r1, #0 + bge _0801E76E + movs r1, #0 + ldr r0, _0801E794 @ =gUnk_02002A40 + movs r3, #0x8c + lsls r3, r3, #1 + adds r2, r0, r3 + ldrb r0, [r2] + cmp r0, #0 + beq _0801E76E +_0801E764: + adds r1, #1 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _0801E764 +_0801E76E: + cmp r1, #0x11 + bhi _0801E790 + ldr r2, _0801E794 @ =gUnk_02002A40 + movs r3, #0x8c + lsls r3, r3, #1 + adds r0, r2, r3 + adds r0, r1, r0 + strb r4, [r0] + adds r3, #0x13 + adds r0, r2, r3 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, #1 + cmp r0, #0x63 + ble _0801E78E + movs r0, #0x63 +_0801E78E: + strb r0, [r1] +_0801E790: + pop {r4, pc} + .align 2, 0 +_0801E794: .4byte gUnk_02002A40 + + thumb_func_start sub_0801E798 +sub_0801E798: @ 0x0801E798 + push {r4, lr} + bl sub_0801E8B0 + adds r1, r0, #0 + cmp r1, #0 + blt _0801E7C4 + ldr r2, _0801E7C8 @ =gUnk_02002A40 + ldr r3, _0801E7CC @ =0x0000012B + adds r0, r2, r3 + adds r3, r1, r0 + ldrb r0, [r3] + subs r0, #1 + cmp r0, #0 + bgt _0801E7C2 + movs r4, #0x8c + lsls r4, r4, #1 + adds r0, r2, r4 + adds r0, r1, r0 + movs r1, #0 + strb r1, [r0] + movs r0, #0 +_0801E7C2: + strb r0, [r3] +_0801E7C4: + pop {r4, pc} + .align 2, 0 +_0801E7C8: .4byte gUnk_02002A40 +_0801E7CC: .4byte 0x0000012B + + thumb_func_start sub_0801E7D0 +sub_0801E7D0: @ 0x0801E7D0 + push {lr} + bl sub_0801E8B0 + adds r1, r0, #0 + cmp r1, #0 + blt _0801E7F0 + ldr r0, _0801E7E8 @ =gUnk_02002A40 + ldr r2, _0801E7EC @ =0x0000012B + adds r0, r0, r2 + adds r0, r1, r0 + ldrb r0, [r0] + b _0801E7F2 + .align 2, 0 +_0801E7E8: .4byte gUnk_02002A40 +_0801E7EC: .4byte 0x0000012B +_0801E7F0: + movs r0, #0 +_0801E7F2: + pop {pc} + + thumb_func_start sub_0801E7F4 +sub_0801E7F4: @ 0x0801E7F4 + push {lr} + adds r1, r0, #0 + subs r0, r1, #1 + cmp r0, #0x63 + bhi _0801E80C + ldr r0, _0801E808 @ =gUnk_02002C81 + bl sub_0801D5A8 + b _0801E80E + .align 2, 0 +_0801E808: .4byte gUnk_02002C81 +_0801E80C: + movs r0, #0 +_0801E80E: + pop {pc} + + thumb_func_start sub_0801E810 +sub_0801E810: @ 0x0801E810 + push {lr} + adds r1, r0, #0 + subs r0, r1, #1 + cmp r0, #0x63 + bhi _0801E828 + ldr r0, _0801E824 @ =gUnk_02002C8E + bl sub_0801D5A8 + b _0801E82A + .align 2, 0 +_0801E824: .4byte gUnk_02002C8E +_0801E828: + movs r0, #0 +_0801E82A: + pop {pc} + + thumb_func_start sub_0801E82C +sub_0801E82C: @ 0x0801E82C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r1, _0801E8AC @ =gUnk_02002B54 + movs r5, #0 + adds r2, r1, #4 +_0801E83C: + ldrb r0, [r2, #0x13] + adds r3, r1, #4 + mov sl, r3 + cmp r0, #0 + bne _0801E848 + strb r0, [r2] +_0801E848: + adds r2, #1 + adds r5, #1 + cmp r5, #0x12 + bls _0801E83C + movs r0, #0 + strb r0, [r1, #0x16] + adds r2, r1, #0 + adds r2, #0x29 + strb r0, [r2] + movs r5, #0 + movs r0, #0x17 + adds r0, r0, r1 + mov sb, r0 + movs r3, #0x18 + adds r3, r3, r1 + mov r8, r3 + adds r7, r1, #4 + adds r6, r1, #5 +_0801E86C: + mov r1, sl + adds r0, r1, r5 + ldrb r0, [r0] + subs r0, #0x65 + cmp r0, #0x10 + bls _0801E890 + movs r4, #0x12 + subs r4, r4, r5 + adds r0, r6, #0 + adds r1, r7, #0 + adds r2, r4, #0 + bl sub_0801D66C + mov r0, r8 + mov r1, sb + adds r2, r4, #0 + bl sub_0801D66C +_0801E890: + movs r3, #1 + add sb, r3 + add r8, r3 + adds r7, #1 + adds r6, #1 + adds r5, #1 + cmp r5, #0x11 + bls _0801E86C + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801E8AC: .4byte gUnk_02002B54 + + thumb_func_start sub_0801E8B0 +sub_0801E8B0: @ 0x0801E8B0 + push {lr} + adds r2, r0, #0 + movs r1, #0 + ldr r3, _0801E8C4 @ =gUnk_02002B58 +_0801E8B8: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r2, r0 + bne _0801E8C8 + adds r0, r1, #0 + b _0801E8D2 + .align 2, 0 +_0801E8C4: .4byte gUnk_02002B58 +_0801E8C8: + adds r1, #1 + cmp r1, #0x11 + bls _0801E8B8 + movs r0, #1 + rsbs r0, r0, #0 +_0801E8D2: + pop {pc} + + thumb_func_start sub_0801E8D4 +sub_0801E8D4: @ 0x0801E8D4 + push {r4, r5, lr} + movs r5, #0xa +_0801E8D8: + adds r0, r5, #0 + bl sub_0801E7F4 + cmp r0, #0 + beq _0801E990 + adds r0, r5, #0 + bl sub_0801E810 + cmp r0, #0 + bne _0801E990 + ldr r1, _0801E910 @ =gUnk_080C9CBC + lsls r0, r5, #3 + adds r0, r0, r1 + ldrb r1, [r0, #4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0801E914 @ =gUnk_080FE320 + adds r2, r0, r1 + ldrh r3, [r2, #0x12] + ldrb r0, [r2, #0x10] + cmp r0, #0xa + bhi _0801E97C + lsls r0, r0, #2 + ldr r1, _0801E918 @ =_0801E91C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0801E910: .4byte gUnk_080C9CBC +_0801E914: .4byte gUnk_080FE320 +_0801E918: .4byte _0801E91C +_0801E91C: @ jump table + .4byte _0801E948 @ case 0 + .4byte _0801E94C @ case 1 + .4byte _0801E950 @ case 2 + .4byte _0801E954 @ case 3 + .4byte _0801E958 @ case 4 + .4byte _0801E95C @ case 5 + .4byte _0801E962 @ case 6 + .4byte _0801E968 @ case 7 + .4byte _0801E96E @ case 8 + .4byte _0801E972 @ case 9 + .4byte _0801E978 @ case 10 +_0801E948: + movs r4, #0 + b _0801E97C +_0801E94C: + ldrb r4, [r2, #0x11] + b _0801E97C +_0801E950: + movs r4, #0xf + b _0801E97C +_0801E954: + movs r4, #0x10 + b _0801E97C +_0801E958: + movs r4, #0x11 + b _0801E97C +_0801E95C: + movs r4, #4 + movs r3, #0x83 + b _0801E97C +_0801E962: + movs r4, #4 + movs r3, #0x84 + b _0801E97C +_0801E968: + movs r4, #4 + movs r3, #0x87 + b _0801E97C +_0801E96E: + movs r4, #4 + b _0801E97A +_0801E972: + movs r4, #4 + movs r3, #0x8b + b _0801E97C +_0801E978: + movs r4, #5 +_0801E97A: + movs r3, #0x88 +_0801E97C: + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_0807CB24 + cmp r0, #0 + beq _0801E990 + ldr r0, _0801E998 @ =gUnk_02002C8E + adds r1, r5, #0 + bl sub_0801D5BC +_0801E990: + adds r5, #1 + cmp r5, #0x64 + bls _0801E8D8 + pop {r4, r5, pc} + .align 2, 0 +_0801E998: .4byte gUnk_02002C8E + + thumb_func_start sub_0801E99C +sub_0801E99C: @ 0x0801E99C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_08002632 + mov r8, r0 + ldr r1, _0801E9E4 @ =gUnk_08001DCC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r7, [r0] + movs r0, #0x67 + bl sub_0807CA84 + cmp r0, #0 + beq _0801EA56 + ldr r1, _0801E9E8 @ =gUnk_02002A40 + ldrb r0, [r7] + ldrb r2, [r1, #8] + cmp r0, r2 + bhi _0801EA56 + ldr r2, _0801E9EC @ =0x000001C1 + adds r0, r1, r2 + add r0, r8 + ldrb r5, [r0] + subs r2, #0x80 + adds r0, r1, r2 + add r0, r8 + ldrb r6, [r0] + adds r4, r6, r7 +_0801E9D6: + cmp r5, #0xf1 + beq _0801E9F6 + cmp r5, #0xf1 + bhi _0801E9F0 + cmp r5, #0 + beq _0801E9F6 + b _0801EA10 + .align 2, 0 +_0801E9E4: .4byte gUnk_08001DCC +_0801E9E8: .4byte gUnk_02002A40 +_0801E9EC: .4byte 0x000001C1 +_0801E9F0: + cmp r5, #0xf2 + beq _0801EA0A + b _0801EA10 +_0801E9F6: + ldrb r5, [r4, #5] + cmp r5, #0 + beq _0801EA10 + cmp r5, #0xff + beq _0801EA14 + adds r0, r5, #0 + bl sub_0801E7F4 + cmp r0, #0 + beq _0801EA10 +_0801EA0A: + adds r4, #1 + adds r6, #1 + ldrb r5, [r4, #5] +_0801EA10: + cmp r5, #0xff + bne _0801EA1C +_0801EA14: + adds r0, r7, #0 + bl sub_0801EA74 + adds r5, r0, #0 +_0801EA1C: + cmp r5, #0 + beq _0801EA32 + cmp r5, #0xf2 + beq _0801E9D6 + adds r0, r5, #0 + bl sub_0801E7F4 + cmp r0, #0 + beq _0801EA34 + movs r5, #0xf1 + b _0801E9D6 +_0801EA32: + movs r5, #0xf3 +_0801EA34: + ldr r1, _0801EA5C @ =gUnk_02002A40 + ldr r2, _0801EA60 @ =0x000001C1 + adds r0, r1, r2 + add r0, r8 + strb r5, [r0] + subs r2, #0x80 + adds r0, r1, r2 + add r0, r8 + strb r6, [r0] + bl sub_08000E50 + ldrb r4, [r7, #1] + movs r1, #0x64 + bl __modsi3 + cmp r4, r0 + bhi _0801EA64 +_0801EA56: + movs r0, #0 + b _0801EA6E + .align 2, 0 +_0801EA5C: .4byte gUnk_02002A40 +_0801EA60: .4byte 0x000001C1 +_0801EA64: + subs r0, r5, #1 + cmp r0, #0x63 + bls _0801EA6C + movs r5, #0 +_0801EA6C: + adds r0, r5, #0 +_0801EA6E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0801EA74 +sub_0801EA74: @ 0x0801EA74 + push {r4, r5, r6, lr} + bl sub_08000E50 + movs r1, #0x12 + bl __modsi3 + adds r5, r0, #0 + movs r6, #0 +_0801EA84: + ldr r0, _0801EA98 @ =gUnk_080CA11C + adds r0, r5, r0 + ldrb r4, [r0] + adds r0, r4, #0 + bl sub_0801E7F4 + cmp r0, #0 + bne _0801EA9C + adds r0, r4, #0 + b _0801EAAE + .align 2, 0 +_0801EA98: .4byte gUnk_080CA11C +_0801EA9C: + adds r0, r5, #1 + movs r1, #0x12 + bl __modsi3 + adds r5, r0, #0 + adds r6, #1 + cmp r6, #0x11 + bls _0801EA84 + movs r0, #0xf2 +_0801EAAE: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0801EAB0 +sub_0801EAB0: @ 0x0801EAB0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0801EACC @ =gUnk_080CA130 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0801EACC: .4byte gUnk_080CA130 + + thumb_func_start sub_0801EAD0 +sub_0801EAD0: @ 0x0801EAD0 + push {lr} + ldr r2, _0801EAE4 @ =gUnk_080CA148 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0801EAE4: .4byte gUnk_080CA148 + + thumb_func_start sub_0801EAE8 +sub_0801EAE8: @ 0x0801EAE8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0801EAFC + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0801EAFC: + ldr r1, _0801EB08 @ =gUnk_080CA130 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_0801EB08: .4byte gUnk_080CA130 + + thumb_func_start sub_0801EB0C +sub_0801EB0C: @ 0x0801EB0C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0801EB1E + adds r0, r1, #0 + bl sub_0804A7D4 + b _0801EB28 +_0801EB1E: + adds r0, r1, #0 + movs r1, #0xf1 + movs r2, #0 + bl sub_0804A7E0 +_0801EB28: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801EB2C +sub_0801EB2C: @ 0x0801EB2C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bhi _0801EB50 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + bne _0801EB50 + adds r0, r4, #0 + bl sub_0801ECFC + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + b _0801EB60 +_0801EB50: + ldr r0, _0801EB64 @ =gUnk_080CA158 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0801EB60: + pop {r4, pc} + .align 2, 0 +_0801EB64: .4byte gUnk_080CA158 + + thumb_func_start sub_0801EB68 +sub_0801EB68: @ 0x0801EB68 + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0801EB74 +sub_0801EB74: @ 0x0801EB74 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0801EB7C +sub_0801EB7C: @ 0x0801EB7C + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_0801EB84 +sub_0801EB84: @ 0x0801EB84 + push {lr} + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #2 + bl sub_08004276 + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_3 +nullsub_3: @ 0x0801EB98 + bx lr + .align 2, 0 + + thumb_func_start sub_0801EB9C +sub_0801EB9C: @ 0x0801EB9C + push {lr} + adds r2, r0, #0 + ldrb r3, [r2, #0x10] + movs r0, #0x80 + ands r0, r3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0801EBC0 + movs r0, #0x80 + orrs r0, r3 + strb r0, [r2, #0x10] + adds r2, #0x3a + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + b _0801EBC6 +_0801EBC0: + adds r0, r2, #0 + adds r0, #0x45 + strb r1, [r0] +_0801EBC6: + pop {pc} + + thumb_func_start sub_0801EBC8 +sub_0801EBC8: @ 0x0801EBC8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _0801EBDE + bl sub_08000E50 + movs r1, #3 + ands r0, r1 +_0801EBDE: + strb r0, [r4, #0x14] + movs r0, #0x12 + strb r0, [r4, #0x1c] + adds r0, r4, #0 + bl sub_0801ECFC + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0801EBF4 +sub_0801EBF4: @ 0x0801EBF4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801EC1E + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _0801EC28 @ =gUnk_080CA170 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0801ED14 +_0801EC1E: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_0801EC28: .4byte gUnk_080CA170 + + thumb_func_start sub_0801EC2C +sub_0801EC2C: @ 0x0801EC2C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080AEF88 + adds r0, r5, #0 + bl sub_08004274 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801EC7E + adds r0, r5, #0 + bl sub_0801EDEC + cmp r0, #0 + beq _0801EC78 + ldr r1, _0801EC74 @ =gUnk_080CA174 + ldrb r0, [r5, #0xa] + adds r0, r0, r1 + ldrb r4, [r0] + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + cmp r4, r0 + bhi _0801EC78 + strb r1, [r5, #0xc] + ldrb r1, [r5, #0x14] + adds r1, #4 + adds r0, r5, #0 + bl sub_08004260 + b _0801EC7E + .align 2, 0 +_0801EC74: .4byte gUnk_080CA174 +_0801EC78: + adds r0, r5, #0 + bl sub_0801ECFC +_0801EC7E: + pop {r4, r5, pc} + + thumb_func_start sub_0801EC80 +sub_0801EC80: @ 0x0801EC80 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801ECD8 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0804A98C + adds r2, r0, #0 + cmp r2, #0 + beq _0801ECD8 + ldrb r0, [r4, #0x15] + strb r0, [r2, #0x15] + ldrb r1, [r4, #0x15] + lsrs r1, r1, #2 + ldr r0, _0801ECF0 @ =gUnk_080CA176 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldr r0, _0801ECF4 @ =0x0000FFFD + strh r0, [r2, #0x36] + ldrb r1, [r5] + movs r0, #0xfe + ands r0, r1 + strb r0, [r5] + ldr r0, _0801ECF8 @ =0x0000018D + bl sub_08004488 +_0801ECD8: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801ECEC + adds r0, r4, #0 + bl sub_0801ECFC +_0801ECEC: + pop {r4, r5, pc} + .align 2, 0 +_0801ECF0: .4byte gUnk_080CA176 +_0801ECF4: .4byte 0x0000FFFD +_0801ECF8: .4byte 0x0000018D + + thumb_func_start sub_0801ECFC +sub_0801ECFC: @ 0x0801ECFC + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #0x18 + strb r0, [r4, #0xe] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801ED14 +sub_0801ED14: @ 0x0801ED14 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #2 + beq _0801ED7E + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _0801ED4C + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _0801ED46 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + bne _0801ED46 + adds r0, r5, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0801EDC4 +_0801ED46: + bl sub_08000E50 + b _0801EDD0 +_0801ED4C: + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _0801ED78 + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _0801ED74 @ =gUnk_080CA17E + movs r1, #1 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r4 + b _0801EDD0 + .align 2, 0 +_0801ED74: .4byte gUnk_080CA17E +_0801ED78: + bl sub_08000E50 + b _0801EDD0 +_0801ED7E: + adds r0, r5, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0801EDC4 + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _0801ED9A + bl sub_08000E50 + b _0801EDD0 +_0801ED9A: + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _0801EDC4 + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _0801EDC0 @ =gUnk_080CA17E + movs r1, #1 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r4 + b _0801EDD0 + .align 2, 0 +_0801EDC0: .4byte gUnk_080CA17E +_0801EDC4: + ldr r0, _0801EDE8 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080045C4 + adds r0, #4 +_0801EDD0: + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] + ldrb r0, [r5, #0x15] + lsrs r0, r0, #3 + strb r0, [r5, #0x14] + ldrb r1, [r5, #0x14] + adds r0, r5, #0 + bl sub_08004260 + pop {r4, r5, pc} + .align 2, 0 +_0801EDE8: .4byte gUnk_020000B0 + + thumb_func_start sub_0801EDEC +sub_0801EDEC: @ 0x0801EDEC + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r1, r0, #0 + cmp r1, #0 + beq _0801EE12 + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + ldrb r4, [r4, #0x15] + cmp r0, r4 + bne _0801EE12 + movs r0, #1 + b _0801EE14 +_0801EE12: + movs r0, #0 +_0801EE14: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801EE18 +sub_0801EE18: @ 0x0801EE18 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + adds r4, r0, #0 + cmp r4, #0 + beq _0801EE9E + cmp r4, #2 + beq _0801EE40 + ldr r0, _0801EE3C @ =gUnk_080012C8 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _0801EEE0 + .align 2, 0 +_0801EE3C: .4byte gUnk_080012C8 +_0801EE40: + adds r2, r5, #0 + adds r2, #0x3a + ldrb r1, [r2] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r4, r0 + beq _0801EE9E + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _0801EE9E + cmp r0, #1 + bgt _0801EE66 + cmp r0, #0 + beq _0801EE6C + b _0801EE9E +_0801EE66: + cmp r0, #2 + beq _0801EE96 + b _0801EE9E +_0801EE6C: + ldrb r1, [r5, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801EE9E + movs r0, #6 + strb r0, [r5, #0xc] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + movs r0, #0x20 + strh r0, [r5, #0x24] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x5c + strb r0, [r1] + adds r0, r5, #0 + movs r1, #5 + bl sub_08004260 + b _0801EE9E +_0801EE96: + adds r0, r5, #0 + bl sub_080043A8 + b _0801EEE0 +_0801EE9E: + adds r0, r5, #0 + adds r0, #0x81 + strb r4, [r0] + ldr r4, _0801EED0 @ =gUnk_080CA21C + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + ldr r0, [r5, #0x68] + ldrb r0, [r0, #0xa] + cmp r0, #0x1c + bne _0801EED4 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + b _0801EEE0 + .align 2, 0 +_0801EED0: .4byte gUnk_080CA21C +_0801EED4: + ldrb r0, [r5, #0xa] + cmp r0, #2 + bne _0801EEE0 + adds r0, r5, #0 + bl sub_0801FB34 +_0801EEE0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0801EEE4 +sub_0801EEE4: @ 0x0801EEE4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0801EF0C + cmp r0, #1 + bgt _0801EEF8 + cmp r0, #0 + beq _0801EEFE + b _0801EF38 +_0801EEF8: + cmp r0, #2 + beq _0801EF28 + b _0801EF38 +_0801EEFE: + adds r0, r4, #0 + bl sub_0801F3AC + ldr r0, _0801EF08 @ =gUnk_080CA234 + b _0801EF14 + .align 2, 0 +_0801EF08: .4byte gUnk_080CA234 +_0801EF0C: + adds r0, r4, #0 + bl sub_0801F764 + ldr r0, _0801EF24 @ =gUnk_080CA25C +_0801EF14: + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0801EF38 + .align 2, 0 +_0801EF24: .4byte gUnk_080CA25C +_0801EF28: + ldr r0, _0801EF3C @ =gUnk_080CA288 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0801EF38: + pop {r4, pc} + .align 2, 0 +_0801EF3C: .4byte gUnk_080CA288 + + thumb_func_start sub_0801EF40 +sub_0801EF40: @ 0x0801EF40 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bne _0801EF68 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x8e + beq _0801EF58 + cmp r0, #0x95 + bne _0801EF68 +_0801EF58: + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + movs r0, #0 + strb r1, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] +_0801EF68: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r6, [r0] + adds r7, r0, #0 + cmp r6, #0 + beq _0801EFB0 + subs r0, #4 + ldrb r0, [r0] + cmp r0, #0x94 + bne _0801EF94 + adds r0, r4, #0 + bl sub_0801FB68 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _0801EFC0 +_0801EF94: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, r6 + beq _0801EFC4 + adds r0, r4, #0 + bl sub_0801FB68 + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _0801EFC4 +_0801EFB0: + adds r0, r4, #0 + bl sub_0804AA1C + str r6, [r4, #0x20] + adds r0, r4, #0 + movs r1, #9 + bl sub_08004260 +_0801EFC0: + adds r5, r4, #0 + adds r5, #0x80 +_0801EFC4: + ldrb r0, [r7] + strb r0, [r5] + ldr r1, _0801EFD4 @ =gUnk_080CA21C + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801EFD4: .4byte gUnk_080CA21C + + thumb_func_start sub_0801EFD8 +sub_0801EFD8: @ 0x0801EFD8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + bne _0801F000 + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0801F000 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _0801F028 +_0801F000: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #8 + beq _0801F018 + adds r0, r4, #0 + bl sub_0801FB68 + adds r0, r4, #0 + movs r1, #8 + bl sub_08004260 +_0801F018: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 +_0801F028: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F02C +sub_0801F02C: @ 0x0801F02C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #6 + bne _0801F03E + adds r0, r4, #0 + bl sub_08004274 +_0801F03E: + adds r0, r4, #0 + bl sub_08001318 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F048 +sub_0801F048: @ 0x0801F048 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0801F068 + adds r0, r4, #0 + bl sub_0804A7D4 + b _0801F082 +_0801F068: + cmp r0, #1 + bne _0801F078 + adds r0, r4, #0 + movs r1, #0xf2 + movs r2, #0 + bl sub_0804A7E0 + b _0801F082 +_0801F078: + adds r0, r4, #0 + movs r1, #0xf1 + movs r2, #0 + bl sub_0804A7E0 +_0801F082: + pop {r4, pc} + + thumb_func_start sub_0801F084 +sub_0801F084: @ 0x0801F084 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0801F09A + adds r0, r4, #0 + bl sub_08004274 +_0801F09A: + adds r0, r4, #0 + bl sub_08001242 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F0A4 +sub_0801F0A4: @ 0x0801F0A4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r0, #0x3b + strb r1, [r0] + adds r4, #0x82 + strb r2, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_4 +nullsub_4: @ 0x0801F0C4 + bx lr + .align 2, 0 + + thumb_func_start sub_0801F0C8 +sub_0801F0C8: @ 0x0801F0C8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F12A + movs r4, #3 + movs r0, #3 + strb r0, [r5, #0xc] + bl sub_08000E50 + ands r0, r4 + adds r0, #0xc + strb r0, [r5, #0xe] + bl sub_08000E50 + strb r0, [r5, #0xf] + adds r0, r5, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r5, #0x15] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0x39 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + movs r1, #2 + bl sub_08004260 +_0801F12A: + pop {r4, r5, pc} + + thumb_func_start sub_0801F12C +sub_0801F12C: @ 0x0801F12C + push {r4, lr} + adds r4, r0, #0 + bl sub_0801FBD0 + cmp r0, #0 + beq _0801F140 + adds r0, r4, #0 + bl sub_0801F328 + b _0801F1AC +_0801F140: + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0801F158 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] +_0801F158: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F1AC + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x38 + bl sub_08049F64 + cmp r0, #0 + beq _0801F18A + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801FBE4 + b _0801F1AC +_0801F18A: + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x48 + bl sub_08049F64 + cmp r0, #0 + beq _0801F1A6 + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + adds r0, #0xc + strb r0, [r4, #0xe] + b _0801F1AC +_0801F1A6: + adds r0, r4, #0 + bl sub_0801F328 +_0801F1AC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F1B0 +sub_0801F1B0: @ 0x0801F1B0 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0801F1FA + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801F1DE + movs r0, #1 + eors r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5a + strb r0, [r1] + adds r0, #0xd1 + bl sub_08004488 +_0801F1DE: + adds r0, r4, #0 + bl sub_080AEFE0 + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0801F200 + adds r0, r4, #0 + bl sub_08004274 + b _0801F200 +_0801F1FA: + adds r0, r4, #0 + bl sub_08004274 +_0801F200: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F226 + adds r0, r4, #0 + bl sub_0801FBD0 + cmp r0, #0 + beq _0801F220 + adds r0, r4, #0 + bl sub_0801F328 + b _0801F226 +_0801F220: + adds r0, r4, #0 + bl sub_0801F340 +_0801F226: + pop {r4, pc} + + thumb_func_start sub_0801F228 +sub_0801F228: @ 0x0801F228 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F246 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] +_0801F246: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F250 +sub_0801F250: @ 0x0801F250 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F26C + adds r0, r4, #0 + bl sub_0801F360 +_0801F26C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F270 +sub_0801F270: @ 0x0801F270 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0801F28C + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] +_0801F28C: + adds r0, r4, #0 + bl sub_080AF160 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0801FBD0 + cmp r0, #0 + bne _0801F2CA + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F2CA + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + bne _0801F2C6 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _0801F2CA +_0801F2C6: + movs r0, #8 + strb r0, [r4, #0xe] +_0801F2CA: + pop {r4, pc} + + thumb_func_start sub_0801F2CC +sub_0801F2CC: @ 0x0801F2CC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F2F6 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_0801F2F6: + pop {r4, pc} + + thumb_func_start sub_0801F2F8 +sub_0801F2F8: @ 0x0801F2F8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F324 + adds r0, r4, #0 + bl sub_0801F340 + adds r0, r4, #0 + bl sub_0804AA1C +_0801F324: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F328 +sub_0801F328: @ 0x0801F328 + push {lr} + movs r1, #6 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #5 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801F340 +sub_0801F340: @ 0x0801F340 + push {lr} + movs r1, #5 + strb r1, [r0, #0xc] + movs r1, #0x3c + strb r1, [r0, #0xe] + movs r1, #0x20 + strh r1, [r0, #0x24] + adds r2, r0, #0 + adds r2, #0x3f + movs r1, #0x5c + strb r1, [r2] + movs r1, #2 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801F360 +sub_0801F360: @ 0x0801F360 + push {r4, lr} + adds r4, r0, #0 + movs r0, #7 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #0xb4 + strb r0, [r4, #0xe] + bl sub_08000E50 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F3AC +sub_0801F3AC: @ 0x0801F3AC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #9 + beq _0801F426 + cmp r0, #0 + beq _0801F426 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0801F408 + adds r5, r4, #0 + adds r5, #0x82 + ldrb r0, [r5] + cmp r0, #0 + bne _0801F3DE + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x48 + bl sub_08049F64 + cmp r0, #0 + beq _0801F400 +_0801F3DE: + ldrb r2, [r4, #0xc] + cmp r2, #1 + bne _0801F426 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r2, [r5] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0801F426 +_0801F400: + ldrb r0, [r4, #0xc] + cmp r0, #3 + bne _0801F426 + b _0801F40E +_0801F408: + ldrb r0, [r4, #0xc] + cmp r0, #3 + bne _0801F416 +_0801F40E: + adds r0, r4, #0 + bl sub_0801F328 + b _0801F426 +_0801F416: + cmp r0, #7 + bne _0801F426 + movs r0, #8 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #7 + bl sub_08004260 +_0801F426: + pop {r4, r5, pc} + + thumb_func_start sub_0801F428 +sub_0801F428: @ 0x0801F428 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0804A720 + movs r4, #0 + movs r0, #1 + strb r0, [r5, #0xc] + bl sub_08000E50 + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r0, #0x3b + strb r1, [r0] + adds r0, #2 + strb r4, [r0] + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0801F488 + movs r0, #3 + strb r0, [r5, #0xc] + movs r0, #0x1e + strb r0, [r5, #0xf] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r0, r5, #0 + movs r1, #2 + bl sub_08004260 +_0801F488: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0801F48C +sub_0801F48C: @ 0x0801F48C + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0801F494 +sub_0801F494: @ 0x0801F494 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F4E8 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0x39 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_0801F4E8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F4EC +sub_0801F4EC: @ 0x0801F4EC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F504 + movs r0, #4 + strb r0, [r4, #0xc] +_0801F504: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F508 +sub_0801F508: @ 0x0801F508 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0801FBD0 + cmp r0, #0 + beq _0801F51C + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0 + b _0801F55C +_0801F51C: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + adds r5, r0, #0 + ands r5, r1 + movs r0, #7 + ands r5, r0 + cmp r5, #0 + bne _0801F566 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x38 + bl sub_08049F64 + cmp r0, #0 + beq _0801F566 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0801F556 + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801FBE4 + b _0801F580 +_0801F556: + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0x78 +_0801F55C: + strb r0, [r1] + adds r0, r4, #0 + bl sub_0801F730 + b _0801F580 +_0801F566: + cmp r5, #4 + bne _0801F574 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] +_0801F574: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 +_0801F580: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0801F584 +sub_0801F584: @ 0x0801F584 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0801F5CE + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801F5B2 + movs r0, #1 + eors r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5b + strb r0, [r1] + adds r0, #0xd0 + bl sub_08004488 +_0801F5B2: + adds r0, r4, #0 + bl sub_080AEFE0 + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0801F5D4 + adds r0, r4, #0 + bl sub_08004274 + b _0801F5D4 +_0801F5CE: + adds r0, r4, #0 + bl sub_08004274 +_0801F5D4: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F618 + adds r0, r4, #0 + bl sub_0801FBD0 + cmp r0, #0 + beq _0801F5FC + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0801F730 + b _0801F618 +_0801F5FC: + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xf] + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5c + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_0801F618: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F61C +sub_0801F61C: @ 0x0801F61C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xf] + subs r0, #1 + strb r0, [r1, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F630 + movs r0, #4 + strb r0, [r1, #0xc] +_0801F630: + adds r0, r1, #0 + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0801F638 +sub_0801F638: @ 0x0801F638 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F684 + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0801F684: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F688 +sub_0801F688: @ 0x0801F688 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x83 + ldrb r0, [r5] + cmp r0, #0 + beq _0801F69A + subs r0, #1 + strb r0, [r5] +_0801F69A: + adds r0, r4, #0 + bl sub_0801FBD0 + cmp r0, #0 + bne _0801F6AA + ldrb r0, [r5] + cmp r0, #0 + beq _0801F6C2 +_0801F6AA: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AF160 + adds r0, r4, #0 + bl sub_08004274 + b _0801F6C8 +_0801F6C2: + adds r0, r4, #0 + bl sub_0801F748 +_0801F6C8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0801F6CC +sub_0801F6CC: @ 0x0801F6CC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F6F6 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_0801F6F6: + pop {r4, pc} + + thumb_func_start sub_0801F6F8 +sub_0801F6F8: @ 0x0801F6F8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F72E + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0804AA1C + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_0801F72E: + pop {r4, pc} + + thumb_func_start sub_0801F730 +sub_0801F730: @ 0x0801F730 + push {lr} + movs r1, #7 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #5 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801F748 +sub_0801F748: @ 0x0801F748 + push {lr} + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #6 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + movs r1, #4 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801F764 +sub_0801F764: @ 0x0801F764 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0xa + beq _0801F7D6 + cmp r0, #0 + beq _0801F7D6 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0801F7B8 + ldrb r6, [r4, #0xc] + cmp r6, #1 + bne _0801F7D6 + adds r5, r4, #0 + adds r5, #0x82 + ldrb r0, [r5] + cmp r0, #0 + bne _0801F79C + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x48 + bl sub_08049F64 + cmp r0, #0 + beq _0801F7D6 +_0801F79C: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r6, [r5] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0801F7D6 +_0801F7B8: + ldrb r0, [r4, #0xc] + cmp r0, #4 + bne _0801F7C6 + adds r0, r4, #0 + bl sub_0801F730 + b _0801F7D6 +_0801F7C6: + cmp r0, #8 + bne _0801F7D6 + movs r0, #9 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #7 + bl sub_08004260 +_0801F7D6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0801F7D8 +sub_0801F7D8: @ 0x0801F7D8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r5, #0 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r0, #0x3b + strb r1, [r0] + adds r4, #0x82 + strb r5, [r4] + pop {r4, r5, pc} + + thumb_func_start sub_0801F7FC +sub_0801F7FC: @ 0x0801F7FC + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0801F83E + adds r5, r4, #0 + adds r5, #0x82 + ldrb r0, [r5] + cmp r0, #0 + bne _0801F822 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x48 + bl sub_08049F64 + cmp r0, #0 + beq _0801F83E +_0801F822: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r5] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0801F83E: + pop {r4, r5, pc} + + thumb_func_start sub_0801F840 +sub_0801F840: @ 0x0801F840 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F880 + adds r0, r4, #0 + bl sub_0801FB14 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0x39 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] +_0801F880: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F884 +sub_0801F884: @ 0x0801F884 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0801F898 + subs r0, #1 + strb r0, [r4, #0xf] + b _0801F8BC +_0801F898: + adds r0, r4, #0 + movs r1, #0x1b + bl sub_0804A9FC + adds r1, r0, #0 + cmp r1, #0 + beq _0801F8BC + movs r0, #0x40 + strb r0, [r1, #0xb] + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0xa5 + strb r0, [r1] + adds r0, #0xee + bl sub_08004488 +_0801F8BC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801F8C0 +sub_0801F8C0: @ 0x0801F8C0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0801FBD0 + cmp r0, #0 + beq _0801F8D4 + adds r0, r4, #0 + bl sub_0801FAE0 + b _0801F938 +_0801F8D4: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0801F8E8 + adds r0, r4, #0 + bl sub_0801F730 + b _0801F938 +_0801F8E8: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + adds r5, r0, #0 + ands r5, r1 + movs r0, #7 + ands r5, r0 + cmp r5, #0 + bne _0801F91C + ldr r0, _0801F918 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x38 + bl sub_08049F1C + cmp r0, #0 + beq _0801F91C + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801FBE4 + b _0801F938 + .align 2, 0 +_0801F918: .4byte gUnk_020000B0 +_0801F91C: + cmp r5, #4 + bne _0801F92C + ldr r0, _0801F93C @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] +_0801F92C: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 +_0801F938: + pop {r4, r5, pc} + .align 2, 0 +_0801F93C: .4byte gUnk_020000B0 + + thumb_func_start sub_0801F940 +sub_0801F940: @ 0x0801F940 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0801F988 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801F966 + movs r0, #1 + eors r0, r1 + strb r0, [r2] + ldr r0, _0801F984 @ =0x0000012B + bl sub_08004488 +_0801F966: + adds r0, r4, #0 + bl sub_080AEFE0 + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0801F98E + adds r0, r4, #0 + bl sub_08004274 + b _0801F98E + .align 2, 0 +_0801F984: .4byte 0x0000012B +_0801F988: + adds r0, r4, #0 + bl sub_08004274 +_0801F98E: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801F9C2 + adds r0, r4, #0 + bl sub_0801FBD0 + cmp r0, #0 + beq _0801F9AE + adds r0, r4, #0 + bl sub_0801FAE0 + b _0801F9C2 +_0801F9AE: + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xf] + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_0801F9C2: + pop {r4, pc} + + thumb_func_start sub_0801F9C4 +sub_0801F9C4: @ 0x0801F9C4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xf] + subs r0, #1 + strb r0, [r1, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801F9D8 + movs r0, #4 + strb r0, [r1, #0xc] +_0801F9D8: + adds r0, r1, #0 + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0801F9E0 +sub_0801F9E0: @ 0x0801F9E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801FA2C + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0801FA2C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801FA30 +sub_0801FA30: @ 0x0801FA30 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801FBD0 + cmp r0, #0 + beq _0801FA54 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AF160 + adds r0, r4, #0 + bl sub_08004274 + b _0801FA74 +_0801FA54: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0801FA6E + movs r0, #9 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #7 + bl sub_08004260 + b _0801FA74 +_0801FA6E: + adds r0, r4, #0 + bl sub_0801FAF8 +_0801FA74: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801FA78 +sub_0801FA78: @ 0x0801FA78 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801FAA8 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0804AA1C +_0801FAA8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801FAAC +sub_0801FAAC: @ 0x0801FAAC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801FADC + adds r0, r4, #0 + bl sub_0801FB14 + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0804AA1C +_0801FADC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801FAE0 +sub_0801FAE0: @ 0x0801FAE0 + push {lr} + movs r1, #7 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #5 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801FAF8 +sub_0801FAF8: @ 0x0801FAF8 + push {lr} + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #6 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + movs r1, #4 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801FB14 +sub_0801FB14: @ 0x0801FB14 + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0801FB34 +sub_0801FB34: @ 0x0801FB34 + push {r4, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x68] + cmp r3, #0 + beq _0801FB62 + ldr r2, _0801FB64 @ =gUnk_080CA2B4 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + adds r0, r4, #0 + adds r1, r3, #0 + movs r3, #1 + bl sub_0806FA90 + ldr r1, [r4, #0x68] + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_0801FB62: + pop {r4, pc} + .align 2, 0 +_0801FB64: .4byte gUnk_080CA2B4 + + thumb_func_start sub_0801FB68 +sub_0801FB68: @ 0x0801FB68 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0801FB88 + cmp r0, #1 + bgt _0801FB7C + cmp r0, #0 + beq _0801FB82 + b _0801FBC8 +_0801FB7C: + cmp r0, #2 + beq _0801FBB6 + b _0801FBC8 +_0801FB82: + movs r0, #9 + strb r0, [r4, #0xc] + b _0801FBC8 +_0801FB88: + movs r0, #0xa + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + b _0801FBC8 +_0801FBB6: + movs r0, #0xa + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5c + strb r0, [r1] + adds r0, r4, #0 + bl sub_0804AA1C +_0801FBC8: + movs r0, #0 + str r0, [r4, #0x20] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801FBD0 +sub_0801FBD0: @ 0x0801FBD0 + push {lr} + bl sub_080002B8 + cmp r0, #0x10 + beq _0801FBDE + movs r0, #0 + b _0801FBE0 +_0801FBDE: + movs r0, #1 +_0801FBE0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801FBE4 +sub_0801FBE4: @ 0x0801FBE4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0801FC08 +sub_0801FC08: @ 0x0801FC08 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0801FC24 @ =gUnk_080CA49C + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0801FC24: .4byte gUnk_080CA49C + + thumb_func_start sub_0801FC28 +sub_0801FC28: @ 0x0801FC28 + push {lr} + ldr r2, _0801FC3C @ =gUnk_080CA4B4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0801FC3C: .4byte gUnk_080CA4B4 + + thumb_func_start sub_0801FC40 +sub_0801FC40: @ 0x0801FC40 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _0801FC5C + ldrb r0, [r4, #0xc] + cmp r0, #3 + bne _0801FC6E + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #1 + strh r0, [r1] + b _0801FC6E +_0801FC5C: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0801FC6E + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0801FC6E: + ldr r1, _0801FC78 @ =gUnk_080CA49C + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_0801FC78: .4byte gUnk_080CA49C + + thumb_func_start sub_0801FC7C +sub_0801FC7C: @ 0x0801FC7C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0801FC8E + adds r0, r1, #0 + bl sub_0804A7D4 + b _0801FC98 +_0801FC8E: + adds r0, r1, #0 + movs r1, #0xf1 + movs r2, #0 + bl sub_0804A7E0 +_0801FC98: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0801FC9C +sub_0801FC9C: @ 0x0801FC9C + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + strb r0, [r4, #0xe] + pop {r4, pc} + + thumb_func_start sub_0801FCB0 +sub_0801FCB0: @ 0x0801FCB0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0801FD28 + bl sub_08000E50 + movs r1, #0x1f + ands r1, r0 + adds r0, r5, #0 + bl sub_0801FE68 + cmp r0, #0 + beq _0801FD1C + movs r0, #2 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + ldr r0, _0801FD14 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080045C4 + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _0801FD18 @ =gUnk_080CA4C8 + movs r1, #1 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r4 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_08016A04 + b _0801FD28 + .align 2, 0 +_0801FD14: .4byte gUnk_020000B0 +_0801FD18: .4byte gUnk_080CA4C8 +_0801FD1C: + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + adds r0, #8 + strb r0, [r5, #0xe] +_0801FD28: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0801FD2C +sub_0801FD2C: @ 0x0801FD2C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801FD66 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0801FD54 + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #0xb4 + b _0801FD5A +_0801FD54: + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #0x6e +_0801FD5A: + strh r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0801FD7C +_0801FD66: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0801FD7C + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_0801FD7C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801FD80 +sub_0801FD80: @ 0x0801FD80 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801FED4 + adds r0, r4, #0 + bl sub_08004274 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0801FDB2 + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0801FDB2: + pop {r4, pc} + + thumb_func_start sub_0801FDB4 +sub_0801FDB4: @ 0x0801FDB4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801FED4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0801FDE0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xf0 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0xf4 + ands r0, r1 + strb r0, [r4, #0x18] +_0801FDE0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0801FDE4 +sub_0801FDE4: @ 0x0801FDE4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r7, _0801FE04 @ =gUnk_020000B0 + ldr r0, [r7] + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080002D4 + cmp r0, #0 + beq _0801FE34 + b _0801FE5C + .align 2, 0 +_0801FE04: .4byte gUnk_020000B0 +_0801FE08: + movs r0, #0x10 + rsbs r0, r0, #0 + adds r1, r0, #0 + ands r4, r1 + adds r0, r4, #0 + adds r0, #8 + strh r0, [r6, #0x2e] + ands r5, r1 + adds r0, r5, #0 + adds r0, #8 + strh r0, [r6, #0x32] + ldr r0, _0801FE30 @ =gUnk_020000B0 + ldr r0, [r0] + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r6, #0 + adds r0, #0x38 + strb r1, [r0] + movs r0, #1 + b _0801FE5E + .align 2, 0 +_0801FE30: .4byte gUnk_020000B0 +_0801FE34: + ldr r0, [r7] + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080002BC + adds r3, r0, #0 + ldr r1, _0801FE60 @ =gUnk_080CA4CA + ldrh r0, [r1] + ldr r2, _0801FE64 @ =0x0000FFFF + cmp r0, r2 + beq _0801FE5C +_0801FE4E: + ldrh r0, [r1] + adds r1, #2 + cmp r0, r3 + beq _0801FE08 + ldrh r0, [r1] + cmp r0, r2 + bne _0801FE4E +_0801FE5C: + movs r0, #0 +_0801FE5E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801FE60: .4byte gUnk_080CA4CA +_0801FE64: .4byte 0x0000FFFF + + thumb_func_start sub_0801FE68 +sub_0801FE68: @ 0x0801FE68 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r6, r1, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0801FE82 +_0801FE7E: + movs r0, #0 + b _0801FEC4 +_0801FE82: + ldr r0, _0801FECC @ =gUnk_020000B0 + ldr r0, [r0] + ldr r5, [r0, #0x2c] + ldr r4, [r0, #0x30] + ldr r1, _0801FED0 @ =gUnk_080C9160 + lsls r0, r6, #4 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + lsls r0, r0, #0xb + mov sb, r0 + lsls r0, r6, #4 + adds r0, #0x80 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r0, r0, #0xb + mov r8, r0 + movs r6, #0 +_0801FEA8: + add r5, sb + mov r2, r8 + subs r4, r4, r2 + asrs r1, r5, #0x10 + asrs r2, r4, #0x10 + adds r0, r7, #0 + bl sub_0801FDE4 + cmp r0, #0 + beq _0801FE7E + adds r6, #1 + cmp r6, #7 + bls _0801FEA8 + movs r0, #1 +_0801FEC4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0801FECC: .4byte gUnk_020000B0 +_0801FED0: .4byte gUnk_080C9160 + + thumb_func_start sub_0801FED4 +sub_0801FED4: @ 0x0801FED4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0801FEEA + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #1 + strh r0, [r1] +_0801FEEA: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0xf + adds r1, r2, #0 + ands r1, r0 + lsls r1, r1, #5 + strh r1, [r4, #0x24] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0801FF28 + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0801FF4E + ldr r0, _0801FF24 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0800132C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + b _0801FF4E + .align 2, 0 +_0801FF24: .4byte gUnk_020000B0 +_0801FF28: + adds r0, r1, #0 + adds r0, #0x40 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0801FF4E + ldr r0, _0801FF58 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0800132C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_0801FF4E: + adds r0, r4, #0 + bl sub_080AEF88 + pop {r4, pc} + .align 2, 0 +_0801FF58: .4byte gUnk_020000B0 + + thumb_func_start sub_0801FF5C +sub_0801FF5C: @ 0x0801FF5C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0801FF84 + ldr r1, _0801FF80 @ =gUnk_080CA570 + adds r0, r4, #0 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + b _0801FF94 + .align 2, 0 +_0801FF80: .4byte gUnk_080CA570 +_0801FF84: + ldr r0, _0801FF98 @ =gUnk_080CA588 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0801FF94: + pop {r4, pc} + .align 2, 0 +_0801FF98: .4byte gUnk_080CA588 + + thumb_func_start sub_0801FF9C +sub_0801FF9C: @ 0x0801FF9C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0801FFD4 @ =gUnk_080CA590 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0801FFD2 + ldr r2, _0801FFD8 @ =gUnk_080CA5B8 + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + movs r0, #0x30 + ands r0, r1 + lsrs r0, r0, #4 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x36] +_0801FFD2: + pop {r4, pc} + .align 2, 0 +_0801FFD4: .4byte gUnk_080CA590 +_0801FFD8: .4byte gUnk_080CA5B8 + + thumb_func_start sub_0801FFDC +sub_0801FFDC: @ 0x0801FFDC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x82 + ldrb r0, [r6] + cmp r0, #0 + beq _08020068 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + cmp r1, #0x94 + bne _08020018 + movs r0, #3 + movs r1, #1 + bl sub_0804AA60 + adds r5, r0, #0 + cmp r5, #0 + beq _08020010 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + ldrh r0, [r5, #0x36] + subs r0, #8 + strh r0, [r5, #0x36] +_08020010: + movs r0, #0 + strb r0, [r6] + movs r0, #2 + b _0802001E +_08020018: + cmp r1, #0x9b + bne _08020042 + movs r0, #1 +_0802001E: + strb r0, [r4, #0x14] + movs r0, #5 + strb r0, [r4, #0xc] + movs r1, #0 + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r2, r4, #0 + adds r2, #0x3d + movs r0, #0xe2 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x81 + strb r1, [r0] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + b _08020068 +_08020042: + cmp r1, #0x80 + bne _08020068 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _08020068 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + strh r1, [r4, #0x24] + movs r0, #0xff + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0x78 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08004274 +_08020068: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802007A + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802007A: + ldr r1, _08020084 @ =gUnk_080CA570 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08020084: .4byte gUnk_080CA570 + + thumb_func_start sub_08020088 +sub_08020088: @ 0x08020088 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bhi _0802009C + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _080200AC +_0802009C: + ldr r0, _080200B0 @ =gUnk_080CA5BC + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_080200AC: + pop {r4, pc} + .align 2, 0 +_080200B0: .4byte gUnk_080CA5BC + + thumb_func_start sub_080200B4 +sub_080200B4: @ 0x080200B4 + push {lr} + adds r2, r0, #0 + movs r1, #1 + strb r1, [r2, #0xd] + movs r0, #0x3c + strb r0, [r2, #0x1d] + ldrb r3, [r2, #0x14] + cmp r3, #0 + bne _080200E2 + strb r1, [r2, #0x14] + movs r0, #5 + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x71 + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x81 + strb r3, [r0] + ldrb r1, [r2, #0x14] + adds r0, r2, #0 + bl sub_08004260 +_080200E2: + pop {pc} + + thumb_func_start sub_080200E4 +sub_080200E4: @ 0x080200E4 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_080200EC +sub_080200EC: @ 0x080200EC + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_080200F4 +sub_080200F4: @ 0x080200F4 + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + bx lr + .align 2, 0 + + thumb_func_start nullsub_5 +nullsub_5: @ 0x08020100 + bx lr + .align 2, 0 + + thumb_func_start sub_08020104 +sub_08020104: @ 0x08020104 + push {lr} + adds r2, r0, #0 + ldrb r3, [r2, #0x10] + movs r0, #0x80 + ands r0, r3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _08020128 + movs r0, #0x80 + orrs r0, r3 + strb r0, [r2, #0x10] + adds r2, #0x3a + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + b _0802012E +_08020128: + adds r0, r2, #0 + adds r0, #0x45 + strb r1, [r0] +_0802012E: + pop {pc} + + thumb_func_start sub_08020130 +sub_08020130: @ 0x08020130 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r5, #1 + strb r5, [r4, #0xc] + movs r0, #0x10 + strb r0, [r4, #0xe] + bl sub_08000E50 + strb r0, [r4, #0xf] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #0x12 + strb r0, [r4, #0x1c] + bl sub_08000E50 + ands r0, r5 + movs r1, #0xfe + cmp r0, #0 + beq _08020162 + movs r1, #2 +_08020162: + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + movs r0, #0 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08020180 +sub_08020180: @ 0x08020180 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x83 + ldrb r0, [r5] + cmp r0, #0 + beq _08020192 + subs r0, #1 + strb r0, [r5] +_08020192: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080201D4 + ldrb r0, [r5] + cmp r0, #0 + bne _080201D4 + ldrb r1, [r4, #0xf] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _080201D4 + ldr r0, _0802021C @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x30 + bl sub_08049F1C + cmp r0, #0 + beq _080201D4 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0xa0 + strh r0, [r4, #0x24] +_080201D4: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802020C + movs r0, #0x10 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08020604 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + bne _0802020C + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + movs r2, #0xfe + cmp r1, #0 + beq _08020206 + movs r2, #2 +_08020206: + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] +_0802020C: + adds r0, r4, #0 + bl sub_080AEFE0 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + .align 2, 0 +_0802021C: .4byte gUnk_020000B0 + + thumb_func_start sub_08020220 +sub_08020220: @ 0x08020220 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08020284 + ldrb r0, [r5, #0xe] + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + beq _0802024C + lsrs r0, r0, #0x1c + movs r1, #3 + ands r0, r1 + movs r1, #4 + subs r1, r1, r0 + adds r0, r5, #0 + bl sub_08004276 + b _08020292 +_0802024C: + movs r0, #3 + strb r0, [r5, #0xc] + movs r0, #0x78 + strb r0, [r5, #0xe] + movs r0, #0xc0 + strh r0, [r5, #0x24] + ldr r0, _0802027C @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080045C4 + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _08020280 @ =gUnk_080CA5D4 + movs r1, #1 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r4 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] + b _0802028A + .align 2, 0 +_0802027C: .4byte gUnk_020000B0 +_08020280: .4byte gUnk_080CA5D4 +_08020284: + adds r0, r5, #0 + bl sub_080205F8 +_0802028A: + adds r0, r5, #0 + movs r1, #4 + bl sub_08004276 +_08020292: + pop {r4, r5, pc} + + thumb_func_start sub_08020294 +sub_08020294: @ 0x08020294 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080202F8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080202B4 + adds r0, r4, #0 + bl sub_080205F8 +_080202B4: + ldrb r1, [r4, #0xe] + cmp r1, #0x3c + bls _080202E6 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080202C8 + ldrh r0, [r4, #0x24] + adds r0, #4 + strh r0, [r4, #0x24] +_080202C8: + ldr r0, _080202F0 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _080202E6 + ldr r0, _080202F4 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_080202E6: + adds r0, r4, #0 + bl sub_080AEFE0 + b _080202FE + .align 2, 0 +_080202F0: .4byte gUnk_030010A0 +_080202F4: .4byte gUnk_020000B0 +_080202F8: + adds r0, r4, #0 + bl sub_080205F8 +_080202FE: + adds r0, r4, #0 + movs r1, #4 + bl sub_08004276 + pop {r4, pc} + + thumb_func_start sub_08020308 +sub_08020308: @ 0x08020308 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _08020332 + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0x78 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08004274 + b _0802034E +_08020332: + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _08020340 + ldrh r0, [r4, #0x24] + subs r0, #8 + strh r0, [r4, #0x24] +_08020340: + adds r0, r4, #0 + bl sub_080AEFE0 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004276 +_0802034E: + pop {r4, pc} + + thumb_func_start sub_08020350 +sub_08020350: @ 0x08020350 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #2 + beq _08020398 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + bne _0802037C + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0xf0 + strb r0, [r4, #0xe] + movs r0, #0xa + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x71 + strb r0, [r1] +_0802037C: + ldrb r0, [r4, #0x15] + cmp r0, #0xff + bne _0802038A + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r4, #0x15] +_0802038A: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + b _080203BE +_08020398: + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080203BE + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x96 + strb r0, [r4, #0xe] + movs r0, #0xa + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x71 + strb r0, [r1] +_080203BE: + pop {r4, pc} + + thumb_func_start sub_080203C0 +sub_080203C0: @ 0x080203C0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080203DC + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080203DC + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_080203DC: + adds r0, r4, #0 + bl sub_0800442E + cmp r0, #0 + bne _080203F2 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020418 +_080203F2: + movs r0, #9 + strb r0, [r4, #0xc] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0804AA1C + movs r0, #5 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 +_08020418: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802041C +sub_0802041C: @ 0x0802041C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08020438 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020438 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08020438: + adds r0, r4, #0 + bl sub_0800442E + cmp r0, #0 + bne _0802044E + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020466 +_0802044E: + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0xf0 + strb r0, [r4, #0xe] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0804AA1C +_08020466: + pop {r4, pc} + + thumb_func_start sub_08020468 +sub_08020468: @ 0x08020468 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080204A6 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080204A2 + movs r0, #9 + strb r0, [r4, #0xc] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _080204A6 +_080204A2: + movs r0, #1 + strb r0, [r4, #0xe] +_080204A6: + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080204C4 + movs r0, #0xfd + ands r0, r1 + strb r0, [r5] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_080204C4: + ldrb r1, [r5] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080204D6 + adds r0, r4, #0 + bl sub_0800442E + b _080204DC +_080204D6: + adds r0, r4, #0 + bl sub_080AEF88 +_080204DC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080204E0 +sub_080204E0: @ 0x080204E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802051A + movs r2, #0 + movs r1, #1 + strb r1, [r4, #0xc] + adds r3, r4, #0 + adds r3, #0x3f + movs r0, #0x70 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x82 + strb r1, [r0] + subs r0, #1 + strb r1, [r0] + strb r2, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0802053A +_0802051A: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802052A + adds r0, r4, #0 + bl sub_0800442E + b _0802053A +_0802052A: + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_080AEF88 +_0802053A: + pop {r4, pc} + + thumb_func_start sub_0802053C +sub_0802053C: @ 0x0802053C + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xf0 + strb r0, [r4, #0xe] + movs r0, #0x28 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x18] + movs r2, #4 + rsbs r2, r2, #0 + ands r2, r0 + orrs r2, r1 + ldrb r3, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + movs r3, #0x40 + orrs r0, r3 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r3 + strb r1, [r4, #0x1b] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r2, r0 + strb r2, [r4, #0x18] + movs r0, #0x20 + strh r0, [r4, #0x24] + bl sub_08000E50 + movs r1, #0x10 + ands r0, r1 + adds r0, #8 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08020590 +sub_08020590: @ 0x08020590 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + movs r5, #0xff + lsls r0, r1, #0x18 + cmp r0, #0 + bne _080205AE + adds r0, r4, #0 + bl sub_0805E7BC + b _080205F2 +_080205AE: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3b + bhi _080205C8 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_080205C8: + ldr r0, [r4, #0x34] + ldr r1, _080205F4 @ =0xFFFF4000 + adds r0, r0, r1 + str r0, [r4, #0x34] + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _080205F2 + movs r0, #0x28 + strb r0, [r4, #0xf] + bl sub_08000E50 + movs r1, #0x10 + ands r0, r1 + adds r0, #8 + strb r0, [r4, #0x15] +_080205F2: + pop {r4, r5, pc} + .align 2, 0 +_080205F4: .4byte 0xFFFF4000 + + thumb_func_start sub_080205F8 +sub_080205F8: @ 0x080205F8 + movs r1, #4 + strb r1, [r0, #0xc] + movs r1, #0x3c + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_08020604 +sub_08020604: @ 0x08020604 + push {r4, lr} + adds r4, r0, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08020624 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _08020624 + adds r0, r4, #0 + bl sub_08049EE4 + b _08020632 +_08020624: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x1f + ands r0, r1 +_08020632: + strb r0, [r4, #0x15] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020638 +sub_08020638: @ 0x08020638 + push {lr} + ldr r1, _08020644 @ =gUnk_080CA66C + bl sub_0800129E + pop {pc} + .align 2, 0 +_08020644: .4byte gUnk_080CA66C + + thumb_func_start sub_08020648 +sub_08020648: @ 0x08020648 + push {r4, lr} + adds r4, r0, #0 + bl sub_08020AD0 + ldr r1, _08020664 @ =gUnk_080CA684 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08020664: .4byte gUnk_080CA684 + + thumb_func_start sub_08020668 +sub_08020668: @ 0x08020668 + push {r4, r5, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x3f + ldrb r0, [r2] + cmp r0, #0x22 + bne _080206A2 + adds r1, r4, #0 + adds r1, #0x45 + ldrb r0, [r1] + cmp r0, #0xff + beq _080206A2 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #0xff + strb r0, [r4, #0x15] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + movs r0, #0x23 + strb r0, [r2] + ldrb r1, [r4, #0x14] + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 +_080206A2: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0x80 + beq _080206D0 + ldrb r0, [r4, #0xc] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080206D0 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xb4 + strb r0, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_08004260 +_080206D0: + ldrb r0, [r5] + cmp r0, #0x93 + bne _080206DC + adds r0, r4, #0 + bl sub_08020648 +_080206DC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080206E0 +sub_080206E0: @ 0x080206E0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08020AD0 + cmp r0, #0 + beq _080206F6 + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + b _08020730 +_080206F6: + adds r0, r4, #0 + bl sub_08020B6C + cmp r0, #0 + beq _0802072A + adds r1, r4, #0 + adds r1, #0x42 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r5, r4, #0 + adds r5, #0x3e + ldrb r1, [r5] + adds r0, r4, #0 + movs r2, #0xa + bl sub_080AE58C + adds r0, r4, #0 + adds r0, #0x46 + ldrh r1, [r0] + ldrb r2, [r5] + adds r0, r4, #0 + movs r3, #0xa + bl sub_080AE7E8 + b _08020730 +_0802072A: + adds r0, r4, #0 + bl sub_08001324 +_08020730: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08020734 +sub_08020734: @ 0x08020734 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bhi _08020764 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + bne _08020764 + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xff + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_08004260 + b _08020774 +_08020764: + ldr r0, _08020778 @ =gUnk_080CA6A4 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08020774: + pop {r4, pc} + .align 2, 0 +_08020778: .4byte gUnk_080CA6A4 + + thumb_func_start sub_0802077C +sub_0802077C: @ 0x0802077C + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_08020788 +sub_08020788: @ 0x08020788 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_08020790 +sub_08020790: @ 0x08020790 + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_08020798 +sub_08020798: @ 0x08020798 + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + bx lr + .align 2, 0 + + thumb_func_start nullsub_6 +nullsub_6: @ 0x080207A4 + bx lr + .align 2, 0 + + thumb_func_start sub_080207A8 +sub_080207A8: @ 0x080207A8 + push {lr} + movs r3, #4 + movs r1, #4 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + movs r1, #0x29 + adds r1, r1, r0 + mov ip, r1 + ldrb r2, [r1] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r3 + mov r2, ip + strb r1, [r2] + adds r3, r0, #0 + adds r3, #0x3a + ldrb r2, [r3] + movs r1, #0xfb + ands r1, r2 + strb r1, [r3] + ldrb r1, [r0, #0x15] + movs r2, #0x10 + eors r1, r2 + strb r1, [r0, #0x15] + movs r1, #0xc0 + lsls r1, r1, #9 + str r1, [r0, #0x20] + movs r1, #0x80 + strh r1, [r0, #0x24] + ldrb r1, [r0, #0x14] + adds r1, #0x10 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_080207F4 +sub_080207F4: @ 0x080207F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r1, #0 + movs r0, #0x30 + strb r0, [r4, #0x16] + movs r0, #0x12 + strb r0, [r4, #0x1c] + adds r0, r4, #0 + adds r0, #0x84 + strb r1, [r0] + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08020A30 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020820 +sub_08020820: @ 0x08020820 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0802084A + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0802084A + strb r5, [r4, #0xe] +_0802084A: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08020872 + movs r0, #0xef + ands r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020872 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] +_08020872: + pop {r4, r5, pc} + + thumb_func_start sub_08020874 +sub_08020874: @ 0x08020874 + push {lr} + ldr r2, _08020888 @ =gUnk_080CA6BC + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08020888: .4byte gUnk_080CA6BC + + thumb_func_start sub_0802088C +sub_0802088C: @ 0x0802088C + movs r1, #1 + strb r1, [r0, #0xd] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + ldr r1, _080208B0 @ =gLinkEntity + ldrb r1, [r1, #0x14] + adds r2, r0, #0 + adds r2, #0x85 + strb r1, [r2] + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 +_080208B0: .4byte gLinkEntity + + thumb_func_start sub_080208B4 +sub_080208B4: @ 0x080208B4 + push {r4, r5, lr} + adds r2, r0, #0 + adds r4, r2, #0 + adds r4, #0x85 + ldrb r0, [r4] + ldr r5, _080208EC @ =gLinkEntity + ldrb r1, [r5, #0x14] + subs r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r0, #0 + beq _080208E6 + ldrb r0, [r2, #0x14] + adds r0, r0, r1 + movs r1, #3 + ands r0, r1 + strb r0, [r2, #0x14] + ldrb r1, [r2, #0x14] + adds r1, #0x10 + adds r0, r2, #0 + bl sub_08004260 +_080208E6: + ldrb r0, [r5, #0x14] + strb r0, [r4] + pop {r4, r5, pc} + .align 2, 0 +_080208EC: .4byte gLinkEntity + + thumb_func_start sub_080208F0 +sub_080208F0: @ 0x080208F0 + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x18 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_08020904 +sub_08020904: @ 0x08020904 + push {lr} + movs r1, #4 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + movs r1, #0xff + strb r1, [r0, #0x15] + ldrb r1, [r0, #0x14] + adds r1, #0x10 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_08020920 +sub_08020920: @ 0x08020920 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020936 + adds r0, r1, #0 + bl sub_08020A30 +_08020936: + pop {pc} + + thumb_func_start sub_08020938 +sub_08020938: @ 0x08020938 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r5, #0x80 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _08020950 + adds r0, r4, #0 + bl sub_08004274 +_08020950: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + bne _08020980 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020978 + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x14] + adds r1, #0xc + adds r0, r4, #0 + bl sub_08004260 +_08020978: + adds r0, r4, #0 + bl sub_08078930 + b _0802099C +_08020980: + cmp r0, #1 + bne _0802098C + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 +_0802098C: + ldrb r1, [r4, #0x15] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _0802099C + adds r0, r4, #0 + bl sub_080AEFE0 +_0802099C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080209A0 +sub_080209A0: @ 0x080209A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080209E2 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x22 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08020A30 + ldrb r0, [r4, #0x14] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + b _080209F0 +_080209E2: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080209F0 + adds r0, r4, #0 + bl sub_08078930 +_080209F0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080209F4 +sub_080209F4: @ 0x080209F4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xe0 + lsls r1, r1, #5 + bl sub_08003FC4 + cmp r0, #0 + bne _08020A14 + movs r1, #7 + movs r0, #7 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + orrs r0, r1 + strb r0, [r2] +_08020A14: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + bne _08020A24 + adds r0, r4, #0 + bl sub_08004274 +_08020A24: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020A28 +sub_08020A28: @ 0x08020A28 + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_08020A30 +sub_08020A30: @ 0x08020A30 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x84 + ldrb r0, [r5] + cmp r0, #1 + bhi _08020A68 + bl sub_08000E50 + ldr r2, _08020A64 @ =gUnk_080CA6CC + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + cmp r0, #0 + bne _08020A68 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _08020A7A + .align 2, 0 +_08020A64: .4byte gUnk_080CA6CC +_08020A68: + movs r0, #0 + movs r1, #1 + strb r1, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x84 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08020A7C +_08020A7A: + pop {r4, r5, pc} + + thumb_func_start sub_08020A7C +sub_08020A7C: @ 0x08020A7C + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_08000E50 + ldrb r5, [r6, #0x15] + ldr r4, _08020ACC @ =gUnk_080CA6D4 + movs r1, #3 + bl __modsi3 + adds r0, r0, r4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r5, r5, r0 + movs r4, #0x18 + ands r5, r4 + adds r0, r6, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08020ABA + adds r0, r6, #0 + bl sub_08049EE4 + adds r0, #4 + ands r0, r4 + movs r1, #0x10 + eors r1, r5 + cmp r1, r0 + bne _08020ABA + adds r5, r1, #0 +_08020ABA: + strb r5, [r6, #0x15] + lsrs r0, r5, #3 + strb r0, [r6, #0x14] + ldrb r1, [r6, #0x14] + adds r0, r6, #0 + bl sub_08004260 + pop {r4, r5, r6, pc} + .align 2, 0 +_08020ACC: .4byte gUnk_080CA6D4 + + thumb_func_start sub_08020AD0 +sub_08020AD0: @ 0x08020AD0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08020B6C + cmp r0, #0 + beq _08020B68 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08020B68 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r3, _08020B5C @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + adds r6, r4, #0 + adds r6, #0x38 + ldrb r1, [r6] + adds r0, r5, #0 + bl sub_080002B0 + lsls r0, r0, #0x10 + ldr r1, _08020B60 @ =0xFF8F0000 + adds r0, r0, r1 + lsrs r0, r0, #0x10 + cmp r0, #1 + bhi _08020B68 + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrh r2, [r4, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + adds r0, #8 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + ands r1, r0 + adds r1, #0xd + strh r1, [r4, #0x32] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldrb r1, [r4, #0x14] + adds r1, #0x14 + adds r0, r4, #0 + bl sub_08004260 + ldr r0, _08020B64 @ =0x00004034 + ldrb r2, [r6] + adds r1, r5, #0 + bl sub_0800015E + movs r0, #1 + b _08020B6A + .align 2, 0 +_08020B5C: .4byte gUnk_03000BF0 +_08020B60: .4byte 0xFF8F0000 +_08020B64: .4byte 0x00004034 +_08020B68: + movs r0, #0 +_08020B6A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08020B6C +sub_08020B6C: @ 0x08020B6C + push {lr} + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #0x10 + cmp r0, #3 + bls _08020B7C + movs r0, #0 + b _08020B7E +_08020B7C: + movs r0, #1 +_08020B7E: + pop {pc} + + thumb_func_start sub_08020B80 +sub_08020B80: @ 0x08020B80 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08020B9C @ =gUnk_080CAA98 + bl sub_0800129E + movs r3, #0x16 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08020B9C: .4byte gUnk_080CAA98 + + thumb_func_start sub_08020BA0 +sub_08020BA0: @ 0x08020BA0 + push {lr} + ldr r2, _08020BB4 @ =gUnk_080CAAB0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08020BB4: .4byte gUnk_080CAAB0 + + thumb_func_start sub_08020BB8 +sub_08020BB8: @ 0x08020BB8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r2, #0x7f + adds r1, r2, #0 + ands r1, r0 + cmp r1, #0x1c + beq _08020BE0 + cmp r1, #0x1c + bgt _08020BD4 + cmp r1, #0x16 + beq _08020C24 + b _08020D32 +_08020BD4: + cmp r1, #0x4b + beq _08020C68 + cmp r1, #0x4c + bne _08020BDE + b _08020CF0 +_08020BDE: + b _08020D32 +_08020BE0: + movs r0, #0xb + strb r0, [r4, #0xc] + ldr r1, _08020C20 @ =gUnk_080CAB0C + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x51 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + movs r2, #0x10 + eors r2, r0 + adds r2, #4 + movs r0, #0x18 + ands r2, r0 + asrs r2, r2, #3 + adds r0, r4, #0 + movs r1, #8 + bl sub_08021218 + adds r0, r4, #0 + bl sub_08021588 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + b _08020CE2 + .align 2, 0 +_08020C20: .4byte gUnk_080CAB0C +_08020C24: + movs r0, #0xb + strb r0, [r4, #0xc] + ldr r1, _08020C64 @ =gUnk_080CAB10 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x51 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + movs r2, #0x10 + eors r2, r0 + adds r2, #4 + movs r0, #0x18 + ands r2, r0 + asrs r2, r2, #3 + adds r0, r4, #0 + movs r1, #8 + bl sub_08021218 + adds r0, r4, #0 + bl sub_08021588 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + b _08020CE2 + .align 2, 0 +_08020C64: .4byte gUnk_080CAB10 +_08020C68: + ldrb r0, [r4, #0xc] + adds r6, r4, #0 + adds r6, #0x45 + adds r5, r4, #0 + adds r5, #0x78 + cmp r0, #0xd + beq _08020D58 + cmp r0, #0xf + beq _08020D58 + cmp r0, #0x13 + beq _08020D58 + cmp r0, #0x12 + beq _08020D58 + adds r0, r4, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #4 + blt _08020CC0 + cmp r0, #6 + ble _08020CAC + cmp r0, #0xc + bgt _08020CC0 + cmp r0, #8 + blt _08020CC0 + ldr r0, _08020CA8 @ =gUnk_080CAB04 + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + ldrb r0, [r1] + adds r1, r4, #0 + adds r1, #0x7a + b _08020CC6 + .align 2, 0 +_08020CA8: .4byte gUnk_080CAB04 +_08020CAC: + ldr r0, _08020CBC @ =gUnk_080CAB00 + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + ldrb r0, [r1] + adds r1, r4, #0 + adds r1, #0x7a + b _08020CC6 + .align 2, 0 +_08020CBC: .4byte gUnk_080CAB00 +_08020CC0: + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0 +_08020CC6: + strb r0, [r1] + movs r0, #0xa + strb r0, [r4, #0xc] + ldrb r2, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0xb + bl sub_08021218 + ldr r0, _08020CEC @ =0x0000015D + bl sub_08004488 + adds r0, r4, #0 + bl sub_08021588 +_08020CE2: + adds r6, r4, #0 + adds r6, #0x45 + adds r5, r4, #0 + adds r5, #0x78 + b _08020D58 + .align 2, 0 +_08020CEC: .4byte 0x0000015D +_08020CF0: + ldrb r0, [r4, #0xc] + adds r6, r4, #0 + adds r6, #0x45 + adds r5, r4, #0 + adds r5, #0x78 + cmp r0, #0xf + bne _08020D58 + movs r1, #0xff + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _08020D0E + adds r0, #0x41 + ldrb r0, [r0] + adds r1, r2, #0 + ands r1, r0 +_08020D0E: + cmp r1, #2 + bne _08020D28 + ldr r0, _08020D24 @ =gUnk_080CAB08 + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_080213D0 + b _08020D58 + .align 2, 0 +_08020D24: .4byte gUnk_080CAB08 +_08020D28: + adds r0, r4, #0 + movs r1, #0 + bl sub_080213D0 + b _08020D58 +_08020D32: + adds r2, r4, #0 + adds r2, #0x45 + adds r0, r4, #0 + adds r0, #0x78 + ldrb r1, [r2] + adds r6, r2, #0 + adds r5, r0, #0 + ldrb r0, [r5] + cmp r1, r0 + beq _08020D58 + adds r0, r4, #0 + bl sub_08021588 + adds r0, r4, #0 + bl sub_08021390 + adds r0, r4, #0 + bl sub_0804AA1C +_08020D58: + ldrb r0, [r6] + strb r0, [r5] + ldr r1, _08020D68 @ =gUnk_080CAA98 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08020D68: .4byte gUnk_080CAA98 + + thumb_func_start nullsub_129 +nullsub_129: @ 0x08020D6C + bx lr + .align 2, 0 + + thumb_func_start sub_08020D70 +sub_08020D70: @ 0x08020D70 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x75 + strb r1, [r0] + subs r0, #0x30 + ldrb r1, [r0] + adds r0, #0x33 + strb r1, [r0] + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0 + movs r2, #2 + bl sub_08021218 + pop {r4, pc} + + thumb_func_start sub_08020D9C +sub_08020D9C: @ 0x08020D9C + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08020DB0 + adds r0, r4, #0 + bl sub_080213F0 +_08020DB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020DB4 +sub_08020DB4: @ 0x08020DB4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08020DD0 + adds r0, r4, #0 + bl sub_08021390 +_08020DD0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020DD4 +sub_08020DD4: @ 0x08020DD4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080214FC + cmp r0, #0 + beq _08020DE8 + adds r0, r4, #0 + bl sub_080213F0 + b _08020E26 +_08020DE8: + adds r1, r4, #0 + adds r1, #0x76 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08020E08 + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r2, [r4, #0x14] + adds r0, r4, #0 + movs r1, #5 + bl sub_08021218 + b _08020E26 +_08020E08: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08020E1A + adds r0, r4, #0 + bl sub_08021540 +_08020E1A: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_080042B8 +_08020E26: + pop {r4, pc} + + thumb_func_start sub_08020E28 +sub_08020E28: @ 0x08020E28 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08020E44 + adds r0, r4, #0 + bl sub_080213B0 +_08020E44: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020E48 +sub_08020E48: @ 0x08020E48 + push {r4, lr} + adds r4, r0, #0 + bl sub_080214FC + cmp r0, #0 + beq _08020E5C + adds r0, r4, #0 + bl sub_080213F0 + b _08020E76 +_08020E5C: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08020E76 + adds r0, r4, #0 + bl sub_080213B0 +_08020E76: + pop {r4, pc} + + thumb_func_start sub_08020E78 +sub_08020E78: @ 0x08020E78 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08020E94 + adds r0, r4, #0 + bl sub_08021390 +_08020E94: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020E98 +sub_08020E98: @ 0x08020E98 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + movs r2, #0x38 + bl sub_08049F64 + cmp r0, #0 + beq _08020EF6 + ldr r5, _08020EDC @ =gUnk_020000B0 + ldr r1, [r5] + adds r0, r4, #0 + bl sub_0802169C + cmp r0, #0 + bne _08020ECA + ldr r0, [r5] + adds r1, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _08020EE0 +_08020ECA: + movs r0, #8 + strb r0, [r4, #0xc] + ldrb r2, [r4, #0x14] + adds r0, r4, #0 + movs r1, #7 + bl sub_08021218 + b _08020F26 + .align 2, 0 +_08020EDC: .4byte gUnk_020000B0 +_08020EE0: + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0802124C + adds r0, r4, #0 + bl sub_08021644 + b _08020F26 +_08020EF6: + ldr r0, _08020F08 @ =gUnk_020000B0 + ldr r1, [r0] + cmp r1, #0 + bne _08020F0C + adds r0, r4, #0 + bl sub_08021414 + b _08020F26 + .align 2, 0 +_08020F08: .4byte gUnk_020000B0 +_08020F0C: + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_0802124C + adds r0, r4, #0 + bl sub_08021644 +_08020F26: + pop {r4, r5, pc} + + thumb_func_start sub_08020F28 +sub_08020F28: @ 0x08020F28 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08020F44 + adds r0, r4, #0 + bl sub_08021400 +_08020F44: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08020F48 +sub_08020F48: @ 0x08020F48 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + movs r2, #0x48 + bl sub_08049F64 + cmp r0, #0 + beq _08020FA4 + ldr r5, _08020F98 @ =gUnk_020000B0 + ldr r1, [r5] + adds r0, r4, #0 + bl sub_08021664 + cmp r0, #0 + beq _08020F9C + ldr r1, [r5] + adds r0, r4, #0 + movs r2, #9 + bl sub_0804A044 + adds r2, r0, #0 + cmp r2, #0xff + beq _08020F9C + movs r0, #0xe + strb r0, [r4, #0xc] + lsrs r2, r2, #3 + adds r0, r4, #0 + movs r1, #0xd + bl sub_08021218 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A98C + cmp r0, #0 + beq _08020FAA + str r4, [r0, #0x50] + str r0, [r4, #0x54] + b _08020FAA + .align 2, 0 +_08020F98: .4byte gUnk_020000B0 +_08020F9C: + adds r0, r4, #0 + bl sub_08021424 + b _08020FAA +_08020FA4: + adds r0, r4, #0 + bl sub_08021390 +_08020FAA: + pop {r4, r5, pc} + + thumb_func_start sub_08020FAC +sub_08020FAC: @ 0x08020FAC + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08020FDC + adds r1, r2, #0 + adds r1, #0x7a + ldrb r0, [r1] + cmp r0, #0 + beq _08020FCC + subs r0, #1 + strb r0, [r1] + b _08020FE2 +_08020FCC: + adds r1, r2, #0 + adds r1, #0x3d + movs r0, #0xf8 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08021390 + b _08020FE2 +_08020FDC: + adds r0, r2, #0 + bl sub_080042B8 +_08020FE2: + pop {pc} + + thumb_func_start sub_08020FE4 +sub_08020FE4: @ 0x08020FE4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802100C + movs r0, #0xc + strb r0, [r4, #0xc] + ldrb r2, [r4, #0x14] + adds r0, r4, #0 + movs r1, #9 + bl sub_08021218 + adds r0, r4, #0 + bl sub_0804AA1C +_0802100C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08021010 +sub_08021010: @ 0x08021010 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08021034 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x56 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080213F0 +_08021034: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08021038 +sub_08021038: @ 0x08021038 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _08021066 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _08021066 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0804A98C + cmp r0, #0 + beq _0802105E + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_0802105E: + movs r0, #0x87 + lsls r0, r0, #1 + bl sub_08004488 +_08021066: + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08021090 + adds r0, r4, #0 + bl sub_08021588 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + cmp r0, #0 + beq _08021088 + subs r0, #1 + b _080210A2 +_08021088: + adds r0, r4, #0 + bl sub_08021390 + b _080210A4 +_08021090: + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r5] + cmp r0, #4 + bne _080210A4 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x51 +_080210A2: + strb r0, [r1] +_080210A4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080210A8 +sub_080210A8: @ 0x080210A8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080210D4 + movs r0, #0 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08021588 + ldr r0, _080210D0 @ =0x0000015D + bl sub_08004488 + b _080210E2 + .align 2, 0 +_080210D0: .4byte 0x0000015D +_080210D4: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080210E2 + adds r0, r4, #0 + bl sub_08021390 +_080210E2: + pop {r4, pc} + + thumb_func_start sub_080210E4 +sub_080210E4: @ 0x080210E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802111A + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0 + movs r2, #2 + bl sub_0804A98C + cmp r0, #0 + beq _08021112 + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_08021112: + movs r0, #0x87 + lsls r0, r0, #1 + bl sub_08004488 +_0802111A: + adds r0, r4, #0 + bl sub_08021644 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08021154 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + beq _0802114A + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _08021154 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08021154 +_0802114A: + adds r0, r4, #0 + movs r1, #0 + bl sub_080213D0 + b _0802116C +_08021154: + adds r1, r4, #0 + adds r1, #0x76 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802116C + adds r0, r4, #0 + movs r1, #0 + bl sub_080213D0 +_0802116C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08021170 +sub_08021170: @ 0x08021170 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08021198 + adds r1, r2, #0 + adds r1, #0x7b + ldrb r0, [r1] + cmp r0, #0 + beq _08021190 + subs r0, #1 + strb r0, [r1] + b _0802119E +_08021190: + adds r0, r2, #0 + bl sub_08021390 + b _0802119E +_08021198: + adds r0, r2, #0 + bl sub_080042B8 +_0802119E: + pop {pc} + + thumb_func_start sub_080211A0 +sub_080211A0: @ 0x080211A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080214FC + cmp r0, #0 + beq _080211B4 + adds r0, r4, #0 + bl sub_08021390 + b _080211CE +_080211B4: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080211CE + adds r0, r4, #0 + bl sub_080213B0 +_080211CE: + pop {r4, pc} + + thumb_func_start sub_080211D0 +sub_080211D0: @ 0x080211D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0802159C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080211F2 + adds r0, r4, #0 + bl sub_08021390 +_080211F2: + pop {r4, pc} + + thumb_func_start sub_080211F4 +sub_080211F4: @ 0x080211F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08021600 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08021216 + adds r0, r4, #0 + bl sub_08021390 +_08021216: + pop {r4, pc} + + thumb_func_start sub_08021218 +sub_08021218: @ 0x08021218 + push {r4, lr} + adds r3, r0, #0 + adds r4, r3, #0 + adds r4, #0x74 + ldrb r0, [r4] + cmp r0, r1 + bne _0802122C + ldrb r0, [r3, #0x14] + cmp r0, r2 + beq _08021244 +_0802122C: + strb r2, [r3, #0x14] + strb r1, [r4] + lsls r0, r1, #1 + ldr r1, _08021248 @ =gUnk_080CAB14 + adds r0, r0, r1 + ldrb r1, [r0, #1] + strh r1, [r3, #0x12] + ldrb r1, [r0] + adds r1, r1, r2 + adds r0, r3, #0 + bl sub_080042AC +_08021244: + pop {r4, pc} + .align 2, 0 +_08021248: .4byte gUnk_080CAB14 + + thumb_func_start sub_0802124C +sub_0802124C: @ 0x0802124C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x14] + ldrb r1, [r4, #0x15] + bl sub_08021274 + adds r2, r0, #0 + cmp r2, #0xff + beq _0802126C + adds r0, r4, #0 + adds r0, #0x74 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08021218 + b _08021272 +_0802126C: + adds r0, r4, #0 + bl sub_080042B8 +_08021272: + pop {r4, pc} + + thumb_func_start sub_08021274 +sub_08021274: @ 0x08021274 + push {lr} + adds r2, r0, #0 + movs r0, #7 + ands r0, r1 + subs r0, #3 + cmp r0, #2 + bhi _0802129A + movs r3, #0x18 + adds r0, r1, #0 + ands r0, r3 + lsrs r0, r0, #3 + cmp r0, r2 + beq _080212AA + adds r0, r1, #0 + adds r0, #8 + ands r0, r3 + lsrs r0, r0, #3 + cmp r0, r2 + beq _080212AA +_0802129A: + adds r0, r1, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r1, r0, #3 + cmp r2, r1 + beq _080212AA + adds r0, r1, #0 + b _080212AC +_080212AA: + movs r0, #0xff +_080212AC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080212B0 +sub_080212B0: @ 0x080212B0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r1, r5, #0 + adds r1, #0x75 + ldrb r0, [r1] + cmp r0, #1 + beq _080212D0 + cmp r0, #2 + beq _080212DC + movs r0, #1 + strb r0, [r1] + ldr r4, _080212CC @ =gUnk_080CAB3A + b _080212E2 + .align 2, 0 +_080212CC: .4byte gUnk_080CAB3A +_080212D0: + movs r0, #2 + strb r0, [r1] + ldr r4, _080212D8 @ =gUnk_080CAB42 + b _080212E2 + .align 2, 0 +_080212D8: .4byte gUnk_080CAB42 +_080212DC: + movs r0, #0 + strb r0, [r1] + ldr r4, _0802131C @ =gUnk_080CAB4A +_080212E2: + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + adds r1, r1, r4 + ldrb r2, [r1] + ldrb r0, [r5, #0xa] + cmp r0, #1 + bhi _08021306 + cmp r2, #2 + bne _08021306 + ldr r4, _08021320 @ =gUnk_080CAB52 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + adds r1, r1, r4 + ldrb r2, [r1] +_08021306: + movs r0, #0 + str r0, [r5, #0x54] + ldr r1, _08021324 @ =gUnk_080CAB58 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0802131C: .4byte gUnk_080CAB4A +_08021320: .4byte gUnk_080CAB52 +_08021324: .4byte gUnk_080CAB58 + + thumb_func_start sub_08021328 +sub_08021328: @ 0x08021328 + push {lr} + movs r1, #0xd + strb r1, [r0, #0xc] + ldr r2, _08021348 @ =gUnk_080CAB68 + ldrb r1, [r0, #0xa] + adds r1, r1, r2 + ldrb r2, [r1] + adds r1, r0, #0 + adds r1, #0x7c + strb r2, [r1] + ldrb r2, [r0, #0x14] + movs r1, #0xc + bl sub_08021218 + pop {pc} + .align 2, 0 +_08021348: .4byte gUnk_080CAB68 + + thumb_func_start sub_0802134C +sub_0802134C: @ 0x0802134C + push {lr} + movs r1, #0xf + strb r1, [r0, #0xc] + ldrb r1, [r0, #0x14] + lsls r1, r1, #3 + strb r1, [r0, #0x15] + movs r1, #0x80 + lsls r1, r1, #2 + strh r1, [r0, #0x24] + adds r2, r0, #0 + adds r2, #0x76 + movs r1, #0x78 + strh r1, [r2] + ldrb r2, [r0, #0x14] + movs r1, #0xe + bl sub_08021218 + pop {pc} + + thumb_func_start sub_08021370 +sub_08021370: @ 0x08021370 + push {lr} + movs r1, #0x12 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x14] + movs r1, #0x10 + bl sub_08021218 + pop {pc} + + thumb_func_start sub_08021380 +sub_08021380: @ 0x08021380 + push {lr} + movs r1, #0x13 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x14] + movs r1, #0x11 + bl sub_08021218 + pop {pc} + + thumb_func_start sub_08021390 +sub_08021390: @ 0x08021390 + push {lr} + movs r1, #7 + strb r1, [r0, #0xc] + movs r1, #0x80 + lsls r1, r1, #2 + strh r1, [r0, #0x24] + adds r2, r0, #0 + adds r2, #0x3f + movs r1, #0x56 + strb r1, [r2] + ldrb r2, [r0, #0x14] + movs r1, #6 + bl sub_08021218 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080213B0 +sub_080213B0: @ 0x080213B0 + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #1 + strb r1, [r0, #0xe] + movs r1, #0xc0 + strh r1, [r0, #0x24] + adds r2, r0, #0 + adds r2, #0x76 + movs r1, #0xf0 + strh r1, [r2] + ldrb r2, [r0, #0x14] + movs r1, #3 + bl sub_08021218 + pop {pc} + + thumb_func_start sub_080213D0 +sub_080213D0: @ 0x080213D0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x10 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x7b + strb r1, [r0] + ldrb r2, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0xf + bl sub_08021218 + adds r0, r4, #0 + bl sub_08021588 + pop {r4, pc} + + thumb_func_start sub_080213F0 +sub_080213F0: @ 0x080213F0 + push {lr} + movs r1, #6 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x14] + movs r1, #1 + bl sub_08021218 + pop {pc} + + thumb_func_start sub_08021400 +sub_08021400: @ 0x08021400 + push {lr} + movs r1, #9 + strb r1, [r0, #0xc] + movs r1, #0x60 + strh r1, [r0, #0x24] + ldrb r2, [r0, #0x14] + movs r1, #0xa + bl sub_08021218 + pop {pc} + + thumb_func_start sub_08021414 +sub_08021414: @ 0x08021414 + push {lr} + movs r1, #0x11 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x14] + movs r1, #5 + bl sub_08021218 + pop {pc} + + thumb_func_start sub_08021424 +sub_08021424: @ 0x08021424 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08021450 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080045C4 + adds r1, r0, #0 + ldrb r0, [r5, #0x14] + bl sub_08021274 + adds r4, r0, #0 + cmp r4, #0xff + beq _08021454 + adds r0, r5, #0 + adds r0, #0x74 + ldrb r1, [r0] + adds r0, r5, #0 + adds r2, r4, #0 + bl sub_08021218 + b _08021456 + .align 2, 0 +_08021450: .4byte gUnk_020000B0 +_08021454: + ldrb r4, [r5, #0x14] +_08021456: + cmp r4, #1 + beq _08021490 + cmp r4, #1 + blo _08021478 + cmp r4, #2 + beq _080214A8 + ldr r0, _08021474 @ =gUnk_020000B0 + ldr r1, [r0] + movs r2, #0x2e + ldrsh r0, [r1, r2] + adds r2, r0, #0 + adds r2, #0x24 + movs r4, #0x32 + ldrsh r3, [r1, r4] + b _080214B8 + .align 2, 0 +_08021474: .4byte gUnk_020000B0 +_08021478: + ldr r0, _0802148C @ =gUnk_020000B0 + ldr r0, [r0] + movs r1, #0x2e + ldrsh r2, [r0, r1] + movs r4, #0x32 + ldrsh r0, [r0, r4] + adds r3, r0, #0 + adds r3, #0x2c + b _080214B8 + .align 2, 0 +_0802148C: .4byte gUnk_020000B0 +_08021490: + ldr r0, _080214A4 @ =gUnk_020000B0 + ldr r1, [r0] + movs r2, #0x2e + ldrsh r0, [r1, r2] + adds r2, r0, #0 + subs r2, #0x24 + movs r4, #0x32 + ldrsh r3, [r1, r4] + b _080214B8 + .align 2, 0 +_080214A4: .4byte gUnk_020000B0 +_080214A8: + ldr r0, _080214F0 @ =gUnk_020000B0 + ldr r0, [r0] + movs r1, #0x2e + ldrsh r2, [r0, r1] + movs r4, #0x32 + ldrsh r0, [r0, r4] + adds r3, r0, #0 + subs r3, #0x1d +_080214B8: + movs r1, #0x2e + ldrsh r0, [r5, r1] + subs r0, r2, r0 + adds r0, #3 + cmp r0, #6 + bhi _080214D0 + movs r4, #0x32 + ldrsh r0, [r5, r4] + subs r0, r3, r0 + adds r0, #2 + cmp r0, #4 + bls _080214E8 +_080214D0: + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r4, #0x32 + ldrsh r1, [r5, r4] + bl sub_080045D4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _080214F4 +_080214E8: + adds r0, r5, #0 + bl sub_080212B0 + b _080214FA + .align 2, 0 +_080214F0: .4byte gUnk_020000B0 +_080214F4: + adds r0, r5, #0 + bl sub_080042B8 +_080214FA: + pop {r4, r5, pc} + + thumb_func_start sub_080214FC +sub_080214FC: @ 0x080214FC + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802153C + ldr r0, _08021538 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r2, r0, #0 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x1f + ands r0, r1 + subs r0, r2, r0 + subs r0, #2 + cmp r0, #4 + bhi _0802153C + adds r0, r2, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + movs r0, #1 + b _0802153E + .align 2, 0 +_08021538: .4byte gUnk_020000B0 +_0802153C: + movs r0, #0 +_0802153E: + pop {r4, pc} + + thumb_func_start sub_08021540 +sub_08021540: @ 0x08021540 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08021566 + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _08021566 + adds r0, r4, #0 + bl sub_08049EE4 + adds r1, r0, #4 + b _08021568 +_08021566: + lsrs r1, r5, #0x10 +_08021568: + movs r0, #0x18 + ands r1, r0 + strb r1, [r4, #0x15] + ldrb r0, [r4, #0x14] + bl sub_08021274 + adds r2, r0, #0 + cmp r2, #0xff + beq _08021582 + adds r0, r4, #0 + movs r1, #3 + bl sub_08021218 +_08021582: + movs r0, #0x1e + strb r0, [r4, #0xe] + pop {r4, r5, pc} + + thumb_func_start sub_08021588 +sub_08021588: @ 0x08021588 + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #0x54] + cmp r1, #0 + beq _08021598 + movs r0, #0 + str r0, [r1, #0x50] + str r0, [r2, #0x54] +_08021598: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802159C +sub_0802159C: @ 0x0802159C + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + adds r0, r1, #0 + cmp r0, #1 + bne _080215D4 + movs r0, #0 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x51 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + movs r2, #3 + bl sub_0804A98C + cmp r0, #0 + beq _080215CA + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_080215CA: + movs r0, #0x8b + lsls r0, r0, #1 + bl sub_08004488 + b _080215F8 +_080215D4: + cmp r0, #2 + bne _080215E4 + movs r0, #0 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08021588 + b _080215F8 +_080215E4: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080215F8 + movs r0, #0xdf + ands r0, r1 + strb r0, [r2] + ldr r0, _080215FC @ =0x00000115 + bl sub_08004488 +_080215F8: + pop {r4, pc} + .align 2, 0 +_080215FC: .4byte 0x00000115 + + thumb_func_start sub_08021600 +sub_08021600: @ 0x08021600 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x5a + ldrb r0, [r1] + cmp r0, #1 + bne _08021634 + movs r0, #0 + strb r0, [r1] + subs r1, #0x1b + movs r0, #0x51 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + movs r2, #4 + bl sub_0804A98C + cmp r0, #0 + beq _0802162A + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_0802162A: + movs r0, #0x87 + lsls r0, r0, #1 + bl sub_08004488 + b _08021642 +_08021634: + cmp r0, #2 + bne _08021642 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08021588 +_08021642: + pop {r4, pc} + + thumb_func_start sub_08021644 +sub_08021644: @ 0x08021644 + push {lr} + adds r2, r0, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08021660 + movs r0, #0xdf + ands r0, r1 + strb r0, [r2] + movs r0, #0x7d + bl sub_08004488 +_08021660: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08021664 +sub_08021664: @ 0x08021664 + push {lr} + ldrb r2, [r0, #0x14] + cmp r2, #1 + beq _08021690 + cmp r2, #1 + bgt _08021676 + cmp r2, #0 + beq _08021680 + b _08021698 +_08021676: + cmp r2, #2 + beq _08021688 + cmp r2, #3 + beq _08021690 + b _08021698 +_08021680: + movs r2, #0x22 + bl sub_08049F1C + b _0802169A +_08021688: + movs r2, #0x13 + bl sub_08049F1C + b _0802169A +_08021690: + movs r2, #0x1a + bl sub_08049F1C + b _0802169A +_08021698: + movs r0, #0 +_0802169A: + pop {pc} + + thumb_func_start sub_0802169C +sub_0802169C: @ 0x0802169C + push {lr} + ldrb r2, [r0, #0x14] + cmp r2, #1 + beq _080216C0 + cmp r2, #1 + bgt _080216AE + cmp r2, #0 + beq _080216B8 + b _080216CE +_080216AE: + cmp r2, #2 + beq _080216BC + cmp r2, #3 + beq _080216C0 + b _080216CE +_080216B8: + movs r2, #0x2c + b _080216C2 +_080216BC: + movs r2, #0x1d + b _080216C2 +_080216C0: + movs r2, #0x24 +_080216C2: + bl sub_08049F1C + cmp r0, #0 + bne _080216CE + movs r0, #1 + b _080216D0 +_080216CE: + movs r0, #0 +_080216D0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080216D4 +sub_080216D4: @ 0x080216D4 + push {lr} + ldr r1, _080216E0 @ =gUnk_080CB570 + bl sub_0800129E + pop {pc} + .align 2, 0 +_080216E0: .4byte gUnk_080CB570 + + thumb_func_start sub_080216E4 +sub_080216E4: @ 0x080216E4 + push {lr} + ldr r2, _080216F8 @ =gUnk_080CB588 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080216F8: .4byte gUnk_080CB588 + + thumb_func_start sub_080216FC +sub_080216FC: @ 0x080216FC + push {lr} + adds r2, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802171A + adds r0, r2, #0 + movs r1, #3 + movs r2, #0x80 + bl CreateFX + bl sub_0805E780 +_0802171A: + pop {pc} + + thumb_func_start nullsub_7 +nullsub_7: @ 0x0802171C + bx lr + .align 2, 0 + + thumb_func_start sub_08021720 +sub_08021720: @ 0x08021720 + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + ldrb r1, [r0, #0xa] + strb r1, [r0, #0x1e] + ldrb r2, [r0, #0x19] + movs r1, #0x3f + ands r1, r2 + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0, #0x19] + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #3 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start nullsub_08 +nullsub_08: @ 0x08021754 + bx lr + .align 2, 0 + + thumb_func_start sub_08021758 +sub_08021758: @ 0x08021758 + push {lr} + ldr r1, _08021764 @ =gUnk_080CB590 + bl sub_0800129E + pop {pc} + .align 2, 0 +_08021764: .4byte gUnk_080CB590 + + thumb_func_start sub_08021768 +sub_08021768: @ 0x08021768 + push {lr} + ldr r2, _0802177C @ =gUnk_080CB5A8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802177C: .4byte gUnk_080CB5A8 + + thumb_func_start sub_08021780 +sub_08021780: @ 0x08021780 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + beq _08021792 + cmp r0, #0x93 + beq _080217F4 + b _080217FA +_08021792: + ldr r0, _080217A4 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x18 + bne _080217A8 + adds r0, r4, #0 + bl sub_08021768 + b _080217FA + .align 2, 0 +_080217A4: .4byte gUnk_03003F80 +_080217A8: + movs r1, #0 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0xb4 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080217EC @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA6C + ldr r0, _080217F0 @ =0x0000FFFF + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x87 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _080217FA + .align 2, 0 +_080217EC: .4byte gLinkEntity +_080217F0: .4byte 0x0000FFFF +_080217F4: + adds r0, r4, #0 + bl sub_08021768 +_080217FA: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + bne _08021808 + subs r0, #3 + strb r1, [r0] +_08021808: + ldr r1, _08021814 @ =gUnk_080CB590 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08021814: .4byte gUnk_080CB590 + + thumb_func_start sub_08021818 +sub_08021818: @ 0x08021818 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xa] + cmp r0, #0 + bne _0802182A + adds r0, r3, #0 + bl sub_0804A7D4 + b _08021844 +_0802182A: + ldr r2, [r3, #0x50] + cmp r2, #0 + beq _0802183A + ldrb r0, [r2, #0xf] + subs r0, #1 + movs r1, #0 + strb r0, [r2, #0xf] + str r1, [r3, #0x50] +_0802183A: + adds r0, r3, #0 + movs r1, #0xf0 + movs r2, #0 + bl sub_0804A7E0 +_08021844: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08021848 +sub_08021848: @ 0x08021848 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + adds r1, r0, #0 + cmp r1, #0 + beq _0802186C + ldr r0, _08021868 @ =gUnk_080CB5C8 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0802187A + .align 2, 0 +_08021868: .4byte gUnk_080CB5C8 +_0802186C: + movs r0, #3 + strb r0, [r4, #0xc] + strh r1, [r4, #0x36] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_0802187A: + pop {r4, pc} + + thumb_func_start sub_0802187C +sub_0802187C: @ 0x0802187C + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start nullsub_130 +nullsub_130: @ 0x08021884 + bx lr + .align 2, 0 + + thumb_func_start sub_08021888 +sub_08021888: @ 0x08021888 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0802189A + adds r0, r4, #0 + bl sub_08021818 +_0802189A: + pop {r4, pc} + + thumb_func_start sub_0802189C +sub_0802189C: @ 0x0802189C + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0x1c] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_080218B4 +sub_080218B4: @ 0x080218B4 + push {lr} + ldr r2, _080218C8 @ =gUnk_080CB5D4 + ldrb r1, [r0, #0xb] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080218C8: .4byte gUnk_080CB5D4 + + thumb_func_start sub_080218CC +sub_080218CC: @ 0x080218CC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xd] + cmp r0, #0 + bne _08021916 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xd] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + adds r0, r5, #0 + movs r1, #1 + bl sub_08049F84 + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0x10 + eors r4, r1 + ldr r2, _08021980 @ =gUnk_080CB5DC + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r4 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + movs r0, #0x90 + lsls r0, r0, #9 + str r0, [r5, #0x20] +_08021916: + adds r0, r5, #0 + bl sub_08004274 + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r6, #1 + adds r0, r6, #0 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _08021948 + adds r0, r5, #0 + bl sub_080AEFE0 + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r5, #0 + bl sub_080044EC + cmp r0, #0 + bne _08021948 + adds r0, r5, #0 + adds r0, #0x59 + strb r6, [r0] +_08021948: + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802197C + movs r0, #2 + strb r0, [r5, #0xc] + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #8 + strb r0, [r5, #0xe] + movs r0, #1 + strb r0, [r5, #0xf] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 +_0802197C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08021980: .4byte gUnk_080CB5DC + + thumb_func_start sub_08021984 +sub_08021984: @ 0x08021984 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080219C2 + movs r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r0, _08021A08 @ =0x0000FF80 + strh r0, [r4, #0x36] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] + ldr r0, _08021A0C @ =0x0000012D + bl sub_08004488 +_080219C2: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08021A04 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x10 + strb r0, [r4, #0xe] + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x86 + movs r0, #0x3c + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08016A04 +_08021A04: + pop {r4, pc} + .align 2, 0 +_08021A08: .4byte 0x0000FF80 +_08021A0C: .4byte 0x0000012D + + thumb_func_start sub_08021A10 +sub_08021A10: @ 0x08021A10 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r1, _08021A60 @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0x78 + movs r3, #0x50 + bl sub_080041A0 + cmp r0, #0 + beq _08021A5E + adds r0, r4, #0 + bl sub_08021D00 + cmp r0, #0 + bne _08021A5E + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08021A5E + movs r0, #3 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x1e + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_08021D44 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08021A5E: + pop {r4, pc} + .align 2, 0 +_08021A60: .4byte gLinkEntity + + thumb_func_start sub_08021A64 +sub_08021A64: @ 0x08021A64 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08021D00 + cmp r0, #0 + bne _08021AD4 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08021A96 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08021A96: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _08021AC8 + movs r0, #8 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + adds r1, r0, #0 + cmp r1, #0xff + bne _08021AC2 + movs r0, #7 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08021AD4 +_08021AC2: + adds r0, r4, #0 + bl sub_08021D44 +_08021AC8: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 +_08021AD4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08021AD8 +sub_08021AD8: @ 0x08021AD8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08021B3A + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08021B1E + movs r0, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + cmp r0, #0xff + bne _08021B16 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _08021B60 +_08021B16: + strb r0, [r4, #0x15] + movs r0, #0x7c + bl sub_08004488 +_08021B1E: + adds r0, r4, #0 + bl sub_080AEFE0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08021B3A + adds r1, r4, #0 + adds r1, #0x59 + movs r0, #1 + strb r0, [r1] +_08021B3A: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08021B60 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x14 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x86 + movs r0, #0x3c + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08021B60: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08021B64 +sub_08021B64: @ 0x08021B64 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _08021B88 @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + movs r2, #4 + ands r1, r2 + adds r6, r0, #0 + cmp r1, #0 + beq _08021B8C + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + str r1, [r4, #0x34] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _08021C4E + .align 2, 0 +_08021B88: .4byte gUnk_03003F80 +_08021B8C: + movs r5, #1 + adds r0, r6, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0xb + beq _08021BBA + cmp r0, #0x14 + beq _08021BBA + bl sub_0807953C + cmp r0, #0 + beq _08021BAE + ldrb r1, [r4, #0xa] + lsls r0, r1, #1 + adds r0, r0, r1 + adds r5, r0, #0 + adds r5, #8 +_08021BAE: + ldrb r0, [r4, #0xe] + subs r5, r0, r5 + cmp r5, #0 + bge _08021BB8 + movs r5, #0 +_08021BB8: + strb r5, [r4, #0xe] +_08021BBA: + ldr r0, [r6, #0x30] + movs r1, #0x88 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08021BC8 + movs r5, #0 +_08021BC8: + cmp r5, #0 + bne _08021C04 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x87 + strb r5, [r0] + ldr r2, _08021BEC @ =gLinkEntity + ldrb r1, [r2, #0x15] + adds r0, r1, #0 + cmp r0, #0xff + beq _08021BF0 + movs r0, #0x10 + b _08021BF6 + .align 2, 0 +_08021BEC: .4byte gLinkEntity +_08021BF0: + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 +_08021BF6: + eors r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + b _08021C4E +_08021C04: + ldrb r1, [r6, #0x1a] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r6, #0x1a] + adds r1, r6, #0 + adds r1, #0x80 + ldrh r0, [r1] + subs r0, #0x50 + strh r0, [r1] + adds r1, #0x2a + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, _08021C50 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA6C + ldr r2, _08021C54 @ =gUnk_080CB5E4 + ldrb r1, [r4, #0xf] + adds r0, r1, #1 + strb r0, [r4, #0xf] + movs r0, #0xe + ands r0, r1 + lsrs r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 +_08021C4E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08021C50: .4byte gLinkEntity +_08021C54: .4byte gUnk_080CB5E4 + + thumb_func_start sub_08021C58 +sub_08021C58: @ 0x08021C58 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08021C8A + adds r0, r4, #0 + bl sub_080AEFE0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08021C8A + adds r0, r4, #0 + adds r0, #0x59 + strb r5, [r0] +_08021C8A: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08021CCC + movs r0, #2 + strb r0, [r4, #0xc] + movs r2, #0x3c + strb r2, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x86 + strb r2, [r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08021CCC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08021CD0 +sub_08021CD0: @ 0x08021CD0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08021CE6 + adds r0, r4, #0 + bl sub_08004274 +_08021CE6: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + cmp r0, #0xff + beq _08021CFE + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08021CFE: + pop {r4, pc} + + thumb_func_start sub_08021D00 +sub_08021D00: @ 0x08021D00 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x86 + ldrb r0, [r1] + cmp r0, #0 + beq _08021D16 + subs r0, #1 + strb r0, [r1] + movs r0, #0 + b _08021D40 +_08021D16: + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x10 + bl sub_08049F64 + cmp r0, #0 + bne _08021D28 + movs r0, #0 + b _08021D40 +_08021D28: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + movs r0, #1 +_08021D40: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08021D44 +sub_08021D44: @ 0x08021D44 + push {lr} + adds r2, r0, #0 + adds r1, #4 + movs r0, #0x18 + ands r1, r0 + strb r1, [r2, #0x15] + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _08021D5E + movs r0, #0xc0 + lsls r0, r0, #1 + b _08021D60 +_08021D5E: + movs r0, #0xc0 +_08021D60: + strh r0, [r2, #0x24] + pop {pc} + + thumb_func_start sub_08021D64 +sub_08021D64: @ 0x08021D64 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08021D7C @ =gUnk_080CB69C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08021D7C: .4byte gUnk_080CB69C + + thumb_func_start sub_08021D80 +sub_08021D80: @ 0x08021D80 + push {lr} + ldr r2, _08021D94 @ =gUnk_080CB6B4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08021D94: .4byte gUnk_080CB6B4 + + thumb_func_start sub_08021D98 +sub_08021D98: @ 0x08021D98 + push {lr} + ldr r1, _08021DA4 @ =gUnk_080CB69C + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_08021DA4: .4byte gUnk_080CB69C + + thumb_func_start sub_08021DA8 +sub_08021DA8: @ 0x08021DA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08021DC4 + ldr r0, _08021DC8 @ =gUnk_080CB6C4 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08021DC4: + pop {r4, pc} + .align 2, 0 +_08021DC8: .4byte gUnk_080CB6C4 + + thumb_func_start sub_08021DCC +sub_08021DCC: @ 0x08021DCC + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_08021DD4 +sub_08021DD4: @ 0x08021DD4 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_08021DDC +sub_08021DDC: @ 0x08021DDC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08021DEE + adds r0, r4, #0 + bl sub_0804A7D4 +_08021DEE: + pop {r4, pc} + + thumb_func_start sub_08021DF0 +sub_08021DF0: @ 0x08021DF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08021E14 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08021E48 @ =0x0000FFF0 + strh r0, [r4, #0x36] +_08021E14: + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #1 + strb r0, [r4, #0x1c] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + bl sub_08021EF0 + pop {r4, pc} + .align 2, 0 +_08021E48: .4byte 0x0000FFF0 + + thumb_func_start sub_08021E4C +sub_08021E4C: @ 0x08021E4C + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + cmp r0, #0 + beq _08021E5E + subs r0, #1 + strh r0, [r1] +_08021E5E: + adds r1, r4, #0 + adds r1, #0x7a + ldrh r0, [r1] + cmp r0, #0 + beq _08021E6C + subs r0, #1 + strh r0, [r1] +_08021E6C: + adds r0, r4, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + adds r5, r2, #0 + cmp r0, #0 + beq _08021E8A + adds r0, r4, #0 + bl sub_08021F24 + b _08021E90 +_08021E8A: + adds r0, r4, #0 + bl sub_080AEFB4 +_08021E90: + ldr r1, _08021EA0 @ =gUnk_080CB6D0 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x63 + strb r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_08021EA0: .4byte gUnk_080CB6D0 + + thumb_func_start sub_08021EA4 +sub_08021EA4: @ 0x08021EA4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08021EBA + adds r0, r1, #0 + bl sub_08021EF0 +_08021EBA: + pop {pc} + + thumb_func_start sub_08021EBC +sub_08021EBC: @ 0x08021EBC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08021ECC + subs r0, #1 + strb r0, [r4, #0xe] + b _08021EE8 +_08021ECC: + ldr r0, _08021EEC @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x70 + bl sub_0806FCB8 + cmp r0, #0 + beq _08021EE8 + adds r0, r4, #0 + bl sub_08021EF0 +_08021EE8: + pop {r4, pc} + .align 2, 0 +_08021EEC: .4byte gLinkEntity + + thumb_func_start sub_08021EF0 +sub_08021EF0: @ 0x08021EF0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08021F20 @ =gUnk_080CB6D6 + movs r1, #0xf + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0x3c + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_08021F20: .4byte gUnk_080CB6D6 + + thumb_func_start sub_08021F24 +sub_08021F24: @ 0x08021F24 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r0, #0 + bne _08021F48 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08021F44 @ =gUnk_080CB6F6 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + b _08021F6E + .align 2, 0 +_08021F44: .4byte gUnk_080CB6F6 +_08021F48: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0 + bne _08021F80 + ldr r0, _08021F7C @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x70 + bl sub_0806FCB8 + cmp r0, #0 + bne _08021F80 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e +_08021F6E: + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08021FA4 + .align 2, 0 +_08021F7C: .4byte gLinkEntity +_08021F80: + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _08021F94 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + b _08021F9A +_08021F94: + adds r0, r4, #0 + bl sub_08049EE4 +_08021F9A: + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08021FA4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08021FA8 +sub_08021FA8: @ 0x08021FA8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08021FD4 @ =gUnk_080CB734 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r1, _08021FD8 @ =gUnk_080CB8A4 + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r4, #0x1e] + ldr r0, [r0] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r4, #0x48] + pop {r4, r5, pc} + .align 2, 0 +_08021FD4: .4byte gUnk_080CB734 +_08021FD8: .4byte gUnk_080CB8A4 + + thumb_func_start sub_08021FDC +sub_08021FDC: @ 0x08021FDC + push {lr} + ldr r2, _08021FF0 @ =gUnk_080CB74C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08021FF0: .4byte gUnk_080CB74C + + thumb_func_start sub_08021FF4 +sub_08021FF4: @ 0x08021FF4 + push {lr} + ldr r1, _08022000 @ =gUnk_080CB734 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_08022000: .4byte gUnk_080CB734 + + thumb_func_start sub_08022004 +sub_08022004: @ 0x08022004 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x7e + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + adds r0, r4, #0 + movs r1, #5 + movs r2, #0 + bl CreateFX + adds r0, r4, #0 + bl sub_08049CF4 + bl sub_0805E780 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08022034 +sub_08022034: @ 0x08022034 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + movs r0, #3 + ands r0, r1 + strb r0, [r4, #0xb] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldr r2, _08022098 @ =gUnk_080CB764 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + ldrb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080221C0 + pop {r4, pc} + .align 2, 0 +_08022098: .4byte gUnk_080CB764 + + thumb_func_start sub_0802209C +sub_0802209C: @ 0x0802209C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080220D2 + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x7a + ldrh r1, [r1] + movs r2, #0x10 + movs r3, #0x10 + bl sub_0806FBFC + cmp r0, #0 + beq _080220D6 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x12 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0xb] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + b _080220D6 +_080220D2: + subs r0, #1 + strb r0, [r4, #0xe] +_080220D6: + pop {r4, pc} + + thumb_func_start sub_080220D8 +sub_080220D8: @ 0x080220D8 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080220EC + movs r0, #3 + strb r0, [r1, #0xc] +_080220EC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080220F0 +sub_080220F0: @ 0x080220F0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08022160 + movs r1, #0 + movs r0, #4 + strb r0, [r5, #0xc] + movs r0, #0x78 + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x44 + strb r1, [r0] + ldrb r1, [r5, #0xb] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0802215C @ =gUnk_080CB76C + adds r4, r0, r1 + movs r6, #0 +_08022124: + adds r0, r5, #0 + movs r1, #0x11 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08022148 + movs r0, #0 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x32] +_08022148: + adds r6, #1 + adds r4, #2 + cmp r6, #5 + bls _08022124 + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 + b _08022170 + .align 2, 0 +_0802215C: .4byte gUnk_080CB76C +_08022160: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08022170 + adds r1, r5, #0 + adds r1, #0x44 + movs r0, #4 + strb r0, [r1] +_08022170: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08022174 +sub_08022174: @ 0x08022174 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08022196 + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xb] + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 +_08022196: + pop {r4, pc} + + thumb_func_start sub_08022198 +sub_08022198: @ 0x08022198 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080221BC + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] +_080221BC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080221C0 +sub_080221C0: @ 0x080221C0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0x2e + ldrsh r4, [r6, r0] + ldr r1, _08022220 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r4, r4, r0 + asrs r4, r4, #4 + movs r2, #0x3f + ands r4, r2 + movs r3, #0x32 + ldrsh r0, [r6, r3] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + ldr r1, _08022224 @ =gUnk_080B4488 + ldrb r0, [r6, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r4, r4, r0 + adds r0, r6, #0 + adds r0, #0x7e + strh r4, [r0] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x7c + strh r0, [r1] + ldr r1, _08022228 @ =gUnk_080CB79C + ldrb r0, [r6, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrb r2, [r5] + adds r1, r4, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_08022220: .4byte gUnk_03000BF0 +_08022224: .4byte gUnk_080B4488 +_08022228: .4byte gUnk_080CB79C + + thumb_func_start sub_0802222C +sub_0802222C: @ 0x0802222C + push {lr} + ldr r1, _08022238 @ =gUnk_080CB948 + bl sub_0800129E + pop {pc} + .align 2, 0 +_08022238: .4byte gUnk_080CB948 + + thumb_func_start sub_0802223C +sub_0802223C: @ 0x0802223C + push {lr} + ldr r2, _08022250 @ =gUnk_080CB960 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08022250: .4byte gUnk_080CB960 + + thumb_func_start sub_08022254 +sub_08022254: @ 0x08022254 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _08022344 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + subs r0, #4 + cmp r0, #0x18 + bhi _08022356 + lsls r0, r0, #2 + ldr r1, _0802227C @ =_08022280 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802227C: .4byte _08022280 +_08022280: @ jump table + .4byte _080222E4 @ case 0 + .4byte _080222E4 @ case 1 + .4byte _080222E4 @ case 2 + .4byte _08022356 @ case 3 + .4byte _080222E4 @ case 4 + .4byte _080222E4 @ case 5 + .4byte _080222E4 @ case 6 + .4byte _080222E4 @ case 7 + .4byte _080222E4 @ case 8 + .4byte _080222E4 @ case 9 + .4byte _08022356 @ case 10 + .4byte _08022356 @ case 11 + .4byte _080222E4 @ case 12 + .4byte _080222E4 @ case 13 + .4byte _080222E4 @ case 14 + .4byte _08022356 @ case 15 + .4byte _08022356 @ case 16 + .4byte _08022356 @ case 17 + .4byte _080222F2 @ case 18 + .4byte _08022356 @ case 19 + .4byte _080222E4 @ case 20 + .4byte _080222E4 @ case 21 + .4byte _080222E4 @ case 22 + .4byte _08022356 @ case 23 + .4byte _080222F2 @ case 24 +_080222E4: + ldr r0, _08022340 @ =gUnk_03003F80 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08022356 +_080222F2: + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + movs r0, #1 + movs r1, #1 + bl sub_0804AA60 + adds r5, r0, #0 + cmp r5, #0 + beq _08022356 + movs r0, #1 + strb r0, [r5, #0xb] + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #0xf8 + strb r0, [r1] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0804A4E4 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r4, #0x15] + str r5, [r4, #0x54] + b _08022356 + .align 2, 0 +_08022340: .4byte gUnk_03003F80 +_08022344: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x94 + beq _08022356 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08022356: + ldr r1, _08022360 @ =gUnk_080CB948 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_08022360: .4byte gUnk_080CB948 + + thumb_func_start nullsub_131 +nullsub_131: @ 0x08022364 + bx lr + .align 2, 0 + + thumb_func_start sub_08022368 +sub_08022368: @ 0x08022368 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08022390 +sub_08022390: @ 0x08022390 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080223D4 + ldrb r1, [r4, #0xe] + adds r0, r1, #1 + strb r0, [r4, #0xe] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _080223C0 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + bl sub_08000E50 + movs r1, #4 + ands r0, r1 + strb r0, [r4, #0xf] +_080223C0: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080223CE + adds r0, r4, #0 + bl sub_080AEF88 + b _080223DA +_080223CE: + subs r0, #1 + strb r0, [r4, #0xf] + b _080223DA +_080223D4: + bl sub_08000E50 + strb r0, [r4, #0xe] +_080223DA: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080223E4 +sub_080223E4: @ 0x080223E4 + push {lr} + adds r3, r0, #0 + ldr r2, [r3, #0x54] + cmp r2, #0 + beq _0802240A + adds r1, r2, #0 + adds r1, #0x41 + movs r0, #0x94 + strb r0, [r1] + subs r1, #4 + movs r0, #0x10 + strb r0, [r1] + adds r1, #5 + movs r0, #0xc + strb r0, [r1] + ldrb r1, [r3, #0x15] + adds r0, r2, #0 + adds r0, #0x3e + strb r1, [r0] +_0802240A: + adds r0, r3, #0 + bl sub_0805E7BC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08022414 +sub_08022414: @ 0x08022414 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08022430 @ =gUnk_080CBA28 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08022430: .4byte gUnk_080CBA28 + + thumb_func_start sub_08022434 +sub_08022434: @ 0x08022434 + push {lr} + ldr r2, _08022448 @ =gUnk_080CBA40 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08022448: .4byte gUnk_080CBA40 + + thumb_func_start sub_0802244C +sub_0802244C: @ 0x0802244C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x45 + ldrb r0, [r5] + cmp r0, #0 + bne _0802245C + b _08022582 +_0802245C: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0x65 + bne _08022522 + adds r0, #2 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + subs r0, #2 + cmp r0, #0x18 + bhi _08022540 + lsls r0, r0, #2 + ldr r1, _08022480 @ =_08022484 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08022480: .4byte _08022484 +_08022484: @ jump table + .4byte _080224E8 @ case 0 + .4byte _080224E8 @ case 1 + .4byte _08022540 @ case 2 + .4byte _08022540 @ case 3 + .4byte _08022540 @ case 4 + .4byte _08022540 @ case 5 + .4byte _08022508 @ case 6 + .4byte _08022508 @ case 7 + .4byte _08022508 @ case 8 + .4byte _08022508 @ case 9 + .4byte _08022508 @ case 10 + .4byte _08022540 @ case 11 + .4byte _08022540 @ case 12 + .4byte _08022540 @ case 13 + .4byte _08022540 @ case 14 + .4byte _08022540 @ case 15 + .4byte _08022540 @ case 16 + .4byte _08022540 @ case 17 + .4byte _08022540 @ case 18 + .4byte _08022540 @ case 19 + .4byte _08022508 @ case 20 + .4byte _08022540 @ case 21 + .4byte _08022508 @ case 22 + .4byte _08022508 @ case 23 + .4byte _08022508 @ case 24 +_080224E8: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xf] + movs r0, #0x5c + strb r0, [r6] + ldr r0, _08022504 @ =gUnk_080FD468 + str r0, [r4, #0x48] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _08022540 + .align 2, 0 +_08022504: .4byte gUnk_080FD468 +_08022508: + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0x5c + strb r0, [r6] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08022540 +_08022522: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x94 + bne _08022540 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08022540: + adds r0, r4, #0 + adds r0, #0x80 + adds r1, r4, #0 + adds r1, #0x45 + ldrb r2, [r0] + adds r5, r1, #0 + adds r7, r0, #0 + ldrb r0, [r5] + cmp r2, r0 + beq _08022566 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0x5c + strb r0, [r6] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _0802258E +_08022566: + ldrb r0, [r4, #0xc] + cmp r0, #3 + bne _0802258E + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + movs r0, #0xca + lsls r0, r0, #1 + bl sub_08004488 + b _0802258E +_08022582: + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + adds r7, r4, #0 + adds r7, #0x80 +_0802258E: + ldrb r0, [r5] + strb r0, [r7] + ldr r1, _0802259C @ =gUnk_080CBA28 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0802259C: .4byte gUnk_080CBA28 + + thumb_func_start sub_080225A0 +sub_080225A0: @ 0x080225A0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #1 + bne _080225B2 + adds r0, r4, #0 + bl sub_08004274 +_080225B2: + adds r0, r4, #0 + bl sub_08001318 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080225BC +sub_080225BC: @ 0x080225BC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080225DE + adds r0, r4, #0 + bl sub_0804A7D4 + b _080225E4 +_080225DE: + adds r0, r4, #0 + bl sub_08004274 +_080225E4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_9 +nullsub_9: @ 0x080225E8 + bx lr + .align 2, 0 + + thumb_func_start sub_080225EC +sub_080225EC: @ 0x080225EC + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r0, #0x3b + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x5a + strb r0, [r1] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0802261A + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0802264C +_0802261A: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] + ldr r0, _08022650 @ =0x0000FF80 + strh r0, [r4, #0x36] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 +_0802264C: + pop {r4, pc} + .align 2, 0 +_08022650: .4byte 0x0000FF80 + + thumb_func_start sub_08022654 +sub_08022654: @ 0x08022654 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _0802268C + cmp r0, #1 + bgt _08022668 + cmp r0, #0 + beq _0802266E + b _080226E4 +_08022668: + cmp r0, #2 + beq _080226BE + b _080226E4 +_0802266E: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080226E4 + movs r0, #1 + strb r0, [r4, #0xd] + ldr r0, _080226E8 @ =0x0000012D + bl sub_080A3268 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0802268C: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080226E4 + movs r0, #2 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + movs r0, #0x7d + bl sub_08004488 + adds r0, r4, #0 + bl sub_08016A04 +_080226BE: + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080226E4 + movs r0, #3 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x65 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_080226E4: + pop {r4, pc} + .align 2, 0 +_080226E8: .4byte 0x0000012D + + thumb_func_start sub_080226EC +sub_080226EC: @ 0x080226EC + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08022776 + adds r0, r4, #0 + bl sub_080228CC + cmp r0, #0 + beq _0802271A + movs r0, #3 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x65 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0802277C +_0802271A: + adds r0, r4, #0 + bl sub_080228F0 + cmp r0, #0 + beq _08022758 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x90 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldr r0, _08022754 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5a + strb r0, [r1] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _0802277C + .align 2, 0 +_08022754: .4byte gUnk_020000B0 +_08022758: + ldrb r1, [r4, #0xe] + adds r0, r1, #1 + strb r0, [r4, #0xe] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _08022770 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] +_08022770: + adds r0, r4, #0 + bl sub_080AEF88 +_08022776: + adds r0, r4, #0 + bl sub_08004274 +_0802277C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08022780 +sub_08022780: @ 0x08022780 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080227AA + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + movs r0, #0xca + lsls r0, r0, #1 + bl sub_08004488 +_080227AA: + pop {r4, pc} + + thumb_func_start sub_080227AC +sub_080227AC: @ 0x080227AC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080227CC + ldr r0, _080227C8 @ =gUnk_080FD470 + b _080227CE + .align 2, 0 +_080227C8: .4byte gUnk_080FD470 +_080227CC: + ldr r0, _08022814 @ =gUnk_080FD468 +_080227CE: + str r0, [r4, #0x48] + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r3, #2 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080227EE + movs r0, #0xfd + ands r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5c + strb r0, [r1] +_080227EE: + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08022812 + strb r3, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08022818 @ =gUnk_080CBA60 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08022812: + pop {r4, pc} + .align 2, 0 +_08022814: .4byte gUnk_080FD468 +_08022818: .4byte gUnk_080CBA60 + + thumb_func_start sub_0802281C +sub_0802281C: @ 0x0802281C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08022852 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0804AA1C +_08022852: + pop {r4, pc} + + thumb_func_start sub_08022854 +sub_08022854: @ 0x08022854 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08022898 + adds r0, r4, #0 + bl sub_080AEFE0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08022898 + movs r0, #7 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5c + strb r0, [r1] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + movs r0, #0x7d + bl sub_08004488 +_08022898: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802289C +sub_0802289C: @ 0x0802289C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080228CA + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x78 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_080228CA: + pop {r4, pc} + + thumb_func_start sub_080228CC +sub_080228CC: @ 0x080228CC + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xf] + cmp r0, #0 + bne _080228E8 + adds r0, r1, #0 + movs r1, #1 + movs r2, #0x28 + bl sub_08049F64 + cmp r0, #0 + beq _080228EC + movs r0, #1 + b _080228EE +_080228E8: + subs r0, #1 + strb r0, [r1, #0xf] +_080228EC: + movs r0, #0 +_080228EE: + pop {pc} + + thumb_func_start sub_080228F0 +sub_080228F0: @ 0x080228F0 + push {lr} + adds r1, r0, #0 + adds r2, r1, #0 + adds r2, #0x81 + ldrb r0, [r2] + cmp r0, #0 + bne _08022910 + adds r0, r1, #0 + movs r1, #1 + movs r2, #0x40 + bl sub_08049F64 + cmp r0, #0 + beq _08022914 + movs r0, #1 + b _08022916 +_08022910: + subs r0, #1 + strb r0, [r2] +_08022914: + movs r0, #0 +_08022916: + pop {pc} + + thumb_func_start sub_08022918 +sub_08022918: @ 0x08022918 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08022930 @ =gUnk_080CBB64 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08022930: .4byte gUnk_080CBB64 + + thumb_func_start sub_08022934 +sub_08022934: @ 0x08022934 + push {lr} + ldr r2, _08022948 @ =gUnk_080CBB7C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08022948: .4byte gUnk_080CBB7C + + thumb_func_start sub_0802294C +sub_0802294C: @ 0x0802294C + push {lr} + ldr r1, _08022958 @ =gUnk_080CBB64 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_08022958: .4byte gUnk_080CBB64 + + thumb_func_start nullsub_132 +nullsub_132: @ 0x0802295C + bx lr + .align 2, 0 + + thumb_func_start sub_08022960 +sub_08022960: @ 0x08022960 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + adds r0, r4, #0 + bl sub_08022A88 + pop {r4, pc} + + thumb_func_start sub_08022970 +sub_08022970: @ 0x08022970 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08022986 + adds r0, r1, #0 + bl sub_08022AA4 +_08022986: + pop {pc} + + thumb_func_start sub_08022988 +sub_08022988: @ 0x08022988 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080229A6 + adds r0, r4, #0 + bl sub_08022B20 + cmp r0, #0 + beq _080229A6 + adds r0, r4, #0 + bl sub_08022B0C + b _080229F6 +_080229A6: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080229C6 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080229F6 + movs r0, #1 + strb r0, [r4, #0x1e] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0xd6 + bl sub_08004488 +_080229C6: + adds r0, r4, #0 + bl sub_080AEF88 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + adds r1, r0, #0 + cmp r1, #0 + bne _080229F6 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080229F0 + adds r0, r4, #0 + bl sub_08022A88 + b _080229F6 +_080229F0: + movs r0, #4 + strb r0, [r4, #0xf] + strb r1, [r4, #0x1e] +_080229F6: + pop {r4, pc} + + thumb_func_start sub_080229F8 +sub_080229F8: @ 0x080229F8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xa0 + lsls r1, r1, #6 + bl sub_08003FC4 + cmp r0, #0 + bne _08022A3C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08022A30 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #6 + strb r0, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + strb r1, [r4, #0x1e] + movs r0, #0xc0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08022B44 + b _08022A3C +_08022A30: + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0xd6 + bl sub_08004488 +_08022A3C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08022A40 +sub_08022A40: @ 0x08022A40 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08022A58 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08022A86 + movs r0, #1 + strb r0, [r4, #0x1e] +_08022A58: + adds r0, r4, #0 + bl sub_080AEF88 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08022A86 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08022A80 + adds r0, r4, #0 + bl sub_08022A88 + b _08022A86 +_08022A80: + adds r0, r4, #0 + bl sub_08022B44 +_08022A86: + pop {r4, pc} + + thumb_func_start sub_08022A88 +sub_08022A88: @ 0x08022A88 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + adds r0, #8 + strb r0, [r4, #0xe] + strb r5, [r4, #0x1e] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08022AA4 +sub_08022AA4: @ 0x08022AA4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r1, #3 + adds r0, r5, #0 + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08022AE0 + lsrs r0, r5, #8 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + beq _08022AE0 + adds r0, r4, #0 + bl sub_08049EE4 + b _08022AE6 +_08022AE0: + lsrs r0, r5, #0x10 + movs r1, #0x1f + ands r0, r1 +_08022AE6: + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _08022B08 + lsrs r1, r1, #4 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_08022B08: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08022B0C +sub_08022B0C: @ 0x08022B0C + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + strb r1, [r0, #0xe] + movs r1, #8 + strb r1, [r0, #0xf] + bl sub_08022B44 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08022B20 +sub_08022B20: @ 0x08022B20 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + bl sub_08049DF4 + cmp r0, #0 + beq _08022B40 + ldr r1, _08022B3C @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0x24 + movs r3, #0x24 + bl sub_080041A0 + b _08022B42 + .align 2, 0 +_08022B3C: .4byte gLinkEntity +_08022B40: + movs r0, #0 +_08022B42: + pop {r4, pc} + + thumb_func_start sub_08022B44 +sub_08022B44: @ 0x08022B44 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #8 + str r0, [r4, #0x20] + ldr r1, _08022B84 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + strb r1, [r4, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _08022B7A + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1c + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_08022B7A: + movs r0, #0xd6 + bl sub_08004488 + pop {r4, pc} + .align 2, 0 +_08022B84: .4byte gLinkEntity + + thumb_func_start sub_08022B88 +sub_08022B88: @ 0x08022B88 + push {lr} + ldr r2, _08022B9C @ =gUnk_080CBB90 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08022B9C: .4byte gUnk_080CBB90 + + thumb_func_start sub_08022BA0 +sub_08022BA0: @ 0x08022BA0 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x79 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r1, _08022BD0 @ =gUnk_080CBBA0 + adds r0, r4, #0 + bl sub_0800129E + adds r0, r4, #0 + bl sub_08022EAC + pop {r4, pc} + .align 2, 0 +_08022BD0: .4byte gUnk_080CBBA0 + + thumb_func_start sub_08022BD4 +sub_08022BD4: @ 0x08022BD4 + push {lr} + ldr r2, _08022BE8 @ =gUnk_080CBBB4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08022BE8: .4byte gUnk_080CBBB4 + + thumb_func_start sub_08022BEC +sub_08022BEC: @ 0x08022BEC + push {lr} + adds r2, r0, #0 + movs r0, #0x7a + adds r0, r0, r2 + mov ip, r0 + adds r3, r2, #0 + adds r3, #0x45 + ldrb r0, [r0] + ldrb r1, [r3] + cmp r0, r1 + beq _08022C0A + adds r1, r2, #0 + adds r1, #0x7b + movs r0, #0x1e + strb r0, [r1] +_08022C0A: + ldrb r0, [r3] + mov r1, ip + strb r0, [r1] + movs r0, #1 + strb r0, [r2, #0xe] + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r2, #0x15] + ldrb r0, [r2, #0x15] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r2, #0x14] + strb r0, [r2, #0x1e] + ldr r0, [r2, #0x54] + adds r3, r2, #0 + adds r3, #0x3d + ldrb r1, [r3] + adds r0, #0x3d + strb r1, [r0] + ldr r0, [r2, #0x7c] + ldrb r1, [r3] + adds r0, #0x3d + strb r1, [r0] + adds r0, r2, #0 + adds r0, #0x80 + ldr r0, [r0] + ldrb r1, [r3] + adds r0, #0x3d + strb r1, [r0] + ldr r1, _08022C54 @ =gUnk_080CBBA0 + adds r0, r2, #0 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_08022C54: .4byte gUnk_080CBBA0 + + thumb_func_start sub_08022C58 +sub_08022C58: @ 0x08022C58 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + ldrb r1, [r7, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r7, #0x10] + ldr r0, _08022D3C @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x44 + bhi _08022D34 + movs r0, #0xd + movs r1, #1 + bl sub_0804AA60 + mov sb, r0 + str r0, [r7, #0x54] + mov r2, sb + adds r2, #0x29 + ldrb r1, [r2] + movs r4, #8 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r1, #5 + mov r8, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r2] + mov r0, sb + str r7, [r0, #0x50] + adds r0, r7, #0 + mov r1, sb + bl sub_0806FA24 + movs r0, #0xd + movs r1, #2 + bl sub_0804AA60 + adds r6, r0, #0 + mov r1, sb + str r6, [r1, #0x54] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + adds r0, r4, #0 + ands r0, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r2] + str r7, [r6, #0x50] + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_0806FA24 + movs r0, #0xd + movs r1, #3 + bl sub_0804AA60 + adds r5, r0, #0 + str r5, [r6, #0x54] + adds r1, r5, #0 + adds r1, #0x29 + ldrb r0, [r1] + ands r4, r0 + mov r0, r8 + orrs r4, r0 + strb r4, [r1] + str r7, [r5, #0x50] + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_0806FA24 + adds r0, r7, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r7, #0xc] + strb r0, [r7, #0xe] + strb r0, [r7, #0xf] + ldrb r0, [r7, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r7, #0x10] + str r7, [r7, #0x50] + mov r1, sb + str r1, [r7, #0x54] + str r6, [r7, #0x7c] + adds r0, r7, #0 + adds r0, #0x80 + str r5, [r0] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r7, #0x15] + ldrb r0, [r7, #0x15] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r7, #0x14] + strb r0, [r7, #0x1e] + adds r0, r7, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r0, #0x35 + strb r1, [r0] +_08022D34: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08022D3C: .4byte gUnk_03003DBC + + thumb_func_start sub_08022D40 +sub_08022D40: @ 0x08022D40 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x7b + ldrb r1, [r2] + cmp r1, #0 + beq _08022D66 + adds r0, r1, #0 + adds r0, #0xff + strb r0, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08022D8E + ldrb r0, [r4, #0x14] + adds r0, #1 + movs r1, #7 + ands r0, r1 + b _08022D8A +_08022D66: + adds r0, r4, #0 + bl sub_08022F14 + adds r0, r4, #0 + bl sub_080AEF88 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _08022D8E + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E + ldrb r0, [r4, #0x15] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r0, r0, #2 +_08022D8A: + strb r0, [r4, #0x14] + strb r0, [r4, #0x1e] +_08022D8E: + pop {r4, pc} + + thumb_func_start sub_08022D90 +sub_08022D90: @ 0x08022D90 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + beq _08022DE0 + ldr r1, _08022DDC @ =gUnk_080CBBBC + ldrb r0, [r5, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + ldr r4, [r5, #0x50] + ldrb r2, [r4, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r4, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x19] + adds r4, #0x38 + ldrb r1, [r4] + adds r0, r5, #0 + adds r0, #0x38 + strb r1, [r0] + b _08022DE6 + .align 2, 0 +_08022DDC: .4byte gUnk_080CBBBC +_08022DE0: + adds r0, r5, #0 + bl sub_0805E7BC +_08022DE6: + pop {r4, r5, pc} + + thumb_func_start sub_08022DE8 +sub_08022DE8: @ 0x08022DE8 + push {lr} + adds r3, r0, #0 + movs r0, #1 + strb r0, [r3, #0xc] + adds r0, r3, #0 + adds r0, #0x7c + movs r1, #0x88 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + ldr r0, [r3, #0x50] + ldrb r0, [r0, #0x14] + strb r0, [r3, #0x14] + adds r2, r3, #0 + adds r2, #0x84 + ldrb r1, [r3, #0x14] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r1, r0, #8 + adds r0, r0, r1 + lsls r1, r0, #0x10 + adds r0, r0, r1 + str r0, [r2] + ldrb r0, [r3, #0xa] + cmp r0, #3 + beq _08022E38 + adds r0, #7 + b _08022E3C +_08022E38: + ldrb r0, [r3, #0x14] + adds r0, #0xa +_08022E3C: + strb r0, [r3, #0x1e] + pop {pc} + + thumb_func_start sub_08022E40 +sub_08022E40: @ 0x08022E40 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r2, [r4, #0x50] + adds r2, #0x79 + ldrb r0, [r2] + adds r0, #1 + movs r3, #7 + ands r0, r3 + adds r0, #0x7c + adds r0, r4, r0 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + subs r0, #8 + lsrs r1, r1, #4 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r5, [r4, #0x2e] + adds r0, r0, r5 + strh r0, [r4, #0x2e] + subs r1, #8 + ldrh r0, [r4, #0x32] + adds r1, r1, r0 + strh r1, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x84 + ldrb r0, [r2] + adds r0, #1 + ands r0, r3 + lsls r0, r0, #2 + ldr r1, [r1] + lsrs r1, r0 + movs r0, #7 + ands r1, r0 + strb r1, [r4, #0x14] + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _08022EA2 + adds r0, r1, #0 + adds r0, #0xa + strb r0, [r4, #0x1e] + b _08022EA8 +_08022EA2: + adds r0, r4, #0 + bl sub_08022EAC +_08022EA8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08022EAC +sub_08022EAC: @ 0x08022EAC + push {r4, r5, lr} + mov ip, r0 + ldr r1, [r0, #0x54] + cmp r1, #0 + beq _08022F12 + ldr r0, [r0, #0x50] + adds r0, #0x79 + ldrb r0, [r0] + movs r4, #7 + adds r3, r4, #0 + ands r3, r0 + adds r3, r3, r1 + adds r3, #0x7c + mov r0, ip + ldrh r1, [r0, #0x2e] + adds r0, #0x74 + ldrb r0, [r0] + subs r1, r1, r0 + adds r1, #8 + movs r5, #0xf + ands r1, r5 + mov r2, ip + ldrh r0, [r2, #0x32] + adds r2, #0x76 + ldrb r2, [r2] + subs r0, r0, r2 + adds r0, #8 + ands r0, r5 + lsls r0, r0, #4 + adds r1, r1, r0 + strb r1, [r3] + mov r1, ip + ldr r0, [r1, #0x50] + adds r0, #0x79 + ldrb r1, [r0] + adds r0, r4, #0 + ands r0, r1 + lsls r0, r0, #2 + mov r2, ip + ldrb r1, [r2, #0x14] + ands r4, r1 + lsls r4, r0 + movs r2, #0xf + lsls r2, r0 + mov r0, ip + ldr r1, [r0, #0x54] + adds r1, #0x84 + ldr r0, [r1] + bics r0, r2 + orrs r4, r0 + str r4, [r1] +_08022F12: + pop {r4, r5, pc} + + thumb_func_start sub_08022F14 +sub_08022F14: @ 0x08022F14 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08022F4E + adds r0, r4, #0 + bl sub_08049EE4 + ldrb r1, [r4, #0x15] + subs r2, r0, r1 + movs r1, #0x1f + ands r2, r1 + adds r0, r2, #4 + ands r0, r1 + cmp r0, #8 + bls _08022F4E + movs r0, #8 + strb r0, [r4, #0xf] + cmp r2, #0xf + bhi _08022F46 + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #1 + b _08022F4C +_08022F46: + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0xff +_08022F4C: + strb r0, [r1] +_08022F4E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08022F9E + movs r0, #4 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r1 + adds r5, r4, #0 + adds r5, #0x78 + cmp r0, #0 + bne _08022F84 + movs r0, #8 + strb r0, [r4, #0xf] + bl sub_08000E50 + ldr r2, _08022FA0 @ =gUnk_080CBBC4 + movs r1, #1 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r5] +_08022F84: + ldrb r0, [r5] + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + strb r0, [r4, #0x1e] +_08022F9E: + pop {r4, r5, pc} + .align 2, 0 +_08022FA0: .4byte gUnk_080CBBC4 + + thumb_func_start sub_08022FA4 +sub_08022FA4: @ 0x08022FA4 + push {lr} + ldr r1, _08022FB0 @ =gUnk_080CBBC8 + bl sub_0800129E + pop {pc} + .align 2, 0 +_08022FB0: .4byte gUnk_080CBBC8 + + thumb_func_start sub_08022FB4 +sub_08022FB4: @ 0x08022FB4 + push {lr} + ldr r2, _08022FC8 @ =gUnk_080CBBDC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08022FC8: .4byte gUnk_080CBBDC + + thumb_func_start nullsub_133 +nullsub_133: @ 0x08022FCC + bx lr + .align 2, 0 + + thumb_func_start sub_08022FD0 +sub_08022FD0: @ 0x08022FD0 + push {lr} + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + movs r1, #0 + bl sub_08023000 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08022FEC +sub_08022FEC: @ 0x08022FEC + push {lr} + movs r1, #0x80 + bl sub_08023000 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08022FF8 +sub_08022FF8: @ 0x08022FF8 + bx lr + .align 2, 0 + + thumb_func_start sub_08022FFC +sub_08022FFC: @ 0x08022FFC + bx lr + .align 2, 0 + + thumb_func_start sub_08023000 +sub_08023000: @ 0x08023000 + push {r4, lr} + adds r4, r0, #0 + cmp r1, #0x80 + bne _0802300E + bl sub_080042B8 + b _08023014 +_0802300E: + adds r0, r4, #0 + bl sub_080042AC +_08023014: + movs r2, #0x80 + adds r0, r4, #0 + adds r0, #0x5b + ldrb r0, [r0] + cmp r0, #0x40 + bne _08023022 + rsbs r2, r2, #0 +_08023022: + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + adds r1, r2, #0 + movs r2, #0x80 + movs r3, #0 + bl sub_0805EC9C + pop {r4, pc} + + thumb_func_start sub_08023038 +sub_08023038: @ 0x08023038 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r5, [r4, #0x2e] + ldrh r6, [r4, #0x32] + ldrb r1, [r4, #0xa] + cmp r1, #0 + bne _0802306C + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08023052 + adds r0, r4, #0 + bl sub_0802390C +_08023052: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x7d + strb r0, [r1] + ldr r1, _08023068 @ =gUnk_080CBC38 + adds r0, r4, #0 + bl sub_0800129E + b _08023090 + .align 2, 0 +_08023068: .4byte gUnk_080CBC38 +_0802306C: + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + beq _08023088 + cmp r1, #8 + beq _08023080 + adds r0, r4, #0 + bl sub_080235BC + b _08023090 +_08023080: + adds r0, r4, #0 + bl sub_08023730 + b _08023090 +_08023088: + adds r0, r4, #0 + bl sub_0805E7BC + b _080230CA +_08023090: + ldr r0, [r4, #0x50] + adds r2, r0, #0 + adds r2, #0x7c + adds r0, #0x7d + ldrb r1, [r2] + ldrb r0, [r0] + cmp r1, r0 + beq _080230CA + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _080230CA + ldrb r2, [r2] + subs r2, #1 + movs r0, #0xf + ands r2, r0 + adds r2, #0x78 + adds r2, r1, r2 + ldrh r1, [r4, #0x2e] + subs r1, r1, r5 + adds r1, #8 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #4 + ldrh r0, [r4, #0x32] + subs r0, r0, r6 + adds r0, #8 + ands r0, r3 + orrs r1, r0 + strb r1, [r2] +_080230CA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080230CC +sub_080230CC: @ 0x080230CC + push {lr} + ldr r2, _080230E0 @ =gUnk_080CBC50 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080230E0: .4byte gUnk_080CBC50 + + thumb_func_start sub_080230E4 +sub_080230E4: @ 0x080230E4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xd] + cmp r0, #0xff + bne _08023132 + movs r2, #0 + movs r0, #7 + strb r0, [r5, #0xc] + movs r3, #1 + strb r3, [r5, #0xe] + strb r2, [r5, #0xd] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x85 + strb r0, [r1] + subs r1, #2 + movs r0, #0xf8 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x7f + strb r2, [r0] + subs r0, #4 + strb r2, [r0] + subs r0, #0x3a + ldrb r0, [r0] + cmp r0, #0x80 + beq _0802311E + cmp r0, #0x9e + bne _08023128 +_0802311E: + strb r2, [r5, #0xb] + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #0x14 + b _08023130 +_08023128: + strb r3, [r5, #0xb] + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #8 +_08023130: + strb r0, [r1] +_08023132: + adds r0, r5, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0802318A + adds r0, r5, #0 + adds r0, #0x7f + ldrb r0, [r0] + cmp r0, #0 + bne _0802318A + ldrb r0, [r5, #0xc] + cmp r0, #7 + bne _0802318A + ldr r4, _08023194 @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0xff + strb r0, [r4, #0x15] + adds r4, #0x3d + movs r0, #0xec + strb r0, [r4] + ldr r2, _08023198 @ =gUnk_03003F80 + movs r0, #0x41 + strb r0, [r2, #2] + ldr r0, [r2, #0x30] + ldr r1, _0802319C @ =0xFFF7FFFF + ands r0, r1 + str r0, [r2, #0x30] +_0802318A: + ldr r1, _080231A0 @ =gUnk_080CBC38 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_08023194: .4byte gLinkEntity +_08023198: .4byte gUnk_03003F80 +_0802319C: .4byte 0xFFF7FFFF +_080231A0: .4byte gUnk_080CBC38 + + thumb_func_start sub_080231A4 +sub_080231A4: @ 0x080231A4 + push {lr} + adds r2, r0, #0 + adds r2, #0x7c + ldrb r1, [r2] + adds r1, #1 + strb r1, [r2] + bl sub_08001324 + + thumb_func_start nullsub_134 +nullsub_134: @ 0x080231B4 + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_135 +nullsub_135: @ 0x080231B8 + bx lr + .align 2, 0 + + thumb_func_start sub_080231BC +sub_080231BC: @ 0x080231BC + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _08023280 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x3f + bhi _0802327E + movs r0, #0xf + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + str r4, [r6, #0x54] + str r6, [r4, #0x50] + movs r0, #0xf + movs r1, #2 + bl sub_0804AA60 + adds r5, r0, #0 + str r5, [r4, #0x54] + str r6, [r5, #0x50] + movs r0, #0xf + movs r1, #3 + bl sub_0804AA60 + adds r4, r0, #0 + str r4, [r5, #0x54] + str r6, [r4, #0x50] + movs r0, #0xf + movs r1, #4 + bl sub_0804AA60 + adds r5, r0, #0 + str r5, [r4, #0x54] + str r6, [r5, #0x50] + movs r0, #0xf + movs r1, #5 + bl sub_0804AA60 + adds r4, r0, #0 + str r4, [r5, #0x54] + str r6, [r4, #0x50] + movs r0, #0xf + movs r1, #6 + bl sub_0804AA60 + adds r5, r0, #0 + str r5, [r4, #0x54] + str r6, [r5, #0x50] + movs r0, #0xf + movs r1, #7 + bl sub_0804AA60 + adds r4, r0, #0 + str r4, [r5, #0x54] + str r6, [r4, #0x50] + movs r0, #0xf + movs r1, #8 + bl sub_0804AA60 + str r0, [r4, #0x54] + str r4, [r0, #0x74] + str r6, [r0, #0x50] + movs r1, #0 + str r1, [r0, #0x54] + adds r0, r6, #0 + bl sub_0804A720 + movs r0, #6 + strb r0, [r6, #0xc] + movs r1, #0x1e + strb r1, [r6, #0xe] + str r6, [r6, #0x50] + adds r0, r6, #0 + adds r0, #0x78 + strh r1, [r0] + ldrb r1, [r6, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r6, #0x1a] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r6, #0x15] + ldrb r0, [r6, #0x15] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r6, #0x14] + ldrb r1, [r6, #0x14] + adds r0, r6, #0 + bl sub_08004260 +_0802327E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08023280: .4byte gUnk_03003DBC + + thumb_func_start nullsub_136 +nullsub_136: @ 0x08023284 + bx lr + .align 2, 0 + + thumb_func_start sub_08023288 +sub_08023288: @ 0x08023288 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08023324 + ldrb r1, [r7, #0xe] + adds r0, r1, #1 + strb r0, [r7, #0xe] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08023324 + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #0x1e + ands r4, r0 + movs r0, #0 + mov r8, r0 + ldr r2, _08023308 @ =gLinkEntity + mov sb, r2 + ldr r0, _0802330C @ =gUnk_080CBC70 + mov sl, r0 +_080232C2: + mov r2, sb + movs r0, #0x2e + ldrsh r1, [r2, r0] + mov r2, sl + adds r0, r4, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r6, r1, r0 + mov r0, sb + movs r2, #0x32 + ldrsh r1, [r0, r2] + adds r0, r4, #1 + add r0, sl + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r5, r1, r0 + ldr r0, _08023310 @ =gUnk_03001198 + ldrb r2, [r0] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080002A4 + bl sub_08023A38 + cmp r0, #0 + beq _08023314 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_08023990 + b _08023324 + .align 2, 0 +_08023308: .4byte gLinkEntity +_0802330C: .4byte gUnk_080CBC70 +_08023310: .4byte gUnk_03001198 +_08023314: + adds r4, #2 + movs r0, #0x1e + ands r4, r0 + movs r2, #1 + add r8, r2 + mov r0, r8 + cmp r0, #0xf + bls _080232C2 +_08023324: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08023330 +sub_08023330: @ 0x08023330 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08023394 + movs r0, #4 + strb r0, [r5, #0xc] + movs r0, #0x19 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x78 + movs r4, #0 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r1] + bl sub_08000E50 + movs r1, #0x1c + ands r0, r1 + strb r0, [r5, #0x15] + lsrs r0, r0, #2 + strb r0, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x7b + strb r4, [r0] + adds r0, #4 + strb r4, [r0] + ldrb r1, [r5, #0x14] + adds r0, r5, #0 + bl sub_08023A88 + ldr r1, [r5, #0x54] + adds r0, r5, #0 + bl sub_0806FA24 + adds r0, r5, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX +_08023394: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08023398 +sub_08023398: @ 0x08023398 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + adds r0, #3 + ldrb r0, [r0] + cmp r0, #0 + beq _080233C0 + adds r0, r5, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _080233C0 + adds r1, r5, #0 + adds r1, #0x78 + movs r0, #1 + strh r0, [r1] +_080233C0: + adds r4, r5, #0 + adds r4, #0x78 + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08023416 + adds r0, r5, #0 + bl sub_080002A0 + bl sub_08023A38 + cmp r0, #0 + beq _08023412 + movs r0, #5 + strb r0, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x7f + movs r0, #0 + strb r0, [r1] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x85 + strb r0, [r1] + ldr r1, [r5, #0x54] + movs r0, #1 + strb r0, [r1, #0xe] + adds r0, r5, #0 + bl sub_08023A68 + adds r0, r5, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + b _0802349C +_08023412: + movs r0, #0x28 + strh r0, [r4] +_08023416: + adds r0, r5, #0 + adds r0, #0x7f + ldrb r0, [r0] + cmp r0, #0 + beq _08023426 + adds r0, r5, #0 + bl sub_08023AB0 +_08023426: + ldrb r0, [r5, #0xe] + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _08023440 + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0802349C + movs r0, #0x19 + strb r0, [r5, #0xe] + b _0802349C +_08023440: + ldr r4, [r5, #0x2c] + ldr r6, [r5, #0x30] + adds r0, r5, #0 + bl sub_080AEF88 + ldr r0, [r5, #0x2c] + cmp r0, r4 + bne _08023460 + ldr r0, [r5, #0x30] + cmp r0, r6 + bne _08023460 + adds r1, r5, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_08023460: + ldr r0, _080234A0 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0802349C + adds r0, r5, #0 + movs r1, #1 + bl sub_08049F84 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_08004596 + ldrb r0, [r5, #0x15] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r0, r0, #2 + ldrb r1, [r5, #0x14] + cmp r0, r1 + beq _0802349C + strb r0, [r5, #0x14] + adds r1, r5, #0 + adds r1, #0x7b + ldrb r1, [r1] + adds r1, r0, r1 + adds r0, r5, #0 + bl sub_08004260 +_0802349C: + pop {r4, r5, r6, pc} + .align 2, 0 +_080234A0: .4byte gUnk_030010A0 + + thumb_func_start sub_080234A4 +sub_080234A4: @ 0x080234A4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x7f + ldrb r0, [r0] + cmp r0, #0 + beq _080234D6 + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0xa + ands r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1] +_080234D6: + pop {r4, pc} + + thumb_func_start sub_080234D8 +sub_080234D8: @ 0x080234D8 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802351A + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x1a] + subs r0, #0x12 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r4, #0x1a] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08023A88 +_0802351A: + pop {r4, pc} + + thumb_func_start sub_0802351C +sub_0802351C: @ 0x0802351C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldrb r0, [r7, #0xe] + cmp r0, #0 + beq _0802355A + ldrb r0, [r7, #0xb] + cmp r0, #1 + beq _08023534 + ldr r0, _080235A8 @ =gLinkEntity + ldrb r0, [r0, #0x1e] + cmp r0, #0xff + bne _0802355A +_08023534: + movs r0, #0 + strb r0, [r7, #0xe] + ldr r1, [r7, #0x54] + movs r0, #3 + strb r0, [r1, #0xc] + ldr r1, [r7, #0x54] + adds r0, r7, #0 + adds r0, #0x80 + ldrb r0, [r0] + strb r0, [r1, #0xf] + ldr r0, [r7, #0x54] + ldrb r1, [r0, #0x14] + adds r1, #1 + bl sub_08004260 + ldrb r1, [r7, #0x14] + adds r0, r7, #0 + bl sub_08004260 +_0802355A: + adds r0, r7, #0 + adds r0, #0x7f + ldrb r0, [r0] + cmp r0, #0 + bne _080235B4 + ldrb r0, [r7, #0xb] + cmp r0, #0 + bne _080235B8 + ldr r5, _080235A8 @ =gLinkEntity + ldrb r0, [r7, #0x14] + movs r4, #7 + adds r2, r4, #0 + ands r2, r0 + strb r2, [r5, #0x14] + ldr r3, _080235AC @ =gUnk_03003F80 + ldr r0, [r3, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r3, #0x30] + ldr r6, _080235B0 @ =gUnk_080CBC90 + adds r2, r2, r6 + movs r3, #0 + ldrsb r3, [r2, r3] + lsls r3, r3, #0x10 + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + ldrb r0, [r7, #0x14] + ands r4, r0 + adds r4, r4, r6 + ldrb r0, [r4] + rsbs r0, r0, #0 + adds r5, #0x63 + strb r0, [r5] + b _080235B8 + .align 2, 0 +_080235A8: .4byte gLinkEntity +_080235AC: .4byte gUnk_03003F80 +_080235B0: .4byte gUnk_080CBC90 +_080235B4: + movs r0, #4 + strb r0, [r7, #0xc] +_080235B8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080235BC +sub_080235BC: @ 0x080235BC + push {lr} + ldr r2, _080235D0 @ =gUnk_080CBC98 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080235D0: .4byte gUnk_080CBC98 + + thumb_func_start sub_080235D4 +sub_080235D4: @ 0x080235D4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r1, [r4, #0x50] + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_080239F0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _080235F6 + movs r0, #0x10 + b _080235F8 +_080235F6: + movs r0, #0x12 +_080235F8: + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08023604 +sub_08023604: @ 0x08023604 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x50] + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + adds r0, r0, r2 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0x88 + beq _08023640 + movs r1, #0 + movs r0, #2 + strb r0, [r2, #0xc] + strb r1, [r2, #0xe] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + bl sub_08023644 +_08023640: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08023644 +sub_08023644: @ 0x08023644 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x17 + bne _08023692 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08023692 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _08023692 + movs r6, #0x32 + ldrsh r1, [r4, r6] + movs r2, #0x32 + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _08023692 + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x54] + strb r2, [r0, #0xe] + adds r0, r4, #0 + bl sub_080239F0 +_08023692: + adds r0, r5, #0 + adds r0, #0x7c + adds r1, r5, #0 + adds r1, #0x7d + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _080236F2 + movs r2, #0xf + adds r1, r2, #0 + ands r1, r0 + adds r1, #0x78 + adds r1, r4, r1 + ldrb r0, [r1] + lsrs r0, r0, #4 + ldr r3, _080236F4 @ =0x0000FFF8 + adds r0, r0, r3 + ldrh r6, [r4, #0x2e] + adds r0, r0, r6 + strh r0, [r4, #0x2e] + ldrb r0, [r1] + ands r2, r0 + adds r2, r2, r3 + ldrh r0, [r4, #0x32] + adds r2, r2, r0 + strh r2, [r4, #0x32] + ldrb r2, [r5, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x19] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] +_080236F2: + pop {r4, r5, r6, pc} + .align 2, 0 +_080236F4: .4byte 0x0000FFF8 + + thumb_func_start sub_080236F8 +sub_080236F8: @ 0x080236F8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802372E + movs r0, #2 + strb r0, [r4, #0xc] + ldr r1, [r4, #0x54] + movs r0, #3 + strb r0, [r1, #0xc] + ldr r1, [r4, #0x54] + ldr r0, [r4, #0x50] + adds r0, #0x80 + ldrb r0, [r0] + strb r0, [r1, #0xf] + ldr r0, [r4, #0x54] + ldrb r1, [r0, #0x14] + adds r1, #1 + bl sub_08004260 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_0802372E: + pop {r4, pc} + + thumb_func_start sub_08023730 +sub_08023730: @ 0x08023730 + push {lr} + ldr r2, _08023744 @ =gUnk_080CBCA8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08023744: .4byte gUnk_080CBCA8 + + thumb_func_start sub_08023748 +sub_08023748: @ 0x08023748 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x14 + strb r0, [r4, #0x14] + ldr r1, [r4, #0x50] + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_080239F0 + adds r0, r4, #0 + bl sub_08023A68 + pop {r4, pc} + + thumb_func_start sub_0802376C +sub_0802376C: @ 0x0802376C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _0802379A + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xf + bhi _0802379A + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + adds r0, r4, #0 + bl sub_08004274 +_0802379A: + adds r0, r5, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + adds r0, r0, r4 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0x88 + beq _080237D4 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r0, [r4, #0x50] + adds r0, #0x7f + movs r1, #1 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0x14 + bl sub_08023A88 + adds r0, r4, #0 + bl sub_080237D8 +_080237D4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080237D8 +sub_080237D8: @ 0x080237D8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x17 + bne _0802382E + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802382E + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _0802382E + movs r6, #0x32 + ldrsh r1, [r4, r6] + movs r2, #0x32 + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _0802382E + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r5, #0 + adds r0, #0x7f + strb r2, [r0] + adds r0, r4, #0 + bl sub_080239F0 + adds r0, r4, #0 + bl sub_08023A68 +_0802382E: + adds r0, r5, #0 + adds r0, #0x7c + adds r1, r5, #0 + adds r1, #0x7d + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + beq _0802388E + movs r2, #0xf + adds r1, r2, #0 + ands r1, r0 + adds r1, #0x78 + adds r1, r4, r1 + ldrb r0, [r1] + lsrs r0, r0, #4 + ldr r3, _08023890 @ =0x0000FFF8 + adds r0, r0, r3 + ldrh r6, [r4, #0x2e] + adds r0, r0, r6 + strh r0, [r4, #0x2e] + ldrb r0, [r1] + ands r2, r0 + adds r2, r2, r3 + ldrh r0, [r4, #0x32] + adds r2, r2, r0 + strh r2, [r4, #0x32] + ldrb r2, [r5, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x19] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] +_0802388E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08023890: .4byte 0x0000FFF8 + + thumb_func_start sub_08023894 +sub_08023894: @ 0x08023894 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08023900 + movs r0, #2 + strb r0, [r5, #0xc] + ldr r0, [r5, #0x50] + adds r0, #0x7f + movs r1, #1 + strb r1, [r0] + ldrb r1, [r5, #0x14] + adds r0, r5, #0 + bl sub_08004260 + ldr r0, [r5, #0x50] + ldrb r0, [r0, #0xb] + cmp r0, #0 + bne _08023900 + ldr r2, _08023904 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [r2, #0x30] + ldr r4, _08023908 @ =gLinkEntity + ldrh r0, [r5, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x32] + strh r0, [r4, #0x32] + ldr r0, [r5, #0x74] + adds r1, r5, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xc + strb r0, [r1] + subs r0, #0x1c + bl sub_080526A0 + adds r0, r4, #0 + movs r1, #0x7a + bl sub_0800449C +_08023900: + pop {r4, r5, pc} + .align 2, 0 +_08023904: .4byte gUnk_03003F80 +_08023908: .4byte gLinkEntity + + thumb_func_start sub_0802390C +sub_0802390C: @ 0x0802390C + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08023932 + ldr r2, [r5, #0x54] + adds r3, r5, #0 + adds r3, #0x3d +_08023922: + ldrb r0, [r3] + adds r1, r2, #0 + adds r1, #0x3d + strb r0, [r1] + ldr r2, [r2, #0x54] + cmp r2, #0 + bne _08023922 + b _0802398C +_08023932: + ldr r2, [r5, #0x54] + b _0802393C +_08023936: + ldr r2, [r2, #0x54] + cmp r2, #0 + beq _0802398C +_0802393C: + adds r0, r2, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08023936 + movs r0, #0x45 + adds r0, r0, r2 + mov ip, r0 + ldrb r1, [r0] + movs r4, #0xff + subs r0, r4, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08023936 + adds r0, r1, #0 + orrs r0, r4 + mov r1, ip + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3d + ldrb r4, [r0] + adds r1, r5, #0 + adds r1, #0x45 + ldrb r0, [r1] + cmp r0, r3 + blo _0802397A + subs r0, r0, r3 + b _0802397C +_0802397A: + movs r0, #0 +_0802397C: + strb r0, [r1] + adds r2, r5, #0 +_08023980: + adds r0, r2, #0 + adds r0, #0x3d + strb r4, [r0] + ldr r2, [r2, #0x54] + cmp r2, #0 + bne _08023980 +_0802398C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08023990 +sub_08023990: @ 0x08023990 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #3 + strb r0, [r5, #0xc] + ldrb r3, [r5, #0x18] + subs r0, #7 + ands r0, r3 + movs r3, #1 + orrs r0, r3 + strb r0, [r5, #0x18] + movs r0, #0x55 + strb r0, [r5, #0x1a] + adds r4, r5, #0 + adds r4, #0x29 + ldrb r0, [r4] + movs r3, #7 + orrs r0, r3 + strb r0, [r4] + strh r1, [r5, #0x2e] + strh r2, [r5, #0x32] + ldr r0, _080239EC @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r5, #0 + bl sub_08016A04 + adds r0, r5, #0 + movs r1, #0x16 + bl sub_08004260 + ldr r4, [r5, #0x54] +_080239D4: + adds r0, r4, #0 + bl sub_080239F0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r4, [r4, #0x54] + cmp r4, #0 + bne _080239D4 + pop {r4, r5, pc} + .align 2, 0 +_080239EC: .4byte gLinkEntity + + thumb_func_start sub_080239F0 +sub_080239F0: @ 0x080239F0 + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x78 + movs r0, #0x88 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + bx lr + + thumb_func_start sub_08023A38 +sub_08023A38: @ 0x08023A38 + push {lr} + adds r1, r0, #0 + cmp r1, #0x1a + beq _08023A5A + cmp r1, #0x29 + beq _08023A5A + ldr r0, _08023A60 @ =gUnk_080B37A0 + adds r0, r1, r0 + ldrb r1, [r0] + cmp r1, #9 + beq _08023A5A + cmp r1, #0xb + beq _08023A5A + cmp r1, #0xa + beq _08023A5A + cmp r1, #0xc + bne _08023A64 +_08023A5A: + movs r0, #1 + b _08023A66 + .align 2, 0 +_08023A60: .4byte gUnk_080B37A0 +_08023A64: + movs r0, #0 +_08023A66: + pop {pc} + + thumb_func_start sub_08023A68 +sub_08023A68: @ 0x08023A68 + push {r4, lr} + adds r4, r0, #0 + movs r1, #5 + bl sub_0801D2B4 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x17 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08023A88 +sub_08023A88: @ 0x08023A88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0x22 + bl sub_0801D2B4 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08004260 + pop {r4, r5, pc} + + thumb_func_start sub_08023AB0 +sub_08023AB0: @ 0x08023AB0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r7, r4, #0 + adds r7, #0x7b + ldrb r0, [r7] + cmp r0, #8 + bne _08023AF6 + adds r5, r4, #0 + adds r5, #0x7e + ldrb r0, [r5] + adds r6, r0, #0 + cmp r6, #0 + bne _08023B00 + adds r0, r4, #0 + bl sub_08023B38 + cmp r0, #0 + beq _08023ADE + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r0, #0x1d + bhi _08023B34 +_08023ADE: + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x85 + strb r0, [r1] + strb r6, [r7] + movs r0, #0x1e + strb r0, [r5] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + b _08023B34 +_08023AF6: + adds r5, r4, #0 + adds r5, #0x7e + ldrb r0, [r5] + cmp r0, #0 + beq _08023B06 +_08023B00: + subs r0, #1 + strb r0, [r5] + b _08023B34 +_08023B06: + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r0, #0x59 + bls _08023B34 + adds r0, r4, #0 + bl sub_08023B38 + cmp r0, #0 + beq _08023B34 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x87 + strb r0, [r1] + movs r0, #8 + strb r0, [r7] + movs r0, #0xa + strb r0, [r5] + ldrb r1, [r4, #0x14] + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 +_08023B34: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08023B38 +sub_08023B38: @ 0x08023B38 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r5, r0, #0 + cmp r5, #0 + bne _08023B4C + movs r0, #0 + b _08023B8E +_08023B4C: + movs r0, #0x2e + ldrsh r2, [r4, r0] + ldr r3, _08023B90 @ =gUnk_080CBCB8 + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + adds r1, r0, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r2, r2, r1 + movs r6, #0x32 + ldrsh r1, [r4, r6] + adds r0, #1 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r1, r0 + movs r3, #0 + movs r4, #0x2e + ldrsh r0, [r5, r4] + subs r0, r0, r2 + adds r0, #0x14 + cmp r0, #0x28 + bhi _08023B8C + movs r6, #0x32 + ldrsh r0, [r5, r6] + subs r0, r0, r1 + adds r0, #0x14 + cmp r0, #0x28 + bhi _08023B8C + movs r3, #1 +_08023B8C: + adds r0, r3, #0 +_08023B8E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08023B90: .4byte gUnk_080CBCB8 + + thumb_func_start sub_08023B94 +sub_08023B94: @ 0x08023B94 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _08023BAC + ldr r1, _08023BA8 @ =gUnk_080CBDBC + adds r0, r5, #0 + bl sub_0800129E + b _08023BEC + .align 2, 0 +_08023BA8: .4byte gUnk_080CBDBC +_08023BAC: + cmp r0, #0 + bne _08023C00 + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08023BD8 + adds r0, r5, #0 + bl sub_080012DC + adds r1, r0, #0 + cmp r1, #0 + beq _08023BD8 + ldr r0, _08023BD4 @ =gUnk_080012C8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _08023C06 + .align 2, 0 +_08023BD4: .4byte gUnk_080012C8 +_08023BD8: + ldr r4, _08023BFC @ =gUnk_080CBDD4 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_08023BEC: + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + b _08023C06 + .align 2, 0 +_08023BFC: .4byte gUnk_080CBDD4 +_08023C00: + adds r0, r5, #0 + bl sub_08023E10 +_08023C06: + pop {r4, r5, pc} + + thumb_func_start sub_08023C08 +sub_08023C08: @ 0x08023C08 + push {lr} + ldr r2, _08023C1C @ =gUnk_080CBDEC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08023C1C: .4byte gUnk_080CBDEC + + thumb_func_start sub_08023C20 +sub_08023C20: @ 0x08023C20 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08023C34 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08023C34: + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _08023C48 + ldr r1, _08023C44 @ =gUnk_080CBDBC + adds r0, r4, #0 + bl sub_0804AA30 + b _08023C50 + .align 2, 0 +_08023C44: .4byte gUnk_080CBDBC +_08023C48: + ldr r1, _08023C54 @ =gUnk_080CBDD4 + adds r0, r4, #0 + bl sub_0804AA30 +_08023C50: + pop {r4, pc} + .align 2, 0 +_08023C54: .4byte gUnk_080CBDD4 + + thumb_func_start nullsub_137 +nullsub_137: @ 0x08023C58 + bx lr + .align 2, 0 + + thumb_func_start sub_08023C5C +sub_08023C5C: @ 0x08023C5C + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x30 + ands r0, r1 + adds r0, #0xb4 + strb r0, [r4, #0xe] + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08023C8C +sub_08023C8C: @ 0x08023C8C + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_08023E54 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08023CDC + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #1 + beq _08023CBC + movs r0, #8 + strb r0, [r4, #0xe] + b _08023CDC +_08023CBC: + bl sub_08000E50 + movs r1, #0x30 + ands r0, r1 + adds r0, #0xb4 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08023E9C + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_08023CDC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08023CE0 +sub_08023CE0: @ 0x08023CE0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08023D48 + cmp r0, #1 + bgt _08023CF4 + cmp r0, #0 + beq _08023CFA + b _08023DC0 +_08023CF4: + cmp r0, #2 + beq _08023D6E + b _08023DC0 +_08023CFA: + adds r0, r4, #0 + bl sub_0804A720 + ldrb r1, [r4, #0xb] + cmp r1, #1 + bne _08023D1C + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08023D12 + strb r1, [r4, #0xe] +_08023D12: + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08023D20 +_08023D1C: + movs r0, #1 + strb r0, [r4, #0xc] +_08023D20: + ldr r0, _08023D44 @ =0x0000FF80 + strh r0, [r4, #0x36] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _08023E0A + .align 2, 0 +_08023D44: .4byte 0x0000FF80 +_08023D48: + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x20 + bl sub_08049F64 + cmp r0, #0 + beq _08023E0A + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08023D64 + movs r0, #8 + strb r0, [r4, #0xe] +_08023D64: + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08023E0A +_08023D6E: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08023D94 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08023E0A + ldr r0, _08023D90 @ =0x0000012D + bl sub_08004488 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _08023E0A + .align 2, 0 +_08023D90: .4byte 0x0000012D +_08023D94: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08023E0A + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x84 + bl sub_08004488 + adds r0, r4, #0 + bl sub_08016A04 + b _08023E0A +_08023DC0: + adds r0, r4, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + cmp r1, #0 + beq _08023E0A + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08023DF2 + movs r0, #0x10 + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + cmp r1, #0 + beq _08023E0A + adds r0, r4, #0 + bl sub_0804A4E4 + bl sub_0805E780 + b _08023E0A +_08023DF2: + ldr r1, _08023E0C @ =gUnk_080CBDF4 + ldrb r0, [r2] + subs r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r4, #0x32] + strb r1, [r2] +_08023E0A: + pop {r4, pc} + .align 2, 0 +_08023E0C: .4byte gUnk_080CBDF4 + + thumb_func_start sub_08023E10 +sub_08023E10: @ 0x08023E10 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08023E36 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 +_08023E36: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08023E50 + adds r0, r4, #0 + bl sub_0805E7BC +_08023E50: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08023E54 +sub_08023E54: @ 0x08023E54 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + adds r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1b + bls _08023E94 + movs r0, #0 + strb r0, [r4, #0xf] + movs r0, #0x10 + movs r1, #2 + bl sub_0804AA60 + adds r5, r0, #0 + cmp r5, #0 + beq _08023E94 + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + ldr r1, _08023E98 @ =gUnk_080CBDF7 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 +_08023E94: + pop {r4, r5, pc} + .align 2, 0 +_08023E98: .4byte gUnk_080CBDF7 + + thumb_func_start sub_08023E9C +sub_08023E9C: @ 0x08023E9C + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08000E50 + adds r6, r0, #0 + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08023EC2 + movs r0, #1 + ands r0, r6 + cmp r0, #0 + beq _08023EC2 + adds r0, r5, #0 + bl sub_08049EE4 + adds r0, #4 + b _08023F1C +_08023EC2: + adds r0, r5, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08023F0A + movs r0, #6 + ands r0, r6 + cmp r0, #0 + beq _08023F0A + ldr r0, _08023F00 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080045C4 + ldrb r2, [r5, #0x15] + subs r1, r0, r2 + cmp r1, #0 + beq _08023F22 + adds r0, r1, #4 + movs r3, #0x1f + ands r0, r3 + cmp r0, #8 + bls _08023F22 + ands r1, r3 + cmp r1, #0xf + bhi _08023F04 + adds r0, r2, #0 + adds r0, #8 + b _08023F1C + .align 2, 0 +_08023F00: .4byte gUnk_020000B0 +_08023F04: + adds r0, r2, #0 + subs r0, #8 + b _08023F1C +_08023F0A: + ldr r4, _08023F24 @ =gUnk_080CBDFF + lsrs r0, r6, #4 + movs r1, #3 + bl __modsi3 + adds r0, r0, r4 + ldrb r0, [r0] + ldrb r1, [r5, #0x15] + adds r0, r0, r1 +_08023F1C: + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] +_08023F22: + pop {r4, r5, r6, pc} + .align 2, 0 +_08023F24: .4byte gUnk_080CBDFF + + thumb_func_start sub_08023F28 +sub_08023F28: @ 0x08023F28 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08023F40 @ =gUnk_080CBEC4 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08023F40: .4byte gUnk_080CBEC4 + + thumb_func_start sub_08023F44 +sub_08023F44: @ 0x08023F44 + push {lr} + ldr r2, _08023F58 @ =gUnk_080CBEDC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08023F58: .4byte gUnk_080CBEDC + + thumb_func_start sub_08023F5C +sub_08023F5C: @ 0x08023F5C + push {r4, lr} + mov ip, r0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x6e + beq _08023FC8 + mov r0, ip + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _08023FD0 + mov r1, ip + adds r1, #0x86 + movs r0, #0x30 + strb r0, [r1] + mov r2, ip + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0xf + ands r0, r1 + adds r4, r2, #0 + cmp r0, #3 + bne _08023FD0 + mov r1, ip + ldrb r0, [r1, #0xc] + cmp r0, #6 + bne _08023FD0 + subs r2, #3 + ldrb r0, [r2] + cmp r0, #1 + beq _08023FA0 + cmp r0, #2 + beq _08023FB8 + b _08023FD0 +_08023FA0: + movs r0, #0 + ldr r1, _08023FC4 @ =0x0000FFF0 + mov r3, ip + strh r1, [r3, #0x36] + adds r3, #0x82 + strb r0, [r3] + mov r0, ip + adds r0, #0x78 + strh r1, [r0] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_08023FB8: + ldrb r1, [r4] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4] + b _08023FD0 + .align 2, 0 +_08023FC4: .4byte 0x0000FFF0 +_08023FC8: + mov r1, ip + adds r1, #0x45 + movs r0, #0 + strb r0, [r1] +_08023FD0: + ldr r1, _08023FDC @ =gUnk_080CBEC4 + mov r0, ip + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08023FDC: .4byte gUnk_080CBEC4 + + thumb_func_start sub_08023FE0 +sub_08023FE0: @ 0x08023FE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001324 + + thumb_func_start sub_08023FE8 +sub_08023FE8: @ 0x08023FE8 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08023FF0 +sub_08023FF0: @ 0x08023FF0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bhi _08024022 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + bne _08024022 + movs r2, #1 + strb r2, [r4, #0xc] + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x77 + strb r0, [r1] + strb r2, [r4, #0xe] + movs r0, #0x40 + strh r0, [r4, #0x24] + b _08024032 +_08024022: + ldr r0, _08024034 @ =gUnk_080CBEF8 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08024032: + pop {r4, pc} + .align 2, 0 +_08024034: .4byte gUnk_080CBEF8 + + thumb_func_start sub_08024038 +sub_08024038: @ 0x08024038 + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bl sub_08004274 + pop {pc} + + thumb_func_start sub_08024048 +sub_08024048: @ 0x08024048 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F4E8 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08024058 +sub_08024058: @ 0x08024058 + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_08024060 +sub_08024060: @ 0x08024060 + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x3f + ldrb r0, [r2] + cmp r0, #0x6e + beq _0802408C + ldrb r1, [r3, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #0x10] + movs r0, #0x6e + strb r0, [r2] + ldr r0, _08024094 @ =gLinkEntity + ldrb r1, [r0, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] +_0802408C: + adds r0, r3, #0 + bl sub_08004274 + pop {pc} + .align 2, 0 +_08024094: .4byte gLinkEntity + + thumb_func_start nullsub_138 +nullsub_138: @ 0x08024098 + bx lr + .align 2, 0 + + thumb_func_start sub_0802409C +sub_0802409C: @ 0x0802409C + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0 + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080A29BC + pop {r4, pc} + + thumb_func_start sub_080240B8 +sub_080240B8: @ 0x080240B8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0xc0 + ands r1, r0 + lsrs r7, r1, #3 + adds r0, r4, #0 + bl sub_0804A720 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + movs r0, #8 + ands r0, r7 + cmp r0, #0 + beq _080240FC + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x10 + ands r0, r7 + cmp r0, #0 + beq _080240F4 + adds r0, r1, #0 + subs r0, #0x20 + b _080240F8 +_080240F4: + adds r0, r1, #0 + adds r0, #0x20 +_080240F8: + strh r0, [r4, #0x32] + b _08024114 +_080240FC: + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x10 + ands r0, r7 + cmp r0, #0 + beq _0802410E + adds r0, r1, #0 + subs r0, #0x20 + b _08024112 +_0802410E: + adds r0, r1, #0 + adds r0, #0x20 +_08024112: + strh r0, [r4, #0x2e] +_08024114: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08024120 + cmp r0, #1 + beq _0802412C + b _08024136 +_08024120: + adds r1, r4, #0 + adds r1, #0x78 + ldr r0, _08024128 @ =0x0000FFF0 + b _08024132 + .align 2, 0 +_08024128: .4byte 0x0000FFF0 +_0802412C: + adds r1, r4, #0 + adds r1, #0x78 + ldr r0, _080241BC @ =0x0000FFD0 +_08024132: + strh r0, [r1] + strh r0, [r4, #0x36] +_08024136: + adds r0, r4, #0 + bl sub_08016A04 + bl sub_08052660 + cmp r0, #0 + beq _08024150 + ldrb r0, [r4, #0x1b] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4, #0x1b] +_08024150: + bl sub_08000E50 + movs r1, #0x40 + ands r0, r1 + adds r1, r4, #0 + adds r1, #0x81 + movs r6, #0 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x82 + strb r6, [r0] + adds r5, r4, #0 + adds r5, #0x83 + movs r0, #0x80 + strb r0, [r5] + adds r0, r4, #0 + adds r0, #0x86 + strb r6, [r0] + adds r0, #1 + strb r6, [r0] + strb r6, [r4, #0xe] + movs r0, #0x20 + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + movs r0, #2 + strb r0, [r4, #0x1c] + strb r7, [r4, #0x15] + adds r0, r4, #0 + bl sub_080249DC + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _080241B8 + strb r6, [r5] + ldrb r2, [r5] + adds r0, r4, #0 + movs r1, #6 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _080241B8 + str r1, [r4, #0x54] + str r4, [r1, #0x50] + ldrh r0, [r1, #0x32] + adds r0, #0x10 + strh r0, [r1, #0x32] +_080241B8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080241BC: .4byte 0x0000FFD0 + + thumb_func_start sub_080241C0 +sub_080241C0: @ 0x080241C0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08024940 + adds r6, r4, #0 + adds r6, #0x80 + ldrb r5, [r6] + cmp r5, #0 + beq _080241D8 + cmp r5, #1 + beq _08024238 + b _08024296 +_080241D8: + ldr r0, _08024218 @ =gUnk_03003F80 + ldrb r0, [r0, #0xf] + movs r2, #0x40 + cmp r0, #0 + beq _080241E4 + movs r2, #0xa0 +_080241E4: + adds r0, r4, #0 + movs r1, #3 + bl sub_08049F64 + cmp r0, #0 + beq _08024220 + adds r0, r4, #0 + movs r1, #3 + bl sub_08049FDC + cmp r0, #0 + beq _08024220 + ldr r0, _0802421C @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0x1e + beq _08024220 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + strh r5, [r4, #0x24] + adds r0, r4, #0 + movs r1, #3 + movs r2, #0xa + bl sub_08024A14 + b _08024296 + .align 2, 0 +_08024218: .4byte gUnk_03003F80 +_0802421C: .4byte gLinkEntity +_08024220: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08024296 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x20 + bl sub_08024A14 + b _08024296 +_08024238: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08024296 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08024290 + adds r5, r4, #0 + adds r5, #0x83 + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0802426C + adds r0, r4, #0 + bl sub_08024C94 + ldrb r0, [r5] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r5] + b _08024296 +_0802426C: + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r6] + movs r0, #0xa + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + bl sub_08024E00 + adds r0, r4, #0 + bl sub_08024E1C + ldrb r2, [r4, #0xf] + adds r0, r4, #0 + movs r1, #3 + bl sub_08024A14 + b _08024296 +_08024290: + adds r0, r4, #0 + bl sub_08024C94 +_08024296: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08024298 +sub_08024298: @ 0x08024298 + push {lr} + bl sub_08024D00 + pop {pc} + + thumb_func_start sub_080242A0 +sub_080242A0: @ 0x080242A0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08024940 + adds r0, r4, #0 + bl sub_08024CC0 + cmp r0, #0 + beq _08024334 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080242F0 + ldr r0, _080242E4 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #1 + bl sub_08024E00 + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _080242E8 + strh r5, [r4, #0x24] + b _08024306 + .align 2, 0 +_080242E4: .4byte gUnk_020000B0 +_080242E8: + adds r0, r4, #0 + bl sub_08024E1C + b _08024306 +_080242F0: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r1 + cmp r0, #0 + bne _08024306 + adds r0, r4, #0 + movs r1, #3 + movs r2, #0xa + bl sub_08024A14 +_08024306: + ldr r0, _08024338 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x20 + bl sub_08049F1C + cmp r0, #0 + beq _08024334 + adds r0, r4, #0 + movs r1, #3 + bl sub_08049FDC + cmp r0, #0 + beq _08024334 + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + movs r0, #0x10 + strb r0, [r4, #0xe] + strh r1, [r4, #0x24] +_08024334: + pop {r4, r5, pc} + .align 2, 0 +_08024338: .4byte gUnk_020000B0 + + thumb_func_start sub_0802433C +sub_0802433C: @ 0x0802433C + push {r4, lr} + adds r4, r0, #0 + bl sub_08024940 + adds r2, r4, #0 + adds r2, #0x80 + ldrb r0, [r2] + cmp r0, #0 + beq _08024354 + cmp r0, #1 + beq _0802437A + b _080243B6 +_08024354: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080243B6 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + movs r0, #8 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08024E00 + b _080243B6 +_0802437A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080243A0 + movs r0, #5 + strb r0, [r4, #0xc] + strb r1, [r2] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + movs r0, #0xc0 + strb r0, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + b _080243B6 +_080243A0: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r3 + cmp r0, #0 + bne _080243B6 + adds r0, r4, #0 + movs r1, #2 + movs r2, #4 + bl sub_08024A14 +_080243B6: + pop {r4, pc} + + thumb_func_start sub_080243B8 +sub_080243B8: @ 0x080243B8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08024940 + adds r5, r4, #0 + adds r5, #0x80 + ldrb r0, [r5] + cmp r0, #1 + beq _0802446A + cmp r0, #1 + bgt _080243D4 + cmp r0, #0 + beq _080243DA + b _080244E4 +_080243D4: + cmp r0, #2 + beq _08024486 + b _080244E4 +_080243DA: + adds r0, r4, #0 + movs r1, #1 + bl sub_08024C48 + cmp r0, #0 + beq _08024462 + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _080243F2 + ldr r0, [r0, #4] + cmp r0, #0 + bne _08024406 +_080243F2: + movs r0, #2 + strb r0, [r5] + movs r0, #0x20 + strb r0, [r4, #0xe] + movs r1, #0x80 + strh r1, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x83 + strb r1, [r0] + b _080244E4 +_08024406: + ldr r0, _08024434 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0xe + bl sub_08049F1C + cmp r0, #0 + beq _08024438 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r0, #0xe2 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0x80 + strb r0, [r1] + ldr r1, [r4, #0x54] + movs r0, #2 + strb r0, [r1, #0xc] + b _080244E4 + .align 2, 0 +_08024434: .4byte gUnk_020000B0 +_08024438: + ldrb r0, [r4, #0xe] + subs r2, r0, #1 + strb r2, [r4, #0xe] + movs r1, #0xff + lsls r0, r2, #0x18 + cmp r0, #0 + beq _08024462 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r1 + cmp r0, #0 + bne _080244E4 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x1e + adds r2, #1 + adds r0, r4, #0 + movs r1, #2 + bl sub_08024A14 + b _080244E4 +_08024462: + adds r0, r4, #0 + bl sub_08024C7C + b _080244E4 +_0802446A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080244E4 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + movs r0, #0x20 + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + b _080244E4 +_08024486: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080244E4 + movs r0, #6 + strb r0, [r4, #0xc] + strb r1, [r5] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08024B38 + adds r0, r4, #0 + adds r0, #0x83 + ldrb r1, [r0] + movs r2, #0x40 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _080244D8 + movs r0, #0x3f + ands r0, r1 + cmp r0, #1 + beq _080244C4 + cmp r0, #3 + bne _080244C8 + movs r0, #4 + b _080244CA +_080244C4: + movs r0, #0x14 + b _080244CA +_080244C8: + movs r0, #0x30 +_080244CA: + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + movs r2, #8 + bl sub_08024A14 + b _080244E4 +_080244D8: + strb r2, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + movs r2, #8 + bl sub_08024A14 +_080244E4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080244E8 +sub_080244E8: @ 0x080244E8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + bl sub_08024940 + adds r0, r5, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #7 + bls _08024502 + b _08024924 +_08024502: + lsls r0, r0, #2 + ldr r1, _0802450C @ =_08024510 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802450C: .4byte _08024510 +_08024510: @ jump table + .4byte _08024530 @ case 0 + .4byte _080245A6 @ case 1 + .4byte _080245E4 @ case 2 + .4byte _080247F4 @ case 3 + .4byte _08024818 @ case 4 + .4byte _08024836 @ case 5 + .4byte _080248AE @ case 6 + .4byte _0802490A @ case 7 +_08024530: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08024592 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r2, _08024584 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r4, #0x32 + ldrsh r1, [r5, r4] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #1 + bl sub_080002E0 + adds r2, r0, #0 + cmp r2, #0 + bne _08024588 + adds r0, r5, #0 + adds r0, #0x80 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + adds r1, r5, #0 + adds r1, #0x82 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + strb r2, [r5, #0xf] + strh r2, [r5, #0x24] + b _08024924 + .align 2, 0 +_08024584: .4byte gUnk_03000BF0 +_08024588: + movs r0, #0x30 + strb r0, [r5, #0xe] + movs r0, #4 + strb r0, [r5, #0xf] + b _08024924 +_08024592: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + ands r0, r1 + cmp r0, #0 + beq _080245A0 + b _08024924 +_080245A0: + adds r0, r5, #0 + movs r1, #1 + b _08024902 +_080245A6: + ldrh r0, [r5, #0x36] + adds r0, #1 + strh r0, [r5, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x10 + rsbs r2, r2, #0 + cmp r0, r2 + bge _080245BA + b _08024924 +_080245BA: + adds r1, r5, #0 + adds r1, #0x82 + movs r0, #0 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x78 + strh r2, [r0] + adds r0, r5, #0 + bl sub_08024AD8 + cmp r0, #0 + beq _080245D4 + b _0802482A +_080245D4: + adds r0, r5, #0 + bl sub_08024C94 + adds r2, r5, #0 + adds r2, #0x83 + ldrb r0, [r2] + movs r1, #0x40 + b _080247EE +_080245E4: + adds r0, r5, #0 + bl sub_08024AD8 + cmp r0, #0 + bne _080245F0 + b _080247E0 +_080245F0: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802462C + movs r7, #0x24 + ldrsh r0, [r5, r7] + cmp r0, #0 + beq _0802460C + strh r1, [r5, #0x24] + b _08024612 +_0802460C: + adds r0, r5, #0 + bl sub_08024E1C +_08024612: + ldr r1, [r5, #0x54] + adds r0, r5, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + movs r1, #0 + bl sub_08024E00 + adds r0, r5, #0 + bl sub_080249DC + b _08024642 +_0802462C: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + ands r0, r2 + cmp r0, #0 + bne _08024642 + adds r0, r5, #0 + movs r1, #1 + movs r2, #8 + bl sub_08024A14 +_08024642: + adds r6, r5, #0 + adds r6, #0x83 + ldrb r1, [r6] + movs r0, #0x3f + mov sb, r0 + ands r0, r1 + cmp r0, #2 + beq _0802474C + cmp r0, #2 + bgt _0802465C + cmp r0, #1 + beq _080246E4 + b _08024924 +_0802465C: + cmp r0, #3 + beq _08024662 + b _08024924 +_08024662: + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08024670 + b _08024924 +_08024670: + adds r1, r5, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0xc + strb r0, [r5, #0xe] + movs r0, #0x10 + strb r0, [r5, #0x15] + movs r4, #0 + strh r2, [r5, #0x24] + adds r0, r5, #0 + adds r0, #0x84 + strb r4, [r0] + adds r2, r5, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #0xfc + ands r0, r1 + strb r0, [r2] + adds r0, r5, #0 + bl sub_080249DC + ldr r2, _080246DC @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + adds r1, r5, #0 + adds r1, #0x85 + strb r0, [r1] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + ldr r2, _080246E0 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldrb r1, [r2, #0xa] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0xa] + adds r2, #0x26 + ldrb r0, [r2] + cmp r0, #0 + bne _080246D6 + b _08024924 +_080246D6: + strb r4, [r2] + b _08024924 + .align 2, 0 +_080246DC: .4byte gLinkEntity +_080246E0: .4byte gUnk_03003F80 +_080246E4: + ldr r1, [r5, #0x54] + adds r0, r5, #0 + movs r2, #6 + movs r3, #6 + bl sub_080041A0 + cmp r0, #0 + bne _080246F6 + b _08024924 +_080246F6: + adds r1, r5, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0xc + strb r0, [r5, #0xe] + ldrb r1, [r6] + movs r0, #0x7f + ands r0, r1 + strb r0, [r6] + ldr r0, [r5, #0x54] + adds r1, r5, #0 + bl sub_0806FA24 + ldrh r0, [r5, #0x36] + subs r0, #0xe + strh r0, [r5, #0x36] + adds r1, r5, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #0xe + strh r0, [r1] + ldrb r2, [r6] + adds r0, r5, #0 + movs r1, #6 + bl sub_0804A98C + adds r4, r0, #0 + cmp r4, #0 + bne _08024736 + b _08024924 +_08024736: + str r5, [r4, #0x50] + ldrh r0, [r4, #0x36] + adds r0, #0xe + strh r0, [r4, #0x36] + ldr r1, [r5, #0x54] + str r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 + str r4, [r5, #0x54] + b _08024924 +_0802474C: + ldr r1, [r5, #0x54] + adds r0, r5, #0 + movs r2, #6 + movs r3, #6 + bl sub_080041A0 + cmp r0, #0 + bne _0802475E + b _08024924 +_0802475E: + adds r1, r5, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0xc + strb r0, [r5, #0xe] + ldrb r1, [r6] + movs r0, #0x7f + ands r0, r1 + strb r0, [r6] + ldr r4, [r5, #0x54] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + ldr r3, _080247DC @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + mov r7, sb + ands r1, r7 + movs r7, #0x32 + ldrsh r2, [r4, r7] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + mov r3, sb + ands r2, r3 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + adds r0, r4, #0 + bl sub_0805E7BC + ldrh r0, [r5, #0x36] + subs r0, #0xe + strh r0, [r5, #0x36] + adds r1, r5, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #0xe + strh r0, [r1] + ldrb r2, [r6] + adds r0, r5, #0 + movs r1, #6 + bl sub_0804A98C + adds r4, r0, #0 + cmp r4, #0 + bne _080247D0 + b _08024924 +_080247D0: + str r5, [r4, #0x50] + ldrh r0, [r4, #0x36] + adds r0, #0xe + strh r0, [r4, #0x36] + str r4, [r5, #0x54] + b _08024924 + .align 2, 0 +_080247DC: .4byte gUnk_03000BF0 +_080247E0: + adds r0, r5, #0 + bl sub_08024C94 + adds r2, r5, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x40 +_080247EE: + orrs r0, r1 + strb r0, [r2] + b _08024924 +_080247F4: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08024804 + b _08024924 +_08024804: + adds r0, r5, #0 + adds r0, #0x80 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + strb r2, [r5, #0xf] + strh r2, [r5, #0x24] + adds r1, r5, #0 + adds r1, #0x82 + b _0802482E +_08024818: + ldrh r0, [r5, #0x36] + subs r0, #2 + strh r0, [r5, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x3c + rsbs r1, r1, #0 + cmp r0, r1 + bge _08024924 +_0802482A: + adds r1, r5, #0 + adds r1, #0x80 +_0802482E: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + b _08024924 +_08024836: + ldrh r2, [r5, #0x36] + movs r4, #0x36 + ldrsh r1, [r5, r4] + movs r0, #0x30 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0802484A + adds r0, r2, #1 + strh r0, [r5, #0x36] + b _08024924 +_0802484A: + adds r1, r5, #0 + adds r1, #0x82 + ldrb r0, [r1] + cmp r0, #0 + beq _0802485E + movs r0, #0 + strb r0, [r1] + subs r1, #0xa + ldr r0, _08024884 @ =0x0000FFD0 + strh r0, [r1] +_0802485E: + adds r0, r5, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #1 + blt _080248A6 + cmp r0, #2 + ble _08024888 + cmp r0, #3 + bne _080248A6 + adds r0, r5, #0 + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #0x2f + bls _08024924 + adds r0, r5, #0 + bl sub_08024F50 + b _08024924 + .align 2, 0 +_08024884: .4byte 0x0000FFD0 +_08024888: + adds r1, r5, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0xc0 + strb r0, [r5, #0xe] + movs r0, #8 + strb r0, [r5, #0xf] + movs r0, #0x80 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_080249DC + b _08024924 +_080248A6: + adds r0, r5, #0 + bl sub_08024C7C + b _08024924 +_080248AE: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _080248F2 + adds r2, r5, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080248E8 + movs r0, #0xc0 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x80 + strb r3, [r0] + movs r1, #0x40 + movs r0, #0x40 + strh r0, [r5, #0x24] + strb r1, [r5, #0xe] + movs r0, #8 + strb r0, [r5, #0xf] + adds r0, r5, #0 + movs r1, #0 + b _08024902 +_080248E8: + movs r0, #0x40 + strb r0, [r5, #0xe] + movs r0, #8 + strb r0, [r5, #0xf] + b _08024924 +_080248F2: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + ands r0, r1 + cmp r0, #0 + bne _08024924 + adds r0, r5, #0 + movs r1, #2 +_08024902: + movs r2, #8 + bl sub_08024A14 + b _08024924 +_0802490A: + ldr r0, _0802493C @ =gLinkEntity + movs r7, #0x36 + ldrsh r1, [r0, r7] + cmp r1, #0 + bne _08024924 + adds r0, r5, #0 + adds r0, #0x80 + strb r1, [r0] + movs r0, #0x80 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_08024B38 +_08024924: + adds r0, r5, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #3 + bne _08024934 + adds r0, r5, #0 + bl sub_08024E4C +_08024934: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0802493C: .4byte gLinkEntity + + thumb_func_start sub_08024940 +sub_08024940: @ 0x08024940 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #0x70 + ands r5, r0 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _08024962 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E + adds r0, r4, #0 + bl sub_080249F4 +_08024962: + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + bne _0802497C + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + strh r0, [r4, #0x36] + cmp r5, #0 + beq _0802497C + adds r0, #2 + strh r0, [r4, #0x36] +_0802497C: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0802498A + bl sub_08052660 + cmp r0, #0 + beq _080249CE +_0802498A: + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _080249A2 + adds r0, r4, #0 + bl sub_08049EE4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080249F4 +_080249A2: + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080249BC + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + adds r0, #0x18 + ands r0, r1 + strb r0, [r2] + b _080249CE +_080249BC: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r2] +_080249CE: + adds r0, r4, #0 + bl sub_080AEFB4 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + + thumb_func_start sub_080249DC +sub_080249DC: @ 0x080249DC + push {lr} + ldrb r1, [r0, #0x15] + adds r1, #2 + movs r2, #0x1c + ands r1, r2 + lsrs r1, r1, #2 + strb r1, [r0, #0x14] + ldrb r1, [r0, #0x14] + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080249F4 +sub_080249F4: @ 0x080249F4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0x15] + adds r1, r0, #2 + movs r0, #0x1f + ands r1, r0 + lsrs r1, r1, #2 + ldrb r0, [r2, #0x14] + cmp r1, r0 + beq _08024A12 + strb r1, [r2, #0x14] + ldrb r1, [r2, #0x14] + adds r0, r2, #0 + bl sub_08004260 +_08024A12: + pop {pc} + + thumb_func_start sub_08024A14 +sub_08024A14: @ 0x08024A14 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + movs r6, #0 + cmp r5, #1 + beq _08024A40 + cmp r5, #1 + blo _08024A30 + cmp r5, #2 + beq _08024A5E + cmp r5, #3 + beq _08024A84 + b _08024A9E +_08024A30: + adds r0, r4, #0 + bl sub_08049EE4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + b _08024A9C +_08024A40: + adds r0, r4, #0 + movs r1, #0 + bl sub_08024C48 + cmp r0, #0 + beq _08024A9E + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + b _08024A9C +_08024A5E: + adds r0, r4, #0 + movs r1, #1 + bl sub_08024C48 + cmp r0, #0 + beq _08024A9E + ldr r0, _08024A80 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + b _08024A9C + .align 2, 0 +_08024A80: .4byte gUnk_020000B0 +_08024A84: + adds r0, r4, #0 + movs r1, #1 + bl sub_08024C48 + cmp r0, #0 + beq _08024A9E + ldr r0, _08024AD4 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] +_08024A9C: + movs r6, #1 +_08024A9E: + cmp r5, #0 + beq _08024ABA + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08024ABA + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _08024ABA + movs r6, #0 +_08024ABA: + cmp r6, #0 + bne _08024AC8 + adds r0, r4, #0 + movs r1, #0 + adds r2, r7, #0 + bl sub_08024A14 +_08024AC8: + adds r0, r4, #0 + bl sub_080249DC + strb r7, [r4, #0xf] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08024AD4: .4byte gUnk_020000B0 + + thumb_func_start sub_08024AD8 +sub_08024AD8: @ 0x08024AD8 + push {r4, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x83 + ldrb r2, [r3] + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + bne _08024B2A + movs r1, #0 + movs r0, #0x3f + ands r0, r2 + cmp r0, #3 + bne _08024B12 + ldr r0, _08024B0C @ =gUnk_03003F80 + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _08024B10 + ldr r0, [r4, #0x54] + str r1, [r0, #0x50] + str r1, [r4, #0x54] + movs r0, #0xc0 + strb r0, [r3] + movs r0, #0 + b _08024B34 + .align 2, 0 +_08024B0C: .4byte gUnk_03003F80 +_08024B10: + movs r1, #1 +_08024B12: + adds r0, r4, #0 + bl sub_08024C48 + cmp r0, #0 + bne _08024B32 + str r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0xc0 + strb r0, [r1] + movs r0, #0 + b _08024B34 +_08024B2A: + adds r0, r4, #0 + bl sub_08024B38 + b _08024B34 +_08024B32: + movs r0, #1 +_08024B34: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08024B38 +sub_08024B38: @ 0x08024B38 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r7, #0 + ldr r0, _08024B5C @ =gUnk_03003F80 + ldrb r3, [r0, #0xf] + adds r2, r3, #0 + adds r1, r0, #0 + cmp r2, #0 + beq _08024BA0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #1 + bne _08024B62 + cmp r2, #3 + bls _08024B60 + subs r0, r3, #3 + strb r0, [r1, #0xf] + b _08024B62 + .align 2, 0 +_08024B5C: .4byte gUnk_03003F80 +_08024B60: + strb r7, [r1, #0xf] +_08024B62: + ldrb r0, [r1, #0xf] + cmp r0, #0 + beq _08024BA0 + adds r0, r5, #0 + movs r1, #1 + bl sub_08024C48 + cmp r0, #0 + beq _08024C3C + ldr r4, _08024B9C @ =gUnk_020000B0 + ldr r1, [r4] + adds r0, r5, #0 + movs r2, #0xa0 + bl sub_08049F1C + cmp r0, #0 + beq _08024C3C + movs r7, #1 + ldr r0, [r4] + str r0, [r5, #0x54] + adds r2, r5, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #3 + orrs r0, r1 + movs r1, #0xbf + ands r0, r1 + strb r0, [r2] + b _08024C3C + .align 2, 0 +_08024B9C: .4byte gUnk_020000B0 +_08024BA0: + movs r0, #8 + movs r1, #2 + movs r2, #2 + bl sub_0805EB00 + adds r4, r0, #0 + cmp r4, #0 + beq _08024BF0 + adds r6, r5, #0 + adds r6, #0x83 + b _08024BC4 +_08024BB6: + adds r0, r4, #0 + movs r1, #2 + bl sub_0805EB64 + adds r4, r0, #0 + cmp r4, #0 + beq _08024BF0 +_08024BC4: + ldrb r0, [r4, #0xc] + cmp r0, #2 + beq _08024BB6 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08024BB6 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0xa0 + bl sub_08049F1C + cmp r0, #0 + beq _08024BB6 + movs r7, #1 + str r4, [r5, #0x54] + ldrb r0, [r6] + movs r1, #1 + orrs r1, r0 + movs r0, #0xbf + ands r1, r0 + strb r1, [r6] +_08024BF0: + cmp r7, #0 + bne _08024C42 + movs r0, #6 + movs r1, #5 + movs r2, #6 + bl sub_0805EB00 + adds r4, r0, #0 + cmp r4, #0 + beq _08024C3C + adds r6, r5, #0 + adds r6, #0x83 + b _08024C18 +_08024C0A: + adds r0, r4, #0 + movs r1, #6 + bl sub_0805EB64 + adds r4, r0, #0 + cmp r4, #0 + beq _08024C3C +_08024C18: + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _08024C0A + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0xa0 + bl sub_08049F1C + cmp r0, #0 + beq _08024C0A + movs r7, #1 + str r4, [r5, #0x54] + ldrb r0, [r6] + movs r1, #2 + orrs r1, r0 + movs r0, #0xbf + ands r1, r0 + strb r1, [r6] +_08024C3C: + cmp r7, #0 + bne _08024C42 + str r7, [r5, #0x54] +_08024C42: + adds r0, r7, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08024C48 +sub_08024C48: @ 0x08024C48 + push {r4, r5, lr} + adds r3, r0, #0 + movs r4, #1 + cmp r1, #0 + beq _08024C60 + movs r0, #3 + bl sub_08049DF4 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + b _08024C78 +_08024C60: + ldr r2, [r3, #0x54] + cmp r2, #0 + beq _08024C74 + ldr r0, [r2, #4] + cmp r0, #0 + beq _08024C74 + movs r5, #0x36 + ldrsh r0, [r2, r5] + cmp r0, #0 + bge _08024C78 +_08024C74: + str r1, [r3, #0x54] + movs r4, #0 +_08024C78: + adds r0, r4, #0 + pop {r4, r5, pc} + + thumb_func_start sub_08024C7C +sub_08024C7C: @ 0x08024C7C + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r2, #0 + movs r1, #0x40 + strh r1, [r0, #0x24] + strb r2, [r0, #0xe] + movs r1, #0 + movs r2, #0x20 + bl sub_08024A14 + pop {pc} + + thumb_func_start sub_08024C94 +sub_08024C94: @ 0x08024C94 + push {lr} + movs r2, #0 + movs r1, #2 + strb r1, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x80 + strb r2, [r1] + movs r1, #0x40 + strb r1, [r0, #0xe] + strb r2, [r0, #0xf] + movs r1, #0xc0 + strh r1, [r0, #0x24] + adds r2, r0, #0 + adds r2, #0x83 + movs r1, #0x80 + strb r1, [r2] + ldrb r2, [r0, #0xf] + movs r1, #3 + bl sub_08024A14 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08024CC0 +sub_08024CC0: @ 0x08024CC0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #1 + movs r1, #1 + bl sub_08024C48 + cmp r0, #0 + bne _08024CD4 + movs r5, #0 + b _08024CF8 +_08024CD4: + ldr r0, _08024CFC @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x50 + bl sub_08049F1C + cmp r0, #0 + beq _08024CF0 + adds r0, r4, #0 + movs r1, #3 + bl sub_08049FDC + cmp r0, #0 + bne _08024CF8 +_08024CF0: + movs r5, #0 + adds r0, r4, #0 + bl sub_08024C7C +_08024CF8: + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 +_08024CFC: .4byte gUnk_020000B0 + + thumb_func_start sub_08024D00 +sub_08024D00: @ 0x08024D00 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x86 + ldrb r0, [r1] + cmp r0, #0 + beq _08024D1A + subs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08004274 + b _08024D20 +_08024D1A: + adds r0, r4, #0 + bl sub_08024940 +_08024D20: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08024D46 + adds r0, r4, #0 + bl sub_08024B38 + cmp r0, #0 + beq _08024D46 + movs r0, #6 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #2 + strb r0, [r1] + b _08024DFC +_08024D46: + adds r0, r4, #0 + bl sub_08024CC0 + cmp r0, #0 + beq _08024DFC + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + cmp r0, #0 + beq _08024D60 + cmp r0, #1 + beq _08024DAE + b _08024DFC +_08024D60: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08024DFC + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + adds r0, #0x20 + strb r0, [r4, #0xe] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r1, [r0] + adds r3, r0, #0 + cmp r1, #0 + beq _08024D90 + adds r1, r2, #4 + b _08024D94 +_08024D90: + adds r1, r2, #0 + adds r1, #0x1c +_08024D94: + movs r0, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + ldrb r0, [r3] + movs r1, #0x40 + eors r0, r1 + strb r0, [r3] + adds r0, r4, #0 + movs r1, #3 + movs r2, #0x10 + bl sub_08024A14 + b _08024DFC +_08024DAE: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08024DCE + strb r0, [r1] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x20 + strb r0, [r4, #0xe] + b _08024DFC +_08024DCE: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r2 + cmp r0, #0 + bne _08024DFC + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _08024DEA + adds r1, #1 + b _08024DEC +_08024DEA: + adds r1, #0x1f +_08024DEC: + movs r0, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_080249DC +_08024DFC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08024E00 +sub_08024E00: @ 0x08024E00 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08024E34 + ldr r1, _08024E18 @ =gUnk_080CBF10 + lsls r0, r0, #1 + orrs r0, r4 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0xe] + pop {r4, r5, pc} + .align 2, 0 +_08024E18: .4byte gUnk_080CBF10 + + thumb_func_start sub_08024E1C +sub_08024E1C: @ 0x08024E1C + push {r4, lr} + adds r4, r0, #0 + bl sub_08024E34 + ldr r1, _08024E30 @ =gUnk_080CBF18 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 +_08024E30: .4byte gUnk_080CBF18 + + thumb_func_start sub_08024E34 +sub_08024E34: @ 0x08024E34 + push {lr} + bl sub_08000E50 + movs r1, #0x3c + ands r1, r0 + lsrs r1, r1, #2 + ldr r0, _08024E48 @ =gUnk_080CBF20 + adds r1, r1, r0 + ldrb r0, [r1] + pop {pc} + .align 2, 0 +_08024E48: .4byte gUnk_080CBF20 + + thumb_func_start sub_08024E4C +sub_08024E4C: @ 0x08024E4C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #3 + bne _08024F46 + ldrb r0, [r4, #0xf] + adds r0, #1 + movs r7, #0 + movs r1, #0xff + ands r0, r1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0xf] + bl sub_0807953C + cmp r0, #0 + beq _08024E84 + bl sub_08000E50 + adds r3, r4, #0 + adds r3, #0x84 + ldrb r2, [r3] + adds r2, #1 + movs r1, #1 + ands r1, r0 + adds r2, r2, r1 + strb r2, [r3] +_08024E84: + ldr r0, _08024EC8 @ =gUnk_02002A40 + adds r0, #0xaa + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x87 + cmp r0, #0 + beq _08024E9A + adds r5, r2, #0 + ldrb r0, [r5] + cmp r0, #4 + bne _08024ECC +_08024E9A: + adds r1, r4, #0 + adds r1, #0x84 + movs r0, #0x30 + strb r0, [r1] + strb r7, [r2] + adds r0, r4, #0 + bl sub_08024F50 + adds r0, r4, #0 + adds r0, #0x80 + strb r7, [r0] + movs r1, #0x40 + movs r0, #0x40 + strh r0, [r4, #0x24] + strb r1, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + movs r2, #8 + bl sub_08024A14 + b _08024F46 + .align 2, 0 +_08024EC8: .4byte gUnk_02002A40 +_08024ECC: + ldr r6, _08024F48 @ =gLinkEntity + bl sub_08077B2C + ldr r2, _08024F4C @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldrb r0, [r2, #0xa] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0xa] + movs r0, #0xe + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #0x14 + strb r0, [r1] + adds r1, #1 + movs r0, #1 + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3a + strb r7, [r0] + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + bl sub_0806FA48 + adds r1, r6, #0 + adds r1, #0x63 + movs r0, #0x1a + strb r0, [r1] + movs r0, #4 + strb r0, [r6, #0x14] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3d + ands r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08024F46 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + adds r1, r6, #0 + adds r1, #0x3d + movs r0, #8 + strb r0, [r1] + subs r0, #0xa + bl sub_080526A0 + adds r0, r6, #0 + movs r1, #0x7a + bl sub_0800449C +_08024F46: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08024F48: .4byte gLinkEntity +_08024F4C: .4byte gUnk_03003F80 + + thumb_func_start sub_08024F50 +sub_08024F50: @ 0x08024F50 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r2, _08024FDC @ =gUnk_03003F80 + movs r4, #0 + strb r4, [r2, #0xa] + ldr r0, [r2, #0x30] + ldr r1, _08024FE0 @ =0xFFFFFEFF + ands r0, r1 + str r0, [r2, #0x30] + ldr r5, _08024FE4 @ =gLinkEntity + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0806FA24 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #0xc4 + strb r0, [r1] + ldrb r0, [r5, #0x14] + lsls r0, r0, #2 + strb r0, [r5, #0x15] + movs r3, #0 + strh r4, [r5, #0x24] + adds r0, r6, #0 + adds r0, #0x85 + ldrb r0, [r0] + adds r4, r5, #0 + adds r4, #0x29 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #0 + ldrsb r0, [r1, r0] + strh r0, [r5, #0x36] + strb r3, [r1] + adds r2, r6, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r6, #0 + adds r1, #0x83 + movs r0, #0xc0 + strb r0, [r1] + subs r1, #3 + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + adds r0, r6, #0 + adds r0, #0x84 + strb r3, [r0] + movs r0, #0x80 + strh r0, [r6, #0x24] + pop {r4, r5, r6, pc} + .align 2, 0 +_08024FDC: .4byte gUnk_03003F80 +_08024FE0: .4byte 0xFFFFFEFF +_08024FE4: .4byte gLinkEntity + + thumb_func_start sub_08024FE8 +sub_08024FE8: @ 0x08024FE8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08025004 @ =gUnk_080CBF9C + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08025004: .4byte gUnk_080CBF9C + + thumb_func_start sub_08025008 +sub_08025008: @ 0x08025008 + push {lr} + ldr r2, _0802501C @ =gUnk_080CBFB4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802501C: .4byte gUnk_080CBFB4 + + thumb_func_start sub_08025020 +sub_08025020: @ 0x08025020 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + blt _080250C2 + cmp r1, #3 + ble _0802510C + cmp r1, #0x1b + bne _080250C2 + adds r0, r4, #0 + bl sub_0804AA1C + ldr r1, _08025058 @ =gUnk_080CBFE8 + ldr r0, [r4, #0x4c] + ldrb r0, [r0, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + adds r3, r4, #0 + adds r3, #0x82 + ldrb r0, [r3] + cmp r1, r0 + bhs _0802505C + subs r0, r0, r1 + strb r0, [r3] + b _08025078 + .align 2, 0 +_08025058: .4byte gUnk_080CBFE8 +_0802505C: + adds r1, r4, #0 + adds r1, #0x84 + movs r2, #0 + movs r0, #0xa5 + lsls r0, r0, #2 + strh r0, [r1] + subs r1, #0x45 + movs r0, #0x83 + strb r0, [r1] + strb r2, [r3] + adds r0, r4, #0 + movs r1, #0x7c + bl sub_0801D2B4 +_08025078: + movs r2, #0 + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r0, [r4, #0x20] + cmp r0, #0 + ble _0802508A + str r2, [r4, #0x20] +_0802508A: + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xf4 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x42 + strb r2, [r0] + adds r5, r4, #0 + adds r5, #0x80 + ldrb r0, [r5] + cmp r0, #0 + bne _0802510C + ldr r0, [r4, #0x4c] + ldrb r0, [r0, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + adds r1, r4, #0 + adds r1, #0x59 + movs r0, #6 + strb r0, [r1] + movs r0, #1 + strb r0, [r5] + b _0802510C +_080250C2: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x82 + bne _0802510C + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _0802510C + movs r0, #0x21 + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08025104 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #3 + orrs r1, r0 + strb r1, [r3] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0806FA24 +_08025104: + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_08004488 +_0802510C: + ldr r1, _08025118 @ =gUnk_080CBF9C + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_08025118: .4byte gUnk_080CBF9C + + thumb_func_start sub_0802511C +sub_0802511C: @ 0x0802511C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3a + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08025142 + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _08025142 + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + beq _08025142 + adds r0, r4, #0 + bl sub_08025B18 +_08025142: + adds r0, r4, #0 + bl sub_0804A7D4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802514C +sub_0802514C: @ 0x0802514C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08025178 + ldr r0, _08025174 @ =gUnk_080CBFEC + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0802517E + .align 2, 0 +_08025174: .4byte gUnk_080CBFEC +_08025178: + adds r0, r4, #0 + bl sub_08025C2C +_0802517E: + pop {r4, pc} + + thumb_func_start sub_08025180 +sub_08025180: @ 0x08025180 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + strb r0, [r4, #0xe] + ldr r0, [r4, #0x4c] + ldrb r0, [r0, #0x15] + movs r1, #0x10 + eors r0, r1 + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0804AA1C + pop {r4, pc} + + thumb_func_start sub_080251AC +sub_080251AC: @ 0x080251AC + push {r4, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x82 + ldrb r0, [r3] + cmp r0, #3 + bls _080251D8 + subs r0, #3 + strb r0, [r3] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _080251F4 + adds r0, r4, #0 + bl sub_08025BD4 + b _080251F4 +_080251D8: + adds r1, r4, #0 + adds r1, #0x84 + movs r2, #0 + movs r0, #0xa5 + lsls r0, r0, #2 + strh r0, [r1] + subs r1, #0x45 + movs r0, #0x83 + strb r0, [r1] + strb r2, [r3] + adds r0, r4, #0 + movs r1, #0x7c + bl sub_0801D2B4 +_080251F4: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080251FC +sub_080251FC: @ 0x080251FC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0804A720 + adds r1, r4, #0 + adds r1, #0x82 + movs r5, #0 + movs r0, #0xf0 + strb r0, [r1] + bl sub_08000E50 + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x80 + strb r5, [r0] + adds r0, r4, #0 + bl sub_080256B4 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08025230 +sub_08025230: @ 0x08025230 + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x81 + ldrb r0, [r1] + cmp r0, #0 + beq _08025242 + subs r0, #1 + strb r0, [r1] +_08025242: + adds r0, r4, #0 + bl sub_08025C44 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08025270 + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + adds r0, #4 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08025C60 + strb r0, [r4, #0x15] +_08025270: + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0802528C + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _08025290 + ldrh r1, [r4, #0x2a] + adds r0, r4, #0 + bl sub_0800417E + b _08025290 +_0802528C: + movs r0, #0x1e + strb r0, [r4, #0xf] +_08025290: + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + cmp r0, #0 + bne _080252D8 + adds r0, r4, #0 + bl sub_0802571C + cmp r0, #0 + beq _080252DC + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xf0 + strb r0, [r4, #0xe] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _080252D4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x86 + strh r1, [r0] + b _080252DC + .align 2, 0 +_080252D4: .4byte gUnk_03000BF0 +_080252D8: + subs r0, #1 + strh r0, [r1] +_080252DC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080252E0 +sub_080252E0: @ 0x080252E0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r4, #0 + adds r2, #0x7c + ldrh r2, [r2] + adds r3, r4, #0 + adds r3, #0x7e + ldrh r3, [r3] + bl sub_080045D4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08025C44 + adds r0, r4, #0 + bl sub_08004274 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r3, _08025348 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r2, [r0] + cmp r5, r2 + bne _0802534C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08025352 + adds r0, r4, #0 + bl sub_080256B4 + b _08025352 + .align 2, 0 +_08025348: .4byte gUnk_03000BF0 +_0802534C: + strh r5, [r0] + movs r0, #0xf0 + strb r0, [r4, #0xe] +_08025352: + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r0, r4, #0 + adds r0, #0x7c + ldrh r0, [r0] + cmp r1, r0 + bne _08025388 + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r1, r4, #0 + adds r1, #0x7e + ldrh r1, [r1] + cmp r0, r1 + bne _08025388 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08025388: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802538C +sub_0802538C: @ 0x0802538C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802539C + subs r0, #1 + strb r0, [r4, #0xe] + b _080253CC +_0802539C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + bne _080253AE + adds r0, r4, #0 + bl sub_08004274 + b _080253CC +_080253AE: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + ldr r1, [r4, #0x20] + ldr r0, _080253D0 @ =0x00001FFF + cmp r1, r0 + bgt _080253CC + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_080253CC: + pop {r4, pc} + .align 2, 0 +_080253D0: .4byte 0x00001FFF + + thumb_func_start sub_080253D4 +sub_080253D4: @ 0x080253D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0802541A + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080253FE + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + b _0802541A +_080253FE: + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08025A54 + adds r0, r4, #0 + bl sub_08025AE8 +_0802541A: + pop {r4, pc} + + thumb_func_start sub_0802541C +sub_0802541C: @ 0x0802541C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08025448 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xf] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08025448: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802544C +sub_0802544C: @ 0x0802544C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + bne _08025460 + adds r0, r4, #0 + bl sub_08004274 + b _0802547A +_08025460: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802547A + adds r0, r4, #0 + bl sub_080256B4 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0802547A: + pop {r4, pc} + + thumb_func_start sub_0802547C +sub_0802547C: @ 0x0802547C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 + ldrb r1, [r4, #0xe] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0802549E + adds r0, r4, #0 + bl sub_08025BD4 +_0802549E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080254B0 + adds r0, r4, #0 + bl sub_08025C2C +_080254B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080254B4 +sub_080254B4: @ 0x080254B4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802550C + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08025512 + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + cmp r0, #0 + bne _080254F6 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x82 + strb r0, [r1] + adds r1, #0x43 + movs r0, #0xf0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080256B4 + b _08025502 +_080254F6: + movs r0, #0xc + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08025502: + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _08025512 +_0802550C: + adds r0, r4, #0 + bl sub_08004274 +_08025512: + pop {r4, pc} + + thumb_func_start sub_08025514 +sub_08025514: @ 0x08025514 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r1, [r4, #0xe] + adds r0, r1, #1 + strb r0, [r4, #0xe] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0802594C + cmp r0, #0 + beq _08025542 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xf0 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x78 + strb r0, [r1] + b _08025550 +_08025542: + ldrb r0, [r4, #0xe] + cmp r0, #3 + bls _08025550 + movs r0, #0xa + strb r0, [r4, #0xc] + movs r0, #0x20 + strb r0, [r4, #0xe] +_08025550: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08025554 +sub_08025554: @ 0x08025554 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r2, r0, #0 + cmp r2, #0 + bne _0802556C + adds r0, r4, #0 + bl sub_080256B4 + b _080255A8 +_0802556C: + ldrb r1, [r4, #0xe] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08025580 + adds r0, r2, #0 + adds r1, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] +_08025580: + adds r0, r4, #0 + bl sub_08025C44 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08025598 + subs r0, #1 + strb r0, [r4, #0xe] + b _080255A8 +_08025598: + adds r0, r4, #0 + bl sub_080258C4 + cmp r0, #0 + bne _080255A8 + adds r0, r4, #0 + bl sub_080256B4 +_080255A8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080255AC +sub_080255AC: @ 0x080255AC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r6, r0, #0 + cmp r6, #0 + bne _080255C4 + adds r0, r5, #0 + bl sub_080256B4 + b _08025638 +_080255C4: + adds r1, r5, #0 + adds r1, #0x81 + ldrb r0, [r1] + cmp r0, #0 + beq _080255D2 + subs r0, #1 + strb r0, [r1] +_080255D2: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802560C + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + adds r0, #4 + strb r0, [r5, #0xe] + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #0xf + ands r4, r0 + cmp r4, #7 + bgt _080255FA + subs r4, #1 +_080255FA: + subs r4, #7 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080045C4 + adds r0, r0, r4 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] +_0802560C: + adds r1, r5, #0 + adds r1, #0x78 + ldrh r0, [r1] + cmp r0, #0 + bne _08025628 + adds r0, r5, #0 + bl sub_080258C4 + cmp r0, #0 + bne _0802562C + adds r0, r5, #0 + bl sub_080256B4 + b _0802562C +_08025628: + subs r0, #1 + strh r0, [r1] +_0802562C: + adds r0, r5, #0 + bl sub_08025C44 + adds r0, r5, #0 + bl sub_08004274 +_08025638: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802563C +sub_0802563C: @ 0x0802563C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x84 + ldrh r0, [r2] + subs r1, r0, #1 + strh r1, [r2] + lsls r0, r1, #0x10 + cmp r0, #0 + bne _08025678 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0801D2B4 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x82 + strb r0, [r1] + adds r1, #0x43 + movs r0, #0xf0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080256B4 + adds r0, r4, #0 + bl sub_0804AA1C + b _080256B0 +_08025678: + lsls r1, r1, #0x10 + lsrs r0, r1, #0x10 + cmp r0, #0x77 + bhi _080256B0 + ldr r0, _080256A4 @ =gUnk_080CBFF8 + lsrs r1, r1, #0x14 + adds r1, r1, r0 + ldrb r1, [r1] + ldrh r2, [r2] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _080256B0 + adds r0, r1, #1 + ands r2, r0 + cmp r2, #0 + beq _080256A8 + adds r0, r4, #0 + movs r1, #0x7c + bl sub_0801D2B4 + b _080256B0 + .align 2, 0 +_080256A4: .4byte gUnk_080CBFF8 +_080256A8: + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0801D2B4 +_080256B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080256B4 +sub_080256B4: @ 0x080256B4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + adds r0, #4 + strb r0, [r5, #0xe] + movs r0, #0x1e + strb r0, [r5, #0xf] + bl sub_08000E50 + ldrb r4, [r5, #0x15] + adds r4, #7 + movs r1, #7 + bl __modsi3 + lsls r0, r0, #2 + adds r4, r4, r0 + movs r0, #0x1c + ands r4, r0 + strb r4, [r5, #0x15] + bl sub_08000E50 + ldr r2, _08025718 @ =gUnk_080CC000 + movs r1, #0xf + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + adds r0, r5, #0 + adds r0, #0x78 + movs r4, #0 + strh r1, [r0] + bl sub_08000E50 + movs r1, #0x18 + bl __modsi3 + lsls r0, r0, #1 + adds r1, r5, #0 + adds r1, #0x7a + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x7b + strb r4, [r0] + pop {r4, r5, pc} + .align 2, 0 +_08025718: .4byte gUnk_080CC000 + + thumb_func_start sub_0802571C +sub_0802571C: @ 0x0802571C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r7, r0, #0 + ldr r0, _080257B0 @ =gUnk_03000BF0 + mov sb, r0 + ldrh r0, [r7, #0x2e] + mov r2, sb + ldrh r1, [r2, #6] + subs r0, r0, r1 + adds r0, #8 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + ldrh r0, [r7, #0x32] + mov r3, sb + ldrh r1, [r3, #8] + subs r0, r0, r1 + adds r0, #8 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov sl, r0 + adds r0, r7, #0 + adds r0, #0x7a + ldrb r4, [r0] + movs r3, #0 + ldr r0, _080257B4 @ =gUnk_080CC020 + mov r8, r0 +_08025764: + mov r1, r8 + adds r0, r4, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r2, [sp] + adds r0, r2, r0 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r4, #1 + add r0, r8 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + add r0, sl + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + str r3, [sp, #4] + bl sub_080257EC + ldr r3, [sp, #4] + cmp r0, #0 + beq _080257B8 + mov r3, sb + ldrh r0, [r3, #6] + adds r0, r6, r0 + adds r1, r7, #0 + adds r1, #0x7c + strh r0, [r1] + ldrh r0, [r3, #8] + adds r0, r5, r0 + adds r1, #2 + strh r0, [r1] + movs r0, #1 + b _080257E0 + .align 2, 0 +_080257B0: .4byte gUnk_03000BF0 +_080257B4: .4byte gUnk_080CC020 +_080257B8: + adds r0, r4, #2 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + cmp r4, #0x2f + bls _080257C4 + movs r4, #0 +_080257C4: + adds r0, r3, #1 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r3, #3 + bls _08025764 + adds r0, r7, #0 + adds r0, #0x7a + strb r4, [r0] + adds r1, r7, #0 + adds r1, #0x7b + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0 +_080257E0: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080257EC +sub_080257EC: @ 0x080257EC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_080002A8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080258B0 @ =0x00000312 + cmp r2, r0 + beq _08025822 + ldr r0, _080258B4 @ =gUnk_080B37A0 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0x16 + beq _08025822 + ldr r0, _080258B8 @ =gUnk_080B3E80 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _080258AA +_08025822: + adds r5, r7, #0 + subs r5, #0x10 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080002A8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080258B0 @ =0x00000312 + mov r8, r4 + cmp r2, r0 + beq _08025852 + ldr r0, _080258B4 @ =gUnk_080B37A0 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0x16 + beq _08025852 + ldr r0, _080258B8 @ =gUnk_080B3E80 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _080258AA +_08025852: + adds r4, r6, #0 + subs r4, #0x10 + mov r0, r8 + ldrb r2, [r0] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080002A8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080258B0 @ =0x00000312 + adds r1, r4, #0 + cmp r2, r0 + beq _08025882 + ldr r0, _080258B4 @ =gUnk_080B37A0 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0x16 + beq _08025882 + ldr r0, _080258B8 @ =gUnk_080B3E80 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _080258AA +_08025882: + mov r0, r8 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_080002A8 + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + ldr r0, _080258B0 @ =0x00000312 + cmp r2, r0 + beq _080258BC + ldr r0, _080258B4 @ =gUnk_080B37A0 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0x16 + beq _080258BC + ldr r0, _080258B8 @ =gUnk_080B3E80 + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _080258BC +_080258AA: + movs r0, #1 + b _080258BE + .align 2, 0 +_080258B0: .4byte 0x00000312 +_080258B4: .4byte gUnk_080B37A0 +_080258B8: .4byte gUnk_080B3E80 +_080258BC: + movs r0, #0 +_080258BE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080258C4 +sub_080258C4: @ 0x080258C4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r2, r0, #0 + cmp r2, #0 + beq _08025922 + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r3, #0x2e + ldrsh r0, [r4, r3] + subs r3, r1, r0 + adds r0, r3, #0 + muls r0, r3, r0 + adds r3, r0, #0 + movs r1, #0x32 + ldrsh r0, [r2, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r0, #0 + muls r1, r0, r1 + adds r0, r1, #0 + adds r3, r3, r0 + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + cmp r0, #0 + bne _0802591A + adds r0, r4, #0 + adds r0, #0x81 + ldrb r1, [r0] + cmp r1, #0 + bne _0802591A + movs r0, #0x80 + lsls r0, r0, #3 + cmp r3, r0 + bgt _0802591A + movs r0, #9 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + b _08025942 +_0802591A: + movs r0, #0x90 + lsls r0, r0, #4 + cmp r3, r0 + ble _08025926 +_08025922: + movs r0, #0 + b _08025944 +_08025926: + movs r0, #0xb + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xe] + bl sub_08000E50 + ldr r2, _08025948 @ =gUnk_080CC050 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] +_08025942: + movs r0, #1 +_08025944: + pop {r4, pc} + .align 2, 0 +_08025948: .4byte gUnk_080CC050 + + thumb_func_start sub_0802594C +sub_0802594C: @ 0x0802594C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + mov sl, r0 + ldr r0, _08025A20 @ =gUnk_080CC090 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r7, [r1] + mov r0, sl + adds r0, #0x38 + ldrb r0, [r0] + mov sb, r0 + ldr r3, _08025A24 @ =gUnk_03000BF0 + mov r1, sl + ldrh r0, [r1, #0x2e] + ldrh r1, [r3, #6] + subs r0, r0, r1 + adds r0, #8 + movs r1, #0x10 + rsbs r1, r1, #0 + adds r2, r1, #0 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp] + mov r1, sl + ldrh r0, [r1, #0x32] + ldrh r1, [r3, #8] + subs r0, r0, r1 + adds r0, #8 + ands r0, r2 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [sp, #4] +_08025996: + movs r0, #0 + ldrsb r0, [r7, r0] + ldr r1, [sp] + lsls r4, r1, #0x10 + asrs r4, r4, #0x10 + adds r4, r4, r0 + lsls r4, r4, #0x10 + movs r0, #1 + ldrsb r0, [r7, r0] + ldr r1, [sp, #4] + lsls r5, r1, #0x10 + asrs r5, r5, #0x10 + adds r5, r5, r0 + lsls r5, r5, #0x10 + lsrs r0, r4, #0x10 + str r0, [sp, #8] + asrs r4, r4, #0x10 + lsrs r1, r5, #0x10 + str r1, [sp, #0xc] + asrs r5, r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sb + bl sub_080002D4 + adds r6, r0, #0 + lsls r6, r6, #0x18 + lsrs r6, r6, #0x18 + movs r0, #0x10 + rsbs r0, r0, #0 + adds r0, r0, r4 + mov r8, r0 + adds r1, r5, #0 + mov r2, sb + bl sub_080002D4 + adds r3, r0, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + subs r5, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + mov r2, sb + str r3, [sp, #0x10] + bl sub_080002D4 + adds r4, r0, #0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + mov r0, r8 + adds r1, r5, #0 + mov r2, sb + bl sub_080002D4 + ldr r3, [sp, #0x10] + orrs r6, r3 + orrs r4, r6 + orrs r4, r0 + lsls r4, r4, #0x18 + cmp r4, #0 + beq _08025A28 + adds r7, #2 + movs r0, #0 + ldrsb r0, [r7, r0] + cmp r0, #0x7f + bne _08025996 + movs r0, #0 + b _08025A44 + .align 2, 0 +_08025A20: .4byte gUnk_080CC090 +_08025A24: .4byte gUnk_03000BF0 +_08025A28: + ldr r2, _08025A50 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldr r1, [sp, #8] + adds r0, r0, r1 + mov r1, sl + adds r1, #0x7c + strh r0, [r1] + ldrh r0, [r2, #8] + ldr r1, [sp, #0xc] + adds r0, r0, r1 + mov r1, sl + adds r1, #0x7e + strh r0, [r1] + movs r0, #1 +_08025A44: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08025A50: .4byte gUnk_03000BF0 + + thumb_func_start sub_08025A54 +sub_08025A54: @ 0x08025A54 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r1, r0, #0 + adds r1, #0x38 + ldrb r1, [r1] + mov sb, r1 + ldr r3, _08025AB0 @ =gUnk_03000BF0 + ldrh r2, [r0, #0x2e] + ldrh r1, [r3, #6] + subs r2, r2, r1 + ldrh r1, [r0, #0x32] + ldrh r0, [r3, #8] + subs r1, r1, r0 + ldr r4, _08025AB4 @ =gUnk_080CC0A0 + movs r5, #0 + lsls r2, r2, #0x10 + asrs r2, r2, #0x10 + mov r8, r2 + movs r6, #0x3f + lsls r1, r1, #0x10 + asrs r7, r1, #0x10 +_08025A82: + movs r0, #0 + ldrsb r0, [r4, r0] + add r0, r8 + asrs r0, r0, #4 + ands r0, r6 + movs r1, #1 + ldrsb r1, [r4, r1] + adds r1, r7, r1 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + mov r1, sb + bl sub_08025AB8 + adds r5, #1 + adds r4, #2 + cmp r5, #3 + bls _08025A82 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08025AB0: .4byte gUnk_03000BF0 +_08025AB4: .4byte gUnk_080CC0A0 + + thumb_func_start sub_08025AB8 +sub_08025AB8: @ 0x08025AB8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080002E0 + cmp r0, #0 + bne _08025AD6 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_080002C8 + cmp r0, #0xa + beq _08025ADA +_08025AD6: + movs r0, #0 + b _08025AE6 +_08025ADA: + movs r0, #0x61 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0807B7D8 + movs r0, #1 +_08025AE6: + pop {r4, r5, pc} + + thumb_func_start sub_08025AE8 +sub_08025AE8: @ 0x08025AE8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x22 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08025B00 + ldr r0, [r1, #0x30] + subs r0, #1 + str r0, [r1, #0x30] +_08025B00: + adds r0, r4, #0 + movs r1, #0x23 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08025B16 + ldr r0, [r1, #0x30] + adds r0, #1 + str r0, [r1, #0x30] +_08025B16: + pop {r4, pc} + + thumb_func_start sub_08025B18 +sub_08025B18: @ 0x08025B18 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r6, r0, #0 + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _08025BC8 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + str r1, [sp] + movs r0, #0x32 + ldrsh r1, [r6, r0] + ldrh r0, [r2, #8] + subs r1, r1, r0 + str r1, [sp, #4] + adds r0, r6, #0 + adds r0, #0x38 + ldrb r0, [r0] + mov sl, r0 + ldr r5, _08025BCC @ =gUnk_080CC0A8 + movs r7, #0 + movs r1, #0x3f + mov r8, r1 + movs r2, #0x10 + rsbs r2, r2, #0 + mov sb, r2 +_08025B52: + movs r0, #0 + ldrsb r0, [r5, r0] + ldr r1, [sp] + adds r0, r1, r0 + asrs r0, r0, #4 + mov r2, r8 + ands r0, r2 + movs r1, #1 + ldrsb r1, [r5, r1] + ldr r2, [sp, #4] + adds r1, r2, r1 + asrs r1, r1, #4 + mov r2, r8 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + mov r1, sl + bl sub_08025AB8 + movs r0, #0x21 + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08025BB4 + movs r2, #0 + ldrsb r2, [r5, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r5, r3] + lsls r3, r3, #0x10 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA48 + ldrh r1, [r4, #0x2e] + mov r0, sb + ands r0, r1 + adds r0, #8 + strh r0, [r4, #0x2e] + ldrh r1, [r4, #0x32] + mov r0, sb + ands r0, r1 + adds r0, #8 + strh r0, [r4, #0x32] + ldr r0, _08025BD0 @ =0x0000FFFF + strh r0, [r4, #0x36] +_08025BB4: + adds r7, #1 + adds r5, #2 + cmp r7, #8 + bls _08025B52 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08025BC8: .4byte gUnk_03000BF0 +_08025BCC: .4byte gUnk_080CC0A8 +_08025BD0: .4byte 0x0000FFFF + + thumb_func_start sub_08025BD4 +sub_08025BD4: @ 0x08025BD4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + beq _08025C22 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08025C22 + movs r0, #0x21 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08025C22 + ldr r3, _08025C24 @ =gUnk_080CC0BA + ldrb r0, [r5, #0x14] + lsls r0, r0, #1 + adds r1, r0, r3 + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + adds r0, #1 + adds r0, r0, r3 + movs r3, #0 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + ldr r0, _08025C28 @ =0x0000FFF6 + strh r0, [r4, #0x36] +_08025C22: + pop {r4, r5, pc} + .align 2, 0 +_08025C24: .4byte gUnk_080CC0BA +_08025C28: .4byte 0x0000FFF6 + + thumb_func_start sub_08025C2C +sub_08025C2C: @ 0x08025C2C + push {lr} + movs r2, #0 + movs r1, #8 + strb r1, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x80 + strb r2, [r1] + movs r1, #8 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08025C44 +sub_08025C44: @ 0x08025C44 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08025C58 + movs r0, #0 + b _08025C5E +_08025C58: + adds r0, r2, #0 + bl sub_080AEF88 +_08025C5E: + pop {pc} + + thumb_func_start sub_08025C60 +sub_08025C60: @ 0x08025C60 + push {r4, lr} + adds r4, r0, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08025C80 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08025C80 + adds r0, r4, #0 + bl sub_08049EE4 + b _08025C98 +_08025C80: + bl sub_08000E50 + ldr r2, _08025C9C @ =gUnk_080CC0C2 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrb r4, [r4, #0x15] + adds r0, r0, r4 + movs r1, #0x1f + ands r0, r1 +_08025C98: + pop {r4, pc} + .align 2, 0 +_08025C9C: .4byte gUnk_080CC0C2 + + thumb_func_start sub_08025CA0 +sub_08025CA0: @ 0x08025CA0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08025CB8 @ =gUnk_080CC19C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08025CB8: .4byte gUnk_080CC19C + + thumb_func_start sub_08025CBC +sub_08025CBC: @ 0x08025CBC + push {r4, lr} + adds r4, r0, #0 + bl sub_08001324 + + thumb_func_start sub_08025CC4 +sub_08025CC4: @ 0x08025CC4 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08025CD0 + adds r0, r4, #0 + bl sub_08027870 +_08025CD0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08025CD4 +sub_08025CD4: @ 0x08025CD4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08078B48 + ldrb r3, [r4, #0xa] + cmp r3, #0 + bne _08025DA4 + ldrb r0, [r4, #0xd] + cmp r0, #0xc + beq _08025CFE + movs r0, #0xc + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r3, [r0, #3] + ldr r0, [r4, #0x54] + movs r1, #9 + bl sub_080042AC + b _08025D9C +_08025CFE: + adds r5, r4, #0 + adds r5, #0x84 + ldr r0, [r5] + ldrb r0, [r0, #3] + cmp r0, #0 + beq _08025D10 + cmp r0, #1 + beq _08025D28 + b _08025D9C +_08025D10: + adds r0, r4, #0 + movs r1, #0x3f + bl sub_08027C7C + ldr r0, [r5] + movs r1, #1 + strb r1, [r0, #3] + adds r1, r4, #0 + adds r1, #0x7d + movs r0, #0x78 + strb r0, [r1] + b _08025D9C +_08025D28: + adds r2, r4, #0 + adds r2, #0x7d + ldrb r0, [r2] + subs r1, r0, #1 + strb r1, [r2] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08025D84 + ldr r1, [r4, #0x54] + adds r1, #0x6d + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] + ldr r1, [r4, #0x68] + adds r1, #0x6d + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + ldr r1, [r4, #0x50] + adds r1, #0x6d + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + ldr r2, [r4, #0x54] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x68] + adds r0, #0x45 + strb r3, [r0] + adds r1, #0x45 + strb r3, [r1] + adds r2, #0x45 + strb r3, [r2] + ldr r0, _08025D80 @ =gUnk_02034490 + strb r3, [r0] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_0804A7D4 + b _08025D9C + .align 2, 0 +_08025D80: .4byte gUnk_02034490 +_08025D84: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0x3f + cmp r0, #0x50 + bhi _08025D96 + movs r1, #0xf + cmp r0, #0x1e + bls _08025D96 + movs r1, #0x1f +_08025D96: + adds r0, r4, #0 + bl sub_08027C7C +_08025D9C: + adds r0, r4, #0 + bl sub_08027870 + b _08025DBC +_08025DA4: + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08025DBC + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_08025DBC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08025DC0 +sub_08025DC0: @ 0x08025DC0 + push {lr} + ldr r2, _08025DD4 @ =gUnk_080CC1B0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08025DD4: .4byte gUnk_080CC1B0 + + thumb_func_start sub_08025DD8 +sub_08025DD8: @ 0x08025DD8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0xa] + cmp r1, #8 + bne _08025DF2 + movs r0, #4 + strb r0, [r5, #0xa] + ldr r0, [r5, #0x54] + ldr r0, [r0, #0x48] + str r0, [r5, #0x48] + b _0802605E +_08025DF2: + ldr r6, _08025E48 @ =gUnk_080CC1B8 + movs r4, #3 + movs r3, #3 + adds r0, r3, #0 + ands r0, r1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldrb r0, [r0, #1] + movs r1, #0x29 + adds r1, r1, r5 + mov ip, r1 + movs r1, #7 + ands r1, r0 + mov r0, ip + ldrb r2, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + adds r1, r5, #0 + adds r1, #0x76 + movs r0, #0xa0 + strh r0, [r1] + adds r1, #4 + strh r0, [r1] + adds r1, #4 + movs r0, #0 + strh r0, [r1] + ldrb r0, [r5, #0x19] + orrs r0, r4 + strb r0, [r5, #0x19] + ldrb r0, [r5, #0xa] + ands r3, r0 + cmp r3, #1 + bne _08025E4C + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC + b _08025E58 + .align 2, 0 +_08025E48: .4byte gUnk_080CC1B8 +_08025E4C: + lsls r0, r3, #2 + adds r0, r0, r6 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08004260 +_08025E58: + ldrb r0, [r5, #0xa] + movs r6, #3 + ands r6, r0 + cmp r6, #0 + beq _08025E86 + cmp r6, #0 + bge _08025E68 + b _08026050 +_08025E68: + cmp r6, #3 + ble _08025E6E + b _08026050 +_08025E6E: + ldr r4, [r5, #0x48] + adds r0, r5, #0 + bl sub_0806FBD8 + adds r1, r0, #0 + cmp r1, #0 + beq _08025E7E + b _08026020 +_08025E7E: + ldr r0, [r5, #0x68] + adds r0, #0x45 + strb r1, [r0] + b _0802605E +_08025E86: + strb r0, [r5, #0xb] + movs r0, #0x10 + bl sub_0801D8E0 + adds r4, r5, #0 + adds r4, #0x84 + str r0, [r4] + cmp r0, #0 + beq _08025EA2 + adds r0, r5, #0 + bl sub_0806FBD8 + cmp r0, #0 + bne _08025EAA +_08025EA2: + adds r0, r5, #0 + bl sub_0804A7D4 + b _0802605E +_08025EAA: + ldr r0, [r4] + str r0, [r5, #0x64] + ldr r2, [r5, #0x48] + ldr r1, _0802601C @ =gUnk_080FD238 + ldrb r0, [r1] + strb r0, [r2] + ldr r2, [r5, #0x48] + ldrb r0, [r1, #1] + strb r0, [r2, #1] + ldr r2, [r5, #0x48] + ldrb r0, [r1, #2] + strb r0, [r2, #2] + ldr r2, [r5, #0x48] + ldrb r0, [r1, #3] + strb r0, [r2, #3] + ldr r2, [r5, #0x48] + ldrb r0, [r1, #4] + strb r0, [r2, #4] + ldr r2, [r5, #0x48] + ldrb r0, [r1, #5] + strb r0, [r2, #5] + ldr r2, [r5, #0x48] + ldrb r0, [r1, #6] + strb r0, [r2, #6] + ldr r2, [r5, #0x48] + ldrb r0, [r1, #7] + strb r0, [r2, #7] + strb r6, [r5, #0xd] + adds r1, r5, #0 + adds r1, #0x6d + ldrb r0, [r1] + movs r7, #1 + orrs r0, r7 + strb r0, [r1] + ldr r0, [r4] + strb r6, [r0, #6] + ldr r0, [r4] + strb r6, [r0, #5] + ldr r1, [r4] + movs r0, #0xf + strb r0, [r1, #1] + ldr r0, [r4] + strb r6, [r0, #3] + ldr r0, [r4] + strb r6, [r0, #4] + ldr r1, [r4] + ldrh r0, [r5, #0x2e] + strh r0, [r1, #0xe] + ldrb r0, [r5, #0xa] + movs r1, #3 + orrs r1, r0 + movs r0, #0x13 + bl sub_0804AA60 + adds r2, r0, #0 + str r2, [r5, #0x68] + cmp r2, #0 + beq _08025F46 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r1, [r5, #0x68] + ldrh r0, [r5, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r5, #0x68] + ldrh r0, [r5, #0x32] + subs r0, #0xe + strh r0, [r1, #0x32] + ldr r1, [r5, #0x68] + movs r0, #0xe + strb r0, [r1, #0xe] + ldr r0, [r5, #0x68] + str r5, [r0, #0x50] + ldr r0, [r5, #0x68] + str r5, [r0, #0x68] +_08025F46: + ldrb r0, [r5, #0xa] + movs r1, #2 + orrs r1, r0 + movs r0, #0x13 + bl sub_0804AA60 + adds r2, r0, #0 + str r2, [r5, #0x50] + cmp r2, #0 + beq _08025F8C + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r1, [r5, #0x50] + ldrh r0, [r5, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r5, #0x50] + ldr r0, [r5, #0x68] + ldrh r0, [r0, #0x32] + subs r0, #0x12 + strh r0, [r1, #0x32] + ldr r1, [r5, #0x50] + movs r0, #0x12 + strb r0, [r1, #0xe] + ldr r1, [r5, #0x50] + ldr r0, [r5, #0x68] + str r0, [r1, #0x50] + ldr r1, [r5, #0x68] + ldr r0, [r5, #0x50] + str r0, [r1, #0x54] + ldr r0, [r5, #0x50] + str r5, [r0, #0x68] +_08025F8C: + ldrb r0, [r5, #0xa] + adds r1, r7, #0 + orrs r1, r0 + movs r0, #0x13 + bl sub_0804AA60 + adds r2, r0, #0 + str r2, [r5, #0x54] + cmp r2, #0 + beq _08025FD6 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r1, [r5, #0x54] + ldrh r0, [r5, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r5, #0x54] + ldr r0, [r5, #0x50] + ldrh r0, [r0, #0x32] + subs r0, #0xe + strh r0, [r1, #0x32] + ldr r1, [r5, #0x54] + movs r0, #0xe + strb r0, [r1, #0xe] + ldr r1, [r5, #0x54] + ldr r0, [r5, #0x50] + str r0, [r1, #0x50] + ldr r0, [r5, #0x54] + str r5, [r0, #0x54] + ldr r1, [r5, #0x50] + ldr r0, [r5, #0x54] + str r0, [r1, #0x54] + ldr r0, [r5, #0x54] + str r5, [r0, #0x68] +_08025FD6: + movs r0, #0x13 + movs r1, #8 + bl sub_0804AA60 + adds r1, r0, #0 + cmp r1, #0 + beq _08025FE6 + str r5, [r1, #0x54] +_08025FE6: + adds r0, r5, #0 + movs r1, #0x49 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _08025FFC + ldr r0, [r5, #0x54] + str r0, [r1, #0x54] +_08025FFC: + ldrb r0, [r5, #0xa] + cmp r0, #0 + beq _08026050 + adds r0, r5, #0 + movs r1, #0x49 + movs r2, #3 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _08026050 + ldr r0, [r5, #0x54] + str r0, [r1, #0x54] + b _08026050 + .align 2, 0 +_0802601C: .4byte gUnk_080FD238 +_08026020: + ldr r1, [r5, #0x48] + ldrb r0, [r4] + strb r0, [r1] + ldr r1, [r5, #0x48] + ldrb r0, [r4, #1] + strb r0, [r1, #1] + ldr r1, [r5, #0x48] + ldrb r0, [r4, #2] + strb r0, [r1, #2] + ldr r1, [r5, #0x48] + ldrb r0, [r4, #3] + strb r0, [r1, #3] + ldr r1, [r5, #0x48] + ldrb r0, [r4, #4] + strb r0, [r1, #4] + ldr r1, [r5, #0x48] + ldrb r0, [r4, #5] + strb r0, [r1, #5] + ldr r1, [r5, #0x48] + ldrb r0, [r4, #6] + strb r0, [r1, #6] + ldr r1, [r5, #0x48] + ldrb r0, [r4, #7] + strb r0, [r1, #7] +_08026050: + ldrb r1, [r5, #0xa] + movs r0, #3 + ands r0, r1 + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08026060 +_0802605E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08026060 +sub_08026060: @ 0x08026060 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0802608C @ =gUnk_080CC1C8 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + adds r0, #4 + ldrh r2, [r0] + adds r0, #4 + ldrh r3, [r0] + adds r0, r4, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_0802608C: .4byte gUnk_080CC1C8 + + thumb_func_start sub_08026090 +sub_08026090: @ 0x08026090 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080260EA + ldr r0, [r4, #0x54] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080260B8 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xfa + strb r0, [r4, #0xe] + ldr r0, _080260D4 @ =gUnk_03000BF0 + str r4, [r0, #0x30] +_080260B8: + ldr r0, [r4, #0x54] + ldrb r1, [r0, #0x10] + strb r1, [r4, #0x10] + ldr r1, [r0, #0x48] + str r1, [r4, #0x48] + adds r0, #0x3f + ldrb r1, [r0] + cmp r1, #0x7e + bne _080260D8 + adds r0, r4, #0 + adds r0, #0x3f + strb r1, [r0] + b _080260E0 + .align 2, 0 +_080260D4: .4byte gUnk_03000BF0 +_080260D8: + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x7c + strb r0, [r1] +_080260E0: + ldr r0, [r4, #0x54] + adds r1, r4, #0 + bl sub_0806FA24 + b _08026106 +_080260EA: + bl sub_08078B48 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08026106 + ldr r1, _08026108 @ =gUnk_03000BF0 + ldr r0, _0802610C @ =gLinkEntity + str r0, [r1, #0x30] + bl sub_0805E780 +_08026106: + pop {r4, pc} + .align 2, 0 +_08026108: .4byte gUnk_03000BF0 +_0802610C: .4byte gLinkEntity + + thumb_func_start sub_08026110 +sub_08026110: @ 0x08026110 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r1, _08026144 @ =gUnk_080CC1DC + ldrb r0, [r6, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl _call_via_r1 + adds r0, r6, #0 + adds r0, #0x84 + ldr r2, [r0] + ldr r0, [r2, #8] + cmp r0, #0 + bne _08026160 + ldrb r1, [r2, #5] + cmp r1, #0 + beq _08026160 + ldrb r0, [r6, #0xd] + cmp r0, #8 + bne _08026148 + adds r0, r1, #0 + subs r0, #0x40 + b _0802614C + .align 2, 0 +_08026144: .4byte gUnk_080CC1DC +_08026148: + adds r0, r1, #0 + subs r0, #0x20 +_0802614C: + strb r0, [r2, #5] + adds r0, r6, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #5 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _08026160 + movs r0, #0 + strb r0, [r1, #5] +_08026160: + adds r2, r6, #0 + adds r2, #0x80 + ldrb r0, [r2] + movs r1, #0x76 + adds r1, r1, r6 + mov ip, r1 + adds r7, r6, #0 + adds r7, #0x7a + cmp r0, #0 + beq _08026230 + ldrb r0, [r6, #0xe] + cmp r0, #0 + bne _080261D2 + ldrb r1, [r2] + lsls r1, r1, #0xc + ldr r0, [r6, #0x74] + subs r0, r0, r1 + str r0, [r6, #0x74] + ldrb r1, [r2] + lsls r1, r1, #0xc + ldr r0, [r6, #0x78] + subs r0, r0, r1 + str r0, [r6, #0x78] + mov r0, ip + ldrh r2, [r0] + adds r4, r6, #0 + adds r4, #0x82 + ldrb r1, [r4] + adds r3, r6, #0 + adds r3, #0x84 + ldr r0, [r3] + ldrb r0, [r0, #5] + adds r1, r1, r0 + cmp r2, r1 + bgt _080261AA + mov r0, ip + strh r1, [r0] +_080261AA: + ldrh r2, [r7] + ldrb r1, [r4] + ldr r0, [r3] + ldrb r0, [r0, #5] + adds r1, r1, r0 + cmp r2, r1 + bgt _080261BA + strh r1, [r7] +_080261BA: + mov r1, ip + ldrh r2, [r1] + ldrb r1, [r4] + ldr r0, [r3] + ldrb r0, [r0, #5] + adds r1, r1, r0 + cmp r2, r1 + bgt _08026230 + ldrh r0, [r7] + cmp r0, r1 + bgt _08026230 + b _08026228 +_080261D2: + ldrb r1, [r2] + lsls r1, r1, #0xc + ldr r0, [r6, #0x74] + adds r0, r0, r1 + str r0, [r6, #0x74] + ldrb r1, [r2] + lsls r1, r1, #0xc + ldr r0, [r6, #0x78] + adds r0, r0, r1 + str r0, [r6, #0x78] + mov r0, ip + ldrh r2, [r0] + adds r4, r6, #0 + adds r4, #0x81 + ldrb r1, [r4] + adds r3, r6, #0 + adds r3, #0x84 + ldr r0, [r3] + ldrb r0, [r0, #5] + adds r1, r1, r0 + cmp r2, r1 + blt _08026202 + mov r0, ip + strh r1, [r0] +_08026202: + ldrh r2, [r7] + ldrb r1, [r4] + ldr r0, [r3] + ldrb r0, [r0, #5] + adds r1, r1, r0 + cmp r2, r1 + blt _08026212 + strh r1, [r7] +_08026212: + mov r1, ip + ldrh r2, [r1] + ldrb r1, [r4] + ldr r0, [r3] + ldrb r0, [r0, #5] + adds r1, r1, r0 + cmp r2, r1 + blt _08026230 + ldrh r0, [r7] + cmp r0, r1 + blt _08026230 +_08026228: + ldrb r0, [r6, #0xe] + movs r1, #1 + eors r0, r1 + strb r0, [r6, #0xe] +_08026230: + ldr r5, [r6, #0x48] + mov r0, ip + ldrh r1, [r0] + movs r4, #0x80 + lsls r4, r4, #9 + adds r0, r4, #0 + bl __divsi3 + lsls r1, r0, #3 + subs r1, r1, r0 + lsrs r1, r1, #7 + strb r1, [r5, #6] + ldr r5, [r6, #0x48] + ldrh r1, [r7] + adds r0, r4, #0 + bl __divsi3 + lsls r1, r0, #1 + adds r1, r1, r0 + lsrs r1, r1, #7 + strb r1, [r5, #7] + movs r1, #0x36 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _08026268 + adds r0, r6, #0 + bl sub_0800445C +_08026268: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802626C +sub_0802626C: @ 0x0802626C + push {lr} + ldr r2, _0802629C @ =gUnk_02034490 + movs r1, #1 + strb r1, [r2] + ldr r2, _080262A0 @ =gUnk_080CC20C + adds r1, r0, #0 + adds r1, #0x84 + ldr r1, [r1] + ldrb r1, [r1, #3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldr r0, _080262A4 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0x17 + beq _08026298 + cmp r0, #0xf + beq _08026298 + bl sub_08078B48 +_08026298: + pop {pc} + .align 2, 0 +_0802629C: .4byte gUnk_02034490 +_080262A0: .4byte gUnk_080CC20C +_080262A4: .4byte gLinkEntity + + thumb_func_start sub_080262A8 +sub_080262A8: @ 0x080262A8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x82 + movs r6, #0 + movs r0, #0x90 + strb r0, [r1] + subs r1, #1 + movs r0, #0xb0 + strb r0, [r1] + subs r1, #1 + movs r0, #8 + strb r0, [r1] + movs r5, #1 + strb r5, [r4, #0xe] + adds r0, r4, #0 + movs r1, #6 + movs r2, #1 + bl sub_080276F4 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080262EC + ldr r1, _080262E8 @ =gUnk_03003F80 + movs r0, #0x82 + lsls r0, r0, #1 + strh r0, [r1, #8] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r5, [r0, #3] + b _0802631A + .align 2, 0 +_080262E8: .4byte gUnk_03003F80 +_080262EC: + adds r0, r4, #0 + adds r0, #0x7c + strb r6, [r0] + adds r1, r4, #0 + adds r1, #0x7d + movs r0, #0x1e + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #3 + strb r0, [r1, #3] + ldr r0, _0802631C @ =gLinkEntity + strb r6, [r0, #0x14] + ldr r0, _08026320 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + strb r5, [r0, #0xe] + ldr r0, _08026324 @ =0x00004022 + movs r1, #0xb2 + lsls r1, r1, #2 + movs r2, #1 + bl sub_0800015E +_0802631A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0802631C: .4byte gLinkEntity +_08026320: .4byte gUnk_03000BF0 +_08026324: .4byte 0x00004022 + + thumb_func_start sub_08026328 +sub_08026328: @ 0x08026328 + push {lr} + adds r2, r0, #0 + ldr r0, _08026354 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0x17 + beq _08026352 + adds r1, r2, #0 + adds r1, #0x7d + movs r0, #0x78 + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + movs r0, #0xa + movs r1, #0 + movs r2, #0 + bl sub_08078AC0 +_08026352: + pop {pc} + .align 2, 0 +_08026354: .4byte gLinkEntity + + thumb_func_start sub_08026358 +sub_08026358: @ 0x08026358 + push {r4, lr} + adds r3, r0, #0 + ldr r4, _08026398 @ =gLinkEntity + ldrb r0, [r4, #0xc] + cmp r0, #0xf + beq _080263B0 + adds r1, r3, #0 + adds r1, #0x7d + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _080263A0 + adds r0, r3, #0 + adds r0, #0x7c + strb r2, [r0] + movs r0, #0x1e + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + strb r2, [r4, #0x14] + ldr r1, _0802639C @ =gUnk_03000BF0 + str r3, [r1, #0x30] + movs r0, #1 + strb r0, [r1, #0xe] + b _080263B0 + .align 2, 0 +_08026398: .4byte gLinkEntity +_0802639C: .4byte gUnk_03000BF0 +_080263A0: + cmp r2, #0x60 + bhi _080263B0 + cmp r2, #0x5b + bhi _080263AC + movs r0, #4 + b _080263AE +_080263AC: + movs r0, #2 +_080263AE: + strb r0, [r4, #0x14] +_080263B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080263B4 +sub_080263B4: @ 0x080263B4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x7d + adds r0, r0, r4 + mov ip, r0 + ldrb r0, [r0] + subs r0, #1 + mov r1, ip + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0xff + bne _08026410 + ldr r2, _08026400 @ =gUnk_080CC234 + adds r3, r4, #0 + adds r3, #0x7c + ldrb r0, [r3] + adds r1, r0, #1 + strb r1, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r2 + ldrb r1, [r0] + mov r0, ip + strb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0xff + bne _08026404 + movs r0, #0x78 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + b _08026410 + .align 2, 0 +_08026400: .4byte gUnk_080CC234 +_08026404: + ldrb r2, [r4, #0xb] + adds r0, r4, #0 + movs r1, #0x49 + movs r3, #0 + bl sub_080A2988 +_08026410: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08026414 +sub_08026414: @ 0x08026414 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r1, r7, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08026474 + ldr r0, _08026478 @ =0x0000FF40 + strh r0, [r7, #0x36] + ldr r6, [r7, #0x54] + ldr r5, [r7, #0x50] + ldr r4, [r7, #0x68] + ldrb r2, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r3, #1 + orrs r0, r3 + strb r0, [r4, #0x18] + ldrb r2, [r5, #0x18] + adds r0, r1, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r5, #0x18] + ldrb r2, [r6, #0x18] + adds r0, r1, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r6, #0x18] + ldrb r0, [r7, #0x18] + ands r1, r0 + orrs r1, r3 + strb r1, [r7, #0x18] + adds r0, r7, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + movs r0, #0xd1 + lsls r0, r0, #1 + bl sub_080A3268 +_08026474: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08026478: .4byte 0x0000FF40 + + thumb_func_start sub_0802647C +sub_0802647C: @ 0x0802647C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #7 + bl sub_08003FC4 + cmp r0, #0 + bne _080264A6 + movs r0, #0x10 + movs r1, #0 + bl sub_08080964 + ldr r0, _080264A8 @ =0x000001A1 + bl sub_080A3268 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] +_080264A6: + pop {r4, pc} + .align 2, 0 +_080264A8: .4byte 0x000001A1 + + thumb_func_start sub_080264AC +sub_080264AC: @ 0x080264AC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xd0 + movs r2, #8 + bl sub_080277B8 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #6 + beq _080264D2 + ldr r0, [r4, #0x54] + movs r1, #4 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08027D20 +_080264D2: + pop {r4, pc} + + thumb_func_start sub_080264D4 +sub_080264D4: @ 0x080264D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080279E8 + cmp r0, #0 + beq _08026504 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + adds r1, r4, #0 + adds r1, #0x7d + movs r0, #0x3c + strb r0, [r1] + adds r0, r4, #0 + movs r1, #5 + movs r2, #0 + bl sub_080276F4 + movs r0, #0x2e + bl sub_080A3268 +_08026504: + adds r0, r4, #0 + bl sub_080277F8 + pop {r4, pc} + + thumb_func_start sub_0802650C +sub_0802650C: @ 0x0802650C + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x54] + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + bne _0802652C + adds r0, r2, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + ldr r1, _08026534 @ =gUnk_03000BF0 + ldr r0, _08026538 @ =gLinkEntity + str r0, [r1, #0x30] +_0802652C: + adds r0, r2, #0 + bl sub_08027870 + pop {pc} + .align 2, 0 +_08026534: .4byte gUnk_03000BF0 +_08026538: .4byte gLinkEntity + + thumb_func_start sub_0802653C +sub_0802653C: @ 0x0802653C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r1, _08026578 @ =gUnk_03000BF0 + ldrh r5, [r1] + cmp r5, #0 + bne _08026572 + movs r0, #4 + strb r0, [r1, #0xe] + movs r0, #0xff + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x90 + movs r2, #0xb0 + movs r3, #4 + bl sub_08027B98 + adds r0, r4, #0 + movs r1, #0 + bl sub_08027548 + ldr r0, [r4, #0x54] + movs r1, #0 + bl sub_080042AC + ldr r0, _0802657C @ =gUnk_02034490 + strb r5, [r0] +_08026572: + add sp, #4 + pop {r4, r5, pc} + .align 2, 0 +_08026578: .4byte gUnk_03000BF0 +_0802657C: .4byte gUnk_02034490 + + thumb_func_start sub_08026580 +sub_08026580: @ 0x08026580 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl sub_08027AA4 + adds r7, r5, #0 + adds r7, #0x84 + ldr r0, [r7] + ldrb r0, [r0, #1] + cmp r0, #0x40 + bne _0802659C + adds r0, r5, #0 + bl sub_08027BBC + b _0802662C +_0802659C: + adds r1, r5, #0 + adds r1, #0x7d + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r1, #0 + cmp r0, #0xff + bne _08026626 + movs r0, #0 + strh r0, [r5, #0x24] + movs r0, #2 + strb r0, [r5, #0xd] + adds r4, r5, #0 + adds r4, #0x7c + movs r0, #0x3c + strb r0, [r4] + ldr r1, _080265E4 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] + ldr r0, [r7] + ldrb r0, [r0, #4] + adds r2, r4, #0 + cmp r0, #2 + bne _080265E8 + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #0x48 + strb r0, [r1] + adds r1, #1 + ldrb r0, [r1] + adds r0, #0x10 + b _080265EE + .align 2, 0 +_080265E4: .4byte gLinkEntity +_080265E8: + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #0x10 +_080265EE: + strb r0, [r1] + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + ldrb r1, [r0, #1] + movs r0, #0xa0 + ands r0, r1 + cmp r0, #0 + beq _08026608 + movs r0, #0 + strb r0, [r6] + strb r0, [r2] + b _08026626 +_08026608: + bl sub_08000E50 + ldr r2, _08026630 @ =gUnk_080CC24F + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r1, r0, #1 + strb r1, [r6] + ldr r0, [r4] + ldrb r0, [r0, #4] + cmp r0, #2 + bne _08026626 + lsls r0, r1, #1 + strb r0, [r6] +_08026626: + adds r0, r5, #0 + bl sub_08027870 +_0802662C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08026630: .4byte gUnk_080CC24F + + thumb_func_start sub_08026634 +sub_08026634: @ 0x08026634 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + bl sub_08027AA4 + cmp r0, #0 + beq _08026644 + b _08026748 +_08026644: + adds r0, r4, #0 + adds r0, #0x7d + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0 + bne _080266D6 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08026748 + adds r1, #8 + ldr r2, [r1] + ldrb r3, [r2, #1] + movs r0, #0x40 + ands r0, r3 + adds r5, r1, #0 + cmp r0, #0 + bne _080266B0 + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _0802668C + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] + ldr r1, [r5] + ldrb r0, [r1] + cmp r0, #0 + bne _080266B0 + movs r0, #1 + b _080266AE +_0802668C: + movs r0, #1 + strb r0, [r2, #1] + ldr r0, [r5] + ldrb r0, [r0, #4] + cmp r0, #2 + bne _080266B0 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _080266B0 + ldr r1, [r5] + movs r0, #4 + strb r0, [r1] + ldr r1, [r5] + movs r0, #0x81 +_080266AE: + strb r0, [r1, #1] +_080266B0: + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xd] + ldr r0, [r5] + strb r1, [r0, #3] + str r1, [sp] + adds r0, r4, #0 + movs r1, #0x90 + movs r2, #0x90 + movs r3, #0xc + bl sub_08027B98 + movs r0, #0xe0 + lsls r0, r0, #0xb + str r0, [r4, #0x20] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + b _08026742 +_080266D6: + ldr r0, _08026700 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080266EC + ldr r1, _08026704 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] +_080266EC: + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #2 + bne _08026708 + movs r0, #0x80 + lsls r0, r0, #1 + b _0802670A + .align 2, 0 +_08026700: .4byte gUnk_030010A0 +_08026704: .4byte gLinkEntity +_08026708: + movs r0, #0xc0 +_0802670A: + strh r0, [r4, #0x24] + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802672C + ldr r0, _0802674C @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08026726 + movs r0, #0xcf + lsls r0, r0, #1 + bl sub_080A3268 +_08026726: + adds r0, r4, #0 + bl sub_080AEF88 +_0802672C: + adds r0, r4, #0 + adds r0, #0x76 + adds r1, r4, #0 + adds r1, #0x81 + ldrh r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _08026742 + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] +_08026742: + adds r0, r4, #0 + bl sub_08027870 +_08026748: + add sp, #4 + pop {r4, r5, pc} + .align 2, 0 +_0802674C: .4byte gUnk_030010A0 + + thumb_func_start sub_08026750 +sub_08026750: @ 0x08026750 + push {r4, lr} + adds r4, r0, #0 + bl sub_08027AA4 + ldr r1, _08026770 @ =gUnk_080CC258 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08026770: .4byte gUnk_080CC258 + + thumb_func_start sub_08026774 +sub_08026774: @ 0x08026774 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r1, [r4, #0x54] + adds r1, #0x83 + ldr r0, [r4, #0x50] + adds r0, #0x83 + ldrb r1, [r1] + ldrb r0, [r0] + orrs r1, r0 + ldr r0, [r4, #0x68] + adds r0, #0x83 + ldrb r0, [r0] + orrs r1, r0 + cmp r1, #0 + bne _080267C6 + adds r2, r4, #0 + adds r2, #0x7d + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080267CC + str r1, [sp] + adds r0, r4, #0 + movs r1, #0x80 + movs r2, #0x80 + movs r3, #0x40 + bl sub_08027B98 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #3] + ldr r0, [r4, #0x54] + movs r1, #1 + bl sub_080042AC +_080267C6: + adds r0, r4, #0 + bl sub_080277F8 +_080267CC: + add sp, #4 + pop {r4, pc} + + thumb_func_start sub_080267D0 +sub_080267D0: @ 0x080267D0 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #0xf0 + movs r2, #8 + bl sub_080277B8 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #1 + beq _08026802 + movs r0, #0xff + str r0, [sp] + adds r0, r4, #0 + movs r1, #0xe0 + movs r2, #0xc0 + movs r3, #0x20 + bl sub_08027B98 + ldr r0, [r4, #0x54] + movs r1, #2 + bl sub_080042AC +_08026802: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08026808 +sub_08026808: @ 0x08026808 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x54] + ldr r7, [r4, #0x68] + ldr r6, [r4, #0x50] + adds r1, r2, #0 + adds r1, #0x76 + ldrh r0, [r1] + cmp r0, #0xbf + bhi _08026820 + adds r0, #4 + strh r0, [r1] +_08026820: + adds r5, r2, #0 + adds r5, #0x7a + ldrh r0, [r5] + cmp r0, #0xb0 + bls _08026830 + subs r0, #8 + strh r0, [r5] + b _08026860 +_08026830: + ldr r1, _08026868 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + movs r0, #4 + strb r0, [r4, #0xd] + movs r1, #0xa0 + strh r1, [r5] + adds r0, r6, #0 + adds r0, #0x7a + strh r1, [r0] + adds r0, r7, #0 + adds r0, #0x7a + strh r1, [r0] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_080276F4 + movs r0, #0xd1 + lsls r0, r0, #1 + bl sub_080A3268 +_08026860: + adds r0, r4, #0 + bl sub_080277F8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08026868: .4byte gLinkEntity + + thumb_func_start sub_0802686C +sub_0802686C: @ 0x0802686C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #7 + bl sub_08003FC4 + adds r5, r0, #0 + cmp r5, #0 + beq _08026888 + adds r0, r4, #0 + bl sub_080AEF88 + b _080268BE +_08026888: + movs r0, #0x10 + movs r1, #0 + bl sub_08080964 + movs r0, #5 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r5, [r0, #3] + str r5, [sp] + adds r0, r4, #0 + movs r1, #0x80 + movs r2, #0x80 + movs r3, #0x80 + bl sub_08027B98 + adds r0, r4, #0 + bl sub_08027870 + ldr r0, [r4, #0x54] + movs r1, #3 + bl sub_080042AC + ldr r0, _080268C4 @ =0x000001A1 + bl sub_080A3268 +_080268BE: + add sp, #4 + pop {r4, r5, pc} + .align 2, 0 +_080268C4: .4byte 0x000001A1 + + thumb_func_start sub_080268C8 +sub_080268C8: @ 0x080268C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08027AA4 + ldr r1, _080268E8 @ =gUnk_080CC264 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080268E8: .4byte gUnk_080CC264 + + thumb_func_start sub_080268EC +sub_080268EC: @ 0x080268EC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xd0 + movs r2, #8 + bl sub_080277B8 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #0 + beq _08026912 + ldr r0, [r4, #0x54] + movs r1, #4 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08027D20 +_08026912: + pop {r4, pc} + + thumb_func_start sub_08026914 +sub_08026914: @ 0x08026914 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + bl sub_080279E8 + cmp r0, #0 + beq _08026942 + movs r0, #0xff + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x90 + movs r2, #0xb0 + movs r3, #4 + bl sub_08027B98 + adds r0, r4, #0 + movs r1, #0 + bl sub_08027548 + ldr r0, [r4, #0x54] + movs r1, #0 + bl sub_080042AC +_08026942: + adds r0, r4, #0 + bl sub_080277F8 + add sp, #4 + pop {r4, pc} + + thumb_func_start sub_0802694C +sub_0802694C: @ 0x0802694C + push {lr} + ldr r2, _08026964 @ =gUnk_080CC26C + adds r1, r0, #0 + adds r1, #0x84 + ldr r1, [r1] + ldrb r1, [r1, #3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08026964: .4byte gUnk_080CC26C + + thumb_func_start sub_08026968 +sub_08026968: @ 0x08026968 + push {r4, r5, r6, lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x7d + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0802698C + adds r0, r2, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + b _080269C0 +_0802698C: + ldr r6, [r2, #0x54] + ldr r4, [r2, #0x68] + ldr r5, [r2, #0x50] + ldrb r1, [r2, #0x15] + movs r0, #0x10 + ands r0, r1 + ldr r3, _080269C8 @ =0xFFFFFF00 + cmp r0, #0 + beq _080269A2 + movs r3, #0x80 + lsls r3, r3, #1 +_080269A2: + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r1] + adds r0, r0, r3 + strh r0, [r1] + adds r1, r5, #0 + adds r1, #0x82 + ldrh r0, [r1] + adds r0, r0, r3 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x82 + ldrh r0, [r1] + adds r0, r0, r3 + strh r0, [r1] +_080269C0: + adds r0, r2, #0 + bl sub_08027870 + pop {r4, r5, r6, pc} + .align 2, 0 +_080269C8: .4byte 0xFFFFFF00 + + thumb_func_start sub_080269CC +sub_080269CC: @ 0x080269CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + movs r7, #0 + ldr r5, [r6, #0x54] + ldr r0, [r6, #0x68] + mov sl, r0 + ldr r1, [r6, #0x50] + mov sb, r1 + ldrb r1, [r6, #0x15] + movs r0, #0x10 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #2 + mov r8, r1 + cmp r0, #0 + beq _080269F8 + ldr r0, _08026A18 @ =0xFFFFFD00 + mov r8, r0 +_080269F8: + mov r0, sl + adds r0, #0x83 + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x20 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3f + bhi _08026A1C + mov r1, sl + adds r1, #0x82 + ldrh r0, [r1] + add r0, r8 + strh r0, [r1] + b _08026A1E + .align 2, 0 +_08026A18: .4byte 0xFFFFFD00 +_08026A1C: + movs r7, #1 +_08026A1E: + mov r0, sb + adds r0, #0x83 + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x44 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x87 + bhi _08026A3C + mov r1, sb + adds r1, #0x82 + ldrh r0, [r1] + add r0, r8 + strh r0, [r1] + b _08026A3E +_08026A3C: + adds r7, #1 +_08026A3E: + adds r0, r5, #0 + adds r0, #0x83 + ldrb r0, [r0] + adds r4, r0, #0 + adds r4, #0x40 + adds r0, #0x20 + cmp r0, #0x40 + bls _08026A7E + ldrb r1, [r6, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08026A6C + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #6 + beq _08026A7E + adds r0, r5, #0 + movs r1, #6 + bl sub_080042AC + b _08026A7E +_08026A6C: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #5 + beq _08026A7E + adds r0, r5, #0 + movs r1, #5 + bl sub_080042AC +_08026A7E: + lsls r0, r4, #0x18 + cmp r0, #0 + blt _08026A90 + adds r1, r5, #0 + adds r1, #0x82 + ldrh r0, [r1] + add r0, r8 + strh r0, [r1] + b _08026A92 +_08026A90: + adds r7, #1 +_08026A92: + cmp r7, #3 + beq _08026A98 + b _08026BB8 +_08026A98: + ldrb r1, [r6, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r6, #0x10] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x76 + ldrh r0, [r1] + adds r0, #3 + strh r0, [r1] + movs r0, #0x20 + movs r1, #0 + bl sub_08080964 + ldr r0, _08026B24 @ =0x0000010B + bl sub_080A3268 + adds r0, r6, #0 + movs r1, #0x15 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r4, r0, #0 + cmp r4, #0 + beq _08026B4E + movs r0, #0xc9 + strh r0, [r4, #0x12] + adds r1, r4, #0 + adds r1, #0x58 + movs r0, #1 + strb r0, [r1] + ldrh r0, [r4, #0x32] + adds r0, #0x10 + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r2, [r5, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x1b] + ldrb r1, [r6, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08026B28 + ldrh r0, [r4, #0x2e] + subs r0, #0x38 + b _08026B2C + .align 2, 0 +_08026B24: .4byte 0x0000010B +_08026B28: + ldrh r0, [r4, #0x2e] + adds r0, #0x38 +_08026B2C: + strh r0, [r4, #0x2e] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_080ADF80 + ldrb r0, [r6, #0xb] + cmp r0, #0 + bne _08026B46 + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0801D040 + b _08026B4E +_08026B46: + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0801D040 +_08026B4E: + ldr r3, [r6, #0x50] + ldr r2, [r6, #0x54] + ldr r0, [r6, #0x68] + adds r0, #0x84 + movs r1, #1 + strb r1, [r0] + adds r2, #0x84 + strb r1, [r2] + adds r3, #0x84 + strb r1, [r3] + mov r0, sb + adds r0, #0x7a + movs r1, #0x98 + strh r1, [r0] + mov r0, sl + adds r0, #0x7a + strh r1, [r0] + adds r0, r5, #0 + adds r0, #0x7a + strh r1, [r0] + bl sub_08000E50 + ldr r2, _08026BB4 @ =gUnk_080CC278 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r7, r6, #0 + adds r7, #0x7c + strb r0, [r7] + adds r0, r6, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + adds r0, r5, #0 + movs r1, #0x49 + movs r2, #0xa + movs r3, #0 + bl sub_080A2988 + adds r4, r0, #0 + cmp r4, #0 + beq _08026BD4 + adds r1, r4, #0 + adds r1, #0x84 + ldrb r0, [r7] + str r0, [r1] + b _08026BD4 + .align 2, 0 +_08026BB4: .4byte gUnk_080CC278 +_08026BB8: + adds r0, r5, #0 + adds r0, #0x76 + ldrh r0, [r0] + cmp r0, #0xef + bhi _08026BD4 + ldr r0, [r5, #0x74] + movs r1, #0x80 + lsls r1, r1, #0xb + adds r0, r0, r1 + str r0, [r5, #0x74] + ldr r0, [r5, #0x78] + ldr r1, _08026BE4 @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r5, #0x78] +_08026BD4: + adds r0, r6, #0 + bl sub_08027870 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08026BE4: .4byte 0xFFFF8000 + + thumb_func_start sub_08026BE8 +sub_08026BE8: @ 0x08026BE8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x54] + adds r3, r5, #0 + adds r3, #0x3b + ldrb r1, [r3] + movs r0, #0xfe + ands r0, r1 + strb r0, [r3] + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + adds r2, r0, #0 + cmp r2, #0 + bne _08026C34 + movs r0, #7 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r2, [r0, #3] + adds r1, #1 + movs r0, #0x2d + strb r0, [r1] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + ldrb r0, [r3] + movs r1, #1 + orrs r0, r1 + strb r0, [r3] + ldr r0, _08026C30 @ =0x00000155 + bl sub_080A3268 + b _08026C38 + .align 2, 0 +_08026C30: .4byte 0x00000155 +_08026C34: + subs r0, #1 + strb r0, [r1] +_08026C38: + adds r0, r4, #0 + bl sub_08027870 + pop {r4, r5, pc} + + thumb_func_start sub_08026C40 +sub_08026C40: @ 0x08026C40 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r5, r0, #0 + ldr r4, [r5, #0x54] + ldr r7, [r5, #0x68] + ldr r6, [r5, #0x50] + adds r2, r5, #0 + adds r2, #0x7d + ldrb r0, [r2] + cmp r0, #0 + beq _08026CCC + subs r1, r0, #1 + strb r1, [r2] + lsls r0, r1, #0x18 + cmp r0, #0 + beq _08026C9C + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _08026C82 + ldr r0, [r4, #0x74] + movs r1, #0x80 + lsls r1, r1, #0xa + adds r0, r0, r1 + str r0, [r4, #0x74] + ldr r0, [r4, #0x78] + movs r2, #0x80 + lsls r2, r2, #9 + adds r0, r0, r2 + str r0, [r4, #0x78] + b _08026E12 +_08026C82: + ldr r0, [r4, #0x74] + ldr r3, _08026C94 @ =0xFFFE0000 + adds r0, r0, r3 + str r0, [r4, #0x74] + ldr r0, [r4, #0x78] + ldr r1, _08026C98 @ =0xFFFF0000 + adds r0, r0, r1 + str r0, [r4, #0x78] + b _08026E12 + .align 2, 0 +_08026C94: .4byte 0xFFFE0000 +_08026C98: .4byte 0xFFFF0000 +_08026C9C: + ldrb r1, [r5, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08026CBA + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #8 + beq _08026CCC + adds r0, r4, #0 + movs r1, #8 + bl sub_080042AC + b _08026CCC +_08026CBA: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #7 + beq _08026CCC + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC +_08026CCC: + adds r0, r5, #0 + adds r0, #0x7c + ldrb r1, [r0] + mov r8, r0 + cmp r1, #0 + bne _08026CF0 + ldrb r1, [r5, #0x15] + movs r0, #0x10 + ands r0, r1 + ldr r2, _08026CEC @ =0xFFFFFD00 + cmp r0, #0 + beq _08026D00 + movs r2, #0xc0 + lsls r2, r2, #2 + b _08026D00 + .align 2, 0 +_08026CEC: .4byte 0xFFFFFD00 +_08026CF0: + ldrb r1, [r5, #0x15] + movs r0, #0x10 + ands r0, r1 + ldr r2, _08026D30 @ =0xFFFFFB80 + cmp r0, #0 + beq _08026D00 + movs r2, #0x90 + lsls r2, r2, #3 +_08026D00: + adds r0, r7, #0 + adds r0, #0x83 + ldrb r0, [r0] + adds r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc + bls _08026D34 + adds r1, r7, #0 + adds r1, #0x82 + lsls r0, r2, #1 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + adds r1, r6, #0 + adds r1, #0x82 + ldrh r0, [r1] + adds r0, r0, r2 + strh r0, [r1] + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r1] + b _08026D7E + .align 2, 0 +_08026D30: .4byte 0xFFFFFB80 +_08026D34: + adds r0, r7, #0 + adds r0, #0x82 + movs r1, #0 + strh r1, [r0] + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + adds r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc + bls _08026D60 + adds r1, r6, #0 + adds r1, #0x82 + lsls r0, r2, #1 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r1] + b _08026D7E +_08026D60: + adds r0, r6, #0 + adds r0, #0x82 + strh r1, [r0] + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + adds r0, #6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc + bls _08026D84 + adds r1, r4, #0 + adds r1, #0x82 + lsls r0, r2, #1 + ldrh r2, [r1] +_08026D7E: + adds r0, r0, r2 + strh r0, [r1] + b _08026D8A +_08026D84: + adds r0, r4, #0 + adds r0, #0x82 + strh r1, [r0] +_08026D8A: + adds r1, r4, #0 + adds r1, #0x76 + ldrh r0, [r1] + cmp r0, #0xa0 + bls _08026DA4 + ldr r0, [r4, #0x74] + ldr r3, _08026DA0 @ =0xFFFC0000 + adds r0, r0, r3 + str r0, [r4, #0x74] + b _08026DA8 + .align 2, 0 +_08026DA0: .4byte 0xFFFC0000 +_08026DA4: + movs r0, #0xa0 + strh r0, [r1] +_08026DA8: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0x9f + bhi _08026DBE + ldr r0, [r4, #0x78] + movs r1, #0x80 + lsls r1, r1, #8 + adds r0, r0, r1 + str r0, [r4, #0x78] + b _08026E0C +_08026DBE: + adds r0, r5, #0 + movs r1, #3 + movs r2, #0 + bl sub_080276F4 + adds r0, r4, #0 + adds r0, #0x7d + movs r2, #0 + strb r2, [r0] + ldrb r1, [r5, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08026DEE + adds r1, r6, #0 + adds r1, #0x85 + movs r0, #1 + strb r0, [r1] + adds r1, r7, #0 + adds r1, #0x85 + strb r0, [r1] + adds r1, r4, #0 + adds r1, #0x85 + strb r0, [r1] +_08026DEE: + movs r0, #8 + strb r0, [r5, #0xd] + movs r0, #4 + mov r3, r8 + strb r0, [r3] + strb r2, [r6, #0xf] + strb r2, [r7, #0xf] + strb r2, [r4, #0xf] + str r2, [sp] + adds r0, r5, #0 + movs r1, #0x90 + movs r2, #0xb0 + movs r3, #0x10 + bl sub_08027B98 +_08026E0C: + adds r0, r5, #0 + bl sub_08027870 +_08026E12: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08026E1C +sub_08026E1C: @ 0x08026E1C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + adds r6, r0, #0 + cmp r6, #0 + bne _08026EE0 + ldr r0, [r4, #0x54] + ldrb r0, [r0, #0xf] + ldr r1, [r4, #0x50] + ldrb r1, [r1, #0xf] + ldr r2, [r4, #0x68] + adds r0, r0, r1 + ldrb r2, [r2, #0xf] + adds r0, r0, r2 + cmp r0, #0xa + ble _08026EF2 + ldrb r0, [r4, #0x10] + movs r1, #0x80 + mov r8, r1 + movs r7, #0 + mov r1, r8 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08027C54 + adds r5, r4, #0 + adds r5, #0x84 + cmp r0, #0 + beq _08026E72 + ldr r1, [r5] + ldrb r0, [r1, #4] + adds r0, #1 + strb r0, [r1, #4] + ldr r0, [r4, #0x54] + adds r0, #0x45 + movs r1, #0xff + strb r1, [r0] +_08026E72: + ldr r1, [r5] + ldrb r0, [r1, #4] + cmp r0, #3 + bne _08026EA0 + adds r0, r4, #0 + adds r0, #0x45 + strb r6, [r0] + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + ldr r3, [r4, #0x54] + ldr r2, [r4, #0x50] + ldr r0, [r4, #0x68] + strb r1, [r0, #0x10] + ldrb r0, [r4, #0x10] + strb r0, [r2, #0x10] + strb r0, [r3, #0x10] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xc4 + strb r0, [r1] + b _08026F14 +_08026EA0: + movs r0, #4 + strb r0, [r1] + ldr r1, [r5] + movs r0, #0x81 + strb r0, [r1, #1] + ldrb r0, [r4, #0x10] + mov r1, r8 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x7d + strb r0, [r1] + movs r0, #0xb + strb r0, [r4, #0xd] + ldr r0, [r5] + strb r6, [r0, #3] + ldr r0, [r4, #0x54] + movs r1, #0 + bl sub_080042AC + str r6, [sp] + adds r0, r4, #0 + movs r1, #0x80 + movs r2, #0x80 + movs r3, #0x80 + bl sub_08027B98 + ldr r1, [r5] + movs r0, #0x21 + strb r0, [r1, #1] + b _08026EF2 +_08026EE0: + subs r0, #1 + movs r2, #0 + strb r0, [r1] + adds r1, r4, #0 + adds r1, #0x84 + ldr r0, [r1] + str r2, [r0, #8] + ldr r0, [r1] + strb r2, [r0, #6] +_08026EF2: + adds r0, r4, #0 + bl sub_08027C54 + cmp r0, #0 + beq _08026F14 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #2 + bne _08026F14 + adds r0, r4, #0 + movs r1, #0x3f + bl sub_08027C7C + bl sub_08078B48 +_08026F14: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08026F1C +sub_08026F1C: @ 0x08026F1C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7c + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08026F70 + adds r0, r4, #0 + bl sub_080279E8 + cmp r0, #0 + beq _08026F68 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + movs r2, #0 + strb r2, [r0, #3] + ldrb r1, [r5] + movs r0, #0xf + ands r0, r1 + strb r0, [r5] + str r2, [sp] + adds r0, r4, #0 + movs r1, #0x80 + movs r2, #0x80 + movs r3, #0x80 + bl sub_08027B98 + ldrb r0, [r5] + cmp r0, #2 + bne _08026F68 + adds r0, r4, #0 + movs r1, #0 + bl sub_08027548 +_08026F68: + adds r0, r4, #0 + bl sub_080277F8 + b _08026FA0 +_08026F70: + adds r0, r4, #0 + movs r1, #0xf0 + movs r2, #0x10 + bl sub_080277B8 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #0 + beq _08026FA0 + ldrb r0, [r5] + adds r0, #1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5] + movs r0, #1 + str r0, [sp] + adds r0, r4, #0 + movs r1, #0xc0 + movs r2, #0xc0 + movs r3, #0x20 + bl sub_08027B98 +_08026FA0: + add sp, #4 + pop {r4, r5, pc} + + thumb_func_start sub_08026FA4 +sub_08026FA4: @ 0x08026FA4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08078B48 + ldrb r0, [r4, #0x10] + movs r5, #0x7f + adds r1, r5, #0 + ands r1, r0 + strb r1, [r4, #0x10] + ldr r3, [r4, #0x54] + ldr r2, [r4, #0x50] + ldr r0, [r4, #0x68] + strb r1, [r0, #0x10] + ldrb r0, [r4, #0x10] + strb r0, [r2, #0x10] + strb r0, [r3, #0x10] + adds r3, r4, #0 + adds r3, #0x7c + ldrb r0, [r3] + cmp r0, #0 + beq _08026FD2 + movs r0, #1 + strb r0, [r3] +_08026FD2: + ldr r2, [r4, #0x54] + adds r0, r2, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0x97 + bhi _08026FFE + movs r1, #0x80 + lsls r1, r1, #9 + ldrb r0, [r3] + lsls r1, r0 + ldr r0, [r2, #0x78] + adds r0, r0, r1 + str r0, [r2, #0x78] + ldr r2, [r4, #0x54] + movs r1, #0x80 + lsls r1, r1, #0xa + ldrb r3, [r3] + lsls r1, r3 + ldr r0, [r2, #0x74] + subs r0, r0, r1 + str r0, [r2, #0x74] + b _0802705C +_08026FFE: + movs r0, #7 + strb r0, [r4, #0xd] + ldrb r1, [r2, #0x10] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #0x10] + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #0 + strb r0, [r1, #3] + adds r1, r4, #0 + adds r1, #0x7d + movs r0, #0x2d + strb r0, [r1] + ldr r0, _08027044 @ =0x00000155 + bl sub_080A3268 + ldrb r1, [r4, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08027048 + ldr r1, [r4, #0x54] + adds r0, r1, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #8 + beq _0802705C + adds r0, r1, #0 + movs r1, #8 + bl sub_080042AC + b _0802705C + .align 2, 0 +_08027044: .4byte 0x00000155 +_08027048: + ldr r1, [r4, #0x54] + adds r0, r1, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #7 + beq _0802705C + adds r0, r1, #0 + movs r1, #7 + bl sub_080042AC +_0802705C: + adds r0, r4, #0 + bl sub_08027870 + pop {r4, r5, pc} + + thumb_func_start sub_08027064 +sub_08027064: @ 0x08027064 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + ldr r6, [r5, #0x54] + ldr r0, [r5, #0x68] + mov sb, r0 + ldr r1, [r5, #0x50] + mov r8, r1 + movs r0, #0x60 + strh r0, [r5, #0x24] + adds r0, r6, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xa + beq _08027098 + ldr r0, _080270C8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _08027098 + movs r0, #0x7c + bl sub_080A3268 +_08027098: + adds r0, r5, #0 + adds r0, #0x84 + ldr r3, [r0] + ldrb r1, [r3, #3] + adds r7, r0, #0 + cmp r1, #0 + beq _080270E0 + ldr r0, _080270CC @ =gLinkEntity + movs r2, #0x32 + ldrsh r4, [r5, r2] + movs r1, #0x32 + ldrsh r2, [r0, r1] + cmp r4, r2 + beq _080270E0 + ldr r0, _080270C8 @ =gUnk_030010A0 + ldr r1, [r0] + movs r0, #0xf + ands r1, r0 + cmp r1, #0 + bne _080270D4 + cmp r4, r2 + ble _080270D0 + strb r1, [r3, #0xc] + b _080270D4 + .align 2, 0 +_080270C8: .4byte gUnk_030010A0 +_080270CC: .4byte gLinkEntity +_080270D0: + movs r0, #0x10 + strb r0, [r3, #0xc] +_080270D4: + ldr r0, [r7] + ldrb r0, [r0, #0xc] + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_080AEF88 +_080270E0: + adds r0, r6, #0 + adds r0, #0x85 + ldrb r0, [r0] + cmp r0, #1 + bne _080270FC + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bgt _0802710E + movs r0, #0x18 + b _08027110 +_080270FC: + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _0802710E + movs r0, #0x18 + b _08027110 +_0802710E: + movs r0, #8 +_08027110: + strb r0, [r5, #0x15] + ldr r1, [r7] + ldrb r0, [r1, #3] + cmp r0, #0 + bne _08027152 + movs r2, #0x2e + ldrsh r0, [r5, r2] + ldrh r1, [r1, #0xe] + cmp r0, r1 + bne _0802714A + mov r0, r8 + adds r0, #0x84 + movs r1, #1 + strb r1, [r0] + mov r0, sb + adds r0, #0x84 + strb r1, [r0] + adds r0, r6, #0 + adds r0, #0x84 + strb r1, [r0] + adds r1, r5, #0 + adds r1, #0x7c + movs r0, #0x1e + strb r0, [r1] + ldr r1, [r7] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] + b _080271FE +_0802714A: + adds r0, r5, #0 + bl sub_080AEF88 + b _080271FE +_08027152: + adds r0, r6, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #0 + beq _080271E6 + mov r0, sb + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #0 + beq _080271E6 + mov r0, r8 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #0 + beq _080271E6 + adds r1, r5, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080271FE + mov r0, r8 + adds r0, #0x84 + movs r1, #1 + strb r1, [r0] + mov r0, sb + adds r0, #0x84 + strb r1, [r0] + adds r0, r6, #0 + adds r0, #0x84 + strb r1, [r0] + movs r3, #0 + ldr r0, [r7] + ldrb r0, [r0, #3] + cmp r0, #1 + bls _080271B2 + ldr r0, _080271DC @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r5, r2] + movs r2, #0x2e + ldrsh r0, [r0, r2] + movs r3, #8 + cmp r1, r0 + ble _080271B2 + movs r3, #0x18 +_080271B2: + ldr r2, [r7] + ldrb r1, [r2, #3] + cmp r1, #5 + beq _080271C0 + ldrb r0, [r5, #0x15] + cmp r0, r3 + bne _080271E0 +_080271C0: + movs r4, #0 + movs r0, #6 + strb r0, [r5, #0xd] + adds r0, r5, #0 + movs r1, #7 + movs r2, #1 + bl sub_080276F4 + ldr r0, [r7] + strb r4, [r0, #3] + adds r1, r5, #0 + adds r1, #0x7d + movs r0, #0xf + b _080271FC + .align 2, 0 +_080271DC: .4byte gLinkEntity +_080271E0: + adds r0, r1, #1 + strb r0, [r2, #3] + b _080271FE +_080271E6: + ldr r0, [r7] + ldrb r0, [r0, #3] + cmp r0, #4 + beq _080271F6 + adds r1, r5, #0 + adds r1, #0x7c + movs r0, #0x1e + b _080271FC +_080271F6: + adds r1, r5, #0 + adds r1, #0x7c + movs r0, #0x3c +_080271FC: + strb r0, [r1] +_080271FE: + adds r0, r5, #0 + bl sub_08027870 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0802720C +sub_0802720C: @ 0x0802720C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xd] + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xd] + cmp r0, #0xc + bhi _080272CA + lsls r0, r0, #2 + ldr r1, _08027228 @ =_0802722C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08027228: .4byte _0802722C +_0802722C: @ jump table + .4byte _080272C4 @ case 0 + .4byte _08027260 @ case 1 + .4byte _08027260 @ case 2 + .4byte _0802726E @ case 3 + .4byte _080272AA @ case 4 + .4byte _0802726E @ case 5 + .4byte _080272CA @ case 6 + .4byte _080272CA @ case 7 + .4byte _08027282 @ case 8 + .4byte _080272CA @ case 9 + .4byte _080272A0 @ case 10 + .4byte _080272CA @ case 11 + .4byte _08027260 @ case 12 +_08027260: + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0xa0 + strh r0, [r1] + subs r1, #4 + strh r0, [r1] + b _080272AA +_0802726E: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + beq _080272CA + adds r1, r4, #0 + adds r1, #0x7d + movs r0, #0 + strb r0, [r1] + b _080272AA +_08027282: + ldrb r0, [r4, #0xf] + cmp r0, #3 + bhi _080272CA + adds r0, r4, #0 + bl sub_0802757C + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + bne _080272CA + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + b _080272CA +_080272A0: + adds r2, r4, #0 + adds r2, #0x7d + ldrb r0, [r2] + cmp r0, #0 + bne _080272B2 +_080272AA: + adds r0, r4, #0 + bl sub_0802757C + b _080272CA +_080272B2: + adds r1, r4, #0 + adds r1, #0x84 + ldrb r0, [r1] + cmp r0, #0 + beq _080272CA + movs r0, #0 + strb r0, [r2] + strb r0, [r1] + b _080272CA +_080272C4: + adds r0, r4, #0 + bl sub_0802757C +_080272CA: + ldr r0, [r4, #0x50] + ldr r0, [r0, #0x34] + str r0, [r4, #0x34] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080272D4 +sub_080272D4: @ 0x080272D4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, [r6, #0x50] + ldrb r0, [r0, #0xd] + cmp r0, #0xc + bls _080272E2 + b _08027532 +_080272E2: + lsls r0, r0, #2 + ldr r1, _080272EC @ =_080272F0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080272EC: .4byte _080272F0 +_080272F0: @ jump table + .4byte _08027508 @ case 0 + .4byte _08027324 @ case 1 + .4byte _08027324 @ case 2 + .4byte _08027332 @ case 3 + .4byte _0802733E @ case 4 + .4byte _08027332 @ case 5 + .4byte _08027368 @ case 6 + .4byte _08027532 @ case 7 + .4byte _08027346 @ case 8 + .4byte _08027454 @ case 9 + .4byte _0802748C @ case 10 + .4byte _08027532 @ case 11 + .4byte _08027324 @ case 12 +_08027324: + adds r1, r6, #0 + adds r1, #0x7a + movs r0, #0xa0 + strh r0, [r1] + subs r1, #4 + strh r0, [r1] + b _0802733E +_08027332: + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + bne _0802733E + b _08027532 +_0802733E: + adds r0, r6, #0 + bl sub_0802757C + b _08027532 +_08027346: + ldrb r0, [r6, #0xf] + cmp r0, #2 + bls _0802734E + b _08027532 +_0802734E: + adds r0, r6, #0 + bl sub_0802757C + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + beq _08027360 + b _08027532 +_08027360: + ldrb r0, [r6, #0xf] + adds r0, #1 + strb r0, [r6, #0xf] + b _08027532 +_08027368: + ldr r5, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x7a + ldrh r1, [r0] + movs r4, #0x80 + lsls r4, r4, #9 + adds r0, r4, #0 + bl __divsi3 + lsls r1, r0, #3 + adds r1, r1, r0 + lsrs r1, r1, #7 + strb r1, [r5, #6] + ldr r5, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x76 + ldrh r1, [r0] + adds r0, r4, #0 + bl __divsi3 + lsls r1, r0, #2 + adds r1, r1, r0 + lsrs r1, r1, #6 + strb r1, [r5, #7] + adds r0, r6, #0 + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #0 + bne _080273A4 + b _08027532 +_080273A4: + adds r0, r6, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08027444 + adds r2, r6, #0 + adds r2, #0x3d + ldrb r1, [r2] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _08027444 + ldr r0, [r6, #0x54] + ldr r0, [r0, #0x68] + adds r0, #0x3d + strb r1, [r0] + ldr r0, [r6, #0x54] + ldr r0, [r0, #0x50] + ldrb r1, [r2] + adds r0, #0x3d + strb r1, [r0] + ldr r0, [r6, #0x54] + ldrb r1, [r2] + adds r0, #0x3d + strb r1, [r0] + ldr r0, [r6, #0x54] + bl sub_08027D20 + adds r2, r0, #0 + cmp r2, #0 + beq _08027406 + ldrh r0, [r6, #0x2e] + adds r0, #1 + strh r0, [r2, #0x2e] + adds r0, r6, #0 + adds r0, #0x63 + ldrb r0, [r0] + adds r0, #0x20 + adds r1, r2, #0 + adds r1, #0x63 + strb r0, [r1] + adds r0, r6, #0 + adds r0, #0x62 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x62 + strb r1, [r0] +_08027406: + ldr r0, [r6, #0x54] + bl sub_08027C54 + cmp r0, #0 + beq _0802741C + ldr r0, [r6, #0x54] + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #2 + beq _08027428 +_0802741C: + ldr r0, _08027424 @ =0x00000127 + bl sub_080A3268 + b _08027444 + .align 2, 0 +_08027424: .4byte 0x00000127 +_08027428: + bl sub_08078B48 + ldr r0, _0802744C @ =gUnk_03000BF0 + ldr r2, [r6, #0x54] + str r2, [r0, #0x30] + ldr r1, _08027450 @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + movs r0, #9 + strb r0, [r2, #0xd] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 +_08027444: + adds r0, r6, #0 + bl sub_08027A60 + b _08027484 + .align 2, 0 +_0802744C: .4byte gUnk_03000BF0 +_08027450: .4byte gUnk_02034490 +_08027454: + ldr r5, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x7a + ldrh r1, [r0] + movs r4, #0x80 + lsls r4, r4, #9 + adds r0, r4, #0 + bl __divsi3 + lsls r1, r0, #3 + adds r1, r1, r0 + lsrs r1, r1, #7 + strb r1, [r5, #6] + ldr r5, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x76 + ldrh r1, [r0] + adds r0, r4, #0 + bl __divsi3 + lsls r1, r0, #2 + adds r1, r1, r0 + lsrs r1, r1, #6 + strb r1, [r5, #7] +_08027484: + adds r0, r6, #0 + bl sub_0800445C + b _08027532 +_0802748C: + adds r2, r6, #0 + adds r2, #0x7d + ldrb r0, [r2] + cmp r0, #0 + bne _0802749E + adds r0, r6, #0 + bl sub_0802757C + b _080274AE +_0802749E: + adds r1, r6, #0 + adds r1, #0x84 + ldrb r0, [r1] + cmp r0, #0 + beq _080274AE + movs r0, #0 + strb r0, [r2] + strb r0, [r1] +_080274AE: + adds r2, r6, #0 + adds r2, #0x83 + adds r0, r6, #0 + adds r0, #0x81 + ldrb r1, [r0] + lsrs r0, r1, #1 + ldrb r2, [r2] + adds r0, r2, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r1 + bls _080274F4 + lsls r0, r2, #0x18 + cmp r0, #0 + ble _080274E0 + adds r0, r6, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xc + beq _08027532 + adds r0, r6, #0 + movs r1, #0xc + bl sub_080042AC + b _08027532 +_080274E0: + adds r0, r6, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xb + beq _08027532 + adds r0, r6, #0 + movs r1, #0xb + bl sub_080042AC + b _08027532 +_080274F4: + adds r0, r6, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xa + beq _08027532 + adds r0, r6, #0 + movs r1, #0xa + bl sub_080042AC + b _08027532 +_08027508: + ldr r0, [r6, #0x54] + adds r0, #0x84 + ldr r0, [r0] + ldrb r0, [r0, #3] + cmp r0, #8 + bne _08027532 + adds r0, r6, #0 + bl sub_0802757C + adds r0, r6, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #1 + bne _08027532 + adds r1, r6, #0 + adds r1, #0x81 + ldrb r0, [r1] + cmp r0, #0 + beq _08027532 + subs r0, #4 + strb r0, [r1] +_08027532: + ldr r0, [r6, #0x50] + ldr r0, [r0, #0x34] + str r0, [r6, #0x34] + adds r1, r6, #0 + adds r1, #0x41 + movs r0, #0 + strb r0, [r1] + adds r0, r6, #0 + bl sub_080042B8 + pop {r4, r5, r6, pc} + + thumb_func_start sub_08027548 +sub_08027548: @ 0x08027548 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + adds r6, r1, #0 + movs r5, #0 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xff + str r0, [sp] + adds r0, r4, #0 + movs r1, #0x90 + movs r2, #0xb0 + movs r3, #8 + bl sub_08027B98 + adds r0, r4, #0 + adds r0, #0x7d + strb r5, [r0] + adds r0, r4, #0 + movs r1, #0 + adds r2, r6, #0 + bl sub_080276F4 + add sp, #4 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802757C +sub_0802757C: @ 0x0802757C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + adds r6, r5, #0 + adds r6, #0x7d + ldrb r1, [r6] + cmp r1, #0 + beq _080275BA + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _080275AE + ldr r0, [r5, #0x54] + adds r0, #0x7d + ldrb r0, [r0] + movs r1, #0x83 + adds r1, r1, r5 + mov sl, r1 + cmp r0, #0 + beq _08027676 + movs r0, #0 + strb r0, [r6] + b _08027676 +_080275AE: + subs r0, r1, #1 + strb r0, [r6] + movs r2, #0x83 + adds r2, r2, r5 + mov sl, r2 + b _08027676 +_080275BA: + movs r0, #0x85 + adds r0, r0, r5 + mov ip, r0 + ldrb r1, [r0] + mov sb, r1 + cmp r1, #1 + bne _0802761E + adds r1, r5, #0 + adds r1, #0x82 + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + adds r0, r5, #0 + adds r0, #0x83 + adds r2, r5, #0 + adds r2, #0x81 + movs r4, #0 + ldrsb r4, [r0, r4] + movs r3, #0 + ldrsb r3, [r2, r3] + mov r8, r1 + mov sl, r0 + adds r7, r2, #0 + cmp r4, r3 + blt _08027676 + movs r0, #0 + mov r1, ip + strb r0, [r1] + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _08027616 + ldr r1, [r5, #0x50] + adds r0, r1, #0 + adds r0, #0x81 + ldrb r0, [r0] + lsls r0, r0, #8 + adds r1, #0x86 + ldrh r1, [r1] + bl __divsi3 + adds r0, #1 + strb r0, [r6] + b _0802761A +_08027616: + mov r2, sb + strb r2, [r6] +_0802761A: + ldrb r0, [r7] + b _08027670 +_0802761E: + adds r2, r5, #0 + adds r2, #0x82 + adds r1, r5, #0 + adds r1, #0x86 + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2] + adds r1, r5, #0 + adds r1, #0x83 + movs r4, #0 + ldrsb r4, [r1, r4] + adds r0, r5, #0 + adds r0, #0x81 + ldrb r3, [r0] + mov r8, r2 + mov sl, r1 + adds r7, r0, #0 + cmn r4, r3 + bgt _08027676 + movs r1, #1 + mov r2, ip + strb r1, [r2] + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _0802766A + ldr r1, [r5, #0x50] + adds r0, r1, #0 + adds r0, #0x81 + ldrb r0, [r0] + lsls r0, r0, #8 + adds r1, #0x86 + ldrh r1, [r1] + bl __divsi3 + adds r0, #1 + strb r0, [r6] + b _0802766C +_0802766A: + strb r1, [r6] +_0802766C: + ldrb r0, [r7] + rsbs r0, r0, #0 +_08027670: + lsls r0, r0, #8 + mov r1, r8 + strh r0, [r1] +_08027676: + ldr r2, [r5, #0x50] + adds r0, r2, #0 + adds r0, #0x63 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #0x10 + ldr r0, [r2, #0x30] + adds r0, r0, r1 + str r0, [r5, #0x30] + adds r0, r2, #0 + adds r0, #0x62 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #0x10 + ldr r0, [r2, #0x2c] + adds r0, r0, r1 + str r0, [r5, #0x2c] + ldrb r1, [r5, #0xe] + lsls r1, r1, #8 + mov r0, sl + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_0806F62C + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _080276D2 + ldr r1, [r5, #0x54] + ldr r0, [r5, #0x30] + str r0, [r1, #0x30] + ldr r1, [r5, #0x54] + ldr r0, [r5, #0x2c] + str r0, [r1, #0x2c] + ldr r0, [r5, #0x54] + ldrb r1, [r0, #0xe] + lsls r1, r1, #8 + adds r2, r0, #0 + adds r2, #0x83 + ldrb r2, [r2] + bl sub_0806F62C + ldr r0, [r5, #0x68] + ldr r1, [r5, #0x54] + ldrb r2, [r1, #0xa] + bl sub_080279AC +_080276D2: + ldr r0, [r5, #0x68] + ldrb r2, [r5, #0xa] + adds r1, r5, #0 + bl sub_080279AC + mov r1, sl + ldrb r0, [r1] + rsbs r0, r0, #0 + adds r1, r5, #0 + adds r1, #0x7f + strb r0, [r1] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080276F4 +sub_080276F4: @ 0x080276F4 + push {r4, r5, r6, r7, lr} + adds r6, r2, #0 + ldr r5, [r0, #0x54] + ldr r4, [r0, #0x68] + ldr r0, [r0, #0x50] + mov ip, r0 + adds r0, #0x84 + movs r2, #0 + strb r2, [r0] + adds r0, r4, #0 + adds r0, #0x84 + strb r2, [r0] + adds r0, r5, #0 + adds r0, #0x84 + strb r2, [r0] + mov r0, ip + adds r0, #0x7e + movs r7, #0 + strh r2, [r0] + adds r0, r4, #0 + adds r0, #0x7e + strh r2, [r0] + adds r0, r5, #0 + adds r0, #0x7e + strh r2, [r0] + mov r0, ip + adds r0, #0x7d + strb r7, [r0] + adds r0, r4, #0 + adds r0, #0x7d + strb r7, [r0] + ldr r0, _080277AC @ =gUnk_080CC27C + lsls r1, r1, #2 + adds r0, r1, r0 + ldrh r2, [r0] + adds r3, r5, #0 + adds r3, #0x86 + strh r2, [r3] + ldrb r0, [r0, #2] + adds r2, r5, #0 + adds r2, #0x81 + strb r0, [r2] + ldr r0, _080277B0 @ =gUnk_080CC2BC + adds r0, r1, r0 + ldrh r2, [r0] + adds r3, r4, #0 + adds r3, #0x86 + strh r2, [r3] + ldrb r0, [r0, #2] + adds r2, r4, #0 + adds r2, #0x81 + strb r0, [r2] + ldr r0, _080277B4 @ =gUnk_080CC29C + adds r1, r1, r0 + ldrh r0, [r1] + mov r2, ip + adds r2, #0x86 + strh r0, [r2] + ldrb r0, [r1, #2] + mov r1, ip + adds r1, #0x81 + strb r0, [r1] + cmp r6, #0 + bne _080277AA + mov r0, ip + adds r0, #0x85 + strb r7, [r0] + adds r0, r4, #0 + adds r0, #0x85 + strb r7, [r0] + adds r0, r5, #0 + adds r0, #0x85 + strb r7, [r0] + mov r0, ip + adds r0, #0x82 + strh r6, [r0] + adds r0, r4, #0 + adds r0, #0x82 + strh r6, [r0] + adds r0, r5, #0 + adds r0, #0x82 + strh r6, [r0] + ldrb r0, [r1] + lsls r0, r0, #7 + ldrh r1, [r2] + bl __divsi3 + adds r0, #1 + adds r1, r5, #0 + adds r1, #0x7d + strb r0, [r1] +_080277AA: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080277AC: .4byte gUnk_080CC27C +_080277B0: .4byte gUnk_080CC2BC +_080277B4: .4byte gUnk_080CC29C + + thumb_func_start sub_080277B8 +sub_080277B8: @ 0x080277B8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r1, [r5, #0x54] + adds r3, r1, #0 + adds r3, #0x7a + ldrh r0, [r3] + cmp r4, r0 + bls _080277DC + adds r0, r0, r2 + strh r0, [r3] + ldr r0, [r1, #0x74] + ldr r2, _080277D8 @ =0xFFFE8000 + adds r0, r0, r2 + str r0, [r1, #0x74] + b _080277F0 + .align 2, 0 +_080277D8: .4byte 0xFFFE8000 +_080277DC: + strh r4, [r3] + adds r1, #0x7c + movs r0, #8 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #3] + adds r0, #1 + strb r0, [r1, #3] +_080277F0: + adds r0, r5, #0 + bl sub_080277F8 + pop {r4, r5, pc} + + thumb_func_start sub_080277F8 +sub_080277F8: @ 0x080277F8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r3, [r6, #0x54] + ldr r5, [r6, #0x68] + ldr r4, [r6, #0x50] + ldrh r2, [r6, #0x2e] + strh r2, [r5, #0x2e] + movs r7, #0xe + strb r7, [r5, #0xe] + ldrh r0, [r6, #0x32] + subs r0, #0xe + strh r0, [r5, #0x32] + strh r2, [r4, #0x2e] + movs r0, #0x7a + adds r0, r0, r3 + mov ip, r0 + ldrh r1, [r0] + subs r1, #0xa0 + asrs r1, r1, #4 + movs r0, #0x12 + subs r0, r0, r1 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0xe] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + strh r0, [r4, #0x32] + strh r2, [r3, #0x2e] + mov r1, ip + ldrh r0, [r1] + cmp r0, #0xa0 + bls _0802784E + subs r0, #0xa0 + asrs r0, r0, #2 + movs r1, #0xe + subs r1, r1, r0 + strb r1, [r3, #0xe] + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + beq _08027850 + movs r0, #0 + strb r0, [r3, #0xe] + b _08027850 +_0802784E: + strb r7, [r3, #0xe] +_08027850: + ldrb r1, [r3, #0xe] + ldrh r0, [r4, #0x32] + subs r0, r0, r1 + strh r0, [r3, #0x32] + ldr r0, [r3, #0x74] + str r0, [r4, #0x74] + ldr r0, [r3, #0x78] + str r0, [r4, #0x78] + ldr r0, [r3, #0x74] + str r0, [r5, #0x74] + ldr r0, [r3, #0x78] + str r0, [r5, #0x78] + adds r0, r6, #0 + bl sub_08027984 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08027870 +sub_08027870: @ 0x08027870 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r4, [r7, #0x54] + ldr r5, [r7, #0x68] + ldr r6, [r7, #0x50] + ldr r0, [r4, #0x74] + str r0, [r6, #0x74] + ldr r0, [r4, #0x78] + str r0, [r6, #0x78] + ldr r0, [r4, #0x74] + str r0, [r5, #0x74] + ldr r0, [r4, #0x78] + str r0, [r5, #0x78] + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + rsbs r0, r0, #0 + adds r1, r4, #0 + adds r1, #0x7f + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x83 + ldrb r0, [r0] + rsbs r0, r0, #0 + adds r1, r5, #0 + adds r1, #0x7f + strb r0, [r1] + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + rsbs r0, r0, #0 + adds r1, r6, #0 + adds r1, #0x7f + strb r0, [r1] + adds r1, r5, #0 + adds r1, #0x7a + ldrh r0, [r1] + cmp r0, #0xa0 + bls _080278C2 + movs r0, #0xe + b _080278CC +_080278C2: + ldrh r1, [r1] + movs r0, #0xa0 + subs r0, r0, r1 + asrs r0, r0, #3 + adds r0, #0xe +_080278CC: + strb r0, [r5, #0xe] + adds r1, r6, #0 + adds r1, #0x7a + ldrh r0, [r1] + cmp r0, #0xa0 + bls _080278EA + adds r2, r4, #0 + adds r2, #0x7a + ldrh r1, [r2] + subs r1, #0xa0 + asrs r1, r1, #4 + movs r0, #0x12 + subs r0, r0, r1 + strb r0, [r6, #0xe] + b _080278FA +_080278EA: + ldrh r1, [r1] + movs r0, #0xa0 + subs r0, r0, r1 + asrs r0, r0, #2 + adds r0, #0x12 + strb r0, [r6, #0xe] + adds r2, r4, #0 + adds r2, #0x7a +_080278FA: + adds r0, r2, #0 + ldrh r1, [r0] + cmp r1, #0xa0 + bls _0802791A + adds r0, r1, #0 + subs r0, #0xa0 + asrs r0, r0, #2 + movs r1, #0xe + subs r1, r1, r0 + strb r1, [r4, #0xe] + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + beq _08027934 + movs r0, #0 + b _08027932 +_0802791A: + cmp r1, #0x7f + bhi _08027928 + ldrh r1, [r0] + movs r0, #0xa0 + subs r0, r0, r1 + asrs r0, r0, #2 + b _08027930 +_08027928: + ldrh r1, [r2] + movs r0, #0xa0 + subs r0, r0, r1 + asrs r0, r0, #1 +_08027930: + adds r0, #0xe +_08027932: + strb r0, [r4, #0xe] +_08027934: + ldr r0, [r7, #0x2c] + str r0, [r5, #0x2c] + ldr r0, [r7, #0x30] + str r0, [r5, #0x30] + ldrb r1, [r5, #0xe] + lsls r1, r1, #8 + adds r0, r5, #0 + adds r0, #0x83 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_0806F62C + ldr r0, [r5, #0x2c] + str r0, [r6, #0x2c] + ldr r0, [r5, #0x30] + str r0, [r6, #0x30] + ldrb r1, [r6, #0xe] + lsls r1, r1, #8 + adds r0, r6, #0 + adds r0, #0x83 + ldrb r2, [r0] + adds r0, r6, #0 + bl sub_0806F62C + ldr r0, [r6, #0x2c] + str r0, [r4, #0x2c] + ldr r0, [r6, #0x30] + str r0, [r4, #0x30] + ldrb r1, [r4, #0xe] + lsls r1, r1, #8 + adds r0, r4, #0 + adds r0, #0x83 + ldrb r2, [r0] + adds r0, r4, #0 + bl sub_0806F62C + adds r0, r7, #0 + bl sub_08027984 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08027984 +sub_08027984: @ 0x08027984 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x54] + ldr r5, [r4, #0x68] + ldr r6, [r4, #0x50] + ldrb r2, [r1, #0xa] + bl sub_080279AC + ldrb r2, [r5, #0xa] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080279AC + ldrb r2, [r6, #0xa] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080279AC + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080279AC +sub_080279AC: @ 0x080279AC + push {r4, r5, r6, lr} + mov ip, r1 + movs r3, #4 + subs r3, r3, r2 + ldrh r1, [r1, #0x2e] + ldrh r4, [r0, #0x2e] + subs r1, r1, r4 + mov r6, ip + adds r6, #0x62 + strb r1, [r6] + mov r2, ip + ldrh r1, [r2, #0x32] + ldrh r2, [r0, #0x32] + adds r0, r2, r3 + subs r1, r1, r0 + mov r5, ip + adds r5, #0x63 + strb r1, [r5] + mov r0, ip + strh r4, [r0, #0x2e] + adds r2, r2, r3 + strh r2, [r0, #0x32] + ldr r1, [r0, #0x48] + ldrb r0, [r6] + strb r0, [r1] + mov r2, ip + ldr r1, [r2, #0x48] + ldrb r0, [r5] + strb r0, [r1, #1] + pop {r4, r5, r6, pc} + + thumb_func_start sub_080279E8 +sub_080279E8: @ 0x080279E8 + push {r4, lr} + sub sp, #4 + adds r2, r0, #0 + ldr r4, [r2, #0x54] + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0x80 + bne _08027A20 + adds r0, r2, #0 + adds r0, #0x76 + ldrh r1, [r0] + adds r0, #0xe + ldr r0, [r0] + ldrb r0, [r0, #5] + subs r1, r1, r0 + cmp r1, #0x80 + bne _08027A58 + adds r0, r2, #0 + adds r0, #0x82 + ldrb r1, [r0] + movs r0, #1 + str r0, [sp] + adds r0, r2, #0 + movs r2, #0xa0 + movs r3, #0x20 + bl sub_08027B98 + b _08027A58 +_08027A20: + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + adds r3, r0, #0 + cmp r1, #0xa0 + bls _08027A30 + subs r0, r1, #4 + b _08027A32 +_08027A30: + movs r0, #0xa0 +_08027A32: + strh r0, [r3] + adds r0, r4, #0 + adds r0, #0x7a + ldrh r2, [r0] + adds r1, r0, #0 + cmp r2, #0xa0 + bls _08027A44 + subs r0, r2, #4 + b _08027A46 +_08027A44: + movs r0, #0xa0 +_08027A46: + strh r0, [r1] + ldrh r0, [r3] + cmp r0, #0xa0 + bne _08027A58 + ldrh r0, [r1] + cmp r0, #0xa0 + bne _08027A58 + movs r0, #1 + b _08027A5A +_08027A58: + movs r0, #0 +_08027A5A: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08027A60 +sub_08027A60: @ 0x08027A60 + push {lr} + adds r2, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08027A78 + ldr r0, [r2, #0x74] + movs r1, #0x80 + lsls r1, r1, #7 + b _08027A7C +_08027A78: + ldr r0, [r2, #0x74] + ldr r1, _08027AA0 @ =0xFFFFC000 +_08027A7C: + adds r0, r0, r1 + str r0, [r2, #0x74] + adds r3, r2, #0 + adds r3, #0x7c + ldrb r0, [r3] + adds r2, r0, #1 + strb r2, [r3] + movs r0, #0x7f + ands r0, r2 + cmp r0, #0x28 + bne _08027A9C + movs r1, #0x80 + movs r0, #0x80 + ands r2, r0 + eors r2, r1 + strb r2, [r3] +_08027A9C: + pop {pc} + .align 2, 0 +_08027AA0: .4byte 0xFFFFC000 + + thumb_func_start sub_08027AA4 +sub_08027AA4: @ 0x08027AA4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08027B94 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _08027AC2 + cmp r0, #0x1b + beq _08027B44 + b _08027B94 +_08027AC2: + movs r0, #0x84 + bl sub_080A3268 + ldrb r3, [r5, #0xb] + adds r0, r5, #0 + movs r1, #0x49 + movs r2, #9 + bl sub_080A2988 + ldr r0, _08027B3C @ =0x00000155 + bl sub_080A3268 + adds r0, r5, #0 + adds r0, #0x84 + ldr r4, [r0] + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #3 + strb r0, [r1] + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldrb r0, [r4, #6] + movs r1, #3 + bl __divsi3 + adds r1, r0, #0 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x15 + ldrb r2, [r4, #5] + cmp r0, r2 + beq _08027B06 + lsls r0, r1, #3 + strb r0, [r4, #5] +_08027B06: + movs r0, #0xb4 + str r0, [r4, #8] + movs r0, #5 + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _08027B94 + movs r0, #0x40 + strb r0, [r4, #1] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0 + strb r0, [r1] + ldrb r0, [r5, #0xd] + cmp r0, #2 + bne _08027B2A + adds r0, r5, #0 + bl sub_08027BBC +_08027B2A: + adds r0, r5, #0 + bl sub_08027D20 + ldr r0, _08027B40 @ =0x00000127 + bl sub_080A3268 +_08027B36: + movs r0, #1 + b _08027B96 + .align 2, 0 +_08027B3C: .4byte 0x00000155 +_08027B40: .4byte 0x00000127 +_08027B44: + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #0xe2 + strb r0, [r1] + ldr r0, [r5, #0x4c] + ldrb r0, [r0, #0xa] + adds r0, #1 + cmp r0, #2 + beq _08027B74 + cmp r0, #2 + bgt _08027B60 + cmp r0, #1 + beq _08027B84 + b _08027B36 +_08027B60: + cmp r0, #3 + bne _08027B36 + adds r1, r5, #0 + adds r1, #0x42 + movs r0, #0x1a + strb r0, [r1] + adds r1, #4 + movs r0, #0xe0 + lsls r0, r0, #1 + b _08027B90 +_08027B74: + adds r1, r5, #0 + adds r1, #0x42 + movs r0, #0x14 + strb r0, [r1] + adds r1, #4 + movs r0, #0xc0 + lsls r0, r0, #1 + b _08027B90 +_08027B84: + adds r1, r5, #0 + adds r1, #0x42 + movs r0, #0x10 + strb r0, [r1] + adds r1, #4 + adds r0, #0xf0 +_08027B90: + strh r0, [r1] + b _08027B36 +_08027B94: + movs r0, #0 +_08027B96: + pop {r4, r5, pc} + + thumb_func_start sub_08027B98 +sub_08027B98: @ 0x08027B98 + push {r4, lr} + mov ip, r0 + ldr r4, [sp, #8] + adds r0, #0x82 + strb r1, [r0] + subs r0, #1 + strb r2, [r0] + subs r0, #1 + strb r3, [r0] + cmp r4, #0xff + beq _08027BB4 + mov r0, ip + strb r4, [r0, #0xe] + b _08027BBA +_08027BB4: + movs r0, #1 + mov r1, ip + strb r0, [r1, #0xe] +_08027BBA: + pop {r4, pc} + + thumb_func_start sub_08027BBC +sub_08027BBC: @ 0x08027BBC + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r4, #0 + movs r0, #0xa + strb r0, [r6, #0xd] + adds r5, r6, #0 + adds r5, #0x84 + ldr r0, [r5] + strb r4, [r0, #1] + adds r0, r6, #0 + movs r1, #7 + movs r2, #1 + bl sub_080276F4 + ldr r0, [r6, #0x54] + adds r0, #0x7d + strb r4, [r0] + movs r3, #0 + strh r4, [r6, #0x24] + ldr r0, [r5] + strb r3, [r0, #3] + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r0, [r5] + ldrh r0, [r0, #0xe] + cmp r1, r0 + ble _08027C0A + movs r0, #0x18 + strb r0, [r6, #0x15] + ldr r2, [r6, #0x54] + ldr r1, [r6, #0x50] + ldr r0, [r6, #0x68] + adds r0, #0x85 + strb r3, [r0] + adds r1, #0x85 + strb r3, [r1] + adds r2, #0x85 + strb r3, [r2] + b _08027C22 +_08027C0A: + movs r0, #8 + strb r0, [r6, #0x15] + ldr r3, [r6, #0x54] + ldr r2, [r6, #0x50] + ldr r0, [r6, #0x68] + adds r0, #0x85 + movs r1, #1 + strb r1, [r0] + adds r2, #0x85 + strb r1, [r2] + adds r3, #0x85 + strb r1, [r3] +_08027C22: + ldrb r0, [r6, #0x15] + lsrs r0, r0, #2 + strb r0, [r6, #0x14] + ldr r0, _08027C44 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r6, r2] + movs r2, #0x32 + ldrsh r0, [r0, r2] + cmp r1, r0 + beq _08027C52 + cmp r1, r0 + ble _08027C48 + adds r0, r6, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #0 + b _08027C50 + .align 2, 0 +_08027C44: .4byte gLinkEntity +_08027C48: + adds r0, r6, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #0x10 +_08027C50: + strb r0, [r1, #0xc] +_08027C52: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08027C54 +sub_08027C54: @ 0x08027C54 + push {lr} + ldr r2, _08027C74 @ =gUnk_080CC2DC + adds r1, r0, #0 + adds r1, #0x84 + ldr r1, [r1] + ldrb r1, [r1, #4] + adds r1, r1, r2 + ldr r0, [r0, #0x54] + adds r0, #0x45 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bhi _08027C78 + movs r0, #0 + b _08027C7A + .align 2, 0 +_08027C74: .4byte gUnk_080CC2DC +_08027C78: + movs r0, #1 +_08027C7A: + pop {pc} + + thumb_func_start sub_08027C7C +sub_08027C7C: @ 0x08027C7C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [r4, #0x54] + bl sub_08027C9C + ldr r0, [r4, #0x68] + adds r1, r5, #0 + bl sub_08027C9C + ldr r0, [r4, #0x50] + adds r1, r5, #0 + bl sub_08027C9C + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08027C9C +sub_08027C9C: @ 0x08027C9C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08000E50 + ands r0, r4 + cmp r0, #0 + bne _08027D1E + adds r0, r5, #0 + movs r1, #0x48 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _08027D1E + adds r0, r5, #0 + adds r0, #0x62 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r1, [r5, #0x48] + ldrb r1, [r1, #6] + subs r0, r0, r1 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + bl sub_08000E50 + ldr r1, [r5, #0x48] + ldrb r1, [r1, #6] + lsls r1, r1, #1 + bl __modsi3 + ldrh r1, [r4, #0x2e] + adds r1, r1, r0 + strh r1, [r4, #0x2e] + adds r0, r5, #0 + adds r0, #0x63 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldr r1, [r5, #0x48] + ldrb r1, [r1, #7] + subs r0, r0, r1 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + bl sub_08000E50 + ldr r1, [r5, #0x48] + ldrb r1, [r1, #7] + lsls r1, r1, #1 + bl __modsi3 + ldrh r1, [r4, #0x32] + adds r1, r1, r0 + strh r1, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_08027D1E: + pop {r4, r5, pc} + + thumb_func_start sub_08027D20 +sub_08027D20: @ 0x08027D20 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x15 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r4, r0, #0 + cmp r4, #0 + beq _08027D66 + movs r0, #0xc9 + strh r0, [r4, #0x12] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #8 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x3e + bl sub_080ADF80 + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _08027D5E + adds r0, r4, #0 + movs r1, #0x2b + bl sub_0801D040 + b _08027D66 +_08027D5E: + adds r0, r4, #0 + movs r1, #0x2c + bl sub_0801D040 +_08027D66: + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08027D6C +sub_08027D6C: @ 0x08027D6C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08027D88 @ =gUnk_080CC6FC + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08027D88: .4byte gUnk_080CC6FC + + thumb_func_start sub_08027D8C +sub_08027D8C: @ 0x08027D8C + push {lr} + ldr r2, _08027DA0 @ =gUnk_080CC714 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08027DA0: .4byte gUnk_080CC714 + + thumb_func_start sub_08027DA4 +sub_08027DA4: @ 0x08027DA4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x3f + ldrb r0, [r2] + cmp r0, #1 + bne _08027DC4 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x8c + strb r0, [r2] + b _08027E0E +_08027DC4: + ldrb r0, [r4, #0xc] + cmp r0, #7 + bne _08027DD2 + adds r0, r4, #0 + bl sub_0802810C + b _08027E0E +_08027DD2: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r2, [r0] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08027E0E + movs r1, #0x7f + ands r1, r2 + cmp r1, #0 + bne _08027E0E + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x5f + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #0xfc + ands r0, r1 + strb r0, [r2] + ldr r0, _08027E38 @ =gLinkEntity + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + adds r1, r4, #0 + adds r1, #0x83 + strb r0, [r1] +_08027E0E: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _08027E1C + movs r0, #0x20 + strb r0, [r4, #0xe] +_08027E1C: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08027E2E + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08027E2E: + ldr r1, _08027E3C @ =gUnk_080CC6FC + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08027E38: .4byte gLinkEntity +_08027E3C: .4byte gUnk_080CC6FC + + thumb_func_start sub_08027E40 +sub_08027E40: @ 0x08027E40 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #2 + bne _08027E62 + adds r5, r4, #0 + adds r5, #0x80 + ldrb r0, [r5] + cmp r0, #0xff + beq _08027E62 + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + ldrb r0, [r5] + bl sub_08028224 +_08027E62: + adds r0, r4, #0 + bl sub_0804A7D4 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start nullsub_139 +nullsub_139: @ 0x08027E6C + bx lr + .align 2, 0 + + thumb_func_start sub_08027E70 +sub_08027E70: @ 0x08027E70 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + ldrb r3, [r4, #0xa] + cmp r3, #1 + beq _08027EA6 + cmp r3, #1 + bgt _08027E88 + cmp r3, #0 + beq _08027E8E + b _08027EE4 +_08027E88: + cmp r3, #2 + beq _08027EC4 + b _08027EE4 +_08027E8E: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + strb r3, [r4, #0xe] + b _08027EE4 +_08027EA6: + movs r2, #1 + strb r3, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #8 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08027EE4 +_08027EC4: + movs r3, #0 + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + strb r3, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x3f + strb r2, [r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08027EE4: + movs r0, #0 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x82 + strb r0, [r1] + strb r0, [r4, #0x14] + adds r1, #1 + strb r0, [r1] + subs r1, #3 + movs r0, #0xff + strb r0, [r1] + pop {r4, pc} + + thumb_func_start sub_08027EFC +sub_08027EFC: @ 0x08027EFC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #1 + beq _08027F7C + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08027F68 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08027F32 + bl sub_08000E50 + movs r1, #0x30 + ands r1, r0 + cmp r1, #0 + beq _08027F32 + adds r0, r4, #0 + bl sub_08049EE4 + b _08027F38 +_08027F32: + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] +_08027F38: + strb r0, [r4, #0x15] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08027F5A + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x82 + strb r0, [r1] + movs r0, #8 + strb r0, [r4, #0xe] +_08027F5A: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + b _08027F7C +_08027F68: + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08027F7C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_12 +nullsub_12: @ 0x08027F80 + bx lr + .align 2, 0 + + thumb_func_start sub_08027F84 +sub_08027F84: @ 0x08027F84 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08027FB0 + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #9 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080A29BC +_08027FB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08027FB4 +sub_08027FB4: @ 0x08027FB4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08027FD6 + movs r1, #1 + movs r0, #1 + strb r0, [r2, #0xc] + strb r0, [r2, #0xe] + adds r3, r2, #0 + adds r3, #0x3b + ldrb r0, [r3] + orrs r0, r1 + strb r0, [r3] +_08027FD6: + adds r0, r2, #0 + bl sub_08004274 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08027FE0 +sub_08027FE0: @ 0x08027FE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08028028 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + movs r2, #8 + movs r0, #8 + strb r0, [r4, #0xe] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0x41 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08028028: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802802C +sub_0802802C: @ 0x0802802C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802805A + movs r2, #0 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + strb r0, [r4, #0x18] + strb r2, [r4, #0x15] + strb r2, [r4, #0xe] + adds r0, r4, #0 + bl sub_080A29BC +_0802805A: + pop {r4, pc} + + thumb_func_start sub_0802805C +sub_0802805C: @ 0x0802805C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #2 + bl sub_08004276 + bl sub_0807953C + cmp r0, #0 + beq _0802807E + bl sub_08000E50 + ldrb r2, [r5, #0xf] + adds r2, #1 + movs r1, #1 + ands r1, r0 + adds r2, r2, r1 + strb r2, [r5, #0xf] +_0802807E: + ldrb r0, [r5, #0xf] + cmp r0, #0x18 + bhi _0802808E + ldr r0, _08028098 @ =gUnk_02002A40 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, #0 + bne _0802809C +_0802808E: + adds r0, r5, #0 + bl sub_0802810C + b _08028102 + .align 2, 0 +_08028098: .4byte gUnk_02002A40 +_0802809C: + bl sub_08077B2C + ldr r2, _08028104 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r4, _08028108 @ =gLinkEntity + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldrh r0, [r5, #0x12] + ldrb r1, [r5, #0x1e] + bl sub_080700C8 + ldrb r1, [r0] + adds r2, r4, #0 + adds r2, #0x62 + strb r1, [r2] + ldrb r0, [r0, #1] + adds r1, r4, #0 + adds r1, #0x63 + strb r0, [r1] + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080280F0 + adds r0, r5, #0 + bl sub_080281A0 +_080280F0: + ldrb r1, [r5, #0xe] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08028102 + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 +_08028102: + pop {r4, r5, pc} + .align 2, 0 +_08028104: .4byte gUnk_03003F80 +_08028108: .4byte gLinkEntity + + thumb_func_start sub_0802810C +sub_0802810C: @ 0x0802810C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08028198 @ =gUnk_03003F80 + movs r1, #0 + movs r0, #0x41 + strb r0, [r2, #2] + strb r1, [r2, #0xa] + ldr r0, [r2, #0x30] + subs r1, #0x11 + ands r0, r1 + str r0, [r2, #0x30] + ldr r0, _0802819C @ =gLinkEntity + mov ip, r0 + ldrb r0, [r0, #0x10] + movs r1, #0x80 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x10] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r1, #0x20] + adds r1, #0x3d + movs r0, #0xc4 + strb r0, [r1] + movs r3, #0 + mov r2, ip + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + strb r0, [r2, #0x15] + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + mov r5, ip + adds r5, #0x29 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + mov r1, ip + adds r1, #0x63 + movs r0, #0 + ldrsb r0, [r1, r0] + mov r2, ip + strh r0, [r2, #0x36] + strb r3, [r1] + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x50 + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _08028196 + movs r0, #0xee + strb r0, [r1] +_08028196: + pop {r4, r5, pc} + .align 2, 0 +_08028198: .4byte gUnk_03003F80 +_0802819C: .4byte gLinkEntity + + thumb_func_start sub_080281A0 +sub_080281A0: @ 0x080281A0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x19 + strb r0, [r4, #0xf] + movs r0, #0xe + bl sub_080281E0 + cmp r0, #0 + beq _080281BA + adds r0, r4, #0 + adds r0, #0x80 + movs r1, #0xe + b _080281CA +_080281BA: + movs r0, #0xd + bl sub_080281E0 + cmp r0, #0 + beq _080281D6 + adds r0, r4, #0 + adds r0, #0x80 + movs r1, #0xd +_080281CA: + strb r1, [r0] + movs r0, #0xaf + lsls r0, r0, #3 + bl sub_08056378 + b _080281DE +_080281D6: + movs r0, #1 + rsbs r0, r0, #0 + bl sub_080526A0 +_080281DE: + pop {r4, pc} + + thumb_func_start sub_080281E0 +sub_080281E0: @ 0x080281E0 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + movs r4, #0 + bl sub_0807CA84 + cmp r0, #1 + bne _0802821A + ldr r6, _08028220 @ =gUnk_02002A40 + adds r5, r6, #0 + adds r5, #0xb4 + ldrb r0, [r5] + bl sub_080544B4 + cmp r0, #0 + beq _08028200 + strb r4, [r5] +_08028200: + adds r5, r6, #0 + adds r5, #0xb5 + ldrb r0, [r5] + bl sub_080544B4 + cmp r0, #0 + beq _08028210 + strb r4, [r5] +_08028210: + adds r0, r7, #0 + movs r1, #0 + bl sub_0807CAA0 + movs r4, #1 +_0802821A: + adds r0, r4, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08028220: .4byte gUnk_02002A40 + + thumb_func_start sub_08028224 +sub_08028224: @ 0x08028224 + push {lr} + movs r1, #0 + movs r2, #1 + bl sub_080A7C18 + ldr r0, _08028238 @ =0x00000579 + bl sub_08056378 + pop {pc} + .align 2, 0 +_08028238: .4byte 0x00000579 + + thumb_func_start sub_0802823C +sub_0802823C: @ 0x0802823C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08028268 @ =gUnk_080CC790 + bl sub_0800129E + movs r3, #0x20 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _08028266 + ldr r0, [r1, #4] + cmp r0, #0 + beq _08028266 + adds r0, r4, #0 + bl sub_0806FA24 +_08028266: + pop {r4, pc} + .align 2, 0 +_08028268: .4byte gUnk_080CC790 + + thumb_func_start sub_0802826C +sub_0802826C: @ 0x0802826C + push {lr} + ldr r2, _08028280 @ =gUnk_080CC7A8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08028280: .4byte gUnk_080CC7A8 + + thumb_func_start sub_08028284 +sub_08028284: @ 0x08028284 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08028298 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08028298: + ldr r1, _080282BC @ =gUnk_080CC790 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080282DE + ldrb r0, [r4, #0xc] + cmp r0, #4 + beq _080282C0 + adds r0, r4, #0 + bl sub_08028754 + b _080282DE + .align 2, 0 +_080282BC: .4byte gUnk_080CC790 +_080282C0: + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _080282DE + adds r1, r4, #0 + adds r1, #0x7a + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r1, #7 + movs r0, #0x16 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08028784 +_080282DE: + ldr r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x3d + ldrb r1, [r1] + adds r0, #0x3d + strb r1, [r0] + adds r0, r4, #0 + adds r0, #0x45 + ldrb r5, [r0] + cmp r5, #0 + bne _0802830C + movs r0, #0 + strh r5, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x82 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080287E0 + ldr r0, [r4, #0x54] + bl sub_0805E7BC + str r5, [r4, #0x54] +_0802830C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start nullsub_13 +nullsub_13: @ 0x08028310 + bx lr + .align 2, 0 + + thumb_func_start sub_08028314 +sub_08028314: @ 0x08028314 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r1, #0 + movs r2, #1 + strb r2, [r4, #0xc] + strb r1, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x7b + strb r1, [r0] + adds r0, #5 + strb r1, [r0] + adds r0, #3 + strb r1, [r0] + subs r0, #2 + strb r1, [r0] + subs r0, #7 + strb r1, [r0] + adds r0, #8 + strb r2, [r0] + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802835E + ldrb r1, [r4, #0xb] + lsls r0, r1, #1 + strb r0, [r4, #0x14] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + lsls r1, r1, #3 + strb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_080287E0 + b _08028368 +_0802835E: + movs r0, #0x10 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08028604 +_08028368: + movs r0, #3 + bl sub_080A7EE0 + cmp r0, #0 + beq _08028376 + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_08028376: + pop {r4, pc} + + thumb_func_start sub_08028378 +sub_08028378: @ 0x08028378 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x81 + ldrb r0, [r1] + cmp r0, #0 + beq _0802838A + subs r0, #1 + strb r0, [r1] +_0802838A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080283B8 + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ands r0, r2 + cmp r0, #0xf + bls _080283B0 + adds r0, r4, #0 + bl sub_08028728 + b _080283FC +_080283B0: + adds r0, r4, #0 + bl sub_08028604 + b _080283FC +_080283B8: + adds r0, r4, #0 + bl sub_080286CC + cmp r0, #0 + beq _080283CE + adds r2, r4, #0 + adds r2, #0x7b + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_080283CE: + adds r0, r4, #0 + bl sub_080288A4 + cmp r0, #0 + beq _080283FC + ldrh r1, [r4, #0x2a] + adds r0, r4, #0 + bl sub_0800417E + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x83 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080287E0 +_080283FC: + ldrb r0, [r4, #0xf] + cmp r0, #0xb + bls _08028414 + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0 + beq _08028418 + adds r0, r4, #0 + bl sub_08028754 + b _08028418 +_08028414: + adds r0, #1 + strb r0, [r4, #0xf] +_08028418: + adds r0, r4, #0 + bl sub_08028858 + pop {r4, pc} + + thumb_func_start sub_08028420 +sub_08028420: @ 0x08028420 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802844C + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x82 + strb r1, [r0] + subs r0, #2 + strb r1, [r0] + movs r0, #0x10 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08028604 + b _08028462 +_0802844C: + adds r0, r4, #0 + bl sub_080286CC + cmp r0, #0 + beq _08028462 + adds r2, r4, #0 + adds r2, #0x7b + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_08028462: + ldrb r0, [r4, #0xf] + cmp r0, #0xb + bls _0802847A + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0 + beq _0802847E + adds r0, r4, #0 + bl sub_08028754 + b _0802847E +_0802847A: + adds r0, #1 + strb r0, [r4, #0xf] +_0802847E: + adds r0, r4, #0 + bl sub_08028858 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08028488 +sub_08028488: @ 0x08028488 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _08028520 + adds r0, r4, #0 + adds r0, #0x82 + ldrb r1, [r0] + adds r3, r0, #0 + cmp r1, #2 + beq _080284D2 + cmp r1, #2 + ble _080284F0 + cmp r1, #3 + beq _080284B4 + cmp r1, #4 + beq _080284E6 + b _080284F0 +_080284B4: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + movs r0, #0x8f + lsls r0, r0, #1 + bl sub_08004488 + b _0802850A +_080284D2: + strb r1, [r4, #0xc] + strh r2, [r4, #0x24] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0x40 + b _08028508 +_080284E6: + ldrb r0, [r4, #0x15] + adds r0, #0x10 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] +_080284F0: + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r3] + movs r0, #0x80 + strh r0, [r4, #0x24] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0x22 +_08028508: + strb r1, [r4, #0xe] +_0802850A: + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_080287E0 +_08028520: + adds r0, r4, #0 + bl sub_08028858 + pop {r4, pc} + + thumb_func_start sub_08028528 +sub_08028528: @ 0x08028528 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r5, r0, #0 + cmp r5, #0 + bne _08028542 + strb r5, [r4, #0xf] + adds r0, r4, #0 + bl sub_08028728 + b _08028600 +_08028542: + adds r0, r4, #0 + bl sub_080288C0 + ldr r1, _08028590 @ =gUnk_080CC944 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #1] + strb r0, [r1, #1] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #6] + strb r0, [r1, #6] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #7] + strb r0, [r1, #7] + adds r0, r4, #0 + adds r0, #0x7a + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + beq _08028594 + movs r0, #0 + strb r0, [r6] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x16 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08028784 + adds r1, r4, #0 + adds r1, #0x7b + b _080285EE + .align 2, 0 +_08028590: .4byte gUnk_080CC944 +_08028594: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x20 + bne _080285BC + strb r1, [r4, #0xe] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080045C4 + adds r5, r0, #0 + ldrb r0, [r4, #0x15] + adds r1, r5, #0 + bl sub_08028828 + cmp r0, #0 + beq _080285BC + strb r5, [r4, #0x15] +_080285BC: + ldrb r1, [r4, #0xe] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _080285D6 + movs r0, #0xf0 + bl sub_08004488 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0x40 + bl CreateFX +_080285D6: + adds r1, r4, #0 + adds r1, #0x7b + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x80 + bne _080285EE + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] +_080285EE: + ldrb r0, [r1] + cmp r0, #0x20 + bls _080285FA + adds r0, r4, #0 + bl sub_080AEF88 +_080285FA: + adds r0, r4, #0 + bl sub_08004274 +_08028600: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08028604 +sub_08028604: @ 0x08028604 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #0 + strb r1, [r4, #0xf] + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #1 + bne _080286B0 + bl sub_08000E50 + ldr r2, _08028650 @ =gUnk_080CC7BC + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _08028658 + bl sub_08000E50 + ldr r2, _08028654 @ =gUnk_080CC7D0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r0, #0x18 + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _080286B8 + .align 2, 0 +_08028650: .4byte gUnk_080CC7BC +_08028654: .4byte gUnk_080CC7D0 +_08028658: + adds r0, r4, #0 + bl sub_08049EE4 + adds r5, r0, #0 + adds r6, r4, #0 + adds r6, #0x83 + ldrb r0, [r6] + cmp r0, #0 + bne _08028684 + bl sub_08000E50 + ldr r2, _08028680 @ =gUnk_080CC7C0 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r5, r5, r0 + b _080286A2 + .align 2, 0 +_08028680: .4byte gUnk_080CC7C0 +_08028684: + bl sub_08000E50 + ldr r2, _080286AC @ =gUnk_080CC7C0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r5, r5, r0 + ldrb r0, [r4, #0xe] + adds r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r6] + subs r0, #1 + strb r0, [r6] +_080286A2: + adds r0, r5, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _080286B8 + .align 2, 0 +_080286AC: .4byte gUnk_080CC7C0 +_080286B0: + movs r0, #0xc + strb r0, [r4, #0xe] + strh r1, [r4, #0x24] + ldrb r0, [r4, #0x15] +_080286B8: + lsrs r5, r0, #2 + ldrb r0, [r4, #0x14] + cmp r5, r0 + beq _080286C8 + strb r5, [r4, #0x14] + adds r0, r4, #0 + bl sub_080287E0 +_080286C8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080286CC +sub_080286CC: @ 0x080286CC + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + bne _08028724 + movs r0, #1 + bl sub_08049DF4 + adds r4, r0, #0 + cmp r4, #0 + beq _08028724 + adds r0, r5, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #2 + bne _080286FC + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x30 + bl sub_0806FC80 + cmp r0, #0 + bne _08028720 +_080286FC: + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x40 + bl sub_0806FC80 + cmp r0, #0 + beq _08028724 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + ldrb r5, [r5, #0x14] + cmp r0, r5 + bne _08028724 +_08028720: + movs r0, #1 + b _08028726 +_08028724: + movs r0, #0 +_08028726: + pop {r4, r5, pc} + + thumb_func_start sub_08028728 +sub_08028728: @ 0x08028728 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x83 + ldrb r0, [r1] + lsrs r0, r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080287B4 + adds r4, #0x82 + movs r0, #2 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_08028754 +sub_08028754: @ 0x08028754 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049F84 + movs r2, #0 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x83 + strb r2, [r0] + adds r0, r4, #0 + bl sub_080287B4 + adds r4, #0x82 + movs r0, #3 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08028784 +sub_08028784: @ 0x08028784 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + movs r1, #0 + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x83 + strb r1, [r0] + adds r0, r4, #0 + bl sub_080287B4 + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + strb r0, [r4, #0xe] + adds r4, #0x82 + movs r0, #4 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_080287B4 +sub_080287B4: @ 0x080287B4 + push {lr} + adds r2, r0, #0 + movs r1, #0 + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #0x20 + strb r0, [r2, #0xe] + strb r1, [r2, #0xf] + adds r0, r2, #0 + adds r0, #0x80 + strb r1, [r0] + subs r0, #5 + strb r1, [r0] + movs r0, #0 + strh r1, [r2, #0x24] + adds r1, r2, #0 + adds r1, #0x82 + strb r0, [r1] + adds r0, r2, #0 + bl sub_080287E0 + pop {pc} + + thumb_func_start sub_080287E0 +sub_080287E0: @ 0x080287E0 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0x14] + lsrs r2, r0, #1 + adds r0, r3, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #4 + bhi _0802881E + lsls r0, r0, #2 + ldr r1, _080287FC @ =_08028800 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080287FC: .4byte _08028800 +_08028800: @ jump table + .4byte _0802881E @ case 0 + .4byte _08028814 @ case 1 + .4byte _0802881C @ case 2 + .4byte _08028818 @ case 3 + .4byte _08028814 @ case 4 +_08028814: + adds r2, #4 + b _0802881E +_08028818: + adds r2, #8 + b _0802881E +_0802881C: + adds r2, #0xc +_0802881E: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_08028828 +sub_08028828: @ 0x08028828 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r0, r3, #4 + movs r2, #0x18 + ands r0, r2 + adds r1, r4, #4 + ands r1, r2 + cmp r0, r1 + bne _08028852 + adds r0, r3, #5 + movs r1, #7 + ands r0, r1 + adds r2, r4, #5 + ands r2, r1 + cmp r0, #2 + bhi _08028852 + cmp r2, #2 + bhi _08028852 + movs r0, #1 + b _08028854 +_08028852: + movs r0, #0 +_08028854: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08028858 +sub_08028858: @ 0x08028858 + push {r4, lr} + adds r4, r0, #0 + bl sub_080288C0 + ldr r1, _080288A0 @ =gUnk_080CC944 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #1] + strb r0, [r1, #1] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #6] + strb r0, [r1, #6] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #7] + strb r0, [r1, #7] + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + bne _08028890 + strh r0, [r4, #0x24] +_08028890: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_080288A0: .4byte gUnk_080CC944 + + thumb_func_start sub_080288A4 +sub_080288A4: @ 0x080288A4 + ldr r2, _080288BC @ =gUnk_080CC7D8 + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r0, #0x2a] + ldrh r1, [r1] + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_080288BC: .4byte gUnk_080CC7D8 + + thumb_func_start sub_080288C0 +sub_080288C0: @ 0x080288C0 + push {lr} + mov ip, r0 + ldr r2, [r0, #0x54] + cmp r2, #0 + beq _08028908 + adds r0, r2, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08028908 + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + mov r1, ip + adds r1, #0x3e + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3d + ldrb r0, [r0] + rsbs r0, r0, #0 + subs r1, #1 + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x46 + ldrh r0, [r0] + adds r1, #9 + movs r3, #0 + strh r0, [r1] + adds r2, #0x42 + ldrb r1, [r2] + mov r0, ip + adds r0, #0x42 + strb r1, [r0] + strb r3, [r2] +_08028908: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802890C +sub_0802890C: @ 0x0802890C + push {lr} + ldr r1, _08028918 @ =gUnk_080CC9C8 + bl sub_0800129E + pop {pc} + .align 2, 0 +_08028918: .4byte gUnk_080CC9C8 + + thumb_func_start sub_0802891C +sub_0802891C: @ 0x0802891C + push {lr} + ldr r2, _08028930 @ =gUnk_080CC9E0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08028930: .4byte gUnk_080CC9E0 + + thumb_func_start sub_08028934 +sub_08028934: @ 0x08028934 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #1 + bne _08028988 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r2, #0x7f + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0x42 + bne _08028988 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0x28 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + adds r0, r2, #0 + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #4 + bl sub_080290E0 + adds r0, r4, #0 + movs r1, #3 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08028982 + ldrh r0, [r1, #0x36] + subs r0, #8 + strh r0, [r1, #0x36] +_08028982: + ldr r0, _0802898C @ =0x000001BB + bl sub_08004488 +_08028988: + pop {r4, pc} + .align 2, 0 +_0802898C: .4byte 0x000001BB + + thumb_func_start nullsub_140 +nullsub_140: @ 0x08028990 + bx lr + .align 2, 0 + + thumb_func_start sub_08028994 +sub_08028994: @ 0x08028994 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0 + strb r0, [r4, #0xf] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x78 + movs r5, #0 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + strb r5, [r4, #0x14] + movs r0, #0x10 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08028E9C + ldr r0, [r4, #0x7c] + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080289D4 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080289FC +_080289D4: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xb1 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0802925C + adds r0, r4, #0 + movs r1, #0 + bl sub_080290E0 + b _08028A42 +_080289FC: + strb r5, [r4, #0xe] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08028A44 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x76 + strh r1, [r0] + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x74 + strh r0, [r1] + subs r1, #0x34 + movs r0, #0x41 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08028FFC +_08028A42: + pop {r4, r5, pc} + .align 2, 0 +_08028A44: .4byte gUnk_03000BF0 + + thumb_func_start sub_08028A48 +sub_08028A48: @ 0x08028A48 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r5, r0, #0 + cmp r5, #0 + beq _08028A5A + subs r0, #1 + strb r0, [r4, #0xe] + b _08028A72 +_08028A5A: + adds r0, r4, #0 + movs r1, #0 + bl sub_08028F98 + cmp r0, #0 + beq _08028A72 + adds r0, r4, #0 + bl sub_08029078 + strb r5, [r4, #0xd] + movs r0, #1 + strb r0, [r4, #0xf] +_08028A72: + pop {r4, r5, pc} + + thumb_func_start sub_08028A74 +sub_08028A74: @ 0x08028A74 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xd] + cmp r0, #4 + bls _08028A84 + b _08028BA6 +_08028A84: + lsls r0, r0, #2 + ldr r1, _08028A90 @ =_08028A94 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08028A90: .4byte _08028A94 +_08028A94: @ jump table + .4byte _08028AA8 @ case 0 + .4byte _08028ACA @ case 1 + .4byte _08028B1A @ case 2 + .4byte _08028B54 @ case 3 + .4byte _08028B76 @ case 4 +_08028AA8: + movs r6, #1 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08028BA6 + strb r6, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08028FDC + b _08028B6C +_08028ACA: + movs r6, #1 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08028AF6 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x20 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r0, r4, #0 + bl sub_08028FDC + adds r0, r4, #0 + movs r1, #2 + bl sub_080290E0 + b _08028BA6 +_08028AF6: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r2 + cmp r0, #0 + bne _08028BA6 + adds r0, r4, #0 + bl sub_08028FDC + cmp r0, #0 + beq _08028B14 + adds r0, r4, #0 + movs r1, #1 + bl sub_080290E0 +_08028B14: + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08028BA6 +_08028B1A: + movs r6, #1 + adds r0, r4, #0 + bl sub_080290FC + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08028BA6 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _08028BA6 + str r4, [r1, #0x50] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] + ldrb r1, [r5] + movs r0, #0xfe + ands r0, r1 + strb r0, [r5] + movs r0, #3 + strb r0, [r4, #0xd] + b _08028BA6 +_08028B54: + movs r6, #2 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08028BA6 + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #0x50 + strb r0, [r4, #0xe] +_08028B6C: + adds r0, r4, #0 + movs r1, #1 + bl sub_080290E0 + b _08028BA6 +_08028B76: + movs r6, #2 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08028BA6 + adds r0, r4, #0 + movs r1, #0 + bl sub_08028F98 + adds r5, r0, #0 + cmp r5, #0 + beq _08028BB4 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08028FDC + b _08028BC2 +_08028BA6: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08028F98 + adds r5, r0, #0 + cmp r5, #0 + bne _08028BC2 +_08028BB4: + adds r0, r4, #0 + bl sub_08028FFC + strb r5, [r4, #0xd] + movs r0, #0x50 + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] +_08028BC2: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08028BC4 +sub_08028BC4: @ 0x08028BC4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08028BD4 + cmp r0, #1 + beq _08028C14 + b _08028C76 +_08028BD4: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08028C0E + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08028C76 + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + bl sub_08028FDC + adds r0, r4, #0 + movs r1, #5 + bl sub_080290E0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + b _08028C76 +_08028C0E: + subs r0, #1 + strb r0, [r4, #0xe] + b _08028C76 +_08028C14: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08028C76 + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #5 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_080290E0 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + adds r2, r0, #0 + cmp r2, #0 + beq _08028C66 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, #0x36] + subs r0, #0xc + strh r0, [r2, #0x36] + adds r0, r2, #0 + movs r1, #2 + bl sub_0805E3A0 +_08028C66: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + adds r0, r4, #0 + bl sub_0802925C +_08028C76: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0800445C + pop {r4, pc} + + thumb_func_start sub_08028C84 +sub_08028C84: @ 0x08028C84 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08028CD2 + movs r0, #0x30 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + adds r5, r0, #0 + cmp r5, #0 + beq _08028CB4 + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r1 + cmp r0, #0 + bne _08028CD2 + adds r0, r4, #0 + bl sub_0804AA1C + b _08028CD2 +_08028CB4: + adds r0, r4, #0 + bl sub_08028FDC + adds r1, r4, #0 + adds r1, #0x80 + cmp r0, #0 + bne _08028CC8 + ldrb r0, [r1] + cmp r0, #0 + beq _08028CD2 +_08028CC8: + strb r5, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_080290E0 +_08028CD2: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_08028F0C + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08028CE8 +sub_08028CE8: @ 0x08028CE8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r6, [r5, #0x7c] + ldr r0, _08028D30 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08028DCC + adds r0, r5, #0 + bl sub_0802915C + cmp r0, #0 + beq _08028DCC + bl sub_08056338 + cmp r0, #0 + bne _08028DCC + ldr r0, _08028D34 @ =gUnk_02002A40 + adds r0, #0xc0 + ldrh r1, [r6, #2] + ldrh r0, [r0] + cmp r1, r0 + bhi _08028DC0 + adds r0, r5, #0 + bl sub_080291DC + cmp r0, #0 + beq _08028D3C + ldr r0, _08028D38 @ =0x00002904 + bl sub_08056378 + movs r0, #0 + bl sub_08078A90 + b _08028DCC + .align 2, 0 +_08028D30: .4byte gUnk_02000050 +_08028D34: .4byte gUnk_02002A40 +_08028D38: .4byte 0x00002904 +_08028D3C: + ldrh r0, [r6, #2] + rsbs r0, r0, #0 + bl sub_080526CC + ldrb r0, [r6] + lsrs r7, r0, #2 + cmp r7, #1 + beq _08028D9C + cmp r7, #1 + bgt _08028D56 + cmp r7, #0 + beq _08028D5C + b _08028DCC +_08028D56: + cmp r7, #2 + beq _08028DAA + b _08028DCC +_08028D5C: + ldrb r1, [r6, #9] + cmp r1, #0xff + bne _08028D70 + ldr r4, _08028D98 @ =gUnk_080CC9C0 + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + adds r1, r1, r4 + ldrb r1, [r1] +_08028D70: + ldrb r0, [r6, #8] + movs r2, #0 + bl sub_080A7C00 + movs r0, #6 + strb r0, [r5, #0xc] + movs r0, #4 + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x81 + strb r7, [r0] + adds r0, r5, #0 + movs r1, #3 + bl sub_080290E0 + movs r0, #0x87 + bl sub_0807CCB4 + b _08028DE2 + .align 2, 0 +_08028D98: .4byte gUnk_080CC9C0 +_08028D9C: + ldrb r0, [r6, #8] + ldrb r1, [r6, #9] + movs r2, #0 + bl sub_080A7C00 + movs r0, #4 + b _08028DB6 +_08028DAA: + ldrb r0, [r6, #8] + ldrb r1, [r6, #9] + movs r2, #0 + bl sub_080A7C00 + movs r0, #8 +_08028DB6: + strb r0, [r5, #0xe] + adds r0, r5, #0 + bl sub_0802922C + b _08028DE2 +_08028DC0: + ldr r0, _08028DE4 @ =0x00002903 + bl sub_08056378 + movs r0, #0 + bl sub_08078A90 +_08028DCC: + adds r0, r5, #0 + bl sub_0800445C + movs r0, #4 + strb r0, [r5, #0xc] + movs r0, #0x30 + strb r0, [r5, #0xe] + adds r0, r5, #0 + movs r1, #0 + bl sub_080290E0 +_08028DE2: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08028DE4: .4byte 0x00002903 + + thumb_func_start sub_08028DE8 +sub_08028DE8: @ 0x08028DE8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08028E08 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #8 + bne _08028E0C + adds r4, #0x81 + ldrb r0, [r4] + cmp r0, #0 + bne _08028E3A + movs r0, #1 + bl sub_08078A90 + movs r0, #1 + strb r0, [r4] + b _08028E3A + .align 2, 0 +_08028E08: .4byte gLinkEntity +_08028E0C: + ldr r0, _08028E3C @ =0x00002902 + bl sub_08056378 + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x81 + strb r1, [r0] + movs r0, #1 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08028EDC + movs r0, #0 + bl sub_08078A90 + adds r0, r4, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_08004274 +_08028E3A: + pop {r4, pc} + .align 2, 0 +_08028E3C: .4byte 0x00002902 + + thumb_func_start sub_08028E40 +sub_08028E40: @ 0x08028E40 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08028E80 @ =gUnk_02000050 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _08028E72 + ldr r5, [r4, #0x7c] + movs r0, #4 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #1 + strb r0, [r4, #0xe] + ldrh r0, [r5, #0xa] + bl sub_0807CBD0 + cmp r0, #0 + bne _08028E6C + ldrh r0, [r5, #0xa] + bl sub_0807CCB4 +_08028E6C: + movs r0, #0 + bl sub_08078A90 +_08028E72: + adds r0, r4, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + .align 2, 0 +_08028E80: .4byte gUnk_02000050 + + thumb_func_start sub_08028E84 +sub_08028E84: @ 0x08028E84 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08028E98 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xe] +_08028E98: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08028E9C +sub_08028E9C: @ 0x08028E9C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r6, _08028ED8 @ =gUnk_080CC954 + adds r4, r1, r6 + adds r0, r4, #0 + bl sub_08029198 + cmp r0, #0 + beq _08028ECA + ldrb r1, [r4] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08028ECA + ldrh r1, [r4, #0xa] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r4, r0, r6 +_08028ECA: + str r4, [r5, #0x7c] + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #0 + strb r0, [r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_08028ED8: .4byte gUnk_080CC954 + + thumb_func_start sub_08028EDC +sub_08028EDC: @ 0x08028EDC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x7c] + adds r0, r4, #0 + bl sub_08029198 + cmp r0, #0 + beq _08028F04 + ldrb r1, [r4] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08028F04 + ldrh r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08028F08 @ =gUnk_080CC954 + adds r4, r1, r0 + str r4, [r5, #0x7c] +_08028F04: + pop {r4, r5, pc} + .align 2, 0 +_08028F08: .4byte gUnk_080CC954 + + thumb_func_start sub_08028F0C +sub_08028F0C: @ 0x08028F0C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #2 + bne _08028F2C + movs r1, #0 + movs r0, #8 + strb r0, [r5, #0xc] + strb r1, [r2] + adds r0, r5, #0 + bl sub_0806F118 + b _08028F90 +_08028F2C: + cmp r0, #0 + beq _08028F90 + ldr r6, [r5, #0x7c] + movs r4, #0 + strb r4, [r2] + adds r0, r5, #0 + bl sub_0804AA1C + adds r0, r5, #0 + bl sub_0806EDC4 + lsls r0, r0, #3 + strb r0, [r5, #0x15] + adds r0, r5, #0 + movs r1, #3 + bl sub_080290E0 + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #1 + strb r0, [r1] + movs r0, #0x20 + strb r0, [r5, #0xe] + strb r4, [r5, #0xf] + adds r0, r6, #0 + bl sub_08029198 + cmp r0, #0 + beq _08028F6A + ldrh r4, [r6, #6] + b _08028F84 +_08028F6A: + ldrb r1, [r6] + movs r0, #0xfc + ands r0, r1 + cmp r0, #0xc + beq _08028F78 + movs r0, #5 + b _08028F7A +_08028F78: + movs r0, #7 +_08028F7A: + strb r0, [r5, #0xc] + ldrh r4, [r6, #4] + movs r0, #1 + bl sub_08078A90 +_08028F84: + adds r0, r4, #0 + bl sub_08056378 + ldr r1, _08028F94 @ =gUnk_02000050 + ldrh r0, [r6, #2] + str r0, [r1, #0x10] +_08028F90: + pop {r4, r5, r6, pc} + .align 2, 0 +_08028F94: .4byte gUnk_02000050 + + thumb_func_start sub_08028F98 +sub_08028F98: @ 0x08028F98 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_08049DF4 + adds r4, r0, #0 + cmp r4, #0 + beq _08028FD4 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0x28 + movs r3, #0x28 + bl sub_080041A0 + cmp r0, #0 + bne _08028FD4 + cmp r5, #2 + beq _08028FD8 + movs r3, #0x50 + cmp r5, #0 + beq _08028FC6 + movs r3, #0x58 +_08028FC6: + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r3, #0 + bl sub_080041A0 + cmp r0, #0 + bne _08028FD8 +_08028FD4: + movs r0, #0 + b _08028FDA +_08028FD8: + movs r0, #1 +_08028FDA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08028FDC +sub_08028FDC: @ 0x08028FDC + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049F84 + adds r1, r0, #4 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _08028FF8 + strb r1, [r4, #0x15] + movs r0, #1 + b _08028FFA +_08028FF8: + movs r0, #0 +_08028FFA: + pop {r4, pc} + + thumb_func_start sub_08028FFC +sub_08028FFC: @ 0x08028FFC + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080AE068 + adds r0, r4, #0 + bl sub_0801D230 + adds r1, r4, #0 + adds r1, #0x60 + movs r0, #0xe8 + strh r0, [r1] + ldrb r1, [r4, #0x1a] + subs r0, #0xf8 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + movs r1, #0xf + ands r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #0x1a] + movs r0, #0xa7 + strh r0, [r4, #0x12] + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldr r0, _08029074 @ =0x00004022 + adds r1, r4, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + pop {r4, pc} + .align 2, 0 +_08029074: .4byte 0x00004022 + + thumb_func_start sub_08029078 +sub_08029078: @ 0x08029078 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x72 + bl sub_080ADF80 + cmp r0, #0 + bne _080290AE + adds r0, r4, #0 + bl sub_0805E7BC + b _080290DE +_080290AE: + adds r0, r4, #0 + movs r1, #0x6e + bl sub_0801D040 + movs r0, #0xd0 + strh r0, [r4, #0x12] + adds r0, r4, #0 + bl sub_08028FDC + adds r0, r4, #0 + movs r1, #1 + bl sub_080290E0 + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_080290DE: + pop {r4, pc} + + thumb_func_start sub_080290E0 +sub_080290E0: @ 0x080290E0 + push {lr} + adds r3, r1, #0 + ldrb r1, [r0, #0x15] + lsrs r1, r1, #3 + ldr r2, _080290F8 @ =gUnk_080CCA04 + adds r3, r3, r2 + ldrb r2, [r3] + orrs r1, r2 + bl sub_08004260 + pop {pc} + .align 2, 0 +_080290F8: .4byte gUnk_080CCA04 + + thumb_func_start sub_080290FC +sub_080290FC: @ 0x080290FC + push {r4, r5, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _08029158 + subs r1, r0, #1 + strb r1, [r2, #0xe] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bhi _08029158 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08029158 + ldrb r4, [r2, #0x15] + movs r0, #0x10 + ands r0, r4 + movs r5, #1 + cmp r0, #0 + beq _08029128 + subs r5, #2 +_08029128: + movs r3, #8 + adds r0, r3, #0 + ands r0, r4 + cmp r0, #0 + beq _08029146 + movs r4, #0x2e + ldrsh r0, [r2, r4] + ands r1, r3 + cmp r1, #0 + beq _08029140 + subs r0, r0, r5 + b _08029142 +_08029140: + adds r0, r0, r5 +_08029142: + strh r0, [r2, #0x2e] + b _08029158 +_08029146: + movs r4, #0x32 + ldrsh r0, [r2, r4] + ands r1, r3 + cmp r1, #0 + bne _08029154 + subs r0, r0, r5 + b _08029156 +_08029154: + adds r0, r0, r5 +_08029156: + strh r0, [r2, #0x32] +_08029158: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802915C +sub_0802915C: @ 0x0802915C + push {lr} + ldr r0, [r0, #0x7c] + ldrb r0, [r0, #8] + cmp r0, #0x5c + beq _08029190 + cmp r0, #0x5c + bgt _08029174 + cmp r0, #0x1c + beq _08029186 + cmp r0, #0x44 + beq _0802917E + b _08029194 +_08029174: + cmp r0, #0x6c + beq _08029190 + cmp r0, #0x6f + beq _08029190 + b _08029194 +_0802917E: + movs r0, #0x44 + bl sub_0807CA84 + b _0802918C +_08029186: + movs r0, #0x5a + bl GetProgressFlag +_0802918C: + cmp r0, #0 + bne _08029194 +_08029190: + movs r0, #1 + b _08029196 +_08029194: + movs r0, #0 +_08029196: + pop {pc} + + thumb_func_start sub_08029198 +sub_08029198: @ 0x08029198 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2] + movs r0, #0xfc + ands r0, r1 + cmp r0, #0xc + beq _080291CA + ldrb r0, [r2, #8] + cmp r0, #0x1c + beq _080291BC + cmp r0, #0x1c + bgt _080291B6 + cmp r0, #9 + beq _080291C4 + b _080291D8 +_080291B6: + cmp r0, #0x44 + beq _080291C4 + b _080291D8 +_080291BC: + movs r0, #0x5a + bl GetProgressFlag + b _080291D0 +_080291C4: + bl sub_0807CA84 + b _080291D0 +_080291CA: + ldrh r0, [r2, #0xa] + bl sub_0807CBD0 +_080291D0: + cmp r0, #0 + beq _080291D8 + movs r0, #1 + b _080291DA +_080291D8: + movs r0, #0 +_080291DA: + pop {pc} + + thumb_func_start sub_080291DC +sub_080291DC: @ 0x080291DC + push {lr} + ldr r0, [r0, #0x7c] + ldrb r0, [r0, #8] + cmp r0, #0x6c + beq _080291EC + cmp r0, #0x6f + beq _08029204 + b _08029228 +_080291EC: + ldr r2, _080291FC @ =gUnk_080FD5A0 + ldr r1, _08029200 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xae + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xac + b _08029212 + .align 2, 0 +_080291FC: .4byte gUnk_080FD5A0 +_08029200: .4byte gUnk_02002A40 +_08029204: + ldr r2, _08029220 @ =gUnk_080FD5A4 + ldr r1, _08029224 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xaf + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xad +_08029212: + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhi _08029228 + movs r0, #1 + b _0802922A + .align 2, 0 +_08029220: .4byte gUnk_080FD5A4 +_08029224: .4byte gUnk_02002A40 +_08029228: + movs r0, #0 +_0802922A: + pop {pc} + + thumb_func_start sub_0802922C +sub_0802922C: @ 0x0802922C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #6 + strb r1, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x81 + strb r0, [r1] + ldr r0, [r4, #0x7c] + ldrb r0, [r0, #8] + cmp r0, #0x6c + beq _08029252 + cmp r0, #0x6c + bgt _08029252 + cmp r0, #0x1c + bne _08029252 + movs r0, #0x5a + bl sub_0807CD04 +_08029252: + adds r0, r4, #0 + movs r1, #3 + bl sub_080290E0 + pop {r4, pc} + + thumb_func_start sub_0802925C +sub_0802925C: @ 0x0802925C + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08029270 +sub_08029270: @ 0x08029270 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08029296 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #0xe + bl sub_08004260 + b _0802929C +_08029296: + adds r0, r2, #0 + bl sub_08004274 +_0802929C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080292A0 +sub_080292A0: @ 0x080292A0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _080292F8 + adds r0, r5, #0 + bl sub_080043E8 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _080292CE + ldrb r0, [r5, #0xc] + cmp r0, #4 + bne _080292C4 + adds r0, r5, #0 + bl sub_080296D8 +_080292C4: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08001290 + b _080292FE +_080292CE: + ldr r4, _080292F4 @ =gUnk_080CCC00 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + b _080292FE + .align 2, 0 +_080292F4: .4byte gUnk_080CCC00 +_080292F8: + adds r0, r5, #0 + bl sub_080293DC +_080292FE: + pop {r4, r5, pc} + + thumb_func_start sub_08029300 +sub_08029300: @ 0x08029300 + push {lr} + ldr r2, _08029314 @ =gUnk_080CCC18 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08029314: .4byte gUnk_080CCC18 + + thumb_func_start sub_08029318 +sub_08029318: @ 0x08029318 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x8e + bne _0802932C + adds r0, r4, #0 + bl sub_08029770 + b _080293A6 +_0802932C: + ldrb r0, [r4, #0xc] + cmp r0, #4 + bne _08029338 + adds r0, r4, #0 + bl sub_080296D8 +_08029338: + ldr r0, [r4, #0x4c] + ldrb r0, [r0, #8] + cmp r0, #1 + bne _08029394 + ldrb r0, [r4, #0xc] + cmp r0, #2 + bne _08029356 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #4 + bl sub_08004260 +_08029356: + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0x41 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #0xfc + ands r0, r1 + strb r0, [r2] + ldr r0, _08029390 @ =gLinkEntity + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1d + adds r1, r4, #0 + adds r1, #0x80 + strb r0, [r1] + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 + b _080293A6 + .align 2, 0 +_08029390: .4byte gLinkEntity +_08029394: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _080293A6 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_080293A6: + ldr r1, _080293B0 @ =gUnk_080CCC00 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_080293B0: .4byte gUnk_080CCC00 + + thumb_func_start sub_080293B4 +sub_080293B4: @ 0x080293B4 + push {lr} + ldr r3, _080293D4 @ =gUnk_080CCC34 + adds r1, r0, #0 + adds r1, #0x84 + ldrb r2, [r1] + lsls r1, r2, #1 + adds r1, r1, r2 + ldrb r2, [r0, #0xa] + adds r1, r1, r2 + adds r1, r1, r3 + ldrb r2, [r1] + movs r1, #0xff + bl sub_0804A7E0 + pop {pc} + .align 2, 0 +_080293D4: .4byte gUnk_080CCC34 + + thumb_func_start nullsub_141 +nullsub_141: @ 0x080293D8 + bx lr + .align 2, 0 + + thumb_func_start sub_080293DC +sub_080293DC: @ 0x080293DC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + ldr r1, _08029408 @ =gUnk_080CCC3C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08029408: .4byte gUnk_080CCC3C + + thumb_func_start sub_0802940C +sub_0802940C: @ 0x0802940C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + movs r0, #0x17 + bl sub_0804AA60 + adds r5, r0, #0 + cmp r5, #0 + beq _0802944A + adds r0, r4, #0 + bl sub_0804A720 + str r4, [r5, #0x50] + movs r1, #0 + movs r0, #1 + strb r0, [r5, #0xb] + str r5, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x81 + strb r1, [r0] + adds r0, #3 + strb r1, [r0] + ldrb r0, [r4, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + adds r1, r4, #0 + adds r1, #0x82 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080297F0 +_0802944A: + pop {r4, r5, pc} + + thumb_func_start sub_0802944C +sub_0802944C: @ 0x0802944C + push {r4, lr} + adds r4, r0, #0 + bl sub_080296C8 + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _08029470 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08029470 + adds r0, r4, #0 + bl sub_08029770 +_08029470: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08029474 +sub_08029474: @ 0x08029474 + push {r4, lr} + adds r4, r0, #0 + bl sub_080296C8 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r2, [r3] + movs r0, #0x80 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _080294C0 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + ldr r1, _080294BC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + ldr r0, [r4, #0x54] + ldrb r1, [r4, #0x14] + adds r1, #4 + bl sub_08004260 + b _080294D2 + .align 2, 0 +_080294BC: .4byte gLinkEntity +_080294C0: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080294D2 + strb r1, [r3] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_080294D2: + pop {r4, pc} + + thumb_func_start sub_080294D4 +sub_080294D4: @ 0x080294D4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802951C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029508 + movs r0, #8 + strb r0, [r4, #0xe] + ldr r1, _08029518 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + adds r0, r4, #0 + bl sub_0802969C +_08029508: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_080296C8 + b _08029538 + .align 2, 0 +_08029518: .4byte gLinkEntity +_0802951C: + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #7 + bl sub_08004260 +_08029538: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802953C +sub_0802953C: @ 0x0802953C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080296C8 + adds r0, r5, #0 + bl sub_080296C8 + bl sub_0807953C + cmp r0, #0 + beq _08029558 + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] +_08029558: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _08029562 + subs r0, #1 + strb r0, [r5, #0xe] +_08029562: + ldrb r0, [r5, #0xf] + cmp r0, #0x2d + bhi _08029572 + ldr r0, _08029580 @ =gUnk_02002A40 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r0, #0 + bne _08029584 +_08029572: + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _08029584 + adds r0, r5, #0 + bl sub_080296D8 + b _080295FE + .align 2, 0 +_08029580: .4byte gUnk_02002A40 +_08029584: + bl sub_08077B2C + ldr r2, _08029600 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r4, _08029604 @ =gLinkEntity + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldrh r0, [r5, #0x12] + ldrb r1, [r5, #0x1e] + bl sub_080700C8 + ldrb r1, [r0] + adds r2, r4, #0 + adds r2, #0x62 + strb r1, [r2] + ldrb r0, [r0, #1] + subs r0, #1 + adds r1, r4, #0 + adds r1, #0x63 + strb r0, [r1] + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + adds r1, r5, #0 + adds r1, #0x83 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080295FE + movs r0, #0x41 + strb r0, [r1] + ldr r0, _08029608 @ =gUnk_02002A40 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r0, #0 + beq _080295FE + ldr r1, _0802960C @ =gUnk_080CCC44 + ldrb r0, [r5, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + bl sub_080526CC + adds r1, r5, #0 + adds r1, #0x84 + movs r0, #1 + strb r0, [r1] +_080295FE: + pop {r4, r5, pc} + .align 2, 0 +_08029600: .4byte gUnk_03003F80 +_08029604: .4byte gLinkEntity +_08029608: .4byte gUnk_02002A40 +_0802960C: .4byte gUnk_080CCC44 + + thumb_func_start sub_08029610 +sub_08029610: @ 0x08029610 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xf] + subs r0, #1 + strb r0, [r1, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029628 + movs r0, #3 + strb r0, [r1, #0xc] + movs r0, #1 + strb r0, [r1, #0xe] +_08029628: + adds r0, r1, #0 + bl sub_080296C8 + pop {pc} + + thumb_func_start sub_08029630 +sub_08029630: @ 0x08029630 + push {r4, lr} + adds r4, r0, #0 + bl sub_080296C8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802965E + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r2, #0x18] + adds r0, r4, #0 + bl sub_080297F0 +_0802965E: + pop {r4, pc} + + thumb_func_start sub_08029660 +sub_08029660: @ 0x08029660 + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0xd1 + strh r1, [r0, #0x12] + ldr r2, _08029684 @ =gUnk_080CCC47 + ldrb r1, [r0, #0xa] + adds r1, r1, r2 + ldrb r2, [r1] + movs r1, #0xf + ands r2, r1 + ldrb r3, [r0, #0x1a] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #0x1a] + bx lr + .align 2, 0 +_08029684: .4byte gUnk_080CCC47 + + thumb_func_start sub_08029688 +sub_08029688: @ 0x08029688 + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0802969A + adds r0, r1, #0 + bl sub_0805E7BC +_0802969A: + pop {pc} + + thumb_func_start sub_0802969C +sub_0802969C: @ 0x0802969C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _080296C4 + lsrs r4, r1, #4 + ldrb r0, [r5, #0x14] + cmp r4, r0 + beq _080296C4 + strb r4, [r5, #0x14] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08004260 + ldr r0, [r5, #0x54] + adds r1, r4, #4 + bl sub_08004260 +_080296C4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080296C8 +sub_080296C8: @ 0x080296C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r0, [r4, #0x54] + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080296D8 +sub_080296D8: @ 0x080296D8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08029764 @ =gUnk_03003F80 + movs r0, #0x41 + strb r0, [r2, #2] + ldr r0, [r2, #0x30] + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2, #0x30] + ldr r0, _08029768 @ =gLinkEntity + mov ip, r0 + ldrb r0, [r0, #0x10] + movs r1, #0x80 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x10] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r1, #0x20] + adds r1, #0x3d + movs r0, #0xa6 + strb r0, [r1] + movs r3, #0 + ldr r0, _0802976C @ =0x0000FFFE + mov r1, ip + strh r0, [r1, #0x36] + ldrb r0, [r1, #0x14] + lsls r0, r0, #2 + strb r0, [r1, #0x15] + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + mov r5, ip + adds r5, #0x29 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #3 + ldrb r2, [r5] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5] + mov r0, ip + adds r0, #0x63 + strb r3, [r0] + movs r0, #0xa0 + lsls r0, r0, #1 + mov r1, ip + strh r0, [r1, #0x24] + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _08029762 + movs r0, #0xf4 + strb r0, [r1] +_08029762: + pop {r4, r5, pc} + .align 2, 0 +_08029764: .4byte gUnk_03003F80 +_08029768: .4byte gLinkEntity +_0802976C: .4byte 0x0000FFFE + + thumb_func_start sub_08029770 +sub_08029770: @ 0x08029770 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x73 + bl sub_080ADF80 + cmp r0, #0 + beq _080297E8 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xd1 + strh r0, [r4, #0x12] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x82 + ldrb r1, [r0] + movs r0, #0xf + ands r1, r0 + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x8d + strb r0, [r1] + ldr r0, _080297EC @ =gUnk_080FD260 + str r0, [r4, #0x48] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + ldr r0, [r4, #0x54] + movs r1, #6 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080A29BC +_080297E8: + pop {r4, pc} + .align 2, 0 +_080297EC: .4byte gUnk_080FD260 + + thumb_func_start sub_080297F0 +sub_080297F0: @ 0x080297F0 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x8e + strb r0, [r1] + adds r0, r4, #0 + bl sub_080AE068 + ldr r0, _08029850 @ =0x00000143 + strh r0, [r4, #0x12] + ldr r1, _08029854 @ =gUnk_080CCC47 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0xf + ands r1, r0 + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + adds r1, r4, #0 + adds r1, #0x60 + movs r0, #9 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0x54 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_08029850: .4byte 0x00000143 +_08029854: .4byte gUnk_080CCC47 + + thumb_func_start sub_08029858 +sub_08029858: @ 0x08029858 + push {lr} + ldr r2, _0802986C @ =gUnk_080CCD44 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802986C: .4byte gUnk_080CCD44 + + thumb_func_start sub_08029870 +sub_08029870: @ 0x08029870 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08029888 @ =gUnk_080CCD60 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08029888: .4byte gUnk_080CCD60 + + thumb_func_start sub_0802988C +sub_0802988C: @ 0x0802988C + push {lr} + ldr r2, _080298A0 @ =gUnk_080CCD78 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080298A0: .4byte gUnk_080CCD78 + + thumb_func_start sub_080298A4 +sub_080298A4: @ 0x080298A4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _08029970 + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0x1e + bhi _08029948 + lsls r0, r1, #2 + ldr r1, _080298C8 @ =_080298CC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080298C8: .4byte _080298CC +_080298CC: @ jump table + .4byte _08029970 @ case 0 + .4byte _08029970 @ case 1 + .4byte _08029970 @ case 2 + .4byte _08029970 @ case 3 + .4byte _08029948 @ case 4 + .4byte _08029948 @ case 5 + .4byte _08029948 @ case 6 + .4byte _08029948 @ case 7 + .4byte _08029948 @ case 8 + .4byte _08029948 @ case 9 + .4byte _08029948 @ case 10 + .4byte _08029948 @ case 11 + .4byte _08029948 @ case 12 + .4byte _08029948 @ case 13 + .4byte _08029948 @ case 14 + .4byte _08029970 @ case 15 + .4byte _08029948 @ case 16 + .4byte _08029948 @ case 17 + .4byte _08029948 @ case 18 + .4byte _08029970 @ case 19 + .4byte _08029948 @ case 20 + .4byte _08029948 @ case 21 + .4byte _08029948 @ case 22 + .4byte _08029948 @ case 23 + .4byte _08029948 @ case 24 + .4byte _08029948 @ case 25 + .4byte _08029948 @ case 26 + .4byte _08029970 @ case 27 + .4byte _08029948 @ case 28 + .4byte _08029948 @ case 29 + .4byte _08029970 @ case 30 +_08029948: + movs r1, #0 + movs r4, #2 + strb r4, [r5, #0xc] + strb r1, [r5, #0xe] + adds r2, r5, #0 + adds r2, #0x3f + movs r0, #0x6b + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x77 + strb r1, [r0] + adds r0, r5, #0 + movs r1, #0x7f + bl sub_0801D2B4 + movs r0, #0xfe + bl sub_08004488 + ldr r0, [r5, #0x54] + strb r4, [r0, #0xc] +_08029970: + ldr r1, _0802997C @ =gUnk_080CCD60 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_0802997C: .4byte gUnk_080CCD60 + + thumb_func_start sub_08029980 +sub_08029980: @ 0x08029980 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xf] + cmp r0, #0 + beq _08029990 + subs r0, #1 + strb r0, [r1, #0xf] + b _08029996 +_08029990: + adds r0, r1, #0 + bl sub_0804A7D4 +_08029996: + pop {pc} + + thumb_func_start nullsub_14 +nullsub_14: @ 0x08029998 + bx lr + .align 2, 0 + + thumb_func_start sub_0802999C +sub_0802999C: @ 0x0802999C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _08029A90 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x43 + bhi _08029A8E + movs r0, #0x18 + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + str r7, [r4, #0x50] + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #5 + bl sub_0806FA48 + str r4, [r7, #0x54] + movs r0, #0x18 + movs r1, #2 + bl sub_0804AA60 + adds r5, r0, #0 + str r7, [r5, #0x50] + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #4 + bl sub_0806FA48 + str r5, [r4, #0x54] + movs r0, #0x18 + movs r1, #3 + bl sub_0804AA60 + adds r4, r0, #0 + str r7, [r4, #0x50] + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #3 + bl sub_0806FA48 + str r4, [r5, #0x54] + movs r0, #0x18 + movs r1, #4 + bl sub_0804AA60 + adds r5, r0, #0 + str r7, [r5, #0x50] + adds r0, r7, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #2 + bl sub_0806FA48 + str r5, [r4, #0x54] + movs r0, #0x18 + movs r1, #5 + bl sub_0804AA60 + adds r6, r0, #0 + str r7, [r6, #0x50] + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806FA48 + str r6, [r5, #0x54] + movs r0, #0x18 + movs r1, #6 + bl sub_0804AA60 + adds r4, r0, #0 + str r7, [r4, #0x54] + str r7, [r4, #0x50] + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #0 + bl sub_0806FA48 + str r4, [r6, #0x54] + movs r4, #1 + strb r4, [r7, #0xc] + ldrb r1, [r7, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r7, #0x10] + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r7, #0x15] + movs r2, #0 + movs r0, #0xa0 + strh r0, [r7, #0x24] + movs r0, #0xff + strb r0, [r7, #0x14] + ldr r0, [r7, #0x30] + adds r0, #6 + str r0, [r7, #0x30] + str r7, [r7, #0x50] + adds r1, r7, #0 + adds r1, #0x74 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + adds r0, r7, #0 + adds r0, #0x75 + strb r2, [r0] + adds r0, #2 + strb r4, [r0] + adds r0, r7, #0 + bl sub_08029E0C + adds r0, r7, #0 + bl sub_08029EEC +_08029A8E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08029A90: .4byte gUnk_03003DBC + + thumb_func_start sub_08029A94 +sub_08029A94: @ 0x08029A94 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0802A098 + pop {r4, pc} + + thumb_func_start sub_08029AA4 +sub_08029AA4: @ 0x08029AA4 + push {lr} + adds r1, r0, #0 + adds r0, #0x77 + ldrb r0, [r0] + cmp r0, #0 + beq _08029ADA + movs r0, #3 + strb r0, [r1, #0xc] + movs r0, #0x84 + lsls r0, r0, #1 + strh r0, [r1, #0x24] + adds r2, r1, #0 + adds r2, #0x3f + movs r0, #0x6a + strb r0, [r2] + adds r2, #0x3b + adds r0, #0xfe + strh r0, [r2] + subs r2, #5 + movs r0, #4 + strb r0, [r2] + adds r0, r1, #0 + bl sub_08029EEC + ldr r0, _08029ADC @ =0x0000019D + bl sub_08004488 +_08029ADA: + pop {pc} + .align 2, 0 +_08029ADC: .4byte 0x0000019D + + thumb_func_start sub_08029AE0 +sub_08029AE0: @ 0x08029AE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0802A16C + adds r0, r4, #0 + bl sub_0802A098 + adds r1, r4, #0 + adds r1, #0x7a + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08029B28 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xa0 + strh r0, [r4, #0x24] + subs r1, #5 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08029EEC + adds r0, r4, #0 + movs r1, #0x77 + bl sub_0801D2B4 + movs r0, #0xc1 + lsls r0, r0, #1 + bl sub_08004488 +_08029B28: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08029B2C +sub_08029B2C: @ 0x08029B2C + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A14C + cmp r0, #0 + beq _08029B7A + adds r2, r4, #0 + adds r2, #0x86 + ldrb r0, [r2] + cmp r0, #0 + beq _08029B60 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029B8A + adds r0, r4, #0 + movs r1, #0x48 + movs r2, #0 + bl CreateFX + adds r0, r4, #0 + bl sub_0805E7BC + b _08029B8A +_08029B60: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0xa] + lsls r1, r0, #4 + subs r1, r1, r0 + movs r0, #0x5a + subs r0, r0, r1 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r2] + b _08029B8A +_08029B7A: + ldr r0, _08029B8C @ =gUnk_080CCD88 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08029B8A: + pop {r4, pc} + .align 2, 0 +_08029B8C: .4byte gUnk_080CCD88 + + thumb_func_start sub_08029B90 +sub_08029B90: @ 0x08029B90 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0802A058 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bhi _08029BBA + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _08029BC2 +_08029BBA: + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_08029BC2: + pop {r4, pc} + + thumb_func_start sub_08029BC4 +sub_08029BC4: @ 0x08029BC4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0802A18C + movs r0, #0x2e + ldrsh r5, [r4, r0] + movs r0, #0x32 + ldrsh r6, [r4, r0] + adds r0, r4, #0 + bl sub_08029FE4 + cmp r0, #0 + beq _08029BF2 + ldrb r0, [r4, #0xa] + movs r2, #4 + cmp r0, #1 + bhi _08029BE8 + movs r2, #0 +_08029BE8: + ldrb r1, [r4, #0x14] + adds r1, r1, r2 + adds r0, r4, #0 + bl sub_08004260 +_08029BF2: + movs r0, #0x2e + ldrsh r1, [r4, r0] + subs r1, r1, r5 + movs r0, #0x32 + ldrsh r2, [r4, r0] + subs r2, r2, r6 + adds r0, r4, #0 + bl sub_08029FB4 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08029C08 +sub_08029C08: @ 0x08029C08 + movs r1, #3 + strb r1, [r0, #0xc] + ldr r2, _08029C28 @ =gUnk_080CCDA0 + ldrb r1, [r0, #0xa] + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r0, #0xe] + adds r2, r0, #0 + adds r2, #0x3f + movs r1, #0x6b + strb r1, [r2] + ldr r1, [r0, #0x54] + movs r0, #2 + strb r0, [r1, #0xc] + bx lr + .align 2, 0 +_08029C28: .4byte gUnk_080CCDA0 + + thumb_func_start sub_08029C2C +sub_08029C2C: @ 0x08029C2C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029C4E + movs r0, #4 + strb r0, [r1, #0xc] + adds r0, r1, #0 + movs r1, #0x7f + bl sub_0801D2B4 + movs r0, #0x6c + bl sub_08004488 +_08029C4E: + pop {pc} + + thumb_func_start sub_08029C50 +sub_08029C50: @ 0x08029C50 + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x50] + adds r0, #0x77 + ldrb r0, [r0] + cmp r0, #0 + beq _08029C68 + movs r0, #5 + strb r0, [r1, #0xc] + adds r1, #0x3f + movs r0, #0x6a + strb r0, [r1] +_08029C68: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08029C6C +sub_08029C6C: @ 0x08029C6C + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A18C + adds r0, r4, #0 + bl sub_08029BC4 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #3 + beq _08029C90 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x77 + bl sub_0801D2B4 + b _08029C96 +_08029C90: + adds r0, r4, #0 + bl sub_0802A16C +_08029C96: + pop {r4, pc} + + thumb_func_start sub_08029C98 +sub_08029C98: @ 0x08029C98 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A14C + cmp r0, #0 + beq _08029CB6 + adds r0, r4, #0 + movs r1, #0x48 + movs r2, #0 + bl CreateFX + adds r0, r4, #0 + bl sub_0805E7BC + b _08029CC6 +_08029CB6: + ldr r0, _08029CC8 @ =gUnk_080CCDA8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08029CC6: + pop {r4, pc} + .align 2, 0 +_08029CC8: .4byte gUnk_080CCDA8 + + thumb_func_start sub_08029CCC +sub_08029CCC: @ 0x08029CCC + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0802A058 + adds r0, r4, #0 + movs r1, #8 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08029CF0 +sub_08029CF0: @ 0x08029CF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08029FE4 + cmp r0, #0 + beq _08029D06 + ldrb r1, [r4, #0x14] + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 +_08029D06: + pop {r4, pc} + + thumb_func_start sub_08029D08 +sub_08029D08: @ 0x08029D08 + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #0x47 + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_08029D14 +sub_08029D14: @ 0x08029D14 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08029D42 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029D70 + ldrb r1, [r4, #0x14] + adds r1, #0xc + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #0x7f + bl sub_0801D2B4 + movs r0, #0x6c + bl sub_08004488 + b _08029D70 +_08029D42: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08029D70 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x6c + strb r0, [r1] + ldr r0, _08029D74 @ =gUnk_080FD298 + str r0, [r4, #0x48] + movs r0, #0x6b + bl sub_08004488 +_08029D70: + pop {r4, pc} + .align 2, 0 +_08029D74: .4byte gUnk_080FD298 + + thumb_func_start sub_08029D78 +sub_08029D78: @ 0x08029D78 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A0F8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08029DA6 + movs r0, #5 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x6a + strb r0, [r1] + ldr r0, _08029DA8 @ =gUnk_080FD2A0 + str r0, [r4, #0x48] + ldrb r1, [r4, #0x14] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_08004260 +_08029DA6: + pop {r4, pc} + .align 2, 0 +_08029DA8: .4byte gUnk_080FD2A0 + + thumb_func_start sub_08029DAC +sub_08029DAC: @ 0x08029DAC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08029DD8 + movs r0, #6 + strb r0, [r4, #0xc] + ldr r0, [r4, #0x50] + adds r0, #0x77 + movs r1, #1 + strb r1, [r0] + ldrb r1, [r4, #0x14] + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 +_08029DD8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08029DDC +sub_08029DDC: @ 0x08029DDC + movs r1, #7 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_08029DE4 +sub_08029DE4: @ 0x08029DE4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08029CF0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #3 + beq _08029E02 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x77 + bl sub_0801D2B4 + b _08029E08 +_08029E02: + adds r0, r4, #0 + bl sub_0802A16C +_08029E08: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08029E0C +sub_08029E0C: @ 0x08029E0C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r5, r0, #0 + ldrb r0, [r5, #0x15] + lsrs r0, r0, #3 + lsls r1, r0, #1 + adds r1, r1, r0 + ldr r0, _08029EE0 @ =gUnk_080CCDC8 + adds r1, r1, r0 + str r1, [sp] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + subs r1, #1 + mov sl, r1 + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #0xf + ands r0, r1 + movs r1, #3 + bl __modsi3 + mov sb, r0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r3, _08029EE4 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + mov r8, r0 + movs r2, #0x3f + ands r0, r2 + mov r8, r0 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + mov r1, r8 + orrs r1, r0 + mov r8, r1 + movs r7, #0 +_08029E72: + ldr r0, [sp] + add r0, sb + ldrb r4, [r0] + lsrs r0, r4, #3 + lsls r0, r0, #1 + ldr r1, _08029EE8 @ =gUnk_080B4488 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + add r0, r8 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002E0 + adds r6, r5, #0 + adds r6, #0x74 + cmp r0, #0 + bne _08029EA6 + str r4, [sp, #4] + ldrb r1, [r5, #0x15] + ldrb r0, [r6] + subs r0, r1, r0 + subs r1, r4, r1 + cmp r0, r1 + bne _08029EBA +_08029EA6: + mov r0, sb + add r0, sl + adds r0, #3 + movs r1, #3 + bl __modsi3 + mov sb, r0 + adds r7, #1 + cmp r7, #2 + bls _08029E72 +_08029EBA: + cmp r7, #3 + bne _08029EC0 + ldr r4, [sp, #4] +_08029EC0: + ldrb r1, [r5, #0x15] + ldrb r0, [r6] + cmp r0, r1 + beq _08029ECA + strb r1, [r6] +_08029ECA: + strb r4, [r5, #0x15] + adds r0, r5, #0 + bl sub_08029F0C + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08029EE0: .4byte gUnk_080CCDC8 +_08029EE4: .4byte gUnk_03000BF0 +_08029EE8: .4byte gUnk_080B4488 + + thumb_func_start sub_08029EEC +sub_08029EEC: @ 0x08029EEC + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0x15] + adds r2, r3, #0 + adds r2, #0x75 + lsrs r0, r0, #3 + ldrb r2, [r2] + adds r1, r0, r2 + ldrb r0, [r3, #0x14] + cmp r1, r0 + beq _08029F0A + strb r1, [r3, #0x14] + adds r0, r3, #0 + bl sub_080042AC +_08029F0A: + pop {pc} + + thumb_func_start sub_08029F0C +sub_08029F0C: @ 0x08029F0C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0x15] + lsrs r0, r0, #3 + cmp r0, #1 + beq _08029F30 + cmp r0, #1 + bgt _08029F22 + cmp r0, #0 + beq _08029F2C + b _08029F44 +_08029F22: + cmp r0, #2 + beq _08029F36 + cmp r0, #3 + beq _08029F3C + b _08029F44 +_08029F2C: + ldrh r0, [r1, #0x32] + b _08029F3E +_08029F30: + ldrh r0, [r1, #0x2e] + adds r0, #0x10 + b _08029F40 +_08029F36: + ldrh r0, [r1, #0x32] + adds r0, #0x10 + b _08029F40 +_08029F3C: + ldrh r0, [r1, #0x2e] +_08029F3E: + subs r0, #0x10 +_08029F40: + adds r1, #0x78 + strh r0, [r1] +_08029F44: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08029F48 +sub_08029F48: @ 0x08029F48 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0x15] + lsrs r0, r0, #3 + cmp r0, #1 + beq _08029F78 + cmp r0, #1 + bgt _08029F5E + cmp r0, #0 + beq _08029F68 + b _08029FB0 +_08029F5E: + cmp r0, #2 + beq _08029F88 + cmp r0, #3 + beq _08029F9C + b _08029FB0 +_08029F68: + movs r0, #0x32 + ldrsh r1, [r2, r0] + adds r0, r2, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r1, r0 + bgt _08029FB0 + b _08029F96 +_08029F78: + movs r0, #0x2e + ldrsh r1, [r2, r0] + adds r0, r2, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r1, r0 + blt _08029FB0 + b _08029FAA +_08029F88: + movs r0, #0x32 + ldrsh r1, [r2, r0] + adds r0, r2, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r1, r0 + blt _08029FB0 +_08029F96: + strh r0, [r2, #0x32] + movs r0, #1 + b _08029FB2 +_08029F9C: + movs r0, #0x2e + ldrsh r1, [r2, r0] + adds r0, r2, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r1, r0 + bgt _08029FB0 +_08029FAA: + strh r0, [r2, #0x2e] + movs r0, #1 + b _08029FB2 +_08029FB0: + movs r0, #0 +_08029FB2: + pop {pc} + + thumb_func_start sub_08029FB4 +sub_08029FB4: @ 0x08029FB4 + push {r4, r5, r6, lr} + adds r5, r1, #0 + adds r4, r2, #0 + ldr r6, [r0, #0x54] + adds r6, #0x78 + ldr r0, [r0, #0x50] + adds r0, #0x7e + ldrb r0, [r0] + movs r1, #0xe + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r6, r6, r0 + adds r5, #8 + movs r0, #0xf + ands r5, r0 + adds r4, #8 + ands r4, r0 + lsls r4, r4, #4 + orrs r5, r4 + strb r5, [r6] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08029FE4 +sub_08029FE4: @ 0x08029FE4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x78 + ldr r0, [r5, #0x50] + adds r0, #0x7e + ldrb r0, [r0] + adds r0, #1 + movs r1, #0xe + bl __modsi3 + adds r4, r4, r0 + ldrb r1, [r4] + movs r0, #0xf + ands r0, r1 + subs r0, #8 + lsrs r1, r1, #4 + subs r1, #8 + lsls r1, r1, #0x18 + lsls r0, r0, #0x18 + asrs r4, r0, #0x18 + ldrh r0, [r5, #0x2e] + adds r0, r0, r4 + strh r0, [r5, #0x2e] + lsrs r6, r1, #0x18 + asrs r1, r1, #0x18 + ldrh r0, [r5, #0x32] + adds r1, r1, r0 + strh r1, [r5, #0x32] + adds r0, r5, #0 + bl sub_08004274 + movs r1, #0xff + cmp r4, #0 + beq _0802A032 + movs r1, #3 + cmp r4, #0 + ble _0802A032 + movs r1, #1 +_0802A032: + lsls r0, r6, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0802A042 + movs r1, #0 + cmp r0, #0 + ble _0802A042 + movs r1, #2 +_0802A042: + cmp r1, #0xff + beq _0802A052 + ldrb r0, [r5, #0x14] + cmp r1, r0 + beq _0802A052 + strb r1, [r5, #0x14] + movs r0, #1 + b _0802A054 +_0802A052: + movs r0, #0 +_0802A054: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802A058 +sub_0802A058: @ 0x0802A058 + adds r2, r0, #0 + adds r0, #0x78 + movs r1, #0x88 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_0802A098 +sub_0802A098: @ 0x0802A098 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7e + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldrb r0, [r5] + movs r1, #0xe + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0802A0B8 + strb r0, [r5] +_0802A0B8: + movs r0, #0x2e + ldrsh r5, [r4, r0] + movs r0, #0x32 + ldrsh r6, [r4, r0] + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08029F48 + cmp r0, #0 + beq _0802A0E4 + adds r0, r4, #0 + bl sub_08029E0C + adds r0, r4, #0 + bl sub_08029EEC + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 +_0802A0E4: + movs r0, #0x2e + ldrsh r1, [r4, r0] + subs r1, r1, r5 + movs r0, #0x32 + ldrsh r2, [r4, r0] + subs r2, r2, r6 + adds r0, r4, #0 + bl sub_08029FB4 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0802A0F8 +sub_0802A0F8: @ 0x0802A0F8 + push {r4, lr} + adds r3, r0, #0 + adds r0, #0x45 + ldrb r4, [r0] + cmp r4, #0 + beq _0802A134 + subs r0, #4 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802A14A + adds r1, r3, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0802A14A + adds r2, r3, #0 + movs r3, #0 + adds r4, r1, #0 +_0802A122: + ldr r2, [r2, #0x54] + ldrb r0, [r4] + adds r1, r2, #0 + adds r1, #0x3d + strb r0, [r1] + adds r3, #1 + cmp r3, #5 + bls _0802A122 + b _0802A14A +_0802A134: + ldr r2, [r3, #0x50] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + ldr r0, [r3, #0x50] + adds r0, #0x45 + strb r4, [r0] + ldr r1, [r3, #0x50] + movs r0, #0x69 + strb r0, [r1, #0xf] +_0802A14A: + pop {r4, pc} + + thumb_func_start sub_0802A14C +sub_0802A14C: @ 0x0802A14C + push {lr} + adds r1, r0, #0 + movs r2, #0 + ldr r0, [r1, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _0802A166 + adds r0, r1, #0 + adds r0, #0x86 + ldrb r0, [r0] + cmp r0, #0 + beq _0802A168 +_0802A166: + movs r2, #1 +_0802A168: + adds r0, r2, #0 + pop {pc} + + thumb_func_start sub_0802A16C +sub_0802A16C: @ 0x0802A16C + push {lr} + ldr r3, _0802A188 @ =gUnk_080CCDD4 + ldr r1, [r0, #0x50] + adds r1, #0x7a + ldrh r1, [r1] + lsrs r1, r1, #2 + movs r2, #3 + ands r1, r2 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r1, [r1] + bl sub_0801D2B4 + pop {pc} + .align 2, 0 +_0802A188: .4byte gUnk_080CCDD4 + + thumb_func_start sub_0802A18C +sub_0802A18C: @ 0x0802A18C + push {lr} + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802A234 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x1e + bhi _0802A22C + lsls r0, r0, #2 + ldr r1, _0802A1AC @ =_0802A1B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802A1AC: .4byte _0802A1B0 +_0802A1B0: @ jump table + .4byte _0802A234 @ case 0 + .4byte _0802A234 @ case 1 + .4byte _0802A234 @ case 2 + .4byte _0802A234 @ case 3 + .4byte _0802A22C @ case 4 + .4byte _0802A22C @ case 5 + .4byte _0802A22C @ case 6 + .4byte _0802A22C @ case 7 + .4byte _0802A22C @ case 8 + .4byte _0802A22C @ case 9 + .4byte _0802A22C @ case 10 + .4byte _0802A22C @ case 11 + .4byte _0802A22C @ case 12 + .4byte _0802A22C @ case 13 + .4byte _0802A22C @ case 14 + .4byte _0802A234 @ case 15 + .4byte _0802A22C @ case 16 + .4byte _0802A22C @ case 17 + .4byte _0802A22C @ case 18 + .4byte _0802A234 @ case 19 + .4byte _0802A22C @ case 20 + .4byte _0802A22C @ case 21 + .4byte _0802A22C @ case 22 + .4byte _0802A22C @ case 23 + .4byte _0802A22C @ case 24 + .4byte _0802A22C @ case 25 + .4byte _0802A22C @ case 26 + .4byte _0802A234 @ case 27 + .4byte _0802A22C @ case 28 + .4byte _0802A22C @ case 29 + .4byte _0802A234 @ case 30 +_0802A22C: + movs r0, #0x97 + lsls r0, r0, #1 + bl sub_08004488 +_0802A234: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802A238 +sub_0802A238: @ 0x0802A238 + push {lr} + ldr r2, _0802A24C @ =gUnk_080CD030 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802A24C: .4byte gUnk_080CD030 + + thumb_func_start sub_0802A250 +sub_0802A250: @ 0x0802A250 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r5, #0xc] + strb r1, [r5, #0xe] + ldr r0, _0802A2A8 @ =0xFFFD0000 + str r0, [r5, #0x20] + bl sub_08000E50 + ldr r1, _0802A2AC @ =gUnk_080CD03C + movs r4, #3 + ands r0, r4 + adds r0, r0, r1 + ldrb r0, [r0] + strh r0, [r5, #0x24] + bl sub_08000E50 + ldr r1, _0802A2B0 @ =gUnk_080CD040 + ands r0, r4 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, #0x18 + strb r0, [r5, #0x15] + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_08016A04 + movs r0, #0x66 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _0802A2A6 + str r5, [r0, #0x50] +_0802A2A6: + pop {r4, r5, pc} + .align 2, 0 +_0802A2A8: .4byte 0xFFFD0000 +_0802A2AC: .4byte gUnk_080CD03C +_0802A2B0: .4byte gUnk_080CD040 + + thumb_func_start sub_0802A2B4 +sub_0802A2B4: @ 0x0802A2B4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xa0 + lsls r1, r1, #6 + bl sub_08003FC4 + cmp r0, #0 + bne _0802A2DC + movs r0, #2 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x84 + bl sub_08004488 + b _0802A2E2 +_0802A2DC: + adds r0, r4, #0 + bl sub_0806F69C +_0802A2E2: + adds r0, r4, #0 + bl sub_0802A39C + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0802A2FA + adds r0, r4, #0 + bl sub_0802A334 +_0802A2FA: + pop {r4, pc} + + thumb_func_start sub_0802A2FC +sub_0802A2FC: @ 0x0802A2FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802A31A + adds r0, r4, #0 + bl sub_0805E7BC + b _0802A332 +_0802A31A: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802A32C + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + b _0802A332 +_0802A32C: + adds r0, r4, #0 + bl sub_0802A39C +_0802A332: + pop {r4, pc} + + thumb_func_start sub_0802A334 +sub_0802A334: @ 0x0802A334 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0802A380 @ =gUnk_03000BF0 + movs r3, #0xa + ldrsh r0, [r2, r3] + ldr r3, _0802A384 @ =gUnk_03000F50 + subs r1, r1, r0 + ldrh r5, [r3, #0x16] + adds r1, r1, r5 + asrs r1, r1, #3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + movs r5, #0xc + ldrsh r2, [r2, r5] + subs r0, r0, r2 + ldrh r3, [r3, #0x18] + adds r0, r0, r3 + asrs r0, r0, #3 + ldr r3, _0802A388 @ =gUnk_02001A40 + movs r2, #0x1f + ands r1, r2 + ands r0, r2 + lsls r0, r0, #5 + adds r1, r1, r0 + movs r0, #0x80 + lsls r0, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r0, [r1] + cmp r0, #0 + beq _0802A38C + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + b _0802A392 + .align 2, 0 +_0802A380: .4byte gUnk_03000BF0 +_0802A384: .4byte gUnk_03000F50 +_0802A388: .4byte gUnk_02001A40 +_0802A38C: + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 +_0802A392: + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + pop {r4, r5, pc} + + thumb_func_start sub_0802A39C +sub_0802A39C: @ 0x0802A39C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _0802A3EC @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0802A3F0 @ =gUnk_03000BF0 + movs r3, #0xa + ldrsh r0, [r2, r3] + ldr r3, _0802A3F4 @ =gUnk_03000F50 + subs r1, r1, r0 + ldrh r6, [r3, #0x16] + adds r1, r1, r6 + asrs r1, r1, #3 + movs r6, #0x32 + ldrsh r0, [r4, r6] + movs r4, #0xc + ldrsh r2, [r2, r4] + subs r0, r0, r2 + ldrh r3, [r3, #0x18] + adds r0, r0, r3 + subs r0, #0xa + asrs r0, r0, #3 + ldr r3, _0802A3F8 @ =gUnk_02001A40 + movs r2, #0x1f + ands r1, r2 + ands r0, r2 + lsls r0, r0, #5 + adds r1, r1, r0 + movs r6, #0x80 + lsls r6, r6, #3 + adds r1, r1, r6 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r0, [r1] + cmp r0, #0 + beq _0802A3FC + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + b _0802A402 + .align 2, 0 +_0802A3EC: .4byte gLinkEntity +_0802A3F0: .4byte gUnk_03000BF0 +_0802A3F4: .4byte gUnk_03000F50 +_0802A3F8: .4byte gUnk_02001A40 +_0802A3FC: + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 +_0802A402: + strb r0, [r5, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802A408 +sub_0802A408: @ 0x0802A408 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0802A430 @ =gUnk_080CD07C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_0802A430: .4byte gUnk_080CD07C + + thumb_func_start sub_0802A434 +sub_0802A434: @ 0x0802A434 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A78C + ldr r1, _0802A450 @ =gUnk_080CD094 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_0802A450: .4byte gUnk_080CD094 + + thumb_func_start sub_0802A454 +sub_0802A454: @ 0x0802A454 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x75 + beq _0802A4A8 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r2, #0x7f + adds r1, r2, #0 + ands r1, r0 + cmp r1, #0 + beq _0802A474 + cmp r1, #0x1e + bne _0802A4A8 +_0802A474: + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + adds r0, r2, #0 + ands r0, r1 + strb r0, [r4, #0x10] + ldr r1, _0802A4D8 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + adds r2, r4, #0 + adds r2, #0x7e + strh r0, [r2] + ldrh r2, [r1, #0x32] + adds r0, r4, #0 + adds r0, #0x80 + strh r2, [r0] + ldrh r0, [r1, #0x36] + adds r1, r4, #0 + adds r1, #0x82 + strh r0, [r1] + ldrb r0, [r4, #0xc] + cmp r0, #3 + beq _0802A4A8 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0802A4A8: + adds r2, r4, #0 + adds r2, #0x42 + ldrb r0, [r2] + adds r1, r0, #0 + cmp r1, #0 + beq _0802A4BC + cmp r1, #4 + bls _0802A4BC + subs r0, #4 + strb r0, [r2] +_0802A4BC: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802A4CE + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802A4CE: + ldr r1, _0802A4DC @ =gUnk_080CD07C + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_0802A4D8: .4byte gLinkEntity +_0802A4DC: .4byte gUnk_080CD07C + + thumb_func_start nullsub_142 +nullsub_142: @ 0x0802A4E0 + bx lr + .align 2, 0 + + thumb_func_start sub_0802A4E4 +sub_0802A4E4: @ 0x0802A4E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + bl sub_08000E50 + adds r1, r4, #0 + adds r1, #0x7d + strb r0, [r1] + ldrb r1, [r4, #0xb] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x7c + strb r1, [r0] + ldrb r1, [r4, #0xe] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + bl sub_0802A7D0 + pop {r4, pc} + + thumb_func_start sub_0802A534 +sub_0802A534: @ 0x0802A534 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + cmp r0, #0 + beq _0802A548 + subs r0, #1 + strh r0, [r1] + b _0802A5B0 +_0802A548: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0 + bne _0802A5B0 + movs r0, #1 + bl sub_08049DF4 + adds r2, r0, #0 + cmp r2, #0 + beq _0802A5B0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrh r0, [r2, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r2, #0x32] + strh r0, [r4, #0x32] + ldr r0, _0802A5B4 @ =0x0000FF80 + strh r0, [r4, #0x36] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0802A7D0 +_0802A5B0: + pop {r4, pc} + .align 2, 0 +_0802A5B4: .4byte 0x0000FF80 + + thumb_func_start sub_0802A5B8 +sub_0802A5B8: @ 0x0802A5B8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A7D0 + ldrb r0, [r4, #0xe] + adds r2, r0, #0 + cmp r2, #0 + beq _0802A5E8 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802A60E + ldr r0, _0802A5E4 @ =0x0000012D + bl sub_08004488 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0802A60E + .align 2, 0 +_0802A5E4: .4byte 0x0000012D +_0802A5E8: + ldrh r0, [r4, #0x36] + adds r0, #3 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _0802A60E + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strh r2, [r4, #0x36] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0802A60E: + pop {r4, pc} + + thumb_func_start sub_0802A610 +sub_0802A610: @ 0x0802A610 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0802A7D0 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _0802A63A + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _0802A64C +_0802A63A: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802A64C + strb r2, [r3] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x75 + strb r0, [r1] +_0802A64C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802A650 +sub_0802A650: @ 0x0802A650 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A7D0 + ldrh r0, [r4, #0x36] + subs r0, #2 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xa0 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0802A69A + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x74 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] +_0802A69A: + pop {r4, pc} + + thumb_func_start sub_0802A69C +sub_0802A69C: @ 0x0802A69C + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A7D0 + ldr r2, _0802A6E4 @ =gUnk_03003F80 + ldrb r1, [r2, #0xa] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0xa] + ldrb r1, [r2, #0x1a] + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r1, _0802A6E8 @ =gLinkEntity + adds r0, r4, #0 + adds r0, #0x7e + ldrh r0, [r0] + strh r0, [r1, #0x2e] + adds r0, r4, #0 + adds r0, #0x80 + ldrh r0, [r0] + strh r0, [r1, #0x32] + adds r0, r4, #0 + adds r0, #0x82 + ldrh r0, [r0] + strh r0, [r1, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r4, #0x36] + movs r3, #0x36 + ldrsh r1, [r4, r3] + cmp r0, r1 + beq _0802A6F0 + cmp r0, r1 + bge _0802A6EC + subs r0, r2, #1 + b _0802A6EE + .align 2, 0 +_0802A6E4: .4byte gUnk_03003F80 +_0802A6E8: .4byte gLinkEntity +_0802A6EC: + adds r0, r2, #1 +_0802A6EE: + strh r0, [r4, #0x36] +_0802A6F0: + adds r0, r4, #0 + bl sub_08004274 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _0802A712 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _0802A72E +_0802A712: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802A72E + strb r2, [r3] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #3 + strb r0, [r1] + ldr r2, _0802A730 @ =gLinkEntity + ldrb r1, [r2, #0x18] + subs r0, #7 + ands r0, r1 + strb r0, [r2, #0x18] +_0802A72E: + pop {r4, pc} + .align 2, 0 +_0802A730: .4byte gLinkEntity + + thumb_func_start sub_0802A734 +sub_0802A734: @ 0x0802A734 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802A7D0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802A768 + bl sub_0805E5A8 + ldr r1, _0802A760 @ =gUnk_0813AB1C + ldr r0, _0802A764 @ =gUnk_02033A90 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08080840 + b _0802A780 + .align 2, 0 +_0802A760: .4byte gUnk_0813AB1C +_0802A764: .4byte gUnk_02033A90 +_0802A768: + ldr r0, [r4, #0x34] + ldr r1, _0802A784 @ =0xFFFE0000 + adds r0, r0, r1 + str r0, [r4, #0x34] + ldr r1, _0802A788 @ =gUnk_03003F80 + ldrb r0, [r1, #0xa] + movs r2, #0x80 + orrs r0, r2 + strb r0, [r1, #0xa] + ldrb r0, [r1, #0x1a] + orrs r0, r2 + strb r0, [r1, #0x1a] +_0802A780: + pop {r4, pc} + .align 2, 0 +_0802A784: .4byte 0xFFFE0000 +_0802A788: .4byte gUnk_03003F80 + + thumb_func_start sub_0802A78C +sub_0802A78C: @ 0x0802A78C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0802A7CC + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802A7BC + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + cmp r0, #0 + bne _0802A7CC + adds r1, r4, #0 + adds r1, #0x7a + ldrh r0, [r1] + cmp r0, #0 + beq _0802A7CC + subs r0, #1 + strh r0, [r1] + b _0802A7CC +_0802A7BC: + ldrb r0, [r4, #0xb] + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #2 + adds r1, #1 + adds r0, r4, #0 + adds r0, #0x7a + strh r1, [r0] +_0802A7CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802A7D0 +sub_0802A7D0: @ 0x0802A7D0 + push {r4, lr} + ldr r3, _0802A800 @ =gUnk_080CD0B0 + movs r1, #0x7d + adds r1, r1, r0 + mov ip, r1 + ldrb r1, [r1] + adds r2, r1, #1 + mov r4, ip + strb r2, [r4] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1b + movs r2, #7 + ands r1, r2 + adds r1, r1, r3 + movs r2, #0 + ldrsb r2, [r1, r2] + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r2, r1 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_0802A800: .4byte gUnk_080CD0B0 + + thumb_func_start sub_0802A804 +sub_0802A804: @ 0x0802A804 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #2 + bne _0802A830 + adds r0, r5, #0 + bl sub_080012DC + adds r1, r0, #0 + cmp r1, #0 + beq _0802A830 + ldr r0, _0802A82C @ =gUnk_080012C8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _0802A844 + .align 2, 0 +_0802A82C: .4byte gUnk_080012C8 +_0802A830: + ldr r4, _0802A848 @ =gUnk_080CD0F0 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_0802A844: + pop {r4, r5, pc} + .align 2, 0 +_0802A848: .4byte gUnk_080CD0F0 + + thumb_func_start sub_0802A84C +sub_0802A84C: @ 0x0802A84C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _0802A878 + cmp r0, #3 + beq _0802A894 + ldr r0, _0802A874 @ =gUnk_080CD108 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0802AD54 + b _0802A8A4 + .align 2, 0 +_0802A874: .4byte gUnk_080CD108 +_0802A878: + ldr r0, _0802A890 @ =gUnk_080CD120 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0802B048 + b _0802A8A4 + .align 2, 0 +_0802A890: .4byte gUnk_080CD120 +_0802A894: + ldr r0, _0802A8A8 @ =gUnk_080CD134 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0802A8A4: + pop {r4, pc} + .align 2, 0 +_0802A8A8: .4byte gUnk_080CD134 + + thumb_func_start sub_0802A8AC +sub_0802A8AC: @ 0x0802A8AC + push {lr} + adds r1, r0, #0 + adds r2, r1, #0 + adds r2, #0x81 + movs r0, #0 + strb r0, [r2] + ldrb r0, [r1, #0xa] + cmp r0, #1 + bhi _0802A8C6 + adds r0, r1, #0 + movs r1, #0 + bl sub_08004260 +_0802A8C6: + pop {pc} + + thumb_func_start sub_0802A8C8 +sub_0802A8C8: @ 0x0802A8C8 + push {lr} + ldr r2, _0802A8DC @ =gUnk_080CD140 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802A8DC: .4byte gUnk_080CD140 + + thumb_func_start sub_0802A8E0 +sub_0802A8E0: @ 0x0802A8E0 + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0802A8EC +sub_0802A8EC: @ 0x0802A8EC + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0802A8F4 +sub_0802A8F4: @ 0x0802A8F4 + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_0802A8FC +sub_0802A8FC: @ 0x0802A8FC + push {lr} + adds r2, r0, #0 + ldr r0, _0802A914 @ =gUnk_03003F80 + ldrb r0, [r0, #0x1c] + movs r1, #0xf + ands r1, r0 + cmp r1, #0 + bne _0802A912 + adds r0, r2, #0 + adds r0, #0x45 + strb r1, [r0] +_0802A912: + pop {pc} + .align 2, 0 +_0802A914: .4byte gUnk_03003F80 + + thumb_func_start nullsub_143 +nullsub_143: @ 0x0802A918 + bx lr + .align 2, 0 + + thumb_func_start sub_0802A91C +sub_0802A91C: @ 0x0802A91C + adds r0, #0x45 + movs r1, #0 + strb r1, [r0] + bx lr + + thumb_func_start sub_0802A924 +sub_0802A924: @ 0x0802A924 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + movs r5, #0 + movs r6, #1 + movs r0, #1 + strb r0, [r7, #0xc] + strb r5, [r7, #0xd] + strb r5, [r7, #0xe] + strb r5, [r7, #0xf] + ldr r0, _0802A9A0 @ =gUnk_080CD16C + str r0, [r7, #0x48] + movs r4, #0 + ldr r0, _0802A9A4 @ =0x0000FFD0 + strh r0, [r7, #0x36] + bl sub_08000E50 + ands r0, r6 + adds r1, r7, #0 + adds r1, #0x80 + strb r0, [r1] + adds r0, r7, #0 + adds r0, #0x82 + strh r5, [r0] + subs r0, #7 + strb r4, [r0] + adds r0, #6 + strb r4, [r0] + subs r0, #7 + strb r4, [r0] + subs r0, #2 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + subs r1, #0x48 + movs r0, #3 + strb r0, [r1] + ldrb r2, [r7, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r7, #0x1b] + ldrb r0, [r7, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r7, #0x19] + adds r2, r7, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + ldrb r1, [r7, #0xa] + adds r1, #1 + adds r0, r7, #0 + bl sub_08004260 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0802A9A0: .4byte gUnk_080CD16C +_0802A9A4: .4byte 0x0000FFD0 + + thumb_func_start sub_0802A9A8 +sub_0802A9A8: @ 0x0802A9A8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0802A9B8 + subs r0, #1 + strb r0, [r4, #0xf] + b _0802AA3E +_0802A9B8: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802A9DE + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802AA38 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0x40 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #8 + bl sub_0802ACDC + b _0802AA38 +_0802A9DE: + ldr r0, _0802AA14 @ =gUnk_03000BF0 + ldrh r1, [r0] + adds r2, r0, #0 + cmp r1, #0 + bne _0802AA3E + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0802AA18 + ldrh r0, [r2, #0xa] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #8 + b _0802AA26 + .align 2, 0 +_0802AA14: .4byte gUnk_03000BF0 +_0802AA18: + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r2, #0xa] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + movs r0, #0x18 +_0802AA26: + strb r0, [r4, #0x15] + ldrh r0, [r2, #0xc] + adds r0, #0x40 + strh r0, [r4, #0x32] + movs r0, #0x80 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0802ADDC +_0802AA38: + adds r0, r4, #0 + bl sub_0802AC40 +_0802AA3E: + pop {r4, pc} + + thumb_func_start sub_0802AA40 +sub_0802AA40: @ 0x0802AA40 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802AC40 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802AA66 + adds r0, r4, #0 + movs r1, #8 + bl sub_0802ACDC + adds r1, r4, #0 + adds r1, #0x7b + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0802AA66: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802AA72 + subs r0, #1 + strb r0, [r4, #0xe] + b _0802AABE +_0802AA72: + ldr r2, [r4, #0x54] + cmp r2, #0 + beq _0802AABE + ldr r0, [r2, #4] + cmp r0, #0 + bne _0802AA82 + str r0, [r4, #0x54] + b _0802AABE +_0802AA82: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r1, r0, #0 + adds r1, #0x18 + movs r0, #0x18 + ands r1, r0 + adds r3, r4, #0 + adds r3, #0x7b + ldrb r0, [r3] + cmp r0, #0x20 + bls _0802AA9E + strb r1, [r4, #0x15] +_0802AA9E: + ldrb r0, [r4, #0x15] + cmp r0, r1 + bne _0802AABE + movs r0, #3 + strb r0, [r4, #0xc] + movs r1, #0 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + strb r1, [r3] + adds r1, r2, #0 + adds r1, #0x80 + movs r0, #1 + strb r0, [r1] + movs r0, #0x96 + strb r0, [r2, #0xe] +_0802AABE: + pop {r4, pc} + + thumb_func_start sub_0802AAC0 +sub_0802AAC0: @ 0x0802AAC0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0802AC40 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + movs r6, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802AADE + adds r0, r4, #0 + movs r1, #4 + bl sub_0802AD1C +_0802AADE: + adds r2, r4, #0 + adds r2, #0x81 + ldrb r5, [r2] + cmp r5, #0 + beq _0802AB0E + ldr r1, [r4, #0x54] + cmp r1, #0 + bne _0802AAF2 + strb r1, [r2] + b _0802AB3C +_0802AAF2: + ldr r0, [r1, #4] + cmp r0, #0 + bne _0802AAFE + strb r0, [r2] + str r0, [r4, #0x54] + b _0802AB3C +_0802AAFE: + ldrb r3, [r1, #0xe] + cmp r3, #0 + bne _0802AB3C + ldrb r0, [r1, #0xf] + cmp r0, #0x50 + bhi _0802AB3C + strb r3, [r2] + b _0802AB3C +_0802AB0E: + movs r3, #4 + strb r3, [r4, #0xc] + movs r0, #0xc0 + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x80 + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x78 + strb r5, [r0] + adds r0, #1 + strb r3, [r0] + ldrb r0, [r4, #0x15] + orrs r0, r6 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0802AB3C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802AB40 +sub_0802AB40: @ 0x0802AB40 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802AC40 + adds r3, r4, #0 + adds r3, #0x78 + ldrb r0, [r3] + cmp r0, #1 + beq _0802AB94 + cmp r0, #1 + bgt _0802AB5C + cmp r0, #0 + beq _0802AB62 + b _0802AC04 +_0802AB5C: + cmp r0, #2 + beq _0802ABC2 + b _0802AC04 +_0802AB62: + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0802AB86 + adds r1, r4, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802AC04 + movs r0, #4 + strb r0, [r1] + ldrh r0, [r4, #0x36] + adds r0, #1 + strh r0, [r4, #0x36] + b _0802AC04 +_0802AB86: + movs r0, #1 + strb r0, [r3] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0x30 + strb r0, [r1] + b _0802ABB6 +_0802AB94: + adds r2, r4, #0 + adds r2, #0x79 + ldrb r0, [r2] + subs r1, r0, #1 + strb r1, [r2] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0802ABAE + movs r0, #2 + strb r0, [r3] + movs r0, #4 + strb r0, [r2] + b _0802AC04 +_0802ABAE: + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0802AC04 +_0802ABB6: + adds r0, r4, #0 + movs r1, #0 + bl sub_08049F84 + strb r0, [r4, #0x15] + b _0802AC04 +_0802ABC2: + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x30 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0802ABF2 + adds r1, r4, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802AC04 + movs r0, #4 + strb r0, [r1] + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + adds r0, r4, #0 + movs r1, #4 + bl sub_0802ACDC + b _0802AC04 +_0802ABF2: + movs r1, #0 + movs r0, #5 + strb r0, [r4, #0xc] + strh r1, [r4, #0x24] + ldrb r1, [r4, #0xa] + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 +_0802AC04: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802AC08 +sub_0802AC08: @ 0x0802AC08 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802AC36 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0x40 + strb r0, [r4, #0xe] + movs r0, #0xc0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #8 + bl sub_0802ACDC + adds r0, r4, #0 + bl sub_0802ADDC +_0802AC36: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802AC40 +sub_0802AC40: @ 0x0802AC40 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + adds r5, r4, #0 + adds r5, #0x7a + ldrb r0, [r5] + cmp r0, #0 + beq _0802ACA2 + adds r0, r4, #0 + bl sub_0802B234 + cmp r0, #0 + bne _0802AC72 + strb r0, [r5] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + b _0802ACD8 +_0802AC72: + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0802AC92 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x38 + ands r0, r1 + cmp r0, #8 + beq _0802ACDA + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + b _0802ACD6 +_0802AC92: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x38 + ands r0, r1 + cmp r0, #0x18 + beq _0802ACDA + b _0802ACCE +_0802ACA2: + adds r0, r4, #0 + bl sub_0802B234 + cmp r0, #0 + beq _0802ACDA + movs r0, #1 + strb r0, [r5] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0802ACC8 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + b _0802ACD6 +_0802ACC8: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] +_0802ACCE: + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 +_0802ACD6: + orrs r0, r1 +_0802ACD8: + strb r0, [r2] +_0802ACDA: + pop {r4, r5, pc} + + thumb_func_start sub_0802ACDC +sub_0802ACDC: @ 0x0802ACDC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0802ACF8 + ldr r0, _0802ACF4 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r1, [r0, r2] + adds r1, #0x20 + b _0802AD00 + .align 2, 0 +_0802ACF4: .4byte gUnk_03000BF0 +_0802ACF8: + ldr r0, _0802AD18 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r1, [r0, r2] + adds r1, #0xd0 +_0802AD00: + movs r3, #0xc + ldrsh r2, [r0, r3] + adds r2, #0x60 + adds r0, r4, #0 + bl sub_080045B4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + strb r5, [r4, #0xf] + pop {r4, r5, pc} + .align 2, 0 +_0802AD18: .4byte gUnk_03000BF0 + + thumb_func_start sub_0802AD1C +sub_0802AD1C: @ 0x0802AD1C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _0802AD48 + movs r1, #0x32 + ldrsh r2, [r0, r1] + subs r2, #0x18 + movs r3, #0x2e + ldrsh r1, [r0, r3] + adds r0, r4, #0 + bl sub_080045B4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + strb r5, [r4, #0xf] + b _0802AD50 +_0802AD48: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0802ACDC +_0802AD50: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802AD54 +sub_0802AD54: @ 0x0802AD54 + push {r4, lr} + adds r2, r0, #0 + adds r0, #0x82 + ldrh r0, [r0] + cmp r0, #0 + beq _0802ADAE + ldr r4, _0802AD7C @ =gUnk_03000BF0 + ldrh r0, [r4] + cmp r0, #0 + beq _0802AD80 + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + bl sub_0805E7BC + b _0802ADD8 + .align 2, 0 +_0802AD7C: .4byte gUnk_03000BF0 +_0802AD80: + ldrh r1, [r4, #8] + movs r0, #0x32 + ldrsh r3, [r2, r0] + cmp r1, r3 + bgt _0802AD94 + ldrh r0, [r4, #0x20] + adds r0, r1, r0 + adds r0, #0x20 + cmp r0, r3 + bge _0802ADA0 +_0802AD94: + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + b _0802ADAE +_0802ADA0: + ldrb r0, [r2, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r2, #0x18] +_0802ADAE: + adds r0, r2, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0802ADD8 + ldr r0, [r2, #0x54] + cmp r0, #0 + beq _0802ADC4 + ldr r0, [r0, #4] + cmp r0, #0 + bne _0802ADD8 +_0802ADC4: + movs r1, #4 + strb r1, [r2, #0xc] + movs r0, #0xc0 + strb r0, [r2, #0xe] + strb r1, [r2, #0xf] + adds r2, #0x80 + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + strb r0, [r2] +_0802ADD8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802ADDC +sub_0802ADDC: @ 0x0802ADDC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + adds r1, #2 + movs r0, #0x1b + bl sub_0804AA60 + adds r5, r0, #0 + cmp r5, #0 + beq _0802AE20 + adds r0, r4, #0 + bl sub_0802B234 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + strb r1, [r5, #0xb] + str r4, [r5, #0x50] + str r5, [r4, #0x54] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0802AE20 + subs r1, #7 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0802AE20: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802AE24 +sub_0802AE24: @ 0x0802AE24 + push {lr} + mov ip, r0 + movs r2, #0 + movs r3, #1 + strb r3, [r0, #0xc] + movs r0, #0xf0 + mov r1, ip + strb r0, [r1, #0xe] + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r1, #0x20] + ldr r0, _0802AE64 @ =gUnk_080CD174 + str r0, [r1, #0x48] + adds r1, #0x3c + movs r0, #3 + strb r0, [r1] + mov r0, ip + strb r2, [r0, #0x16] + movs r0, #2 + mov r1, ip + strb r0, [r1, #0x1c] + mov r0, ip + adds r0, #0x81 + strb r2, [r0] + subs r0, #6 + strb r3, [r0] + mov r0, ip + movs r1, #3 + bl sub_08004260 + pop {pc} + .align 2, 0 +_0802AE64: .4byte gUnk_080CD174 + + thumb_func_start sub_0802AE68 +sub_0802AE68: @ 0x0802AE68 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802B250 + adds r1, r0, #0 + cmp r1, #0 + bne _0802AE8A + movs r0, #3 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0802B264 + b _0802AEBA +_0802AE8A: + adds r0, r1, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0802AEA8 + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _0802AEBA +_0802AEA8: + movs r0, #3 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0802B264 +_0802AEBA: + pop {r4, pc} + + thumb_func_start sub_0802AEBC +sub_0802AEBC: @ 0x0802AEBC + push {lr} + ldr r2, _0802AED0 @ =gUnk_080CD158 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802AED0: .4byte gUnk_080CD158 + + thumb_func_start sub_0802AED4 +sub_0802AED4: @ 0x0802AED4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r5, r4, #0 + adds r5, #0x81 + ldrb r0, [r5] + cmp r0, #1 + bhi _0802AEFC + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bne _0802AF0C + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _0802AF0C +_0802AEFC: + adds r0, r4, #0 + bl sub_0800442E + cmp r0, #0 + bne _0802AF0C + adds r0, r4, #0 + bl sub_08078930 +_0802AF0C: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0802AF24 + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0802AF24 + movs r0, #0 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] +_0802AF24: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802AF28 +sub_0802AF28: @ 0x0802AF28 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + bl sub_08079BD8 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_0802AF50 +sub_0802AF50: @ 0x0802AF50 + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0802AF58 +sub_0802AF58: @ 0x0802AF58 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802AF74 +sub_0802AF74: @ 0x0802AF74 + push {lr} + adds r2, r0, #0 + movs r0, #0 + movs r1, #3 + strb r1, [r2, #0xc] + strb r0, [r2, #0xd] + ldrb r0, [r2, #0xe] + cmp r0, #0x3c + bls _0802AF8A + movs r0, #0x3c + strb r0, [r2, #0xe] +_0802AF8A: + adds r0, r2, #0 + bl sub_08004274 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802AF94 +sub_0802AF94: @ 0x0802AF94 + push {lr} + bl sub_0805E7BC + pop {pc} + + thumb_func_start sub_0802AF9C +sub_0802AF9C: @ 0x0802AF9C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802AFC6 + ldr r0, [r4, #0x50] + adds r1, r0, #0 + adds r1, #0x7a + ldrb r0, [r1] + cmp r0, #0 + beq _0802AFC0 + subs r0, #1 + strb r0, [r1] +_0802AFC0: + adds r0, r4, #0 + bl sub_0805E7BC +_0802AFC6: + pop {r4, pc} + + thumb_func_start sub_0802AFC8 +sub_0802AFC8: @ 0x0802AFC8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + movs r7, #8 + cmp r0, #0x28 + bhi _0802B022 + movs r7, #4 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r2, [r1] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0802AFEC + adds r0, r2, #0 + subs r0, #0x10 + b _0802AFF0 +_0802AFEC: + adds r0, r2, #0 + adds r0, #0x10 +_0802AFF0: + strh r0, [r1] + adds r5, r1, #0 + ldrh r2, [r5] + movs r6, #0xf0 + adds r3, r6, #0 + ands r3, r2 + subs r0, r3, #1 + cmp r0, #0x7f + bls _0802B00C + movs r3, #0x80 + lsls r3, r3, #8 + adds r0, r3, #0 + eors r0, r2 + strh r0, [r5] +_0802B00C: + ldrh r0, [r1] + adds r3, r6, #0 + ands r3, r0 + movs r2, #0x98 + lsls r2, r2, #1 + subs r2, r2, r3 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C +_0802B022: + ldrb r0, [r4, #0xf] + ands r0, r7 + cmp r0, #0 + beq _0802B03A + ldrb r0, [r4, #0x1a] + lsrs r2, r0, #4 + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1a] + b _0802B044 +_0802B03A: + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x1a] +_0802B044: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802B048 +sub_0802B048: @ 0x0802B048 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0 + beq _0802B080 + ldr r0, _0802B074 @ =gUnk_03000BF0 + ldrh r1, [r0, #8] + movs r3, #0x32 + ldrsh r2, [r4, r3] + cmp r1, r2 + bgt _0802B06A + ldrh r0, [r0, #0x20] + adds r0, r1, r0 + adds r0, #0x20 + cmp r0, r2 + bge _0802B078 +_0802B06A: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + b _0802B07E + .align 2, 0 +_0802B074: .4byte gUnk_03000BF0 +_0802B078: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 +_0802B07E: + strb r0, [r4, #0x10] +_0802B080: + ldr r5, [r4, #0x50] + cmp r5, #0 + beq _0802B0CA + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _0802B0CA + ldrb r1, [r5, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r3, [r4, #0x19] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + lsrs r1, r1, #0x1d + ldrb r3, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r1, [r4, #0x1b] + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0x1b] +_0802B0CA: + ldrb r2, [r4, #0xc] + cmp r2, #4 + beq _0802B19E + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0802B19E + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802B10E + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802B19E + movs r0, #0x50 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x82 + strh r1, [r0] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + b _0802B19E +_0802B10E: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0802B19E + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802B198 + cmp r2, #2 + bne _0802B12E + ldrb r0, [r4, #0xd] + cmp r0, #1 + bne _0802B12E + ldr r0, _0802B188 @ =gUnk_03003F80 + strb r1, [r0, #5] +_0802B12E: + adds r0, r4, #0 + bl sub_0805EC60 + movs r5, #0 + movs r0, #4 + strb r0, [r4, #0xc] + ldr r0, _0802B18C @ =gUnk_080CD17C + str r0, [r4, #0x48] + movs r0, #0xf + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x13 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x7b + strb r5, [r0] + adds r0, r4, #0 + bl sub_08078954 + ldr r1, [r4, #0x50] + ldr r0, [r1, #4] + cmp r0, #0 + beq _0802B16C + adds r0, r1, #0 + adds r0, #0x81 + strb r5, [r0] +_0802B16C: + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r5, r0, #0 + cmp r5, #0 + beq _0802B190 + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + b _0802B19E + .align 2, 0 +_0802B188: .4byte gUnk_03003F80 +_0802B18C: .4byte gUnk_080CD17C +_0802B190: + adds r0, r4, #0 + bl sub_0805E7BC + b _0802B19E +_0802B198: + adds r0, r4, #0 + bl sub_0802AFC8 +_0802B19E: + pop {r4, r5, pc} + + thumb_func_start sub_0802B1A0 +sub_0802B1A0: @ 0x0802B1A0 + push {lr} + movs r1, #0 + movs r2, #1 + strb r2, [r0, #0xc] + strb r1, [r0, #0xe] + movs r1, #0x4f + strb r1, [r0, #0xf] + adds r1, r0, #0 + adds r1, #0x81 + strb r2, [r1] + movs r1, #0 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0802B1BC +sub_0802B1BC: @ 0x0802B1BC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802B1CA + subs r0, #1 + strb r0, [r4, #0xe] +_0802B1CA: + adds r0, r4, #0 + bl sub_0802B250 + adds r1, r0, #0 + cmp r1, #0 + bne _0802B1E2 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0802B264 + b _0802B200 +_0802B1E2: + adds r0, r1, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0802B1F6 + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_0806FA24 + b _0802B200 +_0802B1F6: + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0802B264 +_0802B200: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802B204 +sub_0802B204: @ 0x0802B204 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0xa0 + lsls r1, r1, #6 + bl sub_080044EC + cmp r0, #1 + bne _0802B232 + movs r0, #0x22 + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _0802B22E + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, [r5, #0x50] + str r0, [r4, #0x50] +_0802B22E: + bl sub_0805E780 +_0802B232: + pop {r4, r5, pc} + + thumb_func_start sub_0802B234 +sub_0802B234: @ 0x0802B234 + push {r4, lr} + movs r4, #0 + bl sub_080002A0 + ldr r1, _0802B24C @ =0xFFFFFE3C + adds r0, r0, r1 + cmp r0, #1 + bls _0802B246 + movs r4, #1 +_0802B246: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_0802B24C: .4byte 0xFFFFFE3C + + thumb_func_start sub_0802B250 +sub_0802B250: @ 0x0802B250 + push {lr} + ldr r1, [r0, #0x50] + cmp r1, #0 + beq _0802B260 + ldr r0, [r1, #4] + cmp r0, #0 + bne _0802B260 + movs r1, #0 +_0802B260: + adds r0, r1, #0 + pop {pc} + + thumb_func_start sub_0802B264 +sub_0802B264: @ 0x0802B264 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0802B234 + cmp r0, #0 + beq _0802B294 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x18 + orrs r1, r0 + strb r1, [r2] + b _0802B2A2 +_0802B294: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0802B2A2: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802B2AC +sub_0802B2AC: @ 0x0802B2AC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0802B2C4 @ =gUnk_080CD234 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0802B2C4: .4byte gUnk_080CD234 + + thumb_func_start sub_0802B2C8 +sub_0802B2C8: @ 0x0802B2C8 + push {lr} + ldr r2, _0802B2DC @ =gUnk_080CD24C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802B2DC: .4byte gUnk_080CD24C + + thumb_func_start sub_0802B2E0 +sub_0802B2E0: @ 0x0802B2E0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802B334 + movs r2, #0x7f + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0x14 + bne _0802B334 + ldrb r1, [r4, #0x10] + adds r0, r2, #0 + ands r0, r1 + movs r1, #0 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x3d + strb r1, [r0] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0802B334 + str r1, [r4, #0x54] + movs r0, #0xe + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0806FA24 +_0802B334: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_15 +nullsub_15: @ 0x0802B338 + bx lr + .align 2, 0 + + thumb_func_start sub_0802B33C +sub_0802B33C: @ 0x0802B33C + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x15] + movs r0, #0x78 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802B35C +sub_0802B35C: @ 0x0802B35C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AEF88 + movs r3, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0802B374 + movs r3, #1 +_0802B374: + ldrh r0, [r4, #0x2a] + adds r2, r0, #0 + cmp r2, #0 + bne _0802B3A4 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0802B38A + b _0802B4A6 +_0802B38A: + movs r0, #0x78 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x15] + cmp r3, #0 + beq _0802B39A + adds r1, r0, #0 + adds r1, #8 + b _0802B39E +_0802B39A: + adds r1, r0, #0 + adds r1, #0x18 +_0802B39E: + movs r0, #0x18 + ands r0, r1 + b _0802B4A4 +_0802B3A4: + movs r0, #0x78 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x15] + movs r1, #0x18 + ands r1, r0 + cmp r1, #8 + beq _0802B474 + cmp r1, #8 + bgt _0802B3BC + cmp r1, #0 + beq _0802B3C6 + b _0802B4A6 +_0802B3BC: + cmp r1, #0x10 + beq _0802B404 + cmp r1, #0x18 + beq _0802B442 + b _0802B4A6 +_0802B3C6: + movs r0, #0xe + ands r0, r2 + cmp r0, #0 + beq _0802B3D8 + movs r0, #8 + cmp r3, #0 + beq _0802B4A4 + movs r0, #0x18 + b _0802B4A4 +_0802B3D8: + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #7 + cmp r0, r1 + bne _0802B3EE + cmp r3, #0 + beq _0802B3EE + movs r0, #8 + strb r0, [r4, #0x15] +_0802B3EE: + movs r0, #0xe0 + lsls r0, r0, #4 + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #3 + cmp r0, r1 + bne _0802B4A6 + cmp r3, #0 + bne _0802B4A6 + movs r0, #0x18 + b _0802B4A4 +_0802B404: + movs r0, #0xe0 + ands r0, r2 + cmp r0, #0 + beq _0802B416 + movs r0, #0x18 + cmp r3, #0 + beq _0802B4A4 + movs r0, #8 + b _0802B4A4 +_0802B416: + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #6 + cmp r0, r1 + bne _0802B42C + cmp r3, #0 + bne _0802B42C + movs r0, #8 + strb r0, [r4, #0x15] +_0802B42C: + movs r0, #0xe0 + lsls r0, r0, #4 + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #2 + cmp r0, r1 + bne _0802B4A6 + cmp r3, #0 + beq _0802B4A6 + movs r0, #0x18 + b _0802B4A4 +_0802B442: + movs r1, #0xe0 + lsls r1, r1, #4 + ands r1, r2 + cmp r1, #0 + beq _0802B458 + rsbs r0, r3, #0 + orrs r0, r3 + asrs r0, r0, #0x1f + movs r1, #0x10 + ands r0, r1 + b _0802B4A4 +_0802B458: + movs r0, #0xe + ands r0, r2 + cmp r0, #4 + bne _0802B466 + cmp r3, #0 + beq _0802B466 + strb r1, [r4, #0x15] +_0802B466: + movs r0, #0xe0 + ands r0, r2 + cmp r0, #0x40 + bne _0802B4A6 + cmp r3, #0 + bne _0802B4A6 + b _0802B4A2 +_0802B474: + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0802B488 + movs r0, #0 + cmp r3, #0 + bne _0802B4A4 + movs r0, #0x10 + b _0802B4A4 +_0802B488: + movs r0, #0xe + ands r0, r2 + cmp r0, #2 + bne _0802B496 + cmp r3, #0 + bne _0802B496 + strb r3, [r4, #0x15] +_0802B496: + movs r0, #0xe0 + ands r0, r2 + cmp r0, #0x20 + bne _0802B4A6 + cmp r3, #0 + beq _0802B4A6 +_0802B4A2: + movs r0, #0x10 +_0802B4A4: + strb r0, [r4, #0x15] +_0802B4A6: + pop {r4, pc} + + thumb_func_start sub_0802B4A8 +sub_0802B4A8: @ 0x0802B4A8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B4D6 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x60 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _0802B4D0 + ldrh r0, [r1, #0x32] + subs r0, #4 + strh r0, [r1, #0x32] +_0802B4D0: + adds r0, r4, #0 + bl sub_0805E7BC +_0802B4D6: + pop {r4, pc} + + thumb_func_start sub_0802B4D8 +sub_0802B4D8: @ 0x0802B4D8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + adds r1, r0, #0 + cmp r1, #0 + beq _0802B4FC + ldr r0, _0802B4F8 @ =gUnk_080012C8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _0802B510 + .align 2, 0 +_0802B4F8: .4byte gUnk_080012C8 +_0802B4FC: + ldr r4, _0802B514 @ =gUnk_080CD27C + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_0802B510: + pop {r4, r5, pc} + .align 2, 0 +_0802B514: .4byte gUnk_080CD27C + + thumb_func_start sub_0802B518 +sub_0802B518: @ 0x0802B518 + push {lr} + ldr r2, _0802B52C @ =gUnk_080CD298 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802B52C: .4byte gUnk_080CD298 + + thumb_func_start sub_0802B530 +sub_0802B530: @ 0x0802B530 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802B540 +sub_0802B540: @ 0x0802B540 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802B550 + subs r0, #1 + strb r0, [r4, #0xe] + b _0802B56A +_0802B550: + adds r0, r4, #0 + movs r1, #1 + movs r2, #0xc + bl sub_0804A024 + adds r1, r0, #0 + cmp r1, #0xff + beq _0802B56A + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x40 + strh r0, [r4, #0x24] + strb r1, [r4, #0x15] +_0802B56A: + pop {r4, pc} + + thumb_func_start sub_0802B56C +sub_0802B56C: @ 0x0802B56C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802B586 + movs r0, #0x40 + strh r0, [r4, #0x24] +_0802B586: + adds r0, r4, #0 + bl sub_080AF038 + cmp r0, #0 + beq _0802B5B8 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #1 + beq _0802B5A2 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0802B5A2: + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldr r0, _0802B5B4 @ =0x0000021F + cmp r1, r0 + bgt _0802B5C4 + adds r0, r2, #4 + strh r0, [r4, #0x24] + b _0802B5C4 + .align 2, 0 +_0802B5B4: .4byte 0x0000021F +_0802B5B8: + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_0802B5C4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802B5C8 +sub_0802B5C8: @ 0x0802B5C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802B5EE + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0802B5EE: + pop {r4, pc} + + thumb_func_start sub_0802B5F0 +sub_0802B5F0: @ 0x0802B5F0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0802B60C @ =gUnk_080CD2D8 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0802B60C: .4byte gUnk_080CD2D8 + + thumb_func_start sub_0802B610 +sub_0802B610: @ 0x0802B610 + push {lr} + ldr r2, _0802B624 @ =gUnk_080CD2F0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802B624: .4byte gUnk_080CD2F0 + + thumb_func_start sub_0802B628 +sub_0802B628: @ 0x0802B628 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0x1d + bhi _0802B706 + lsls r0, r1, #2 + ldr r1, _0802B644 @ =_0802B648 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802B644: .4byte _0802B648 +_0802B648: @ jump table + .4byte _0802B6C0 @ case 0 + .4byte _0802B706 @ case 1 + .4byte _0802B6CC @ case 2 + .4byte _0802B6CC @ case 3 + .4byte _0802B6C0 @ case 4 + .4byte _0802B6C0 @ case 5 + .4byte _0802B6C0 @ case 6 + .4byte _0802B706 @ case 7 + .4byte _0802B6C0 @ case 8 + .4byte _0802B6C0 @ case 9 + .4byte _0802B6C0 @ case 10 + .4byte _0802B6C0 @ case 11 + .4byte _0802B6C0 @ case 12 + .4byte _0802B706 @ case 13 + .4byte _0802B706 @ case 14 + .4byte _0802B706 @ case 15 + .4byte _0802B706 @ case 16 + .4byte _0802B706 @ case 17 + .4byte _0802B706 @ case 18 + .4byte _0802B706 @ case 19 + .4byte _0802B706 @ case 20 + .4byte _0802B706 @ case 21 + .4byte _0802B6CC @ case 22 + .4byte _0802B706 @ case 23 + .4byte _0802B6CC @ case 24 + .4byte _0802B6CC @ case 25 + .4byte _0802B6CC @ case 26 + .4byte _0802B706 @ case 27 + .4byte _0802B706 @ case 28 + .4byte _0802B6CC @ case 29 +_0802B6C0: + ldrb r0, [r4, #0xc] + cmp r0, #4 + bne _0802B706 + movs r0, #1 + strb r0, [r4, #0xe] + b _0802B706 +_0802B6CC: + ldrb r0, [r4, #0xc] + cmp r0, #5 + bhi _0802B706 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r1, #0 + movs r0, #0xc0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x42 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xf8 + strb r0, [r1] + adds r1, #2 + movs r0, #0x64 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #9 + bl sub_08004260 +_0802B706: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802B718 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802B718: + ldr r1, _0802B724 @ =gUnk_080CD2D8 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_0802B724: .4byte gUnk_080CD2D8 + + thumb_func_start nullsub_144 +nullsub_144: @ 0x0802B728 + bx lr + .align 2, 0 + + thumb_func_start sub_0802B72C +sub_0802B72C: @ 0x0802B72C + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0802B7A4 + pop {r4, pc} + + thumb_func_start sub_0802B744 +sub_0802B744: @ 0x0802B744 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802B780 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0xc + bl sub_0804A024 + adds r1, r0, #0 + cmp r1, #0xff + beq _0802B780 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0x18 + ands r1, r0 + strb r1, [r4, #0x15] + adds r0, r4, #0 + movs r1, #8 + bl sub_08004260 + b _0802B7A2 +_0802B780: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B794 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x1e + b _0802B7A0 +_0802B794: + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0802B7A2 + movs r0, #1 +_0802B7A0: + strb r0, [r4, #0xe] +_0802B7A2: + pop {r4, pc} + + thumb_func_start sub_0802B7A4 +sub_0802B7A4: @ 0x0802B7A4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B7F4 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _0802B7F8 @ =gUnk_080CD314 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0x60 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0802B960 + ldrb r0, [r4, #0x15] + lsls r1, r0, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0xff + beq _0802B7F4 + lsrs r2, r1, #0x1b + ldrb r0, [r4, #0x14] + cmp r2, r0 + beq _0802B7F4 + movs r1, #3 + adds r0, r2, #0 + ands r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08004260 +_0802B7F4: + pop {r4, pc} + .align 2, 0 +_0802B7F8: .4byte gUnk_080CD314 + + thumb_func_start sub_0802B7FC +sub_0802B7FC: @ 0x0802B7FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B81E + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #0xe0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] +_0802B81E: + pop {r4, pc} + + thumb_func_start sub_0802B820 +sub_0802B820: @ 0x0802B820 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + cmp r0, #0 + bne _0802B830 + movs r0, #1 + strb r0, [r4, #0xe] +_0802B830: + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B84A + adds r0, r4, #0 + bl sub_0802B9B4 + b _0802B87E +_0802B84A: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802B878 + ldrb r1, [r4, #0xe] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0802B87E + ldr r0, _0802B874 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + b _0802B87E + .align 2, 0 +_0802B874: .4byte gUnk_020000B0 +_0802B878: + adds r0, r4, #0 + bl sub_0802B9B4 +_0802B87E: + pop {r4, pc} + + thumb_func_start sub_0802B880 +sub_0802B880: @ 0x0802B880 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802B8AC + movs r0, #2 + strb r0, [r2, #0xc] + movs r0, #0x3c + strb r0, [r2, #0xe] + ldrb r0, [r2, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #3 + strb r0, [r2, #0x14] + ldrb r1, [r2, #0x14] + adds r0, r2, #0 + bl sub_08004260 +_0802B8AC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802B8B0 +sub_0802B8B0: @ 0x0802B8B0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + beq _0802B8CC + cmp r0, #1 + beq _0802B8D4 + b _0802B8DA +_0802B8CC: + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x96 + strb r0, [r4, #0xe] +_0802B8D4: + ldr r0, _0802B8DC @ =0x0000012B + bl sub_08004488 +_0802B8DA: + pop {r4, pc} + .align 2, 0 +_0802B8DC: .4byte 0x0000012B + + thumb_func_start sub_0802B8E0 +sub_0802B8E0: @ 0x0802B8E0 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xe] + subs r1, r0, #1 + strb r1, [r3, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + beq _0802B91C + adds r4, r0, #0 + lsrs r0, r4, #0x18 + cmp r0, #0x3b + bhi _0802B940 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _0802B940 + adds r3, #0x62 + ldr r2, _0802B918 @ =gUnk_080CD318 + lsrs r0, r4, #0x19 + movs r1, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r1, [r3] + adds r0, r0, r1 + strb r0, [r3] + b _0802B940 + .align 2, 0 +_0802B918: .4byte gUnk_080CD318 +_0802B91C: + movs r0, #8 + strb r0, [r3, #0xc] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r3, #0x20] + movs r0, #0x60 + strh r0, [r3, #0x24] + adds r1, r3, #0 + adds r1, #0x3f + movs r0, #0x63 + strb r0, [r1] + ldrb r1, [r3, #0x14] + adds r0, r3, #0 + bl sub_08004260 + ldr r0, _0802B944 @ =0x0000012B + bl sub_08004488 +_0802B940: + pop {r4, pc} + .align 2, 0 +_0802B944: .4byte 0x0000012B + + thumb_func_start sub_0802B948 +sub_0802B948: @ 0x0802B948 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + cmp r0, #0 + bne _0802B95E + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0xe] +_0802B95E: + pop {r4, pc} + + thumb_func_start sub_0802B960 +sub_0802B960: @ 0x0802B960 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802B986 + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + cmp r1, #0 + bne _0802B9A6 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + adds r0, #4 + b _0802B9AA +_0802B986: + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0802B9A6 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + bne _0802B9A6 + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #4 + b _0802B9AA +_0802B9A6: + bl sub_08000E50 +_0802B9AA: + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802B9B4 +sub_0802B9B4: @ 0x0802B9B4 + push {lr} + movs r1, #5 + strb r1, [r0, #0xc] + movs r1, #0x3c + strb r1, [r0, #0xe] + ldrb r1, [r0, #0x15] + lsrs r1, r1, #3 + movs r2, #3 + ands r1, r2 + strb r1, [r0, #0x14] + ldrb r1, [r0, #0x14] + adds r1, #4 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802B9D4 +sub_0802B9D4: @ 0x0802B9D4 + push {lr} + ldr r2, _0802B9E8 @ =gUnk_080CD3C4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802B9E8: .4byte gUnk_080CD3C4 + + thumb_func_start sub_0802B9EC +sub_0802B9EC: @ 0x0802B9EC + adds r2, r0, #0 + movs r0, #1 + strb r0, [r2, #0xc] + ldr r1, _0802BA14 @ =gUnk_080CD3D4 + ldrb r0, [r2, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x78 + strh r1, [r0] + adds r0, #0xc + ldrh r1, [r0] + subs r0, #8 + strh r1, [r0] + adds r0, #0xa + ldrh r1, [r0] + subs r0, #8 + strh r1, [r0] + bx lr + .align 2, 0 +_0802BA14: .4byte gUnk_080CD3D4 + + thumb_func_start sub_0802BA18 +sub_0802BA18: @ 0x0802BA18 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #1 + movs r2, #0xe + bl sub_0804A024 + adds r5, r0, #0 + cmp r5, #0xff + beq _0802BA88 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0802BB2C + cmp r0, #0 + bne _0802BA88 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + strh r0, [r4, #0x24] + strb r5, [r4, #0x15] + lsrs r0, r5, #3 + cmp r0, #1 + beq _0802BA60 + cmp r0, #1 + blo _0802BA58 + cmp r0, #2 + beq _0802BA6C + cmp r0, #3 + beq _0802BA78 + b _0802BA88 +_0802BA58: + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r4, #0x32] + b _0802BA7E +_0802BA60: + adds r0, r4, #0 + adds r0, #0x7c + ldrh r0, [r0] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + b _0802BA82 +_0802BA6C: + adds r0, r4, #0 + adds r0, #0x7e + ldrh r0, [r0] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + b _0802BA82 +_0802BA78: + adds r1, r4, #0 + adds r1, #0x7c + ldrh r0, [r4, #0x2e] +_0802BA7E: + ldrh r1, [r1] + subs r0, r0, r1 +_0802BA82: + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] +_0802BA88: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802BA8C +sub_0802BA8C: @ 0x0802BA8C + push {r4, lr} + adds r4, r0, #0 + bl sub_080AF038 + cmp r0, #0 + beq _0802BADE + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + cmp r0, #1 + beq _0802BAC4 + cmp r0, #1 + bgt _0802BAAA + cmp r0, #0 + beq _0802BAB4 + b _0802BAFA +_0802BAAA: + cmp r0, #2 + beq _0802BAD0 + cmp r0, #3 + beq _0802BAE6 + b _0802BAFA +_0802BAB4: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r1, [r0] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _0802BAFA + b _0802BADE +_0802BAC4: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r1, [r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + b _0802BADA +_0802BAD0: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r1, [r0] + movs r2, #0x32 + ldrsh r0, [r4, r2] +_0802BADA: + cmp r1, r0 + bgt _0802BAFA +_0802BADE: + adds r0, r4, #0 + bl sub_0802BB10 + b _0802BAFA +_0802BAE6: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r1, [r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + blt _0802BAFA + adds r0, r4, #0 + bl sub_0802BB10 +_0802BAFA: + pop {r4, pc} + + thumb_func_start sub_0802BAFC +sub_0802BAFC: @ 0x0802BAFC + push {r4, lr} + adds r4, r0, #0 + bl sub_080AF038 + cmp r0, #0 + bne _0802BB0C + movs r0, #1 + strb r0, [r4, #0xc] +_0802BB0C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802BB10 +sub_0802BB10: @ 0x0802BB10 + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #0xc0 + strh r1, [r0, #0x24] + ldrb r1, [r0, #0x15] + movs r2, #0x10 + eors r1, r2 + strb r1, [r0, #0x15] + movs r0, #0x74 + bl sub_08004488 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802BB2C +sub_0802BB2C: @ 0x0802BB2C + push {r4, lr} + adds r2, r0, #0 + adds r0, #0x38 + ldrb r0, [r0] + ldr r4, _0802BB60 @ =gUnk_02027EB4 + cmp r0, #2 + bne _0802BB3C + ldr r4, _0802BB64 @ =gUnk_0200D654 +_0802BB3C: + lsrs r3, r1, #2 + ldr r0, _0802BB68 @ =gUnk_080CD3DC + adds r3, r3, r0 + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r0, #0 + ldrsb r0, [r3, r0] + adds r1, r1, r0 + movs r0, #0x32 + ldrsh r2, [r2, r0] + movs r0, #1 + ldrsb r0, [r3, r0] + adds r2, r2, r0 + adds r0, r4, #0 + movs r3, #0 + bl sub_080AE4CC + pop {r4, pc} + .align 2, 0 +_0802BB60: .4byte gUnk_02027EB4 +_0802BB64: .4byte gUnk_0200D654 +_0802BB68: .4byte gUnk_080CD3DC + + thumb_func_start sub_0802BB6C +sub_0802BB6C: @ 0x0802BB6C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0802BB94 + ldr r1, _0802BB90 @ =gUnk_080CD3E4 + adds r0, r4, #0 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + b _0802BBA4 + .align 2, 0 +_0802BB90: .4byte gUnk_080CD3E4 +_0802BB94: + ldr r0, _0802BBA8 @ =gUnk_080CD3FC + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0802BBA4: + pop {r4, pc} + .align 2, 0 +_0802BBA8: .4byte gUnk_080CD3FC + + thumb_func_start sub_0802BBAC +sub_0802BBAC: @ 0x0802BBAC + push {lr} + ldr r2, _0802BBC0 @ =gUnk_080CD408 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802BBC0: .4byte gUnk_080CD408 + + thumb_func_start sub_0802BBC4 +sub_0802BBC4: @ 0x0802BBC4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x19 + beq _0802BBFE + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + beq _0802BBEA + cmp r1, #0 + blt _0802BBFE + cmp r1, #3 + bgt _0802BBFE + cmp r1, #2 + blt _0802BBFE +_0802BBEA: + ldrb r0, [r4, #0xc] + cmp r0, #4 + bne _0802BBFE + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0802C218 +_0802BBFE: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802BC10 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802BC10: + ldr r1, _0802BC1C @ =gUnk_080CD3E4 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_0802BC1C: .4byte gUnk_080CD3E4 + + thumb_func_start sub_0802BC20 +sub_0802BC20: @ 0x0802BC20 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x19 + beq _0802BC4C + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _0802BC6C + ldr r0, _0802BC48 @ =gUnk_080CD42C + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0802BC6C + .align 2, 0 +_0802BC48: .4byte gUnk_080CD42C +_0802BC4C: + ldrb r0, [r4, #0xd] + cmp r0, #2 + bhi _0802BC5C + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _0802BC6C +_0802BC5C: + ldr r0, _0802BC70 @ =gUnk_080CD438 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0802BC6C: + pop {r4, pc} + .align 2, 0 +_0802BC70: .4byte gUnk_080CD438 + + thumb_func_start sub_0802BC74 +sub_0802BC74: @ 0x0802BC74 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802C1C0 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0x1d] + ldr r0, _0802BC9C @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + movs r1, #2 + eors r0, r1 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_0802BC9C: .4byte gLinkEntity + + thumb_func_start sub_0802BCA0 +sub_0802BCA0: @ 0x0802BCA0 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0802BCA8 +sub_0802BCA8: @ 0x0802BCA8 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x3f + ldrb r0, [r1] + cmp r0, #0x19 + beq _0802BCFA + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0x19 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x3a + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + movs r0, #0x12 + strb r0, [r4, #0x1c] + movs r0, #0x20 + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + cmp r1, #0 + beq _0802BCF0 + ldrb r0, [r4, #0x14] + strb r0, [r1, #0x14] + adds r0, r4, #0 + bl sub_0806FA24 +_0802BCF0: + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_0802BCFA: + pop {r4, pc} + + thumb_func_start sub_0802BCFC +sub_0802BCFC: @ 0x0802BCFC + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0802BD08 +sub_0802BD08: @ 0x0802BD08 + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_0802BD10 +sub_0802BD10: @ 0x0802BD10 + push {lr} + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #2 + bl sub_08004276 + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_145 +nullsub_145: @ 0x0802BD24 + bx lr + .align 2, 0 + + thumb_func_start sub_0802BD28 +sub_0802BD28: @ 0x0802BD28 + push {lr} + adds r2, r0, #0 + ldrb r3, [r2, #0x10] + movs r0, #0x80 + ands r0, r3 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0802BD4C + movs r0, #0x80 + orrs r0, r3 + strb r0, [r2, #0x10] + adds r2, #0x3a + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + b _0802BD52 +_0802BD4C: + adds r0, r2, #0 + adds r0, #0x45 + strb r1, [r0] +_0802BD52: + pop {pc} + + thumb_func_start sub_0802BD54 +sub_0802BD54: @ 0x0802BD54 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + adds r1, r4, #0 + adds r1, #0x78 + strb r0, [r1] + movs r0, #0x3c + strb r0, [r4, #0x1d] + adds r1, #1 + movs r0, #0xff + strb r0, [r1] + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0802BD8C +sub_0802BD8C: @ 0x0802BD8C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802BD9C + subs r0, #1 + strb r0, [r4, #0xe] + b _0802BDDE +_0802BD9C: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802BDCA + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x10 + bl sub_0804A024 + adds r1, r0, #0 + cmp r1, #0xff + beq _0802BDCA + adds r0, r4, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r1, r0 + beq _0802BDCA + adds r0, r4, #0 + bl sub_0802C058 + b _0802BDDE +_0802BDCA: + adds r0, r4, #0 + bl sub_0802C020 + adds r1, r0, #0 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _0802BDDE + adds r0, r4, #0 + bl sub_0802C058 +_0802BDDE: + pop {r4, pc} + + thumb_func_start sub_0802BDE0 +sub_0802BDE0: @ 0x0802BDE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802C06C + cmp r0, #0 + beq _0802BDFE + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0xff + strb r0, [r1] + b _0802BE16 +_0802BDFE: + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + adds r0, #0xf + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x79 + strb r1, [r0] +_0802BE16: + pop {r4, pc} + + thumb_func_start sub_0802BE18 +sub_0802BE18: @ 0x0802BE18 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08004276 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802BE3E + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + b _0802BE44 +_0802BE3E: + adds r0, r4, #0 + bl sub_0802C18C +_0802BE44: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802BE48 +sub_0802BE48: @ 0x0802BE48 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + cmp r0, #0 + bne _0802BE64 + adds r0, r4, #0 + bl sub_0802C218 + movs r0, #8 + movs r1, #0 + bl sub_08080964 + b _0802BE7E +_0802BE64: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0802C1CC + adds r0, r4, #0 + bl sub_0802C0E8 + cmp r0, #0 + beq _0802BE7E + movs r0, #5 + strb r0, [r4, #0xc] +_0802BE7E: + pop {r4, pc} + + thumb_func_start sub_0802BE80 +sub_0802BE80: @ 0x0802BE80 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x24] + subs r0, #0x20 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0xff + ble _0802BE98 + adds r0, r4, #0 + bl sub_0802C1CC +_0802BE98: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + ble _0802BEAE + adds r0, r4, #0 + bl sub_080AEFE0 + adds r0, r4, #0 + bl sub_0802C18C + b _0802BEBA +_0802BEAE: + adds r0, r4, #0 + bl sub_0802C1C0 + ldrb r0, [r4, #0xe] + adds r0, #0x1e + strb r0, [r4, #0xe] +_0802BEBA: + pop {r4, pc} + + thumb_func_start sub_0802BEBC +sub_0802BEBC: @ 0x0802BEBC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0x15] + movs r4, #0x10 + eors r0, r4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_080AEFE0 + ldrb r0, [r5, #0x15] + eors r0, r4 + strb r0, [r5, #0x15] + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_080044EC + cmp r0, #0 + bne _0802BEE8 + adds r0, r5, #0 + bl sub_0802C1C0 +_0802BEE8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802BEEC +sub_0802BEEC: @ 0x0802BEEC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802BF1E + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0802BF3A + ldrb r0, [r4, #0x14] + movs r1, #2 + eors r0, r1 + strb r0, [r4, #0x14] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + b _0802BF3A +_0802BF1E: + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0802BF3A + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0x90 + lsls r0, r0, #1 + strh r0, [r4, #0x24] +_0802BF3A: + pop {r4, pc} + + thumb_func_start sub_0802BF3C +sub_0802BF3C: @ 0x0802BF3C + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802BF76 + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0802C020 + strb r0, [r4, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + ldrb r1, [r4, #0x14] + cmp r0, r1 + beq _0802BF76 + strb r0, [r4, #0x14] + adds r1, r0, #4 + adds r0, r4, #0 + bl sub_08004260 +_0802BF76: + pop {r4, pc} + + thumb_func_start sub_0802BF78 +sub_0802BF78: @ 0x0802BF78 + push {lr} + movs r2, #1 + strb r2, [r0, #0xc] + adds r3, r0, #0 + adds r3, #0x3b + movs r1, #4 + strb r1, [r3] + strb r2, [r0, #0x1c] + ldrb r1, [r0, #0x14] + lsls r1, r1, #3 + strb r1, [r0, #0x15] + ldrb r1, [r0, #0x14] + adds r1, #8 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0802BF98 +sub_0802BF98: @ 0x0802BF98 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _0802BFBC + ldr r0, _0802BFB8 @ =gUnk_080CD450 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0802BFCC + .align 2, 0 +_0802BFB8: .4byte gUnk_080CD450 +_0802BFBC: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_0802BFCC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802BFD0 +sub_0802BFD0: @ 0x0802BFD0 + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_0802BFD8 +sub_0802BFD8: @ 0x0802BFD8 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0802BFE0 +sub_0802BFE0: @ 0x0802BFE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0802BFF2 + adds r0, r4, #0 + bl sub_0805E7BC +_0802BFF2: + pop {r4, pc} + + thumb_func_start sub_0802BFF4 +sub_0802BFF4: @ 0x0802BFF4 + push {lr} + adds r3, r0, #0 + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802C01C + adds r0, r3, #0 + bl sub_0805E7BC +_0802C01C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802C020 +sub_0802C020: @ 0x0802C020 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08000E50 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0802C03E + movs r6, #1 + adds r0, r4, #0 + ands r0, r6 + cmp r0, #0 + beq _0802C044 +_0802C03E: + movs r0, #0x18 + ands r0, r4 + b _0802C056 +_0802C044: + adds r0, r5, #0 + bl sub_08049EE4 + lsrs r1, r4, #0x10 + ands r1, r6 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r1, #0x18 + ands r0, r1 +_0802C056: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0802C058 +sub_0802C058: @ 0x0802C058 + push {lr} + movs r2, #2 + strb r2, [r0, #0xc] + strb r1, [r0, #0x15] + lsrs r1, r1, #3 + strb r1, [r0, #0x14] + ldrb r1, [r0, #0x14] + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0802C06C +sub_0802C06C: @ 0x0802C06C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r1, #0x2e + ldrsh r2, [r0, r1] + ldr r3, [r0, #0x48] + movs r1, #0 + ldrsb r1, [r3, r1] + adds r6, r2, r1 + movs r1, #0x32 + ldrsh r2, [r0, r1] + movs r1, #1 + ldrsb r1, [r3, r1] + adds r5, r2, r1 + ldr r3, _0802C0CC @ =gUnk_080CD45C + ldrb r1, [r0, #0x15] + lsrs r1, r1, #2 + adds r2, r1, r3 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + mov sb, r2 + adds r1, #1 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _0802C0D0 @ =gUnk_02027EB4 + cmp r0, #2 + bne _0802C0B2 + ldr r7, _0802C0D4 @ =gUnk_0200D654 +_0802C0B2: + movs r4, #0 +_0802C0B4: + add r6, sb + add r5, r8 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_080AE4CC + cmp r0, #0 + beq _0802C0D8 + movs r0, #0 + b _0802C0E0 + .align 2, 0 +_0802C0CC: .4byte gUnk_080CD45C +_0802C0D0: .4byte gUnk_02027EB4 +_0802C0D4: .4byte gUnk_0200D654 +_0802C0D8: + adds r4, #1 + cmp r4, #7 + bls _0802C0B4 + movs r0, #1 +_0802C0E0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0802C0E8 +sub_0802C0E8: @ 0x0802C0E8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802C0FC + movs r0, #1 + b _0802C178 +_0802C0FC: + ldrb r3, [r5, #0x15] + lsrs r3, r3, #2 + ldr r0, _0802C17C @ =gUnk_080CD45C + adds r3, r3, r0 + movs r0, #0x2e + ldrsh r2, [r5, r0] + ldr r4, [r5, #0x48] + movs r0, #0 + ldrsb r0, [r4, r0] + adds r2, r2, r0 + movs r1, #0 + ldrsb r1, [r3, r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r6, r2, r0 + movs r0, #0x32 + ldrsh r2, [r5, r0] + movs r0, #1 + ldrsb r0, [r4, r0] + adds r2, r2, r0 + movs r1, #1 + ldrsb r1, [r3, r1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r4, r2, r0 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _0802C180 @ =gUnk_02027EB4 + cmp r0, #2 + bne _0802C140 + ldr r7, _0802C184 @ =gUnk_0200D654 +_0802C140: + movs r5, #0 + ldr r1, _0802C188 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r0, r6, r0 + asrs r0, r0, #4 + movs r2, #0x3f + ands r0, r2 + ldrh r1, [r1, #8] + subs r1, r4, r1 + asrs r1, r1, #4 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #9 + bl sub_0806FC24 + cmp r0, #0 + bne _0802C176 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_080AE4CC + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r5, r1, #0x1f +_0802C176: + adds r0, r5, #0 +_0802C178: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0802C17C: .4byte gUnk_080CD45C +_0802C180: .4byte gUnk_02027EB4 +_0802C184: .4byte gUnk_0200D654 +_0802C188: .4byte gUnk_03000BF0 + + thumb_func_start sub_0802C18C +sub_0802C18C: @ 0x0802C18C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x78 + ldrb r1, [r0] + subs r1, #1 + strb r1, [r0] + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0802C1BC + movs r0, #0xf + movs r1, #0x11 + movs r2, #0x40 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0802C1BC + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 +_0802C1BC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802C1C0 +sub_0802C1C0: @ 0x0802C1C0 + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x1e + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_0802C1CC +sub_0802C1CC: @ 0x0802C1CC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0x14] + lsls r4, r4, #2 + ldr r0, _0802C214 @ =gUnk_080CD464 + adds r4, r4, r0 + movs r0, #0x2e + ldrsh r2, [r5, r0] + movs r0, #0 + ldrsb r0, [r4, r0] + adds r2, r2, r0 + movs r0, #0x32 + ldrsh r3, [r5, r0] + movs r0, #1 + ldrsb r0, [r4, r0] + adds r3, r3, r0 + adds r0, r5, #0 + movs r1, #9 + bl sub_08008796 + movs r0, #0x2e + ldrsh r2, [r5, r0] + movs r0, #2 + ldrsb r0, [r4, r0] + adds r2, r2, r0 + movs r0, #0x32 + ldrsh r3, [r5, r0] + movs r0, #3 + ldrsb r0, [r4, r0] + adds r3, r3, r0 + adds r0, r5, #0 + movs r1, #9 + bl sub_08008796 + pop {r4, r5, pc} + .align 2, 0 +_0802C214: .4byte gUnk_080CD464 + + thumb_func_start sub_0802C218 +sub_0802C218: @ 0x0802C218 + movs r1, #6 + strb r1, [r0, #0xc] + movs r1, #0xe0 + strh r1, [r0, #0x24] + movs r1, #0xc0 + lsls r1, r1, #9 + str r1, [r0, #0x20] + bx lr + + thumb_func_start sub_0802C228 +sub_0802C228: @ 0x0802C228 + push {lr} + ldr r1, _0802C234 @ =gUnk_080CD540 + bl sub_0800129E + pop {pc} + .align 2, 0 +_0802C234: .4byte gUnk_080CD540 + + thumb_func_start sub_0802C238 +sub_0802C238: @ 0x0802C238 + push {lr} + ldr r2, _0802C24C @ =gUnk_080CD558 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802C24C: .4byte gUnk_080CD558 + + thumb_func_start sub_0802C250 +sub_0802C250: @ 0x0802C250 + bx lr + .align 2, 0 + + thumb_func_start sub_0802C254 +sub_0802C254: @ 0x0802C254 + bx lr + .align 2, 0 + + thumb_func_start sub_0802C258 +sub_0802C258: @ 0x0802C258 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #2 + strb r0, [r4, #0xe] + bl sub_08000E50 + adds r2, r0, #0 + movs r0, #0x70 + ands r2, r0 + adds r3, r4, #0 + adds r3, #0x7a + movs r1, #0 + strh r2, [r3] + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0802C288 + cmp r0, #2 + beq _0802C290 + b _0802C29C +_0802C288: + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r0, #0 + b _0802C296 +_0802C290: + movs r5, #0x80 + lsls r5, r5, #2 + adds r1, r5, #0 +_0802C296: + adds r0, r2, #0 + orrs r0, r1 + strh r0, [r3] +_0802C29C: + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x80 + movs r2, #0 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x82 + strh r0, [r1] + ldr r0, _0802C310 @ =0x0000FFF0 + strh r0, [r4, #0x36] + subs r1, #0x4a + movs r0, #3 + strb r0, [r1] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x7c + strh r2, [r0] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0802C314 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x7e + strh r1, [r0] + adds r0, r4, #0 + bl sub_0802C62C + adds r0, r4, #0 + bl sub_0802C4B0 + pop {r4, r5, pc} + .align 2, 0 +_0802C310: .4byte 0x0000FFF0 +_0802C314: .4byte gUnk_03000BF0 + + thumb_func_start sub_0802C318 +sub_0802C318: @ 0x0802C318 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x7a + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802C330 + movs r0, #2 + strb r0, [r2, #0xc] +_0802C330: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0802C334 +sub_0802C334: @ 0x0802C334 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x7c + ldrh r0, [r3] + cmp r0, #0 + bne _0802C36A + ldr r0, _0802C3C4 @ =gUnk_03000BF0 + ldrh r1, [r0, #8] + ldr r2, _0802C3C8 @ =gLinkEntity + cmp r2, #0 + bne _0802C34E + b _0802C4AA +_0802C34E: + movs r5, #0x32 + ldrsh r0, [r2, r5] + subs r0, r0, r1 + cmp r0, #0x38 + bhi _0802C35A + b _0802C4AA +_0802C35A: + movs r0, #1 + strh r0, [r3] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_0802C36A: + adds r0, r4, #0 + bl sub_08004274 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0802C3C4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x7e + strh r1, [r0] + adds r0, #6 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bne _0802C3CC + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_08004488 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0xc + strh r0, [r1] + adds r0, r4, #0 + bl sub_0802C4B0 + b _0802C48C + .align 2, 0 +_0802C3C4: .4byte gUnk_03000BF0 +_0802C3C8: .4byte gLinkEntity +_0802C3CC: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r1, [r0] + adds r7, r0, #0 + cmp r1, #0 + beq _0802C442 + subs r0, r1, #1 + strh r0, [r7] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _0802C3EA + cmp r0, #8 + beq _0802C3F4 + b _0802C442 +_0802C3EA: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + b _0802C442 +_0802C3F4: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0802C442 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0802C442 + movs r6, #0 + movs r5, #1 +_0802C408: + adds r0, r4, #0 + movs r1, #0x15 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0802C420 + ldrh r0, [r2, #0x2e] + adds r0, #0xc + subs r0, r0, r6 + strh r0, [r2, #0x2e] +_0802C420: + adds r6, #0x18 + subs r5, #1 + cmp r5, #0 + bge _0802C408 + adds r0, r4, #0 + bl sub_0802C62C + bl sub_08000E50 + movs r1, #0xff + ands r0, r1 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r7] + b _0802C4AA +_0802C442: + ldr r0, _0802C45C @ =gUnk_03000BF0 + ldrh r1, [r0, #8] + ldrh r0, [r0, #0x20] + adds r1, r1, r0 + movs r5, #0x32 + ldrsh r0, [r4, r5] + subs r5, r1, r0 + cmp r5, #4 + ble _0802C460 + adds r0, r4, #0 + bl sub_080AEFB4 + b _0802C48C + .align 2, 0 +_0802C45C: .4byte gUnk_03000BF0 +_0802C460: + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x36 + ldrsh r0, [r4, r1] + subs r0, r0, r5 + cmp r0, #0x38 + ble _0802C48C + adds r0, r4, #0 + bl sub_0802C62C + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strh r0, [r7] + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _0802C48C + strb r0, [r4, #0xc] +_0802C48C: + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xb + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08016A04 +_0802C4AA: + pop {r4, r5, r6, r7, pc} + + thumb_func_start nullsub_148 +nullsub_148: @ 0x0802C4AC + bx lr + .align 2, 0 + + thumb_func_start sub_0802C4B0 +sub_0802C4B0: @ 0x0802C4B0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, #0x7e + ldrh r0, [r0] + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r0, #0 + ldr r0, _0802C4D8 @ =0x000001AB + cmp r1, r0 + blo _0802C4E4 + adds r0, #4 + cmp r1, r0 + bls _0802C4DC + adds r0, #0x15 + cmp r1, r0 + beq _0802C4E0 + b _0802C4E4 + .align 2, 0 +_0802C4D8: .4byte 0x000001AB +_0802C4DC: + movs r6, #8 + b _0802C4E6 +_0802C4E0: + movs r6, #4 + b _0802C4E6 +_0802C4E4: + movs r6, #0 +_0802C4E6: + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #7 + ands r4, r0 + movs r0, #4 + ands r0, r4 + cmp r0, #0 + beq _0802C518 + movs r0, #3 + ands r4, r0 + cmp r4, #0 + beq _0802C50C + ldr r0, _0802C508 @ =gUnk_080CD568 + movs r1, #2 + orrs r1, r6 + b _0802C532 + .align 2, 0 +_0802C508: .4byte gUnk_080CD568 +_0802C50C: + ldr r0, _0802C514 @ =gUnk_080CD568 + lsls r1, r6, #1 + b _0802C534 + .align 2, 0 +_0802C514: .4byte gUnk_080CD568 +_0802C518: + movs r2, #3 + ands r4, r2 + cmp r4, #0 + beq _0802C52C + ldr r0, _0802C528 @ =gUnk_080CD568 + movs r1, #1 + orrs r1, r6 + b _0802C532 + .align 2, 0 +_0802C528: .4byte gUnk_080CD568 +_0802C52C: + ldr r0, _0802C570 @ =gUnk_080CD568 + adds r1, r6, #0 + orrs r1, r2 +_0802C532: + lsls r1, r1, #1 +_0802C534: + adds r1, r1, r0 + ldrh r0, [r1] + strh r0, [r5, #0x24] + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #7 + ands r4, r0 + movs r0, #4 + ands r0, r4 + cmp r0, #0 + beq _0802C584 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0802C55E + movs r0, #0 + strb r0, [r5, #0xe] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 +_0802C55E: + movs r0, #3 + ands r4, r0 + cmp r4, #0 + beq _0802C578 + ldr r0, _0802C574 @ =gUnk_080CD580 + movs r1, #1 + orrs r1, r6 + b _0802C5B2 + .align 2, 0 +_0802C570: .4byte gUnk_080CD568 +_0802C574: .4byte gUnk_080CD580 +_0802C578: + ldr r0, _0802C580 @ =gUnk_080CD580 + adds r0, r6, r0 + ldrb r0, [r0] + b _0802C5B6 + .align 2, 0 +_0802C580: .4byte gUnk_080CD580 +_0802C584: + ldrb r0, [r5, #0xe] + cmp r0, #1 + beq _0802C596 + movs r0, #1 + strb r0, [r5, #0xe] + adds r0, r5, #0 + movs r1, #1 + bl sub_08004260 +_0802C596: + movs r2, #3 + ands r4, r2 + cmp r4, #0 + beq _0802C5AC + ldr r0, _0802C5A8 @ =gUnk_080CD580 + movs r1, #2 + orrs r1, r6 + b _0802C5B2 + .align 2, 0 +_0802C5A8: .4byte gUnk_080CD580 +_0802C5AC: + ldr r0, _0802C5E4 @ =gUnk_080CD580 + adds r1, r6, #0 + orrs r1, r2 +_0802C5B2: + adds r1, r1, r0 + ldrb r0, [r1] +_0802C5B6: + strb r0, [r5, #0x15] + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #7 + ands r4, r0 + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r5, #0x20] + movs r0, #4 + ands r0, r4 + cmp r0, #0 + beq _0802C5FC + movs r0, #3 + ands r4, r0 + cmp r4, #0 + beq _0802C5EC + adds r2, r5, #0 + adds r2, #0x84 + ldr r1, _0802C5E8 @ =gUnk_080CD58C + movs r0, #1 + orrs r6, r0 + b _0802C61A + .align 2, 0 +_0802C5E4: .4byte gUnk_080CD580 +_0802C5E8: .4byte gUnk_080CD58C +_0802C5EC: + adds r2, r5, #0 + adds r2, #0x84 + ldr r1, _0802C5F8 @ =gUnk_080CD58C + orrs r6, r0 + b _0802C61A + .align 2, 0 +_0802C5F8: .4byte gUnk_080CD58C +_0802C5FC: + movs r0, #3 + ands r4, r0 + cmp r4, #0 + beq _0802C614 + adds r2, r5, #0 + adds r2, #0x84 + ldr r1, _0802C610 @ =gUnk_080CD58C + movs r0, #2 + orrs r6, r0 + b _0802C61A + .align 2, 0 +_0802C610: .4byte gUnk_080CD58C +_0802C614: + adds r2, r5, #0 + adds r2, #0x84 + ldr r1, _0802C628 @ =gUnk_080CD58C +_0802C61A: + lsls r0, r6, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + str r0, [r2] + pop {r4, r5, r6, pc} + .align 2, 0 +_0802C628: .4byte gUnk_080CD58C + + thumb_func_start sub_0802C62C +sub_0802C62C: @ 0x0802C62C + adds r3, r0, #0 + movs r2, #0 + movs r0, #1 + strb r0, [r3, #0xc] + adds r0, r3, #0 + adds r0, #0x82 + ldrh r0, [r0] + strh r0, [r3, #0x32] + adds r0, r3, #0 + adds r0, #0x80 + ldrh r0, [r0] + strh r0, [r3, #0x2e] + ldrb r1, [r3, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3, #0x18] + ldrb r1, [r3, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #0x10] + adds r0, r3, #0 + adds r0, #0x7c + strh r2, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_0802C660 +sub_0802C660: @ 0x0802C660 + push {lr} + ldr r1, _0802C66C @ =gUnk_080CD5D4 + bl sub_0800129E + pop {pc} + .align 2, 0 +_0802C66C: .4byte gUnk_080CD5D4 + + thumb_func_start sub_0802C670 +sub_0802C670: @ 0x0802C670 + push {lr} + ldr r2, _0802C684 @ =gUnk_080CD5EC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802C684: .4byte gUnk_080CD5EC + + thumb_func_start sub_0802C688 +sub_0802C688: @ 0x0802C688 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802C69A + b _0802C79E +_0802C69A: + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x16 + bhi _0802C740 + lsls r0, r0, #2 + ldr r1, _0802C6AC @ =_0802C6B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802C6AC: .4byte _0802C6B0 +_0802C6B0: @ jump table + .4byte _0802C70C @ case 0 + .4byte _0802C70C @ case 1 + .4byte _0802C740 @ case 2 + .4byte _0802C740 @ case 3 + .4byte _0802C740 @ case 4 + .4byte _0802C740 @ case 5 + .4byte _0802C740 @ case 6 + .4byte _0802C740 @ case 7 + .4byte _0802C740 @ case 8 + .4byte _0802C740 @ case 9 + .4byte _0802C740 @ case 10 + .4byte _0802C740 @ case 11 + .4byte _0802C740 @ case 12 + .4byte _0802C740 @ case 13 + .4byte _0802C72C @ case 14 + .4byte _0802C740 @ case 15 + .4byte _0802C740 @ case 16 + .4byte _0802C740 @ case 17 + .4byte _0802C740 @ case 18 + .4byte _0802C740 @ case 19 + .4byte _0802C72C @ case 20 + .4byte _0802C72C @ case 21 + .4byte _0802C72C @ case 22 +_0802C70C: + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + beq _0802C7A6 + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + ldr r0, _0802C728 @ =gLinkEntity + adds r0, #0x42 + movs r1, #4 + strb r1, [r0] + b _0802C7A6 + .align 2, 0 +_0802C728: .4byte gLinkEntity +_0802C72C: + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x42 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0802CBC4 + b _0802C7A6 +_0802C740: + adds r2, r4, #0 + adds r2, #0x82 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0x1c + strb r0, [r1] + ldrb r0, [r2] + cmp r0, #1 + beq _0802C75E + cmp r0, #2 + beq _0802C770 + b _0802C79E +_0802C75E: + adds r0, r4, #0 + bl sub_0802CB68 + ldr r0, _0802C76C @ =0x0000014D + bl sub_08004488 + b _0802C79E + .align 2, 0 +_0802C76C: .4byte 0x0000014D +_0802C770: + movs r0, #3 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x6e + strb r0, [r1] + movs r1, #1 + strb r1, [r4, #0xf] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x81 + strb r1, [r0] + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + movs r0, #6 + orrs r1, r0 + adds r0, r4, #0 + bl sub_08004260 +_0802C79E: + ldr r1, _0802C7A8 @ =gUnk_080CD5D4 + adds r0, r4, #0 + bl sub_0804AA30 +_0802C7A6: + pop {r4, pc} + .align 2, 0 +_0802C7A8: .4byte gUnk_080CD5D4 + + thumb_func_start sub_0802C7AC +sub_0802C7AC: @ 0x0802C7AC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bhi _0802C7F6 + adds r0, r4, #0 + bl sub_0806F520 + adds r1, r0, #0 + cmp r1, #0 + bne _0802C7F6 + strb r1, [r4, #0xd] + movs r0, #1 + strb r0, [r4, #0xf] + strh r1, [r4, #0x36] + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #2 + beq _0802C7E2 + movs r1, #0x80 + cmp r0, #0 + beq _0802C7E0 + movs r0, #0x80 + lsls r0, r0, #2 + adds r1, r0, #0 +_0802C7E0: + strh r1, [r4, #0x24] +_0802C7E2: + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x83 + movs r1, #0 + strb r1, [r0] + subs r0, #2 + strb r1, [r0] + b _0802C816 +_0802C7F6: + ldr r0, _0802C818 @ =0x0000FFFF + strh r0, [r4, #0x36] + ldr r1, _0802C81C @ =gUnk_080CD600 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802C816 + adds r0, r4, #0 + bl sub_08004274 +_0802C816: + pop {r4, pc} + .align 2, 0 +_0802C818: .4byte 0x0000FFFF +_0802C81C: .4byte gUnk_080CD600 + + thumb_func_start sub_0802C820 +sub_0802C820: @ 0x0802C820 + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0802C82C +sub_0802C82C: @ 0x0802C82C + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0802C834 +sub_0802C834: @ 0x0802C834 + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_0802C83C +sub_0802C83C: @ 0x0802C83C + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + cmp r0, #0 + beq _0802C88C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802C884 + movs r0, #3 + strb r0, [r4, #0xc] + ldr r0, _0802C86C @ =gLinkEntity + ldrb r0, [r0, #0x14] + movs r1, #6 + ands r1, r0 + cmp r1, #2 + beq _0802C870 + cmp r1, #6 + beq _0802C876 + b _0802C87C + .align 2, 0 +_0802C86C: .4byte gLinkEntity +_0802C870: + ldrh r0, [r4, #0x2e] + subs r0, #6 + b _0802C87A +_0802C876: + ldrh r0, [r4, #0x2e] + adds r0, #6 +_0802C87A: + strh r0, [r4, #0x2e] +_0802C87C: + adds r0, r4, #0 + bl sub_0802CBC4 + b _0802C8B2 +_0802C884: + adds r0, r4, #0 + bl sub_0802CC18 + b _0802C8A2 +_0802C88C: + movs r0, #2 + strb r0, [r1] + movs r0, #0x78 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + movs r0, #6 + orrs r1, r0 + adds r0, r4, #0 + bl sub_08004260 +_0802C8A2: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x6e + strb r0, [r1] +_0802C8B2: + pop {r4, pc} + + thumb_func_start nullsub_149 +nullsub_149: @ 0x0802C8B4 + bx lr + .align 2, 0 + + thumb_func_start sub_0802C8B8 +sub_0802C8B8: @ 0x0802C8B8 + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + bl sub_0802CBC4 + pop {pc} + + thumb_func_start sub_0802C8C4 +sub_0802C8C4: @ 0x0802C8C4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A7D4 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + pop {r4, pc} + + thumb_func_start sub_0802C8D8 +sub_0802C8D8: @ 0x0802C8D8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0x3c + strb r0, [r5, #0xe] + strb r4, [r5, #0xf] + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #0x15] + strb r4, [r5, #0x16] + movs r0, #0x12 + strb r0, [r5, #0x1c] + adds r0, r5, #0 + adds r0, #0x82 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + subs r0, #3 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + ldrb r1, [r5, #0x15] + lsrs r1, r1, #4 + adds r0, r5, #0 + bl sub_08004260 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802C91C +sub_0802C91C: @ 0x0802C91C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + beq _0802C97A + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0802C950 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + movs r0, #2 + orrs r1, r0 + adds r0, r4, #0 + bl sub_08004260 +_0802C950: + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0802C964 + adds r0, r4, #0 + bl sub_0802CBC4 + b _0802C9B4 +_0802C964: + movs r0, #0xf + ands r1, r0 + cmp r1, #8 + bne _0802C972 + adds r0, r4, #0 + bl sub_080A29FC +_0802C972: + adds r0, r4, #0 + bl sub_0802CC18 + b _0802C9B4 +_0802C97A: + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0802C992 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_0802C992: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802C9B4 + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x15] + adds r1, #8 + movs r0, #0x1c + ands r1, r0 + strb r1, [r4, #0x15] + lsrs r1, r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_0802C9B4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802C9B8 +sub_0802C9B8: @ 0x0802C9B8 + push {lr} + ldr r2, _0802C9CC @ =gUnk_080CD618 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802C9CC: .4byte gUnk_080CD618 + + thumb_func_start sub_0802C9D0 +sub_0802C9D0: @ 0x0802C9D0 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + strb r2, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x83 + strb r2, [r0] + adds r0, r4, #0 + bl sub_0802CC18 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + movs r0, #6 + orrs r1, r0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_0802CA10 +sub_0802CA10: @ 0x0802CA10 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0802CA30 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #5 + beq _0802CA42 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802CA34 + adds r0, r4, #0 + bl sub_0802CBC4 + b _0802CA66 + .align 2, 0 +_0802CA30: .4byte gUnk_03003F80 +_0802CA34: + adds r0, r4, #0 + bl sub_0802CC18 + adds r0, r4, #0 + bl sub_08004274 + b _0802CA66 +_0802CA42: + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #2 + strb r0, [r1] + ldr r0, _0802CA68 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsls r0, r0, #2 + movs r1, #4 + orrs r0, r1 + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0802CC18 + adds r0, r4, #0 + bl sub_08004274 +_0802CA66: + pop {r4, pc} + .align 2, 0 +_0802CA68: .4byte gLinkEntity + + thumb_func_start sub_0802CA6C +sub_0802CA6C: @ 0x0802CA6C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802CA84 + adds r0, r4, #0 + bl sub_0802CBC4 + b _0802CA90 +_0802CA84: + adds r0, r4, #0 + bl sub_0802CC18 + adds r0, r4, #0 + bl sub_08004274 +_0802CA90: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802CA94 +sub_0802CA94: @ 0x0802CA94 + push {lr} + adds r3, r0, #0 + movs r2, #0 + movs r0, #3 + strb r0, [r3, #0xc] + ldrb r1, [r3, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #0x10] + movs r0, #1 + strb r0, [r3, #0xf] + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + ldrb r1, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r3, #0x20] + movs r0, #0 + strh r2, [r3, #0x24] + adds r1, r3, #0 + adds r1, #0x83 + strb r0, [r1] + subs r1, #2 + strb r0, [r1] + ldr r0, _0802CAF4 @ =gLinkEntity + ldrb r1, [r0, #0x14] + lsls r1, r1, #2 + movs r0, #4 + orrs r1, r0 + movs r0, #0x1c + ands r1, r0 + strb r1, [r3, #0x15] + lsrs r1, r1, #4 + movs r0, #6 + orrs r1, r0 + adds r0, r3, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 +_0802CAF4: .4byte gLinkEntity + + thumb_func_start sub_0802CAF8 +sub_0802CAF8: @ 0x0802CAF8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802CB10 + adds r0, r4, #0 + bl sub_0802CBC4 + b _0802CB62 +_0802CB10: + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0802CB30 + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bne _0802CB30 + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 +_0802CB30: + adds r0, r4, #0 + bl sub_0802CC18 + adds r0, r4, #0 + bl sub_08078930 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0802CB5C + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0802CB5C + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r1, r0 + strb r1, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x6e + strb r0, [r1] +_0802CB5C: + adds r0, r4, #0 + bl sub_08004274 +_0802CB62: + pop {r4, pc} + + thumb_func_start nullsub_150 +nullsub_150: @ 0x0802CB64 + bx lr + .align 2, 0 + + thumb_func_start sub_0802CB68 +sub_0802CB68: @ 0x0802CB68 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + bl sub_08000E50 + adds r2, r0, #0 + movs r0, #0x18 + ands r2, r0 + movs r0, #4 + orrs r2, r0 + orrs r2, r4 + strb r2, [r5, #0x15] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r0, r5, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + beq _0802CBB2 + movs r0, #0xc8 + strb r0, [r5, #0xe] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + lsrs r1, r2, #4 + movs r0, #2 + orrs r1, r0 + adds r0, r5, #0 + bl sub_08004260 + b _0802CBC2 +_0802CBB2: + movs r0, #0x3c + strb r0, [r5, #0xe] + movs r0, #0x80 + strh r0, [r5, #0x24] + lsrs r1, r2, #4 + adds r0, r5, #0 + bl sub_08004260 +_0802CBC2: + pop {r4, r5, pc} + + thumb_func_start sub_0802CBC4 +sub_0802CBC4: @ 0x0802CBC4 + push {r4, lr} + adds r4, r0, #0 + movs r2, #0 + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #8 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x45 + strb r2, [r0] + adds r0, #0x3e + ldrb r0, [r0] + cmp r0, #0 + beq _0802CBF0 + bl sub_08079184 +_0802CBF0: + adds r0, r4, #0 + bl sub_08078954 + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r2, r0, #0 + cmp r2, #0 + beq _0802CC14 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] +_0802CC14: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802CC18 +sub_0802CC18: @ 0x0802CC18 + push {lr} + adds r1, r0, #0 + adds r1, #0x80 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802CC34 + movs r0, #0x1c + strb r0, [r1] + ldr r0, _0802CC38 @ =0x0000014D + bl sub_08004488 +_0802CC34: + pop {pc} + .align 2, 0 +_0802CC38: .4byte 0x0000014D + + thumb_func_start sub_0802CC3C +sub_0802CC3C: @ 0x0802CC3C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0802CC64 @ =gUnk_080CD6FC + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_0802CC64: .4byte gUnk_080CD6FC + + thumb_func_start sub_0802CC68 +sub_0802CC68: @ 0x0802CC68 + push {lr} + ldr r2, _0802CC7C @ =gUnk_080CD714 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802CC7C: .4byte gUnk_080CD714 + + thumb_func_start sub_0802CC80 +sub_0802CC80: @ 0x0802CC80 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r5, #0x7f + adds r1, r5, #0 + ands r1, r0 + cmp r1, #0 + blt _0802CCB8 + cmp r1, #1 + ble _0802CC9A + cmp r1, #0x1e + bne _0802CCB8 +_0802CC9A: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + ldr r2, _0802CCD4 @ =gLinkEntity + ldrb r1, [r2, #0x10] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #0x10] +_0802CCB8: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802CCCA + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802CCCA: + ldr r1, _0802CCD8 @ =gUnk_080CD6FC + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_0802CCD4: .4byte gLinkEntity +_0802CCD8: .4byte gUnk_080CD6FC + + thumb_func_start nullsub_151 +nullsub_151: @ 0x0802CCDC + bx lr + .align 2, 0 + + thumb_func_start sub_0802CCE0 +sub_0802CCE0: @ 0x0802CCE0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r5, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + bl sub_08000E50 + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xff + strb r0, [r4, #0x14] + ldr r0, _0802CD50 @ =0x0000FFFE + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + bl sub_08000E50 + adds r1, r4, #0 + adds r1, #0x7a + strb r0, [r1] + lsrs r0, r0, #8 + movs r1, #0x60 + ands r0, r1 + adds r1, r4, #0 + adds r1, #0x7b + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7c + strh r5, [r0] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0802CF64 + adds r0, r4, #0 + bl sub_0802CFD8 + pop {r4, r5, pc} + .align 2, 0 +_0802CD50: .4byte 0x0000FFFE + + thumb_func_start sub_0802CD54 +sub_0802CD54: @ 0x0802CD54 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r0, r5, #0 + bl sub_0802CFD8 + adds r1, r5, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0 + beq _0802CD76 + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802CDC8 +_0802CD76: + adds r0, r5, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802CDC8 + adds r6, r5, #0 + adds r6, #0x7b + ldrb r0, [r6] + cmp r0, #0 + bne _0802CDC4 + movs r0, #2 + strb r0, [r5, #0xc] + bl sub_08000E50 + adds r4, r0, #0 + lsrs r0, r4, #0x10 + strb r0, [r5, #0xe] + movs r0, #0xc0 + strh r0, [r5, #0x24] + bl sub_08000E50 + ldr r2, _0802CDC0 @ =gUnk_080CD728 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + adds r0, r5, #0 + adds r0, #0x78 + strh r1, [r0] + lsrs r4, r4, #0x18 + movs r0, #0x60 + ands r4, r0 + strb r4, [r6] + b _0802CDE4 + .align 2, 0 +_0802CDC0: .4byte gUnk_080CD728 +_0802CDC4: + subs r0, #1 + strb r0, [r6] +_0802CDC8: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802CDDE + movs r0, #0x3c + strb r0, [r5, #0xe] + adds r0, r5, #0 + bl sub_0802CF64 +_0802CDDE: + adds r0, r5, #0 + bl sub_0806F69C +_0802CDE4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802CDE8 +sub_0802CDE8: @ 0x0802CDE8 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0802CE3C + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802CE3C + ldrb r1, [r4, #0xe] + adds r0, r1, #1 + strb r0, [r4, #0xe] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0802CE2E + ldr r0, _0802CE38 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + adds r0, r4, #0 + bl sub_0802CF8C +_0802CE2E: + adds r0, r4, #0 + bl sub_0806F69C + b _0802CE58 + .align 2, 0 +_0802CE38: .4byte gUnk_020000B0 +_0802CE3C: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x60 + strh r0, [r4, #0x24] + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #0x96 + adds r1, r4, #0 + adds r1, #0x7c + strh r0, [r1] +_0802CE58: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0802CFD8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802CE68 +sub_0802CE68: @ 0x0802CE68 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _0802CED4 @ =gUnk_03003F80 + ldrb r1, [r2, #0xa] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0xa] + ldrb r1, [r2, #0x1a] + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r5, _0802CED8 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + bne _0802CEAC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C +_0802CEAC: + adds r0, r4, #0 + bl sub_0802CFD8 + adds r0, r4, #0 + bl sub_08004274 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _0802CEDC + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _0802CEF0 + .align 2, 0 +_0802CED4: .4byte gUnk_03003F80 +_0802CED8: .4byte gLinkEntity +_0802CEDC: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0802CEF0 + strb r2, [r3] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #0x18] +_0802CEF0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802CEF4 +sub_0802CEF4: @ 0x0802CEF4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802CFD8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802CF28 + bl sub_0805E5A8 + ldr r1, _0802CF20 @ =gUnk_0813AB1C + ldr r0, _0802CF24 @ =gUnk_02033A90 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_08080840 + b _0802CF5A + .align 2, 0 +_0802CF20: .4byte gUnk_0813AB1C +_0802CF24: .4byte gUnk_02033A90 +_0802CF28: + ldr r0, [r4, #0x34] + ldr r1, _0802CF5C @ =0xFFFE0000 + adds r0, r0, r1 + str r0, [r4, #0x34] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x30 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0802CF4A + ldrb r0, [r4, #0x18] + movs r1, #0x31 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x10 + orrs r1, r0 + strb r1, [r4, #0x18] +_0802CF4A: + ldr r1, _0802CF60 @ =gUnk_03003F80 + ldrb r0, [r1, #0xa] + movs r2, #0x80 + orrs r0, r2 + strb r0, [r1, #0xa] + ldrb r0, [r1, #0x1a] + orrs r0, r2 + strb r0, [r1, #0x1a] +_0802CF5A: + pop {r4, pc} + .align 2, 0 +_0802CF5C: .4byte 0xFFFE0000 +_0802CF60: .4byte gUnk_03003F80 + + thumb_func_start sub_0802CF64 +sub_0802CF64: @ 0x0802CF64 + push {r4, lr} + adds r4, r0, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _0802CF76 + bl sub_08000E50 + b _0802CF7E +_0802CF76: + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #2 +_0802CF7E: + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0802CF8C + pop {r4, pc} + + thumb_func_start sub_0802CF8C +sub_0802CF8C: @ 0x0802CF8C + push {r4, lr} + adds r3, r0, #0 + ldrb r1, [r3, #0x15] + adds r2, r1, #2 + movs r0, #0x1c + ands r2, r0 + ldrb r4, [r3, #0x14] + lsls r0, r4, #2 + subs r0, r2, r0 + adds r0, #6 + cmp r0, #0xc + bls _0802CFA8 + lsrs r0, r2, #2 + b _0802CFB8 +_0802CFA8: + adds r0, r1, #1 + movs r1, #7 + ands r0, r1 + cmp r0, #2 + ble _0802CFD0 + lsrs r0, r2, #2 + cmp r0, r4 + beq _0802CFD0 +_0802CFB8: + strb r0, [r3, #0x14] + lsrs r0, r2, #3 + lsls r0, r0, #2 + ldr r1, _0802CFD4 @ =gUnk_080CD730 + adds r2, r0, r1 + ldrh r1, [r2] + adds r0, r3, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r1, [r2, #2] + adds r0, #2 + strh r1, [r0] +_0802CFD0: + pop {r4, pc} + .align 2, 0 +_0802CFD4: .4byte gUnk_080CD730 + + thumb_func_start sub_0802CFD8 +sub_0802CFD8: @ 0x0802CFD8 + push {lr} + mov ip, r0 + ldr r2, _0802D014 @ =gUnk_080CD740 + mov r3, ip + adds r3, #0x7a + ldrb r0, [r3] + adds r1, r0, #1 + strb r1, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + mov r0, ip + adds r0, #0x74 + movs r3, #0 + ldrsh r1, [r0, r3] + adds r1, r1, r2 + movs r0, #0x80 + lsls r0, r0, #1 + adds r2, r2, r0 + mov r0, ip + adds r0, #0x76 + ldrh r3, [r0] + mov r0, ip + bl sub_0805EC9C + pop {pc} + .align 2, 0 +_0802D014: .4byte gUnk_080CD740 + + thumb_func_start sub_0802D018 +sub_0802D018: @ 0x0802D018 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0802D030 @ =gUnk_080CD748 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0802D030: .4byte gUnk_080CD748 + + thumb_func_start sub_0802D034 +sub_0802D034: @ 0x0802D034 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08078B48 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0802D0F4 + cmp r0, #1 + bgt _0802D04C + cmp r0, #0 + beq _0802D104 + b _0802D148 +_0802D04C: + cmp r0, #2 + bne _0802D148 + ldrb r1, [r4, #0xb] + cmp r1, #0 + bne _0802D090 + movs r0, #1 + strb r0, [r4, #0xb] + strb r1, [r4, #0xe] + movs r0, #0x3c + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x74 + movs r0, #0x10 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x75 + strb r1, [r0] + ldr r1, _0802D088 @ =gUnk_03000F50 + ldrb r2, [r2] + adds r0, r1, #0 + adds r0, #0x68 + strh r2, [r0] + adds r1, #0x66 + ldr r0, _0802D08C @ =0x00001442 + strh r0, [r1] + movs r0, #0xf6 + bl sub_080A3268 + b _0802D148 + .align 2, 0 +_0802D088: .4byte gUnk_03000F50 +_0802D08C: .4byte 0x00001442 +_0802D090: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0802D0D2 + adds r3, r4, #0 + adds r3, #0x75 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + ldr r2, _0802D0EC @ =gUnk_03000F50 + ldrb r1, [r1] + ldrb r0, [r3] + lsls r0, r0, #8 + orrs r1, r0 + adds r2, #0x68 + strh r1, [r2] + movs r0, #0x80 + lsls r0, r0, #5 + cmp r1, r0 + bne _0802D0D2 + ldr r0, _0802D0F0 @ =gLinkEntity + bl sub_0807AABC + bl sub_0805E780 +_0802D0D2: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0802D148 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D148 + movs r0, #0xf7 + bl sub_080A3268 + b _0802D148 + .align 2, 0 +_0802D0EC: .4byte gUnk_03000F50 +_0802D0F0: .4byte gLinkEntity +_0802D0F4: + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_0804A7D4 + b _0802D148 +_0802D104: + ldr r5, _0802D14C @ =gUnk_03003F80 + movs r0, #1 + strb r0, [r5, #0x14] + ldr r1, _0802D150 @ =gLinkEntity + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x3f + ands r2, r0 + adds r0, r4, #0 + bl sub_0806FC80 + cmp r0, #0 + beq _0802D128 + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xfa + strb r0, [r1] +_0802D128: + ldr r1, _0802D154 @ =gUnk_080CD75C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0802E518 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + bl sub_0802E7E4 +_0802D148: + pop {r4, r5, pc} + .align 2, 0 +_0802D14C: .4byte gUnk_03003F80 +_0802D150: .4byte gLinkEntity +_0802D154: .4byte gUnk_080CD75C + + thumb_func_start sub_0802D158 +sub_0802D158: @ 0x0802D158 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + ldr r0, _0802D16C @ =gUnk_02034490 + strb r1, [r0] + movs r0, #7 + movs r1, #8 + bl sub_08050054 + pop {pc} + .align 2, 0 +_0802D16C: .4byte gUnk_02034490 + + thumb_func_start sub_0802D170 +sub_0802D170: @ 0x0802D170 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _0802D1F0 @ =gUnk_03000FD0 + ldrb r3, [r0] + cmp r3, #0 + bne _0802D216 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bne _0802D1FC + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + movs r1, #0x10 + strb r1, [r0, #1] + ldr r0, [r4] + strb r1, [r0, #0x19] + ldr r0, [r4] + movs r1, #0x40 + movs r2, #2 + bl sub_0802EB08 + cmp r0, #0 + bne _0802D216 + ldr r0, [r4] + bl sub_0802EA88 + cmp r0, #0 + bne _0802D216 + movs r0, #2 + strb r0, [r5, #0xc] + ldr r2, _0802D1F4 @ =gLinkEntity + ldr r4, _0802D1F8 @ =gUnk_03000BF0 + ldrh r0, [r4, #6] + adds r0, #0x98 + movs r1, #0 + strh r0, [r2, #0x2e] + ldrh r0, [r4, #8] + adds r0, #0xd8 + strh r0, [r2, #0x32] + strb r1, [r2, #0x14] + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r6, #0x32 + ldrsh r1, [r2, r6] + ldrh r2, [r4, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #2 + bl sub_0807BA8C + str r5, [r4, #0x30] + movs r0, #6 + movs r1, #8 + bl sub_08050054 + b _0802D216 + .align 2, 0 +_0802D1F0: .4byte gUnk_03000FD0 +_0802D1F4: .4byte gLinkEntity +_0802D1F8: .4byte gUnk_03000BF0 +_0802D1FC: + movs r0, #3 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x80 + strb r3, [r0] + adds r2, r5, #0 + adds r2, #0x84 + ldr r0, [r2] + ldr r1, [r0, #0x50] + movs r0, #0x18 + strb r0, [r1, #0xe] + ldr r0, [r2] + strb r3, [r0, #0x19] +_0802D216: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0802D218 +sub_0802D218: @ 0x0802D218 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x84 + ldr r0, [r5] + movs r1, #0x40 + movs r2, #2 + bl sub_0802EB08 + adds r1, r0, #0 + cmp r1, #0 + bne _0802D254 + movs r0, #4 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + strb r1, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x7c + movs r0, #0xb4 + strh r0, [r2] + ldr r0, [r5] + ldr r1, [r0, #0x50] + movs r0, #0xc + strb r0, [r1, #0xe] + ldrh r3, [r2] + adds r0, r4, #0 + movs r1, #0x67 + movs r2, #2 + bl sub_080A2988 +_0802D254: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802D258 +sub_0802D258: @ 0x0802D258 + push {r4, r5, lr} + adds r5, r0, #0 + adds r1, r5, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0 + bne _0802D276 + adds r0, r5, #0 + bl sub_0802E1D0 + ldrb r0, [r5, #0xb] + cmp r0, #5 + bne _0802D288 + strb r0, [r5, #0xc] + b _0802D334 +_0802D276: + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802D288 + adds r0, r5, #0 + movs r1, #0x4e + bl sub_08004260 +_0802D288: + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _0802D2B4 + ldr r1, _0802D2B0 @ =gUnk_080CD774 + ldrb r0, [r5, #0xf] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0xe] + ldrb r0, [r5, #0xf] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0x15] + ldrb r1, [r5, #0xf] + movs r0, #0x3f + ands r0, r1 + adds r0, #2 + strb r0, [r5, #0xf] + b _0802D2B8 + .align 2, 0 +_0802D2B0: .4byte gUnk_080CD774 +_0802D2B4: + subs r0, #1 + strb r0, [r5, #0xe] +_0802D2B8: + ldrb r0, [r5, #0x15] + cmp r0, #1 + bhi _0802D2D0 + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x40 + bl sub_0802EA48 + b _0802D2E4 +_0802D2D0: + adds r4, r5, #0 + adds r4, #0x84 + cmp r0, #0xff + beq _0802D2E4 + ldr r0, [r4] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x40 + bl sub_0802EA68 +_0802D2E4: + ldr r5, _0802D338 @ =gUnk_030010A0 + ldr r0, [r5] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0802D2F8 + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 +_0802D2F8: + ldr r0, [r5] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0802D32E + bl sub_08000E50 + movs r1, #5 + ands r1, r0 + ldr r0, [r4] + lsls r1, r1, #2 + adds r0, #0x3c + adds r0, r0, r1 + ldr r0, [r0] + movs r1, #0x48 + movs r2, #0 + bl CreateFX + cmp r0, #0 + beq _0802D32E + adds r2, r0, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0802D32E: + ldr r0, [r4] + bl sub_0802E768 +_0802D334: + pop {r4, r5, pc} + .align 2, 0 +_0802D338: .4byte gUnk_030010A0 + + thumb_func_start sub_0802D33C +sub_0802D33C: @ 0x0802D33C + push {r4, r5, r6, r7, lr} + adds r0, #0x84 + ldr r6, [r0] + movs r4, #0 + adds r7, r6, #0 + adds r7, #0x3c + adds r5, r7, #0 +_0802D34A: + ldm r5!, {r0} + bl sub_0805E7BC + adds r4, #1 + cmp r4, #3 + bls _0802D34A + lsls r1, r4, #2 + adds r1, r7, r1 + ldr r0, [r1] + adds r0, #0x45 + movs r3, #0 + strb r3, [r0] + ldr r1, [r1] + adds r1, #0x6d + ldrb r2, [r1] + movs r0, #1 + orrs r0, r2 + strb r0, [r1] + ldr r0, [r6, #0x50] + adds r0, #0x45 + strb r3, [r0] + ldr r0, [r6, #0x50] + strb r3, [r0, #0xb] + ldr r3, [r6, #0x50] + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #2 + rsbs r0, r0, #0 + ands r1, r0 + subs r0, #2 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + bl sub_0805E780 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0802D394 +sub_0802D394: @ 0x0802D394 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0802D3B4 @ =gUnk_080CD7B8 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + pop {r4, pc} + .align 2, 0 +_0802D3B4: .4byte gUnk_080CD7B8 + + thumb_func_start sub_0802D3B8 +sub_0802D3B8: @ 0x0802D3B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _0802D3DE + ldr r2, _0802D3F4 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0802D3F8 @ =0x0000FDFF + ands r0, r1 + strh r0, [r2] + ldr r0, _0802D3FC @ =gLinkEntity + bl sub_0807AABC + bl sub_0805E780 +_0802D3DE: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #6 + bls _0802D3EA + b _0802D63C +_0802D3EA: + lsls r0, r0, #2 + ldr r1, _0802D400 @ =_0802D404 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802D3F4: .4byte gUnk_03000F50 +_0802D3F8: .4byte 0x0000FDFF +_0802D3FC: .4byte gLinkEntity +_0802D400: .4byte _0802D404 +_0802D404: @ jump table + .4byte _0802D420 @ case 0 + .4byte _0802D544 @ case 1 + .4byte _0802D58C @ case 2 + .4byte _0802D5A8 @ case 3 + .4byte _0802D5EC @ case 4 + .4byte _0802D5F6 @ case 5 + .4byte _0802D61A @ case 6 +_0802D420: + movs r2, #0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x75 + strb r2, [r0] + adds r0, #0xb + strb r2, [r0] + subs r0, #7 + strb r2, [r0] + movs r0, #0x96 + str r0, [r4, #0x7c] + adds r0, r4, #0 + bl sub_0802EB9C + movs r0, #0x54 + bl sub_0801D8E0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] + adds r5, r0, #0 + adds r7, r1, #0 + cmp r5, #0 + bne _0802D470 + adds r0, r4, #0 + bl sub_0804A7D4 + bl sub_0805E780 +_0802D470: + ldr r0, [r7] + str r0, [r4, #0x64] + movs r6, #0 + movs r0, #0 + mov r8, r0 +_0802D47A: + movs r0, #0x24 + movs r1, #1 + bl sub_0804AA60 + str r0, [r4, #0x54] + adds r3, r6, #1 + cmp r0, #0 + beq _0802D4D6 + strb r3, [r0, #0xb] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + adds r1, #0x38 + strb r0, [r1] + ldr r1, [r4, #0x54] + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r4, #0x54] + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + ldrh r2, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x32] + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + adds r0, #0x84 + ldr r1, [r7] + str r1, [r0] + lsls r2, r6, #2 + adds r0, r5, #0 + adds r0, #0x3c + adds r0, r0, r2 + ldr r1, [r4, #0x54] + str r1, [r0] + adds r2, r5, r2 + movs r0, #0x10 + strb r0, [r2, #1] + mov r0, r8 + strb r0, [r2, #0x19] + adds r0, r5, #0 + adds r0, #0x35 + mov r1, r8 + strb r1, [r0] +_0802D4D6: + adds r6, r3, #0 + cmp r6, #4 + bls _0802D47A + movs r0, #0x24 + movs r1, #2 + bl sub_0804AA60 + adds r2, r0, #0 + str r2, [r4, #0x54] + cmp r2, #0 + beq _0802D52E + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r1, [r4, #0x54] + ldrh r0, [r4, #0x2e] + movs r3, #0 + strh r0, [r1, #0x2e] + ldr r2, [r4, #0x54] + adds r1, r6, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + adds r0, #0x84 + ldr r1, [r7] + str r1, [r0] + ldr r0, [r4, #0x54] + str r0, [r5, #0x50] + movs r0, #0x10 + strb r0, [r5, #0x15] + adds r0, r5, #0 + adds r0, #0x2d + strb r3, [r0] + adds r0, #8 + strb r3, [r0] +_0802D52E: + ldr r0, _0802D540 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0x4c + bl sub_08004260 + b _0802D63C + .align 2, 0 +_0802D540: .4byte gUnk_03003F80 +_0802D544: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0802D55C + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r0, [r2] + orrs r1, r0 + strb r1, [r2] +_0802D55C: + ldr r1, _0802D588 @ =gUnk_080CD7C4 + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + adds r3, r4, #0 + adds r3, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #0 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0x24 + bl sub_08004260 + b _0802D63C + .align 2, 0 +_0802D588: .4byte gUnk_080CD7C4 +_0802D58C: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + movs r0, #0 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0802D63C +_0802D5A8: + ldr r0, _0802D5E8 @ =gUnk_080CD884 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x74 + movs r2, #0 + strb r1, [r0] + adds r0, #1 + strb r2, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r2, #0x12 + ldrb r1, [r2] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + movs r1, #0x4f + bl sub_08004260 + b _0802D63C + .align 2, 0 +_0802D5E8: .4byte gUnk_080CD884 +_0802D5EC: + adds r0, r4, #0 + movs r1, #0x2c + bl sub_080042AC + b _0802D63C +_0802D5F6: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + movs r1, #0x2d + bl sub_080042AC + b _0802D63C +_0802D61A: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_08004260 +_0802D63C: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0802D648 + adds r0, r4, #0 + bl sub_0802D86C +_0802D648: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802D650 +sub_0802D650: @ 0x0802D650 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0802D670 @ =gUnk_080CD7E4 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r4, #0x84 + ldr r0, [r4] + bl sub_0802E7E4 + pop {r4, pc} + .align 2, 0 +_0802D670: .4byte gUnk_080CD7E4 + + thumb_func_start sub_0802D674 +sub_0802D674: @ 0x0802D674 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _0802D6B4 @ =gUnk_02034490 + movs r7, #1 + strb r7, [r0] + ldr r5, _0802D6B8 @ =gLinkEntity + ldr r6, [r5, #0x34] + cmp r6, #0 + bne _0802D6EC + ldr r0, [r4, #0x7c] + cmp r0, #0x96 + bne _0802D692 + ldr r0, _0802D6BC @ =0x00000127 + bl sub_080A3268 +_0802D692: + ldr r0, [r4, #0x7c] + subs r1, r0, #1 + str r1, [r4, #0x7c] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _0802D6C4 + strb r7, [r4, #0xd] + movs r0, #0x5a + str r0, [r4, #0x7c] + ldr r0, _0802D6C0 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + ldr r0, _0802D6BC @ =0x00000127 + bl sub_080A3268 + b _0802D6EC + .align 2, 0 +_0802D6B4: .4byte gUnk_02034490 +_0802D6B8: .4byte gLinkEntity +_0802D6BC: .4byte 0x00000127 +_0802D6C0: .4byte gUnk_03000BF0 +_0802D6C4: + cmp r1, #0x3c + bhi _0802D6DC + cmp r1, #0x3c + bne _0802D6D8 + movs r2, #0x18 + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_080A2CFC +_0802D6D8: + strb r6, [r5, #0x14] + b _0802D6EC +_0802D6DC: + cmp r1, #0x59 + bhi _0802D6E4 + movs r0, #2 + b _0802D6EA +_0802D6E4: + cmp r1, #0x77 + bhi _0802D6EC + movs r0, #6 +_0802D6EA: + strb r0, [r5, #0x14] +_0802D6EC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802D6F0 +sub_0802D6F0: @ 0x0802D6F0 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x7c] + subs r0, #1 + str r0, [r2, #0x7c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0802D712 + movs r0, #2 + strb r0, [r2, #0xd] + movs r0, #0x5a + str r0, [r2, #0x7c] + movs r0, #0x96 + movs r1, #0 + bl sub_08080964 +_0802D712: + pop {pc} + + thumb_func_start sub_0802D714 +sub_0802D714: @ 0x0802D714 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x7c] + subs r0, #1 + str r0, [r4, #0x7c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0802D77A + adds r0, r4, #0 + adds r0, #0x84 + ldr r5, [r0] + movs r1, #0 + movs r3, #0 + movs r2, #0x10 + adds r0, r5, #0 +_0802D734: + strh r3, [r0, #0x18] + strb r2, [r0, #1] + adds r0, #4 + adds r1, #1 + cmp r1, #5 + bls _0802D734 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xd] + strb r1, [r4, #0xb] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0x4d + bl sub_08004260 + movs r0, #0x24 + movs r1, #5 + bl sub_0804AA60 + str r0, [r4, #0x54] + cmp r0, #0 + beq _0802D774 + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + str r0, [r5, #0x38] + adds r0, #0x84 + str r5, [r0] +_0802D774: + ldr r1, [r5, #0x50] + movs r0, #0x18 + strb r0, [r1, #0xe] +_0802D77A: + pop {r4, r5, pc} + + thumb_func_start sub_0802D77C +sub_0802D77C: @ 0x0802D77C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0802D7B0 @ =gUnk_030010A0 + ldr r4, [r0] + movs r0, #1 + ands r4, r0 + cmp r4, #0 + bne _0802D7AC + adds r0, r5, #0 + bl sub_0802E430 + ldrb r0, [r5, #0xb] + cmp r0, #2 + bne _0802D7AC + strb r4, [r5, #0xf] + strb r4, [r5, #0xe] + movs r0, #4 + strb r0, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, [r0, #0x50] + movs r0, #0xc + strb r0, [r1, #0xe] +_0802D7AC: + pop {r4, r5, pc} + .align 2, 0 +_0802D7B0: .4byte gUnk_030010A0 + + thumb_func_start sub_0802D7B4 +sub_0802D7B4: @ 0x0802D7B4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + adds r3, r0, #0 + cmp r3, #0 + bne _0802D82C + ldr r4, _0802D7FC @ =gUnk_080CD7F8 + ldrb r2, [r5, #0xf] + adds r0, r2, r4 + ldrb r1, [r0] + adds r0, r1, #0 + cmp r0, #0xff + bne _0802D810 + strb r3, [r5, #0xf] + strb r3, [r5, #0xe] + movs r2, #1 + strb r2, [r5, #0xc] + strb r3, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, [r0, #0x50] + movs r0, #0x18 + strb r0, [r1, #0xe] + ldr r1, _0802D800 @ =gUnk_03000BF0 + ldr r0, _0802D804 @ =gLinkEntity + str r0, [r1, #0x30] + ldr r0, _0802D808 @ =gUnk_03003F80 + adds r0, #0x8b + strb r2, [r0] + ldr r0, _0802D80C @ =gUnk_02034490 + strb r3, [r0] + movs r0, #0x2e + bl sub_080A3268 + b _0802D868 + .align 2, 0 +_0802D7FC: .4byte gUnk_080CD7F8 +_0802D800: .4byte gUnk_03000BF0 +_0802D804: .4byte gLinkEntity +_0802D808: .4byte gUnk_03003F80 +_0802D80C: .4byte gUnk_02034490 +_0802D810: + strb r1, [r5, #0xe] + adds r0, r2, #1 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r5, #0x15] + ldrb r0, [r5, #0xf] + adds r0, #2 + strb r0, [r5, #0xf] + ldr r0, _0802D828 @ =0x00000127 + bl sub_080A3268 + b _0802D830 + .align 2, 0 +_0802D828: .4byte 0x00000127 +_0802D82C: + subs r0, #1 + strb r0, [r5, #0xe] +_0802D830: + ldrb r0, [r5, #0x15] + cmp r0, #1 + bhi _0802D848 + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x40 + bl sub_0802EA48 + b _0802D85C +_0802D848: + adds r4, r5, #0 + adds r4, #0x84 + cmp r0, #0xff + beq _0802D85C + ldr r0, [r4] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x40 + bl sub_0802EA68 +_0802D85C: + ldr r0, [r4] + bl sub_0802E768 + adds r0, r5, #0 + bl sub_0802E518 +_0802D868: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802D86C +sub_0802D86C: @ 0x0802D86C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #6 + bls _0802D878 + b _0802DB7E +_0802D878: + lsls r0, r0, #2 + ldr r1, _0802D884 @ =_0802D888 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0802D884: .4byte _0802D888 +_0802D888: @ jump table + .4byte _0802DB64 @ case 0 + .4byte _0802D8A4 @ case 1 + .4byte _0802D8CE @ case 2 + .4byte _0802DA54 @ case 3 + .4byte _0802D94C @ case 4 + .4byte _0802D9A2 @ case 5 + .4byte _0802D9F8 @ case 6 +_0802D8A4: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0802D8CE + ldr r0, [r4, #0x50] + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0802D8BE + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _0802D8C6 +_0802D8BE: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + b _0802D8CC +_0802D8C6: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 +_0802D8CC: + strb r0, [r4, #0x10] +_0802D8CE: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0802D8DE + b _0802DB7E +_0802D8DE: + ldr r0, [r4, #0x50] + adds r0, #0x3d + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x3d + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802D918 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0802D906 + adds r0, r4, #0 + bl sub_0801D230 + adds r0, r4, #0 + movs r1, #0xc9 + bl sub_0801D040 + b _0802D918 +_0802D906: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0801D230 + adds r0, r4, #0 + movs r1, #0xca + bl sub_0801D040 +_0802D918: + ldr r0, [r4, #0x50] + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0802D924 + b _0802DB7E +_0802D924: + ldr r1, _0802D944 @ =gLinkEntity + adds r0, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_080041A0 + cmp r0, #0 + bne _0802D936 + b _0802DB7E +_0802D936: + ldr r0, _0802D948 @ =gUnk_03003F80 + movs r1, #1 + strb r1, [r0, #0x14] + adds r0, #0x3f + movs r1, #0xfc + strb r1, [r0] + b _0802DB7E + .align 2, 0 +_0802D944: .4byte gLinkEntity +_0802D948: .4byte gUnk_03003F80 +_0802D94C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + bne _0802D95E + adds r0, r4, #0 + bl sub_080042B8 + b _0802DB7E +_0802D95E: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + adds r2, r0, #0 + cmp r2, #0 + beq _0802D970 + b _0802DB7E +_0802D970: + ldr r0, [r4, #0x50] + adds r0, #0x7b + movs r1, #1 + strb r1, [r0] + strb r2, [r4, #0xe] +_0802D97A: + ldrb r3, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x67 + movs r2, #0 + bl sub_080A2988 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _0802D97A + movs r0, #0xa8 + lsls r0, r0, #1 + bl sub_080A3268 +_0802D99C: + bl sub_0805E780 + b _0802DB7E +_0802D9A2: + ldr r0, _0802D9F4 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0802D9B8 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #2 + bne _0802D9B8 + b _0802DB7E +_0802D9B8: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802D9CE + b _0802DB7E +_0802D9CE: + movs r0, #0x24 + movs r1, #6 + bl sub_0804AA60 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0802D99C + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + adds r2, r4, #0 + adds r2, #0x84 + ldr r1, [r2] + ldr r0, [r4, #0x54] + str r0, [r1, #0x38] + adds r0, #0x84 + ldr r1, [r2] + str r1, [r0] + b _0802D99C + .align 2, 0 +_0802D9F4: .4byte gUnk_030010A0 +_0802D9F8: + ldr r0, _0802DA50 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0802DA0E + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #2 + bne _0802DA0E + b _0802DB7E +_0802DA0E: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802DA24 + b _0802DB7E +_0802DA24: + movs r0, #0x24 + movs r1, #3 + bl sub_0804AA60 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0802D99C + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + adds r1, r4, #0 + adds r1, #0x84 + ldr r0, [r1] + ldrb r0, [r0, #1] + strb r0, [r4, #0xe] + ldr r2, [r1] + ldr r0, [r4, #0x54] + str r0, [r2, #0x38] + adds r0, #0x84 + ldr r1, [r1] + str r1, [r0] + b _0802D99C + .align 2, 0 +_0802DA50: .4byte gUnk_030010A0 +_0802DA54: + adds r0, r4, #0 + adds r0, #0x74 + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + beq _0802DA96 + subs r0, r1, #1 + strb r0, [r6] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802DA96 + adds r5, r4, #0 + adds r5, #0x75 + ldrb r0, [r5] + adds r0, #2 + strb r0, [r5] + ldr r7, _0802DAD4 @ =gUnk_080CD884 + ldrb r0, [r5] + adds r0, r0, r7 + ldrb r0, [r0] + strb r0, [r6] + cmp r0, #0 + beq _0802DA96 + adds r0, r4, #0 + bl sub_0801D230 + ldrb r0, [r5] + adds r0, #1 + adds r0, r0, r7 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_0801D040 +_0802DA96: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802DAD8 + ldrb r2, [r6] + cmp r2, #0 + bne _0802DAD8 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x1d + bne _0802DB20 + movs r0, #0xc0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldr r1, [r4, #0x50] + movs r0, #4 + strb r0, [r1, #0xd] + ldr r0, [r4, #0x50] + strb r2, [r0, #0xb] + ldr r0, [r4, #0x50] + adds r0, #0x7b + strb r2, [r0] + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_080A3268 + b _0802DB20 + .align 2, 0 +_0802DAD4: .4byte gUnk_080CD884 +_0802DAD8: + adds r0, r4, #0 + adds r0, #0x84 + ldr r2, [r0] + ldrb r1, [r4, #0xe] + adds r3, r0, #0 + ldrb r0, [r2, #1] + cmp r1, r0 + beq _0802DB20 + adds r0, r1, #0 + ldrb r1, [r2, #1] + subs r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0x10 + ble _0802DB08 + ldrb r0, [r4, #0x1e] + adds r0, #1 + strb r0, [r4, #0x1e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x30 + bls _0802DB1A + movs r0, #0x28 + b _0802DB18 +_0802DB08: + ldrb r0, [r4, #0x1e] + subs r0, #1 + strb r0, [r4, #0x1e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x27 + bhi _0802DB1A + movs r0, #0x30 +_0802DB18: + strb r0, [r4, #0x1e] +_0802DB1A: + ldr r0, [r3] + ldrb r0, [r0, #1] + strb r0, [r4, #0xe] +_0802DB20: + ldr r0, [r4, #0x20] + cmp r0, #0 + ble _0802DB7E + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bgt _0802DB7E + movs r0, #0x24 + movs r1, #4 + bl sub_0804AA60 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0802DB7E + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + adds r2, r4, #0 + adds r2, #0x84 + ldr r1, [r2] + ldr r0, [r4, #0x54] + str r0, [r1, #0x38] + adds r0, #0x84 + ldr r1, [r2] + str r1, [r0] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 + b _0802D99C +_0802DB64: + ldr r1, _0802DB80 @ =gUnk_080CD810 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + bl sub_0802E7E4 +_0802DB7E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0802DB80: .4byte gUnk_080CD810 + + thumb_func_start sub_0802DB84 +sub_0802DB84: @ 0x0802DB84 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _0802DBB0 @ =gLinkEntity + bl sub_080045C4 + strb r0, [r5, #0x15] + adds r1, r5, #0 + adds r1, #0x84 + ldr r2, [r1] + ldrb r1, [r2, #1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _0802DBB4 + movs r0, #1 + strb r0, [r5, #0xd] + adds r1, r5, #0 + adds r1, #0x78 + movs r0, #0 + strb r0, [r1] + b _0802DC1A + .align 2, 0 +_0802DBB0: .4byte gLinkEntity +_0802DBB4: + ldrb r0, [r2, #1] + ldrb r1, [r5, #0x15] + subs r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0x10 + ble _0802DBCE + movs r3, #0 + ldrb r1, [r5, #0xe] + movs r0, #0xfe + ands r0, r1 + strb r0, [r5, #0xe] + b _0802DBD2 +_0802DBCE: + movs r3, #1 + strb r3, [r5, #0xe] +_0802DBD2: + adds r0, r5, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #1 + beq _0802DBF0 + cmp r0, #1 + bgt _0802DBE6 + cmp r0, #0 + beq _0802DBEC + b _0802DBF8 +_0802DBE6: + cmp r0, #2 + beq _0802DBF4 + b _0802DBF8 +_0802DBEC: + movs r0, #0x30 + b _0802DBF6 +_0802DBF0: + movs r0, #0x40 + b _0802DBF6 +_0802DBF4: + movs r0, #0x50 +_0802DBF6: + strh r0, [r5, #0x24] +_0802DBF8: + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + movs r1, #0x24 + ldrsh r2, [r5, r1] + movs r1, #5 + bl sub_0802EA48 + ldr r0, [r4] + bl sub_0802E768 + adds r0, r5, #0 + bl sub_0802E518 + adds r0, r5, #0 + bl sub_0802EBC4 +_0802DC1A: + pop {r4, r5, pc} + + thumb_func_start sub_0802DC1C +sub_0802DC1C: @ 0x0802DC1C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r1, _0802DC40 @ =gLinkEntity + bl sub_080045C4 + adds r3, r0, #0 + adds r1, r5, #0 + adds r1, #0x84 + ldr r0, [r1] + ldrb r0, [r0, #1] + subs r3, r0, r3 + movs r0, #0x1f + ands r3, r0 + cmp r3, #0x10 + bls _0802DC44 + cmp r3, #0x1d + bhi _0802DC54 + b _0802DC48 + .align 2, 0 +_0802DC40: .4byte gLinkEntity +_0802DC44: + cmp r3, #2 + bls _0802DC54 +_0802DC48: + movs r0, #0 + strb r0, [r5, #0xd] + ldr r1, [r1] + ldr r1, [r1, #0x50] + strb r0, [r1, #0xe] + b _0802DCDE +_0802DC54: + adds r0, r5, #0 + adds r0, #0x78 + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + beq _0802DC6A + subs r0, r1, #1 + strb r0, [r6] + adds r4, r5, #0 + adds r4, #0x84 + b _0802DCC6 +_0802DC6A: + ldrb r0, [r5, #0xe] + movs r3, #0 + cmp r0, #1 + bne _0802DC74 + movs r3, #1 +_0802DC74: + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + movs r1, #5 + movs r2, #0x20 + bl sub_0802EA48 + ldr r1, [r4] + ldrh r0, [r1] + ldrh r1, [r1, #0x14] + movs r2, #4 + bl sub_0802EA18 + cmp r0, #0 + beq _0802DCC6 + ldrb r0, [r5, #0xe] + cmp r0, #1 + bne _0802DCAC + ldr r2, [r4] + ldrb r0, [r2, #1] + subs r0, #4 + movs r1, #0x1f + ands r0, r1 + lsls r0, r0, #8 + movs r1, #0xff + orrs r0, r1 + strh r0, [r2, #0x14] + b _0802DCBA +_0802DCAC: + ldr r0, [r4] + ldrb r1, [r0, #1] + adds r1, #4 + movs r2, #0x1f + ands r1, r2 + lsls r1, r1, #8 + strh r1, [r0, #0x14] +_0802DCBA: + ldrb r0, [r5, #0xe] + movs r1, #1 + eors r0, r1 + strb r0, [r5, #0xe] + movs r0, #0xc + strb r0, [r6] +_0802DCC6: + adds r0, r5, #0 + bl sub_0802E9B0 + ldr r0, [r4] + bl sub_0802E768 + adds r0, r5, #0 + bl sub_0802E518 + adds r0, r5, #0 + bl sub_0802EBC4 +_0802DCDE: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0802DCE0 +sub_0802DCE0: @ 0x0802DCE0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x84 + ldr r0, [r5] + ldr r1, [r0, #0x50] + ldrb r0, [r1, #0xe] + cmp r0, #0xc + beq _0802DD44 + ldr r1, _0802DD1C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + ldr r2, [r5] + ldrb r1, [r2, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _0802DD20 + ldr r1, [r2, #0x50] + movs r0, #0xc + strb r0, [r1, #0xe] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #4 + strb r0, [r1] + movs r0, #0 + strb r0, [r4, #0xf] + b _0802DDD0 + .align 2, 0 +_0802DD1C: .4byte gLinkEntity +_0802DD20: + ldrb r0, [r2, #0x15] + ldrb r1, [r4, #0x15] + subs r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + movs r3, #1 + cmp r0, #0x10 + ble _0802DD32 + movs r3, #0 +_0802DD32: + adds r0, r2, #0 + movs r1, #5 + movs r2, #0x20 + bl sub_0802EA48 + ldr r0, [r5] + bl sub_0802E768 + b _0802DDD0 +_0802DD44: + ldrb r0, [r4, #0xf] + cmp r0, #5 + bhi _0802DD74 + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + cmp r0, #0 + bne _0802DD6E + movs r2, #4 + strb r2, [r1] + ldr r1, [r5] + ldrb r0, [r4, #0xf] + lsls r0, r0, #2 + adds r1, #0x3c + adds r1, r1, r0 + ldr r0, [r1] + strb r2, [r0, #0xf] + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + b _0802DDD0 +_0802DD6E: + subs r0, #1 + strb r0, [r1] + b _0802DDD0 +_0802DD74: + ldrb r6, [r1, #0xf] + cmp r6, #0 + bne _0802DDD0 + adds r0, r4, #0 + movs r1, #0xa + movs r2, #0 + bl sub_0804A98C + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0802DDB2 + ldr r0, [r5] + ldrb r0, [r0, #0x15] + strb r0, [r1, #0x15] + ldr r2, [r4, #0x54] + ldr r0, [r5] + ldr r0, [r0, #0x50] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + strb r0, [r2, #0xb] + ldr r1, [r4, #0x54] + ldr r0, [r5] + ldr r0, [r0, #0x50] + str r0, [r1, #0x50] + ldr r1, [r4, #0x54] + ldr r0, [r5] + ldr r0, [r0, #0x3c] + str r0, [r1, #0x54] +_0802DDB2: + ldr r0, [r5] + ldr r0, [r0, #0x50] + strb r6, [r0, #0xe] + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #0 + bne _0802DDC8 + movs r0, #1 + strb r0, [r1] + b _0802DDD0 +_0802DDC8: + strb r6, [r4, #0xd] + adds r0, r4, #0 + bl sub_0802EB9C +_0802DDD0: + adds r0, r4, #0 + bl sub_0802E518 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0802DDD8 +sub_0802DDD8: @ 0x0802DDD8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r0, #0x76 + ldrb r0, [r0] + movs r7, #4 + cmp r0, #0 + beq _0802DE06 + movs r7, #6 + adds r0, r5, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #2 + bne _0802DE06 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + bne _0802DE06 + movs r7, #0xc +_0802DE06: + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0802DE2E + cmp r0, #0 + bge _0802DE12 + b _0802DF9A +_0802DE12: + cmp r0, #2 + ble _0802DE18 + b _0802DF9A +_0802DE18: + adds r6, r5, #0 + adds r6, #0x84 + cmp r0, #1 + beq _0802DEFE + adds r0, r5, #0 + adds r0, #0x76 + ldrb r1, [r0] + mov sb, r0 + cmp r1, #0 + bne _0802DE76 + b _0802DE6C +_0802DE2E: + adds r6, r5, #0 + adds r6, #0x84 + ldr r0, [r6] + bl sub_0802EA88 + cmp r0, #0 + beq _0802DE3E + b _0802DF9A +_0802DE3E: + movs r4, #1 + strb r4, [r5, #0xb] + strb r0, [r5, #0xf] + bl sub_08000E50 + ands r0, r4 + cmp r0, #0 + bne _0802DE58 + strb r0, [r5, #0x15] + ldr r0, [r6] + ldrb r0, [r0, #1] + adds r0, r0, r7 + b _0802DE60 +_0802DE58: + strb r4, [r5, #0x15] + ldr r0, [r6] + ldrb r0, [r0, #1] + subs r0, r0, r7 +_0802DE60: + movs r1, #0x1f + ands r0, r1 + adds r1, r5, #0 + adds r1, #0x7a + strb r0, [r1] + b _0802DF9A +_0802DE6C: + movs r2, #1 + movs r0, #2 + mov r8, r0 + movs r4, #1 + b _0802DE7E +_0802DE76: + movs r2, #2 + movs r1, #6 + mov r8, r1 + movs r4, #0 +_0802DE7E: + adds r1, r5, #0 + adds r1, #0x84 + ldr r0, [r1] + ldr r0, [r0, #0x50] + ldrb r0, [r0, #0xf] + adds r6, r1, #0 + cmp r0, #1 + bne _0802DEC4 + adds r0, r5, #0 + movs r1, #0xa + bl sub_0804A98C + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _0802DEC4 + ldr r0, [r6] + ldrb r0, [r0, #0x15] + strb r0, [r1, #0x15] + ldr r2, [r5, #0x54] + ldr r0, [r6] + ldr r0, [r0, #0x50] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + strb r0, [r2, #0xb] + ldr r1, [r5, #0x54] + ldr r0, [r6] + ldr r0, [r0, #0x50] + str r0, [r1, #0x50] + ldr r1, [r5, #0x54] + ldr r0, [r6] + ldr r0, [r0, #0x3c] + str r0, [r1, #0x54] +_0802DEC4: + adds r1, r5, #0 + adds r1, #0x74 + ldrb r0, [r1] + adds r2, r0, #0 + cmp r2, #0 + bne _0802DEF4 + strb r4, [r1] + ldr r1, [r6] + ldrb r0, [r5, #0xf] + lsls r0, r0, #2 + adds r1, #0x3c + adds r1, r1, r0 + ldr r0, [r1] + mov r1, r8 + strb r1, [r0, #0xf] + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _0802DEF8 + strb r2, [r5, #0xf] + b _0802DEF8 +_0802DEF4: + subs r0, #1 + strb r0, [r1] +_0802DEF8: + ldrb r0, [r5, #0xb] + cmp r0, #1 + bne _0802DF0C +_0802DEFE: + ldr r0, [r6] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x40 + bl sub_0802EA48 + b _0802DF2E +_0802DF0C: + mov r1, sb + ldrb r0, [r1] + cmp r0, #0 + bne _0802DF22 + ldr r0, [r6] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x20 + bl sub_0802EA48 + b _0802DF2E +_0802DF22: + ldr r0, [r6] + ldrb r3, [r5, #0x15] + movs r1, #5 + movs r2, #0x10 + bl sub_0802EA48 +_0802DF2E: + adds r4, r6, #0 + ldr r0, [r4] + bl sub_0802E768 + adds r2, r5, #0 + adds r2, #0x7a + ldr r1, [r4] + ldrb r0, [r2] + ldrb r1, [r1, #0x15] + cmp r0, r1 + bne _0802DF9A + ldrb r0, [r5, #0xb] + cmp r0, #1 + bne _0802DF8A + movs r0, #2 + strb r0, [r5, #0xb] + ldrb r0, [r5, #0x15] + movs r1, #1 + eors r0, r1 + strb r0, [r5, #0x15] + adds r3, r0, #0 + cmp r3, #1 + bne _0802DF6C + lsls r0, r7, #1 + ldrb r1, [r2] + subs r1, r1, r0 + movs r0, #0x1f + ands r1, r0 + strb r1, [r2] + strb r3, [r5, #0xe] + b _0802DF80 +_0802DF6C: + lsls r0, r7, #1 + ldrb r1, [r2] + adds r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, #0xe] + movs r0, #0xfe + ands r0, r1 + strb r0, [r5, #0xe] +_0802DF80: + ldr r0, [r6] + ldr r1, [r0, #0x50] + movs r0, #0xc + strb r0, [r1, #0xe] + b _0802DF9A +_0802DF8A: + movs r0, #0 + strb r0, [r5, #0xd] + ldr r1, [r6] + ldr r1, [r1, #0x50] + strb r0, [r1, #0xe] + adds r0, r5, #0 + bl sub_0802EB9C +_0802DF9A: + adds r0, r5, #0 + bl sub_0802E518 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0802DFA8 +sub_0802DFA8: @ 0x0802DFA8 + push {lr} + ldr r2, _0802DFBC @ =gUnk_080CD828 + ldrb r1, [r0, #0xb] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802DFBC: .4byte gUnk_080CD828 + + thumb_func_start sub_0802DFC0 +sub_0802DFC0: @ 0x0802DFC0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x84 + ldr r2, [r4] + ldrb r0, [r2, #1] + movs r1, #7 + ands r1, r0 + cmp r1, #0 + beq _0802DFF8 + cmp r1, #4 + bls _0802DFDC + movs r0, #0 + b _0802DFDE +_0802DFDC: + movs r0, #1 +_0802DFDE: + strb r0, [r5, #0x15] + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + ldrb r3, [r5, #0x15] + movs r1, #0 + movs r2, #0x20 + bl sub_0802EA48 + ldr r0, [r4] + bl sub_0802EA88 + b _0802E026 +_0802DFF8: + adds r0, r2, #0 + bl sub_0802EA88 + cmp r0, #0 + bne _0802E026 + adds r0, r5, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0 + beq _0802E026 + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + movs r0, #1 + strb r0, [r5, #0xb] + ldr r0, [r4] + ldr r1, [r0, #0x50] + movs r0, #0x18 + strb r0, [r1, #0xe] + ldr r0, _0802E030 @ =0x00000127 + bl sub_080A3268 +_0802E026: + adds r0, r5, #0 + bl sub_0802E518 + pop {r4, r5, pc} + .align 2, 0 +_0802E030: .4byte 0x00000127 + + thumb_func_start sub_0802E034 +sub_0802E034: @ 0x0802E034 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x84 + ldr r5, [r0] + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0802E04A + movs r0, #2 + strb r0, [r4, #0x15] + movs r0, #0 + b _0802E058 +_0802E04A: + movs r0, #3 + strb r0, [r4, #0x15] + ldr r1, _0802E078 @ =gUnk_080CD840 + ldrb r0, [r5, #1] + lsrs r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] +_0802E058: + ldrb r1, [r5, #0x19] + cmp r0, r1 + beq _0802E07C + ldrb r3, [r4, #0x15] + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x40 + bl sub_0802EA68 + adds r0, r5, #0 + movs r1, #0x40 + movs r2, #2 + bl sub_0802EB08 + b _0802E0B0 + .align 2, 0 +_0802E078: .4byte gUnk_080CD840 +_0802E07C: + adds r0, r5, #0 + movs r1, #0x80 + movs r2, #2 + bl sub_0802EB08 + cmp r0, #0 + bne _0802E0B0 + ldrb r0, [r4, #0xb] + cmp r0, #2 + bne _0802E0A6 + adds r1, r4, #0 + adds r1, #0x7c + movs r2, #0 + movs r0, #0xb4 + lsls r0, r0, #1 + strh r0, [r1] + adds r1, #4 + movs r0, #1 + strb r0, [r1] + ldr r0, [r5, #0x50] + strb r2, [r0, #0xe] +_0802E0A6: + ldrb r0, [r4, #0xb] + adds r0, #1 + strb r0, [r4, #0xb] + movs r0, #1 + strb r0, [r5, #0x19] +_0802E0B0: + adds r0, r4, #0 + bl sub_0802E518 + pop {r4, r5, pc} + + thumb_func_start sub_0802E0B8 +sub_0802E0B8: @ 0x0802E0B8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x32] + subs r0, #4 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0800445C + ldrh r0, [r4, #0x32] + adds r0, #4 + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x3f + ands r2, r0 + cmp r2, #0 + beq _0802E0F4 + ldr r1, _0802E128 @ =gLinkEntity + adds r0, r4, #0 + bl sub_0806FC80 + cmp r0, #0 + beq _0802E0F4 + ldr r0, _0802E12C @ =gUnk_03003F80 + movs r1, #1 + strb r1, [r0, #0x14] + adds r0, #0x3f + movs r1, #0xfa + strb r1, [r0] +_0802E0F4: + ldr r0, _0802E130 @ =gUnk_080CD844 + adds r3, r4, #0 + adds r3, #0x79 + ldrb r5, [r3] + movs r6, #0x7f + adds r1, r6, #0 + ands r1, r5 + adds r1, r1, r0 + adds r2, r4, #0 + adds r2, #0x45 + ldrb r0, [r1] + ldrb r1, [r2] + cmp r0, r1 + blo _0802E158 + cmp r5, #1 + bls _0802E134 + movs r0, #0 + strb r0, [r2] + strb r0, [r4, #0xc] + bl sub_08078B48 + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + b _0802E1CA + .align 2, 0 +_0802E128: .4byte gLinkEntity +_0802E12C: .4byte gUnk_03003F80 +_0802E130: .4byte gUnk_080CD844 +_0802E134: + ldrb r1, [r4, #0x10] + adds r0, r6, #0 + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r3] + adds r0, #1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3] + movs r0, #0xff + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0x78 + bls _0802E158 + movs r0, #0x78 + strh r0, [r1] +_0802E158: + adds r0, r4, #0 + adds r0, #0x7c + ldrh r1, [r0] + subs r1, #1 + strh r1, [r0] + lsls r1, r1, #0x10 + ldr r2, _0802E18C @ =0xFFFF0000 + adds r5, r0, #0 + cmp r1, r2 + bne _0802E190 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x62 + movs r0, #0 + strb r0, [r1] + movs r0, #4 + strb r0, [r4, #0xb] + adds r0, r4, #0 + movs r1, #0x4e + bl sub_08004260 + b _0802E1C4 + .align 2, 0 +_0802E18C: .4byte 0xFFFF0000 +_0802E190: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802E1B2 + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _0802E1B2 + ldr r0, _0802E1CC @ =0x00000127 + bl sub_080A3268 +_0802E1B2: + ldrh r0, [r5] + cmp r0, #0x77 + bhi _0802E1C4 + adds r2, r4, #0 + adds r2, #0x62 + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + strb r0, [r2] +_0802E1C4: + adds r0, r4, #0 + bl sub_0802E518 +_0802E1CA: + pop {r4, r5, r6, pc} + .align 2, 0 +_0802E1CC: .4byte 0x00000127 + + thumb_func_start sub_0802E1D0 +sub_0802E1D0: @ 0x0802E1D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + adds r0, #0x84 + ldr r0, [r0] + mov r8, r0 + adds r4, r5, #0 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802E1F6 + adds r0, r5, #0 + bl sub_08004274 +_0802E1F6: + ldrb r0, [r4] + movs r2, #0x3f + ands r2, r0 + cmp r2, #0 + beq _0802E218 + ldr r1, _0802E280 @ =gLinkEntity + adds r0, r5, #0 + bl sub_0806FC80 + cmp r0, #0 + beq _0802E218 + ldr r0, _0802E284 @ =gUnk_03003F80 + movs r1, #1 + strb r1, [r0, #0x14] + adds r0, #0x3f + movs r1, #0xfa + strb r1, [r0] +_0802E218: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0802E2F0 + movs r4, #0 + mov r2, r8 + adds r2, #0x30 + adds r7, r5, #0 + adds r7, #0x7c + ldr r0, _0802E288 @ =gUnk_03000F50 + mov sb, r0 + movs r1, #0x66 + add r1, sb + mov sl, r1 +_0802E23A: + adds r1, r2, r4 + ldrb r0, [r1] + cmp r0, #0 + beq _0802E2EA + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _0802E2F0 + mov r1, r8 + ldr r0, [r1, #0x3c] + movs r1, #0xc + movs r2, #0 + bl CreateFX + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_080A3268 + cmp r4, #5 + bne _0802E2F0 + adds r0, r5, #0 + adds r0, #0x79 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802E28C + movs r0, #0xf0 + strh r0, [r7] + movs r1, #0 + bl sub_08080964 + b _0802E2E4 + .align 2, 0 +_0802E280: .4byte gLinkEntity +_0802E284: .4byte gUnk_03003F80 +_0802E288: .4byte gUnk_03000F50 +_0802E28C: + adds r4, r7, #0 + strh r6, [r4] + movs r0, #0x7c + adds r0, r0, r5 + mov r8, r0 + adds r6, r5, #0 + adds r6, #0x74 + adds r7, r5, #0 + adds r7, #0x75 +_0802E29E: + ldrh r3, [r4] + adds r0, r5, #0 + movs r1, #0x67 + movs r2, #1 + bl sub_080A2988 + ldrh r0, [r4] + adds r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #3 + bls _0802E29E + movs r0, #0 + strb r0, [r6] + movs r0, #0x10 + strb r0, [r7] + movs r0, #0xb + mov r1, r8 + strh r0, [r1] + ldrb r1, [r6] + ldrb r0, [r7] + lsls r0, r0, #8 + orrs r1, r0 + mov r0, sb + adds r0, #0x68 + strh r1, [r0] + movs r0, #0x90 + lsls r0, r0, #2 + mov r1, sl + strh r0, [r1] + movs r0, #0x1e + movs r1, #0 + bl sub_08080964 +_0802E2E4: + movs r0, #5 + strb r0, [r5, #0xb] + b _0802E2F0 +_0802E2EA: + adds r4, #1 + cmp r4, #5 + bls _0802E23A +_0802E2F0: + adds r0, r5, #0 + bl sub_0802E518 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0802E300 +sub_0802E300: @ 0x0802E300 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x79 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0802E31E + adds r1, r4, #0 + adds r1, #0x7c + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + adds r5, r1, #0 + b _0802E35E +_0802E31E: + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + adds r5, r4, #0 + adds r5, #0x7c + cmp r0, #0x10 + beq _0802E35E + ldrh r0, [r5] + cmp r0, #0 + beq _0802E364 + subs r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0802E40C + movs r0, #0xb + strh r0, [r5] + adds r3, r4, #0 + adds r3, #0x75 + ldrb r0, [r3] + subs r0, #1 + strb r0, [r3] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r2, _0802E3A0 @ =gUnk_03000F50 + ldrb r1, [r1] + ldrb r0, [r3] + lsls r0, r0, #8 + orrs r1, r0 + adds r2, #0x68 + strh r1, [r2] +_0802E35E: + ldrh r0, [r5] + cmp r0, #0 + bne _0802E40C +_0802E364: + adds r2, r4, #0 + adds r2, #0x79 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802E3A4 + adds r3, r4, #0 + adds r3, #0x75 + ldrb r0, [r3] + cmp r0, #0x10 + beq _0802E3A4 + movs r0, #0xb + strh r0, [r5] + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + ldr r2, _0802E3A0 @ =gUnk_03000F50 + ldrb r1, [r1] + ldrb r0, [r3] + lsls r0, r0, #8 + orrs r1, r0 + adds r2, #0x68 + strh r1, [r2] + b _0802E428 + .align 2, 0 +_0802E3A0: .4byte gUnk_03000F50 +_0802E3A4: + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x84 + ldr r5, [r0] + ldr r1, _0802E408 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + lsls r0, r0, #3 + movs r2, #0 + adds r6, r4, #0 + adds r6, #0x80 + movs r3, #0 + adds r1, r5, #0 +_0802E3CA: + strh r3, [r1, #0x18] + strb r0, [r1, #1] + adds r1, #4 + adds r2, #1 + cmp r2, #5 + bls _0802E3CA + movs r1, #0 + movs r0, #5 + strb r0, [r4, #0xd] + strb r1, [r4, #0xb] + strb r1, [r6] + adds r0, r4, #0 + movs r1, #0x4d + bl sub_08004260 + movs r0, #0x24 + movs r1, #5 + bl sub_0804AA60 + str r0, [r4, #0x54] + cmp r0, #0 + beq _0802E400 + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + str r0, [r5, #0x38] + adds r0, #0x84 + str r5, [r0] +_0802E400: + ldr r1, [r5, #0x50] + movs r0, #0x18 + strb r0, [r1, #0xe] + b _0802E422 + .align 2, 0 +_0802E408: .4byte gLinkEntity +_0802E40C: + ldr r0, _0802E42C @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0802E422 + adds r0, r4, #0 + movs r1, #0xa + movs r2, #3 + bl sub_0804A98C +_0802E422: + adds r0, r4, #0 + bl sub_0802E518 +_0802E428: + pop {r4, r5, r6, pc} + .align 2, 0 +_0802E42C: .4byte gUnk_030010A0 + + thumb_func_start sub_0802E430 +sub_0802E430: @ 0x0802E430 + push {lr} + ldr r2, _0802E444 @ =gUnk_080CD848 + ldrb r1, [r0, #0xb] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802E444: .4byte gUnk_080CD848 + + thumb_func_start sub_0802E448 +sub_0802E448: @ 0x0802E448 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r0, #0x84 + ldr r6, [r0] + movs r5, #5 +_0802E452: + adds r0, r6, #0 + adds r0, #0x30 + adds r4, r0, r5 + ldrb r0, [r4] + cmp r0, #0 + bne _0802E46E + ldr r0, [r6, #0x3c] + movs r1, #0xc + movs r2, #0 + bl CreateFX + movs r0, #0x7d + bl sub_080A3268 +_0802E46E: + ldrb r0, [r4] + cmp r0, #0xa + beq _0802E48A + adds r0, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bne _0802E490 + cmp r5, #0 + bne _0802E490 + movs r0, #1 + strb r0, [r7, #0xb] + b _0802E490 +_0802E48A: + subs r5, #1 + cmp r5, #0 + bge _0802E452 +_0802E490: + adds r0, r6, #0 + adds r0, #0x2d + ldrb r0, [r0] + cmp r0, #9 + bhi _0802E4A6 + adds r0, r6, #0 + movs r1, #5 + movs r2, #0x40 + movs r3, #3 + bl sub_0802EA68 +_0802E4A6: + adds r0, r7, #0 + bl sub_08004274 + adds r0, r7, #0 + adds r0, #0x84 + ldr r0, [r0] + bl sub_0802E768 + adds r0, r7, #0 + bl sub_0802E518 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802E4C0 +sub_0802E4C0: @ 0x0802E4C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802E510 + ldrb r0, [r4, #0xc] + cmp r0, #2 + beq _0802E50A + adds r0, r4, #0 + adds r0, #0x74 + movs r2, #0 + strb r2, [r0] + adds r1, r4, #0 + adds r1, #0x75 + movs r0, #8 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #0 + beq _0802E502 + adds r0, r4, #0 + adds r0, #0x76 + strb r2, [r0] + adds r1, #2 + movs r0, #3 + strb r0, [r1] +_0802E502: + adds r0, r4, #0 + bl sub_0802EBC4 + b _0802E510 +_0802E50A: + ldrb r0, [r4, #0xb] + adds r0, #1 + strb r0, [r4, #0xb] +_0802E510: + adds r0, r4, #0 + bl sub_0802E518 + pop {r4, pc} + + thumb_func_start sub_0802E518 +sub_0802E518: @ 0x0802E518 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r0, [sp] + adds r0, #0x84 + ldr r0, [r0] + mov sb, r0 + ldr r1, [r0, #0x3c] + ldr r0, [r1, #0x50] + bl sub_0806FA24 + mov r0, sb + ldr r1, [r0, #0x3c] + ldrb r0, [r0, #1] + strb r0, [r1, #0x15] + mov r1, sb + ldrb r6, [r1, #1] + cmp r6, #0x10 + bls _0802E54C + movs r0, #0xf + eors r6, r0 + adds r6, #1 + ands r6, r0 +_0802E54C: + cmp r6, #0x10 + bne _0802E552 + movs r6, #0xf +_0802E552: + mov r2, sb + ldr r1, [r2, #0x3c] + movs r0, #0xf + eors r6, r0 + adds r0, r6, #0 + adds r0, #0x12 + lsls r0, r0, #8 + strh r0, [r1, #0x24] + ldr r0, [r2, #0x3c] + bl sub_0806F69C + movs r6, #0 + movs r0, #0x3c + add r0, sb + mov sl, r0 + mov r1, sb + adds r1, #0x30 + str r1, [sp, #4] + ldr r2, [sp] + adds r2, #0x80 + str r2, [sp, #8] + movs r7, #0x80 + lsls r7, r7, #1 +_0802E580: + lsls r0, r6, #2 + add r0, sl + ldr r0, [r0] + adds r1, r6, #1 + mov r8, r1 + lsls r4, r1, #2 + mov r2, sl + adds r5, r2, r4 + ldr r1, [r5] + bl sub_0806FA24 + add r4, sb + ldrb r0, [r4, #0x19] + lsls r0, r0, #4 + ldr r1, _0802E644 @ =gUnk_080C9160 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + ldr r1, [sp, #4] + adds r6, r1, r6 + ldrb r1, [r6] + lsls r1, r1, #0x18 + asrs r1, r1, #0x10 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + bl sub_0806FA04 + adds r1, r0, #0 + ldrb r0, [r4, #1] + lsls r0, r0, #4 + ldr r2, _0802E644 @ =gUnk_080C9160 + adds r0, r0, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + bl sub_0806FA04 + ldr r2, [r5] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r2, #0x2c] + adds r1, r1, r0 + str r1, [r2, #0x2c] + ldrb r0, [r4, #0x19] + lsls r0, r0, #4 + adds r0, #0x80 + ldr r1, _0802E644 @ =gUnk_080C9160 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + ldrb r1, [r6] + lsls r1, r1, #0x18 + asrs r1, r1, #0x10 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + bl sub_0806FA04 + ldr r2, [r5] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r2, #0x30] + subs r1, r1, r0 + str r1, [r2, #0x30] + mov r6, r8 + cmp r6, #4 + bls _0802E580 + mov r1, sb + ldr r0, [r1, #0x50] + ldrb r1, [r0, #0xe] + adds r2, r0, #0 + cmp r1, #0x18 + bne _0802E662 + mov r1, sb + ldrb r0, [r1, #0x15] + lsrs r0, r0, #3 + lsls r7, r0, #2 + mov r0, sb + adds r0, #0x2d + ldrb r0, [r0] + lsls r1, r0, #0x18 + lsrs r0, r1, #0x18 + cmp r0, #0xc + bls _0802E648 + adds r7, #3 + b _0802E64C + .align 2, 0 +_0802E644: .4byte gUnk_080C9160 +_0802E648: + lsrs r0, r1, #0x1a + adds r7, r7, r0 +_0802E64C: + adds r0, r2, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r7, #0 + adds r1, #0x18 + cmp r0, r1 + beq _0802E6E8 + adds r0, r2, #0 + bl sub_080042AC + b _0802E6E8 +_0802E662: + ldr r2, [sp, #8] + ldrb r0, [r2] + cmp r0, #0 + bne _0802E688 + mov r0, sb + movs r1, #5 + movs r2, #0 + movs r3, #0 + bl sub_0802E7CC + mov r0, sb + ldr r2, [r0, #0x50] + ldrb r1, [r2, #0x14] + lsrs r0, r1, #1 + adds r7, r1, r0 + lsrs r0, r7, #2 + ldrb r2, [r2, #0xe] + adds r7, r0, r2 + b _0802E6CA +_0802E688: + ldr r0, [sp] + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _0802E6C0 + ldr r0, [sp] + adds r0, #0x58 + ldrb r3, [r0] + mov r1, sb + ldrb r0, [r1, #0x15] + lsrs r2, r0, #3 + adds r0, r2, #0 + adds r0, #0x2f + cmp r3, r0 + bne _0802E6BA + ldr r0, [sp] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + adds r7, r3, #0 + cmp r0, #0 + beq _0802E6CA +_0802E6BA: + adds r7, r2, #0 + adds r7, #0x28 + b _0802E6CA +_0802E6C0: + mov r2, sb + ldrb r0, [r2, #0x15] + lsrs r0, r0, #3 + adds r7, r0, #0 + adds r7, #0x2f +_0802E6CA: + mov r0, sb + ldr r1, [r0, #0x50] + adds r0, r1, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r7 + beq _0802E6E2 + adds r0, r1, #0 + adds r1, r7, #0 + bl sub_080042AC + b _0802E6E8 +_0802E6E2: + adds r0, r1, #0 + bl sub_080042B8 +_0802E6E8: + movs r6, #0 +_0802E6EA: + ldr r1, [sp, #8] + ldrb r0, [r1] + cmp r0, #0 + bne _0802E72E + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + mov r0, sb + movs r2, #0 + movs r3, #0 + bl sub_0802E7CC + lsls r5, r6, #2 + mov r2, sl + adds r0, r2, r5 + ldr r0, [r0] + ldrb r1, [r0, #0x14] + lsrs r0, r1, #1 + adds r7, r1, r0 + lsrs r7, r7, #2 + adds r4, r6, #1 + lsls r0, r4, #2 + add r0, sb + ldrb r0, [r0, #0x19] + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r7, r7, r1 + adds r1, r5, #0 + b _0802E73E +_0802E72E: + lsls r1, r6, #2 + mov r2, sb + adds r0, r2, r1 + ldrb r0, [r0, #1] + lsrs r0, r0, #3 + adds r7, r0, #0 + adds r7, #0x48 + adds r4, r6, #1 +_0802E73E: + mov r2, sl + adds r0, r2, r1 + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r7 + beq _0802E756 + adds r0, r1, #0 + adds r1, r7, #0 + bl sub_08004260 +_0802E756: + adds r6, r4, #0 + cmp r6, #4 + bls _0802E6EA + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0802E768 +sub_0802E768: @ 0x0802E768 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r2, #0 + movs r6, #0x1f +_0802E770: + lsls r3, r2, #2 + adds r0, r4, r3 + ldrb r1, [r0, #1] + adds r2, #1 + lsls r0, r2, #2 + adds r0, r4, r0 + ldrb r0, [r0, #1] + subs r0, r1, r0 + ands r0, r6 + adds r5, r2, #0 + cmp r0, #0x10 + ble _0802E790 + cmp r0, #0x1e + bgt _0802E798 + adds r1, #1 + b _0802E796 +_0802E790: + cmp r0, #1 + ble _0802E798 + subs r1, #1 +_0802E796: + ands r1, r6 +_0802E798: + adds r0, r4, r3 + strb r1, [r0, #1] + ldrb r1, [r0, #0x19] + lsls r0, r5, #2 + adds r0, r4, r0 + ldrb r0, [r0, #0x19] + subs r0, r1, r0 + movs r2, #0x1f + ands r0, r2 + cmp r0, #0x10 + ble _0802E7B6 + cmp r0, #0x1d + bgt _0802E7BE + adds r1, #1 + b _0802E7BC +_0802E7B6: + cmp r0, #2 + ble _0802E7BE + subs r1, #1 +_0802E7BC: + ands r1, r2 +_0802E7BE: + adds r0, r4, r3 + strb r1, [r0, #0x19] + adds r2, r5, #0 + cmp r2, #4 + bls _0802E770 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802E7CC +sub_0802E7CC: @ 0x0802E7CC + lsls r1, r1, #0x18 + lsrs r1, r1, #0x16 + adds r2, r0, #0 + adds r2, #0x3c + adds r2, r2, r1 + ldr r3, [r2] + adds r0, r0, r1 + ldrb r0, [r0, #1] + strb r0, [r3, #0x14] + ldr r0, [r2] + ldrb r0, [r0, #0x14] + bx lr + + thumb_func_start sub_0802E7E4 +sub_0802E7E4: @ 0x0802E7E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov ip, r0 + ldr r0, [r0, #0x50] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0802E8D0 + movs r6, #0 + movs r5, #0 + mov r7, ip + adds r7, #0x3c + movs r0, #0x30 + add r0, ip + mov r8, r0 + movs r1, #8 + rsbs r1, r1, #0 + mov sl, r1 + movs r2, #4 + rsbs r2, r2, #0 + mov sb, r2 +_0802E818: + lsls r0, r5, #2 + adds r4, r7, r0 + ldr r3, [r4] + adds r3, #0x29 + movs r1, #7 + ands r1, r6 + ldrb r2, [r3] + mov r0, sl + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r6, #1 + mov r1, r8 + adds r0, r1, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _0802E852 + ldr r3, [r4] + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #2 + rsbs r0, r0, #0 + ands r1, r0 + mov r0, sb + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + b _0802E860 +_0802E852: + ldr r2, [r4] + ldrb r1, [r2, #0x18] + mov r0, sb + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] +_0802E860: + adds r5, #1 + cmp r5, #5 + bls _0802E818 + movs r5, #0 + movs r2, #7 + mov sb, r2 + movs r0, #8 + rsbs r0, r0, #0 + mov r8, r0 +_0802E872: + lsls r1, r5, #2 + mov r2, ip + adds r0, r2, r1 + ldrb r0, [r0, #1] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, #1 + cmp r0, #0x10 + bhi _0802E8BA + adds r0, r7, r1 + ldr r3, [r0] + adds r3, #0x29 + ldrb r4, [r3] + lsls r0, r4, #0x1d + lsrs r6, r0, #0x1d + lsls r2, r5, #2 + adds r2, r7, r2 + ldr r0, [r2] + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + mov r0, r8 + ands r0, r4 + orrs r0, r1 + strb r0, [r3] + ldr r1, [r2] + adds r1, #0x29 + mov r0, sb + ands r6, r0 + ldrb r2, [r1] + mov r0, r8 + ands r0, r2 + orrs r0, r6 + strb r0, [r1] +_0802E8BA: + cmp r5, #4 + bls _0802E872 + mov r1, ip + ldr r0, [r1, #0x38] + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + b _0802E9A4 +_0802E8D0: + movs r6, #5 + movs r5, #0 + mov r7, ip + adds r7, #0x3c + movs r2, #0x30 + add r2, ip + mov r8, r2 + movs r0, #8 + rsbs r0, r0, #0 + mov sl, r0 + movs r1, #4 + rsbs r1, r1, #0 + mov sb, r1 +_0802E8EA: + lsls r0, r5, #2 + adds r4, r7, r0 + ldr r3, [r4] + adds r3, #0x29 + movs r1, #7 + ands r1, r6 + ldrb r2, [r3] + mov r0, sl + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + subs r6, #1 + mov r2, r8 + adds r0, r2, r5 + ldrb r0, [r0] + cmp r0, #0 + bne _0802E924 + ldr r3, [r4] + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #2 + rsbs r0, r0, #0 + ands r1, r0 + mov r0, sb + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + b _0802E932 +_0802E924: + ldr r2, [r4] + ldrb r1, [r2, #0x18] + mov r0, sb + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] +_0802E932: + adds r5, #1 + cmp r5, #5 + bls _0802E8EA + movs r5, #0 + movs r0, #7 + mov sb, r0 + movs r1, #8 + rsbs r1, r1, #0 + mov r8, r1 +_0802E944: + lsls r1, r5, #2 + mov r2, ip + adds r0, r2, r1 + ldrb r0, [r0, #1] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, #1 + cmp r0, #0x10 + bls _0802E98C + adds r0, r7, r1 + ldr r3, [r0] + adds r3, #0x29 + ldrb r4, [r3] + lsls r0, r4, #0x1d + lsrs r6, r0, #0x1d + lsls r2, r5, #2 + adds r2, r7, r2 + ldr r0, [r2] + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + mov r0, r8 + ands r0, r4 + orrs r0, r1 + strb r0, [r3] + ldr r1, [r2] + adds r1, #0x29 + mov r0, sb + ands r6, r0 + ldrb r2, [r1] + mov r0, r8 + ands r0, r2 + orrs r0, r6 + strb r0, [r1] +_0802E98C: + cmp r5, #4 + bls _0802E944 + mov r1, ip + ldr r2, [r1, #0x38] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] +_0802E9A4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802E9B0 +sub_0802E9B0: @ 0x0802E9B0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0802E9D0 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + bl sub_080041DC + lsrs r2, r0, #4 + cmp r2, #0x5f + bgt _0802E9D4 + movs r2, #0xa + b _0802E9EA + .align 2, 0 +_0802E9D0: .4byte gLinkEntity +_0802E9D4: + adds r1, r2, #0 + subs r1, #0x60 + cmp r1, #0 + bge _0802E9DE + adds r1, #3 +_0802E9DE: + asrs r1, r1, #2 + movs r0, #0xa + subs r2, r0, r1 + cmp r2, #3 + bgt _0802E9EA + movs r2, #4 +_0802E9EA: + adds r0, r4, #0 + adds r0, #0x84 + ldr r3, [r0] + adds r0, r3, #0 + adds r0, #0x2d + ldrb r0, [r0] + cmp r2, r0 + beq _0802EA10 + cmp r2, r0 + ble _0802EA04 + ldrh r0, [r3, #0x2c] + adds r0, #0x20 + b _0802EA08 +_0802EA04: + ldrh r0, [r3, #0x2c] + subs r0, #0x20 +_0802EA08: + ldr r2, _0802EA14 @ =0x00001FFF + adds r1, r2, #0 + ands r0, r1 + strh r0, [r3, #0x2c] +_0802EA10: + pop {r4, pc} + .align 2, 0 +_0802EA14: .4byte 0x00001FFF + + thumb_func_start sub_0802EA18 +sub_0802EA18: @ 0x0802EA18 + push {lr} + adds r3, r2, #0 + movs r2, #0x80 + lsls r2, r2, #5 + adds r1, r1, r2 + subs r1, r1, r0 + ldr r0, _0802EA40 @ =0x00001FFF + ands r1, r0 + lsls r3, r3, #8 + subs r2, r2, r3 + cmp r1, r2 + blo _0802EA44 + movs r2, #0x80 + lsls r2, r2, #5 + adds r0, r3, r2 + cmp r1, r0 + bhi _0802EA44 + movs r0, #0 + b _0802EA46 + .align 2, 0 +_0802EA40: .4byte 0x00001FFF +_0802EA44: + movs r0, #1 +_0802EA46: + pop {pc} + + thumb_func_start sub_0802EA48 +sub_0802EA48: @ 0x0802EA48 + push {r4, lr} + adds r4, r0, #0 + cmp r3, #1 + bne _0802EA52 + rsbs r2, r2, #0 +_0802EA52: + lsls r0, r1, #2 + adds r0, r4, r0 + ldrh r1, [r0] + adds r1, r1, r2 + ldr r3, _0802EA64 @ =0x00001FFF + adds r2, r3, #0 + ands r1, r2 + strh r1, [r0] + pop {r4, pc} + .align 2, 0 +_0802EA64: .4byte 0x00001FFF + + thumb_func_start sub_0802EA68 +sub_0802EA68: @ 0x0802EA68 + push {r4, lr} + adds r4, r0, #0 + cmp r3, #2 + bne _0802EA72 + rsbs r2, r2, #0 +_0802EA72: + lsls r0, r1, #2 + adds r0, r4, r0 + ldrh r1, [r0, #0x18] + adds r1, r1, r2 + ldr r3, _0802EA84 @ =0x00001FFF + adds r2, r3, #0 + ands r1, r2 + strh r1, [r0, #0x18] + pop {r4, pc} + .align 2, 0 +_0802EA84: .4byte 0x00001FFF + + thumb_func_start sub_0802EA88 +sub_0802EA88: @ 0x0802EA88 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 + movs r3, #0 +_0802EA90: + lsls r0, r3, #2 + adds r4, r5, r0 + adds r2, r3, #1 + lsls r0, r2, #2 + adds r1, r5, r0 + ldrb r0, [r4, #1] + ldrb r3, [r1, #1] + cmp r0, r3 + beq _0802EAC2 + movs r6, #1 + ldrb r0, [r1, #1] + ldrb r1, [r4, #1] + subs r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + movs r3, #1 + cmp r0, #0x10 + ble _0802EAB6 + movs r3, #0 +_0802EAB6: + adds r0, r5, #0 + adds r1, r2, #0 + movs r2, #0x20 + bl sub_0802EA48 + b _0802EAC8 +_0802EAC2: + adds r3, r2, #0 + cmp r3, #4 + bls _0802EA90 +_0802EAC8: + movs r3, #0 + movs r4, #0x1f +_0802EACC: + adds r2, r3, #1 + lsls r0, r2, #2 + adds r0, r5, r0 + ldrb r1, [r0, #1] + lsls r0, r3, #2 + adds r0, r5, r0 + ldrb r0, [r0, #1] + subs r0, r1, r0 + ands r0, r4 + adds r3, r1, #0 + adds r1, r2, #0 + cmp r0, #0x10 + ble _0802EAEE + cmp r0, #0x1e + bgt _0802EAF6 + adds r3, #1 + b _0802EAF4 +_0802EAEE: + cmp r0, #1 + ble _0802EAF6 + subs r3, #1 +_0802EAF4: + ands r3, r4 +_0802EAF6: + lsls r0, r1, #2 + adds r0, r5, r0 + strb r3, [r0, #1] + adds r3, r1, #0 + cmp r3, #4 + bls _0802EACC + adds r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802EB08 +sub_0802EB08: @ 0x0802EB08 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + movs r0, #0 + mov r8, r0 + movs r3, #0 +_0802EB1A: + lsls r0, r3, #2 + adds r4, r5, r0 + adds r2, r3, #1 + lsls r0, r2, #2 + adds r1, r5, r0 + ldrb r0, [r4, #0x19] + ldrb r3, [r1, #0x19] + cmp r0, r3 + beq _0802EB4E + movs r0, #1 + mov r8, r0 + ldrb r0, [r1, #0x19] + ldrb r1, [r4, #0x19] + subs r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + movs r3, #2 + cmp r0, #0x10 + ble _0802EB42 + movs r3, #3 +_0802EB42: + adds r0, r5, #0 + adds r1, r2, #0 + adds r2, r6, #0 + bl sub_0802EA68 + b _0802EB54 +_0802EB4E: + adds r3, r2, #0 + cmp r3, #4 + bls _0802EB1A +_0802EB54: + movs r3, #0 + movs r4, #0x1f + rsbs r6, r7, #0 + ands r6, r4 +_0802EB5C: + adds r2, r3, #1 + lsls r0, r2, #2 + adds r0, r5, r0 + ldrb r1, [r0, #0x19] + lsls r0, r3, #2 + adds r0, r5, r0 + ldrb r0, [r0, #0x19] + subs r0, r1, r0 + ands r0, r4 + adds r3, r1, #0 + adds r1, r2, #0 + cmp r0, #0x10 + ble _0802EB7E + cmp r6, r0 + ble _0802EB86 + adds r3, #1 + b _0802EB84 +_0802EB7E: + cmp r7, r0 + bge _0802EB86 + subs r3, #1 +_0802EB84: + ands r3, r4 +_0802EB86: + lsls r0, r1, #2 + adds r0, r5, r0 + strb r3, [r0, #0x19] + adds r3, r1, #0 + cmp r3, #4 + bls _0802EB5C + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802EB9C +sub_0802EB9C: @ 0x0802EB9C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0802EBBC @ =gUnk_080CD850 + bl sub_080028F4 + ldr r1, _0802EBC0 @ =gUnk_080CD854 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x74 + strb r1, [r0] + adds r4, #0x75 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_0802EBBC: .4byte gUnk_080CD850 +_0802EBC0: .4byte gUnk_080CD854 + + thumb_func_start sub_0802EBC4 +sub_0802EBC4: @ 0x0802EBC4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + adds r6, r0, #0 + cmp r6, #0 + bne _0802EC66 + ldr r1, _0802EC18 @ =gUnk_080CD86C + adds r5, r4, #0 + adds r5, #0x79 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_080028F4 + ldr r2, _0802EC1C @ =gUnk_080CD878 + ldrb r1, [r5] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + adds r1, r1, r0 + adds r2, r4, #0 + adds r2, #0x75 + ldrb r0, [r1] + ldrb r1, [r2] + cmp r0, r1 + bhs _0802EC60 + strb r6, [r2] + ldrb r1, [r5] + cmp r1, #0 + bne _0802EC20 + adds r0, r4, #0 + adds r0, #0x76 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x77 + movs r0, #3 + strb r0, [r1] + b _0802EC56 + .align 2, 0 +_0802EC18: .4byte gUnk_080CD86C +_0802EC1C: .4byte gUnk_080CD878 +_0802EC20: + bl sub_08000E50 + adds r1, r0, #0 + movs r5, #1 + ands r1, r5 + adds r3, r4, #0 + adds r3, #0x76 + ldrb r0, [r3] + cmp r1, r0 + beq _0802EC3E + strb r1, [r3] + adds r0, r4, #0 + adds r0, #0x77 + strb r5, [r0] + b _0802EC56 +_0802EC3E: + adds r2, r4, #0 + adds r2, #0x77 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _0802EC54 + eors r1, r5 + strb r5, [r2] +_0802EC54: + strb r1, [r3] +_0802EC56: + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xd] + strb r1, [r4, #0xb] + b _0802EC6A +_0802EC60: + movs r0, #2 + strb r0, [r4, #0xd] + b _0802EC6A +_0802EC66: + subs r0, #1 + strb r0, [r1] +_0802EC6A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0802EC6C +sub_0802EC6C: @ 0x0802EC6C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0802EC94 @ =gUnk_080CDE34 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_0802EC94: .4byte gUnk_080CDE34 + + thumb_func_start sub_0802EC98 +sub_0802EC98: @ 0x0802EC98 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0802ECBC @ =gUnk_080CDE4C + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bhi _0802ECB8 + adds r0, r4, #0 + bl sub_0802EF90 +_0802ECB8: + pop {r4, pc} + .align 2, 0 +_0802ECBC: .4byte gUnk_080CDE4C + + thumb_func_start sub_0802ECC0 +sub_0802ECC0: @ 0x0802ECC0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0802ED2A + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r5, r0, #0 + ldr r3, _0802ED00 @ =gUnk_030010A0 + cmp r1, #0 + bne _0802ECEE + adds r2, r3, #0 + adds r2, #0x39 + adds r0, r3, #0 + adds r0, #0x3c + ldrb r0, [r0] + adds r0, #2 + movs r1, #1 + lsls r1, r0 + ldrb r0, [r2] + bics r0, r1 + strb r0, [r2] +_0802ECEE: + ldr r0, _0802ED04 @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _0802ED08 + ldrb r1, [r5] + adds r0, r3, #0 + adds r0, #0x3a + b _0802ED0E + .align 2, 0 +_0802ED00: .4byte gUnk_030010A0 +_0802ED04: .4byte gUnk_03000BF0 +_0802ED08: + ldrb r1, [r5] + adds r0, r3, #0 + adds r0, #0x3b +_0802ED0E: + strb r1, [r0] + adds r6, r4, #0 + adds r6, #0x79 + ldrb r0, [r6] + ldrb r1, [r5] + cmp r0, r1 + beq _0802ED24 + movs r0, #0xbd + lsls r0, r0, #1 + bl sub_08004488 +_0802ED24: + ldrb r0, [r5] + strb r0, [r6] + b _0802ED52 +_0802ED2A: + cmp r0, #1 + bne _0802ED52 + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _0802ED3E + rsbs r0, r0, #0 + strb r0, [r1] +_0802ED3E: + adds r5, r4, #0 + adds r5, #0x45 + ldrb r0, [r5] + cmp r0, #0xff + beq _0802ED4E + movs r0, #0xe5 + bl sub_08004488 +_0802ED4E: + movs r0, #0xff + strb r0, [r5] +_0802ED52: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802ED64 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802ED64: + ldr r1, _0802ED70 @ =gUnk_080CDE34 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_0802ED70: .4byte gUnk_080CDE34 + + thumb_func_start sub_0802ED74 +sub_0802ED74: @ 0x0802ED74 + push {lr} + ldr r2, _0802ED88 @ =gUnk_080CDE5C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802ED88: .4byte gUnk_080CDE5C + + thumb_func_start sub_0802ED8C +sub_0802ED8C: @ 0x0802ED8C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0802EDD0 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x46 + bhi _0802EE0A + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _0802EE0A + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0x34 + strb r0, [r1, #9] + str r4, [r1, #0x14] + adds r0, r1, #0 + movs r1, #8 + bl sub_0805EA2C + movs r0, #0x25 + movs r1, #2 + bl sub_0804AA60 + str r4, [r0, #0x50] + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0802EDD4 @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _0802EDDC + ldr r0, _0802EDD8 @ =gUnk_030010A0 + adds r0, #0x3a + b _0802EDE0 + .align 2, 0 +_0802EDD0: .4byte gUnk_03003DBC +_0802EDD4: .4byte gUnk_03000BF0 +_0802EDD8: .4byte gUnk_030010A0 +_0802EDDC: + ldr r0, _0802EE0C @ =gUnk_030010A0 + adds r0, #0x3b +_0802EDE0: + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] + adds r1, #0x34 + strb r0, [r1] + bl sub_08000E50 + adds r1, r4, #0 + adds r1, #0x78 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0802EFB8 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0802EF58 +_0802EE0A: + pop {r4, pc} + .align 2, 0 +_0802EE0C: .4byte gUnk_030010A0 + + thumb_func_start sub_0802EE10 +sub_0802EE10: @ 0x0802EE10 + push {r4, lr} + adds r4, r0, #0 + bl sub_0802F04C + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_0802EE20 +sub_0802EE20: @ 0x0802EE20 + push {lr} + ldr r2, _0802EE34 @ =gUnk_080CDE64 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802EE34: .4byte gUnk_080CDE64 + + thumb_func_start sub_0802EE38 +sub_0802EE38: @ 0x0802EE38 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0802EE84 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x46 + bhi _0802EE82 + movs r0, #0x25 + movs r1, #3 + bl sub_0804AA60 + str r5, [r0, #0x50] + movs r0, #1 + strb r0, [r5, #0xc] + bl sub_08000E50 + adds r4, r0, #0 + movs r1, #3 + ands r0, r1 + adds r0, #1 + strb r0, [r5, #0xe] + bl sub_08000E50 + lsrs r0, r0, #8 + adds r1, r5, #0 + adds r1, #0x78 + strb r0, [r1] + ldr r1, _0802EE88 @ =gUnk_080CDE6C + lsrs r4, r4, #0x10 + movs r0, #3 + ands r4, r0 + adds r4, r4, r1 + ldrb r0, [r4] + strb r0, [r5, #0x15] + adds r0, r5, #0 + movs r1, #1 + bl sub_08004260 +_0802EE82: + pop {r4, r5, pc} + .align 2, 0 +_0802EE84: .4byte gUnk_03003DBC +_0802EE88: .4byte gUnk_080CDE6C + + thumb_func_start sub_0802EE8C +sub_0802EE8C: @ 0x0802EE8C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r2, [r0, #4] + cmp r2, #0 + bne _0802EEA8 + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x45 + strb r2, [r0] + b _0802EEB4 +_0802EEA8: + adds r0, r4, #0 + bl sub_0802F04C + adds r0, r4, #0 + bl sub_08004274 +_0802EEB4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802EEB8 +sub_0802EEB8: @ 0x0802EEB8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0802EEC8 + bl sub_0805E780 +_0802EEC8: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0802EED6 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x14] +_0802EED6: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + ldr r1, _0802EF14 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #1 + movs r1, #0x1e + ands r0, r1 + ldr r1, _0802EF18 @ =gUnk_080CDE70 + adds r0, r0, r1 + ldrb r2, [r0] + ldrb r1, [r4, #0x1e] + cmp r2, r1 + beq _0802EF00 + ldrb r0, [r0, #1] + cmp r0, r1 + beq _0802EF00 + strb r2, [r4, #0x1e] +_0802EF00: + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 +_0802EF14: .4byte gLinkEntity +_0802EF18: .4byte gUnk_080CDE70 + + thumb_func_start sub_0802EF1C +sub_0802EF1C: @ 0x0802EF1C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0802EF2C + bl sub_0805E780 +_0802EF2C: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0802EF4A + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x11 + strb r0, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x19 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] +_0802EF4A: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + movs r0, #0 + strh r0, [r4, #0x36] + pop {r4, pc} + + thumb_func_start sub_0802EF58 +sub_0802EF58: @ 0x0802EF58 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 +_0802EF5E: + movs r0, #0x25 + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _0802EF86 + strb r5, [r4, #0xb] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + str r6, [r4, #0x50] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_0802EF86: + adds r5, #1 + cmp r5, #6 + bls _0802EF5E + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802EF90 +sub_0802EF90: @ 0x0802EF90 + push {r4, lr} + ldr r4, _0802EFB4 @ =gUnk_080CDE90 + adds r3, r0, #0 + adds r3, #0x78 + ldrb r1, [r3] + adds r2, r1, #1 + strb r2, [r3] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1b + movs r2, #7 + ands r1, r2 + adds r1, r1, r4 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + strh r1, [r0, #0x36] + pop {r4, pc} + .align 2, 0 +_0802EFB4: .4byte gUnk_080CDE90 + + thumb_func_start sub_0802EFB8 +sub_0802EFB8: @ 0x0802EFB8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r6, r0, #0 + lsrs r0, r6, #0x10 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + beq _0802EFD2 + movs r5, #0x18 + ands r5, r6 + b _0802EFE0 +_0802EFD2: + ldr r0, _0802F01C @ =gLinkEntity + adds r1, r4, #0 + bl sub_080045C4 + adds r5, r0, #4 + movs r0, #0x18 + ands r5, r0 +_0802EFE0: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0802F020 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r7, #0x32 + ldrsh r1, [r4, r7] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + ldr r2, _0802F024 @ =gUnk_080B4488 + lsrs r1, r5, #2 + adds r1, r1, r2 + movs r2, #0 + ldrsh r1, [r1, r2] + adds r0, r0, r1 + movs r1, #1 + bl sub_080002E0 + cmp r0, #0 + beq _0802F028 + movs r0, #0xff + strb r0, [r4, #0x15] + b _0802F044 + .align 2, 0 +_0802F01C: .4byte gLinkEntity +_0802F020: .4byte gUnk_03000BF0 +_0802F024: .4byte gUnk_080B4488 +_0802F028: + movs r1, #3 + adds r0, r6, #0 + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xe] + strb r5, [r4, #0x15] + ldr r2, _0802F048 @ =gUnk_080CDE98 + lsrs r0, r6, #0x18 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r4, #0x24] +_0802F044: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0802F048: .4byte gUnk_080CDE98 + + thumb_func_start sub_0802F04C +sub_0802F04C: @ 0x0802F04C + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r5, [r4, r0] + movs r1, #0x32 + ldrsh r6, [r4, r1] + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0802F06A + adds r0, r4, #0 + bl sub_0802EFB8 + b _0802F112 +_0802F06A: + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + cmp r0, #1 + beq _0802F098 + cmp r0, #1 + bgt _0802F07C + cmp r0, #0 + beq _0802F082 + b _0802F0DC +_0802F07C: + cmp r0, #2 + beq _0802F0AE + b _0802F0DC +_0802F082: + movs r2, #0xf + adds r0, r6, #0 + ands r0, r2 + cmp r0, #8 + ble _0802F102 + ldrh r1, [r4, #0x32] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #8 + bgt _0802F102 + b _0802F0C2 +_0802F098: + movs r2, #0xf + adds r0, r5, #0 + ands r0, r2 + cmp r0, #7 + bgt _0802F102 + ldrh r1, [r4, #0x2e] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #7 + ble _0802F102 + b _0802F0F0 +_0802F0AE: + movs r2, #0xf + adds r0, r6, #0 + ands r0, r2 + cmp r0, #7 + bgt _0802F102 + ldrh r1, [r4, #0x32] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #7 + ble _0802F102 +_0802F0C2: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldr r1, _0802F0D8 @ =0x0000FFF0 + ands r0, r1 + adds r6, r0, #0 + adds r6, #8 + b _0802F102 + .align 2, 0 +_0802F0D8: .4byte 0x0000FFF0 +_0802F0DC: + movs r2, #0xf + adds r0, r5, #0 + ands r0, r2 + cmp r0, #8 + ble _0802F102 + ldrh r1, [r4, #0x2e] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #8 + bgt _0802F102 +_0802F0F0: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r1, _0802F114 @ =0x0000FFF0 + ands r0, r1 + adds r5, r0, #0 + adds r5, #8 +_0802F102: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0802F112 + strh r5, [r4, #0x2e] + strh r6, [r4, #0x32] + adds r0, r4, #0 + bl sub_0802EFB8 +_0802F112: + pop {r4, r5, r6, pc} + .align 2, 0 +_0802F114: .4byte 0x0000FFF0 + + thumb_func_start sub_0802F118 +sub_0802F118: @ 0x0802F118 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0802F134 @ =gUnk_080CDED0 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0802F134: .4byte gUnk_080CDED0 + + thumb_func_start sub_0802F138 +sub_0802F138: @ 0x0802F138 + push {lr} + ldr r2, _0802F14C @ =gUnk_080CDEE8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802F14C: .4byte gUnk_080CDEE8 + + thumb_func_start sub_0802F150 +sub_0802F150: @ 0x0802F150 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802F164 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802F164: + ldr r1, _0802F18C @ =gUnk_080CDED0 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802F1E8 + movs r0, #0x3f + ands r0, r1 + cmp r0, #0x14 + beq _0802F196 + cmp r0, #0x14 + bgt _0802F190 + cmp r0, #0xe + beq _0802F1E0 + b _0802F1E8 + .align 2, 0 +_0802F18C: .4byte gUnk_080CDED0 +_0802F190: + cmp r0, #0x15 + beq _0802F1E0 + b _0802F1E8 +_0802F196: + movs r0, #0 + movs r1, #1 + strb r1, [r4, #0xc] + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0802F1A8 + movs r0, #0xc0 + b _0802F1B6 +_0802F1A8: + bl sub_08000E50 + ldr r2, _0802F1DC @ =gUnk_080CDEF8 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] +_0802F1B6: + strb r0, [r4, #0xe] + movs r1, #0 + strb r1, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x7c + strb r1, [r0] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0802F1CE + ldr r0, [r4, #0x20] + asrs r0, r0, #2 +_0802F1CE: + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0802F1E8 + .align 2, 0 +_0802F1DC: .4byte gUnk_080CDEF8 +_0802F1E0: + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0 + strb r0, [r1] +_0802F1E8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_16 +nullsub_16: @ 0x0802F1EC + bx lr + .align 2, 0 + + thumb_func_start sub_0802F1F0 +sub_0802F1F0: @ 0x0802F1F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001242 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0802F20C + adds r0, r4, #0 + adds r0, #0x80 + ldrh r1, [r0] + adds r0, r4, #0 + bl sub_08003FC4 +_0802F20C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802F210 +sub_0802F210: @ 0x0802F210 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0804A720 + movs r4, #0 + movs r0, #1 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + bl sub_08000E50 + ldr r2, _0802F280 @ =gUnk_080CDEF8 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r5, #0xe] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + ldrb r1, [r5, #0xe] + adds r0, r0, r1 + strb r0, [r5, #0xe] + strb r4, [r5, #0xf] + adds r0, r5, #0 + adds r0, #0x7c + strb r4, [r0] + ldrb r0, [r5, #0xa] + movs r2, #0xa0 + lsls r2, r2, #6 + adds r1, r2, #0 + cmp r0, #0 + bne _0802F258 + movs r0, #0xc0 + lsls r0, r0, #5 + adds r1, r0, #0 +_0802F258: + adds r0, r5, #0 + adds r0, #0x80 + strh r1, [r0] + ldrb r0, [r5, #0xa] + movs r2, #0xc0 + lsls r2, r2, #6 + adds r1, r2, #0 + cmp r0, #0 + bne _0802F270 + movs r0, #0xa0 + lsls r0, r0, #6 + adds r1, r0, #0 +_0802F270: + adds r0, r5, #0 + adds r0, #0x82 + strh r1, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, r5, pc} + .align 2, 0 +_0802F280: .4byte gUnk_080CDEF8 + + thumb_func_start sub_0802F284 +sub_0802F284: @ 0x0802F284 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0x60 + bls _0802F298 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004276 + b _0802F29E +_0802F298: + adds r0, r4, #0 + bl sub_08004274 +_0802F29E: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0802F2AA + subs r0, #1 + strb r0, [r4, #0xe] + b _0802F2FE +_0802F2AA: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0802F2E4 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802F2FE + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x82 + ldrh r0, [r0] + lsls r0, r0, #4 + str r0, [r4, #0x20] + adds r0, r4, #0 + bl sub_0802F45C + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0802F2FE +_0802F2E4: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802F2FE + movs r0, #0x40 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0802F2FE: + pop {r4, pc} + + thumb_func_start sub_0802F300 +sub_0802F300: @ 0x0802F300 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AEF88 + movs r0, #0x36 + ldrsh r6, [r4, r0] + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #0xf + ands r5, r0 + adds r0, r4, #0 + adds r0, #0x80 + ldrh r1, [r0] + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bne _0802F364 + movs r0, #0 + movs r2, #3 + strb r2, [r4, #0xc] + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0802F33C + movs r5, #0 +_0802F33C: + cmp r5, #0 + bne _0802F344 + movs r0, #0xc0 + b _0802F350 +_0802F344: + ldr r0, _0802F360 @ =gUnk_080CDEF8 + adds r1, r5, #0 + ands r1, r2 + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, r0, r5 +_0802F350: + strb r0, [r4, #0xe] + movs r0, #0 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + b _0802F3F0 + .align 2, 0 +_0802F360: .4byte gUnk_080CDEF8 +_0802F364: + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0802F374 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E + b _0802F38C +_0802F374: + adds r0, r4, #0 + bl sub_080002B8 + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0x50 + bne _0802F38C + ldrb r0, [r4, #0x15] + adds r0, #0x10 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_0802F38C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802F3AC + movs r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0802F3AC + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0802F45C +_0802F3AC: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0802F3C6 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r6, r0 + bge _0802F3C6 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + movs r0, #1 + strb r0, [r4, #0xd] +_0802F3C6: + movs r0, #0xc + rsbs r0, r0, #0 + cmp r6, r0 + bge _0802F3DA + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + b _0802F3E4 +_0802F3DA: + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 +_0802F3E4: + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] +_0802F3F0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802F3F4 +sub_0802F3F4: @ 0x0802F3F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0802F45A + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #1 + bhi _0802F44C + ldrb r0, [r4, #0xa] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0802F44C + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x82 + ldrh r0, [r0] + lsls r0, r0, #4 + str r0, [r4, #0x20] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0802F45C + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0802F45A +_0802F44C: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r0, r4, #0 + bl sub_08004260 +_0802F45A: + pop {r4, pc} + + thumb_func_start sub_0802F45C +sub_0802F45C: @ 0x0802F45C + push {r4, lr} + adds r4, r0, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0802F472 + adds r0, r4, #0 + bl sub_08049EE4 + strb r0, [r4, #0x15] + b _0802F49E +_0802F472: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0802F48A + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + b _0802F49E +_0802F48A: + bl sub_08000E50 + movs r1, #0xf + ands r1, r0 + adds r1, #0x18 + ldrb r0, [r4, #0x15] + adds r1, r1, r0 + movs r0, #0x1f + ands r1, r0 + strb r1, [r4, #0x15] +_0802F49E: + pop {r4, pc} + + thumb_func_start sub_0802F4A0 +sub_0802F4A0: @ 0x0802F4A0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0802F4C8 @ =gUnk_080CDF50 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_0802F4C8: .4byte gUnk_080CDF50 + + thumb_func_start sub_0802F4CC +sub_0802F4CC: @ 0x0802F4CC + push {lr} + ldr r2, _0802F4E0 @ =gUnk_080CDF68 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802F4E0: .4byte gUnk_080CDF68 + + thumb_func_start sub_0802F4E4 +sub_0802F4E4: @ 0x0802F4E4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802F4F8 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802F4F8: + ldr r1, _0802F558 @ =gUnk_080CDF50 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x87 + bne _0802F536 + movs r0, #0x2a + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0802F536 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + adds r1, #0x63 + movs r0, #0xfc + strb r0, [r1] + str r4, [r2, #0x50] +_0802F536: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0802F556 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x84 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0802F556: + pop {r4, pc} + .align 2, 0 +_0802F558: .4byte gUnk_080CDF50 + + thumb_func_start sub_0802F55C +sub_0802F55C: @ 0x0802F55C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0802F594 + movs r0, #3 + strb r0, [r4, #0xc] + movs r2, #0 + movs r0, #0xc0 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + ldrb r0, [r4, #0xe] + bl sub_0804B128 + str r0, [r4, #0x54] + adds r0, r4, #0 + bl sub_0802FA48 + adds r0, r4, #0 + bl sub_0802FA88 + b _0802F5B8 +_0802F594: + adds r0, r4, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0xff + strb r0, [r1] + subs r1, #1 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0x60 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0802F888 +_0802F5B8: + adds r0, r4, #0 + movs r1, #7 + movs r2, #0 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _0802F5D0 + str r1, [r4, #0x50] + str r4, [r1, #0x50] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] +_0802F5D0: + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0802F5DC +sub_0802F5DC: @ 0x0802F5DC + push {r4, r5, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x82 + ldrb r3, [r2] + cmp r3, #1 + beq _0802F62A + cmp r3, #1 + bgt _0802F5F4 + cmp r3, #0 + beq _0802F60A + b _0802F660 +_0802F5F4: + cmp r3, #0xff + bne _0802F660 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0802F660 + strb r0, [r2] + b _0802F660 +_0802F60A: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802F660 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x10 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + b _0802F660 +_0802F62A: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802F660 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r2] + movs r0, #0x28 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x15] + lsrs r1, r1, #3 + ldr r2, [r5, #0x50] + movs r4, #1 + strb r3, [r2, #0xe] + ldrb r3, [r2, #0x18] + subs r0, #0x2c + ands r0, r3 + orrs r0, r4 + strb r0, [r2, #0x18] + movs r0, #4 + orrs r1, r0 + adds r0, r5, #0 + bl sub_08004260 +_0802F660: + adds r0, r5, #0 + bl sub_0802F9C8 + pop {r4, r5, pc} + + thumb_func_start sub_0802F668 +sub_0802F668: @ 0x0802F668 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x82 + ldrb r0, [r2] + cmp r0, #1 + beq _0802F6F0 + cmp r0, #1 + bgt _0802F680 + cmp r0, #0 + beq _0802F68A + b _0802F7A2 +_0802F680: + cmp r0, #2 + beq _0802F742 + cmp r0, #3 + beq _0802F76C + b _0802F7A2 +_0802F68A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0802F69E + cmp r1, #8 + beq _0802F6B6 + b _0802F7A2 +_0802F69E: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x38 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldr r2, [r4, #0x50] + ldrb r1, [r2, #0x18] + subs r0, #0x3c + ands r0, r1 + strb r0, [r2, #0x18] + b _0802F7A2 +_0802F6B6: + ldr r1, _0802F6EC @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0xa0 + movs r3, #0xa0 + bl sub_080041A0 + cmp r0, #0 + beq _0802F7A2 + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + beq _0802F7A2 + adds r0, r4, #0 + movs r1, #7 + movs r2, #1 + bl sub_0804A98C + adds r2, r0, #0 + cmp r2, #0 + beq _0802F7A2 + ldrb r1, [r4, #0x15] + movs r0, #0x18 + ands r0, r1 + strb r0, [r2, #0x15] + b _0802F7A2 + .align 2, 0 +_0802F6EC: .4byte gLinkEntity +_0802F6F0: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _0802F7A2 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xab + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x84 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 + b _0802F7A2 +_0802F742: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802F7A2 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _0802F7A2 +_0802F76C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802F7A2 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0xab + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r4, #0 + bl sub_0802F8E4 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 +_0802F7A2: + adds r0, r4, #0 + bl sub_0802F9C8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802F7AC +sub_0802F7AC: @ 0x0802F7AC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0802FA88 + adds r0, r4, #0 + bl sub_0802F9C8 + ldr r5, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + bne _0802F86E + adds r2, r4, #0 + adds r2, #0x82 + ldrb r1, [r2] + cmp r1, #1 + beq _0802F7EA + cmp r1, #1 + bgt _0802F7DA + cmp r1, #0 + beq _0802F7E0 + b _0802F884 +_0802F7DA: + cmp r1, #2 + beq _0802F818 + b _0802F884 +_0802F7E0: + movs r0, #1 + strb r0, [r2] + movs r0, #0x40 + strb r0, [r4, #0xe] + b _0802F884 +_0802F7EA: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802F884 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x28 + strb r0, [r4, #0xe] + movs r2, #1 + strb r1, [r5, #0xe] + ldrb r1, [r5, #0x18] + subs r0, #0x2c + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + movs r0, #4 + orrs r1, r0 + b _0802F844 +_0802F818: + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0802F84C + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x30 + strb r0, [r4, #0xe] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #0x18] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 +_0802F844: + adds r0, r4, #0 + bl sub_08004260 + b _0802F884 +_0802F84C: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bne _0802F884 + adds r0, r4, #0 + movs r1, #7 + movs r2, #1 + bl sub_0804A98C + adds r5, r0, #0 + cmp r5, #0 + beq _0802F884 + ldrb r1, [r4, #0x15] + movs r0, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] + b _0802F884 +_0802F86E: + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + cmp r0, #0 + beq _0802F884 + movs r0, #0 + strb r0, [r1] + ldrb r1, [r5, #0x18] + subs r0, #4 + ands r0, r1 + strb r0, [r5, #0x18] +_0802F884: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0802F888 +sub_0802F888: @ 0x0802F888 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #3 + bl sub_08049F84 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0802F8DC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x84 + strh r1, [r5] + ldrh r0, [r5] + adds r6, r4, #0 + adds r6, #0x38 + ldrb r1, [r6] + bl sub_080001DA + adds r4, #0x86 + strh r0, [r4] + ldr r0, _0802F8E0 @ =0x00004071 + ldrh r1, [r5] + ldrb r2, [r6] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0802F8DC: .4byte gUnk_03000BF0 +_0802F8E0: .4byte 0x00004071 + + thumb_func_start sub_0802F8E4 +sub_0802F8E4: @ 0x0802F8E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x14 + adds r7, r0, #0 + ldrb r0, [r7, #0xb] + cmp r0, #0 + bne _0802F9AE + movs r0, #1 + str r0, [sp] + adds r1, r7, #0 + adds r1, #0x70 + str r1, [sp, #0xc] + adds r2, r7, #0 + adds r2, #0x6e + str r2, [sp, #4] + adds r0, r7, #0 + adds r0, #0x72 + str r0, [sp, #0x10] + subs r1, #1 + str r1, [sp, #8] + movs r2, #0x38 + adds r2, r2, r7 + mov r8, r2 + movs r0, #8 + mov sl, r0 + ldr r1, _0802F9BC @ =gUnk_03000BF0 + mov sb, r1 +_0802F920: + bl sub_08000E50 + adds r4, r0, #0 + ldr r2, [sp, #0xc] + ldrh r5, [r2] + ldr r1, _0802F9C0 @ =0x00007FF0 + ands r0, r1 + ldr r2, [sp, #4] + ldrb r1, [r2] + lsls r1, r1, #3 + bl __modsi3 + adds r6, r5, r0 + mov r0, sl + orrs r6, r0 + lsrs r4, r4, #0x10 + ldr r1, [sp, #0x10] + ldrh r5, [r1] + ldr r2, _0802F9C0 @ =0x00007FF0 + ands r4, r2 + ldr r0, [sp, #8] + ldrb r1, [r0] + lsls r1, r1, #3 + adds r0, r4, #0 + bl __modsi3 + adds r5, r5, r0 + mov r1, sl + orrs r5, r1 + mov r2, sb + ldrh r0, [r2, #6] + subs r0, r6, r0 + lsrs r4, r0, #4 + movs r1, #0x3f + ands r4, r1 + ldrh r0, [r2, #8] + subs r0, r5, r0 + lsrs r0, r0, #4 + ands r0, r1 + lsls r0, r0, #6 + orrs r4, r0 + mov r0, r8 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080002E0 + cmp r0, #0 + bne _0802F9A2 + mov r2, r8 + ldrb r1, [r2] + adds r0, r4, #0 + bl sub_080001DA + ldr r1, _0802F9C4 @ =0x00004071 + cmp r0, r1 + beq _0802F9A2 + strh r6, [r7, #0x2e] + strh r5, [r7, #0x32] + adds r0, r7, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _0802F9A2 + movs r0, #0 + str r0, [sp] +_0802F9A2: + ldr r1, [sp] + cmp r1, #0 + bne _0802F920 + adds r0, r7, #0 + bl sub_0802F888 +_0802F9AE: + add sp, #0x14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0802F9BC: .4byte gUnk_03000BF0 +_0802F9C0: .4byte 0x00007FF0 +_0802F9C4: .4byte 0x00004071 + + thumb_func_start sub_0802F9C8 +sub_0802F9C8: @ 0x0802F9C8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0802FA44 + adds r5, r4, #0 + adds r5, #0x81 + ldrb r0, [r5] + adds r6, r5, #0 + cmp r0, #0 + beq _0802FA20 + subs r0, #1 + strb r0, [r5] + movs r1, #0xff + ands r0, r1 + movs r2, #1 + ands r0, r2 + cmp r0, #0 + beq _0802F9F8 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + b _0802FA02 +_0802F9F8: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 +_0802FA02: + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0802FA3E + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r6] + cmp r0, #0 + bne _0802FA3E + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + b _0802FA3E +_0802FA20: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0802FA3E + adds r0, r4, #0 + bl sub_080AEF88 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0802FA3E + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + movs r0, #0x28 + strb r0, [r5] +_0802FA3E: + adds r0, r4, #0 + bl sub_08004274 +_0802FA44: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0802FA48 +sub_0802FA48: @ 0x0802FA48 + push {r4, lr} + mov ip, r0 + ldr r4, [r0, #0x54] + mov r2, ip + adds r2, #0x80 + ldrb r0, [r2] + lsls r0, r0, #2 + adds r3, r4, r0 + ldrh r1, [r3] + ldr r0, _0802FA80 @ =0x0000FFFF + cmp r1, r0 + bne _0802FA66 + movs r0, #0 + strb r0, [r2] + adds r3, r4, #0 +_0802FA66: + ldr r2, _0802FA84 @ =gUnk_03000BF0 + ldrh r0, [r3] + ldrh r1, [r2, #6] + adds r0, r0, r1 + mov r1, ip + adds r1, #0x78 + strh r0, [r1] + ldrh r0, [r3, #2] + ldrh r2, [r2, #8] + adds r0, r0, r2 + adds r1, #2 + strh r0, [r1] + pop {r4, pc} + .align 2, 0 +_0802FA80: .4byte 0x0000FFFF +_0802FA84: .4byte gUnk_03000BF0 + + thumb_func_start sub_0802FA88 +sub_0802FA88: @ 0x0802FA88 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r7, #0 + adds r5, r4, #0 + adds r5, #0x78 + ldrh r1, [r5] + adds r6, r4, #0 + adds r6, #0x7a + ldrh r2, [r6] + movs r3, #2 + bl sub_0806FCB8 + cmp r0, #0 + beq _0802FAF6 + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0802FA48 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r5] + ldrh r3, [r6] + bl sub_080045D4 + adds r2, r0, #0 + strb r2, [r4, #0x15] + adds r0, r2, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _0802FAEA + lsrs r1, r2, #3 + movs r0, #4 + orrs r1, r0 + adds r0, r4, #0 + bl sub_08004260 + b _0802FAF2 +_0802FAEA: + lsrs r1, r2, #3 + adds r0, r4, #0 + bl sub_08004260 +_0802FAF2: + movs r7, #1 + b _0802FB2A +_0802FAF6: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r5] + ldrh r3, [r6] + bl sub_080045D4 + adds r2, r0, #0 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08004596 + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r2, r0, #2 + ldrb r0, [r4, #0x14] + cmp r2, r0 + beq _0802FB2A + strb r2, [r4, #0x14] + lsrs r1, r2, #1 + adds r0, r4, #0 + bl sub_08004260 +_0802FB2A: + adds r0, r7, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0802FB30 +sub_0802FB30: @ 0x0802FB30 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0802FB58 @ =gUnk_080CDFC4 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_0802FB58: .4byte gUnk_080CDFC4 + + thumb_func_start sub_0802FB5C +sub_0802FB5C: @ 0x0802FB5C + push {lr} + ldr r2, _0802FB70 @ =gUnk_080CDFDC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802FB70: .4byte gUnk_080CDFDC + + thumb_func_start sub_0802FB74 +sub_0802FB74: @ 0x0802FB74 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802FB88 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802FB88: + ldr r1, _0802FBB4 @ =gUnk_080CDFC4 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0802FBB0 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x84 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0802FBB0: + pop {r4, pc} + .align 2, 0 +_0802FBB4: .4byte gUnk_080CDFC4 + + thumb_func_start sub_0802FBB8 +sub_0802FBB8: @ 0x0802FBB8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0xff + strb r0, [r1] + subs r1, #1 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0x60 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0802F888 + adds r0, r4, #0 + movs r1, #8 + movs r2, #0 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _0802FBF6 + str r1, [r4, #0x54] + str r4, [r1, #0x50] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] +_0802FBF6: + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802FC04 +sub_0802FC04: @ 0x0802FC04 + push {r4, r5, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x82 + ldrb r3, [r2] + cmp r3, #1 + beq _0802FC52 + cmp r3, #1 + bgt _0802FC1C + cmp r3, #0 + beq _0802FC32 + b _0802FC88 +_0802FC1C: + cmp r3, #0xff + bne _0802FC88 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0802FC88 + strb r0, [r2] + b _0802FC88 +_0802FC32: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802FC88 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0xe + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + b _0802FC88 +_0802FC52: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802FC88 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r2] + movs r0, #0x20 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x15] + lsrs r1, r1, #3 + ldr r2, [r5, #0x54] + movs r4, #1 + strb r3, [r2, #0xe] + ldrb r3, [r2, #0x18] + subs r0, #0x24 + ands r0, r3 + orrs r0, r4 + strb r0, [r2, #0x18] + movs r0, #4 + orrs r1, r0 + adds r0, r5, #0 + bl sub_08004260 +_0802FC88: + adds r0, r5, #0 + bl sub_0802F9C8 + pop {r4, r5, pc} + + thumb_func_start sub_0802FC90 +sub_0802FC90: @ 0x0802FC90 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x82 + ldrb r0, [r2] + cmp r0, #1 + beq _0802FD18 + cmp r0, #1 + bgt _0802FCA8 + cmp r0, #0 + beq _0802FCB2 + b _0802FDCA +_0802FCA8: + cmp r0, #2 + beq _0802FD6A + cmp r0, #3 + beq _0802FD94 + b _0802FDCA +_0802FCB2: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0802FCC6 + cmp r1, #6 + beq _0802FCDE + b _0802FDCA +_0802FCC6: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x38 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x18] + subs r0, #0x3c + ands r0, r1 + strb r0, [r2, #0x18] + b _0802FDCA +_0802FCDE: + ldr r1, _0802FD14 @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0xa0 + movs r3, #0xa0 + bl sub_080041A0 + cmp r0, #0 + beq _0802FDCA + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + beq _0802FDCA + adds r0, r4, #0 + movs r1, #8 + movs r2, #1 + bl sub_0804A98C + adds r2, r0, #0 + cmp r2, #0 + beq _0802FDCA + ldrb r1, [r4, #0x15] + movs r0, #0x18 + ands r0, r1 + strb r0, [r2, #0x15] + b _0802FDCA + .align 2, 0 +_0802FD14: .4byte gLinkEntity +_0802FD18: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _0802FDCA + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x84 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r0, #0xab + lsls r0, r0, #1 + bl sub_08004488 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 + b _0802FDCA +_0802FD6A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802FDCA + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x1c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _0802FDCA +_0802FD94: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802FDCA + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0xab + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r4, #0 + bl sub_0802F8E4 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 +_0802FDCA: + adds r0, r4, #0 + bl sub_0802F9C8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802FDD4 +sub_0802FDD4: @ 0x0802FDD4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0802FDFC @ =gUnk_080CE074 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_0802FDFC: .4byte gUnk_080CE074 + + thumb_func_start sub_0802FE00 +sub_0802FE00: @ 0x0802FE00 + push {lr} + ldr r2, _0802FE14 @ =gUnk_080CE08C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0802FE14: .4byte gUnk_080CE08C + + thumb_func_start sub_0802FE18 +sub_0802FE18: @ 0x0802FE18 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0802FE2C + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0802FE2C: + ldr r1, _0802FE8C @ =gUnk_080CE074 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x87 + bne _0802FE6A + movs r0, #0x2a + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0802FE6A + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + adds r1, #0x63 + movs r0, #0xfc + strb r0, [r1] + str r4, [r2, #0x50] +_0802FE6A: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0802FE8A + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x84 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0802FE8A: + pop {r4, pc} + .align 2, 0 +_0802FE8C: .4byte gUnk_080CE074 + + thumb_func_start sub_0802FE90 +sub_0802FE90: @ 0x0802FE90 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0xff + strb r0, [r1] + subs r1, #1 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0x60 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0802F888 + adds r0, r4, #0 + movs r1, #9 + movs r2, #0 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _0802FECE + str r1, [r4, #0x54] + str r4, [r1, #0x50] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] +_0802FECE: + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0802FEDC +sub_0802FEDC: @ 0x0802FEDC + push {r4, r5, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x82 + ldrb r3, [r2] + cmp r3, #1 + beq _0802FF2A + cmp r3, #1 + bgt _0802FEF4 + cmp r3, #0 + beq _0802FF0A + b _0802FF60 +_0802FEF4: + cmp r3, #0xff + bne _0802FF60 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0802FF60 + strb r0, [r2] + b _0802FF60 +_0802FF0A: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0802FF60 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0xc + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + b _0802FF60 +_0802FF2A: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0802FF60 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r2] + movs r0, #0x20 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x15] + lsrs r1, r1, #3 + ldr r2, [r5, #0x54] + movs r4, #1 + strb r3, [r2, #0xe] + ldrb r3, [r2, #0x18] + subs r0, #0x24 + ands r0, r3 + orrs r0, r4 + strb r0, [r2, #0x18] + movs r0, #4 + orrs r1, r0 + adds r0, r5, #0 + bl sub_08004260 +_0802FF60: + adds r0, r5, #0 + bl sub_0802F9C8 + pop {r4, r5, pc} + + thumb_func_start sub_0802FF68 +sub_0802FF68: @ 0x0802FF68 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x82 + ldrb r0, [r2] + cmp r0, #1 + beq _0802FFF0 + cmp r0, #1 + bgt _0802FF80 + cmp r0, #0 + beq _0802FF8A + b _080300A2 +_0802FF80: + cmp r0, #2 + beq _08030042 + cmp r0, #3 + beq _0803006C + b _080300A2 +_0802FF8A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0802FF9E + cmp r1, #0xa + beq _0802FFB6 + b _080300A2 +_0802FF9E: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x38 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x18] + subs r0, #0x3c + ands r0, r1 + strb r0, [r2, #0x18] + b _080300A2 +_0802FFB6: + ldr r1, _0802FFEC @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0xa0 + movs r3, #0xa0 + bl sub_080041A0 + cmp r0, #0 + beq _080300A2 + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + beq _080300A2 + adds r0, r4, #0 + movs r1, #9 + movs r2, #1 + bl sub_0804A98C + adds r2, r0, #0 + cmp r2, #0 + beq _080300A2 + ldrb r1, [r4, #0x15] + movs r0, #0x18 + ands r0, r1 + strb r0, [r2, #0x15] + b _080300A2 + .align 2, 0 +_0802FFEC: .4byte gLinkEntity +_0802FFF0: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _080300A2 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x84 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r0, #0xab + lsls r0, r0, #1 + bl sub_08004488 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 + b _080300A2 +_08030042: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080300A2 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x18 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _080300A2 +_0803006C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080300A2 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0x28 + strb r0, [r1] + strb r0, [r4, #0xe] + movs r0, #0xab + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r4, #0 + bl sub_0802F8E4 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 +_080300A2: + adds r0, r4, #0 + bl sub_0802F9C8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080300AC +sub_080300AC: @ 0x080300AC + push {r4, lr} + ldr r4, _080300C0 @ =gUnk_0300110C + adds r0, r4, #0 + movs r1, #0x44 + bl sub_0801D630 + adds r4, #0x42 + movs r0, #0xff + strh r0, [r4] + pop {r4, pc} + .align 2, 0 +_080300C0: .4byte gUnk_0300110C + + thumb_func_start sub_080300C4 +sub_080300C4: @ 0x080300C4 + push {lr} + ldr r2, _080300E4 @ =gUnk_030010A0 + adds r0, r2, #0 + adds r0, #0xae + ldrh r0, [r0] + cmp r0, #0xff + bne _080300E2 + adds r0, r2, #0 + adds r0, #0xac + movs r1, #0 + strh r1, [r0] + subs r0, #0x40 + movs r1, #0x40 + bl sub_0801D630 +_080300E2: + pop {pc} + .align 2, 0 +_080300E4: .4byte gUnk_030010A0 + + thumb_func_start sub_080300E8 +sub_080300E8: @ 0x080300E8 + push {lr} + ldr r1, _08030110 @ =gUnk_030010A0 + adds r3, r1, #0 + adds r3, #0xae + ldrh r0, [r3] + cmp r0, #0xff + beq _0803010C + lsls r0, r0, #2 + adds r1, #0x6c + adds r0, r0, r1 + ldr r2, _08030114 @ =gLinkEntity + ldrh r1, [r0] + strh r1, [r2, #0x2e] + ldrh r0, [r0, #2] + adds r0, #0xc + strh r0, [r2, #0x32] + movs r0, #0xff + strh r0, [r3] +_0803010C: + pop {pc} + .align 2, 0 +_08030110: .4byte gUnk_030010A0 +_08030114: .4byte gLinkEntity + + thumb_func_start sub_08030118 +sub_08030118: @ 0x08030118 + push {lr} + adds r2, r0, #0 + ldr r0, _0803013C @ =gUnk_030010A0 + adds r0, #0xac + ldrh r0, [r0] + asrs r0, r2 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08030140 + movs r0, #0xc0 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x67 + bl sub_0807CC9C + b _0803014C + .align 2, 0 +_0803013C: .4byte gUnk_030010A0 +_08030140: + movs r0, #0xc0 + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0x67 + bl sub_0807CD20 +_0803014C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08030150 +sub_08030150: @ 0x08030150 + push {r4, r5, lr} + mov ip, r0 + ldr r2, _08030194 @ =gUnk_030010A0 + adds r5, r2, #0 + adds r5, #0xac + mov r3, ip + adds r3, #0x80 + ldrb r4, [r3] + movs r0, #1 + lsls r0, r4 + ldrh r1, [r5] + bics r1, r0 + mov r0, ip + adds r0, #0x84 + ldr r0, [r0] + lsls r0, r4 + orrs r1, r0 + strh r1, [r5] + ldrb r0, [r3] + lsls r0, r0, #2 + adds r2, #0x6c + adds r0, r0, r2 + mov r4, ip + ldrh r1, [r4, #0x2e] + strh r1, [r0] + ldrb r0, [r3] + lsls r0, r0, #1 + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r4, #0x32] + strh r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_08030194: .4byte gUnk_030010A0 + + thumb_func_start sub_08030198 +sub_08030198: @ 0x08030198 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080301B8 @ =gUnk_080CE124 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + adds r0, r4, #0 + bl sub_08030150 + pop {r4, pc} + .align 2, 0 +_080301B8: .4byte gUnk_080CE124 + + thumb_func_start sub_080301BC +sub_080301BC: @ 0x080301BC + push {lr} + ldr r2, _080301D0 @ =gUnk_080CE13C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080301D0: .4byte gUnk_080CE13C + + thumb_func_start sub_080301D4 +sub_080301D4: @ 0x080301D4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _080301EE + ldr r1, [r4, #0x4c] + ldr r0, _08030238 @ =gLinkEntity + cmp r1, r0 + bne _080301EE + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xe2 + strb r0, [r1] +_080301EE: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r6, r0, #0 + adds r5, r4, #0 + adds r5, #0x81 + cmp r1, #0 + beq _08030216 + ldrb r0, [r5] + cmp r1, r0 + beq _08030216 + movs r0, #8 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #6 + bl sub_080309C8 + adds r0, r4, #0 + bl sub_080309E8 +_08030216: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08030228 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08030228: + ldrb r0, [r6] + strb r0, [r5] + ldr r1, _0803023C @ =gUnk_080CE124 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08030238: .4byte gLinkEntity +_0803023C: .4byte gUnk_080CE124 + + thumb_func_start sub_08030240 +sub_08030240: @ 0x08030240 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #6 + bne _08030260 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08030260 + adds r0, r4, #0 + bl sub_08004274 +_08030260: + adds r0, r4, #0 + bl sub_08001242 + pop {r4, pc} + + thumb_func_start nullsub_17 +nullsub_17: @ 0x08030268 + bx lr + .align 2, 0 + + thumb_func_start sub_0803026C +sub_0803026C: @ 0x0803026C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0804A720 + ldrb r0, [r4, #0xe] + adds r3, r4, #0 + adds r3, #0x80 + strb r0, [r3] + ldrb r2, [r3] + lsls r0, r2, #2 + ldr r5, _080302A8 @ =gUnk_0300110C + adds r0, r0, r5 + ldrh r1, [r0] + cmp r1, #0 + beq _080302AC + strh r1, [r4, #0x2e] + ldrh r0, [r0, #2] + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x84 + adds r0, r5, #0 + adds r0, #0x40 + ldrh r0, [r0] + ldrb r3, [r3] + asrs r0, r3 + movs r1, #1 + ands r0, r1 + str r0, [r2] + b _080302BA + .align 2, 0 +_080302A8: .4byte gUnk_0300110C +_080302AC: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, _08030304 @ =0x0000047D + asrs r1, r2 + movs r2, #1 + ands r1, r2 + str r1, [r0] +_080302BA: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _080302C6 + bl sub_0804B128 + str r0, [r4, #0x7c] +_080302C6: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x81 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08030580 + adds r0, r4, #0 + bl sub_080307EC + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + bne _08030302 + ldr r0, _08030308 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r0, #0x80 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _08030302 + movs r0, #7 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #7 + bl sub_080309C8 +_08030302: + pop {r4, r5, pc} + .align 2, 0 +_08030304: .4byte 0x0000047D +_08030308: .4byte gUnk_03000BF0 + + thumb_func_start sub_0803030C +sub_0803030C: @ 0x0803030C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0803086C + adds r5, r0, #0 + cmp r5, #0 + bne _08030334 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _08030334 + adds r0, r4, #0 + bl sub_08030650 + cmp r0, #0 + beq _08030334 + movs r0, #2 + strb r0, [r4, #0xc] + strb r5, [r4, #0xd] +_08030334: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08030338 +sub_08030338: @ 0x08030338 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + beq _0803034C + adds r0, r4, #0 + bl sub_080309A8 + b _08030368 +_0803034C: + adds r0, r4, #0 + movs r1, #3 + bl sub_08004276 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _08030368 + ldrb r0, [r4, #0x1e] + cmp r0, #0x25 + bne _08030368 + movs r0, #0x19 + strb r0, [r4, #0x1e] +_08030368: + adds r3, r4, #0 + adds r3, #0x5a + ldrb r2, [r3] + adds r1, r2, #0 + cmp r1, #1 + bne _0803039C + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0803037C + strb r1, [r4, #0xd] +_0803037C: + ldrb r0, [r4, #0xe] + adds r2, r0, #1 + strb r2, [r4, #0xe] + ands r1, r2 + cmp r1, #0 + beq _0803042C + ldr r1, _08030398 @ =gUnk_080CE160 + movs r0, #6 + ands r2, r0 + lsrs r0, r2, #1 + adds r0, r0, r1 + ldrb r1, [r0] + b _08030426 + .align 2, 0 +_08030398: .4byte gUnk_080CE160 +_0803039C: + cmp r1, #2 + bne _080303D4 + movs r0, #0 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + beq _080303C0 + adds r1, r4, #0 + adds r1, #0x3b + movs r0, #0xb + strb r0, [r1] + adds r1, #4 + movs r0, #8 + strb r0, [r1] + ldr r0, _080303D0 @ =gUnk_080FD2F0 + str r0, [r4, #0x48] +_080303C0: + adds r0, r4, #0 + bl sub_08030834 + movs r0, #0x95 + lsls r0, r0, #1 + bl sub_08004488 + b _0803042C + .align 2, 0 +_080303D0: .4byte gUnk_080FD2F0 +_080303D4: + movs r0, #0x80 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _08030426 + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + beq _08030412 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x14] + adds r2, r4, #0 + adds r2, #0x7a + movs r1, #0 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r2] + adds r0, r4, #0 + adds r0, #0x82 + strb r1, [r0] + adds r0, r4, #0 + bl sub_080306C4 + adds r0, r4, #0 + bl sub_080309E8 + b _0803042C +_08030412: + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x1a + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x10 + strb r0, [r4, #0x15] + b _0803042C +_08030426: + adds r0, r4, #0 + adds r0, #0x62 + strb r1, [r0] +_0803042C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030430 +sub_08030430: @ 0x08030430 + push {r4, lr} + adds r4, r0, #0 + bl sub_08030A04 + movs r0, #0x24 + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + ble _0803044A + adds r0, r4, #0 + bl sub_08004274 +_0803044A: + adds r0, r4, #0 + bl sub_080309A8 + adds r1, r4, #0 + adds r1, #0x7a + ldrh r0, [r1] + cmp r0, #0 + beq _0803045E + subs r0, #1 + strh r0, [r1] +_0803045E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08030470 + adds r0, r4, #0 + bl sub_080306C4 +_08030470: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030474 +sub_08030474: @ 0x08030474 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803049C + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0x3c + strh r0, [r1] + adds r0, r4, #0 + bl sub_080309E8 + b _080304BA +_0803049C: + adds r0, r4, #0 + bl sub_080305BC + cmp r0, #0 + beq _080304AE + adds r0, r4, #0 + bl sub_08030590 + b _080304BA +_080304AE: + adds r0, r4, #0 + bl sub_080307D4 + adds r0, r4, #0 + bl sub_080309A8 +_080304BA: + pop {r4, pc} + + thumb_func_start sub_080304BC +sub_080304BC: @ 0x080304BC + push {r4, lr} + adds r4, r0, #0 + bl sub_080309A8 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _080304DE + adds r0, r4, #0 + bl sub_08030580 + b _080304F0 +_080304DE: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _080304F0 + strb r2, [r3] + movs r0, #0x95 + lsls r0, r0, #1 + bl sub_08004488 +_080304F0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080304F4 +sub_080304F4: @ 0x080304F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080309A8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08030520 + movs r0, #7 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #5 + bl sub_080309C8 + adds r0, r4, #0 + bl sub_080307EC +_08030520: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030524 +sub_08030524: @ 0x08030524 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803053E + adds r0, r2, #0 + bl sub_080309A8 + b _08030552 +_0803053E: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08030552 + movs r0, #0 + strb r0, [r3] + movs r0, #0x95 + lsls r0, r0, #1 + bl sub_08004488 +_08030552: + pop {pc} + + thumb_func_start sub_08030554 +sub_08030554: @ 0x08030554 + push {r4, lr} + adds r4, r0, #0 + bl sub_080309A8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803057C + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080309C8 + adds r0, r4, #0 + bl sub_080306C4 +_0803057C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030580 +sub_08030580: @ 0x08030580 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #4 + bl sub_080309C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08030590 +sub_08030590: @ 0x08030590 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3b + movs r0, #1 + strb r0, [r1] + adds r1, #4 + strb r0, [r1] + ldr r0, _080305B8 @ =gUnk_080FD2F8 + str r0, [r4, #0x48] + adds r0, r4, #0 + movs r1, #5 + bl sub_080309C8 + adds r0, r4, #0 + bl sub_080307EC + pop {r4, pc} + .align 2, 0 +_080305B8: .4byte gUnk_080FD2F8 + + thumb_func_start sub_080305BC +sub_080305BC: @ 0x080305BC + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x2e] + movs r2, #0xf + adds r0, r2, #0 + ands r0, r1 + movs r3, #0 + cmp r0, #8 + bne _080305D0 + movs r3, #1 +_080305D0: + ldrh r0, [r4, #0x32] + ands r2, r0 + cmp r2, #8 + bne _080305DC + movs r0, #2 + orrs r3, r0 +_080305DC: + cmp r3, #3 + bne _080305E4 + movs r0, #1 + b _0803064C +_080305E4: + ldrb r1, [r4, #0x15] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0803061E + movs r0, #1 + ands r0, r3 + cmp r0, #0 + bne _08030608 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0803064A + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + b _08030648 +_08030608: + cmp r2, #8 + ble _08030610 + movs r0, #0x10 + b _08030612 +_08030610: + movs r0, #0 +_08030612: + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x15] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _0803064A +_0803061E: + movs r0, #2 + ands r3, r0 + cmp r3, #0 + bne _08030638 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0803064A + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + b _08030648 +_08030638: + ldrh r1, [r4, #0x2e] + movs r0, #0xf + ands r0, r1 + cmp r0, #8 + ble _08030646 + movs r0, #8 + b _08030648 +_08030646: + movs r0, #0x18 +_08030648: + strb r0, [r4, #0x15] +_0803064A: + movs r0, #0 +_0803064C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030650 +sub_08030650: @ 0x08030650 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08030668 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080306B6 +_08030664: + movs r0, #1 + b _080306B8 +_08030668: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + beq _08030698 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080306B6 + ldr r0, _08030694 @ =gUnk_020000B0 + ldr r0, [r0] + movs r1, #0x2e + ldrsh r0, [r0, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r0, #0x10 + cmp r0, #0x20 + bhi _080306B6 + b _08030664 + .align 2, 0 +_08030694: .4byte gUnk_020000B0 +_08030698: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080306B6 + ldr r0, _080306BC @ =gUnk_020000B0 + ldr r0, [r0] + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r0, _080306C0 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + adds r0, #0xa8 + cmp r1, r0 + blt _08030664 +_080306B6: + movs r0, #0 +_080306B8: + pop {r4, pc} + .align 2, 0 +_080306BC: .4byte gUnk_020000B0 +_080306C0: .4byte gUnk_03000BF0 + + thumb_func_start sub_080306C4 +sub_080306C4: @ 0x080306C4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080307C0 + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0 + beq _080307C0 + movs r0, #0x18 + strb r0, [r4, #0xe] + ldr r0, _080307B0 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0800132C + adds r5, r0, #0 + cmp r5, #0xff + beq _080307CC + movs r0, #0 + mov r8, r0 + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + cmp r1, #0 + bne _0803070E + ldrb r0, [r4, #0x14] + adds r6, r4, #0 + adds r6, #0x82 + cmp r0, #0xff + bne _0803072A +_0803070E: + adds r2, r4, #0 + adds r2, #0x82 + ldrb r1, [r2] + movs r0, #3 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #3 + beq _0803072A + adds r0, r5, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + movs r1, #1 + mov r8, r1 +_0803072A: + mov r7, r8 + cmp r7, #0 + bne _08030746 + bl sub_08000E50 + movs r1, #2 + ands r1, r0 + subs r1, #1 + lsls r1, r1, #3 + adds r1, #4 + adds r1, r5, r1 + movs r0, #0x18 + ands r1, r0 + strb r1, [r4, #0x15] +_08030746: + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + ldr r1, _080307B4 @ =gUnk_02027EB4 + mov ip, r1 + cmp r0, #2 + bne _08030758 + ldr r7, _080307B8 @ =gUnk_0200D654 + mov ip, r7 +_08030758: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r3, _080307BC @ =gUnk_080CE164 + ldrb r0, [r4, #0x15] + lsrs r0, r0, #2 + adds r2, r0, r3 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + movs r7, #0x32 + ldrsh r2, [r4, r7] + adds r0, #1 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r2, r2, r0 + mov r0, ip + movs r3, #0 + bl sub_080AE4CC + cmp r0, #0 + beq _0803079E + movs r0, #4 + adds r1, r5, #0 + ands r1, r0 + eors r1, r0 + lsls r1, r1, #1 + movs r0, #0x10 + ands r5, r0 + orrs r1, r5 + strb r1, [r4, #0x15] + movs r0, #0 + mov r8, r0 +_0803079E: + adds r0, r4, #0 + bl sub_080307D4 + ldrb r0, [r6] + lsls r0, r0, #1 + mov r1, r8 + orrs r0, r1 + strb r0, [r6] + b _080307CC + .align 2, 0 +_080307B0: .4byte gUnk_020000B0 +_080307B4: .4byte gUnk_02027EB4 +_080307B8: .4byte gUnk_0200D654 +_080307BC: .4byte gUnk_080CE164 +_080307C0: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #0xa0 + strh r0, [r4, #0x24] +_080307CC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080307D4 +sub_080307D4: @ 0x080307D4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0x15] + lsrs r1, r0, #3 + ldrb r0, [r2, #0x14] + cmp r1, r0 + beq _080307EA + strb r1, [r2, #0x14] + adds r0, r2, #0 + bl sub_080309C8 +_080307EA: + pop {pc} + + thumb_func_start sub_080307EC +sub_080307EC: @ 0x080307EC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r4, [r5, r0] + ldr r1, _0803082C @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r4, r4, r0 + asrs r4, r4, #4 + movs r2, #0x3f + ands r4, r2 + movs r3, #0x32 + ldrsh r0, [r5, r3] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r6, r5, #0 + adds r6, #0x38 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_080001DA + adds r5, #0x78 + strh r0, [r5] + ldr r0, _08030830 @ =0x00004022 + ldrb r2, [r6] + adds r1, r4, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0803082C: .4byte gUnk_03000BF0 +_08030830: .4byte 0x00004022 + + thumb_func_start sub_08030834 +sub_08030834: @ 0x08030834 + push {r4, r5, r6, lr} + adds r1, r0, #0 + adds r1, #0x78 + ldrh r5, [r1] + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r3, _08030868 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r0, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_08030868: .4byte gUnk_03000BF0 + + thumb_func_start sub_0803086C +sub_0803086C: @ 0x0803086C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + ldr r0, [r5, #0x7c] + cmp r0, #0 + bne _08030880 + b _0803099C +_08030880: + ldr r0, _08030928 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803088E + b _0803098A +_0803088E: + ldr r0, _0803092C @ =gUnk_03000BF0 + mov sb, r0 + ldrh r0, [r5, #0x2e] + mov r2, sb + ldrh r1, [r2, #6] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + ldrh r0, [r5, #0x32] + ldrh r1, [r2, #8] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + movs r3, #0x2e + ldrsh r0, [r5, r3] + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r5, r1] + mov r3, sb + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + movs r0, #0x38 + adds r0, r0, r5 + mov r8, r0 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080002B0 + ldr r1, _08030930 @ =0x00004049 + mov sl, r1 + cmp r0, sl + bne _08030950 + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #2 + movs r3, #0xc + bl sub_0800293E + cmp r0, #0 + beq _0803093C + subs r1, r6, #4 + adds r0, r7, #0 + movs r2, #2 + movs r3, #4 + bl sub_0800293E + cmp r0, #0 + beq _0803098A + ldr r2, _08030934 @ =gLinkEntity + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r5, #0x7c] + bl sub_08080840 + ldr r0, _08030938 @ =gUnk_030010A0 + adds r1, r5, #0 + adds r1, #0x80 + ldrb r1, [r1] + adds r0, #0xae + strh r1, [r0] + movs r0, #1 + b _0803099E + .align 2, 0 +_08030928: .4byte gUnk_03003F80 +_0803092C: .4byte gUnk_03000BF0 +_08030930: .4byte 0x00004049 +_08030934: .4byte gLinkEntity +_08030938: .4byte gUnk_030010A0 +_0803093C: + ldr r0, _0803094C @ =0x00004022 + mov r3, r8 + ldrb r2, [r3] + adds r1, r4, #0 + bl sub_0800015E + b _0803098A + .align 2, 0 +_0803094C: .4byte 0x00004022 +_08030950: + adds r1, r6, #6 + adds r0, r7, #0 + movs r2, #2 + movs r3, #5 + bl sub_0800293E + cmp r0, #0 + beq _0803098A + movs r4, #0x2e + ldrsh r1, [r5, r4] + mov r2, sb + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, r8 + ldrb r2, [r0] + mov r0, sl + bl sub_0800015E +_0803098A: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_0803099C: + movs r0, #0 +_0803099E: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080309A8 +sub_080309A8: @ 0x080309A8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _080309C4 + ldrb r0, [r4, #0x1e] + cmp r0, #0x25 + bne _080309C4 + movs r0, #0x19 + strb r0, [r4, #0x1e] +_080309C4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080309C8 +sub_080309C8: @ 0x080309C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004260 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + beq _080309E4 + ldrb r0, [r4, #0x1e] + cmp r0, #0x25 + bne _080309E4 + movs r0, #0x19 + strb r0, [r4, #0x1e] +_080309E4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080309E8 +sub_080309E8: @ 0x080309E8 + push {lr} + adds r1, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #4 + bhi _080309FA + movs r0, #0x90 + lsls r0, r0, #1 + b _08030A00 +_080309FA: + cmp r0, #8 + bhi _08030A02 + movs r0, #0xe0 +_08030A00: + strh r0, [r1, #0x24] +_08030A02: + pop {pc} + + thumb_func_start sub_08030A04 +sub_08030A04: @ 0x08030A04 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08030A24 + movs r0, #0xfe + ands r0, r1 + strb r0, [r4] + ldr r0, _08030A28 @ =0x00000101 + bl sub_08004488 +_08030A24: + pop {r4, pc} + .align 2, 0 +_08030A28: .4byte 0x00000101 + + thumb_func_start sub_08030A2C +sub_08030A2C: @ 0x08030A2C + push {lr} + ldr r1, _08030A38 @ =gUnk_080CE288 + bl sub_0800129E + pop {pc} + .align 2, 0 +_08030A38: .4byte gUnk_080CE288 + + thumb_func_start sub_08030A3C +sub_08030A3C: @ 0x08030A3C + push {lr} + ldr r2, _08030A50 @ =gUnk_080CE2A0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08030A50: .4byte gUnk_080CE2A0 + + thumb_func_start sub_08030A54 +sub_08030A54: @ 0x08030A54 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r6, [r0] + cmp r6, #0x95 + beq _08030A68 + adds r5, r4, #0 + adds r5, #0x45 + cmp r6, #0x8e + bne _08030B0E +_08030A68: + ldr r2, [r4, #0x4c] + ldrb r0, [r2, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + movs r1, #0x10 + eors r0, r1 + asrs r0, r0, #3 + adds r5, r4, #0 + adds r5, #0x45 + ldrb r1, [r4, #0x14] + cmp r0, r1 + bne _08030B0E + movs r3, #1 + ands r3, r0 + cmp r3, #0 + beq _08030AC0 + movs r3, #0x32 + ldrsh r0, [r2, r3] + movs r3, #0x36 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r3, #0x36 + ldrsh r2, [r4, r3] + adds r1, r1, r2 + subs r0, r0, r1 + adds r0, #0x14 + cmp r0, #0x10 + bhi _08030B0E + cmp r6, #0x8e + bne _08030AAE + movs r0, #0 + b _08030AB2 +_08030AAE: + ldrb r0, [r5] + subs r0, #1 +_08030AB2: + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0x10 + strb r0, [r1] + movs r0, #0xfe + b _08030AE0 +_08030AC0: + movs r1, #0x2e + ldrsh r0, [r2, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r0, #8 + cmp r0, #0x10 + bhi _08030B0E + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _08030AEC + adds r0, r4, #0 + bl sub_08031320 + movs r0, #0x86 + lsls r0, r0, #1 +_08030AE0: + bl sub_08004488 + adds r0, r4, #0 + bl sub_08031344 + b _08030B0E +_08030AEC: + cmp r6, #0x8e + bne _08030AF4 + strb r3, [r5] + b _08030AFA +_08030AF4: + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] +_08030AFA: + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xf + strb r0, [r1] + movs r0, #0xfe + bl sub_08004488 + adds r0, r4, #0 + bl sub_08031344 +_08030B0E: + ldrb r0, [r5] + cmp r0, #0 + bne _08030B24 + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0x78 + strb r0, [r1] +_08030B24: + ldr r1, _08030B30 @ =gUnk_080CE288 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08030B30: .4byte gUnk_080CE288 + + thumb_func_start sub_08030B34 +sub_08030B34: @ 0x08030B34 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + cmp r0, #0 + beq _08030B52 + subs r0, #1 + strb r0, [r1] + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + b _08030B70 +_08030B52: + adds r0, r4, #0 + adds r0, #0x3a + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08030B6A + adds r0, r4, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX +_08030B6A: + adds r0, r4, #0 + bl sub_0804A7D4 +_08030B70: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_18 +nullsub_18: @ 0x08030B74 + bx lr + .align 2, 0 + + thumb_func_start sub_08030B78 +sub_08030B78: @ 0x08030B78 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #2 + strb r0, [r4, #0x14] + ldrh r2, [r4, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + ands r1, r0 + adds r1, #0xc + strh r1, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + adds r1, #8 + movs r0, #0x3c + strb r0, [r1] + adds r0, r4, #0 + bl sub_08030F00 + adds r0, r4, #0 + adds r0, #0x7c + ldrh r0, [r0] + cmp r0, #0 + beq _08030BE0 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #0xa + bl sub_08004260 + b _08030BE8 +_08030BE0: + adds r0, r4, #0 + movs r1, #0xe + bl sub_08004260 +_08030BE8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030BEC +sub_08030BEC: @ 0x08030BEC + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0 + beq _08030C08 + bl sub_0807CBE4 + cmp r0, #0 + beq _08030C08 + adds r0, r4, #0 + bl sub_08031320 +_08030C08: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030C0C +sub_08030C0C: @ 0x08030C0C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08030C1C + subs r0, #1 + strb r0, [r4, #0xe] + b _08030C68 +_08030C1C: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08030C68 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, [r4, #0x48] + movs r1, #0 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r4, r3] + ldrb r2, [r2, #1] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + ldr r2, _08030C6C @ =gUnk_020000B0 + ldr r3, [r2] + movs r5, #0x2e + ldrsh r2, [r3, r5] + movs r5, #0x32 + ldrsh r3, [r3, r5] + bl sub_080045D4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0xa + bl sub_08004260 +_08030C68: + pop {r4, r5, pc} + .align 2, 0 +_08030C6C: .4byte gUnk_020000B0 + + thumb_func_start sub_08030C70 +sub_08030C70: @ 0x08030C70 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08030C98 + ldr r2, _08030C94 @ =gUnk_080CE2BC + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x62 + strb r1, [r0] + b _08030CCC + .align 2, 0 +_08030C94: .4byte gUnk_080CE2BC +_08030C98: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08030CCC + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r1, r0 + strb r1, [r4, #0x10] + movs r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08030E58 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08030FB4 +_08030CCC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030CD0 +sub_08030CD0: @ 0x08030CD0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #7 + ands r0, r1 + cmp r0, #1 + beq _08030D0C + cmp r0, #2 + beq _08030D1A + movs r5, #0x80 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08030D66 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + adds r0, #0x79 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08030D66 + b _08030D5A +_08030D0C: + adds r0, r4, #0 + bl sub_08031024 + adds r0, r4, #0 + bl sub_08030E3C + b _08030D66 +_08030D1A: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08030D34 + adds r0, r4, #0 + adds r0, #0x7f + ldrb r0, [r0] + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_08030D34: + adds r0, r4, #0 + adds r0, #0x7a + ldrb r0, [r0] + cmp r0, #0 + beq _08030D44 + adds r0, r4, #0 + bl sub_08031250 +_08030D44: + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08030D66 + adds r0, r4, #0 + bl sub_08030E70 + b _08030D66 +_08030D5A: + movs r0, #0 + movs r1, #5 + strb r1, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x7a + strb r0, [r1] +_08030D66: + pop {r4, r5, pc} + + thumb_func_start sub_08030D68 +sub_08030D68: @ 0x08030D68 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #7 + ands r0, r1 + cmp r0, #1 + beq _08030DA0 + cmp r0, #2 + beq _08030DC4 + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08030E1C + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08030DFC + b _08030DF4 +_08030DA0: + ldrb r0, [r4, #0x14] + adds r1, r0, #0 + cmp r1, #2 + beq _08030DBC + cmp r1, #2 + bls _08030DB0 + subs r0, #1 + b _08030DB2 +_08030DB0: + adds r0, #1 +_08030DB2: + movs r1, #3 + ands r0, r1 + adds r1, r4, #0 + adds r1, #0x7f + strb r0, [r1] +_08030DBC: + adds r0, r4, #0 + bl sub_08030E3C + b _08030E1C +_08030DC4: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08030DDE + adds r0, r4, #0 + adds r0, #0x7f + ldrb r0, [r0] + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_08030DDE: + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08030E1C + adds r0, r4, #0 + bl sub_08030E70 + b _08030E1C +_08030DF4: + adds r0, r4, #0 + bl sub_08030E58 + b _08030E1C +_08030DFC: + ldrb r0, [r4, #0x14] + cmp r0, #2 + bne _08030E1C + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #0xe + bl sub_08004260 + adds r0, r4, #0 + bl sub_08030F00 +_08030E1C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08030E20 +sub_08030E20: @ 0x08030E20 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08030E3A + movs r0, #2 + strb r0, [r4, #0xc] +_08030E3A: + pop {r4, pc} + + thumb_func_start sub_08030E3C +sub_08030E3C: @ 0x08030E3C + push {lr} + adds r2, r0, #0 + adds r2, #0x5a + movs r1, #0 + strb r1, [r2] + movs r1, #0x8c + lsls r1, r1, #9 + str r1, [r0, #0x20] + ldr r0, _08030E54 @ =0x00000157 + bl sub_08004488 + pop {pc} + .align 2, 0 +_08030E54: .4byte 0x00000157 + + thumb_func_start sub_08030E58 +sub_08030E58: @ 0x08030E58 + adds r2, r0, #0 + movs r0, #0 + movs r1, #4 + strb r1, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x7a + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + bx lr + + thumb_func_start sub_08030E70 +sub_08030E70: @ 0x08030E70 + push {lr} + bl sub_08030E80 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_08004488 + pop {pc} + + thumb_func_start sub_08030E80 +sub_08030E80: @ 0x08030E80 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0x14] + lsls r5, r0, #2 + movs r0, #0xf + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08030EC0 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, _08030EFC @ =gUnk_080CE2F4 + adds r0, r5, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + adds r0, r5, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_08030EC0: + movs r0, #0xf + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08030EFA + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, _08030EFC @ =gUnk_080CE2F4 + adds r0, r5, #2 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + adds r0, r5, #3 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_08030EFA: + pop {r4, r5, r6, pc} + .align 2, 0 +_08030EFC: .4byte gUnk_080CE2F4 + + thumb_func_start sub_08030F00 +sub_08030F00: @ 0x08030F00 + push {r4, r5, r6, lr} + mov r6, sl + mov r5, sb + mov r4, r8 + push {r4, r5, r6} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r4, [r5, r0] + ldr r1, _08030FAC @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #8 + subs r4, r4, r0 + asrs r4, r4, #4 + movs r2, #0x3f + ands r4, r2 + movs r3, #0x32 + ldrsh r0, [r5, r3] + ldrh r1, [r1, #8] + adds r1, #0x14 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r6, r5, #0 + adds r6, #0x38 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x80 + strh r0, [r1] + adds r0, r4, #1 + mov sl, r0 + ldrb r1, [r6] + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x82 + strh r0, [r1] + movs r3, #0x40 + adds r3, r3, r4 + mov sb, r3 + ldrb r1, [r6] + mov r0, sb + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x84 + strh r0, [r1] + movs r0, #0x41 + adds r0, r0, r4 + mov r8, r0 + ldrb r1, [r6] + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x86 + strh r0, [r1] + ldr r5, _08030FB0 @ =0x00004022 + ldrb r2, [r6] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0800015E + ldrb r2, [r6] + adds r0, r5, #0 + mov r1, sl + bl sub_0800015E + ldrb r2, [r6] + adds r0, r5, #0 + mov r1, sb + bl sub_0800015E + ldrb r2, [r6] + adds r0, r5, #0 + mov r1, r8 + bl sub_0800015E + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, pc} + .align 2, 0 +_08030FAC: .4byte gUnk_03000BF0 +_08030FB0: .4byte 0x00004022 + + thumb_func_start sub_08030FB4 +sub_08030FB4: @ 0x08030FB4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0x2e + ldrsh r4, [r6, r0] + ldr r1, _08031020 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #8 + subs r4, r4, r0 + asrs r4, r4, #4 + movs r2, #0x3f + ands r4, r2 + movs r3, #0x32 + ldrsh r0, [r6, r3] + ldrh r1, [r1, #8] + adds r1, #0x14 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r0, r6, #0 + adds r0, #0x80 + ldrh r0, [r0] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r2, [r5] + adds r1, r4, #0 + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x82 + ldrh r0, [r0] + adds r1, r4, #1 + ldrb r2, [r5] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x84 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x40 + ldrb r2, [r5] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x86 + ldrh r0, [r0] + adds r4, #0x41 + ldrb r2, [r5] + adds r1, r4, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_08031020: .4byte gUnk_03000BF0 + + thumb_func_start sub_08031024 +sub_08031024: @ 0x08031024 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + movs r1, #1 + bl sub_08049FDC + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + adds r2, r7, #0 + adds r2, #0x79 + ldrb r0, [r2] + cmp r0, #0 + bne _08031084 + cmp r1, #0 + beq _08031074 + movs r1, #0x2e + ldrsh r0, [r7, r1] + ldr r2, [r7, #0x48] + movs r1, #0 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r7, r3] + ldrb r2, [r2, #1] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + ldr r2, _08031070 @ =gUnk_020000B0 + ldr r3, [r2] + movs r4, #0x2e + ldrsh r2, [r3, r4] + movs r4, #0x32 + ldrsh r3, [r3, r4] + b _080311E8 + .align 2, 0 +_08031070: .4byte gUnk_020000B0 +_08031074: + movs r0, #1 + strb r0, [r2] + adds r0, r7, #0 + adds r0, #0x78 + strb r1, [r0] + movs r1, #0x2e + ldrsh r0, [r7, r1] + b _080311D8 +_08031084: + cmp r1, #0 + beq _0803108E + movs r0, #0 + strb r0, [r2] + b _080311EE +_0803108E: + adds r0, r7, #0 + adds r0, #0x78 + ldrb r2, [r0] + adds r1, r2, #0 + mov sl, r0 + cmp r1, #0 + bne _0803109E + b _080311D4 +_0803109E: + cmp r1, #1 + bne _080310E2 + movs r0, #0x80 + orrs r0, r2 + mov r3, sl + strb r0, [r3] + movs r4, #0x2e + ldrsh r0, [r7, r4] + movs r2, #0x32 + ldrsh r1, [r7, r2] + adds r2, r7, #0 + adds r2, #0x74 + ldrh r2, [r2] + adds r3, r7, #0 + adds r3, #0x76 + ldrh r3, [r3] + bl sub_080045D4 + strb r0, [r7, #0x15] + adds r0, #4 + movs r2, #0x18 + ands r0, r2 + adds r1, r7, #0 + adds r1, #0x7b + strb r0, [r1] + ldrb r3, [r7, #0x15] + cmp r0, r3 + bhs _080310DC + adds r0, #8 + ands r0, r2 + b _080310F0 +_080310DC: + subs r0, #8 + ands r0, r2 + b _080310F0 +_080310E2: + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080310F2 + ldrb r0, [r7, #0x15] + movs r1, #0x10 + eors r0, r1 +_080310F0: + strb r0, [r7, #0x15] +_080310F2: + mov r4, sl + ldrb r2, [r4] + movs r0, #0x70 + ands r0, r2 + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08031120 + lsrs r0, r0, #0x19 + movs r1, #0x8f + ands r1, r2 + orrs r0, r1 + strb r0, [r4] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080311EE + adds r0, r7, #0 + adds r0, #0x7b + ldrb r0, [r0] + strb r0, [r7, #0x15] + movs r0, #0 + strb r0, [r4] + b _080311EE +_08031120: + movs r0, #0x7b + adds r0, r0, r7 + mov sb, r0 + ldrb r4, [r0] + lsrs r4, r4, #1 + movs r1, #0x2e + ldrsh r0, [r7, r1] + ldr r5, _080311B4 @ =gUnk_080CE2C0 + adds r1, r4, r5 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r7, r2] + adds r2, r4, #1 + adds r2, r2, r5 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + movs r3, #0x38 + adds r3, r3, r7 + mov r8, r3 + ldrb r2, [r3] + bl sub_080002A4 + adds r6, r0, #0 + movs r1, #0x2e + ldrsh r0, [r7, r1] + adds r1, r4, #2 + adds r1, r1, r5 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r7, r2] + adds r4, #3 + adds r4, r4, r5 + movs r2, #0 + ldrsb r2, [r4, r2] + adds r1, r1, r2 + mov r3, r8 + ldrb r2, [r3] + bl sub_080002A4 + adds r1, r0, #0 + ldr r2, _080311B8 @ =gUnk_080B3E80 + adds r6, r6, r2 + ldrb r0, [r6] + mov r3, sb + cmp r0, #0 + bne _08031194 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + beq _080311C8 +_08031194: + movs r0, #1 + cmp r0, #0 + beq _080311C8 + ldrb r0, [r7, #0x15] + lsrs r0, r0, #3 + ldrb r4, [r7, #0x14] + cmp r0, r4 + bne _080311BC + mov r0, sl + ldrb r1, [r0] + movs r0, #0x20 + orrs r0, r1 + mov r1, sl + strb r0, [r1] + b _080311EE + .align 2, 0 +_080311B4: .4byte gUnk_080CE2C0 +_080311B8: .4byte gUnk_080B3E80 +_080311BC: + mov r2, sl + ldrb r1, [r2] + movs r0, #0x40 + orrs r0, r1 + strb r0, [r2] + b _080311EE +_080311C8: + ldrb r0, [r3] + movs r1, #0 + strb r0, [r7, #0x15] + mov r3, sl + strb r1, [r3] + b _080311EE +_080311D4: + movs r4, #0x2e + ldrsh r0, [r7, r4] +_080311D8: + movs r2, #0x32 + ldrsh r1, [r7, r2] + adds r2, r7, #0 + adds r2, #0x74 + ldrh r2, [r2] + adds r3, r7, #0 + adds r3, #0x76 + ldrh r3, [r3] +_080311E8: + bl sub_080045D4 + strb r0, [r7, #0x15] +_080311EE: + ldrb r0, [r7, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #3 + ldrb r3, [r7, #0x14] + cmp r0, r3 + bne _0803120C + adds r1, r7, #0 + adds r1, #0x7a + movs r0, #1 + strb r0, [r1] + ldrb r0, [r7, #0x14] + adds r1, #5 + b _08031232 +_0803120C: + adds r1, r7, #0 + adds r1, #0x7a + movs r0, #0 + strb r0, [r1] + ldrb r0, [r7, #0x15] + ldrb r2, [r7, #0x14] + lsls r1, r2, #3 + subs r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0x10 + bls _08031228 + subs r0, r2, #1 + b _0803122A +_08031228: + adds r0, r2, #1 +_0803122A: + movs r1, #3 + ands r0, r1 + adds r1, r7, #0 + adds r1, #0x7f +_08031232: + strb r0, [r1] + ldrb r0, [r7, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + movs r1, #0 + strb r0, [r7, #0x15] + strh r1, [r7, #0x2c] + strh r1, [r7, #0x30] + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08031250 +sub_08031250: @ 0x08031250 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r4, [r6, #0x14] + lsls r4, r4, #2 + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldr r5, _0803130C @ =gUnk_080CE2C0 + adds r0, r4, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r2, r2, r0 + movs r1, #0x32 + ldrsh r3, [r6, r1] + adds r0, r4, #1 + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r3, r3, r0 + adds r0, r6, #0 + movs r1, #9 + bl sub_08008796 + movs r0, #0x2e + ldrsh r2, [r6, r0] + adds r0, r4, #2 + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r2, r2, r0 + movs r1, #0x32 + ldrsh r3, [r6, r1] + adds r4, #3 + adds r4, r4, r5 + movs r0, #0 + ldrsb r0, [r4, r0] + adds r3, r3, r0 + adds r0, r6, #0 + movs r1, #9 + bl sub_08008796 + adds r2, r6, #0 + adds r2, #0x79 + ldrb r0, [r2] + cmp r0, #0 + beq _08031316 + movs r3, #0 + movs r1, #0x2e + ldrsh r0, [r6, r1] + adds r1, r6, #0 + adds r1, #0x74 + ldrh r1, [r1] + subs r0, r0, r1 + adds r0, #2 + cmp r0, #4 + bhi _080312C8 + strh r1, [r6, #0x2e] + movs r3, #0x80 +_080312C8: + movs r1, #0x32 + ldrsh r0, [r6, r1] + adds r1, r6, #0 + adds r1, #0x76 + ldrh r1, [r1] + subs r0, r0, r1 + adds r0, #2 + cmp r0, #4 + bhi _080312E2 + strh r1, [r6, #0x32] + ldrb r0, [r2] + orrs r3, r0 + strb r3, [r2] +_080312E2: + ldrb r1, [r2] + movs r4, #0x80 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _0803131C + adds r0, r6, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0803131C + adds r2, r6, #0 + adds r2, #0x78 + ldrb r1, [r2] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _08031310 + movs r0, #0x82 + strb r0, [r2] + b _0803131C + .align 2, 0 +_0803130C: .4byte gUnk_080CE2C0 +_08031310: + movs r0, #1 + strb r0, [r2] + b _0803131C +_08031316: + adds r0, r6, #0 + bl sub_080AEF88 +_0803131C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08031320 +sub_08031320: @ 0x08031320 + push {lr} + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0x1e + strb r1, [r0, #0xe] + ldr r1, _08031340 @ =gUnk_080FD308 + str r1, [r0, #0x48] + movs r1, #0xa + bl sub_08004260 + pop {pc} + .align 2, 0 +_08031340: .4byte gUnk_080FD308 + + thumb_func_start sub_08031344 +sub_08031344: @ 0x08031344 + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x4c] + bl sub_08017A90 + adds r3, r0, #0 + cmp r3, #0 + beq _0803136C + ldrb r0, [r3, #0x14] + lsls r0, r0, #1 + ldr r1, _08031370 @ =gUnk_080CE304 + adds r0, r0, r1 + ldrb r1, [r0] + adds r2, r3, #0 + adds r2, #0x62 + strb r1, [r2] + ldrb r1, [r0, #1] + adds r0, r3, #0 + adds r0, #0x63 + strb r1, [r0] +_0803136C: + pop {pc} + .align 2, 0 +_08031370: .4byte gUnk_080CE304 + + thumb_func_start sub_08031374 +sub_08031374: @ 0x08031374 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08031390 @ =gUnk_080CE448 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08031390: .4byte gUnk_080CE448 + + thumb_func_start sub_08031394 +sub_08031394: @ 0x08031394 + push {lr} + ldr r2, _080313A8 @ =gUnk_080CE460 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080313A8: .4byte gUnk_080CE460 + + thumb_func_start sub_080313AC +sub_080313AC: @ 0x080313AC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #3 + bne _080313C8 + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0x3c + strb r0, [r1] + adds r0, r4, #0 + bl sub_08031600 +_080313C8: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _080313DA + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_080313DA: + ldr r1, _080313E4 @ =gUnk_080CE448 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_080313E4: .4byte gUnk_080CE448 + + thumb_func_start sub_080313E8 +sub_080313E8: @ 0x080313E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08031404 + ldr r0, _08031408 @ =gUnk_080CE470 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08031404: + pop {r4, pc} + .align 2, 0 +_08031408: .4byte gUnk_080CE470 + + thumb_func_start sub_0803140C +sub_0803140C: @ 0x0803140C + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_08031418 +sub_08031418: @ 0x08031418 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_08031420 +sub_08031420: @ 0x08031420 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08031432 + adds r0, r4, #0 + bl sub_0804A7D4 +_08031432: + pop {r4, pc} + + thumb_func_start sub_08031434 +sub_08031434: @ 0x08031434 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + rsbs r0, r0, #0 + adds r3, r0, #0 + movs r0, #0xff + strb r0, [r4, #0x14] + movs r2, #1 + strb r2, [r4, #0x1c] + ldrh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08031460 + adds r0, r4, #0 + bl sub_08031600 + b _0803147A +_08031460: + strb r2, [r4, #0xc] + movs r0, #0 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, _0803147C @ =0x0000FF80 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0x1e] + orrs r0, r3 + strb r0, [r4, #0x1e] +_0803147A: + pop {r4, pc} + .align 2, 0 +_0803147C: .4byte 0x0000FF80 + + thumb_func_start sub_08031480 +sub_08031480: @ 0x08031480 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080314CC + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08031496 + subs r0, #1 + strb r0, [r4, #0xe] + b _080314FA +_08031496: + adds r0, r4, #0 + bl sub_08031600 + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] + ldr r0, _080314C8 @ =0x0000012D + bl sub_080A3268 + b _080314FA + .align 2, 0 +_080314C8: .4byte 0x0000012D +_080314CC: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080314FA + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x18] + subs r0, #0x13 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_08016A04 + movs r0, #0x84 + bl sub_08004488 +_080314FA: + pop {r4, pc} + + thumb_func_start sub_080314FC +sub_080314FC: @ 0x080314FC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08031510 + subs r0, #1 + strb r0, [r4, #0xf] + b _080315BA +_08031510: + adds r5, r4, #0 + adds r5, #0x78 + ldrb r0, [r5] + cmp r0, #0 + beq _0803151E + subs r0, #1 + strb r0, [r5] +_0803151E: + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _08031578 + ldrb r0, [r5] + cmp r0, #0 + bne _080315A2 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080315A2 + ldr r0, _08031574 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0xc + bl sub_0804A044 + adds r1, r0, #0 + cmp r1, #0xff + beq _080315A2 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0xd0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r2, r4, #0 + adds r2, #0x7a + strh r0, [r2] + strb r1, [r4, #0x15] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x1b + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + b _080315BA + .align 2, 0 +_08031574: .4byte gUnk_020000B0 +_08031578: + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080315A2 + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r1, r0, #3 + ldrb r0, [r4, #0x14] + cmp r1, r0 + beq _080315A2 + strb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_080315A2: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080315B4 + adds r0, r4, #0 + bl sub_08031600 +_080315B4: + adds r0, r4, #0 + bl sub_0803163C +_080315BA: + pop {r4, r5, pc} + + thumb_func_start sub_080315BC +sub_080315BC: @ 0x080315BC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080315D4 + subs r0, #1 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004276 + b _080315FC +_080315D4: + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _080315EE + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0803163C + cmp r0, #0 + bne _080315FC +_080315EE: + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0x1e + strb r0, [r1] + adds r0, r4, #0 + bl sub_08031600 +_080315FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08031600 +sub_08031600: @ 0x08031600 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x30 + ands r0, r1 + adds r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r1, r0, #3 + ldrb r0, [r4, #0x14] + cmp r1, r0 + beq _08031638 + strb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_08031638: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803163C +sub_0803163C: @ 0x0803163C + push {r4, lr} + adds r4, r0, #0 + bl sub_080002B8 + cmp r0, #0x13 + bne _08031652 + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + lsrs r0, r0, #1 + b _08031658 +_08031652: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] +_08031658: + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_080AEF88 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08031664 +sub_08031664: @ 0x08031664 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0803167C @ =gUnk_080CE530 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0803167C: .4byte gUnk_080CE530 + + thumb_func_start sub_08031680 +sub_08031680: @ 0x08031680 + push {lr} + ldr r2, _08031694 @ =gUnk_080CE548 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08031694: .4byte gUnk_080CE548 + + thumb_func_start nullsub_152 +nullsub_152: @ 0x08031698 + bx lr + .align 2, 0 + + thumb_func_start sub_0803169C +sub_0803169C: @ 0x0803169C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + bne _080316C4 + movs r2, #1 + strb r2, [r4, #0xc] + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x40 + strh r0, [r4, #0x24] + strb r2, [r4, #0xf] + b _080316D4 +_080316C4: + ldr r0, _080316D8 @ =gUnk_080CE554 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_080316D4: + pop {r4, pc} + .align 2, 0 +_080316D8: .4byte gUnk_080CE554 + + thumb_func_start sub_080316DC +sub_080316DC: @ 0x080316DC + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_080316E8 +sub_080316E8: @ 0x080316E8 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_080316F0 +sub_080316F0: @ 0x080316F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08031702 + adds r0, r4, #0 + bl sub_0804A7D4 +_08031702: + pop {r4, pc} + + thumb_func_start sub_08031704 +sub_08031704: @ 0x08031704 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + adds r0, r4, #0 + bl sub_080317F8 + pop {r4, pc} + + thumb_func_start sub_08031714 +sub_08031714: @ 0x08031714 + push {r4, lr} + adds r4, r0, #0 + bl sub_080317B4 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803176E + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + adds r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08031750 + ldrb r1, [r4, #0xf] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08031750 + adds r0, r4, #0 + bl sub_08049EE4 + b _08031766 +_08031750: + ldrb r0, [r4, #0x15] + adds r0, #0x18 + strb r0, [r4, #0x15] + bl sub_08000E50 + movs r1, #0xe + ands r0, r1 + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x1f + ands r0, r1 +_08031766: + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080317E0 +_0803176E: + pop {r4, pc} + + thumb_func_start sub_08031770 +sub_08031770: @ 0x08031770 + push {r4, lr} + adds r1, r0, #0 + adds r4, r1, #0 + adds r4, #0x80 + ldrh r0, [r4] + cmp r0, #0 + beq _08031790 + subs r0, #1 + strh r0, [r4] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080317B2 + adds r0, r1, #0 + bl sub_08031840 + b _080317B2 +_08031790: + ldr r0, [r1, #0x54] + cmp r0, #0 + bne _080317AA + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r4] + b _080317B2 +_080317AA: + ldr r0, [r0, #4] + cmp r0, #0 + bne _080317B2 + str r0, [r1, #0x54] +_080317B2: + pop {r4, pc} + + thumb_func_start sub_080317B4 +sub_080317B4: @ 0x080317B4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0x30 + ands r1, r0 + movs r2, #0xd + rsbs r2, r2, #0 + adds r0, r2, #0 + cmp r1, #0 + beq _080317D0 + movs r1, #0xc + rsbs r1, r1, #0 + adds r0, r1, #0 +_080317D0: + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080317E0 +sub_080317E0: @ 0x080317E0 + push {lr} + ldrb r1, [r0, #0x15] + adds r1, #2 + movs r2, #0x1c + ands r1, r2 + lsrs r1, r1, #2 + strb r1, [r0, #0x14] + ldrb r1, [r0, #0x14] + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080317F8 +sub_080317F8: @ 0x080317F8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + movs r5, #1 + strb r5, [r4, #0xc] + movs r6, #0 + ldr r1, _08031838 @ =0x0000FFF4 + strh r1, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x38 + strb r5, [r1] + adds r3, r4, #0 + adds r3, #0x3c + ldrb r2, [r3] + movs r1, #0x10 + orrs r1, r2 + strb r1, [r3] + strb r5, [r4, #0x1c] + strb r0, [r4, #0x15] + ldr r0, _0803183C @ =gUnk_080CE560 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_080317E0 + strb r6, [r4, #0xe] + movs r0, #0x20 + strb r0, [r4, #0xf] + pop {r4, r5, r6, pc} + .align 2, 0 +_08031838: .4byte 0x0000FFF4 +_0803183C: .4byte gUnk_080CE560 + + thumb_func_start sub_08031840 +sub_08031840: @ 0x08031840 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xa] + movs r0, #0x2d + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _08031862 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r5, [r4, #0x50] + str r4, [r5, #0x54] + movs r0, #1 + strb r0, [r4, #0xb] +_08031862: + pop {r4, r5, pc} + + thumb_func_start sub_08031864 +sub_08031864: @ 0x08031864 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + adds r4, r0, #0 + cmp r4, #0 + beq _0803189C + adds r0, r5, #0 + adds r0, #0x3a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08031886 + adds r0, r5, #0 + bl sub_08032338 +_08031886: + ldr r0, _08031898 @ =gUnk_080012C8 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _080318BE + .align 2, 0 +_08031898: .4byte gUnk_080012C8 +_0803189C: + ldr r4, _080318C0 @ =gUnk_080CE56C + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC +_080318BE: + pop {r4, r5, pc} + .align 2, 0 +_080318C0: .4byte gUnk_080CE56C + + thumb_func_start sub_080318C4 +sub_080318C4: @ 0x080318C4 + push {lr} + ldr r2, _080318D8 @ =gUnk_080CE584 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080318D8: .4byte gUnk_080CE584 + + thumb_func_start sub_080318DC +sub_080318DC: @ 0x080318DC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + adds r0, #0x80 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080318FA + b _08031A36 +_080318FA: + ldrb r0, [r4, #0xa] + adds r5, r4, #0 + adds r5, #0x42 + cmp r0, #1 + bne _080319DE + ldrb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x45 + str r1, [sp] + cmp r0, #6 + bhi _080319AC + ldrb r0, [r5] + cmp r0, #0 + beq _080319AC + ldr r3, [r4, #0x54] + movs r0, #0x29 + adds r0, r0, r4 + mov sb, r0 + movs r1, #0x3e + adds r1, r1, r4 + mov sl, r1 + cmp r3, #0 + beq _08031960 + ldr r0, [r4, #0x50] + str r0, [r3, #0x50] + movs r0, #5 + mov ip, r0 + movs r1, #0x39 + rsbs r1, r1, #0 + mov r8, r1 + movs r7, #8 + movs r6, #0xf4 +_0803193A: + mov r0, ip + strb r0, [r3, #0xc] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r0, [r2] + mov r1, r8 + ands r1, r0 + orrs r1, r7 + strb r1, [r2] + adds r1, r3, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _0803195A + strb r6, [r1] +_0803195A: + ldr r3, [r3, #0x54] + cmp r3, #0 + bne _0803193A +_08031960: + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _0803196C + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] + b _08031974 +_0803196C: + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _08031974 + str r4, [r4, #0x50] +_08031974: + movs r0, #9 + strb r0, [r4, #0xc] + mov r0, sb + ldrb r1, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + mov r1, sb + strb r0, [r1] + mov r1, sl + ldrb r0, [r1] + cmp r0, #0xf + bhi _0803199C + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _080319A2 +_0803199C: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 +_080319A2: + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0xe + bl sub_08004260 +_080319AC: + ldr r1, [sp] + ldrb r0, [r1] + cmp r0, #0 + bne _080319DE + bl sub_08000E50 + adds r2, r4, #0 + adds r2, #0x3e + movs r1, #7 + ands r0, r1 + ldrb r1, [r2] + adds r0, r0, r1 + subs r0, #4 + movs r1, #0x1f + ands r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0xb] + lsls r0, r1, #1 + adds r0, r0, r1 + ldrb r1, [r5] + adds r0, r0, r1 + strb r0, [r5] + adds r0, r4, #0 + bl sub_08032338 +_080319DE: + ldrb r0, [r5] + cmp r0, #0 + beq _08031A36 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08031A36 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080319FC + movs r0, #8 + b _080319FE +_080319FC: + movs r0, #9 +_080319FE: + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + cmp r0, #0xf + bhi _08031A14 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _08031A1A +_08031A14: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 +_08031A1A: + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r2] + adds r0, r4, #0 + movs r1, #0xe + bl sub_08004260 +_08031A36: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08031A48 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08031A48: + ldr r1, _08031A5C @ =gUnk_080CE56C + adds r0, r4, #0 + bl sub_0804AA30 + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08031A5C: .4byte gUnk_080CE56C + + thumb_func_start sub_08031A60 +sub_08031A60: @ 0x08031A60 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08031A7A + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 +_08031A7A: + adds r0, r4, #0 + bl sub_08001324 + + thumb_func_start nullsub_153 +nullsub_153: @ 0x08031A80 + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_154 +nullsub_154: @ 0x08031A84 + bx lr + .align 2, 0 + + thumb_func_start sub_08031A88 +sub_08031A88: @ 0x08031A88 + push {lr} + ldr r2, _08031A9C @ =gUnk_080CE58C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08031A9C: .4byte gUnk_080CE58C + + thumb_func_start sub_08031AA0 +sub_08031AA0: @ 0x08031AA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + bl sub_08000E50 + adds r4, #0x79 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08031AC8 +sub_08031AC8: @ 0x08031AC8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0xe] + cmp r0, #0 + beq _08031AD8 + subs r0, #1 + strb r0, [r6, #0xe] + b _08031B44 +_08031AD8: + adds r0, r6, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08031B44 + bl sub_08000E50 + adds r5, r0, #0 + adds r0, r6, #0 + adds r0, #0x74 + ldrh r4, [r0] + adds r0, r5, #0 + movs r1, #5 + bl __modsi3 + lsls r0, r0, #4 + adds r4, r4, r0 + adds r7, r4, #0 + subs r7, #0x20 + adds r0, r6, #0 + adds r0, #0x76 + ldrh r4, [r0] + lsrs r5, r5, #4 + adds r0, r5, #0 + movs r1, #5 + bl __modsi3 + lsls r0, r0, #4 + adds r4, r4, r0 + subs r4, #0x20 + adds r0, r6, #0 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080002D4 + cmp r0, #0 + bne _08031B44 + movs r0, #2 + strb r0, [r6, #0xc] + ldrb r1, [r6, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r6, #0x18] + strh r7, [r6, #0x2e] + strh r4, [r6, #0x32] + adds r0, r6, #0 + movs r1, #0 + bl sub_08004260 +_08031B44: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08031B48 +sub_08031B48: @ 0x08031B48 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08031B6C + movs r0, #0 + strb r0, [r2] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + b _08031B90 +_08031B6C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08031B90 + movs r0, #3 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08031B94 @ =gUnk_080CE5B0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08031B90: + pop {r4, pc} + .align 2, 0 +_08031B94: .4byte gUnk_080CE5B0 + + thumb_func_start sub_08031B98 +sub_08031B98: @ 0x08031B98 + push {r4, lr} + adds r4, r0, #0 + bl sub_08031E04 + cmp r0, #0 + beq _08031BDA + movs r0, #5 + strb r0, [r4, #0xc] + ldr r0, _08031BC4 @ =gUnk_020000B0 + ldr r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r2, #0x2e + ldrsh r0, [r0, r2] + cmp r1, r0 + ble _08031BC8 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _08031BCE + .align 2, 0 +_08031BC4: .4byte gUnk_020000B0 +_08031BC8: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 +_08031BCE: + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + b _08031C1A +_08031BDA: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08031BFA + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08031BFA + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] +_08031BFA: + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08031C1A + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08031C1A: + pop {r4, pc} + + thumb_func_start sub_08031C1C +sub_08031C1C: @ 0x08031C1C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08031C50 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08031C54 @ =gUnk_080CE5B8 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_08031C50: + pop {r4, pc} + .align 2, 0 +_08031C54: .4byte gUnk_080CE5B8 + + thumb_func_start sub_08031C58 +sub_08031C58: @ 0x08031C58 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + bl sub_08004274 + adds r3, r7, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _08031D54 + ldr r0, _08031D50 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x42 + bhi _08031D66 + bl sub_08000E50 + adds r6, r0, #0 + movs r0, #3 + mov sb, r0 + ands r6, r0 + movs r0, #0x2e + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + movs r0, #0 + mov r8, r0 + mov r0, r8 + strb r0, [r4, #0xb] + mov r0, r8 + str r0, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x74 + strb r6, [r0] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_08031E48 + movs r0, #0x2e + movs r1, #1 + bl sub_0804AA60 + adds r5, r0, #0 + str r5, [r4, #0x54] + movs r0, #1 + strb r0, [r5, #0xb] + str r4, [r5, #0x50] + adds r0, r5, #0 + adds r0, #0x74 + strb r6, [r0] + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_08031E48 + movs r0, #0x2e + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + str r4, [r5, #0x54] + movs r0, #2 + strb r0, [r4, #0xb] + str r5, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x74 + strb r6, [r0] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_08031E48 + movs r0, #0x2e + movs r1, #1 + bl sub_0804AA60 + adds r5, r0, #0 + str r5, [r4, #0x54] + mov r0, sb + strb r0, [r5, #0xb] + str r4, [r5, #0x50] + adds r0, r5, #0 + adds r0, #0x74 + strb r6, [r0] + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_08031E48 + movs r0, #0x2e + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + str r1, [r5, #0x54] + movs r0, #4 + strb r0, [r1, #0xb] + str r5, [r1, #0x50] + mov r0, r8 + str r0, [r1, #0x54] + adds r0, r1, #0 + adds r0, #0x74 + strb r6, [r0] + adds r0, r7, #0 + bl sub_08031E48 + movs r0, #6 + strb r0, [r7, #0xc] + movs r0, #0x14 + strb r0, [r7, #0xe] + adds r2, r7, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r7, #0 + movs r1, #7 + bl sub_08004260 + b _08031D66 + .align 2, 0 +_08031D50: .4byte gUnk_03003DBC +_08031D54: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08031D66 + strb r2, [r3] + ldrb r1, [r7, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r7, #0x10] +_08031D66: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08031D70 +sub_08031D70: @ 0x08031D70 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08031D9C + movs r0, #7 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #5 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #9 + ands r0, r1 + strb r0, [r4, #0x18] +_08031D9C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08031DA0 +sub_08031DA0: @ 0x08031DA0 + push {lr} + adds r1, r0, #0 + ldrb r2, [r1, #0xe] + movs r0, #0xf + ands r0, r2 + cmp r0, #0 + bne _08031DC2 + cmp r2, #0x50 + bne _08031DBA + adds r0, r1, #0 + bl sub_0805E7BC + b _08031DC2 +_08031DBA: + movs r0, #1 + strb r0, [r1, #0xc] + movs r0, #0xb4 + strb r0, [r1, #0xe] +_08031DC2: + pop {pc} + + thumb_func_start sub_08031DC4 +sub_08031DC4: @ 0x08031DC4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08031DE8 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xb4 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0xb8 + ands r0, r1 + strb r0, [r4, #0x18] + b _08031E00 +_08031DE8: + adds r0, r4, #0 + bl sub_08004274 + ldrb r1, [r5] + movs r0, #0xf + ands r0, r1 + cmp r0, #2 + bne _08031E00 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_08031E00: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08031E04 +sub_08031E04: @ 0x08031E04 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r2, r0, #0 + cmp r2, #0 + beq _08031E44 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r3, #6 + ands r3, r0 + ldr r0, _08031E40 @ =gUnk_080CE5C0 + adds r3, r3, r0 + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r0, #0 + ldrsb r0, [r3, r0] + adds r1, r1, r0 + movs r0, #0x32 + ldrsh r2, [r2, r0] + movs r0, #1 + ldrsb r0, [r3, r0] + adds r2, r2, r0 + adds r0, r4, #0 + movs r3, #0x50 + bl sub_0806FCB8 + b _08031E46 + .align 2, 0 +_08031E40: .4byte gUnk_080CE5C0 +_08031E44: + movs r0, #0 +_08031E46: + pop {r4, pc} + + thumb_func_start sub_08031E48 +sub_08031E48: @ 0x08031E48 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r0, #0x6c + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x6c + strb r1, [r0] + adds r0, r5, #0 + adds r0, #0x70 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x70 + strh r1, [r0] + adds r0, r5, #0 + adds r0, #0x72 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + adds r0, r5, #0 + adds r0, #0x6e + ldrb r0, [r0] + subs r1, #4 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x6f + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] + str r5, [r4, #0x7c] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08031E90 +sub_08031E90: @ 0x08031E90 + push {lr} + ldr r2, _08031EA4 @ =gUnk_080CE5C8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08031EA4: .4byte gUnk_080CE5C8 + + thumb_func_start sub_08031EA8 +sub_08031EA8: @ 0x08031EA8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3a + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x80 + lsls r0, r0, #0xb + str r0, [r4, #0x20] + ldrb r0, [r4, #0xb] + movs r1, #4 + subs r1, r1, r0 + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + strh r0, [r4, #0x36] + bl sub_08000E50 + adds r1, r4, #0 + adds r1, #0x79 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08031EE8 +sub_08031EE8: @ 0x08031EE8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x20] + subs r0, r0, r1 + str r0, [r4, #0x34] + ldr r0, _08031F4C @ =0xFFFFE800 + adds r1, r1, r0 + str r1, [r4, #0x20] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bgt _08031F1E + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _08031F10 + ldr r0, _08031F50 @ =0x0000012B + bl sub_08004488 +_08031F10: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] +_08031F1E: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08031F2E + adds r0, r4, #0 + bl sub_08004274 +_08031F2E: + ldr r0, [r4, #0x20] + cmp r0, #0 + bgt _08031F48 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 +_08031F48: + pop {r4, pc} + .align 2, 0 +_08031F4C: .4byte 0xFFFFE800 +_08031F50: .4byte 0x0000012B + + thumb_func_start sub_08031F54 +sub_08031F54: @ 0x08031F54 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08031FAC @ =gUnk_080CE5F0 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r4, #0 + bl sub_08003FC4 + ldrb r1, [r4, #0xb] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + rsbs r0, r0, #0 + movs r2, #0x36 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _08031FAA + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x14 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0xb] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #1 + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _08031FA2 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_08031FA2: + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 +_08031FAA: + pop {r4, pc} + .align 2, 0 +_08031FAC: .4byte gUnk_080CE5F0 + + thumb_func_start sub_08031FB0 +sub_08031FB0: @ 0x08031FB0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08032006 + ldr r0, [r5, #0x50] + cmp r0, #0 + bne _08031FD8 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032006 +_08031FD8: + movs r4, #0 + movs r0, #4 + strb r0, [r5, #0xc] + adds r0, r5, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r5, #0x15] + adds r0, r5, #0 + adds r0, #0x76 + strb r4, [r0] + ldr r0, [r5, #0x54] + cmp r0, #0 + beq _08031FFE + adds r0, r5, #0 + movs r1, #9 + bl sub_08004260 + b _08032006 +_08031FFE: + adds r0, r5, #0 + movs r1, #8 + bl sub_08004260 +_08032006: + pop {r4, r5, pc} + + thumb_func_start sub_08032008 +sub_08032008: @ 0x08032008 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_080322A4 + adds r7, r0, #0 + cmp r7, #0 + beq _08032018 + b _08032144 +_08032018: + ldr r5, [r4, #0x50] + cmp r5, #0 + bne _080320D4 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08032060 + adds r1, r4, #0 + adds r1, #0x79 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r1, #0xff + ands r0, r1 + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08032052 + ldr r0, _0803205C @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_08032052: + adds r0, r4, #0 + adds r0, #0x76 + strb r7, [r0] + b _080320AC + .align 2, 0 +_0803205C: .4byte gUnk_020000B0 +_08032060: + adds r1, r4, #0 + adds r1, #0x76 + ldrb r0, [r1] + cmp r0, #0 + beq _0803207C + subs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7a + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004596 + b _080320AC +_0803207C: + movs r0, #0x10 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0803209E + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803209E + adds r0, r4, #0 + bl sub_08049EE4 + b _080320A6 +_0803209E: + bl sub_08000E50 + movs r1, #0x1e + ands r0, r1 +_080320A6: + adds r1, r4, #0 + adds r1, #0x7a + strb r0, [r1] +_080320AC: + ldrb r1, [r4, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _080320CC + lsrs r1, r1, #4 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_080320CC: + adds r0, r4, #0 + bl sub_080AEF88 + b _0803213E +_080320D4: + adds r6, r4, #0 + adds r6, #0x77 + ldrb r0, [r6] + cmp r0, #0 + bne _0803210E + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #1 + bl sub_0806FCB8 + cmp r0, #0 + bne _0803213E + movs r0, #1 + strb r0, [r6] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080322E8 + adds r0, r4, #0 + bl sub_0806F69C + b _0803213E +_0803210E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080322E8 + adds r0, r4, #0 + bl sub_0806F69C + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _0803213E + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x32 + ldrsh r0, [r5, r2] + cmp r1, r0 + bne _0803213E + strb r7, [r6] +_0803213E: + adds r0, r4, #0 + bl sub_08004274 +_08032144: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08032148 +sub_08032148: @ 0x08032148 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + cmp r0, #0 + bne _0803215E + adds r0, r4, #0 + bl sub_08032290 +_0803215E: + pop {r4, pc} + + thumb_func_start sub_08032160 +sub_08032160: @ 0x08032160 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080321C2 + movs r0, #7 + strb r0, [r4, #0xc] + ldr r2, _08032190 @ =gUnk_080CE5FA + adds r0, r4, #0 + adds r0, #0x74 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + ldrb r1, [r4, #0xb] + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r4, #0x15] + cmp r0, #0xf + bls _08032194 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + b _0803219C + .align 2, 0 +_08032190: .4byte gUnk_080CE5FA +_08032194: + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 +_0803219C: + strb r0, [r4, #0x18] + movs r0, #0xf0 + strh r0, [r4, #0x24] + movs r0, #0x90 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0xc + bl sub_08004260 +_080321C2: + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _080321E6 + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _080321E2 + movs r2, #0 +_080321D0: + adds r0, r1, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _080321DC + strb r2, [r1, #0xe] +_080321DC: + ldr r1, [r1, #0x50] + cmp r1, #0 + bne _080321D0 +_080321E2: + movs r0, #0 + strb r0, [r4, #0xe] +_080321E6: + pop {r4, pc} + + thumb_func_start sub_080321E8 +sub_080321E8: @ 0x080321E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + bne _08032202 + movs r0, #8 + strb r0, [r4, #0xc] +_08032202: + pop {r4, pc} + + thumb_func_start sub_08032204 +sub_08032204: @ 0x08032204 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08032230 + movs r0, #0 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x30 + ands r0, r1 + adds r0, #0x1e + adds r1, r4, #0 + adds r1, #0x59 + strb r0, [r1] + b _08032244 +_08032230: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08032244 + movs r0, #9 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0xd + bl sub_08004260 +_08032244: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08032248 +sub_08032248: @ 0x08032248 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + cmp r0, #0 + bne _0803228E + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08032276 + ldr r1, [r4, #0x7c] + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + adds r0, r4, #0 + bl sub_0805E7BC + b _0803228E +_08032276: + adds r0, r4, #0 + bl sub_08004274 + ldrb r1, [r5] + movs r0, #0xf + ands r0, r1 + cmp r0, #2 + bne _0803228E + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_0803228E: + pop {r4, r5, pc} + + thumb_func_start sub_08032290 +sub_08032290: @ 0x08032290 + push {lr} + movs r1, #6 + strb r1, [r0, #0xc] + movs r1, #0xc + strb r1, [r0, #0xe] + movs r1, #0xb + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080322A4 +sub_080322A4: @ 0x080322A4 + push {r4, lr} + adds r2, r0, #0 + ldr r3, [r2, #0x54] + cmp r3, #0 + beq _080322E2 + movs r1, #0x36 + ldrsh r0, [r3, r1] + adds r0, #8 + movs r4, #0x36 + ldrsh r1, [r2, r4] + cmp r0, r1 + blt _080322E2 + adds r0, r1, #0 + cmp r0, #0 + beq _080322D8 + movs r0, #5 + strb r0, [r2, #0xc] + ldrh r0, [r3, #0x36] + adds r0, #8 + strh r0, [r2, #0x36] + adds r0, r2, #0 + movs r1, #0xb + bl sub_08004260 + movs r0, #1 + b _080322E4 +_080322D8: + adds r0, r2, #0 + bl sub_08032290 + movs r0, #1 + b _080322E4 +_080322E2: + movs r0, #0 +_080322E4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080322E8 +sub_080322E8: @ 0x080322E8 + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x78 + ldrb r0, [r2] + cmp r0, #0 + beq _08032316 + subs r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032334 + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x19 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #6 + subs r0, #0x42 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + b _08032334 +_08032316: + ldrb r1, [r3, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _08032334 + lsrs r1, r1, #4 + movs r0, #1 + eors r1, r0 + ldrb r0, [r3, #0x18] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + cmp r1, r0 + beq _08032334 + movs r0, #6 + strb r0, [r2] +_08032334: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08032338 +sub_08032338: @ 0x08032338 + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #0x7c] + ldrb r0, [r1, #0xe] + adds r0, #0xf + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x50 + beq _08032354 + adds r1, r2, #0 + adds r1, #0x6c + movs r0, #0 + strb r0, [r1] +_08032354: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08032358 +sub_08032358: @ 0x08032358 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0803237C + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + bl sub_0804B128 + str r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x54 + adds r2, r4, #0 + adds r2, #0x74 + adds r0, r4, #0 + bl sub_080A2CC0 +_0803237C: + ldrb r1, [r4, #0x15] + movs r6, #0x80 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _0803238E + adds r0, r4, #0 + bl sub_0806F69C +_0803238E: + adds r5, r4, #0 + adds r5, #0x74 + ldrh r0, [r5] + subs r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080323BA + ldrb r1, [r4, #0x15] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _080323AE + movs r0, #0x74 + bl sub_08004488 +_080323AE: + adds r1, r4, #0 + adds r1, #0x54 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_080A2CC0 +_080323BA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080323BC +sub_080323BC: @ 0x080323BC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080323D8 @ =gUnk_080CE7B0 + bl sub_0800129E + movs r3, #0x12 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_080323D8: .4byte gUnk_080CE7B0 + + thumb_func_start sub_080323DC +sub_080323DC: @ 0x080323DC + push {lr} + ldr r2, _080323F0 @ =gUnk_080CE7C8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080323F0: .4byte gUnk_080CE7C8 + + thumb_func_start sub_080323F4 +sub_080323F4: @ 0x080323F4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + subs r0, #3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0803242C + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0xc + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + adds r1, #4 + movs r0, #0x18 + ands r1, r0 + movs r0, #0x10 + eors r1, r0 + strb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_080042AC + adds r5, r4, #0 + adds r5, #0x43 + b _08032446 +_0803242C: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + adds r5, r4, #0 + adds r5, #0x43 + cmp r0, #0xcc + bne _08032446 + ldrb r0, [r5] + cmp r0, #0 + bne _0803244C + adds r0, r4, #0 + bl sub_0803275C +_08032446: + ldrb r0, [r5] + cmp r0, #0 + beq _08032454 +_0803244C: + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08032454: + ldr r1, _08032460 @ =gUnk_080CE7B0 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_08032460: .4byte gUnk_080CE7B0 + + thumb_func_start nullsub_155 +nullsub_155: @ 0x08032464 + bx lr + .align 2, 0 + + thumb_func_start sub_08032468 +sub_08032468: @ 0x08032468 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #0 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_080326FC + adds r0, r4, #0 + bl sub_08032740 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803248C +sub_0803248C: @ 0x0803248C + push {r4, lr} + adds r4, r0, #0 + bl sub_080325E8 + cmp r0, #0 + bne _080324C8 + adds r0, r4, #0 + bl sub_0803271C + cmp r0, #0 + bne _080324C8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080324B4 + adds r0, r4, #0 + bl sub_08032650 +_080324B4: + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _080324C2 + movs r0, #1 + strb r0, [r4, #0xe] +_080324C2: + adds r0, r4, #0 + bl sub_080042B8 +_080324C8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080324CC +sub_080324CC: @ 0x080324CC + push {r4, lr} + adds r4, r0, #0 + bl sub_080325E8 + cmp r0, #0 + bne _080324F8 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080324F8 + adds r0, r4, #0 + bl sub_080326FC + adds r0, r4, #0 + bl sub_08032740 +_080324F8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080324FC +sub_080324FC: @ 0x080324FC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08032524 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032572 + movs r0, #0x1e + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC +_08032524: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xf] + subs r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r1, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _08032564 + movs r0, #4 + strb r0, [r4, #0xc] + movs r1, #0 + movs r0, #0xf0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r2, r4, #0 + adds r2, #0x76 + movs r0, #0x46 + strh r0, [r2] + adds r0, r4, #0 + adds r0, #0x78 + strh r3, [r0] + adds r0, #3 + strb r1, [r0] + adds r0, r4, #0 + bl sub_080327C8 + b _08032572 +_08032564: + movs r0, #3 + ands r1, r0 + cmp r1, #0 + bne _08032572 + adds r0, r4, #0 + bl sub_08032794 +_08032572: + pop {r4, pc} + + thumb_func_start sub_08032574 +sub_08032574: @ 0x08032574 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _0803258A + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080325A4 +_0803258A: + adds r5, r4, #0 + adds r5, #0x76 + ldrh r0, [r5] + subs r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080325A4 + adds r0, r4, #0 + bl sub_080AEFE0 + cmp r0, #0 + bne _080325AC +_080325A4: + adds r0, r4, #0 + bl sub_0803275C + b _080325C2 +_080325AC: + adds r0, r4, #0 + bl sub_080042B8 + ldrh r1, [r5] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _080325C2 + adds r0, r4, #0 + bl sub_08032794 +_080325C2: + pop {r4, r5, pc} + + thumb_func_start sub_080325C4 +sub_080325C4: @ 0x080325C4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080325E4 + adds r0, r4, #0 + bl sub_080325E8 + cmp r0, #0 + bne _080325E4 + adds r0, r4, #0 + bl sub_08032784 +_080325E4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080325E8 +sub_080325E8: @ 0x080325E8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _0803264C + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803264C + ldr r5, _08032648 @ =gUnk_020000B0 + ldr r1, [r5] + adds r0, r4, #0 + movs r2, #0x68 + movs r3, #0x40 + bl sub_080041A0 + cmp r0, #0 + beq _0803264C + ldr r1, [r5] + adds r0, r4, #0 + bl sub_080045C4 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r2, [r3] + movs r5, #0x18 + adds r1, r5, #0 + ands r1, r2 + subs r0, r0, r1 + adds r0, #2 + movs r1, #0x1f + ands r0, r1 + cmp r0, #4 + bhi _0803264C + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0xc + strb r0, [r4, #0xe] + ldrb r1, [r3] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #1 + b _0803264E + .align 2, 0 +_08032648: .4byte gUnk_020000B0 +_0803264C: + movs r0, #0 +_0803264E: + pop {r4, r5, pc} + + thumb_func_start sub_08032650 +sub_08032650: @ 0x08032650 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + ldr r1, _08032680 @ =gUnk_080CE7E0 + movs r0, #0xf + ands r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0803267A + lsrs r0, r5, #8 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08032684 +_0803267A: + lsrs r0, r5, #0x10 + b _0803268C + .align 2, 0 +_08032680: .4byte gUnk_080CE7E0 +_08032684: + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #4 +_0803268C: + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_0803269C + pop {r4, r5, pc} + + thumb_func_start sub_0803269C +sub_0803269C: @ 0x0803269C + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + subs r0, r2, #3 + movs r1, #7 + ands r0, r1 + cmp r0, #2 + bhi _080326D6 + adds r0, r2, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r2, r0, #3 + ldrb r0, [r3, #0x14] + subs r0, r0, r2 + movs r1, #3 + ands r0, r1 + cmp r0, #1 + bls _080326F8 + strb r2, [r3, #0x14] + adds r0, r3, #0 + adds r0, #0x58 + ldrb r0, [r0] + movs r1, #0xfc + ands r1, r0 + adds r1, r1, r2 + adds r0, r3, #0 + bl sub_080042AC + b _080326F8 +_080326D6: + adds r0, r2, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r2, r0, #3 + ldrb r0, [r3, #0x14] + cmp r2, r0 + beq _080326F8 + strb r2, [r3, #0x14] + adds r0, r3, #0 + adds r0, #0x58 + ldrb r0, [r0] + movs r1, #0xfc + ands r1, r0 + adds r1, r1, r2 + adds r0, r3, #0 + bl sub_080042AC +_080326F8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080326FC +sub_080326FC: @ 0x080326FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _08032718 @ =gUnk_080CE7F0 + movs r1, #0xf + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + adds r4, #0x74 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 +_08032718: .4byte gUnk_080CE7F0 + + thumb_func_start sub_0803271C +sub_0803271C: @ 0x0803271C + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08032734 + movs r0, #0 + b _0803273C +_08032734: + adds r0, r2, #0 + bl sub_08032784 + movs r0, #1 +_0803273C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08032740 +sub_08032740: @ 0x08032740 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x80 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08032650 + pop {r4, pc} + + thumb_func_start sub_0803275C +sub_0803275C: @ 0x0803275C + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0x2d + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_0803269C + adds r0, r4, #0 + bl sub_080327E0 + pop {r4, pc} + + thumb_func_start sub_08032784 +sub_08032784: @ 0x08032784 + push {lr} + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r1, [r0, #0x14] + adds r1, #8 + bl sub_080042AC + pop {pc} + + thumb_func_start sub_08032794 +sub_08032794: @ 0x08032794 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r5, r0, #0 + cmp r5, #0 + beq _080327C2 + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + ldr r1, _080327C4 @ =gUnk_080CE810 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 +_080327C2: + pop {r4, r5, pc} + .align 2, 0 +_080327C4: .4byte gUnk_080CE810 + + thumb_func_start sub_080327C8 +sub_080327C8: @ 0x080327C8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xb + movs r2, #0 + bl sub_0804A98C + cmp r0, #0 + beq _080327DC + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_080327DC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080327E0 +sub_080327E0: @ 0x080327E0 + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #0x54] + cmp r1, #0 + beq _080327F0 + movs r0, #0 + str r0, [r1, #0x50] + str r0, [r2, #0x54] +_080327F0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080327F4 +sub_080327F4: @ 0x080327F4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0803280C @ =gUnk_080CE978 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0803280C: .4byte gUnk_080CE978 + + thumb_func_start sub_08032810 +sub_08032810: @ 0x08032810 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08032840 @ =gUnk_080CE990 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0803283C + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803283C + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_0803283C: + pop {r4, pc} + .align 2, 0 +_08032840: .4byte gUnk_080CE990 + + thumb_func_start sub_08032844 +sub_08032844: @ 0x08032844 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080328AE + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _08032896 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r3, #0x10 + strb r3, [r4, #0xf] + ldrb r2, [r4, #0x15] + adds r0, r2, #4 + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _08032886 + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _08032882 + adds r0, r2, #2 + b _08032884 +_08032882: + subs r0, r2, #2 +_08032884: + strb r0, [r4, #0x15] +_08032886: + ldrb r1, [r4, #0x15] + movs r0, #0x20 + subs r0, r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08032AF4 + b _080328AE +_08032896: + adds r0, r4, #0 + adds r0, #0x3d + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080328AE + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] +_080328AE: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080328B8 +sub_080328B8: @ 0x080328B8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080328FC @ =gUnk_080CE9A4 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + bne _080328F8 + movs r1, #2 + strb r1, [r4, #0xc] + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x84 + strb r1, [r0] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0xe0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08032AF4 +_080328F8: + pop {r4, pc} + .align 2, 0 +_080328FC: .4byte gUnk_080CE9A4 + + thumb_func_start sub_08032900 +sub_08032900: @ 0x08032900 + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0803290C +sub_0803290C: @ 0x0803290C + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_08032914 +sub_08032914: @ 0x08032914 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08032926 + adds r0, r4, #0 + bl sub_0804A7D4 +_08032926: + pop {r4, pc} + + thumb_func_start sub_08032928 +sub_08032928: @ 0x08032928 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_0804A720 + movs r4, #0 + movs r5, #1 + strb r5, [r6, #0xc] + strb r4, [r6, #0xf] + adds r0, r6, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r6, #0x15] + adds r0, r6, #0 + adds r0, #0x80 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + strb r5, [r6, #0x1c] + adds r2, r6, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r1, r6, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + ldrb r1, [r6, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r6, #0x1b] + ldrh r1, [r6, #0x2e] + adds r0, r6, #0 + adds r0, #0x78 + strh r1, [r0] + ldrh r0, [r6, #0x32] + adds r1, r6, #0 + adds r1, #0x7a + strh r0, [r1] + adds r0, r6, #0 + bl sub_08016A04 + adds r0, r6, #0 + bl sub_08032AF4 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0803298C +sub_0803298C: @ 0x0803298C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08032AB0 + adds r0, r4, #0 + bl sub_08004274 + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _080329E2 + ldr r5, _080329E4 @ =gUnk_020000B0 + ldr r1, [r5] + adds r0, r4, #0 + movs r2, #0x88 + movs r3, #0x50 + bl sub_080041A0 + cmp r0, #0 + beq _080329E2 + ldr r0, [r5] + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r2, #0x32 + ldrsh r0, [r4, r2] + adds r0, #8 + cmp r1, r0 + ble _080329E2 + movs r1, #0 + movs r2, #2 + strb r2, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x84 + strb r1, [r0] + movs r0, #0x10 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x81 + strb r2, [r0] + adds r0, r4, #0 + bl sub_08032AF4 +_080329E2: + pop {r4, r5, pc} + .align 2, 0 +_080329E4: .4byte gUnk_020000B0 + + thumb_func_start sub_080329E8 +sub_080329E8: @ 0x080329E8 + push {lr} + bl sub_08032B38 + pop {pc} + + thumb_func_start sub_080329F0 +sub_080329F0: @ 0x080329F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080040A8 + cmp r0, #0 + bne _08032A3A + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #8 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + strh r0, [r4, #0x32] + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + b _08032A46 +_08032A3A: + adds r0, r4, #0 + bl sub_08032B10 + adds r0, r4, #0 + bl sub_08004274 +_08032A46: + pop {r4, pc} + + thumb_func_start sub_08032A48 +sub_08032A48: @ 0x08032A48 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080040A8 + adds r5, r0, #0 + cmp r5, #0 + bne _08032AAE + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #8 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x80 + strb r5, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x81 + strb r5, [r0] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + bl sub_08032AF4 +_08032AAE: + pop {r4, r5, pc} + + thumb_func_start sub_08032AB0 +sub_08032AB0: @ 0x08032AB0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032AF0 + ldrb r0, [r4, #0x15] + adds r5, r4, #0 + adds r5, #0x80 + strb r0, [r5] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + cmp r0, #0xff + beq _08032AD6 + strb r0, [r4, #0x15] +_08032AD6: + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r2, [r5] + movs r0, #0x10 + adds r1, r0, #0 + ands r1, r2 + ldrb r2, [r4, #0x15] + ands r0, r2 + cmp r1, r0 + beq _08032AF0 + adds r0, r4, #0 + bl sub_08032AF4 +_08032AF0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08032AF4 +sub_08032AF4: @ 0x08032AF4 + push {lr} + ldrb r2, [r0, #0x15] + movs r1, #0x10 + ands r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1c + adds r2, r0, #0 + adds r2, #0x81 + ldrb r2, [r2] + adds r1, r1, r2 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08032B10 +sub_08032B10: @ 0x08032B10 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + pop {r4, pc} + + thumb_func_start sub_08032B38 +sub_08032B38: @ 0x08032B38 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x84 + ldrb r0, [r2] + cmp r0, #1 + beq _08032B88 + cmp r0, #1 + bgt _08032B50 + cmp r0, #0 + beq _08032B56 + b _08032C6A +_08032B50: + cmp r0, #2 + beq _08032BB2 + b _08032C6A +_08032B56: + ldrb r1, [r5, #0xe] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08032B68 + ldrh r0, [r5, #0x36] + subs r0, #1 + strh r0, [r5, #0x36] +_08032B68: + subs r0, r1, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032C6A + strb r3, [r2] + movs r0, #0x18 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #2 + b _08032BA8 +_08032B88: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032C6A + movs r0, #2 + strb r0, [r2] + movs r0, #8 + strb r0, [r5, #0xe] + movs r0, #0xe0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #4 +_08032BA8: + strb r0, [r1] + adds r0, r5, #0 + bl sub_08032AF4 + b _08032C6A +_08032BB2: + adds r1, r5, #0 + adds r1, #0x82 + ldrh r0, [r1] + subs r0, #1 + movs r3, #0 + strh r0, [r1] + lsls r0, r0, #0x10 + adds r6, r1, #0 + cmp r0, #0 + bne _08032BF4 + movs r0, #3 + strb r0, [r5, #0xc] + strb r3, [r2] + strb r3, [r5, #0xe] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + ldrb r2, [r5, #0x15] + adds r0, r2, #0 + adds r0, #0x18 + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08032BEC + movs r0, #0x10 + subs r0, r0, r2 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] +_08032BEC: + adds r0, r5, #0 + bl sub_08032AF4 + b _08032C64 +_08032BF4: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032C64 + movs r0, #8 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x15] + adds r4, r5, #0 + adds r4, #0x80 + strb r0, [r4] + adds r0, r5, #0 + movs r1, #1 + bl sub_08049F84 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_08004596 + ldrb r3, [r5, #0x15] + adds r0, r3, #0 + adds r0, #0x18 + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08032C46 + ldrb r0, [r4] + cmp r0, #0x10 + bne _08032C3E + ands r3, r0 + cmp r3, #0 + beq _08032C3A + movs r0, #0x12 + b _08032C3C +_08032C3A: + movs r0, #0xe +_08032C3C: + strb r0, [r4] +_08032C3E: + ldrb r0, [r4] + strb r0, [r5, #0x15] + movs r0, #1 + strh r0, [r6] +_08032C46: + ldrb r2, [r4] + movs r0, #0x10 + adds r1, r0, #0 + ands r1, r2 + lsls r1, r1, #0x18 + ldrb r2, [r5, #0x15] + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x1c + cmp r1, r0 + beq _08032C64 + adds r1, r2, #4 + adds r0, r5, #0 + bl sub_08004260 +_08032C64: + adds r0, r5, #0 + bl sub_08032B10 +_08032C6A: + adds r0, r5, #0 + bl sub_08004274 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08032C74 +sub_08032C74: @ 0x08032C74 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08032C90 @ =gUnk_080CEA1C + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08032C90: .4byte gUnk_080CEA1C + + thumb_func_start sub_08032C94 +sub_08032C94: @ 0x08032C94 + push {lr} + ldr r2, _08032CA8 @ =gUnk_080CEA34 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08032CA8: .4byte gUnk_080CEA34 + + thumb_func_start sub_08032CAC +sub_08032CAC: @ 0x08032CAC + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08032CC0 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08032CC0: + ldr r1, _08032D18 @ =gUnk_080CEA1C + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08032D3A + movs r0, #0x3f + ands r0, r1 + cmp r0, #3 + bgt _08032D2C + cmp r0, #2 + blt _08032D2C + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + movs r1, #0xc8 + cmp r0, #0 + beq _08032CF0 + movs r1, #0x5a +_08032CF0: + strb r1, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r4, #0x15] + ldrb r5, [r4, #0x15] + bl sub_08000E50 + movs r1, #0x40 + ands r1, r0 + cmp r1, #0 + beq _08032D1C + adds r2, r5, #4 + b _08032D20 + .align 2, 0 +_08032D18: .4byte gUnk_080CEA1C +_08032D1C: + adds r2, r5, #0 + adds r2, #0x1c +_08032D20: + movs r1, #0 + movs r0, #0x1f + ands r0, r2 + strb r0, [r4, #0x15] + strh r1, [r4, #0x24] + b _08032D3A +_08032D2C: + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08033174 +_08032D3A: + pop {r4, r5, pc} + + thumb_func_start sub_08032D3C +sub_08032D3C: @ 0x08032D3C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032D66 + movs r0, #2 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x14] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08032F24 + adds r0, r4, #0 + bl sub_080331E8 +_08032D66: + adds r0, r4, #0 + bl sub_08001324 + + thumb_func_start nullsub_156 +nullsub_156: @ 0x08032D6C + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_157 +nullsub_157: @ 0x08032D70 + bx lr + .align 2, 0 + + thumb_func_start sub_08032D74 +sub_08032D74: @ 0x08032D74 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + adds r0, r4, #0 + bl sub_08033058 + pop {r4, pc} + + thumb_func_start sub_08032D84 +sub_08032D84: @ 0x08032D84 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032D9C + adds r0, r4, #0 + bl sub_080330C0 + b _08032DAC +_08032D9C: + adds r0, r4, #0 + bl sub_08033364 + cmp r0, #0 + beq _08032DAC + adds r0, r4, #0 + bl sub_08033100 +_08032DAC: + adds r0, r4, #0 + bl sub_08032F64 + pop {r4, pc} + + thumb_func_start sub_08032DB4 +sub_08032DB4: @ 0x08032DB4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032DCA + adds r0, r4, #0 + bl sub_08033058 +_08032DCA: + adds r0, r4, #0 + bl sub_08032F48 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08032DD4 +sub_08032DD4: @ 0x08032DD4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032E3C + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xf] + movs r0, #0xf0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_080331B4 + adds r2, r4, #0 + adds r2, #0x82 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08032E18 + ldrb r0, [r4, #0x15] + adds r0, #0x1c + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + b _08032E28 +_08032E18: + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + ldrb r0, [r2] + movs r1, #0x80 + orrs r0, r1 +_08032E28: + strb r0, [r2] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + b _08032E4E +_08032E3C: + adds r0, r4, #0 + bl sub_08032F90 + adds r0, r4, #0 + bl sub_080331E8 + adds r0, r4, #0 + bl sub_08032F64 +_08032E4E: + pop {r4, pc} + + thumb_func_start sub_08032E50 +sub_08032E50: @ 0x08032E50 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032E70 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08033174 + b _08032E82 +_08032E70: + adds r0, r4, #0 + bl sub_08033000 + adds r0, r4, #0 + bl sub_080331E8 + adds r0, r4, #0 + bl sub_08032F64 +_08032E82: + pop {r4, pc} + + thumb_func_start sub_08032E84 +sub_08032E84: @ 0x08032E84 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032EA4 + adds r0, r4, #0 + bl sub_08033320 + adds r0, r4, #0 + bl sub_080330C0 + b _08032EC0 +_08032EA4: + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08032EC0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r1 + cmp r0, #0 + bne _08032EC0 + movs r0, #4 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_080332A8 +_08032EC0: + adds r0, r4, #0 + bl sub_080331E8 + adds r0, r4, #0 + bl sub_080AEF88 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08032ED0 +sub_08032ED0: @ 0x08032ED0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08032F48 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032F06 + movs r0, #2 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x14] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08032F24 + adds r0, r4, #0 + bl sub_080331E8 +_08032F06: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + ands r0, r5 + cmp r0, #0 + bne _08032F20 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08033174 +_08032F20: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08032F24 +sub_08032F24: @ 0x08032F24 + push {lr} + adds r2, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _08032F38 + movs r1, #0 + ldrb r0, [r2, #0x14] + lsrs r0, r0, #1 + b _08032F3C +_08032F38: + movs r1, #4 + ldrb r0, [r2, #0x14] +_08032F3C: + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08032F48 +sub_08032F48: @ 0x08032F48 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + bne _08032F5A + adds r0, r4, #0 + bl sub_08004274 +_08032F5A: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08032F64 +sub_08032F64: @ 0x08032F64 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _08032F82 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E + ldrb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08032F24 +_08032F82: + adds r0, r4, #0 + bl sub_08032F48 + adds r0, r4, #0 + bl sub_080AEF88 + pop {r4, pc} + + thumb_func_start sub_08032F90 +sub_08032F90: @ 0x08032F90 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08032FC0 + ldrb r0, [r2, #0xe] + cmp r0, #0x10 + bne _08032FA8 + adds r1, r2, #0 + adds r1, #0x80 + movs r0, #2 + strb r0, [r1] +_08032FA8: + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032FFE + movs r0, #8 + strb r0, [r2, #0xf] + adds r0, r2, #0 + bl sub_08033280 + b _08032FFE +_08032FC0: + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08032FFE + movs r0, #4 + strb r0, [r2, #0xf] + adds r0, r2, #0 + adds r0, #0x82 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08032FE4 + ldrb r0, [r2, #0x15] + adds r0, #0x1c + b _08032FE8 +_08032FE4: + ldrb r0, [r2, #0x15] + adds r0, #4 +_08032FE8: + movs r1, #0x1c + ands r0, r1 + strb r0, [r2, #0x15] + ldrb r0, [r2, #0x15] + lsrs r0, r0, #2 + strb r0, [r2, #0x14] + ldrb r1, [r2, #0x14] + adds r1, #4 + adds r0, r2, #0 + bl sub_08004260 +_08032FFE: + pop {pc} + + thumb_func_start sub_08033000 +sub_08033000: @ 0x08033000 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08033056 + movs r0, #0x10 + strb r0, [r2, #0xf] + adds r3, r2, #0 + adds r3, #0x82 + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08033034 + ldrb r0, [r2, #0x15] + adds r0, #0x18 + movs r1, #0x1c + ands r0, r1 + strb r0, [r2, #0x15] + ldrb r1, [r3] + movs r0, #0x7f + ands r0, r1 + b _08033044 +_08033034: + ldrb r0, [r2, #0x15] + adds r0, #8 + movs r1, #0x1c + ands r0, r1 + strb r0, [r2, #0x15] + ldrb r0, [r3] + movs r1, #0x80 + orrs r0, r1 +_08033044: + strb r0, [r3] + ldrb r0, [r2, #0x15] + lsrs r0, r0, #2 + strb r0, [r2, #0x14] + ldrb r1, [r2, #0x14] + adds r1, #4 + adds r0, r2, #0 + bl sub_08004260 +_08033056: + pop {pc} + + thumb_func_start sub_08033058 +sub_08033058: @ 0x08033058 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #1 + strb r6, [r5, #0xc] + adds r0, #0x80 + strb r6, [r0] + bl sub_08000E50 + ldr r1, _080330A0 @ =gUnk_080CEA50 + movs r4, #3 + ands r0, r4 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0xe] + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _080330A8 + bl sub_08000E50 + ands r0, r4 + cmp r0, #0 + beq _080330A8 + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + bl sub_08000E50 + ldr r1, _080330A4 @ =gUnk_080CEA54 + ands r0, r6 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, r0, r4 + b _080330AC + .align 2, 0 +_080330A0: .4byte gUnk_080CEA50 +_080330A4: .4byte gUnk_080CEA54 +_080330A8: + bl sub_08000E50 +_080330AC: + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] + ldrb r0, [r5, #0x15] + lsrs r0, r0, #2 + strb r0, [r5, #0x14] + adds r0, r5, #0 + bl sub_08032F24 + pop {r4, r5, r6, pc} + + thumb_func_start sub_080330C0 +sub_080330C0: @ 0x080330C0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080330E2 + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #0x18 + b _080330E4 +_080330E2: + movs r0, #6 +_080330E4: + strb r0, [r4, #0xe] + movs r0, #0x60 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08032F24 + pop {r4, pc} + + thumb_func_start sub_08033100 +sub_08033100: @ 0x08033100 + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r2, [r4, #0xa] + cmp r2, #0 + bne _08033132 + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #1 + strb r0, [r1] + movs r0, #0x30 + strb r0, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + strh r2, [r4, #0x24] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + b _08033150 +_08033132: + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080331B4 + ldrb r0, [r4, #0xe] + adds r0, #0x10 + strb r0, [r4, #0xe] + movs r0, #4 + strb r0, [r4, #0xf] + movs r0, #0xb0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] +_08033150: + adds r1, r4, #0 + adds r1, #0x83 + movs r0, #0 + strb r0, [r1] + bl sub_08000E50 + movs r1, #0x80 + ands r0, r1 + adds r1, r4, #0 + adds r1, #0x82 + strb r0, [r1] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08032F24 + pop {r4, pc} + + thumb_func_start sub_08033174 +sub_08033174: @ 0x08033174 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x80 + movs r2, #0 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4, #0x15] + adds r1, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x82 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080331A4 + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + adds r0, #0x18 + b _080331A6 +_080331A4: + movs r0, #0xc +_080331A6: + strb r0, [r4, #0xe] + movs r0, #0xa0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08032F24 + pop {r4, pc} + + thumb_func_start sub_080331B4 +sub_080331B4: @ 0x080331B4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #0xf0 + ands r1, r0 + movs r2, #0x1e + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080331D0 + movs r2, #0x3c + b _080331E4 +_080331D0: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080331DA + movs r2, #0x2d +_080331DA: + movs r0, #0x20 + ands r1, r0 + cmp r1, #0 + beq _080331E4 + movs r2, #0x4b +_080331E4: + strb r2, [r4, #0xe] + pop {r4, pc} + + thumb_func_start sub_080331E8 +sub_080331E8: @ 0x080331E8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r3, #0 + ldrb r0, [r5, #0xc] + cmp r0, #5 + beq _08033220 + adds r1, r5, #0 + adds r1, #0x83 + ldrb r0, [r1] + adds r2, r0, #1 + strb r2, [r1] + adds r0, r5, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + beq _0803320C + movs r0, #0xf + b _0803320E +_0803320C: + movs r0, #7 +_0803320E: + ands r2, r0 + strb r2, [r1] + ldrb r0, [r1] + cmp r0, #0 + bne _08033238 + movs r3, #1 + ldrb r0, [r5, #0x14] + lsls r6, r0, #1 + b _08033238 +_08033220: + adds r2, r5, #0 + adds r2, #0x83 + ldrb r0, [r2] + adds r0, #1 + movs r1, #0xf + ands r0, r1 + strb r0, [r2] + cmp r0, #0 + bne _08033238 + movs r3, #1 + ldrb r0, [r5, #0x15] + lsrs r6, r0, #1 +_08033238: + cmp r3, #0 + beq _08033278 + adds r0, r5, #0 + movs r1, #2 + movs r2, #0x40 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _08033278 + ldr r2, _0803327C @ =gUnk_080CEA56 + adds r2, r6, r2 + adds r3, r5, #0 + adds r3, #0x5a + ldrb r0, [r3] + movs r1, #0x20 + eors r0, r1 + strb r0, [r3] + movs r0, #0 + ldrsb r0, [r2, r0] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + movs r0, #1 + ldrsb r0, [r2, r0] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_08004488 +_08033278: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803327C: .4byte gUnk_080CEA56 + + thumb_func_start sub_08033280 +sub_08033280: @ 0x08033280 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049F84 + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #2 + ldrb r1, [r4, #0x14] + cmp r0, r1 + beq _080332A4 + strb r0, [r4, #0x14] + adds r1, r0, #4 + adds r0, r4, #0 + bl sub_08004260 +_080332A4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080332A8 +sub_080332A8: @ 0x080332A8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r6, [r4, #0x15] + adds r5, r4, #0 + adds r5, #0x81 + ldrb r0, [r5] + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + ldrb r0, [r4, #0x15] + strb r0, [r5] + strb r6, [r4, #0x15] + ldrb r0, [r5] + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + asrs r6, r0, #2 + ldrb r0, [r4, #0x14] + cmp r6, r0 + beq _080332E4 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080332E8 +_080332E4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080332E8 +sub_080332E8: @ 0x080332E8 + push {r4, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x82 + movs r0, #0 + strb r0, [r3] + ldrb r0, [r4, #0x14] + subs r2, r1, r0 + cmp r2, #0 + ble _08033304 + cmp r2, #4 + bgt _08033310 + movs r0, #1 + b _08033312 +_08033304: + movs r0, #4 + rsbs r0, r0, #0 + cmp r2, r0 + bge _08033310 + movs r0, #1 + b _08033312 +_08033310: + movs r0, #2 +_08033312: + strb r0, [r3] + strb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08033320 +sub_08033320: @ 0x08033320 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x14] + lsls r5, r0, #2 + movs r0, #4 + ands r0, r5 + cmp r0, #0 + beq _08033360 + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + movs r1, #3 + ands r1, r0 + cmp r1, #1 + beq _08033350 + cmp r1, #2 + beq _08033354 + bl sub_08000E50 + movs r1, #0x10 + ands r1, r0 + movs r0, #0x1c + cmp r1, #0 + beq _08033356 +_08033350: + movs r0, #4 + b _08033356 +_08033354: + movs r0, #0x1c +_08033356: + adds r0, r0, r5 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _08033362 +_08033360: + strb r5, [r4, #0x15] +_08033362: + pop {r4, r5, pc} + + thumb_func_start sub_08033364 +sub_08033364: @ 0x08033364 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08049DF4 + adds r1, r0, #0 + cmp r1, #0 + beq _080333B4 + ldrb r0, [r4, #0xa] + movs r3, #0x38 + cmp r0, #0 + beq _0803337E + movs r3, #0x48 +_0803337E: + adds r0, r4, #0 + adds r2, r3, #0 + bl sub_080041A0 + cmp r0, #0 + beq _080333B4 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080333AA + ldr r0, _080333B0 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r1, #2 + movs r0, #0x1c + ands r1, r0 + lsrs r1, r1, #2 + ldrb r0, [r4, #0x14] + cmp r0, r1 + bne _080333B4 +_080333AA: + movs r0, #1 + b _080333B6 + .align 2, 0 +_080333B0: .4byte gUnk_020000B0 +_080333B4: + movs r0, #0 +_080333B6: + pop {r4, pc} + + thumb_func_start sub_080333B8 +sub_080333B8: @ 0x080333B8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080333D0 @ =gUnk_080CEB38 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080333D0: .4byte gUnk_080CEB38 + + thumb_func_start sub_080333D4 +sub_080333D4: @ 0x080333D4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0803340E + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0803340E + bl sub_0804B128 + str r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x54 + adds r2, r4, #0 + adds r2, #0x76 + adds r0, r4, #0 + bl sub_080A2CC0 +_0803340E: + ldr r2, _08033444 @ =gUnk_080CEB50 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + movs r1, #7 + ands r0, r1 + ldrb r1, [r4, #0xb] + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08033440 + adds r0, r4, #0 + bl sub_0803350C +_08033440: + pop {r4, pc} + .align 2, 0 +_08033444: .4byte gUnk_080CEB50 + + thumb_func_start sub_08033448 +sub_08033448: @ 0x08033448 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + subs r0, #1 + cmp r0, #0x1d + bhi _080334E0 + lsls r0, r0, #2 + ldr r1, _08033464 @ =_08033468 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08033464: .4byte _08033468 +_08033468: @ jump table + .4byte _080334FA @ case 0 + .4byte _080334E0 @ case 1 + .4byte _080334E0 @ case 2 + .4byte _080334E0 @ case 3 + .4byte _080334E0 @ case 4 + .4byte _080334E0 @ case 5 + .4byte _080334E0 @ case 6 + .4byte _080334E0 @ case 7 + .4byte _080334E0 @ case 8 + .4byte _080334E0 @ case 9 + .4byte _080334E0 @ case 10 + .4byte _080334E0 @ case 11 + .4byte _080334E0 @ case 12 + .4byte _080334E0 @ case 13 + .4byte _080334FA @ case 14 + .4byte _080334E0 @ case 15 + .4byte _080334E0 @ case 16 + .4byte _080334E0 @ case 17 + .4byte _080334FA @ case 18 + .4byte _080334E0 @ case 19 + .4byte _080334E0 @ case 20 + .4byte _080334E0 @ case 21 + .4byte _080334E0 @ case 22 + .4byte _080334E0 @ case 23 + .4byte _080334E0 @ case 24 + .4byte _080334E0 @ case 25 + .4byte _080334FA @ case 26 + .4byte _080334E0 @ case 27 + .4byte _080334FA @ case 28 + .4byte _080334FA @ case 29 +_080334E0: + movs r0, #0x20 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _080334F6 + adds r0, r4, #0 + bl sub_0806FA24 +_080334F6: + bl sub_0805E780 +_080334FA: + ldr r1, _08033504 @ =gUnk_080CEB38 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08033504: .4byte gUnk_080CEB38 + + thumb_func_start nullsub_158 +nullsub_158: @ 0x08033508 + bx lr + .align 2, 0 + + thumb_func_start sub_0803350C +sub_0803350C: @ 0x0803350C + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08033520 + adds r0, r4, #0 + bl sub_0806F69C +_08033520: + adds r2, r4, #0 + adds r2, #0x76 + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803353A + adds r1, r4, #0 + adds r1, #0x54 + adds r0, r4, #0 + bl sub_080A2CC0 +_0803353A: + pop {r4, pc} + + thumb_func_start sub_0803353C +sub_0803353C: @ 0x0803353C + push {lr} + ldr r1, _08033548 @ =gUnk_080CEB74 + bl sub_0800129E + pop {pc} + .align 2, 0 +_08033548: .4byte gUnk_080CEB74 + + thumb_func_start sub_0803354C +sub_0803354C: @ 0x0803354C + push {lr} + ldr r2, _08033560 @ =gUnk_080CEB8C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08033560: .4byte gUnk_080CEB8C + + thumb_func_start sub_08033564 +sub_08033564: @ 0x08033564 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08033628 + movs r0, #0x3f + ands r0, r1 + cmp r0, #0xe + beq _080335E4 + cmp r0, #0xe + bgt _08033586 + cmp r0, #0 + beq _08033590 + b _08033628 +_08033586: + cmp r0, #0x14 + beq _080335EE + cmp r0, #0x15 + beq _080335E4 + b _08033628 +_08033590: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x9f + lsls r0, r0, #2 + strh r0, [r1] + ldr r2, _080335DC @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #7 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r1, _080335E0 @ =gUnk_02002A40 + ldrb r2, [r4, #0xa] + adds r0, r2, #1 + adds r3, r1, #0 + adds r3, #0xba + strb r0, [r3] + adds r1, #0xc8 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r1] + lsls r2, r2, #0x18 + cmp r2, #0 + beq _08033628 + bl sub_0805E780 + b _08033628 + .align 2, 0 +_080335DC: .4byte gUnk_03003F80 +_080335E0: .4byte gUnk_02002A40 +_080335E4: + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0 + strb r0, [r1] + b _08033628 +_080335EE: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + movs r1, #0 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x3d + strb r1, [r0] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08033624 + str r1, [r4, #0x54] + movs r0, #0xe + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0806FA24 +_08033624: + bl sub_0805E780 +_08033628: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803362C +sub_0803362C: @ 0x0803362C + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08033648 + ldr r0, _0803364C @ =gUnk_080CEB98 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08033648: + pop {r4, pc} + .align 2, 0 +_0803364C: .4byte gUnk_080CEB98 + + thumb_func_start sub_08033650 +sub_08033650: @ 0x08033650 + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_08033658 +sub_08033658: @ 0x08033658 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_08033660 +sub_08033660: @ 0x08033660 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08033672 + adds r0, r4, #0 + bl sub_0804A7D4 +_08033672: + pop {r4, pc} + + thumb_func_start sub_08033674 +sub_08033674: @ 0x08033674 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r0, #0 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0x1c] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x82 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08033744 + ldrb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080336A8 +sub_080336A8: @ 0x080336A8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080336C0 + adds r0, r4, #0 + bl sub_08033744 + b _080336CE +_080336C0: + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080336CE + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E +_080336CE: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080336DC +sub_080336DC: @ 0x080336DC + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x7c + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc + beq _0803371E + cmp r0, #0xc + bgt _080336FC + cmp r0, #0 + beq _0803372E + b _08033740 +_080336FC: + cmp r0, #0x18 + beq _08033716 + cmp r0, #0x24 + bne _08033740 + adds r0, r2, #0 + adds r0, #0x80 + ldrh r0, [r0] + strh r0, [r2, #0x2e] + adds r0, r2, #0 + adds r0, #0x82 + ldrh r0, [r0] + strh r0, [r2, #0x32] + b _08033740 +_08033716: + adds r0, r2, #0 + bl sub_080A29BC + b _08033740 +_0803371E: + ldrb r0, [r2, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r2, #0x18] + b _08033740 +_0803372E: + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r0, r2, #0 + bl sub_08033744 +_08033740: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08033744 +sub_08033744: @ 0x08033744 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #0xff + ands r5, r0 + ldr r1, _0803378C @ =gUnk_080CEBA4 + movs r0, #0x70 + ands r0, r5 + lsrs r0, r0, #4 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r6, #0xe] + movs r0, #0xc + ands r0, r5 + lsls r4, r0, #1 + adds r0, r6, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08033796 + movs r0, #3 + ands r0, r5 + cmp r0, #0 + beq _08033796 + adds r0, r6, #0 + bl sub_08049EE4 + adds r4, r0, #0 + movs r0, #0x80 + ands r5, r0 + cmp r5, #0 + beq _08033790 + adds r4, #4 + b _08033792 + .align 2, 0 +_0803378C: .4byte gUnk_080CEBA4 +_08033790: + adds r4, #0x1c +_08033792: + movs r0, #0x18 + ands r4, r0 +_08033796: + strb r4, [r6, #0x15] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0803379C +sub_0803379C: @ 0x0803379C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080337B8 @ =gUnk_080CEBEC + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_080337B8: .4byte gUnk_080CEBEC + + thumb_func_start sub_080337BC +sub_080337BC: @ 0x080337BC + push {lr} + ldr r2, _080337D0 @ =gUnk_080CEC04 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080337D0: .4byte gUnk_080CEC04 + + thumb_func_start sub_080337D4 +sub_080337D4: @ 0x080337D4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _080337E8 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_080337E8: + ldr r1, _08033868 @ =gUnk_080CEBEC + adds r0, r4, #0 + bl sub_0804AA30 + adds r2, r4, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + adds r5, r2, #0 + cmp r0, #0 + beq _08033864 + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _0803381A + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _0803381A + adds r0, r4, #0 + bl sub_08033E1C +_0803381A: + ldrb r1, [r5] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0x14 + bne _08033864 + ldrb r0, [r4, #0xc] + cmp r0, #5 + beq _08033864 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x49 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08033D78 + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 +_08033864: + pop {r4, r5, pc} + .align 2, 0 +_08033868: .4byte gUnk_080CEBEC + + thumb_func_start nullsub_159 +nullsub_159: @ 0x0803386C + bx lr + .align 2, 0 + + thumb_func_start sub_08033870 +sub_08033870: @ 0x08033870 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001242 + ldrb r0, [r4, #0xc] + cmp r0, #5 + beq _0803388E + adds r0, r4, #0 + bl sub_08033DF0 + cmp r0, #0 + beq _0803388E + adds r0, r4, #0 + bl sub_08033E1C +_0803388E: + pop {r4, pc} + + thumb_func_start sub_08033890 +sub_08033890: @ 0x08033890 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r6, #0xc] + strb r1, [r6, #0xe] + strb r1, [r6, #0xf] + ldr r0, [r6, #0x2c] + ldr r3, _0803394C @ =0xFFF00000 + ands r0, r3 + movs r2, #0x80 + lsls r2, r2, #0xc + orrs r0, r2 + str r0, [r6, #0x7c] + adds r4, r6, #0 + adds r4, #0x80 + ldr r0, [r6, #0x30] + ands r0, r3 + orrs r0, r2 + str r0, [r4] + ldr r0, [r6, #0x7c] + str r0, [r6, #0x2c] + ldr r0, [r4] + str r0, [r6, #0x30] + adds r0, r6, #0 + adds r0, #0x79 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + subs r0, #2 + strb r1, [r0] + adds r0, #3 + strb r1, [r0] + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _08033950 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r6, #0 + adds r4, #0x74 + strh r1, [r4] + ldrh r0, [r4] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r0, _08033954 @ =0x00004022 + ldrh r1, [r4] + ldrb r2, [r5] + bl sub_0800015E + ldrb r1, [r6, #0xa] + movs r0, #0x7d + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + bne _08033928 + bl sub_0805E780 +_08033928: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r4, [r6, #0x54] + str r6, [r4, #0x50] + ldrb r0, [r6, #0xa] + cmp r0, #1 + bne _08033940 + adds r0, r6, #0 + bl sub_08033EA8 +_08033940: + adds r0, r6, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, r5, r6, pc} + .align 2, 0 +_0803394C: .4byte 0xFFF00000 +_08033950: .4byte gUnk_03000BF0 +_08033954: .4byte 0x00004022 + + thumb_func_start sub_08033958 +sub_08033958: @ 0x08033958 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08033DF0 + cmp r0, #0 + beq _08033982 + adds r0, r4, #0 + bl sub_08033E1C + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x74 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B9B8 + b _08033A72 +_08033982: + adds r1, r4, #0 + adds r1, #0x7b + ldrb r0, [r1] + cmp r0, #0 + beq _08033992 + subs r0, #1 + strb r0, [r1] + b _08033A72 +_08033992: + ldr r0, [r4, #0x7c] + str r0, [r4, #0x2c] + adds r0, r4, #0 + adds r0, #0x80 + ldr r0, [r0] + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0x10 + bl sub_0804A024 + adds r5, r0, #0 + cmp r5, #0x10 + beq _080339E0 + cmp r5, #0x10 + bhi _080339BC + cmp r5, #0 + beq _080339C6 + cmp r5, #8 + beq _080339F0 + b _08033A10 +_080339BC: + cmp r5, #0x18 + beq _08033A00 + cmp r5, #0xff + bne _08033A10 + b _08033A72 +_080339C6: + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0 + beq _08033A72 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldr r1, _080339DC @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r1, r2] + b _08033A0A + .align 2, 0 +_080339DC: .4byte gLinkEntity +_080339E0: + ldr r0, _080339EC @ =gLinkEntity + movs r1, #0x32 + ldrsh r0, [r0, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + b _08033A0A + .align 2, 0 +_080339EC: .4byte gLinkEntity +_080339F0: + ldr r0, _080339FC @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r0, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + b _08033A0A + .align 2, 0 +_080339FC: .4byte gLinkEntity +_08033A00: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r1, _08033A74 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r1, r2] +_08033A0A: + subs r0, r0, r1 + cmp r0, #0x30 + bgt _08033A72 +_08033A10: + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _08033A1E + bl sub_0806F520 + cmp r0, #0 + bne _08033A72 +_08033A1E: + adds r1, r4, #0 + adds r1, #0x78 + ldrb r0, [r1] + cmp r0, #0 + bne _08033A2C + movs r0, #1 + strb r0, [r1] +_08033A2C: + movs r0, #2 + strb r0, [r4, #0xc] + strb r5, [r4, #0x15] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r0, [r4, #0x30] + ldr r1, _08033A78 @ =0xFFF00000 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r4, #0x30] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x74 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B9B8 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08033A72: + pop {r4, r5, pc} + .align 2, 0 +_08033A74: .4byte gLinkEntity +_08033A78: .4byte 0xFFF00000 + + thumb_func_start sub_08033A7C +sub_08033A7C: @ 0x08033A7C + push {r4, lr} + adds r4, r0, #0 + bl sub_08033DF0 + cmp r0, #0 + beq _08033A90 + adds r0, r4, #0 + bl sub_08033E1C + b _08033AC8 +_08033A90: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08033AC8 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #0x20 + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x59 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 +_08033AC8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08033ACC +sub_08033ACC: @ 0x08033ACC + push {r4, lr} + adds r4, r0, #0 + bl sub_08033DF0 + cmp r0, #0 + beq _08033AE0 + adds r0, r4, #0 + bl sub_08033E1C + b _08033B42 +_08033AE0: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08033AF8 + subs r0, #1 + strb r0, [r4, #0xf] + b _08033B42 +_08033AF8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08033B3C + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + ldr r2, [r4, #0x2c] + ldr r1, _08033B38 @ =0xFFF00000 + ands r2, r1 + movs r0, #0x80 + lsls r0, r0, #0xc + orrs r2, r0 + str r2, [r4, #0x2c] + ldr r0, [r4, #0x30] + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r4, #0x30] + str r2, [r4, #0x7c] + adds r1, r4, #0 + adds r1, #0x80 + str r0, [r1] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _08033B42 + .align 2, 0 +_08033B38: .4byte 0xFFF00000 +_08033B3C: + adds r0, r4, #0 + bl sub_08033D78 +_08033B42: + pop {r4, pc} + + thumb_func_start sub_08033B44 +sub_08033B44: @ 0x08033B44 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + adds r4, r0, #0 + bl sub_08033DF0 + cmp r0, #0 + beq _08033B62 + adds r0, r4, #0 + bl sub_08033E1C + b _08033C82 +_08033B62: + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08033B76 + b _08033C82 +_08033B76: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0 + mov r8, r0 + adds r1, r4, #0 + adds r1, #0x80 + str r1, [sp, #4] + adds r6, r4, #0 + adds r6, #0x29 + adds r2, r4, #0 + adds r2, #0x7b + str r2, [sp] + adds r5, r4, #0 + adds r5, #0x74 + adds r3, r4, #0 + adds r3, #0x38 + str r3, [sp, #8] + movs r7, #0x76 + adds r7, r7, r4 + mov sl, r7 + ldr r0, _08033C20 @ =gUnk_03000BF0 + mov sb, r0 +_08033BB2: + ldr r1, [r4, #0x2c] + ldr r3, _08033C24 @ =0xFFF00000 + ands r1, r3 + movs r2, #0x80 + lsls r2, r2, #0xc + orrs r1, r2 + str r1, [r4, #0x2c] + ldr r0, [r4, #0x30] + ands r0, r3 + orrs r0, r2 + str r0, [r4, #0x30] + str r1, [r4, #0x7c] + ldr r1, [sp, #4] + str r0, [r1] + ldrb r0, [r6] + movs r2, #0x39 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r6] + movs r0, #0x78 + ldr r3, [sp] + strb r0, [r3] + movs r7, #0x2e + ldrsh r2, [r4, r7] + mov r1, sb + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r7, #0x32 + ldrsh r0, [r4, r7] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r2, r0 + strh r2, [r5] + ldrh r0, [r5] + ldr r2, [sp, #8] + ldrb r1, [r2] + bl sub_080001DA + mov r3, sl + strh r0, [r3] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r7, _08033C28 @ =0x00004022 + cmp r0, r7 + beq _08033C2C + movs r0, #1 + add r8, r0 + b _08033C68 + .align 2, 0 +_08033C20: .4byte gUnk_03000BF0 +_08033C24: .4byte 0xFFF00000 +_08033C28: .4byte 0x00004022 +_08033C2C: + ldrb r1, [r4, #0x15] + movs r0, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + cmp r0, #2 + beq _08033C54 + cmp r0, #2 + bgt _08033C42 + cmp r0, #0 + beq _08033C4C + b _08033C68 +_08033C42: + cmp r0, #4 + beq _08033C5A + cmp r0, #6 + beq _08033C62 + b _08033C68 +_08033C4C: + ldrh r0, [r4, #0x32] + adds r0, #0x10 + strh r0, [r4, #0x32] + b _08033C68 +_08033C54: + ldrh r0, [r4, #0x2e] + subs r0, #0x10 + b _08033C66 +_08033C5A: + ldrh r0, [r4, #0x32] + subs r0, #0x10 + strh r0, [r4, #0x32] + b _08033C68 +_08033C62: + ldrh r0, [r4, #0x2e] + adds r0, #0x10 +_08033C66: + strh r0, [r4, #0x2e] +_08033C68: + mov r1, r8 + cmp r1, #0 + beq _08033BB2 + ldr r0, _08033C90 @ =0x00004022 + ldrh r1, [r5] + ldr r3, [sp, #8] + ldrb r2, [r3] + bl sub_0800015E + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08033C82: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08033C90: .4byte 0x00004022 + + thumb_func_start sub_08033C94 +sub_08033C94: @ 0x08033C94 + push {r4, lr} + adds r4, r0, #0 + movs r1, #3 + bl sub_08004276 + adds r1, r4, #0 + adds r1, #0x79 + ldrb r0, [r1] + cmp r0, #1 + beq _08033CD2 + cmp r0, #1 + bgt _08033CB2 + cmp r0, #0 + beq _08033CB8 + b _08033D76 +_08033CB2: + cmp r0, #2 + beq _08033D18 + b _08033D76 +_08033CB8: + movs r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _08033CD2 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_08033CD2: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _08033D76 + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #2 + strb r0, [r1] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x63 + strb r2, [r0] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + adds r0, #0x14 + strb r0, [r4, #0x15] + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #3 + ands r1, r0 + cmp r1, #0 + beq _08033D12 + cmp r1, #2 + beq _08033D68 + b _08033D6E +_08033D12: + ldrb r0, [r4, #0x15] + adds r0, #8 + b _08033D6C +_08033D18: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08033D24 + subs r0, #1 + strb r0, [r4, #0xf] + b _08033D2A +_08033D24: + adds r0, r4, #0 + bl sub_08033D78 +_08033D2A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08033D76 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x20 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + adds r0, #0x14 + strb r0, [r4, #0x15] + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #3 + ands r1, r0 + cmp r1, #1 + beq _08033D62 + cmp r1, #3 + beq _08033D68 + b _08033D6E +_08033D62: + ldrb r0, [r4, #0x15] + adds r0, #8 + b _08033D6C +_08033D68: + ldrb r0, [r4, #0x15] + adds r0, #0x18 +_08033D6C: + strb r0, [r4, #0x15] +_08033D6E: + ldrb r1, [r4, #0x15] + movs r0, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] +_08033D76: + pop {r4, pc} + + thumb_func_start sub_08033D78 +sub_08033D78: @ 0x08033D78 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0x15] + movs r2, #0x18 + ands r2, r0 + lsrs r2, r2, #2 + ldr r0, _08033DE4 @ =gUnk_080CEC1C + adds r2, r2, r0 + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r1, #0 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + ldr r4, _08033DE8 @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r3, #0x3f + ands r5, r3 + movs r1, #0x32 + ldrsh r0, [r6, r1] + movs r1, #1 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + ldrh r1, [r4, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r5, r0 + adds r4, r6, #0 + adds r4, #0x38 + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_080002B0 + adds r1, r0, #0 + ldr r0, _08033DEC @ =0x000001C5 + cmp r1, r0 + bhi _08033DCE + subs r0, #1 + cmp r1, r0 + bhs _08033DE2 +_08033DCE: + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_080002E0 + subs r0, #1 + cmp r0, #0x3e + bls _08033DE2 + adds r0, r6, #0 + bl sub_080AEF88 +_08033DE2: + pop {r4, r5, r6, pc} + .align 2, 0 +_08033DE4: .4byte gUnk_080CEC1C +_08033DE8: .4byte gUnk_03000BF0 +_08033DEC: .4byte 0x000001C5 + + thumb_func_start sub_08033DF0 +sub_08033DF0: @ 0x08033DF0 + push {lr} + movs r2, #0 + ldr r1, [r0, #0x54] + cmp r1, #0 + beq _08033E16 + ldrb r0, [r1, #0xc] + cmp r0, #3 + beq _08033E10 + cmp r0, #3 + bgt _08033E0A + cmp r0, #2 + beq _08033E16 + b _08033E18 +_08033E0A: + cmp r0, #4 + bne _08033E18 + b _08033E16 +_08033E10: + ldrb r0, [r1, #0xd] + cmp r0, #1 + bls _08033E18 +_08033E16: + movs r2, #1 +_08033E18: + adds r0, r2, #0 + pop {pc} + + thumb_func_start sub_08033E1C +sub_08033E1C: @ 0x08033E1C + push {r4, lr} + adds r4, r0, #0 + movs r2, #0 + movs r3, #5 + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x79 + strb r2, [r0] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + mov r1, ip + strb r0, [r1] + ldr r0, [r4, #0x30] + ldr r1, _08033EA4 @ =0xFFF00000 + ands r0, r1 + movs r1, #0xc0 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r4, #0x30] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x19 + strb r0, [r1] + mov r0, ip + ldrb r1, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + movs r0, #0x30 + strb r0, [r4, #0xe] + strb r2, [r4, #0xf] + adds r0, #0xd0 + strh r0, [r4, #0x24] + str r2, [r4, #0x54] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + movs r2, #0xc + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #0xa + bl sub_080A2CFC + pop {r4, pc} + .align 2, 0 +_08033EA4: .4byte 0xFFF00000 + + thumb_func_start sub_08033EA8 +sub_08033EA8: @ 0x08033EA8 + push {lr} + adds r2, r0, #0 + ldr r0, _08033EC4 @ =gUnk_03003F80 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08033EC8 + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x95 + b _08033ECE + .align 2, 0 +_08033EC4: .4byte gUnk_03003F80 +_08033EC8: + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x63 +_08033ECE: + strb r0, [r1] + pop {pc} + .align 2, 0 + + thumb_func_start sub_08033ED4 +sub_08033ED4: @ 0x08033ED4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08033EEC @ =gUnk_080CEC88 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08033EEC: .4byte gUnk_080CEC88 + + thumb_func_start sub_08033EF0 +sub_08033EF0: @ 0x08033EF0 + push {lr} + ldr r2, _08033F04 @ =gUnk_080CECA0 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08033F04: .4byte gUnk_080CECA0 + + thumb_func_start sub_08033F08 +sub_08033F08: @ 0x08033F08 + push {lr} + ldr r1, _08033F14 @ =gUnk_080CEC88 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_08033F14: .4byte gUnk_080CEC88 + + thumb_func_start nullsub_160 +nullsub_160: @ 0x08033F18 + bx lr + .align 2, 0 + + thumb_func_start sub_08033F1C +sub_08033F1C: @ 0x08033F1C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08033F38 @ =gUnk_080CECB4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0803499C + pop {r4, pc} + .align 2, 0 +_08033F38: .4byte gUnk_080CECB4 + + thumb_func_start sub_08033F3C +sub_08033F3C: @ 0x08033F3C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08033F64 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x42 + bhi _08033FFA + ldr r0, _08033F68 @ =gUnk_030010A0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _08033F6C + adds r0, r4, #0 + bl sub_08034420 + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + b _08033F70 + .align 2, 0 +_08033F64: .4byte gUnk_03003DBC +_08033F68: .4byte gUnk_030010A0 +_08033F6C: + movs r0, #1 + strb r0, [r4, #0xc] +_08033F70: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r3, r4, #0 + adds r3, #0x6d + ldrb r0, [r3] + movs r2, #0 + orrs r1, r0 + strb r1, [r3] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + movs r0, #0x36 + movs r1, #1 + bl sub_0804AA60 + adds r5, r0, #0 + str r4, [r5, #0x50] + movs r0, #0x7e + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + str r4, [r0, #0x50] + ldr r0, _08033FD0 @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r1, [r0] + cmp r1, #0 + bne _08033FD4 + movs r0, #0xd + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0xfc + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + b _08033FFA + .align 2, 0 +_08033FD0: .4byte gUnk_030010A0 +_08033FD4: + movs r0, #0x44 + movs r1, #0 + bl sub_0804AA60 + str r4, [r0, #0x50] + str r4, [r0, #0x78] + str r0, [r4, #0x74] + movs r0, #0x44 + movs r1, #1 + bl sub_0804AA60 + str r4, [r0, #0x50] + str r5, [r0, #0x78] + str r0, [r4, #0x78] + movs r0, #0x36 + movs r1, #4 + bl sub_0804AA60 + str r4, [r0, #0x50] +_08033FFA: + pop {r4, r5, pc} + + thumb_func_start sub_08033FFC +sub_08033FFC: @ 0x08033FFC + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xd] + cmp r0, #7 + bls _08034008 + b _08034114 +_08034008: + lsls r0, r0, #2 + ldr r1, _08034014 @ =_08034018 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08034014: .4byte _08034018 +_08034018: @ jump table + .4byte _0803413E @ case 0 + .4byte _08034038 @ case 1 + .4byte _0803413E @ case 2 + .4byte _08034056 @ case 3 + .4byte _08034068 @ case 4 + .4byte _0803413E @ case 5 + .4byte _08034090 @ case 6 + .4byte _080340C4 @ case 7 +_08034038: + movs r0, #2 + strb r0, [r3, #0xd] + movs r0, #0x1e + strb r0, [r3, #0xe] + ldr r0, [r3, #0x74] + ldr r2, [r0, #0x74] + movs r1, #1 + strb r1, [r2, #0xd] + ldr r0, [r3, #0x78] + ldr r2, [r0, #0x74] + strb r1, [r2, #0xd] + adds r0, r3, #0 + bl sub_0801D230 + b _0803413E +_08034056: + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803413E + movs r0, #4 + strb r0, [r3, #0xd] + b _0803413E +_08034068: + ldr r0, [r3, #0x34] + ldr r1, _0803408C @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r3, #0x34] + movs r0, #0x36 + ldrsh r1, [r3, r0] + movs r0, #0xa + rsbs r0, r0, #0 + cmp r1, r0 + bne _0803413E + movs r0, #5 + strb r0, [r3, #0xd] + adds r1, r3, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + b _0803413E + .align 2, 0 +_0803408C: .4byte 0xFFFF8000 +_08034090: + movs r1, #0 + movs r0, #7 + strb r0, [r3, #0xd] + strb r1, [r3, #0xe] + ldr r2, [r3, #0x74] + movs r1, #1 + strb r1, [r2, #0xd] + ldr r2, [r2, #0x74] + movs r0, #4 + strb r0, [r2, #0xd] + ldr r2, [r3, #0x78] + strb r1, [r2, #0xd] + ldr r2, [r2, #0x74] + strb r0, [r2, #0xd] + ldr r1, _080340C0 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xf4 + lsls r0, r0, #4 + strh r0, [r2] + adds r1, #0x68 + adds r0, #0xc0 + strh r0, [r1] + b _0803413E + .align 2, 0 +_080340C0: .4byte gUnk_03000F50 +_080340C4: + ldrb r1, [r3, #0xe] + adds r1, #1 + strb r1, [r3, #0xe] + lsls r2, r1, #0x18 + lsrs r2, r2, #0x19 + ldr r4, _08034110 @ =gUnk_03000F50 + movs r0, #0x10 + subs r0, r0, r2 + lsls r0, r0, #8 + orrs r2, r0 + adds r0, r4, #0 + adds r0, #0x68 + strh r2, [r0] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0x1f + bls _0803413E + movs r0, #8 + strb r0, [r3, #0xd] + ldr r2, [r3, #0x74] + movs r1, #3 + strb r1, [r2, #0xd] + ldr r2, [r2, #0x74] + movs r0, #6 + strb r0, [r2, #0xd] + ldr r2, [r3, #0x78] + strb r1, [r2, #0xd] + ldr r2, [r2, #0x74] + strb r0, [r2, #0xd] + ldrb r1, [r3, #0x19] + subs r0, #0x13 + ands r0, r1 + strb r0, [r3, #0x19] + adds r1, r4, #0 + adds r1, #0x66 + movs r0, #0 + strh r0, [r1] + b _0803413E + .align 2, 0 +_08034110: .4byte gUnk_03000F50 +_08034114: + ldr r0, [r3, #0x74] + ldrb r1, [r0, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803413E + ldr r1, _08034140 @ =gUnk_03000BF0 + ldr r0, _08034144 @ =gLinkEntity + str r0, [r1, #0x30] + adds r0, r3, #0 + bl sub_08034420 + ldr r0, _08034148 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + bl sub_080791D0 + movs r0, #0x2e + bl sub_080A3268 +_0803413E: + pop {r4, pc} + .align 2, 0 +_08034140: .4byte gUnk_03000BF0 +_08034144: .4byte gLinkEntity +_08034148: .4byte gUnk_03003F80 + + thumb_func_start sub_0803414C +sub_0803414C: @ 0x0803414C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _08034194 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r2, r0, #0 + adds r2, #0xb8 + ldrh r0, [r1, #8] + adds r3, r0, #0 + adds r3, #0x48 + movs r1, #0x2e + ldrsh r0, [r4, r1] + subs r0, r0, r2 + adds r0, #1 + cmp r0, #2 + bhi _080341A2 + movs r5, #0x32 + ldrsh r0, [r4, r5] + subs r0, r0, r3 + adds r0, #1 + cmp r0, #2 + bhi _080341A2 + adds r0, r4, #0 + bl sub_080349D8 + cmp r0, #0 + beq _080341B6 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08034198 + movs r0, #0 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0x1e + bl sub_0803442C + b _080341B6 + .align 2, 0 +_08034194: .4byte gUnk_03000BF0 +_08034198: + adds r0, r4, #0 + movs r1, #0x5a + bl sub_0803442C + b _080341B6 +_080341A2: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r5, #0x32 + ldrsh r1, [r4, r5] + bl sub_080045D4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C +_080341B6: + pop {r4, r5, pc} + + thumb_func_start sub_080341B8 +sub_080341B8: @ 0x080341B8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080349D8 + cmp r0, #0 + beq _080341CC + adds r0, r4, #0 + movs r1, #0x2d + bl sub_0803442C +_080341CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080341D0 +sub_080341D0: @ 0x080341D0 + push {lr} + adds r2, r0, #0 + adds r0, #0x80 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #3 + beq _080341F2 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080341F2 + adds r0, r2, #0 + bl sub_0803443C +_080341F2: + pop {pc} + + thumb_func_start sub_080341F4 +sub_080341F4: @ 0x080341F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080347B4 + adds r0, r4, #0 + bl sub_080349D8 + cmp r0, #0 + beq _0803420C + adds r0, r4, #0 + bl sub_08034420 +_0803420C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08034210 +sub_08034210: @ 0x08034210 + push {r4, lr} + adds r4, r0, #0 + bl sub_080347B4 + adds r0, r4, #0 + adds r0, #0x7d + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08034238 + adds r0, r4, #0 + bl sub_080349D8 + cmp r0, #0 + beq _08034238 + adds r0, r4, #0 + bl sub_08034420 + b _0803423E +_08034238: + adds r0, r4, #0 + bl sub_08034830 +_0803423E: + pop {r4, pc} + + thumb_func_start sub_08034240 +sub_08034240: @ 0x08034240 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + cmp r0, #0 + beq _08034260 + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x95 + bhi _08034260 + adds r0, r4, #0 + bl sub_0803473C +_08034260: + adds r0, r4, #0 + bl sub_080349D8 + cmp r0, #0 + beq _08034270 + adds r0, r4, #0 + bl sub_08034420 +_08034270: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08034274 +sub_08034274: @ 0x08034274 + push {r4, lr} + adds r4, r0, #0 + bl sub_080349D8 + cmp r0, #0 + beq _08034288 + adds r0, r4, #0 + bl sub_08034420 + b _0803429E +_08034288: + adds r0, r4, #0 + bl sub_0803473C + adds r0, r4, #0 + bl sub_08034A10 + cmp r0, #0 + beq _0803429E + adds r0, r4, #0 + bl sub_080347FC +_0803429E: + pop {r4, pc} + + thumb_func_start sub_080342A0 +sub_080342A0: @ 0x080342A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080349D8 + cmp r0, #0 + beq _080342B2 + adds r0, r4, #0 + bl sub_08034420 +_080342B2: + pop {r4, pc} + + thumb_func_start sub_080342B4 +sub_080342B4: @ 0x080342B4 + push {lr} + adds r1, r0, #0 + adds r0, #0x7e + ldrh r0, [r0] + cmp r0, #0xff + bne _080342C6 + adds r0, r1, #0 + bl sub_08034420 +_080342C6: + pop {pc} + + thumb_func_start sub_080342C8 +sub_080342C8: @ 0x080342C8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r1, r0, #0 + cmp r1, #0 + beq _08034304 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080342E4 + ldr r0, _080342FC @ =0x00000115 + bl sub_080A3268 +_080342E4: + ldr r2, _08034300 @ =gUnk_080CECEC + ldrb r0, [r4, #0xe] + lsrs r0, r0, #1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x62 + strb r1, [r0] + b _08034340 + .align 2, 0 +_080342FC: .4byte 0x00000115 +_08034300: .4byte gUnk_080CECEC +_08034304: + adds r0, r4, #0 + adds r0, #0x62 + strb r1, [r0] + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08034340 + movs r0, #0xc + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x7e + movs r1, #0 + movs r0, #0xe1 + lsls r0, r0, #3 + strh r0, [r2] + adds r0, r4, #0 + adds r0, #0x7d + strb r1, [r0] + adds r0, #4 + strb r1, [r0] + movs r0, #0x1e + movs r1, #0 + bl sub_08080964 + ldr r0, _08034344 @ =0x000001A1 + bl sub_080A3268 +_08034340: + pop {r4, pc} + .align 2, 0 +_08034344: .4byte 0x000001A1 + + thumb_func_start sub_08034348 +sub_08034348: @ 0x08034348 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + cmp r0, #0 + beq _0803435C + subs r0, #1 + strh r0, [r1] + b _08034388 +_0803435C: + ldrh r2, [r4, #0x36] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0xa + rsbs r0, r0, #0 + cmp r1, r0 + ble _08034370 + subs r0, r2, #1 + strh r0, [r4, #0x36] + b _08034388 +_08034370: + adds r0, r4, #0 + bl sub_080349D8 + cmp r0, #0 + beq _08034388 + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08034420 +_08034388: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803438C +sub_0803438C: @ 0x0803438C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + adds r1, r0, #0 + cmp r1, #0 + bne _080343A0 + adds r0, r5, #0 + adds r0, #0x45 + strb r1, [r0] + b _08034414 +_080343A0: + subs r2, r0, #1 + strb r2, [r5, #0xe] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc0 + bls _080343C4 + ldr r0, _080343C0 @ =gUnk_080CED06 + movs r1, #3 + ands r2, r1 + adds r0, r2, r0 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x62 + strb r1, [r0] + b _08034414 + .align 2, 0 +_080343C0: .4byte gUnk_080CED06 +_080343C4: + movs r0, #0x1f + ands r2, r0 + cmp r2, #0 + bne _08034414 + ldr r4, _08034418 @ =gUnk_080CED02 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + adds r1, r1, r4 + ldrb r1, [r1] + adds r0, r5, #0 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08034414 + ldrb r1, [r5, #0xe] + lsrs r1, r1, #4 + ldr r0, _0803441C @ =gUnk_080CECF4 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_08034414: + pop {r4, r5, pc} + .align 2, 0 +_08034418: .4byte gUnk_080CED02 +_0803441C: .4byte gUnk_080CECF4 + + thumb_func_start sub_08034420 +sub_08034420: @ 0x08034420 + movs r1, #2 + strb r1, [r0, #0xc] + adds r0, #0x7d + movs r1, #3 + strb r1, [r0] + bx lr + + thumb_func_start sub_0803442C +sub_0803442C: @ 0x0803442C + movs r2, #4 + strb r2, [r0, #0xc] + strb r1, [r0, #0xe] + adds r0, #0x7d + movs r1, #3 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_0803443C +sub_0803443C: @ 0x0803443C + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x7d + movs r0, #0 + strb r0, [r1] + ldr r0, _0803445C @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0x1e + bhi _08034460 + adds r0, r2, #0 + bl sub_080344BC + b _08034472 + .align 2, 0 +_0803445C: .4byte gUnk_030010A0 +_08034460: + cmp r0, #0x3c + bhi _0803446C + adds r0, r2, #0 + bl sub_08034498 + b _08034472 +_0803446C: + adds r0, r2, #0 + bl sub_08034474 +_08034472: + pop {pc} + + thumb_func_start sub_08034474 +sub_08034474: @ 0x08034474 + push {r4, lr} + ldr r2, _08034494 @ =gUnk_080CED0C + adds r4, r0, #0 + adds r4, #0x7c + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldrb r0, [r4] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08034494: .4byte gUnk_080CED0C + + thumb_func_start sub_08034498 +sub_08034498: @ 0x08034498 + push {r4, lr} + ldr r2, _080344B8 @ =gUnk_080CED2C + adds r4, r0, #0 + adds r4, #0x7c + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldrb r0, [r4] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_080344B8: .4byte gUnk_080CED2C + + thumb_func_start sub_080344BC +sub_080344BC: @ 0x080344BC + push {r4, lr} + ldr r2, _080344DC @ =gUnk_080CED4C + adds r4, r0, #0 + adds r4, #0x7c + ldrb r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldrb r0, [r4] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_080344DC: .4byte gUnk_080CED4C + + thumb_func_start sub_080344E0 +sub_080344E0: @ 0x080344E0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrb r1, [r0] + movs r0, #5 + ands r0, r1 + cmp r0, #0 + beq _080344F8 + adds r0, r4, #0 + bl sub_080345A0 + b _0803451A +_080344F8: + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + bne _0803450C + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08034514 +_0803450C: + adds r0, r4, #0 + bl sub_080345B8 + b _0803451A +_08034514: + adds r0, r4, #0 + bl sub_080345A0 +_0803451A: + pop {r4, pc} + + thumb_func_start sub_0803451C +sub_0803451C: @ 0x0803451C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrb r1, [r0] + movs r0, #5 + ands r0, r1 + cmp r0, #0 + bne _08034548 + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _0803453C + adds r0, r4, #0 + bl sub_08034638 + b _08034556 +_0803453C: + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08034550 +_08034548: + adds r0, r4, #0 + bl sub_08034618 + b _08034556 +_08034550: + adds r0, r4, #0 + bl sub_08034638 +_08034556: + pop {r4, pc} + + thumb_func_start sub_08034558 +sub_08034558: @ 0x08034558 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08034570 + adds r0, r4, #0 + bl sub_08034658 + b _08034576 +_08034570: + adds r0, r4, #0 + bl sub_0803467C +_08034576: + pop {r4, pc} + + thumb_func_start sub_08034578 +sub_08034578: @ 0x08034578 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x7d + strb r1, [r0] + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #0 + bl sub_080348A4 + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #0 + bl sub_080348A4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080345A0 +sub_080345A0: @ 0x080345A0 + push {lr} + movs r1, #5 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x7d + movs r1, #1 + strb r1, [r2] + ldr r1, [r0, #0x78] + movs r2, #1 + bl sub_080348A4 + pop {pc} + + thumb_func_start sub_080345B8 +sub_080345B8: @ 0x080345B8 + push {lr} + movs r1, #5 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x7d + movs r1, #2 + strb r1, [r2] + ldr r1, [r0, #0x74] + movs r2, #1 + bl sub_080348A4 + pop {pc} + + thumb_func_start sub_080345D0 +sub_080345D0: @ 0x080345D0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #6 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080345FE + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #2 + bl sub_080348A4 + cmp r0, #0 + bne _08034616 + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #2 + bl sub_080348A4 + b _08034616 +_080345FE: + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #2 + bl sub_080348A4 + cmp r0, #0 + bne _08034616 + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #2 + bl sub_080348A4 +_08034616: + pop {r4, pc} + + thumb_func_start sub_08034618 +sub_08034618: @ 0x08034618 + push {lr} + movs r1, #7 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x7d + movs r1, #1 + strb r1, [r2] + adds r2, #1 + movs r1, #0xb4 + strh r1, [r2] + ldr r1, [r0, #0x78] + movs r2, #3 + bl sub_080348A4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08034638 +sub_08034638: @ 0x08034638 + push {lr} + movs r1, #7 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x7d + movs r1, #2 + strb r1, [r2] + adds r2, #1 + movs r1, #0xb4 + strh r1, [r2] + ldr r1, [r0, #0x74] + movs r2, #3 + bl sub_080348A4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08034658 +sub_08034658: @ 0x08034658 + push {r4, lr} + movs r2, #0 + movs r1, #8 + strb r1, [r0, #0xc] + adds r4, r0, #0 + adds r4, #0x7d + strb r2, [r4] + ldr r1, [r0, #0x78] + movs r2, #4 + bl sub_080348A4 + cmp r0, #0 + bne _0803467A + ldrb r0, [r4] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4] +_0803467A: + pop {r4, pc} + + thumb_func_start sub_0803467C +sub_0803467C: @ 0x0803467C + push {r4, lr} + movs r2, #0 + movs r1, #8 + strb r1, [r0, #0xc] + adds r4, r0, #0 + adds r4, #0x7d + strb r2, [r4] + ldr r1, [r0, #0x74] + movs r2, #4 + bl sub_080348A4 + cmp r0, #0 + bne _0803469E + ldrb r0, [r4] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4] +_0803469E: + pop {r4, pc} + + thumb_func_start sub_080346A0 +sub_080346A0: @ 0x080346A0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #9 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x7d + strb r1, [r0] + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #6 + bl sub_080348A4 + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #6 + bl sub_080348A4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080346C8 +sub_080346C8: @ 0x080346C8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #0xa + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x7e + strh r1, [r0] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803470C + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #8 + bl sub_080348A4 + cmp r0, #0 + beq _080346F6 + ldr r1, [r4, #0x78] + b _0803471C +_080346F6: + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #7 + bl sub_080348A4 + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #8 + bl sub_080348A4 + b _0803473A +_0803470C: + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #8 + bl sub_080348A4 + cmp r0, #0 + beq _08034726 + ldr r1, [r4, #0x74] +_0803471C: + adds r0, r4, #0 + movs r2, #7 + bl sub_080348A4 + b _0803473A +_08034726: + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #8 + bl sub_080348A4 + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #7 + bl sub_080348A4 +_0803473A: + pop {r4, pc} + + thumb_func_start sub_0803473C +sub_0803473C: @ 0x0803473C + push {r4, r5, lr} + adds r3, r0, #0 + adds r0, #0x7d + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08034764 + ldr r0, [r3, #0x74] + ldrb r0, [r0, #0xc] + cmp r0, #0x28 + bhi _080347B0 + ldr r0, _08034760 @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r0, r1] + adds r2, r0, #0 + subs r2, #0x60 + b _08034776 + .align 2, 0 +_08034760: .4byte gLinkEntity +_08034764: + ldr r0, [r3, #0x78] + ldrb r0, [r0, #0xc] + cmp r0, #0x28 + bhi _080347B0 + ldr r0, _08034790 @ =gLinkEntity + movs r5, #0x2e + ldrsh r0, [r0, r5] + adds r2, r0, #0 + adds r2, #0x60 +_08034776: + ldr r0, _08034794 @ =gUnk_03000BF0 + ldrh r4, [r0, #6] + subs r0, r2, #4 + movs r5, #0x2e + ldrsh r1, [r3, r5] + cmp r0, r1 + bls _08034798 + adds r0, r4, #0 + adds r0, #0xe0 + cmp r0, r1 + blo _080347B0 + movs r0, #8 + b _080347A8 + .align 2, 0 +_08034790: .4byte gLinkEntity +_08034794: .4byte gUnk_03000BF0 +_08034798: + adds r0, r2, #4 + cmp r0, r1 + bhs _080347B0 + adds r0, r4, #0 + adds r0, #0x90 + cmp r0, r1 + bhi _080347B0 + movs r0, #0x18 +_080347A8: + strb r0, [r3, #0x15] + adds r0, r3, #0 + bl sub_0806F69C +_080347B0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080347B4 +sub_080347B4: @ 0x080347B4 + push {r4, r5, lr} + adds r2, r0, #0 + ldr r0, _080347D8 @ =gLinkEntity + movs r1, #0x2e + ldrsh r3, [r0, r1] + ldr r0, _080347DC @ =gUnk_03000BF0 + ldrh r4, [r0, #6] + subs r0, r3, #4 + movs r5, #0x2e + ldrsh r1, [r2, r5] + cmp r0, r1 + bls _080347E0 + adds r0, r4, #0 + adds r0, #0xe0 + cmp r0, r1 + blo _080347F8 + movs r0, #8 + b _080347F0 + .align 2, 0 +_080347D8: .4byte gLinkEntity +_080347DC: .4byte gUnk_03000BF0 +_080347E0: + adds r0, r3, #4 + cmp r0, r1 + bhs _080347F8 + adds r0, r4, #0 + adds r0, #0x90 + cmp r0, r1 + bhi _080347F8 + movs r0, #0x18 +_080347F0: + strb r0, [r2, #0x15] + adds r0, r2, #0 + bl sub_0806F69C +_080347F8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080347FC +sub_080347FC: @ 0x080347FC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7d + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08034818 + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #5 + bl sub_080348A4 + b _08034822 +_08034818: + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #5 + bl sub_080348A4 +_08034822: + adds r2, r4, #0 + adds r2, #0x7d + ldrb r1, [r2] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r2] + pop {r4, pc} + + thumb_func_start sub_08034830 +sub_08034830: @ 0x08034830 + push {r4, lr} + adds r4, r0, #0 + bl sub_080349D8 + cmp r0, #0 + beq _0803484C + adds r1, r4, #0 + adds r1, #0x7d + movs r0, #0x80 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080345D0 + b _080348A0 +_0803484C: + adds r0, r4, #0 + bl sub_08034A10 + cmp r0, #0 + beq _080348A0 + adds r0, r4, #0 + adds r0, #0x80 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _08034876 + adds r0, r4, #0 + bl sub_080349D8 + cmp r0, #0 + beq _080348A0 + adds r0, r4, #0 + bl sub_08034420 + b _080348A0 +_08034876: + adds r2, r4, #0 + adds r2, #0x7d + ldrb r0, [r2] + movs r1, #0x20 + orrs r1, r0 + strb r1, [r2] + movs r0, #0x10 + ands r1, r0 + cmp r1, #0 + beq _08034896 + ldr r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #2 + bl sub_080348A4 + b _080348A0 +_08034896: + ldr r1, [r4, #0x74] + adds r0, r4, #0 + movs r2, #2 + bl sub_080348A4 +_080348A0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080348A4 +sub_080348A4: @ 0x080348A4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r5, r2, #0 + ldrb r0, [r3, #0xa] + cmp r0, #0 + bne _080348C6 + movs r2, #5 + movs r0, #0x7d + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #0x10 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + b _080348C8 +_080348C6: + movs r2, #0xa +_080348C8: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + ands r0, r2 + cmp r0, #0 + beq _080348F0 + adds r0, r4, #0 + adds r0, #0x7d + ldrb r2, [r0] + ldrb r1, [r3, #0xa] + adds r3, r0, #0 + cmp r1, #0 + bne _080348E6 + movs r0, #1 + b _080348E8 +_080348E6: + movs r0, #2 +_080348E8: + orrs r0, r2 + strb r0, [r3] + movs r0, #0 + b _08034998 +_080348F0: + cmp r5, #8 + bhi _08034996 + lsls r0, r5, #2 + ldr r1, _08034900 @ =_08034904 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08034900: .4byte _08034904 +_08034904: @ jump table + .4byte _08034928 @ case 0 + .4byte _0803492E @ case 1 + .4byte _0803493C @ case 2 + .4byte _0803494A @ case 3 + .4byte _0803493C @ case 4 + .4byte _08034958 @ case 5 + .4byte _08034966 @ case 6 + .4byte _0803496C @ case 7 + .4byte _08034982 @ case 8 +_08034928: + movs r0, #3 + strb r0, [r3, #0xc] + b _08034996 +_0803492E: + movs r0, #4 + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7c + movs r0, #3 + strb r0, [r1] + b _08034996 +_0803493C: + movs r0, #4 + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7c + movs r0, #1 + strb r0, [r1] + b _08034996 +_0803494A: + movs r0, #0xf + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7e + movs r0, #0xb4 + strh r0, [r1] + b _08034996 +_08034958: + movs r0, #0xf + strb r0, [r3, #0xc] + adds r1, r3, #0 + adds r1, #0x7e + movs r0, #1 + strh r0, [r1] + b _08034996 +_08034966: + movs r0, #0x1e + strb r0, [r3, #0xc] + b _08034996 +_0803496C: + movs r0, #0x1b + strb r0, [r3, #0xc] + ldrb r1, [r3, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #0x10] + adds r0, r3, #0 + movs r1, #5 + bl sub_08004260 + b _08034996 +_08034982: + ldrb r0, [r3, #0xa] + adds r2, r0, #2 + movs r0, #0x36 + adds r1, r2, #0 + bl sub_0804AA60 + adds r3, r0, #0 + cmp r3, #0 + beq _08034996 + str r4, [r3, #0x50] +_08034996: + movs r0, #1 +_08034998: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803499C +sub_0803499C: @ 0x0803499C + push {lr} + adds r3, r0, #0 + adds r0, #0x80 + ldrb r1, [r0] + movs r0, #0xc + ands r0, r1 + cmp r0, #0xc + beq _080349D0 + adds r0, r3, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _080349D0 + ldr r2, _080349D4 @ =gUnk_080CED6C + ldrb r0, [r3, #0xf] + adds r0, #1 + strb r0, [r3, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r3, #0x36] +_080349D0: + pop {pc} + .align 2, 0 +_080349D4: .4byte gUnk_080CED6C + + thumb_func_start sub_080349D8 +sub_080349D8: @ 0x080349D8 + push {lr} + adds r2, r0, #0 + adds r0, #0x7d + ldrb r0, [r0] + movs r1, #3 + ands r1, r0 + cmp r1, #3 + beq _08034A08 + cmp r1, #1 + bne _080349F6 + adds r0, r2, #0 + adds r0, #0x80 + ldrb r1, [r0] + movs r0, #0xa + b _08034A02 +_080349F6: + cmp r1, #2 + bne _08034A0C + adds r0, r2, #0 + adds r0, #0x80 + ldrb r1, [r0] + movs r0, #5 +_08034A02: + ands r0, r1 + cmp r0, #0 + beq _08034A0C +_08034A08: + movs r0, #1 + b _08034A0E +_08034A0C: + movs r0, #0 +_08034A0E: + pop {pc} + + thumb_func_start sub_08034A10 +sub_08034A10: @ 0x08034A10 + push {r4, lr} + adds r1, r0, #0 + adds r3, r1, #0 + adds r3, #0x7d + ldrb r2, [r3] + movs r0, #0x60 + ands r0, r2 + cmp r0, #0x40 + beq _08034A52 + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _08034A56 + adds r4, r1, #0 + adds r4, #0x80 + ldrb r1, [r4] + movs r0, #5 + ands r0, r1 + cmp r0, #0 + beq _08034A3E + movs r0, #0x40 + orrs r0, r2 + strb r0, [r3] +_08034A3E: + ldrb r1, [r4] + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _08034A7E + ldrb r1, [r3] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _08034A7E +_08034A52: + movs r0, #1 + b _08034A80 +_08034A56: + adds r4, r1, #0 + adds r4, #0x80 + ldrb r1, [r4] + movs r0, #0xa + ands r0, r1 + cmp r0, #0 + beq _08034A6A + movs r0, #0x40 + orrs r0, r2 + strb r0, [r3] +_08034A6A: + ldrb r1, [r4] + movs r0, #5 + ands r0, r1 + cmp r0, #0 + beq _08034A7E + ldrb r1, [r3] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + beq _08034A52 +_08034A7E: + movs r0, #0 +_08034A80: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08034A84 +sub_08034A84: @ 0x08034A84 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08034A98 + adds r0, r4, #0 + bl sub_0805E7BC + b _08034AC2 +_08034A98: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08034ABA + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08034ABA: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C +_08034AC2: + pop {r4, pc} + + thumb_func_start sub_08034AC4 +sub_08034AC4: @ 0x08034AC4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + movs r3, #0x80 + lsls r3, r3, #9 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldr r1, _08034AE8 @ =gUnk_080CED74 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08034AE8: .4byte gUnk_080CED74 + + thumb_func_start sub_08034AEC +sub_08034AEC: @ 0x08034AEC + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x1e + strb r1, [r0, #0xe] + ldrb r1, [r0, #0xa] + adds r1, #1 + bl sub_08004260 + ldr r0, _08034B08 @ =0x00000151 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08034B08: .4byte 0x00000151 + + thumb_func_start sub_08034B0C +sub_08034B0C: @ 0x08034B0C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08034B1A + subs r0, #1 + b _08034B34 +_08034B1A: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08034B36 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x50 +_08034B34: + strb r0, [r4, #0xe] +_08034B36: + pop {r4, pc} + + thumb_func_start sub_08034B38 +sub_08034B38: @ 0x08034B38 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08034B58 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + adds r1, #3 + adds r0, r4, #0 + bl sub_08004260 + b _08034B9A +_08034B58: + movs r0, #0xe + bl sub_080A7EE0 + adds r5, r0, #0 + cmp r5, #0 + beq _08034B9A + ldrb r0, [r4, #0xa] + subs r0, #2 + strb r0, [r5, #0xa] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08034B78 + ldrb r1, [r4, #0xe] + movs r0, #0xa8 + subs r0, r0, r1 + b _08034B7C +_08034B78: + ldrb r0, [r4, #0xe] + adds r0, #0x58 +_08034B7C: + strb r0, [r5, #0x15] + ldrb r0, [r5, #0xa] + lsls r0, r0, #1 + ldr r1, _08034B9C @ =gUnk_080CED84 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 +_08034B9A: + pop {r4, r5, pc} + .align 2, 0 +_08034B9C: .4byte gUnk_080CED84 + + thumb_func_start sub_08034BA0 +sub_08034BA0: @ 0x08034BA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08034BC4 + ldr r0, [r4, #0x50] + adds r0, #0x7e + movs r1, #0xff + strh r1, [r0] + adds r0, r4, #0 + bl sub_0805E7BC +_08034BC4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08034BC8 +sub_08034BC8: @ 0x08034BC8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08034BDE + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08034BDE: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806FA90 + adds r0, r4, #0 + bl sub_0800445C + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08034BFE + adds r0, r4, #0 + bl sub_08034C00 +_08034BFE: + pop {r4, pc} + + thumb_func_start sub_08034C00 +sub_08034C00: @ 0x08034C00 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _08034C44 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08034C5A + movs r1, #0x2e + ldrsh r0, [r3, r1] + ldr r2, _08034C48 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + movs r4, #0x32 + ldrsh r1, [r3, r4] + ldrh r2, [r2, #8] + subs r1, r1, r2 + adds r1, #0xd + movs r2, #3 + movs r3, #3 + bl sub_0800293E + cmp r0, #0 + beq _08034C5A + ldr r0, _08034C4C @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0x3c + bls _08034C54 + ldr r0, _08034C50 @ =gUnk_080CED88 + bl sub_08080840 + b _08034C5A + .align 2, 0 +_08034C44: .4byte gUnk_03003F80 +_08034C48: .4byte gUnk_03000BF0 +_08034C4C: .4byte gUnk_030010A0 +_08034C50: .4byte gUnk_080CED88 +_08034C54: + ldr r0, _08034C5C @ =gUnk_080CED9C + bl sub_08080840 +_08034C5A: + pop {r4, pc} + .align 2, 0 +_08034C5C: .4byte gUnk_080CED9C + + thumb_func_start sub_08034C60 +sub_08034C60: @ 0x08034C60 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08034C78 @ =gUnk_080CEE90 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08034C78: .4byte gUnk_080CEE90 + + thumb_func_start sub_08034C7C +sub_08034C7C: @ 0x08034C7C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #2 + beq _08034C9C + ldr r0, _08034C98 @ =gUnk_080CEEA4 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08034CA2 + .align 2, 0 +_08034C98: .4byte gUnk_080CEEA4 +_08034C9C: + adds r0, r2, #0 + bl sub_08034E18 +_08034CA2: + pop {pc} + + thumb_func_start sub_08034CA4 +sub_08034CA4: @ 0x08034CA4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08034FA0 + ldr r1, _08034CB8 @ =gUnk_080CEE90 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08034CB8: .4byte gUnk_080CEE90 + + thumb_func_start sub_08034CBC +sub_08034CBC: @ 0x08034CBC + push {lr} + bl sub_0804A7D4 + pop {pc} + + thumb_func_start sub_08034CC4 +sub_08034CC4: @ 0x08034CC4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08035084 + cmp r0, #0 + beq _08034D42 + ldrb r0, [r5, #0xa] + adds r0, #1 + movs r1, #0 + strb r0, [r5, #0xc] + strb r1, [r5, #0xf] + adds r2, r5, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #1 + orrs r0, r1 + strb r0, [r2] + adds r1, r5, #0 + adds r1, #0x78 + movs r0, #0x96 + lsls r0, r0, #3 + strh r0, [r1] + adds r0, r5, #0 + bl sub_08034F70 + ldrb r1, [r5, #0xa] + adds r0, r5, #0 + bl sub_08004260 + ldr r0, _08034D44 @ =0x00004022 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08034D48 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r0, #0x37 + movs r1, #2 + bl sub_0804AA60 + adds r1, r0, #0 + cmp r1, #0 + beq _08034D42 + str r1, [r5, #0x54] + str r5, [r1, #0x50] + adds r0, r5, #0 + bl sub_0806FA24 +_08034D42: + pop {r4, r5, r6, pc} + .align 2, 0 +_08034D44: .4byte 0x00004022 +_08034D48: .4byte gUnk_03000BF0 + + thumb_func_start sub_08034D4C +sub_08034D4C: @ 0x08034D4C + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r6, r5, #0 + adds r6, #0x78 + ldrh r0, [r6] + subs r0, #1 + strh r0, [r6] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08034DC4 + ldrb r0, [r5, #0xf] + cmp r0, #7 + bhi _08034DBC + movs r0, #0x4b + movs r1, #0 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _08034DBC + bl sub_08000E50 + movs r1, #5 + bl __modsi3 + adds r0, #0xc + strb r0, [r4, #0x15] + ldr r1, _08034DB8 @ =gUnk_03000BF0 + ldrh r0, [r1, #0x1e] + lsrs r0, r0, #1 + ldrh r2, [r1, #6] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #8] + adds r0, #8 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + str r5, [r4, #0x50] + adds r0, r4, #0 + bl sub_08016A04 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r6] + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] + b _08034DC4 + .align 2, 0 +_08034DB8: .4byte gUnk_03000BF0 +_08034DBC: + adds r1, r5, #0 + adds r1, #0x78 + movs r0, #0x78 + strh r0, [r1] +_08034DC4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08034DC8 +sub_08034DC8: @ 0x08034DC8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08034E10 @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _08034E0E + adds r0, r4, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08034E14 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + bl sub_0805E780 +_08034E0E: + pop {r4, r5, pc} + .align 2, 0 +_08034E10: .4byte gUnk_030010A0 +_08034E14: .4byte gUnk_03000BF0 + + thumb_func_start sub_08034E18 +sub_08034E18: @ 0x08034E18 + push {lr} + ldr r2, _08034E2C @ =gUnk_080CEEB0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08034E2C: .4byte gUnk_080CEEB0 + + thumb_func_start sub_08034E30 +sub_08034E30: @ 0x08034E30 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xa] + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + movs r1, #0x39 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08034E68 +sub_08034E68: @ 0x08034E68 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08034EBC + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + cmp r0, #0 + beq _08034E8A + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_08035120 +_08034E8A: + ldr r0, _08034EB0 @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _08034EB8 + bl sub_08079F8C + cmp r0, #0 + beq _08034EBC + movs r0, #3 + strb r0, [r4, #0xc] + ldr r1, _08034EB4 @ =gUnk_08012E20 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] + b _08034EBC + .align 2, 0 +_08034EB0: .4byte gUnk_030010A0 +_08034EB4: .4byte gUnk_08012E20 +_08034EB8: + bl sub_0805E780 +_08034EBC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08034EC0 +sub_08034EC0: @ 0x08034EC0 + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08034ED6 + adds r0, r1, #0 + bl sub_08035120 + bl sub_0805E780 +_08034ED6: + pop {pc} + + thumb_func_start sub_08034ED8 +sub_08034ED8: @ 0x08034ED8 + push {lr} + movs r1, #0 + bl sub_0807DDAC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08034EE4 +sub_08034EE4: @ 0x08034EE4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _08034F46 + bl sub_08000E50 + adds r4, r0, #0 + ldr r0, _08034F50 @ =gUnk_080CEEC8 + movs r1, #3 + ands r1, r4 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r5, #0 + movs r2, #0 + bl CreateFX + adds r3, r0, #0 + cmp r3, #0 + beq _08034F46 + lsrs r1, r4, #2 + movs r0, #0x77 + ands r1, r0 + lsls r1, r1, #1 + adds r1, #1 + ldr r2, _08034F54 @ =gUnk_03000BF0 + ldrh r0, [r2, #0xa] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + lsrs r1, r4, #9 + movs r0, #0x7e + ands r1, r0 + adds r1, #1 + ldrh r0, [r2, #0xc] + adds r0, r0, r1 + strh r0, [r3, #0x32] + adds r1, r3, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r3, #0 + bl sub_08016A04 +_08034F46: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + pop {r4, r5, pc} + .align 2, 0 +_08034F50: .4byte gUnk_080CEEC8 +_08034F54: .4byte gUnk_03000BF0 + + thumb_func_start sub_08034F58 +sub_08034F58: @ 0x08034F58 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08034F6C @ =gUnk_0813ABA8 + bl sub_08080840 + adds r0, r4, #0 + bl sub_0805E7BC + pop {r4, pc} + .align 2, 0 +_08034F6C: .4byte gUnk_0813ABA8 + + thumb_func_start sub_08034F70 +sub_08034F70: @ 0x08034F70 + push {lr} + adds r2, r0, #0 + ldr r0, _08034F8C @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + adds r1, r2, #0 + adds r1, #0x45 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3c + bls _08034F90 + movs r0, #0 + b _08034F9A + .align 2, 0 +_08034F8C: .4byte gUnk_030010A0 +_08034F90: + cmp r0, #0x1e + bls _08034F98 + movs r0, #1 + b _08034F9A +_08034F98: + movs r0, #2 +_08034F9A: + strb r0, [r2, #0xb] + pop {pc} + .align 2, 0 + + thumb_func_start sub_08034FA0 +sub_08034FA0: @ 0x08034FA0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x3d + ldrb r1, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08034FC0 + ldr r0, [r4, #0x54] + adds r0, #0x3d + strb r1, [r0] + movs r0, #0xc + movs r1, #1 + bl sub_08080964 +_08034FC0: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08035008 + cmp r0, #1 + beq _08035020 + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0 + bne _08035040 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08035004 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r6, #0x32 + ldrsh r1, [r4, r6] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + b _08035040 + .align 2, 0 +_08035004: .4byte gUnk_03000BF0 +_08035008: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0x3b + bhi _08035040 + ldr r0, _0803501C @ =gUnk_030010A0 + adds r0, #0x39 + movs r1, #0x3c + b _08035032 + .align 2, 0 +_0803501C: .4byte gUnk_030010A0 +_08035020: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0x1d + bhi _08035040 + ldr r0, _0803503C @ =gUnk_030010A0 + adds r0, #0x39 + movs r1, #0x1e +_08035032: + strb r1, [r0] + adds r0, r4, #0 + bl sub_08035050 + b _08035048 + .align 2, 0 +_0803503C: .4byte gUnk_030010A0 +_08035040: + ldr r0, _0803504C @ =gUnk_030010A0 + ldrb r1, [r5] + adds r0, #0x39 + strb r1, [r0] +_08035048: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803504C: .4byte gUnk_030010A0 + + thumb_func_start sub_08035050 +sub_08035050: @ 0x08035050 + push {r4, lr} + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + movs r4, #0 + strb r1, [r0, #0x10] + adds r0, #0x45 + strb r4, [r0] + movs r0, #0x4b + movs r1, #0 + bl sub_0804AA60 + adds r2, r0, #0 + cmp r2, #0 + beq _08035082 + movs r0, #1 + strb r0, [r2, #0xb] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + str r4, [r2, #0x50] + adds r0, r2, #0 + bl sub_08016A04 +_08035082: + pop {r4, pc} + + thumb_func_start sub_08035084 +sub_08035084: @ 0x08035084 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _08035118 + ldr r0, _080350A0 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x42 + bls _080350A4 + movs r0, #0 + b _0803511A + .align 2, 0 +_080350A0: .4byte gUnk_03003DBC +_080350A4: + ldr r4, _080350D8 @ =gUnk_030010D8 +_080350A6: + bl sub_08000E50 + movs r1, #6 + bl __modsi3 + adds r6, r0, #0 + ldrb r0, [r4] + lsrs r0, r0, #4 + cmp r6, r0 + beq _080350A6 + ldr r2, _080350DC @ =gUnk_030010A0 + adds r2, #0x38 + ldrb r1, [r2] + movs r0, #0xf + ands r0, r1 + lsls r1, r6, #4 + orrs r0, r1 + strb r0, [r2] + movs r5, #0 + ldr r4, _080350E0 @ =gUnk_080CEECC + ldr r7, _080350E4 @ =gUnk_03000BF0 +_080350D0: + cmp r5, r6 + bne _080350E8 + mov r2, r8 + b _080350F2 + .align 2, 0 +_080350D8: .4byte gUnk_030010D8 +_080350DC: .4byte gUnk_030010A0 +_080350E0: .4byte gUnk_080CEECC +_080350E4: .4byte gUnk_03000BF0 +_080350E8: + movs r0, #0x37 + movs r1, #1 + bl sub_0804AA60 + adds r2, r0, #0 +_080350F2: + ldrh r0, [r7, #6] + ldrb r1, [r4] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + ldrh r0, [r7, #8] + ldrb r1, [r4, #1] + adds r0, r0, r1 + strh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08016A04 + adds r5, #1 + adds r4, #2 + cmp r5, #5 + bls _080350D0 +_08035118: + movs r0, #1 +_0803511A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08035120 +sub_08035120: @ 0x08035120 + push {r4, r5, r6, lr} + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r3, _0803515C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r4, r1, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r0, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + movs r6, #0 + ldr r5, _08035160 @ =gUnk_080CEED8 +_08035146: + movs r2, #0 + ldrsh r0, [r5, r2] + adds r0, r4, r0 + bl sub_0807B600 + adds r5, #2 + adds r6, #1 + cmp r6, #0x17 + bls _08035146 + pop {r4, r5, r6, pc} + .align 2, 0 +_0803515C: .4byte gUnk_03000BF0 +_08035160: .4byte gUnk_080CEED8 + + thumb_func_start sub_08035164 +sub_08035164: @ 0x08035164 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0803518C + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + ands r1, r2 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + subs r0, #0x42 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_0803518C: + adds r0, r4, #0 + bl sub_08035194 + pop {r4, pc} + + thumb_func_start sub_08035194 +sub_08035194: @ 0x08035194 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _080351A8 + ldr r0, _080351A4 @ =gUnk_080CEF34 + b _080351AA + .align 2, 0 +_080351A4: .4byte gUnk_080CEF34 +_080351A8: + ldr r0, _080351B8 @ =gUnk_080CEF58 +_080351AA: + ldrb r1, [r2, #0x1e] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2, #0x48] + pop {pc} + .align 2, 0 +_080351B8: .4byte gUnk_080CEF58 + + thumb_func_start sub_080351BC +sub_080351BC: @ 0x080351BC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080351D4 @ =gUnk_080CF040 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080351D4: .4byte gUnk_080CF040 + + thumb_func_start sub_080351D8 +sub_080351D8: @ 0x080351D8 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + cmp r1, #0 + bne _08035204 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x42 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080368D8 + adds r0, r4, #0 + bl sub_0803520C + b _08035208 +_08035204: + bl sub_0805E780 +_08035208: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803520C +sub_0803520C: @ 0x0803520C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + bne _08035238 + ldrb r0, [r4, #0xd] + cmp r0, #3 + beq _0803524C + ldr r2, _08035234 @ =gUnk_03000BF0 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldr r0, [r1, #0xc] + str r0, [r2, #0x30] + movs r0, #0x5a + strb r0, [r1, #7] + bl sub_08078B48 + b _0803524C + .align 2, 0 +_08035234: .4byte gUnk_03000BF0 +_08035238: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #7] + cmp r0, #0 + beq _0803524C + subs r0, #1 + strb r0, [r1, #7] + bl sub_08078B48 +_0803524C: + ldr r1, _08035284 @ =gUnk_080CF054 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xd] + cmp r0, #3 + bls _08035266 + bl sub_08078B48 +_08035266: + adds r0, r4, #0 + bl sub_0800445C + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + subs r0, #2 + ldrh r2, [r0] + adds r0, #6 + ldrh r3, [r0] + adds r0, r4, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_08035284: .4byte gUnk_080CF054 + + thumb_func_start sub_08035288 +sub_08035288: @ 0x08035288 + push {r4, lr} + adds r2, r0, #0 + adds r0, #0x76 + movs r4, #0 + movs r1, #0xa0 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + adds r3, r2, #0 + adds r3, #0x84 + ldr r0, [r3] + strb r4, [r0, #6] + adds r0, r2, #0 + adds r0, #0x7c + ldrb r1, [r0] + adds r0, r1, #0 + cmp r0, #4 + bne _080352C8 + strb r0, [r2, #0xd] + ldr r0, _080352C4 @ =gUnk_02034490 + movs r1, #1 + strb r1, [r0] + bl sub_08078B48 + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + b _080352FA + .align 2, 0 +_080352C4: .4byte gUnk_02034490 +_080352C8: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080352DA + strb r4, [r2, #0xb] + adds r1, r2, #0 + adds r1, #0x79 + movs r0, #0x3c + b _080352F4 +_080352DA: + ldr r1, [r3] + ldrb r0, [r1, #1] + cmp r0, #3 + bls _080352E6 + subs r0, #1 + strb r0, [r1, #1] +_080352E6: + ldr r0, [r3] + ldr r0, [r0, #0xc] + adds r0, #0x7d + strb r4, [r0] + adds r1, r2, #0 + adds r1, #0x79 + movs r0, #0x78 +_080352F4: + strb r0, [r1] + movs r0, #1 + strb r0, [r2, #0xd] +_080352FA: + pop {r4, pc} + + thumb_func_start sub_080352FC +sub_080352FC: @ 0x080352FC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + adds r0, #0x7c + ldrb r0, [r0] + movs r6, #1 + adds r4, r6, #0 + ands r4, r0 + cmp r4, #0 + bne _080353EC + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldr r1, [r1, #0xc] + adds r1, #0x7d + ldrb r2, [r1] + mov sb, r0 + cmp r2, #0 + beq _0803532C + subs r0, r2, #1 + strb r0, [r1] +_0803532C: + ldr r3, _0803538C @ =gUnk_03000BF0 + movs r0, #0x84 + lsls r0, r0, #1 + adds r1, r0, #0 + ldrh r2, [r3, #6] + adds r1, r1, r2 + ldrh r0, [r5, #0x2e] + subs r1, r1, r0 + adds r1, #4 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r0, [r3, #8] + ldrh r2, [r5, #0x32] + subs r0, r0, r2 + adds r0, #0x8c + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, #8 + bhi _08035356 + cmp r0, #8 + bls _08035394 +_08035356: + mov r1, sb + ldr r0, [r1] + strb r6, [r0, #2] + ldrh r0, [r3, #6] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r2, _08035390 @ =0xFFFFFEF8 + adds r1, r1, r2 + subs r0, r0, r1 + ldrh r1, [r3, #8] + movs r3, #0x32 + ldrsh r2, [r5, r3] + subs r2, #0x88 + subs r1, r1, r2 + bl sub_080045DA + asrs r0, r0, #3 + strb r0, [r5, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_080AEF88 + adds r7, r5, #0 + adds r7, #0x79 + b _08035456 + .align 2, 0 +_0803538C: .4byte gUnk_03000BF0 +_08035390: .4byte 0xFFFFFEF8 +_08035394: + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _080353D8 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #0 + bl sub_080A2988 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #1 + bl sub_080A2988 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #2 + bl sub_080A2988 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #3 + bl sub_080A2988 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #5 + movs r3, #4 + bl sub_080A2988 + strb r6, [r5, #0xb] +_080353D8: + mov r1, sb + ldr r0, [r1] + strb r4, [r0, #2] + adds r1, r5, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r7, r1, #0 + b _08035456 +_080353EC: + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r1, [r1, #1] + subs r4, r1, #1 + mov sb, r0 + adds r7, r5, #0 + adds r7, #0x79 + cmp r4, #0 + beq _08035438 + mov ip, sb + movs r2, #1 + mov sl, r2 + lsls r0, r4, #2 + subs r6, r0, #4 + movs r3, #3 + mov r8, r3 +_0803540E: + mov r1, ip + ldr r0, [r1] + adds r0, #0xc + adds r0, r0, r6 + ldr r3, [r0] + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + mov r0, sl + orrs r1, r0 + mov r0, r8 + ands r1, r0 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + subs r6, #4 + subs r4, #1 + cmp r4, #0 + bne _0803540E +_08035438: + ldr r1, _080354AC @ =gUnk_030010A0 + ldr r0, [r1] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08035450 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #6 + movs r3, #0 + bl sub_080A2988 +_08035450: + ldrb r0, [r7] + subs r0, #1 + strb r0, [r7] +_08035456: + ldrb r0, [r7] + cmp r0, #0 + bne _080354E8 + movs r0, #2 + strb r0, [r5, #0xd] + adds r4, r5, #0 + adds r4, #0x7c + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r0, r5, #0 + bl sub_080AE068 + ldrb r1, [r4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080354B0 + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x5f + strb r0, [r1] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r5, #0 + bl sub_080ADF80 + adds r0, r5, #0 + movs r1, #0xef + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xef + bl sub_08036F14 + mov r2, sb + ldr r0, [r2] + ldr r0, [r0, #0xc] + movs r1, #1 + bl sub_080042AC + b _080354DC + .align 2, 0 +_080354AC: .4byte gUnk_030010A0 +_080354B0: + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x61 + strb r0, [r1] + ldr r1, _080354F4 @ =0x00000109 + adds r0, r5, #0 + bl sub_080ADF80 + adds r0, r5, #0 + movs r1, #0xf0 + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xf3 + bl sub_08036F14 + mov r3, sb + ldr r0, [r3] + ldr r0, [r0, #0xc] + movs r1, #2 + bl sub_080042AC +_080354DC: + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #8 + movs r3, #0 + bl sub_080A2988 +_080354E8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080354F4: .4byte 0x00000109 + + thumb_func_start sub_080354F8 +sub_080354F8: @ 0x080354F8 + push {lr} + adds r1, r0, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r0, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x7d + ldrb r0, [r2] + cmp r0, #0x80 + beq _08035512 + adds r0, #1 + strb r0, [r2] + b _08035522 +_08035512: + movs r0, #3 + strb r0, [r1, #0xd] + adds r1, #0x79 + movs r0, #0x96 + strb r0, [r1] + ldr r1, _08035524 @ =gUnk_03000BF0 + ldr r0, _08035528 @ =gLinkEntity + str r0, [r1, #0x30] +_08035522: + pop {pc} + .align 2, 0 +_08035524: .4byte gUnk_03000BF0 +_08035528: .4byte gLinkEntity + + thumb_func_start sub_0803552C +sub_0803552C: @ 0x0803552C + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + movs r3, #0 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08035570 + ldr r1, _08035574 @ =gUnk_080CF070 + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r2, #0 + adds r1, #0x45 + strb r0, [r1] + ldrb r0, [r2, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + movs r0, #1 + strb r0, [r2, #0xc] + strb r3, [r2, #0xd] + adds r0, r2, #0 + adds r0, #0x7e + strb r3, [r0] + adds r0, r2, #0 + bl sub_08036DA0 +_08035570: + pop {pc} + .align 2, 0 +_08035574: .4byte gUnk_080CF070 + + thumb_func_start sub_08035578 +sub_08035578: @ 0x08035578 + push {lr} + movs r1, #5 + strb r1, [r0, #0xd] + movs r1, #0x87 + movs r2, #9 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _08035592 + ldr r0, _08035594 @ =gUnk_03000BF0 + str r1, [r0, #0x30] +_08035592: + pop {pc} + .align 2, 0 +_08035594: .4byte gUnk_03000BF0 + + thumb_func_start sub_08035598 +sub_08035598: @ 0x08035598 + adds r2, r0, #0 + movs r1, #0 + movs r0, #6 + strb r0, [r2, #0xd] + adds r3, r2, #0 + adds r3, #0x79 + movs r0, #0x78 + strb r0, [r3] + adds r0, r2, #0 + adds r0, #0x80 + strb r1, [r0] + adds r0, #2 + strb r1, [r0] + bx lr + + thumb_func_start sub_080355B4 +sub_080355B4: @ 0x080355B4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r1, r7, #0 + adds r1, #0x7b + ldrb r0, [r1] + subs r0, #4 + strb r0, [r1] + adds r1, #6 + ldrb r0, [r1] + adds r0, #8 + strb r0, [r1] + adds r4, r7, #0 + adds r4, #0x80 + ldrb r1, [r4] + movs r5, #0x80 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _080355FA + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + ldrb r1, [r4] + subs r1, r1, r0 + strb r1, [r4] + ands r1, r5 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + bne _08035616 + b _08035614 +_080355FA: + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + ldrb r2, [r4] + adds r1, r0, r2 + strb r1, [r4] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x18 + bls _08035616 + movs r0, #0x80 + orrs r1, r0 +_08035614: + strb r1, [r4] +_08035616: + ldr r0, _080356E4 @ =gUnk_080C9160 + mov r8, r0 + movs r1, #0x81 + adds r1, r1, r7 + mov sb, r1 + ldrb r0, [r1] + lsls r0, r0, #1 + add r0, r8 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r6, r7, #0 + adds r6, #0x80 + ldrb r2, [r6] + movs r4, #0x7f + adds r1, r4, #0 + ands r1, r2 + lsls r1, r1, #8 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x80 + lsls r5, r5, #1 + adds r1, r5, #0 + bl sub_0806FA04 + lsrs r0, r0, #8 + adds r1, r7, #0 + adds r1, #0x62 + strb r0, [r1] + mov r1, sb + ldrb r0, [r1] + adds r0, #0x40 + lsls r0, r0, #1 + add r0, r8 + movs r2, #0 + ldrsh r0, [r0, r2] + ldrb r1, [r6] + ands r4, r1 + lsls r4, r4, #8 + adds r1, r4, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r5, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + rsbs r0, r0, #0 + asrs r0, r0, #0x10 + adds r1, r7, #0 + adds r1, #0x63 + strb r0, [r1] + adds r1, #0x16 + ldrb r0, [r1] + cmp r0, #0 + bne _080356EC + ldr r0, _080356E8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _080356B2 + adds r0, r7, #0 + movs r1, #0x48 + movs r2, #0 + bl CreateFX + adds r0, r7, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r0, [r0, #0x20] + movs r1, #0x48 + movs r2, #0 + bl CreateFX +_080356B2: + adds r1, r7, #0 + adds r1, #0x82 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x79 + bne _080356F0 + adds r0, r7, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r0, [r0, #8] + adds r0, #0x45 + movs r1, #1 + strb r1, [r0] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + adds r0, r7, #0 + bl sub_0804A7D4 + b _080356F0 + .align 2, 0 +_080356E4: .4byte gUnk_080C9160 +_080356E8: .4byte gUnk_030010A0 +_080356EC: + subs r0, #1 + strb r0, [r1] +_080356F0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080356F8 +sub_080356F8: @ 0x080356F8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08035718 @ =gUnk_080CF078 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + pop {r4, pc} + .align 2, 0 +_08035718: .4byte gUnk_080CF078 + + thumb_func_start sub_0803571C +sub_0803571C: @ 0x0803571C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xa] + cmp r0, #6 + bls _0803573A + b _08035974 +_0803573A: + lsls r0, r0, #2 + ldr r1, _08035744 @ =_08035748 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08035744: .4byte _08035748 +_08035748: @ jump table + .4byte _08035764 @ case 0 + .4byte _080358D8 @ case 1 + .4byte _080358D8 @ case 2 + .4byte _080358D8 @ case 3 + .4byte _080358D8 @ case 4 + .4byte _08035920 @ case 5 + .4byte _08035940 @ case 6 +_08035764: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x7c + movs r5, #0 + strb r5, [r0] + movs r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x30 + bl sub_0801D8E0 + adds r2, r0, #0 + adds r0, r4, #0 + adds r0, #0x84 + str r2, [r0] + mov r8, r0 + cmp r2, #0 + bne _0803579E + adds r0, r4, #0 + bl sub_0804A7D4 + b _080359A6 +_0803579E: + str r2, [r4, #0x64] + mov r1, r8 + ldr r0, [r1] + strb r5, [r0, #6] + ldr r1, [r1] + movs r0, #2 + strb r0, [r1] + mov r2, r8 + ldr r0, [r2] + strb r5, [r0, #2] + ldr r1, [r2] + movs r0, #5 + strb r0, [r1, #1] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x6d + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x76 + movs r1, #0xa0 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + adds r0, #6 + strh r5, [r0] + movs r5, #0 + movs r0, #0x79 + adds r0, r0, r4 + mov sb, r0 + mov r7, r8 +_080357E6: + adds r6, r5, #1 + movs r0, #0x39 + adds r1, r6, #0 + bl sub_0804AA60 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08035816 + adds r0, r4, #0 + bl sub_0806FA24 + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + adds r0, #0x84 + ldr r1, [r7] + str r1, [r0] + ldr r1, [r7] + lsls r0, r5, #2 + adds r1, #0x20 + adds r1, r1, r0 + ldr r0, [r4, #0x54] + str r0, [r1] +_08035816: + adds r5, r6, #0 + cmp r5, #3 + bls _080357E6 + movs r0, #0x39 + movs r1, #5 + bl sub_0804AA60 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08035840 + adds r0, r4, #0 + bl sub_0806FA24 + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + adds r0, #0x84 + mov r2, r8 + ldr r1, [r2] + str r1, [r0] +_08035840: + movs r0, #0x39 + movs r1, #6 + bl sub_0804AA60 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0803586A + adds r0, r4, #0 + bl sub_0806FA24 + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + adds r0, #0x84 + mov r2, r8 + ldr r1, [r2] + str r1, [r0] + ldr r1, [r2] + ldr r0, [r4, #0x54] + str r0, [r1, #0xc] +_0803586A: + movs r5, #0 + mov r7, r8 +_0803586E: + movs r0, #0x39 + movs r1, #7 + bl sub_0804AA60 + str r0, [r4, #0x54] + adds r6, r5, #1 + cmp r0, #0 + beq _080358A0 + strb r5, [r0, #0xb] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + adds r0, #0x84 + ldr r1, [r7] + str r1, [r0] + ldr r1, [r7] + lsls r0, r6, #2 + adds r1, #0xc + adds r1, r1, r0 + ldr r0, [r4, #0x54] + str r0, [r1] +_080358A0: + adds r5, r6, #0 + cmp r5, #3 + bls _0803586E + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0x3c + mov r1, sb + strb r0, [r1] + ldr r1, _080358D0 @ =gLinkEntity + ldrb r2, [r1, #0x18] + subs r0, #0x40 + ands r0, r2 + strb r0, [r1, #0x18] + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldrh r0, [r4, #0x32] + subs r0, #0xa0 + strh r0, [r1, #0x32] + ldr r0, _080358D4 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + b _08035974 + .align 2, 0 +_080358D0: .4byte gLinkEntity +_080358D4: .4byte gUnk_03000BF0 +_080358D8: + movs r1, #0 + movs r0, #0x10 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x79 + strb r1, [r0] + ldrb r1, [r4, #0xa] + movs r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _080358F4 + strb r2, [r4, #0xf] + b _080358F8 +_080358F4: + movs r0, #0xfe + strb r0, [r4, #0xf] +_080358F8: + adds r0, r4, #0 + adds r0, #0x74 + movs r2, #0x80 + lsls r2, r2, #1 + strh r2, [r0] + ldrb r1, [r4, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08035918 + adds r1, r4, #0 + adds r1, #0x76 + movs r0, #0xff + lsls r0, r0, #8 + strh r0, [r1] + b _08035974 +_08035918: + adds r0, r4, #0 + adds r0, #0x76 + strh r2, [r0] + b _08035974 +_08035920: + adds r0, r4, #0 + adds r0, #0x76 + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0x1c + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + str r4, [r0, #8] + b _08035974 +_08035940: + adds r0, r4, #0 + adds r0, #0x76 + movs r2, #0 + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x79 + strb r2, [r0] + movs r0, #0x10 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x7d + movs r0, #0x80 + strb r0, [r1] +_08035974: + ldrb r0, [r4, #0xa] + cmp r0, #6 + beq _08035990 + ldr r0, _0803598C @ =gUnk_080CF08C + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08004260 + b _080359A0 + .align 2, 0 +_0803598C: .4byte gUnk_080CF08C +_08035990: + ldr r0, _080359B0 @ =gUnk_080CF08C + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_080042AC +_080359A0: + adds r0, r4, #0 + bl sub_08035B94 +_080359A6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080359B0: .4byte gUnk_080CF08C + + thumb_func_start sub_080359B4 +sub_080359B4: @ 0x080359B4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08078B48 + ldr r1, _080359F0 @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08036F60 + ldr r1, _080359F4 @ =gUnk_080CF0AC + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + subs r0, #2 + ldrh r2, [r0] + adds r0, #6 + ldrh r3, [r0] + adds r0, r4, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_080359F0: .4byte gUnk_02034490 +_080359F4: .4byte gUnk_080CF0AC + + thumb_func_start sub_080359F8 +sub_080359F8: @ 0x080359F8 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08035A22 + movs r0, #1 + strb r0, [r2, #0xd] + adds r1, #9 + adds r0, #0xff + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #2 + strb r0, [r1] +_08035A22: + pop {pc} + + thumb_func_start sub_08035A24 +sub_08035A24: @ 0x08035A24 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0x80 + bne _08035A54 + adds r2, r4, #0 + adds r2, #0x79 + movs r1, #0 + movs r0, #0x3c + strb r0, [r2] + movs r0, #2 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r1, [r0] + ldr r0, _08035A50 @ =0x00000159 + bl sub_080A3268 + b _08035A64 + .align 2, 0 +_08035A50: .4byte 0x00000159 +_08035A54: + adds r1, r4, #0 + adds r1, #0x7a + adds r0, r4, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] +_08035A64: + adds r0, r4, #0 + movs r1, #0xf + bl sub_08036FAC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08035A70 +sub_08035A70: @ 0x08035A70 + push {r4, lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08035AA8 + movs r0, #3 + strb r0, [r2, #0xd] + movs r0, #0x3c + strb r0, [r1] + ldr r2, _08035AAC @ =gLinkEntity + ldrb r3, [r2, #0x18] + lsls r1, r3, #0x1e + lsrs r1, r1, #0x1e + movs r4, #1 + orrs r1, r4 + subs r0, #0x40 + ands r0, r3 + orrs r0, r1 + strb r0, [r2, #0x18] + ldr r0, _08035AB0 @ =gUnk_03000BF0 + str r2, [r0, #0x30] + strb r4, [r0, #0xe] +_08035AA8: + pop {r4, pc} + .align 2, 0 +_08035AAC: .4byte gLinkEntity +_08035AB0: .4byte gUnk_03000BF0 + + thumb_func_start sub_08035AB4 +sub_08035AB4: @ 0x08035AB4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r6, #0 + adds r5, #0x79 + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08035AE4 + ldr r1, _08035AE8 @ =gLinkEntity + movs r0, #0x10 + strb r0, [r1, #0x15] + movs r4, #4 + strb r4, [r1, #0x14] + movs r0, #0x1e + movs r1, #0 + movs r2, #0 + bl sub_08078AC0 + movs r0, #0x3c + strb r0, [r5] + strb r4, [r6, #0xd] +_08035AE4: + pop {r4, r5, r6, pc} + .align 2, 0 +_08035AE8: .4byte gLinkEntity + + thumb_func_start sub_08035AEC +sub_08035AEC: @ 0x08035AEC + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x79 + ldrb r0, [r2] + subs r1, r0, #1 + strb r1, [r2] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08035B18 + movs r0, #5 + strb r0, [r3, #0xd] + movs r0, #0x2d + strb r0, [r2] + ldr r1, _08035B14 @ =gLinkEntity + movs r0, #0 + strb r0, [r1, #0x14] + b _08035B2C + .align 2, 0 +_08035B14: .4byte gLinkEntity +_08035B18: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1e + bne _08035B2C + ldr r0, _08035B30 @ =gLinkEntity + movs r2, #0x18 + rsbs r2, r2, #0 + movs r1, #0xc + bl sub_080A2CFC +_08035B2C: + pop {pc} + .align 2, 0 +_08035B30: .4byte gLinkEntity + + thumb_func_start sub_08035B34 +sub_08035B34: @ 0x08035B34 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r2, _08035B70 @ =gLinkEntity + ldrb r5, [r2, #0x14] + cmp r5, #4 + bne _08035B7C + adds r2, r3, #0 + adds r2, #0x79 + ldrb r0, [r2] + adds r1, r0, #1 + strb r1, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1e + bls _08035B92 + movs r4, #0 + movs r0, #1 + strb r0, [r3, #0xc] + strb r4, [r3, #0xd] + ldr r0, _08035B74 @ =gUnk_03000BF0 + strb r5, [r0, #0xe] + adds r0, r3, #0 + bl sub_08036C90 + ldr r0, _08035B78 @ =gUnk_02034490 + strb r4, [r0] + movs r0, #0x2e + bl sub_080A3268 + b _08035B92 + .align 2, 0 +_08035B70: .4byte gLinkEntity +_08035B74: .4byte gUnk_03000BF0 +_08035B78: .4byte gUnk_02034490 +_08035B7C: + adds r1, r3, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08035B92 + movs r0, #4 + strb r0, [r2, #0x14] +_08035B92: + pop {r4, r5, pc} + + thumb_func_start sub_08035B94 +sub_08035B94: @ 0x08035B94 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + beq _08035BAE + ldr r0, [r5, #0x50] + adds r0, #0x3d + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x3d + strb r0, [r1] +_08035BAE: + ldrb r0, [r5, #0xa] + cmp r0, #7 + bls _08035BB6 + b _08035F6C +_08035BB6: + lsls r0, r0, #2 + ldr r1, _08035BC0 @ =_08035BC4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08035BC0: .4byte _08035BC4 +_08035BC4: @ jump table + .4byte _08035F16 @ case 0 + .4byte _08035BE4 @ case 1 + .4byte _08035BE4 @ case 2 + .4byte _08035BE4 @ case 3 + .4byte _08035BE4 @ case 4 + .4byte _08035E78 @ case 5 + .4byte _08035DB0 @ case 6 + .4byte _08035D14 @ case 7 +_08035BE4: + ldr r0, [r5, #0x50] + adds r0, #0x6d + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08035BF6 + bl sub_0805E780 +_08035BF6: + adds r1, r5, #0 + adds r1, #0x84 + ldr r0, [r1] + ldr r0, [r0, #8] + adds r0, #0x45 + ldrb r0, [r0] + adds r6, r1, #0 + adds r7, r5, #0 + adds r7, #0x76 + movs r1, #0x74 + adds r1, r1, r5 + mov r8, r1 + cmp r0, #1 + bne _08035C42 + ldrh r1, [r7] + movs r2, #0 + ldrsh r0, [r7, r2] + cmp r0, #0 + bge _08035C20 + subs r0, r1, #4 + b _08035C22 +_08035C20: + adds r0, r1, #4 +_08035C22: + strh r0, [r7] + adds r0, r5, #0 + adds r0, #0x74 + ldrh r2, [r0] + movs r3, #0 + ldrsh r1, [r0, r3] + mov r8, r0 + cmp r1, #0 + bge _08035C3C + subs r0, r2, #4 + mov r1, r8 + strh r0, [r1] + b _08035C42 +_08035C3C: + adds r0, r2, #4 + mov r2, r8 + strh r0, [r2] +_08035C42: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAD8 + ldr r0, [r6] + ldrb r0, [r0, #2] + cmp r0, #0 + bne _08035C66 + ldr r1, [r5, #0x50] + ldrb r0, [r1, #0xc] + cmp r0, #3 + beq _08035C66 + ldrb r0, [r1, #0xd] + subs r0, #3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08035C82 +_08035C66: + movs r0, #0xf + ldrsb r0, [r5, r0] + cmp r0, #0 + bge _08035C76 + ldr r0, [r6] + ldrb r0, [r0] + rsbs r0, r0, #0 + b _08035C7A +_08035C76: + ldr r0, [r6] + ldrb r0, [r0] +_08035C7A: + strb r0, [r5, #0xf] + adds r0, r5, #0 + bl sub_08036998 +_08035C82: + ldr r4, [r5, #0x50] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r3, r0, #0 + lsls r0, r3, #0xd + lsrs r3, r0, #8 + ldr r0, _08035CB0 @ =0xFFFFE000 + adds r3, r3, r0 + ldr r0, [r6] + ldr r0, [r0, #8] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bne _08035CB4 + movs r1, #0x88 + lsls r1, r1, #6 + adds r3, r3, r1 + b _08035CBC + .align 2, 0 +_08035CB0: .4byte 0xFFFFE000 +_08035CB4: + lsrs r0, r3, #1 + movs r2, #0x88 + lsls r2, r2, #6 + adds r3, r0, r2 +_08035CBC: + adds r2, r4, #0 + adds r2, #0x7b + ldr r1, _08035D0C @ =gUnk_080CF0D8 + ldrb r0, [r5, #0xa] + subs r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r2, [r2] + adds r0, r0, r2 + rsbs r0, r0, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r5, #0 + adds r2, r3, #0 + bl sub_08036914 + ldr r2, [r5, #0x50] + adds r2, #0x7b + ldr r1, _08035D10 @ =gUnk_080CF0DC + ldrb r0, [r5, #0xa] + subs r0, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r2, [r2] + adds r1, r1, r2 + adds r0, r5, #0 + adds r0, #0x79 + ldrb r0, [r0] + adds r0, r0, r1 + adds r1, r5, #0 + adds r1, #0x7b + strb r0, [r1] + ldrh r1, [r7] + mov r3, r8 + ldrh r2, [r3] + adds r0, r5, #0 + adds r0, #0x7a + ldrh r3, [r0] + b _08035E70 + .align 2, 0 +_08035D0C: .4byte gUnk_080CF0D8 +_08035D10: .4byte gUnk_080CF0DC +_08035D14: + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + ldr r0, [r0, #8] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bhi _08035D28 + bl sub_0805E780 +_08035D28: + ldr r0, [r4] + ldrb r0, [r0, #1] + subs r0, #2 + ldrb r1, [r5, #0xb] + cmp r0, r1 + bge _08035D38 + bl sub_0805E780 +_08035D38: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAB0 + ldr r0, [r4] + ldrb r0, [r0, #1] + subs r0, #2 + ldrb r2, [r5, #0xb] + cmp r0, r2 + bne _08035D8A + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAB0 + ldr r4, [r5, #0x50] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r3, r0, #0 + lsls r0, r3, #0xd + lsrs r3, r0, #8 + adds r4, #0x7b + ldrb r0, [r4] + rsbs r0, r0, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r5, #0 + adds r2, r3, #0 + bl sub_08036914 + ldr r0, [r5, #0x50] + adds r0, #0x7b + ldrb r0, [r0] + rsbs r0, r0, #0 + adds r1, r5, #0 + adds r1, #0x7b + strb r0, [r1] +_08035D8A: + ldr r0, [r5, #0x50] + adds r0, #0x7c + ldrb r1, [r0] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08035D9C + b _08035F6C +_08035D9C: + ldrb r2, [r5, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + orrs r1, r3 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + b _08035F6C +_08035DB0: + adds r6, r5, #0 + adds r6, #0x84 + ldr r0, [r6] + ldr r0, [r0, #8] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bhi _08035DC4 + bl sub_0805E780 +_08035DC4: + adds r0, r5, #0 + bl sub_080042B8 + ldr r0, [r5, #0x50] + adds r0, #0x7c + ldrb r1, [r0] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08035E24 + adds r0, r5, #0 + adds r0, #0x7d + ldrb r1, [r0] + adds r0, r5, #0 + movs r2, #0x10 + bl sub_08036AF0 + adds r2, r5, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r3, #0x7f + adds r0, r3, #0 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #7 + bne _08035E56 + ldrb r1, [r5, #0x10] + adds r0, r3, #0 + ands r0, r1 + strb r0, [r5, #0x10] + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _08035E56 + ldr r0, [r5, #0x50] + str r0, [r1, #0x50] + ldr r0, [r5, #0x54] + adds r0, #0x84 + ldr r1, [r6] + str r1, [r0] + b _08035E56 +_08035E24: + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + ldrb r2, [r5, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + orrs r1, r3 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r0, r5, #0 + bl sub_08036998 + adds r0, r5, #0 + adds r0, #0x7d + ldrb r1, [r0] + adds r0, r5, #0 + movs r2, #4 + bl sub_080369D0 + adds r4, r5, #0 + adds r4, #0x41 +_08035E56: + movs r0, #0 + strb r0, [r4] + adds r0, r5, #0 + adds r0, #0x76 + ldrh r1, [r0] + subs r0, #2 + ldrh r2, [r0] + adds r0, #6 + ldrh r3, [r0] + rsbs r3, r3, #0 + movs r0, #0x80 + lsls r0, r0, #8 + eors r3, r0 +_08035E70: + adds r0, r5, #0 + bl sub_0805EC9C + b _08035F6C +_08035E78: + adds r4, r5, #0 + adds r4, #0x45 + ldrb r0, [r4] + cmp r0, #1 + bne _08035E88 + movs r0, #0 + strb r0, [r4] + b _08035F6C +_08035E88: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAD8 + ldr r0, [r5, #0x50] + ldrb r0, [r0, #0xd] + adds r7, r5, #0 + adds r7, #0x76 + adds r6, r5, #0 + adds r6, #0x79 + cmp r0, #4 + beq _08035EC2 + ldrb r0, [r4] + cmp r0, #1 + beq _08035EC2 + ldrb r0, [r6] + cmp r0, #0x1c + bls _08035EB0 + subs r0, #1 + strb r0, [r6] +_08035EB0: + ldrh r0, [r7] + movs r1, #0x80 + lsls r1, r1, #1 + cmp r0, r1 + bls _08035EC0 + subs r0, #1 + strh r0, [r7] + b _08035EC2 +_08035EC0: + strh r1, [r7] +_08035EC2: + ldr r4, [r5, #0x50] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r3, r0, #0 + ldrb r0, [r6] + lsls r0, r0, #8 + muls r0, r3, r0 + lsrs r3, r0, #8 + adds r4, #0x7b + ldrb r0, [r4] + adds r0, #0x80 + rsbs r0, r0, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r5, #0 + adds r2, r3, #0 + bl sub_08036914 + ldr r0, [r5, #0x50] + adds r0, #0x7b + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x7b + strb r0, [r1] + ldrh r1, [r7] + adds r0, r5, #0 + adds r0, #0x74 + ldrh r2, [r0] + adds r0, #6 + ldrh r3, [r0] + adds r0, r5, #0 + bl sub_0805EC9C + adds r0, r5, #0 + bl sub_0800445C + b _08035F6C +_08035F16: + adds r0, r5, #0 + bl sub_0800445C + adds r0, r5, #0 + bl sub_08036F60 + adds r0, r5, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #6] + cmp r0, #0 + beq _08035F48 + subs r0, #1 + strb r0, [r1, #6] + ldr r0, _08035F74 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08035F48 + adds r0, r5, #0 + movs r1, #0xf + movs r2, #3 + bl sub_0804A98C +_08035F48: + ldr r1, _08035F78 @ =gUnk_080CF0C4 + ldrb r0, [r5, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + adds r0, r5, #0 + adds r0, #0x76 + ldrh r1, [r0] + subs r0, #2 + ldrh r2, [r0] + adds r0, #6 + ldrh r3, [r0] + adds r0, r5, #0 + bl sub_0805EC9C +_08035F6C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08035F74: .4byte gUnk_030010A0 +_08035F78: .4byte gUnk_080CF0C4 + + thumb_func_start sub_08035F7C +sub_08035F7C: @ 0x08035F7C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08035FD0 @ =gLinkEntity + ldr r0, [r2, #0x2c] + ldr r1, [r4, #0x2c] + subs r0, r0, r1 + ldr r1, [r2, #0x30] + ldr r2, [r4, #0x30] + subs r1, r1, r2 + bl sub_080045DA + adds r1, r4, #0 + adds r1, #0x7b + ldrb r1, [r1] + rsbs r1, r1, #0 + movs r2, #0x80 + eors r1, r2 + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + movs r1, #0x20 + cmp r0, #0 + bne _08035FB6 + movs r1, #8 +_08035FB6: + cmn r2, r1 + ble _08035FEE + cmp r2, r1 + bge _08035FEE + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0xff + beq _08035FD4 + adds r0, r4, #0 + bl sub_08036C90 + b _08036074 + .align 2, 0 +_08035FD0: .4byte gLinkEntity +_08035FD4: + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0 + bne _08035FE6 + adds r0, r4, #0 + bl sub_08036E00 + b _08036028 +_08035FE6: + adds r0, r4, #0 + bl sub_08036D70 + b _08036028 +_08035FEE: + cmp r2, #0x80 + bls _0803600E + adds r2, r4, #0 + adds r2, #0x7a + adds r0, r4, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldrh r1, [r2] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r2] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r1, [r0, #4] + b _08036028 +_0803600E: + adds r2, r4, #0 + adds r2, #0x7a + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2] + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #1 + strb r0, [r1, #4] +_08036028: + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + rsbs r0, r0, #0 + movs r1, #0x80 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + strb r0, [r4, #0x15] + adds r5, r4, #0 + adds r5, #0x7c + ldrb r1, [r5] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0803606C + adds r3, r4, #0 + adds r3, #0x82 + ldrh r2, [r3] + ldr r0, _08036060 @ =0x0000027F + cmp r2, r0 + bhi _0803606C + ldrb r1, [r5] + cmp r1, #1 + beq _08036064 + cmp r1, #3 + beq _08036068 + b _0803606C + .align 2, 0 +_08036060: .4byte 0x0000027F +_08036064: + adds r0, r2, #1 + b _0803606A +_08036068: + adds r0, r2, #2 +_0803606A: + strh r0, [r3] +_0803606C: + adds r0, r4, #0 + movs r1, #0x1f + bl sub_08036FAC +_08036074: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08036078 +sub_08036078: @ 0x08036078 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x79 + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080360A0 + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + cmp r1, #0 + beq _080360A0 + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080360B2 +_080360A0: + adds r1, r4, #0 + adds r1, #0x78 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08036D4C + b _080360BE +_080360B2: + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _080360BE + strb r0, [r5] +_080360BE: + adds r0, r4, #0 + movs r1, #0x1f + bl sub_08036FAC + pop {r4, r5, pc} + + thumb_func_start sub_080360C8 +sub_080360C8: @ 0x080360C8 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080360E4 + adds r0, r2, #0 + bl sub_08036DA0 +_080360E4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080360E8 +sub_080360E8: @ 0x080360E8 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x79 + ldrb r0, [r1] + cmp r0, #0 + bne _08036178 + adds r0, r4, #0 + bl sub_080AEF88 + movs r2, #0 + ldrb r0, [r4, #0x15] + cmp r0, #0 + beq _08036116 + cmp r0, #0x10 + beq _08036116 + ldrh r0, [r4, #0x2a] + movs r1, #0xee + lsls r1, r1, #8 + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r2, r0, #0x1f +_08036116: + ldrb r0, [r4, #0x15] + cmp r0, #0x18 + beq _0803612C + cmp r0, #8 + beq _0803612C + ldrh r1, [r4, #0x2a] + movs r0, #0xee + ands r0, r1 + cmp r0, #0 + beq _0803612C + movs r2, #1 +_0803612C: + cmp r2, #0 + beq _0803617C + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0x20 + strb r0, [r1] + adds r1, #4 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1] + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #6] + adds r0, #0x3c + strb r0, [r1, #6] + adds r0, r4, #0 + bl sub_08036C90 + movs r0, #0x3c + movs r1, #0 + bl sub_08080964 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 + b _0803617C +_08036178: + subs r0, #1 + strb r0, [r1] +_0803617C: + adds r0, r4, #0 + movs r1, #0xf + bl sub_08036FAC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08036188 +sub_08036188: @ 0x08036188 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _080361EC @ =gUnk_080CF0E0 + ldrb r0, [r5, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + adds r0, r5, #0 + bl sub_08036FE4 + adds r0, r5, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _080361EA + ldr r4, _080361F0 @ =gLinkEntity + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + bl sub_08078B48 + bl sub_08077B20 + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r0, #0x7b + ldrb r1, [r0] + adds r1, #0x80 + rsbs r1, r1, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + movs r2, #0xe0 + lsls r2, r2, #6 + adds r0, r4, #0 + bl sub_08036914 +_080361EA: + pop {r4, r5, pc} + .align 2, 0 +_080361EC: .4byte gUnk_080CF0E0 +_080361F0: .4byte gLinkEntity + + thumb_func_start sub_080361F4 +sub_080361F4: @ 0x080361F4 + push {lr} + adds r2, r0, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #4 + bne _08036208 + adds r0, r2, #0 + bl sub_08036D4C + b _08036236 +_08036208: + adds r1, r2, #0 + adds r1, #0x82 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1] + movs r0, #1 + strb r0, [r2, #0xb] + subs r1, #6 + ldrb r1, [r1] + ands r0, r1 + cmp r0, #0 + bne _08036228 + adds r1, r2, #0 + adds r1, #0x79 + movs r0, #0x16 + b _0803622E +_08036228: + adds r1, r2, #0 + adds r1, #0x79 + movs r0, #0 +_0803622E: + strb r0, [r1] + ldr r0, _08036238 @ =0x00000155 + bl sub_080A3268 +_08036236: + pop {pc} + .align 2, 0 +_08036238: .4byte 0x00000155 + + thumb_func_start sub_0803623C +sub_0803623C: @ 0x0803623C + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x74 + ldrh r0, [r1] + cmp r0, #0xbf + bhi _08036250 + adds r0, #1 + strh r0, [r1] + b _080362A0 +_08036250: + adds r3, r2, #0 + adds r3, #0x79 + ldrb r0, [r3] + subs r0, #1 + strb r0, [r3] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080362A0 + adds r0, r2, #0 + adds r0, #0x7d + ldrb r1, [r0] + cmp r1, #1 + bne _08036292 + movs r0, #3 + strb r0, [r2, #0xb] + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08036280 + movs r0, #0x3c + b _08036282 +_08036280: + movs r0, #0x78 +_08036282: + strb r0, [r3] + adds r0, r2, #0 + adds r0, #0x84 + ldr r1, [r0] + subs r0, #9 + ldrb r0, [r0] + strb r0, [r1, #3] + b _0803629A +_08036292: + movs r0, #2 + strb r0, [r2, #0xb] + movs r0, #0x2d + strb r0, [r3] +_0803629A: + ldr r0, _080362A4 @ =0x00000155 + bl sub_080A3268 +_080362A0: + pop {pc} + .align 2, 0 +_080362A4: .4byte 0x00000155 + + thumb_func_start sub_080362A8 +sub_080362A8: @ 0x080362A8 + push {r4, lr} + adds r2, r0, #0 + movs r0, #0x79 + adds r0, r0, r2 + mov ip, r0 + ldrb r0, [r0] + cmp r0, #0 + bne _080362FA + adds r4, r2, #0 + adds r4, #0x76 + adds r1, r2, #0 + adds r1, #0x74 + ldrh r3, [r1] + ldrh r0, [r4] + cmp r0, r3 + bhs _080362D0 + adds r0, r3, #0 + subs r0, #8 + strh r0, [r1] + b _08036300 +_080362D0: + movs r0, #3 + strb r0, [r2, #0xb] + ldrh r0, [r4] + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #2 + beq _080362E6 + movs r0, #0x3c + b _080362FC +_080362E6: + movs r0, #0 + mov r1, ip + strb r0, [r1] + adds r0, r2, #0 + movs r1, #0x87 + movs r2, #4 + movs r3, #0 + bl sub_080A2988 + b _08036300 +_080362FA: + subs r0, #1 +_080362FC: + mov r1, ip + strb r0, [r1] +_08036300: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08036304 +sub_08036304: @ 0x08036304 + push {lr} + mov ip, r0 + ldr r0, _08036328 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0803632C + mov r2, ip + adds r2, #0x84 + ldr r0, [r2] + ldr r1, [r0, #8] + adds r1, #0x76 + ldrh r0, [r1] + subs r0, #8 + strh r0, [r1] + b _08036350 + .align 2, 0 +_08036328: .4byte gUnk_030010A0 +_0803632C: + mov r2, ip + adds r2, #0x84 + ldr r0, [r2] + ldr r1, [r0, #8] + adds r1, #0x76 + ldrh r0, [r1] + adds r0, #8 + strh r0, [r1] + ldr r0, [r2] + ldr r0, [r0, #8] + adds r3, r0, #0 + adds r3, #0x76 + ldrh r0, [r3] + movs r1, #0xc0 + lsls r1, r1, #1 + cmp r0, r1 + bls _08036350 + strh r1, [r3] +_08036350: + mov r0, ip + adds r0, #0x7d + ldrb r1, [r0] + adds r3, r0, #0 + cmp r1, #1 + beq _0803637A + ldr r0, [r2] + ldr r0, [r0, #8] + adds r1, r0, #0 + adds r1, #0x79 + ldrb r0, [r1] + cmp r0, #0x1f + bhi _0803637A + adds r0, #1 + strb r0, [r1] + ldr r0, [r2] + ldr r1, [r0, #8] + adds r1, #0x76 + ldrh r0, [r1] + adds r0, #8 + strh r0, [r1] +_0803637A: + ldr r0, _0803638C @ =gUnk_080CF0F0 + ldrb r1, [r3] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + mov r0, ip + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803638C: .4byte gUnk_080CF0F0 + + thumb_func_start sub_08036390 +sub_08036390: @ 0x08036390 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xf + movs r2, #0 + bl sub_0804A98C + str r0, [r4, #0x54] + cmp r0, #0 + beq _080363B4 + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x7b + ldrb r1, [r1] + rsbs r1, r1, #0 + movs r2, #0x80 + eors r1, r2 + strb r1, [r0, #0x15] +_080363B4: + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, [r0, #8] + adds r1, #0x79 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08036C90 + pop {r4, pc} + + thumb_func_start sub_080363CC +sub_080363CC: @ 0x080363CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r7, r4, #0 + adds r7, #0x80 + ldrb r2, [r7] + cmp r2, #0 + bne _080364CC + ldr r5, _08036498 @ =gLinkEntity + ldr r0, [r5, #0x2c] + ldr r1, [r4, #0x2c] + subs r0, r0, r1 + ldr r1, [r5, #0x30] + ldr r2, [r4, #0x30] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r4, #0x15] + adds r2, r4, #0 + adds r2, #0x7b + ldrb r0, [r2] + adds r0, #0x80 + rsbs r0, r0, #0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r4, #0x15] + subs r3, r0, r1 + mov r8, r2 + cmp r3, #0 + bge _0803640C + rsbs r3, r3, #0 +_0803640C: + adds r6, r4, #0 + adds r6, #0x79 + cmp r3, #0xf + bgt _080364AA + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0xf0 + bl sub_0806FC80 + cmp r0, #0 + beq _080364AA + ldr r2, _0803649C @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + movs r0, #0x80 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080364A4 + ldrb r1, [r5, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080364AA + movs r1, #0xa0 + lsls r1, r1, #2 + mov r0, r8 + ldrb r2, [r0] + rsbs r2, r2, #0 + adds r0, r5, #0 + bl sub_0806F62C + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x48 + bl sub_0806FC80 + cmp r0, #0 + beq _080364AA + movs r0, #1 + strb r0, [r7] + movs r0, #2 + strb r0, [r6] + ldr r2, _080364A0 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + movs r1, #0x84 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldr r1, [r4, #0x2c] + subs r0, r0, r1 + ldrh r1, [r2, #8] + adds r1, #0x88 + lsls r1, r1, #0x10 + ldr r2, [r4, #0x30] + subs r1, r1, r2 + bl sub_080045DA + adds r2, r4, #0 + adds r2, #0x84 + ldr r1, [r2] + strb r0, [r1, #3] + ldr r1, [r2] + ldrb r0, [r1, #3] + adds r0, #0x80 + rsbs r0, r0, #0 + strb r0, [r1, #3] + movs r0, #0xed + bl sub_080A3268 + b _080364AA + .align 2, 0 +_08036498: .4byte gLinkEntity +_0803649C: .4byte gUnk_03003F80 +_080364A0: .4byte gUnk_03000BF0 +_080364A4: + ldr r0, _080364C4 @ =0xFFFFF7FF + ands r1, r0 + str r1, [r2, #0x30] +_080364AA: + ldr r0, _080364C8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0803657A + adds r0, r4, #0 + movs r1, #0x87 + movs r2, #2 + movs r3, #0 + bl sub_080A2988 + b _0803657A + .align 2, 0 +_080364C4: .4byte 0xFFFFF7FF +_080364C8: .4byte gUnk_030010A0 +_080364CC: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r5, #1 + adds r0, r5, #0 + ands r0, r1 + adds r3, r4, #0 + adds r3, #0x84 + cmp r0, #0 + bne _080364F0 + ldr r0, [r3] + adds r1, r4, #0 + adds r1, #0x7b + ldrb r0, [r0, #3] + mov r8, r1 + ldrb r6, [r1] + cmp r0, r6 + bne _08036570 +_080364F0: + cmp r2, #1 + bne _08036510 + movs r0, #2 + strb r0, [r7] + strb r0, [r4, #0xb] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0x2d + strb r0, [r1] + adds r1, #9 + movs r2, #0 + adds r0, #0xd3 + strh r0, [r1] + ldr r0, [r3] + strb r2, [r0, #2] + b _08036652 +_08036510: + movs r0, #0 + strb r0, [r7] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1] + ldr r0, [r3] + ldr r1, [r0, #8] + adds r1, #0x79 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _0803656C @ =gLinkEntity + ldrb r2, [r1, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #1 + orrs r0, r2 + strb r0, [r1, #0x18] + ldrb r2, [r1, #0x10] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #0x10] + adds r1, #0x38 + strb r5, [r1] + movs r0, #0x80 + lsls r0, r0, #3 + adds r1, r4, #0 + adds r1, #0x7b + ldrb r1, [r1] + adds r1, #0x80 + rsbs r1, r1, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1b + movs r2, #0x30 + bl sub_080792BC + adds r0, r4, #0 + bl sub_08036C90 + movs r0, #0xef + bl sub_080A3268 + b _08036652 + .align 2, 0 +_0803656C: .4byte gLinkEntity +_08036570: + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #2 + strb r0, [r1] + adds r6, r1, #0 +_0803657A: + ldrb r0, [r6] + cmp r0, #0 + bne _08036598 + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x74 + movs r2, #0 + strh r0, [r1] + strb r2, [r4, #0xb] + adds r0, r4, #0 + bl sub_08036C90 + b _08036652 +_08036598: + subs r2, r0, #1 + strb r2, [r6] + ldr r0, _080365E4 @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + movs r0, #0x80 + lsls r0, r0, #4 + cmp r1, r0 + bne _080365F8 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3c + bne _080365F8 + ldr r2, _080365E8 @ =gLinkEntity + ldr r0, [r2, #0x2c] + ldr r1, [r4, #0x2c] + subs r0, r0, r1 + ldr r1, [r2, #0x30] + ldr r2, [r4, #0x30] + subs r1, r1, r2 + bl sub_080045DA + adds r3, r0, #0 + mov r7, r8 + ldrb r2, [r7] + rsbs r0, r2, #0 + movs r1, #0x80 + eors r0, r1 + subs r0, r3, r0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x80 + bls _080365EC + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r2, #0 + adds r0, #0x30 + b _080365F6 + .align 2, 0 +_080365E4: .4byte gUnk_03003F80 +_080365E8: .4byte gLinkEntity +_080365EC: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r2, #0 + subs r0, #0x30 +_080365F6: + strb r0, [r1, #3] +_080365F8: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + movs r5, #1 + adds r2, r5, #0 + ands r2, r0 + cmp r2, #0 + bne _08036652 + adds r3, r4, #0 + adds r3, #0x84 + ldr r1, [r3] + ldrb r0, [r1, #3] + mov r6, r8 + ldrb r6, [r6] + cmp r0, r6 + beq _08036650 + strb r5, [r1, #2] + ldr r0, [r3] + ldrb r0, [r0, #3] + mov r7, r8 + ldrb r1, [r7] + subs r0, r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x80 + bls _0803663E + adds r2, r4, #0 + adds r2, #0x7a + adds r0, r4, #0 + adds r0, #0x82 + ldrh r1, [r2] + ldrh r0, [r0] + subs r1, r1, r0 + strh r1, [r2] + b _08036652 +_0803663E: + adds r1, r4, #0 + adds r1, #0x7a + adds r0, r4, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + b _08036652 +_08036650: + strb r2, [r1, #2] +_08036652: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08036658 +sub_08036658: @ 0x08036658 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x79 + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #0xff + bne _08036678 + movs r0, #0 + strb r0, [r5, #0xb] + adds r0, r5, #0 + bl sub_08036C90 + movs r0, #0x78 + strb r0, [r4] + b _080366AC +_08036678: + adds r0, r1, #1 + strb r0, [r4] + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0805308C + ldr r0, _080366B0 @ =gUnk_030010A0 + ldr r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080366AC + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _080366A0 + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_080A3268 +_080366A0: + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #3 + movs r3, #0 + bl sub_080A2988 +_080366AC: + pop {r4, r5, pc} + .align 2, 0 +_080366B0: .4byte gUnk_030010A0 + + thumb_func_start sub_080366B4 +sub_080366B4: @ 0x080366B4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x79 + ldrb r0, [r2] + adds r1, r0, #0 + cmp r1, #0 + bne _080366D4 + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r1, [r0, #2] + adds r0, r4, #0 + bl sub_08036C90 + b _08036706 +_080366D4: + subs r0, #1 + strb r0, [r2] + ldr r0, _08036708 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08036706 + adds r0, r4, #0 + movs r1, #0xf + movs r2, #2 + bl sub_0804A98C + str r0, [r4, #0x54] + cmp r0, #0 + beq _08036706 + str r4, [r0, #0x50] + ldr r2, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + rsbs r0, r0, #0 + movs r1, #0x80 + eors r0, r1 + strb r0, [r2, #0x15] +_08036706: + pop {r4, pc} + .align 2, 0 +_08036708: .4byte gUnk_030010A0 + + thumb_func_start sub_0803670C +sub_0803670C: @ 0x0803670C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803675C @ =gUnk_080CF100 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrb r0, [r1, #6] + cmp r0, #0 + beq _08036746 + subs r0, #1 + strb r0, [r1, #6] + ldr r0, _08036760 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08036746 + adds r0, r4, #0 + movs r1, #0xf + movs r2, #3 + bl sub_0804A98C +_08036746: + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + subs r0, #2 + ldrh r2, [r0] + adds r0, #6 + ldrh r3, [r0] + adds r0, r4, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_0803675C: .4byte gUnk_080CF100 +_08036760: .4byte gUnk_030010A0 + + thumb_func_start sub_08036764 +sub_08036764: @ 0x08036764 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + strh r1, [r4, #0x2a] + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + rsbs r0, r0, #0 + movs r1, #0x80 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0x78 + strb r0, [r1] + adds r1, #9 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #4 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080368D8 + adds r0, r4, #0 + bl sub_080367B0 + pop {r4, pc} + + thumb_func_start sub_080367B0 +sub_080367B0: @ 0x080367B0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080AEF88 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0803683A + movs r0, #2 + strb r0, [r4, #0xd] + adds r3, r4, #0 + adds r3, #0x84 + ldr r1, [r3] + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + strb r0, [r1, #3] + ldrh r1, [r4, #0x2a] + movs r0, #0xee + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080367E4 + ldr r1, [r3] + ldrb r0, [r1, #3] + rsbs r0, r0, #0 + strb r0, [r1, #3] +_080367E4: + ldrh r1, [r4, #0x2a] + movs r0, #0xee + ands r0, r1 + cmp r0, #0 + beq _080367FE + ldr r0, [r3] + ldrb r1, [r0, #3] + rsbs r1, r1, #0 + movs r5, #0x80 + rsbs r5, r5, #0 + adds r2, r5, #0 + eors r1, r2 + strb r1, [r0, #3] +_080367FE: + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0x18 + strb r0, [r1] + adds r1, #4 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1] + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + ldr r1, [r3] + ldrb r0, [r1, #6] + adds r0, #0x1e + strb r0, [r1, #6] + movs r0, #0x1e + movs r1, #0 + bl sub_08080964 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 +_0803683A: + adds r1, r4, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08036852 + subs r1, #0x34 + movs r0, #0 + strb r0, [r1] +_08036852: + ldr r0, _08036868 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _08036864 + ldr r0, _0803686C @ =0x00000159 + bl sub_080A3268 +_08036864: + pop {r4, r5, pc} + .align 2, 0 +_08036868: .4byte gUnk_030010A0 +_0803686C: .4byte 0x00000159 + + thumb_func_start sub_08036870 +sub_08036870: @ 0x08036870 + push {lr} + adds r3, r0, #0 + adds r0, #0x84 + ldr r0, [r0] + ldrb r1, [r0, #3] + movs r0, #0x7b + adds r0, r0, r3 + mov ip, r0 + ldrb r0, [r0] + subs r1, r1, r0 + adds r0, r1, #7 + cmp r0, #0xe + bhi _080368AA + movs r2, #0 + movs r0, #1 + strb r0, [r3, #0xd] + mov r1, ip + ldrb r0, [r1] + rsbs r0, r0, #0 + movs r1, #0x80 + eors r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + strb r0, [r3, #0x15] + strh r2, [r3, #0x2a] + adds r0, r3, #0 + bl sub_080AEF88 + b _080368D4 +_080368AA: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x80 + bls _080368C4 + adds r2, r3, #0 + adds r2, #0x7a + adds r0, r3, #0 + adds r0, #0x82 + ldrh r1, [r2] + ldrh r0, [r0] + subs r1, r1, r0 + strh r1, [r2] + b _080368D4 +_080368C4: + adds r1, r3, #0 + adds r1, #0x7a + adds r0, r3, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] +_080368D4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080368D8 +sub_080368D8: @ 0x080368D8 + push {lr} + adds r3, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _08036902 + ldr r2, _08036910 @ =gLinkEntity + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r2, #0x38 + movs r0, #1 + strb r0, [r2] +_08036902: + adds r0, r3, #0 + adds r0, #0x76 + movs r1, #0xa0 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + pop {pc} + .align 2, 0 +_08036910: .4byte gLinkEntity + + thumb_func_start sub_08036914 +sub_08036914: @ 0x08036914 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + ldr r0, _08036994 @ =gUnk_080C9160 + mov sb, r0 + lsls r0, r4, #1 + add r0, sb + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r6, r6, #0x10 + asrs r6, r6, #0x10 + adds r1, r6, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + mov r8, r1 + bl sub_0806FA04 + ldr r1, [r5, #0x50] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x2c] + adds r1, r1, r0 + str r1, [r5, #0x2c] + adds r4, #0x40 + lsls r4, r4, #1 + add r4, sb + movs r1, #0 + ldrsh r0, [r4, r1] + adds r1, r6, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r1, r8 + bl sub_0806FA04 + ldr r2, [r5, #0x50] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r2, #0x30] + subs r1, r1, r0 + str r1, [r5, #0x30] + adds r2, #0x62 + ldrb r0, [r2] + adds r1, r5, #0 + adds r1, #0x62 + strb r0, [r1] + ldr r0, [r5, #0x50] + adds r0, #0x63 + ldrb r0, [r0] + adds r5, #0x63 + strb r0, [r5] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_08036994: .4byte gUnk_080C9160 + + thumb_func_start sub_08036998 +sub_08036998: @ 0x08036998 + push {r4, lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x79 + ldrb r0, [r2, #0xf] + ldrb r4, [r3] + adds r1, r0, r4 + strb r1, [r3] + ldrb r4, [r2, #0xf] + movs r0, #0xf + ldrsb r0, [r2, r0] + cmp r0, #0 + bge _080369BE + ldrb r0, [r2, #0xe] + lsls r1, r1, #0x18 + lsls r0, r0, #0x18 + cmn r1, r0 + bge _080369CC + b _080369C8 +_080369BE: + movs r0, #0 + ldrsb r0, [r3, r0] + ldrb r1, [r2, #0xe] + cmp r0, r1 + ble _080369CC +_080369C8: + rsbs r0, r4, #0 + strb r0, [r2, #0xf] +_080369CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080369D0 +sub_080369D0: @ 0x080369D0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov ip, r1 + adds r6, r2, #0 + adds r1, r0, #0 + adds r1, #0x84 + ldr r4, [r1] + ldr r2, [r4, #0xc] + ldrb r1, [r4, #1] + subs r1, #1 + lsls r1, r1, #2 + adds r3, r4, #0 + adds r3, #0xc + adds r1, r3, r1 + ldr r1, [r1] + adds r1, #0x7b + adds r0, #0x79 + ldrb r0, [r0] + ldrb r1, [r1] + adds r0, r0, r1 + adds r2, #0x7b + strb r0, [r2] + ldrb r0, [r4, #1] + movs r2, #0 + cmp r0, #1 + beq _08036A58 + adds r5, r3, #0 + lsls r0, r6, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + rsbs r0, r6, #0 + lsls r0, r0, #0x18 + asrs r7, r0, #0x18 +_08036A16: + lsls r0, r2, #2 + adds r0, r5, r0 + ldr r1, [r0] + adds r1, #0x7b + adds r2, #1 + lsls r0, r2, #2 + adds r0, r5, r0 + ldr r0, [r0] + adds r3, r0, #0 + adds r3, #0x7b + ldrb r1, [r1] + ldrb r0, [r3] + cmp r1, r0 + beq _08036A4C + subs r0, r0, r1 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08036A44 + cmp r0, r8 + ble _08036A4C + adds r0, r1, r6 + b _08036A4A +_08036A44: + cmp r0, r7 + bge _08036A4C + subs r0, r1, r6 +_08036A4A: + strb r0, [r3] +_08036A4C: + ldrb r0, [r4, #1] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r2, r0 + blo _08036A16 +_08036A58: + ldrb r0, [r4, #1] + subs r2, r0, #1 + cmp r2, #0 + beq _08036AE4 + ldr r0, _08036AEC @ =gUnk_080C9160 + mov sb, r0 + movs r1, #0x80 + mov r8, r1 + mov r1, ip + lsls r0, r1, #0x14 + asrs r6, r0, #0x10 + lsls r0, r2, #2 + adds r0, #8 + adds r5, r0, r4 + movs r7, #0x80 + lsls r7, r7, #1 +_08036A78: + subs r4, r2, #1 + ldr r0, [r5] + adds r0, #0x7b + ldrb r0, [r0] + mov r1, r8 + eors r0, r1 + lsls r0, r0, #1 + add r0, sb + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r6, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + bl sub_0806FA04 + ldr r2, [r5] + ldr r1, [r5, #4] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x2c] + adds r1, r1, r0 + str r1, [r2, #0x2c] + ldr r0, [r5] + adds r0, #0x7b + ldrb r0, [r0] + mov r1, r8 + eors r0, r1 + adds r0, #0x40 + lsls r0, r0, #1 + add r0, sb + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r6, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + bl sub_0806FA04 + ldr r2, [r5] + ldr r1, [r5, #4] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x30] + subs r1, r1, r0 + str r1, [r2, #0x30] + subs r5, #4 + adds r2, r4, #0 + cmp r2, #0 + bne _08036A78 +_08036AE4: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08036AEC: .4byte gUnk_080C9160 + + thumb_func_start sub_08036AF0 +sub_08036AF0: @ 0x08036AF0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0xc + str r1, [sp] + mov r8, r2 + adds r0, #0x84 + ldr r0, [r0] + str r0, [sp, #4] + ldrb r0, [r0, #1] + subs r4, r0, #1 + cmp r4, #0 + bne _08036B10 + b _08036C80 +_08036B10: + ldr r0, [sp, #4] + adds r0, #0xc + str r0, [sp, #8] + lsls r0, r1, #0x14 + asrs r0, r0, #0x10 + mov sl, r0 +_08036B1C: + mov r1, r8 + cmp r1, #0 + bne _08036BC0 + lsls r0, r4, #2 + ldr r2, [sp, #8] + adds r6, r2, r0 + ldr r0, [r6] + subs r4, #1 + lsls r1, r4, #2 + adds r5, r2, r1 + ldr r2, [r5] + movs r3, #0x2e + ldrsh r1, [r2, r3] + movs r3, #0x32 + ldrsh r2, [r2, r3] + bl sub_080041DC + mov sb, r4 + ldr r1, [sp] + cmp r1, r0 + blo _08036B48 + b _08036C78 +_08036B48: + ldr r2, [r5] + ldr r3, [r6] + ldr r0, [r2, #0x2c] + ldr r1, [r3, #0x2c] + subs r0, r0, r1 + ldr r1, [r2, #0x30] + ldr r2, [r3, #0x30] + subs r1, r1, r2 + bl sub_080045DA + ldr r1, [r5] + adds r1, #0x7b + strb r0, [r1] + ldr r0, [r5] + adds r0, #0x7b + ldrb r0, [r0] + lsls r0, r0, #1 + ldr r2, _08036BBC @ =gUnk_080C9160 + adds r0, r0, r2 + movs r3, #0 + ldrsh r0, [r0, r3] + mov r1, sl + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0806FA04 + ldr r2, [r5] + ldr r1, [r6] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x2c] + adds r1, r1, r0 + str r1, [r2, #0x2c] + ldr r0, [r5] + adds r0, #0x7b + ldrb r0, [r0] + adds r0, #0x40 + lsls r0, r0, #1 + ldr r1, _08036BBC @ =gUnk_080C9160 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + mov r1, sl + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0806FA04 + ldr r2, [r5] + ldr r1, [r6] + b _08036C6E + .align 2, 0 +_08036BBC: .4byte gUnk_080C9160 +_08036BC0: + subs r2, r4, #1 + lsls r0, r2, #2 + ldr r3, [sp, #8] + adds r0, r3, r0 + ldr r0, [r0] + adds r5, r0, #0 + adds r5, #0x7b + lsls r1, r4, #2 + adds r0, r3, r1 + ldr r0, [r0] + adds r0, #0x7b + ldrb r4, [r5] + ldrb r3, [r0] + adds r7, r1, #0 + ldr r6, [sp, #4] + adds r6, #0xc + mov sb, r2 + cmp r4, r3 + beq _08036C0E + subs r0, r3, r4 + lsls r0, r0, #0x18 + asrs r1, r0, #0x18 + cmp r1, #0 + ble _08036BFE + mov r2, r8 + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + ble _08036C0E + subs r0, r3, r2 + b _08036C0C +_08036BFE: + mov r2, r8 + rsbs r0, r2, #0 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r1, r0 + bge _08036C0E + adds r0, r3, r2 +_08036C0C: + strb r0, [r5] +_08036C0E: + mov r3, sb + lsls r4, r3, #2 + adds r4, r6, r4 + ldr r0, [r4] + adds r0, #0x7b + ldrb r0, [r0] + lsls r0, r0, #1 + ldr r1, _08036C8C @ =gUnk_080C9160 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + mov r1, sl + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0806FA04 + ldr r2, [r4] + adds r5, r6, r7 + ldr r1, [r5] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x2c] + adds r1, r1, r0 + str r1, [r2, #0x2c] + ldr r0, [r4] + adds r0, #0x7b + ldrb r0, [r0] + adds r0, #0x40 + lsls r0, r0, #1 + ldr r3, _08036C8C @ =gUnk_080C9160 + adds r0, r0, r3 + movs r1, #0 + ldrsh r0, [r0, r1] + mov r1, sl + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0806FA04 + ldr r2, [r4] + ldr r1, [r5] +_08036C6E: + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x30] + subs r1, r1, r0 + str r1, [r2, #0x30] +_08036C78: + mov r4, sb + cmp r4, #0 + beq _08036C80 + b _08036B1C +_08036C80: + add sp, #0xc + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08036C8C: .4byte gUnk_080C9160 + + thumb_func_start sub_08036C90 +sub_08036C90: @ 0x08036C90 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r2, [r0] + cmp r2, #4 + bne _08036CDC + adds r3, r4, #0 + adds r3, #0x81 + ldrb r0, [r3] + cmp r0, #0xff + beq _08036CDC + movs r1, #0 + strb r2, [r4, #0xd] + strb r1, [r4, #0xb] + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + ldr r1, _08036CFC @ =gUnk_080CF124 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r2, r4, #0 + adds r2, #0x7e + ldrb r1, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x7d + strb r0, [r1] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldrb r0, [r1] + cmp r0, #5 + bne _08036D42 + movs r0, #0xff + strb r0, [r3] +_08036CDC: + movs r0, #3 + strb r0, [r4, #0xd] + adds r2, r4, #0 + adds r2, #0x7c + ldrb r1, [r2] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08036D14 + ldrb r1, [r2] + cmp r1, #1 + beq _08036D00 + cmp r1, #3 + beq _08036D0A + b _08036D42 + .align 2, 0 +_08036CFC: .4byte gUnk_080CF124 +_08036D00: + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0x1e + strb r0, [r1] + b _08036D42 +_08036D0A: + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0xa + strb r0, [r1] + b _08036D42 +_08036D14: + ldr r0, _08036D2C @ =gUnk_02034350 + movs r2, #0xc + ldrsh r1, [r0, r2] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _08036D30 + adds r0, r4, #0 + adds r0, #0x79 + strb r3, [r0] + b _08036D42 + .align 2, 0 +_08036D2C: .4byte gUnk_02034350 +_08036D30: + ldr r0, _08036D44 @ =gUnk_080CF10C + bl sub_080028F4 + ldr r1, _08036D48 @ =gUnk_080CF110 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x79 + strb r1, [r0] +_08036D42: + pop {r4, pc} + .align 2, 0 +_08036D44: .4byte gUnk_080CF10C +_08036D48: .4byte gUnk_080CF110 + + thumb_func_start sub_08036D4C +sub_08036D4C: @ 0x08036D4C + mov ip, r0 + mov r1, ip + adds r1, #0x82 + movs r3, #0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1] + mov r2, ip + adds r2, #0x84 + ldr r1, [r2] + movs r0, #2 + strb r0, [r1] + ldr r1, [r2] + movs r0, #0xff + strb r0, [r1, #4] + mov r0, ip + strb r3, [r0, #0xd] + bx lr + + thumb_func_start sub_08036D70 +sub_08036D70: @ 0x08036D70 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + strb r1, [r4, #0xd] + movs r0, #0xc0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r1, [r0] + ldr r0, _08036D98 @ =gUnk_080CF134 + bl sub_080028F4 + ldr r1, _08036D9C @ =gUnk_080CF138 + adds r0, r0, r1 + ldrb r0, [r0] + adds r4, #0x79 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08036D98: .4byte gUnk_080CF134 +_08036D9C: .4byte gUnk_080CF138 + + thumb_func_start sub_08036DA0 +sub_08036DA0: @ 0x08036DA0 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + movs r2, #1 + ands r2, r0 + cmp r2, #0 + bne _08036DF0 + ldr r0, _08036DD0 @ =gUnk_02034350 + movs r3, #0xc + ldrsh r1, [r0, r3] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _08036DD4 + adds r0, r4, #0 + adds r0, #0x78 + strb r2, [r0] + b _08036DF8 + .align 2, 0 +_08036DD0: .4byte gUnk_02034350 +_08036DD4: + ldr r0, _08036DE8 @ =gUnk_080CF13C + bl sub_080028F4 + ldr r1, _08036DEC @ =gUnk_080CF13F + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x78 + strb r1, [r0] + b _08036DF8 + .align 2, 0 +_08036DE8: .4byte gUnk_080CF13C +_08036DEC: .4byte gUnk_080CF13F +_08036DF0: + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0 + strb r0, [r1] +_08036DF8: + adds r0, r4, #0 + bl sub_08036D4C + pop {r4, pc} + + thumb_func_start sub_08036E00 +sub_08036E00: @ 0x08036E00 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r4, r0, #0 + movs r2, #0 + movs r0, #4 + strb r0, [r4, #0xd] + strb r2, [r4, #0xb] + adds r7, r4, #0 + adds r7, #0x81 + movs r0, #0xff + strb r0, [r7] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + adds r6, r4, #0 + adds r6, #0x84 + ldr r0, [r6] + strb r2, [r0, #2] + movs r0, #0x7c + adds r0, r0, r4 + mov r8, r0 + ldrb r5, [r0] + cmp r5, #0 + bne _08036E3E + adds r0, r4, #0 + adds r0, #0x7d + strb r2, [r0] + b _08036F00 +_08036E3E: + cmp r5, #4 + bne _08036ECC + str r2, [sp] + bl sub_08000E50 + movs r1, #3 + mov sb, r1 + ands r0, r1 + ldr r2, [sp] + cmp r0, #0 + beq _08036E62 + ldr r0, _08036E84 @ =gUnk_02034350 + movs r3, #0xc + ldrsh r1, [r0, r3] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _08036E8C +_08036E62: + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0x3c + strb r0, [r1] + strh r2, [r4, #0x2a] + ldr r0, [r6] + strb r5, [r0] + ldr r0, _08036E88 @ =0x00000159 + bl sub_080A3268 + b _08036F00 + .align 2, 0 +_08036E84: .4byte gUnk_02034350 +_08036E88: .4byte 0x00000159 +_08036E8C: + mov r1, r8 + ldrb r0, [r1] + cmp r0, #4 + bne _08036ECC + adds r0, r4, #0 + adds r0, #0x7e + strb r2, [r0] + bl sub_08000E50 + adds r1, r0, #0 + mov r3, sb + ands r1, r3 + ldr r0, [r6] + ldrb r0, [r0, #5] + cmp r0, r1 + beq _08036EB0 + strb r1, [r7] + b _08036EB8 +_08036EB0: + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r7] +_08036EB8: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + subs r0, #3 + ldrb r0, [r0] + strb r0, [r1, #5] + adds r0, r4, #0 + bl sub_08036C90 + b _08036F00 +_08036ECC: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + ldr r1, _08036F0C @ =gUnk_080CF147 + cmp r0, #0 + bne _08036EDE + ldr r1, _08036F10 @ =gUnk_080CF142 +_08036EDE: + adds r2, r4, #0 + adds r2, #0x7e + ldrb r0, [r2] + adds r0, r1, r0 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x7d + strb r1, [r0] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bls _08036F00 + movs r0, #0 + strb r0, [r2] +_08036F00: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08036F0C: .4byte gUnk_080CF147 +_08036F10: .4byte gUnk_080CF142 + + thumb_func_start sub_08036F14 +sub_08036F14: @ 0x08036F14 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r1, #0 + adds r4, #0x84 + ldr r0, [r4] + ldr r0, [r0, #8] + bl sub_0801D2B4 + movs r5, #0 + adds r7, r4, #0 +_08036F28: + ldr r0, [r7] + lsls r1, r5, #2 + adds r0, #0x20 + adds r0, r0, r1 + ldr r0, [r0] + adds r1, r6, #0 + bl sub_0801D2B4 + adds r5, #1 + cmp r5, #3 + bls _08036F28 + ldr r0, [r4] + ldrb r0, [r0, #1] + subs r5, r0, #1 + cmp r5, #0 + beq _08036F5E +_08036F48: + ldr r0, [r4] + lsls r1, r5, #2 + adds r0, #0xc + adds r0, r0, r1 + ldr r0, [r0] + adds r1, r6, #0 + bl sub_0801D2B4 + subs r5, #1 + cmp r5, #0 + bne _08036F48 +_08036F5E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08036F60 +sub_08036F60: @ 0x08036F60 + push {r4, r5, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xd] + cmp r0, #4 + beq _08036FA8 + adds r0, r2, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r4, #1 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + bne _08036FA8 + adds r3, r2, #0 + adds r3, #0x76 + movs r0, #0xe + ldrsb r0, [r2, r0] + ldrh r1, [r3] + adds r0, r0, r1 + strh r0, [r3] + adds r1, r2, #0 + adds r1, #0x74 + movs r0, #0xe + ldrsb r0, [r2, r0] + ldrh r5, [r1] + adds r0, r0, r5 + strh r0, [r1] + ldrh r0, [r3] + cmp r0, #0x9b + bhi _08036FA0 + strb r4, [r2, #0xe] + b _08036FA8 +_08036FA0: + cmp r0, #0xa4 + bls _08036FA8 + movs r0, #0xff + strb r0, [r2, #0xe] +_08036FA8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08036FAC +sub_08036FAC: @ 0x08036FAC + push {lr} + adds r2, r0, #0 + ldr r0, _08036FD0 @ =gUnk_030010A0 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + bne _08036FDE + adds r0, r2, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08036FD8 + ldr r0, _08036FD4 @ =0x00000163 + bl sub_080A3268 + b _08036FDE + .align 2, 0 +_08036FD0: .4byte gUnk_030010A0 +_08036FD4: .4byte 0x00000163 +_08036FD8: + ldr r0, _08036FE0 @ =0x000001B1 + bl sub_080A3268 +_08036FDE: + pop {pc} + .align 2, 0 +_08036FE0: .4byte 0x000001B1 + + thumb_func_start sub_08036FE4 +sub_08036FE4: @ 0x08036FE4 + push {r4, r5, lr} + adds r2, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08037048 + adds r0, r2, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _08037048 + adds r0, r2, #0 + adds r0, #0x82 + ldrh r3, [r0] + adds r4, r0, #0 + cmp r3, #0 + beq _08037048 + adds r0, #2 + ldr r0, [r0] + ldrb r0, [r0, #4] + cmp r0, #0xff + beq _0803702C + cmp r0, #0 + bne _08037022 + adds r1, r2, #0 + adds r1, #0x7a + ldrh r5, [r1] + adds r0, r3, r5 + b _0803702A +_08037022: + adds r1, r2, #0 + adds r1, #0x7a + ldrh r0, [r1] + subs r0, r0, r3 +_0803702A: + strh r0, [r1] +_0803702C: + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #1 + beq _0803703C + cmp r0, #3 + beq _08037042 + b _08037048 +_0803703C: + ldrh r0, [r4] + subs r0, #1 + b _08037046 +_08037042: + ldrh r0, [r4] + subs r0, #2 +_08037046: + strh r0, [r4] +_08037048: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803704C +sub_0803704C: @ 0x0803704C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + adds r1, r0, #0 + cmp r1, #0 + beq _08037070 + ldr r0, _0803706C @ =gUnk_080012C8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _08037084 + .align 2, 0 +_0803706C: .4byte gUnk_080012C8 +_08037070: + ldr r4, _08037088 @ =gUnk_080CF244 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_08037084: + pop {r4, r5, pc} + .align 2, 0 +_08037088: .4byte gUnk_080CF244 + + thumb_func_start sub_0803708C +sub_0803708C: @ 0x0803708C + push {lr} + ldr r2, _080370A0 @ =gUnk_080CF25C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080370A0: .4byte gUnk_080CF25C + + thumb_func_start sub_080370A4 +sub_080370A4: @ 0x080370A4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08037418 + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _08037110 + movs r0, #6 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r5, #0x20] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0803710C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + b _0803711E + .align 2, 0 +_0803710C: .4byte gUnk_03000BF0 +_08037110: + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0803711E + adds r0, r5, #0 + bl sub_08037408 +_0803711E: + ldr r1, _08037128 @ =gUnk_080CF244 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08037128: .4byte gUnk_080CF244 + + thumb_func_start sub_0803712C +sub_0803712C: @ 0x0803712C + push {lr} + ldr r2, _08037140 @ =gUnk_080CF278 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08037140: .4byte gUnk_080CF278 + + thumb_func_start sub_08037144 +sub_08037144: @ 0x08037144 + push {r4, lr} + adds r4, r0, #0 + bl sub_08037418 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xd] + strb r1, [r4, #0xe] + movs r0, #0x30 + strb r0, [r4, #0x1d] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803715C +sub_0803715C: @ 0x0803715C + push {r4, lr} + adds r4, r0, #0 + bl sub_08037418 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08037176 + adds r0, r4, #0 + bl sub_0806F4E8 + b _0803718A +_08037176: + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0803718A + adds r0, r4, #0 + bl sub_08037408 +_0803718A: + pop {r4, pc} + + thumb_func_start sub_0803718C +sub_0803718C: @ 0x0803718C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xe] + cmp r4, #0 + bne _080371DA + bl sub_08037418 + movs r0, #1 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + adds r0, r5, #0 + adds r0, #0x62 + strb r4, [r0] + adds r0, #0x12 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080371EC @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_080371DA: + adds r0, r5, #0 + bl sub_0806F520 + cmp r0, #0 + beq _080371F0 + adds r0, r5, #0 + bl sub_0806F3E4 + b _080371F6 + .align 2, 0 +_080371EC: .4byte gUnk_03000BF0 +_080371F0: + adds r0, r5, #0 + bl sub_08037408 +_080371F6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080371F8 +sub_080371F8: @ 0x080371F8 + push {lr} + adds r2, r0, #0 + ldr r0, _08037210 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0803720E + adds r0, r2, #0 + bl sub_08037408 +_0803720E: + pop {pc} + .align 2, 0 +_08037210: .4byte gUnk_03003F80 + + thumb_func_start nullsub_161 +nullsub_161: @ 0x08037214 + bx lr + .align 2, 0 + + thumb_func_start sub_08037218 +sub_08037218: @ 0x08037218 + push {lr} + bl sub_08037408 + pop {pc} + + thumb_func_start sub_08037220 +sub_08037220: @ 0x08037220 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #2 + strb r0, [r5, #0x1c] + ldrh r0, [r5, #0x32] + adds r0, #3 + strh r0, [r5, #0x32] + movs r0, #0x2e + ldrsh r4, [r5, r0] + ldr r1, _0803727C @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r4, r4, r0 + asrs r4, r4, #4 + movs r2, #0x3f + ands r4, r2 + movs r3, #0x32 + ldrsh r0, [r5, r3] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r6, r5, #0 + adds r6, #0x38 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x74 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #7 + ldrb r2, [r6] + adds r1, r4, #0 + bl sub_0800015E + adds r0, r5, #0 + movs r1, #5 + bl sub_08004260 + pop {r4, r5, r6, pc} + .align 2, 0 +_0803727C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08037280 +sub_08037280: @ 0x08037280 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08037418 + adds r0, r5, #0 + bl sub_080002A0 + movs r1, #0x80 + lsls r1, r1, #7 + cmp r0, r1 + beq _080372CC + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080372E4 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + adds r0, r5, #0 + bl sub_08037408 +_080372CC: + adds r0, r5, #0 + movs r1, #1 + movs r2, #0x40 + bl sub_08049F64 + cmp r0, #0 + beq _080372E2 + movs r0, #2 + strb r0, [r5, #0xc] + movs r0, #0x1e + strb r0, [r5, #0xe] +_080372E2: + pop {r4, r5, r6, pc} + .align 2, 0 +_080372E4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080372E8 +sub_080372E8: @ 0x080372E8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08037418 + adds r3, r5, #0 + adds r3, #0x62 + ldr r2, _08037370 @ =gUnk_080CF290 + ldrb r1, [r5, #0xe] + movs r6, #3 + adds r0, r6, #0 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r1, [r3] + adds r0, r0, r1 + strb r0, [r3] + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0803736E + strb r6, [r5, #0xc] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + strb r4, [r3] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xa0 + strb r0, [r1] + subs r1, #4 + movs r0, #0xf + strb r0, [r1] + ldr r0, _08037374 @ =gUnk_080FD34C + str r0, [r5, #0x48] + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08037378 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0803736E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08037370: .4byte gUnk_080CF290 +_08037374: .4byte gUnk_080FD34C +_08037378: .4byte gUnk_03000BF0 + + thumb_func_start sub_0803737C +sub_0803737C: @ 0x0803737C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x34] + ldr r1, _080373A8 @ =0xFFFF0000 + adds r0, r0, r1 + str r0, [r4, #0x34] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + bgt _080373A6 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xa + strb r0, [r4, #0xe] + ldr r1, _080373AC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] +_080373A6: + pop {r4, pc} + .align 2, 0 +_080373A8: .4byte 0xFFFF0000 +_080373AC: .4byte gLinkEntity + + thumb_func_start sub_080373B0 +sub_080373B0: @ 0x080373B0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080373C4 + movs r0, #5 + strb r0, [r1, #0xc] +_080373C4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080373C8 +sub_080373C8: @ 0x080373C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080373DC + adds r0, r4, #0 + bl sub_08037408 +_080373DC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080373E0 +sub_080373E0: @ 0x080373E0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _080373F2 + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_080373F2: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08037406 + adds r0, r4, #0 + bl sub_08037408 +_08037406: + pop {r4, pc} + + thumb_func_start sub_08037408 +sub_08037408: @ 0x08037408 + push {lr} + movs r1, #5 + movs r2, #0 + bl CreateFX + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_08037418 +sub_08037418: @ 0x08037418 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r3, _08037464 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r6, r5, #0 + adds r6, #0x38 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_080001DA + ldr r1, _08037468 @ =0x00004067 + cmp r0, r1 + bne _08037460 + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + ldrb r2, [r6] + adds r1, r4, #0 + bl sub_0800015E + bl sub_0805E780 +_08037460: + pop {r4, r5, r6, pc} + .align 2, 0 +_08037464: .4byte gUnk_03000BF0 +_08037468: .4byte 0x00004067 + + thumb_func_start sub_0803746C +sub_0803746C: @ 0x0803746C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08037488 @ =gUnk_080CF294 + bl sub_0800129E + movs r3, #0x15 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08037488: .4byte gUnk_080CF294 + + thumb_func_start sub_0803748C +sub_0803748C: @ 0x0803748C + push {lr} + ldr r2, _080374A0 @ =gUnk_080CF2AC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080374A0: .4byte gUnk_080CF2AC + + thumb_func_start sub_080374A4 +sub_080374A4: @ 0x080374A4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r2, [r0] + cmp r2, #0x87 + bne _080374D4 + ldrb r0, [r4, #0xc] + cmp r0, #6 + bne _080374BC + adds r0, r4, #0 + bl sub_08037ACC +_080374BC: + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08037B48 + b _08037534 +_080374D4: + ldrb r0, [r4, #0xc] + adds r1, r0, #0 + cmp r1, #6 + beq _0803752E + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x27 + bne _080374F2 + cmp r2, #0x80 + bne _080374F2 + adds r0, r4, #0 + bl sub_08037A14 + b _08037534 +_080374F2: + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08037534 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + movs r1, #0x10 + eors r0, r1 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08037810 + cmp r0, #0 + beq _08037534 + movs r0, #4 + strb r0, [r4, #0xe] + b _08037534 +_0803752E: + adds r0, r4, #0 + bl sub_08037A58 +_08037534: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08037546 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08037546: + ldr r1, _08037550 @ =gUnk_080CF294 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08037550: .4byte gUnk_080CF294 + + thumb_func_start nullsub_162 +nullsub_162: @ 0x08037554 + bx lr + .align 2, 0 + + thumb_func_start sub_08037558 +sub_08037558: @ 0x08037558 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + movs r1, #0 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x76 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08037794 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08037580 +sub_08037580: @ 0x08037580 + push {r4, lr} + adds r4, r0, #0 + bl sub_08037810 + cmp r0, #0 + bne _080375A2 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080375A2 + adds r0, r4, #0 + bl sub_080377B0 +_080375A2: + pop {r4, pc} + + thumb_func_start sub_080375A4 +sub_080375A4: @ 0x080375A4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080378B0 + cmp r0, #0 + bne _080375F4 + adds r0, r4, #0 + bl sub_08037810 + cmp r0, #0 + bne _080375F4 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080375D2 + adds r0, r4, #0 + bl sub_08037794 + b _080375F4 +_080375D2: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _080375F4 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080375F4 + adds r0, r4, #0 + bl sub_080379BC +_080375F4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080375F8 +sub_080375F8: @ 0x080375F8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080378B0 + cmp r0, #0 + bne _08037622 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037622 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x18 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC +_08037622: + pop {r4, pc} + + thumb_func_start sub_08037624 +sub_08037624: @ 0x08037624 + push {r4, lr} + adds r4, r0, #0 + bl sub_080378B0 + cmp r0, #0 + bne _0803768E + adds r0, r4, #0 + bl sub_08037914 + cmp r0, #0 + bne _0803768E + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08037652 + adds r0, r4, #0 + bl sub_08037794 + b _0803768E +_08037652: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0803767C + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803768E + adds r0, r4, #0 + bl sub_080379BC + b _0803768E +_0803767C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803768E + adds r0, r4, #0 + bl sub_0803797C +_0803768E: + pop {r4, pc} + + thumb_func_start sub_08037690 +sub_08037690: @ 0x08037690 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080376B6 + adds r1, r4, #0 + adds r1, #0x77 + movs r0, #0x14 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08037794 + b _080376CC +_080376B6: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080376CC + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x27 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080AEF88 +_080376CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080376D0 +sub_080376D0: @ 0x080376D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080379EC + cmp r0, #0 + bne _0803773A + bl sub_08077B2C + ldr r2, _08037724 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0x1a] + ldrb r1, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] + ldr r0, _08037728 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA6C + adds r0, r4, #0 + bl sub_080042B8 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0803773A + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803772C + adds r0, r4, #0 + bl sub_08037A58 + b _0803773A + .align 2, 0 +_08037724: .4byte gUnk_03003F80 +_08037728: .4byte gLinkEntity +_0803772C: + ldrb r0, [r2] + movs r1, #1 + eors r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08037B10 +_0803773A: + pop {r4, pc} + + thumb_func_start sub_0803773C +sub_0803773C: @ 0x0803773C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08037758 + adds r0, r4, #0 + bl sub_08037794 +_08037758: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803775C +sub_0803775C: @ 0x0803775C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037790 + movs r0, #0x42 + movs r1, #0 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _0803778A + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0804A4E4 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08037C0C +_0803778A: + adds r0, r5, #0 + bl sub_0805E7BC +_08037790: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08037794 +sub_08037794: @ 0x08037794 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x74 + movs r1, #0x1e + strh r1, [r2] + subs r2, #0x35 + movs r1, #0x26 + strb r1, [r2] + ldrb r1, [r0, #0x14] + bl sub_080042AC + pop {pc} + + thumb_func_start sub_080377B0 +sub_080377B0: @ 0x080377B0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xf] + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #0x78 + adds r1, r4, #0 + adds r1, #0x74 + strh r0, [r1] + movs r0, #0x40 + strh r0, [r4, #0x24] + bl sub_08000E50 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _080377F8 + movs r0, #3 + ands r0, r5 + cmp r0, #0 + beq _080377F8 + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + b _080377FE +_080377F8: + movs r0, #0x18 + ands r5, r0 + strb r5, [r4, #0x15] +_080377FE: + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, r5, pc} + + thumb_func_start sub_08037810 +sub_08037810: @ 0x08037810 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r1, r5, #0 + adds r1, #0x76 + ldrb r0, [r1] + cmp r0, #0 + bne _080378A8 + adds r0, r5, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080378AC + ldr r6, _080378A4 @ =gUnk_020000B0 + ldr r0, [r6] + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r5, #0 + movs r3, #0x40 + bl sub_0806FCB8 + cmp r0, #0 + beq _080378AC + ldr r1, [r6] + adds r0, r5, #0 + bl sub_080045C4 + ldrb r1, [r5, #0x15] + subs r0, r0, r1 + adds r0, #6 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xc + bhi _080378AC + movs r0, #3 + strb r0, [r5, #0xc] + movs r4, #0x18 + movs r0, #0x18 + strb r0, [r5, #0xe] + movs r0, #8 + strb r0, [r5, #0xf] + movs r0, #0xc0 + strh r0, [r5, #0x24] + ldr r1, [r6] + adds r0, r5, #0 + bl sub_080045C4 + adds r0, #4 + ands r0, r4 + strb r0, [r5, #0x15] + lsrs r0, r0, #3 + strb r0, [r5, #0x14] + adds r1, r5, #0 + adds r1, #0x74 + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1] + ldr r2, [r6] + ldrh r1, [r2, #0x2e] + adds r0, r5, #0 + adds r0, #0x78 + strh r1, [r0] + ldrh r0, [r2, #0x32] + adds r3, r5, #0 + adds r3, #0x7a + strh r0, [r3] + ldrb r1, [r5, #0x14] + adds r0, r5, #0 + bl sub_080042AC + movs r0, #1 + b _080378AE + .align 2, 0 +_080378A4: .4byte gUnk_020000B0 +_080378A8: + subs r0, #1 + strb r0, [r1] +_080378AC: + movs r0, #0 +_080378AE: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080378B0 +sub_080378B0: @ 0x080378B0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x77 + ldrb r0, [r1] + cmp r0, #0 + bne _0803790C + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _08037910 + ldr r5, _08037908 @ =gUnk_020000B0 + ldr r1, [r5] + adds r0, r4, #0 + movs r2, #0xa + bl sub_0804A044 + ldrb r1, [r4, #0x15] + cmp r0, r1 + bne _08037910 + ldr r0, [r5] + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x18 + bl sub_0806FCB8 + cmp r0, #0 + beq _08037910 + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, #0xfb + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x14] + adds r1, #8 + adds r0, r4, #0 + bl sub_080042AC + movs r0, #1 + b _08037912 + .align 2, 0 +_08037908: .4byte gUnk_020000B0 +_0803790C: + subs r0, #1 + strb r0, [r1] +_08037910: + movs r0, #0 +_08037912: + pop {r4, r5, pc} + + thumb_func_start sub_08037914 +sub_08037914: @ 0x08037914 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08037970 + ldr r7, _08037950 @ =gUnk_020000B0 + ldr r0, [r7] + adds r5, r4, #0 + adds r5, #0x78 + ldrh r1, [r5] + adds r6, r4, #0 + adds r6, #0x7a + ldrh r2, [r6] + movs r3, #0x28 + bl sub_0806FCB8 + cmp r0, #0 + bne _08037954 + ldr r0, [r7] + ldrh r1, [r0, #0x2e] + strh r1, [r5] + ldrh r0, [r0, #0x32] + strh r0, [r6] + adds r0, r4, #0 + bl sub_0803797C + movs r0, #0 + b _08037978 + .align 2, 0 +_08037950: .4byte gUnk_020000B0 +_08037954: + ldrh r1, [r5] + ldrh r2, [r6] + adds r0, r4, #0 + movs r3, #8 + bl sub_0806FCB8 + cmp r0, #0 + bne _08037968 + movs r0, #0 + b _08037978 +_08037968: + adds r1, r4, #0 + adds r1, #0x76 + movs r0, #0x3c + strb r0, [r1] +_08037970: + adds r0, r4, #0 + bl sub_08037794 + movs r0, #1 +_08037978: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0803797C +sub_0803797C: @ 0x0803797C + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0x18 + movs r0, #0x18 + strb r0, [r5, #0xe] + movs r0, #8 + strb r0, [r5, #0xf] + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r2, #0x32 + ldrsh r1, [r5, r2] + adds r2, r5, #0 + adds r2, #0x78 + ldrh r2, [r2] + adds r3, r5, #0 + adds r3, #0x7a + ldrh r3, [r3] + bl sub_080045D4 + adds r0, #4 + ands r0, r4 + strb r0, [r5, #0x15] + lsrs r0, r0, #3 + ldrb r1, [r5, #0x14] + cmp r0, r1 + beq _080379BA + strb r0, [r5, #0x14] + adds r1, r0, #4 + adds r0, r5, #0 + bl sub_080042AC +_080379BA: + pop {r4, r5, pc} + + thumb_func_start sub_080379BC +sub_080379BC: @ 0x080379BC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x18 + strb r0, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + bl sub_08000E50 + movs r1, #2 + ands r0, r1 + ldrb r1, [r4, #0x14] + adds r1, r1, r0 + subs r1, #1 + movs r0, #3 + ands r1, r0 + strb r1, [r4, #0x14] + lsls r1, r1, #3 + strb r1, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + + thumb_func_start sub_080379EC +sub_080379EC: @ 0x080379EC + push {r4, lr} + adds r4, r0, #0 + bl sub_0807953C + cmp r0, #0 + beq _08037A0E + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037A0E + adds r0, r4, #0 + bl sub_08037A58 + movs r0, #1 + b _08037A10 +_08037A0E: + movs r0, #0 +_08037A10: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08037A14 +sub_08037A14: @ 0x08037A14 + push {r4, lr} + adds r4, r0, #0 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x18 + strb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x20 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r2, #0x12 + ldrb r1, [r2] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #5 + strb r0, [r1] + ldr r1, [r4, #0x4c] + adds r0, r4, #0 + bl sub_0806FA24 + ldrb r1, [r4, #0x14] + adds r1, #0xc + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08037A58 +sub_08037A58: @ 0x08037A58 + push {r4, lr} + adds r4, r0, #0 + bl sub_08037ACC + movs r0, #7 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xf + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r3, r4, #0 + adds r3, #0x3d + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + bne _08037A84 + movs r0, #0xec + strb r0, [r3] +_08037A84: + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x26 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + movs r0, #0xf4 + strb r0, [r3] + ldrb r0, [r4, #0x14] + lsls r0, r0, #3 + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + adds r1, #4 + movs r0, #8 + strb r0, [r1] + adds r1, #4 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + adds r1, #0x30 + movs r0, #0x3c + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08037ACC +sub_08037ACC: @ 0x08037ACC + ldr r3, _08037B04 @ =gUnk_03003F80 + ldr r1, [r3, #0x30] + ldr r2, _08037B08 @ =0xFFFFFEFF + ands r1, r2 + str r1, [r3, #0x30] + ldr r3, _08037B0C @ =gLinkEntity + ldrb r2, [r3, #0x10] + movs r1, #0x80 + orrs r1, r2 + strb r1, [r3, #0x10] + adds r2, r3, #0 + adds r2, #0x3d + movs r1, #0x1e + strb r1, [r2] + ldrb r0, [r0, #0x14] + lsls r0, r0, #3 + adds r1, r3, #0 + adds r1, #0x3e + strb r0, [r1] + adds r1, #4 + movs r0, #4 + strb r0, [r1] + adds r1, #4 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + bx lr + .align 2, 0 +_08037B04: .4byte gUnk_03003F80 +_08037B08: .4byte 0xFFFFFEFF +_08037B0C: .4byte gLinkEntity + + thumb_func_start sub_08037B10 +sub_08037B10: @ 0x08037B10 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r5, _08037B44 @ =gLinkEntity + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #0xc + strb r0, [r1] + subs r0, #0x14 + bl sub_080526A0 + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #0x7a + bl sub_0800449C + cmp r4, #0 + bne _08037B40 + adds r0, r6, #0 + bl sub_08037A58 + adds r1, r6, #0 + adds r1, #0x76 + movs r0, #0xf0 + strb r0, [r1] +_08037B40: + pop {r4, r5, r6, pc} + .align 2, 0 +_08037B44: .4byte gLinkEntity + + thumb_func_start sub_08037B48 +sub_08037B48: @ 0x08037B48 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2a + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _08037B88 + ldrb r0, [r4, #0xe] + movs r2, #0 + strb r0, [r3, #0xb] + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + ldrb r1, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x62 + strb r2, [r0] + adds r1, r3, #0 + adds r1, #0x63 + movs r0, #0xfc + strb r0, [r1] + str r4, [r3, #0x50] +_08037B88: + adds r0, r4, #0 + adds r0, #0x80 + str r3, [r0] + movs r0, #0x2a + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _08037BCA + ldrb r0, [r4, #0xe] + strb r0, [r3, #0xb] + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + ldrb r1, [r0] + movs r2, #8 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + adds r1, r3, #0 + adds r1, #0x62 + movs r0, #0xfd + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x63 + strb r2, [r0] + str r4, [r3, #0x50] +_08037BCA: + adds r0, r4, #0 + adds r0, #0x84 + str r3, [r0] + movs r0, #0x2a + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _08037C06 + ldrb r0, [r4, #0xe] + strb r0, [r3, #0xb] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x62 + movs r0, #5 + strb r0, [r1] + adds r1, #1 + movs r0, #0xf5 + strb r0, [r1] + str r4, [r3, #0x50] +_08037C06: + str r3, [r4, #0x54] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08037C0C +sub_08037C0C: @ 0x08037C0C + push {lr} + adds r3, r0, #0 + adds r0, #0x80 + ldr r2, [r0] + cmp r2, #0 + beq _08037C1E + movs r0, #0xf + strb r0, [r2, #0xe] + str r1, [r2, #0x50] +_08037C1E: + adds r0, r3, #0 + adds r0, #0x84 + ldr r2, [r0] + cmp r2, #0 + beq _08037C2E + movs r0, #0xf + strb r0, [r2, #0xe] + str r1, [r2, #0x50] +_08037C2E: + ldr r2, [r3, #0x54] + cmp r2, #0 + beq _08037C3A + movs r0, #0xf + strb r0, [r2, #0xe] + str r1, [r2, #0x50] +_08037C3A: + pop {pc} + + thumb_func_start sub_08037C3C +sub_08037C3C: @ 0x08037C3C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + cmp r0, #0 + beq _08037C5C + ldr r0, _08037C58 @ =gUnk_080012C8 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _08037C7E + .align 2, 0 +_08037C58: .4byte gUnk_080012C8 +_08037C5C: + ldr r4, _08037C80 @ =gUnk_080CF46C + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC +_08037C7E: + pop {r4, r5, pc} + .align 2, 0 +_08037C80: .4byte gUnk_080CF46C + + thumb_func_start sub_08037C84 +sub_08037C84: @ 0x08037C84 + push {lr} + ldr r2, _08037C98 @ =gUnk_080CF484 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08037C98: .4byte gUnk_080CF484 + + thumb_func_start sub_08037C9C +sub_08037C9C: @ 0x08037C9C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08037CB0 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08037CB0: + ldr r1, _08037CBC @ =gUnk_080CF46C + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08037CBC: .4byte gUnk_080CF46C + + thumb_func_start sub_08037CC0 +sub_08037CC0: @ 0x08037CC0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3a + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08037CD6 + ldrb r0, [r4, #0xb] + bl sub_0807CD04 +_08037CD6: + adds r0, r4, #0 + movs r1, #0xff + movs r2, #0x58 + bl sub_0804A7E0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08037CE4 +sub_08037CE4: @ 0x08037CE4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + bl GetProgressFlag + cmp r0, #0 + beq _08037CF6 + bl sub_0805E780 +_08037CF6: + adds r0, r4, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08037E14 + pop {r4, pc} + + thumb_func_start sub_08037D0C +sub_08037D0C: @ 0x08037D0C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08037D1C + subs r0, #1 + strb r0, [r4, #0xf] + b _08037D26 +_08037D1C: + adds r0, r4, #0 + bl sub_08037E90 + cmp r0, #0 + bne _08037D52 +_08037D26: + adds r0, r4, #0 + movs r1, #2 + bl sub_08004276 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _08037D40 + adds r0, r4, #0 + bl sub_08037E14 + b _08037D52 +_08037D40: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037D52 + adds r0, r4, #0 + bl sub_08037E14 +_08037D52: + pop {r4, pc} + + thumb_func_start sub_08037D54 +sub_08037D54: @ 0x08037D54 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08004276 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08037DC4 + movs r0, #2 + eors r0, r1 + strb r0, [r2] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08037E0C + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0804A98C + adds r2, r0, #0 + cmp r2, #0 + beq _08037E0C + ldrb r0, [r4, #0x15] + strb r0, [r2, #0x15] + ldrb r1, [r4, #0x15] + lsrs r1, r1, #2 + ldr r0, _08037DBC @ =gUnk_080CF490 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldr r0, _08037DC0 @ =0x0000FFFD + strh r0, [r2, #0x36] + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_08004488 + b _08037E0C + .align 2, 0 +_08037DBC: .4byte gUnk_080CF490 +_08037DC0: .4byte 0x0000FFFD +_08037DC4: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08037E0C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08037DEE + strb r3, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x14] + orrs r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08037E14 + b _08037E0C +_08037DEE: + ldr r1, _08037E10 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_08037E0C: + pop {r4, pc} + .align 2, 0 +_08037E10: .4byte gLinkEntity + + thumb_func_start sub_08037E14 +sub_08037E14: @ 0x08037E14 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #8 + strb r0, [r5, #0xe] + ldr r1, _08037E6C @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + adds r4, r0, #4 + movs r0, #0x18 + ands r4, r0 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_0808094C + ldr r1, _08037E70 @ =0x00002004 + adds r0, r0, r1 + lsrs r3, r4, #2 + ldr r1, _08037E74 @ =gUnk_080CF498 + adds r3, r3, r1 + movs r2, #0x2e + ldrsh r1, [r5, r2] + movs r2, #0 + ldrsb r2, [r3, r2] + adds r1, r1, r2 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + adds r2, r2, r3 + movs r3, #0 + bl sub_080AE4CC + cmp r0, #0 + beq _08037E78 + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] + b _08037E7A + .align 2, 0 +_08037E6C: .4byte gLinkEntity +_08037E70: .4byte 0x00002004 +_08037E74: .4byte gUnk_080CF498 +_08037E78: + strb r4, [r5, #0x15] +_08037E7A: + ldrb r0, [r5, #0x15] + lsrs r4, r0, #3 + ldrb r0, [r5, #0x14] + cmp r4, r0 + beq _08037E8E + strb r4, [r5, #0x14] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08004260 +_08037E8E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08037E90 +sub_08037E90: @ 0x08037E90 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08037EA8 @ =gLinkEntity + movs r2, #8 + bl sub_0804A044 + adds r1, r0, #0 + cmp r1, #0xff + bne _08037EAC + movs r0, #0 + b _08037EC6 + .align 2, 0 +_08037EA8: .4byte gLinkEntity +_08037EAC: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #3 + strb r0, [r4, #0xe] + strb r1, [r4, #0x15] + lsrs r0, r1, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + movs r0, #1 +_08037EC6: + pop {r4, pc} + + thumb_func_start sub_08037EC8 +sub_08037EC8: @ 0x08037EC8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08037EE4 @ =gUnk_080CF4A0 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08037EE4: .4byte gUnk_080CF4A0 + + thumb_func_start sub_08037EE8 +sub_08037EE8: @ 0x08037EE8 + push {lr} + ldr r2, _08037EFC @ =gUnk_080CF4B8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08037EFC: .4byte gUnk_080CF4B8 + + thumb_func_start sub_08037F00 +sub_08037F00: @ 0x08037F00 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08037F14 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08037F14: + ldr r1, _08037F54 @ =gUnk_080CF4A0 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x94 + bne _08037F50 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0x14 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08037F46 + ldr r0, [r4, #0x20] + asrs r0, r0, #2 +_08037F46: + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08037F50: + pop {r4, pc} + .align 2, 0 +_08037F54: .4byte gUnk_080CF4A0 + + thumb_func_start sub_08037F58 +sub_08037F58: @ 0x08037F58 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3a + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08037F6E + ldrb r0, [r4, #0xb] + bl sub_0807CD04 +_08037F6E: + ldrb r0, [r4, #0xa] + movs r2, #0x58 + cmp r0, #0 + beq _08037F78 + movs r2, #0x59 +_08037F78: + adds r0, r4, #0 + movs r1, #0xff + bl sub_0804A7E0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08037F84 +sub_08037F84: @ 0x08037F84 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001242 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08037F9E + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 +_08037F9E: + pop {r4, pc} + + thumb_func_start sub_08037FA0 +sub_08037FA0: @ 0x08037FA0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + bl GetProgressFlag + cmp r0, #0 + beq _08037FB2 + bl sub_0805E780 +_08037FB2: + adds r0, r5, #0 + bl sub_0804A720 + movs r4, #0 + movs r0, #1 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x20 + strb r0, [r5, #0xe] + strb r4, [r5, #0xf] + adds r0, r5, #0 + adds r0, #0x80 + strb r4, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08037FE0 +sub_08037FE0: @ 0x08037FE0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08004276 + ldrb r0, [r4, #0xe] + adds r2, r0, #0 + cmp r2, #0 + beq _08037FF8 + subs r0, #1 + strb r0, [r4, #0xe] + b _08038046 +_08037FF8: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0803802C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08038046 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #6 + strb r0, [r4, #0xe] + strb r2, [r4, #0xf] + movs r0, #0xe0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + bl sub_08038168 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _08038046 +_0803802C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08038046 + movs r0, #0x40 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08038046: + pop {r4, pc} + + thumb_func_start sub_08038048 +sub_08038048: @ 0x08038048 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08004276 + adds r0, r4, #0 + bl sub_080AEF88 + movs r0, #0x36 + ldrsh r6, [r4, r0] + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #0xf + ands r5, r0 + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bne _08038088 + movs r0, #0 + movs r1, #3 + strb r1, [r4, #0xc] + strb r0, [r4, #0xd] + movs r0, #0x14 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08004260 + b _0803810C +_08038088: + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _08038098 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E + b _080380B0 +_08038098: + adds r0, r4, #0 + bl sub_080002B8 + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0x50 + bne _080380B0 + ldrb r0, [r4, #0x15] + adds r0, #0x10 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_080380B0: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080380C8 + adds r0, r5, #0 + adds r0, #0x10 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08038168 +_080380C8: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080380E2 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r6, r0 + bge _080380E2 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + movs r0, #1 + strb r0, [r4, #0xd] +_080380E2: + movs r0, #0xc + rsbs r0, r0, #0 + cmp r6, r0 + bge _080380F6 + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + b _08038100 +_080380F6: + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 +_08038100: + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] +_0803810C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08038110 +sub_08038110: @ 0x08038110 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08004276 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08038164 + adds r2, r4, #0 + adds r2, #0x80 + ldrb r0, [r2] + cmp r0, #4 + bhi _08038150 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0xe0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + bl sub_08038168 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _08038164 +_08038150: + movs r0, #0 + movs r1, #1 + strb r1, [r4, #0xc] + strb r0, [r2] + movs r0, #0xc0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08038164: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038168 +sub_08038168: @ 0x08038168 + push {r4, lr} + adds r4, r0, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0803817E + adds r0, r4, #0 + bl sub_08049EE4 + strb r0, [r4, #0x15] + b _080381AA +_0803817E: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08038196 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + b _080381AA +_08038196: + bl sub_08000E50 + movs r1, #0xf + ands r1, r0 + adds r1, #0x18 + ldrb r0, [r4, #0x15] + adds r1, r1, r0 + movs r0, #0x1f + ands r1, r0 + strb r1, [r4, #0x15] +_080381AA: + pop {r4, pc} + + thumb_func_start sub_080381AC +sub_080381AC: @ 0x080381AC + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + adds r1, r0, #0 + cmp r1, #0 + beq _080381D0 + ldr r0, _080381CC @ =gUnk_080012C8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _080381F2 + .align 2, 0 +_080381CC: .4byte gUnk_080012C8 +_080381D0: + ldr r4, _080381F4 @ =gUnk_080CF4C8 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC +_080381F2: + pop {r4, r5, pc} + .align 2, 0 +_080381F4: .4byte gUnk_080CF4C8 + + thumb_func_start sub_080381F8 +sub_080381F8: @ 0x080381F8 + push {lr} + ldr r2, _0803820C @ =gUnk_080CF4E0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803820C: .4byte gUnk_080CF4E0 + + thumb_func_start sub_08038210 +sub_08038210: @ 0x08038210 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08038224 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08038224: + ldr r1, _08038230 @ =gUnk_080CF4C8 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08038230: .4byte gUnk_080CF4C8 + + thumb_func_start sub_08038234 +sub_08038234: @ 0x08038234 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3a + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0803824A + ldrb r0, [r4, #0xb] + bl sub_0807CD04 +_0803824A: + adds r0, r4, #0 + movs r1, #0xff + movs r2, #0x58 + bl sub_0804A7E0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038258 +sub_08038258: @ 0x08038258 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + bl GetProgressFlag + cmp r0, #0 + beq _0803826A + bl sub_0805E780 +_0803826A: + adds r0, r4, #0 + bl sub_0804A720 + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_080383AC + pop {r4, pc} + + thumb_func_start sub_0803827C +sub_0803827C: @ 0x0803827C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0803828C + subs r0, #1 + strb r0, [r4, #0xf] + b _080382BC +_0803828C: + ldr r5, _080382B8 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #8 + bl sub_0804A044 + cmp r0, #0xff + bne _080382B0 + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #0x24 + bl sub_0806FCB8 + cmp r0, #0 + beq _080382BC +_080382B0: + adds r0, r4, #0 + bl sub_080383E4 + b _080382E8 + .align 2, 0 +_080382B8: .4byte gLinkEntity +_080382BC: + adds r0, r4, #0 + movs r1, #2 + bl sub_08004276 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _080382D6 + adds r0, r4, #0 + bl sub_080383AC + b _080382E8 +_080382D6: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080382E8 + adds r0, r4, #0 + bl sub_080383AC +_080382E8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080382EC +sub_080382EC: @ 0x080382EC + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038300 + movs r0, #3 + strb r0, [r1, #0xc] +_08038300: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08038304 +sub_08038304: @ 0x08038304 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08004276 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _08038334 + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + ldrb r1, [r4, #0x15] + cmp r0, r1 + bne _08038330 + movs r0, #0x5a + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_080383AC + b _080383AA +_08038330: + strb r0, [r4, #0x15] + b _080383AA +_08038334: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080383AA + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + ldrb r3, [r4, #0x15] + cmp r0, r3 + bne _08038398 + bl sub_08000E50 + movs r1, #2 + ands r1, r0 + subs r1, #1 + lsls r1, r1, #0x1b + lsrs r1, r1, #0x18 + adds r0, r4, #0 + adds r0, #0x79 + lsls r5, r1, #0x18 + lsrs r3, r5, #0x18 + adds r2, r0, #0 + movs r6, #0x7a + adds r6, r6, r4 + mov ip, r6 + ldrb r0, [r2] + cmp r3, r0 + bne _08038388 + ldrb r6, [r6] + cmp r3, r6 + bne _08038388 + rsbs r0, r5, #0 + lsrs r1, r0, #0x18 +_08038388: + ldrb r0, [r2] + mov r3, ip + strb r0, [r3] + strb r1, [r2] + ldrb r0, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x18 + ands r0, r1 +_08038398: + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_080383AA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080383AC +sub_080383AC: @ 0x080383AC + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + adds r0, #0xf8 + strh r0, [r4, #0x24] + ldr r1, _080383E0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r1, r0, #3 + ldrb r0, [r4, #0x14] + cmp r1, r0 + beq _080383DC + strb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_080383DC: + pop {r4, pc} + .align 2, 0 +_080383E0: .4byte gLinkEntity + + thumb_func_start sub_080383E4 +sub_080383E4: @ 0x080383E4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldr r1, _0803842C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x78 + strb r0, [r1] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + adds r1, #1 + movs r0, #0xff + strb r0, [r1] + adds r1, #1 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_0803842C: .4byte gLinkEntity + + thumb_func_start sub_08038430 +sub_08038430: @ 0x08038430 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803844C @ =gUnk_080CF4F0 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0803844C: .4byte gUnk_080CF4F0 + + thumb_func_start sub_08038450 +sub_08038450: @ 0x08038450 + push {lr} + ldr r2, _08038464 @ =gUnk_080CF508 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08038464: .4byte gUnk_080CF508 + + thumb_func_start sub_08038468 +sub_08038468: @ 0x08038468 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0803847C + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0803847C: + ldr r1, _080384B0 @ =gUnk_080CF4F0 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080384D8 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x5a + bne _080384CA + movs r0, #0x3f + ands r0, r1 + cmp r0, #0x14 + beq _080384BA + cmp r0, #0x14 + bgt _080384B4 + cmp r0, #0xe + beq _080384C0 + b _080384D8 + .align 2, 0 +_080384B0: .4byte gUnk_080CF4F0 +_080384B4: + cmp r0, #0x15 + beq _080384C0 + b _080384D8 +_080384BA: + movs r0, #5 + strb r0, [r4, #0xc] + b _080384D8 +_080384C0: + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0 + strb r0, [r1] + b _080384D8 +_080384CA: + movs r0, #0x3f + ands r0, r1 + cmp r0, #0x1d + bne _080384D8 + adds r0, r4, #0 + bl sub_08038754 +_080384D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_163 +nullsub_163: @ 0x080384DC + bx lr + .align 2, 0 + + thumb_func_start sub_080384E0 +sub_080384E0: @ 0x080384E0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_0804A720 + movs r4, #0 + movs r5, #1 + movs r0, #1 + strb r0, [r6, #0xc] + bl sub_08000E50 + movs r1, #0x1c + ands r0, r1 + strb r0, [r6, #0x15] + lsrs r0, r0, #2 + strb r0, [r6, #0x14] + ldrb r1, [r6, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r6, #0x10] + strb r4, [r6, #0xe] + movs r0, #0x20 + strb r0, [r6, #0xf] + adds r0, r6, #0 + adds r0, #0x82 + strb r4, [r0] + bl sub_08000E50 + ands r0, r5 + adds r1, r6, #0 + adds r1, #0x80 + strb r0, [r1] + adds r0, r6, #0 + adds r0, #0x81 + strb r4, [r0] + subs r1, #0x41 + movs r0, #0x72 + strb r0, [r1] + ldrb r1, [r6, #0x14] + adds r0, r6, #0 + bl sub_08004260 + pop {r4, r5, r6, pc} + + thumb_func_start sub_08038534 +sub_08038534: @ 0x08038534 + push {r4, lr} + adds r4, r0, #0 + bl sub_080387F0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08038594 + strb r0, [r4, #0xe] + movs r0, #0x20 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _08038578 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0803856A + adds r1, #7 + b _0803856C +_0803856A: + adds r1, #1 +_0803856C: + movs r0, #7 + ands r0, r1 + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + b _0803858A +_08038578: + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] +_0803858A: + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + b _080385C8 +_08038594: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080385C8 + adds r0, r4, #0 + movs r1, #0x80 + bl sub_0803872C + cmp r0, #0 + beq _080385C8 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x10 + strb r0, [r4, #0xf] + movs r0, #0x40 + strh r0, [r4, #0x24] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FCAC + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_080385C8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080385CC +sub_080385CC: @ 0x080385CC + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080387F0 + adds r0, r4, #0 + movs r1, #0x60 + bl sub_0803872C + cmp r0, #0 + beq _08038604 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0xc + strb r0, [r4, #0xf] + movs r0, #0x80 + strh r0, [r4, #0x24] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FCAC + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + b _08038648 +_08038604: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038648 + movs r6, #0x10 + strb r6, [r4, #0xf] + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _08038622 + adds r0, r4, #0 + bl sub_0806FCAC + b _08038638 +_08038622: + ldrb r5, [r4, #0x14] + bl sub_08000E50 + ands r0, r6 + cmp r0, #0 + beq _08038632 + adds r1, r5, #2 + b _08038634 +_08038632: + adds r1, r5, #6 +_08038634: + movs r0, #7 + ands r0, r1 +_08038638: + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_08038648: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0803864C +sub_0803864C: @ 0x0803864C + push {r4, lr} + adds r4, r0, #0 + bl sub_080387F0 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0803872C + cmp r0, #0 + beq _08038668 + adds r0, r4, #0 + bl sub_08038754 + b _080386B4 +_08038668: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080386B4 + movs r0, #0xa + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x81 + ldrb r0, [r2] + cmp r0, #0 + bne _08038698 + ldrh r0, [r4, #0x24] + adds r0, #0x40 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #0x12 + cmp r0, r1 + ble _080386B4 + movs r0, #1 + strb r0, [r2] + b _080386B4 +_08038698: + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + ble _080386AE + adds r0, r2, #0 + subs r0, #0x50 + strh r0, [r4, #0x24] + b _080386B4 +_080386AE: + adds r0, r4, #0 + bl sub_08038754 +_080386B4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080386B8 +sub_080386B8: @ 0x080386B8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080387F0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_080044EC + adds r1, r0, #0 + cmp r1, #1 + bne _08038720 + strb r1, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x3f + movs r0, #0x72 + strb r0, [r2] + strb r1, [r4, #0xe] + movs r0, #0x80 + strb r0, [r4, #0xf] + strh r0, [r4, #0x24] + subs r2, #0x16 + ldrb r1, [r2] + subs r0, #0xb9 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r4, #0 + movs r1, #0x70 + bl sub_0801D2B4 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #2 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08038720 + adds r0, r4, #0 + bl sub_0806FAB0 +_08038720: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038724 +sub_08038724: @ 0x08038724 + push {lr} + bl sub_08038754 + pop {pc} + + thumb_func_start sub_0803872C +sub_0803872C: @ 0x0803872C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_08049DF4 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08038750 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_0806FC80 + cmp r0, #0 + beq _08038750 + movs r0, #1 + b _08038752 +_08038750: + movs r0, #0 +_08038752: + pop {r4, r5, pc} + + thumb_func_start sub_08038754 +sub_08038754: @ 0x08038754 + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x5a + strb r0, [r1] + movs r1, #0 + movs r0, #0xc0 + strh r0, [r4, #0x24] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x81 + strb r1, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080387C0 @ =0x0000012B + bl sub_08004488 + adds r0, r4, #0 + movs r1, #0x71 + bl sub_0801D2B4 + ldrb r2, [r4, #0x15] + movs r0, #0xf + ands r0, r2 + cmp r0, #0 + beq _080387C4 + movs r1, #0x10 + ands r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1b + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r1, #9 + adds r0, r4, #0 + bl sub_08004260 + b _080387D8 + .align 2, 0 +_080387C0: .4byte 0x0000012B +_080387C4: + movs r1, #0x10 + ands r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1b + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 +_080387D8: + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080387EE + adds r0, r4, #0 + bl sub_0806FAB0 +_080387EE: + pop {r4, pc} + + thumb_func_start sub_080387F0 +sub_080387F0: @ 0x080387F0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + beq _08038890 + adds r5, r4, #0 + adds r5, #0x82 + ldrb r0, [r5] + cmp r0, #0 + bne _08038890 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08038868 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r6, #0x32 + ldrsh r1, [r4, r6] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002E0 + cmp r0, #0xf + beq _08038836 + cmp r0, #0x2a + bne _0803883A +_08038836: + movs r0, #0x20 + strb r0, [r5] +_0803883A: + ldrb r0, [r4, #0x15] + lsrs r0, r0, #1 + ldr r1, _0803886C @ =gUnk_080CF520 + adds r0, r0, r1 + ldrb r5, [r4, #0x15] + movs r1, #0 + ldrsb r1, [r0, r1] + movs r2, #1 + ldrsb r2, [r0, r2] + adds r0, r4, #0 + bl sub_080002CC + cmp r0, #0xf + beq _0803885A + cmp r0, #0x2a + bne _08038870 +_0803885A: + ldrb r0, [r4, #0x15] + adds r0, #0x10 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + b _0803887E + .align 2, 0 +_08038868: .4byte gUnk_03000BF0 +_0803886C: .4byte gUnk_080CF520 +_08038870: + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0803887E + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0800417E +_0803887E: + ldrb r0, [r4, #0x15] + cmp r5, r0 + beq _08038890 + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_08038890: + adds r0, r4, #0 + bl sub_08004274 + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + cmp r0, #0 + bne _080388A8 + adds r0, r4, #0 + bl sub_080AEF88 + b _080388B2 +_080388A8: + subs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0806F69C +_080388B2: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080388B4 +sub_080388B4: @ 0x080388B4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080388D0 @ =gUnk_080CF600 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_080388D0: .4byte gUnk_080CF600 + + thumb_func_start sub_080388D4 +sub_080388D4: @ 0x080388D4 + push {lr} + ldr r2, _080388E8 @ =gUnk_080CF618 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080388E8: .4byte gUnk_080CF618 + + thumb_func_start sub_080388EC +sub_080388EC: @ 0x080388EC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x43 + ldrb r0, [r6] + cmp r0, #0 + beq _08038902 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08038902: + ldr r1, _08038948 @ =gUnk_080CF600 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803897E + ldrb r0, [r4, #0xc] + cmp r0, #4 + beq _0803897E + ldr r5, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x3d + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x3e + ldrb r1, [r2] + adds r0, r5, #0 + adds r0, #0x3e + strb r1, [r0] + ldrb r0, [r6] + cmp r0, #0 + beq _0803894C + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + b _0803897E + .align 2, 0 +_08038948: .4byte gUnk_080CF600 +_0803894C: + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _0803897E + adds r0, r1, #0 + adds r0, #0x12 + movs r1, #0x1c + ands r0, r1 + strb r0, [r5, #0x15] + lsrs r0, r0, #2 + strb r0, [r5, #0x14] + ldrb r0, [r2] + adds r0, #0x14 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0 + bl sub_08038C84 + adds r0, r5, #0 + movs r1, #1 + bl sub_08038C84 +_0803897E: + pop {r4, r5, r6, pc} + + thumb_func_start nullsub_164 +nullsub_164: @ 0x08038980 + bx lr + .align 2, 0 + + thumb_func_start sub_08038984 +sub_08038984: @ 0x08038984 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x13 + bl sub_080A7EE0 + adds r6, r0, #0 + cmp r6, #0 + beq _080389E6 + adds r0, r5, #0 + bl sub_0804A720 + movs r4, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + str r6, [r5, #0x54] + bl sub_08000E50 + movs r1, #6 + ands r0, r1 + strb r0, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x80 + movs r1, #0 + strh r4, [r0] + subs r0, #6 + strb r1, [r0] + str r5, [r6, #0x50] + strb r1, [r6, #0xa] + movs r0, #0xff + strb r0, [r6, #0x14] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r6, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r5, #0 + bl sub_08038BA8 +_080389E6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080389E8 +sub_080389E8: @ 0x080389E8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x80 + ldrh r0, [r1] + cmp r0, #0 + beq _08038A08 + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08038A68 + movs r0, #0x80 + strh r0, [r4, #0x24] + b _08038A68 +_08038A08: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038A22 + adds r0, r4, #0 + bl sub_08038BA8 + adds r0, r6, #0 + bl sub_08038C2C + b _08038A68 +_08038A22: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08038A2E + subs r0, #1 + strb r0, [r4, #0xe] + b _08038A68 +_08038A2E: + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _08038A68 + movs r0, #0xc + strb r0, [r4, #0xe] + ldrb r1, [r6, #0x14] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08038A5C + ldrb r5, [r6, #0x14] + bl sub_08000E50 + movs r1, #0x20 + ands r1, r0 + cmp r1, #0 + beq _08038A54 + adds r1, r5, #1 + b _08038A56 +_08038A54: + adds r1, r5, #7 +_08038A56: + movs r0, #7 + ands r0, r1 + strb r0, [r6, #0x14] +_08038A5C: + adds r0, r4, #0 + bl sub_08038BA8 + adds r0, r6, #0 + bl sub_08038C2C +_08038A68: + adds r0, r4, #0 + bl sub_08038B90 + pop {r4, r5, r6, pc} + + thumb_func_start sub_08038A70 +sub_08038A70: @ 0x08038A70 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r6, [r5, #0x54] + adds r1, r5, #0 + adds r1, #0x80 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r7, r0, #0x10 + cmp r7, #0 + bne _08038AC0 + movs r1, #3 + strb r1, [r5, #0xc] + adds r2, r5, #0 + adds r2, #0x82 + movs r0, #4 + strb r0, [r2] + movs r0, #0x80 + strh r0, [r5, #0x24] + movs r4, #0x20 + strb r4, [r5, #0xf] + strb r1, [r6, #0xc] + adds r1, r6, #0 + adds r1, #0x82 + movs r0, #2 + strb r0, [r1] + movs r0, #0xff + strb r0, [r6, #0x14] + adds r0, r5, #0 + movs r1, #0 + bl sub_08038C84 + adds r0, r6, #0 + bl sub_08038C2C + strb r4, [r6, #0xf] + str r7, [r6, #0x50] + str r5, [r6, #0x54] + b _08038AFE +_08038AC0: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038AFE + movs r0, #0x10 + strb r0, [r5, #0xf] + adds r0, r5, #0 + movs r1, #0 + bl sub_08049F84 + strb r0, [r5, #0x15] + ldrb r0, [r5, #0x15] + adds r0, #4 + movs r1, #0x1c + ands r0, r1 + lsrs r1, r0, #2 + strb r1, [r6, #0x14] + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + strb r0, [r5, #0x14] + adds r0, r5, #0 + movs r1, #0 + bl sub_08038C84 + adds r0, r6, #0 + movs r1, #1 + bl sub_08038C84 +_08038AFE: + adds r0, r5, #0 + bl sub_08038B90 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08038B08 +sub_08038B08: @ 0x08038B08 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08038B18 + subs r0, #1 + strb r0, [r4, #0xf] + b _08038B5E +_08038B18: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08038B5E + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #3 + strb r0, [r1] + movs r0, #0x32 + strb r0, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + adds r0, #0x10 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + strh r2, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0 + bl sub_08038C84 + ldr r0, _08038B60 @ =0x0000015B + bl sub_08004488 +_08038B5E: + pop {r4, pc} + .align 2, 0 +_08038B60: .4byte 0x0000015B + + thumb_func_start sub_08038B64 +sub_08038B64: @ 0x08038B64 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038B8C + movs r0, #2 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x15] + adds r0, #0x1f + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_08038B8C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038B90 +sub_08038B90: @ 0x08038B90 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_0800445C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038BA8 +sub_08038BA8: @ 0x08038BA8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + ldr r1, _08038BEC @ =gUnk_080CF62C + movs r5, #7 + ands r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x82 + movs r3, #1 + strb r3, [r0] + ldr r0, [r4, #0x54] + adds r0, #0x82 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x7a + ldrb r0, [r1] + cmp r0, #0 + bne _08038BF0 + adds r0, #1 + strb r0, [r1] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_08038C84 + b _08038C2A + .align 2, 0 +_08038BEC: .4byte gUnk_080CF62C +_08038BF0: + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x14] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08038C14 + ldrb r2, [r2, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r1, #1 + ands r0, r5 + movs r3, #6 + cmp r2, r0 + bne _08038C0C + movs r3, #2 +_08038C0C: + adds r3, r3, r1 + movs r0, #6 + ands r3, r0 + b _08038C18 +_08038C14: + ldrb r3, [r2, #0x14] + ldrb r1, [r4, #0x14] +_08038C18: + cmp r3, r1 + beq _08038C2A + strb r3, [r4, #0x14] + lsls r0, r3, #2 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_08038C84 +_08038C2A: + pop {r4, r5, pc} + + thumb_func_start sub_08038C2C +sub_08038C2C: @ 0x08038C2C + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08000E50 + ldr r1, _08038C58 @ =gUnk_080CF634 + movs r6, #7 + ands r0, r6 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0xf] + ldr r0, [r5, #0x50] + ldrb r4, [r0, #0x14] + ldrb r0, [r5, #0x14] + cmp r0, #0xff + bne _08038C5C + strb r4, [r5, #0x14] + adds r0, r5, #0 + movs r1, #1 + bl sub_08038C84 + b _08038C7C + .align 2, 0 +_08038C58: .4byte gUnk_080CF634 +_08038C5C: + bl sub_08000E50 + ldr r1, _08038C80 @ =gUnk_080CF63C + ands r0, r6 + adds r0, r0, r1 + ldrb r0, [r0] + adds r4, r0, r4 + ands r4, r6 + ldrb r0, [r5, #0x14] + cmp r4, r0 + beq _08038C7C + strb r4, [r5, #0x14] + adds r0, r5, #0 + movs r1, #1 + bl sub_08038C84 +_08038C7C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08038C80: .4byte gUnk_080CF63C + + thumb_func_start sub_08038C84 +sub_08038C84: @ 0x08038C84 + push {lr} + adds r3, r0, #0 + ldrb r2, [r3, #0x14] + adds r0, #0x82 + ldrb r0, [r0] + lsls r0, r0, #3 + orrs r2, r0 + cmp r1, #0 + bne _08038C98 + lsrs r2, r2, #1 +_08038C98: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08038CA4 +sub_08038CA4: @ 0x08038CA4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + adds r1, r0, #0 + cmp r1, #0 + beq _08038CC8 + ldr r0, _08038CC4 @ =gUnk_080012C8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _08038CF0 + .align 2, 0 +_08038CC4: .4byte gUnk_080012C8 +_08038CC8: + ldr r4, _08038CF4 @ =gUnk_080CF778 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + adds r0, r5, #0 + bl sub_080391B4 +_08038CF0: + pop {r4, r5, pc} + .align 2, 0 +_08038CF4: .4byte gUnk_080CF778 + + thumb_func_start sub_08038CF8 +sub_08038CF8: @ 0x08038CF8 + push {lr} + ldr r2, _08038D0C @ =gUnk_080CF790 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08038D0C: .4byte gUnk_080CF790 + + thumb_func_start sub_08038D10 +sub_08038D10: @ 0x08038D10 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _08038D52 + adds r5, r4, #0 + adds r5, #0x7a + ldrb r0, [r5] + cmp r0, #0 + bne _08038D3E + movs r0, #1 + bl sub_0807CC3C + cmp r0, #0 + bne _08038D3E + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0xbf + bhi _08038D46 + movs r0, #1 + strb r0, [r5] + b _08038D46 +_08038D3E: + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0xff + strb r0, [r1] +_08038D46: + adds r0, r4, #0 + bl sub_08039218 + adds r0, r4, #0 + bl sub_08039260 +_08038D52: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08038D64 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08038D64: + ldr r1, _08038D70 @ =gUnk_080CF778 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_08038D70: .4byte gUnk_080CF778 + + thumb_func_start nullsub_165 +nullsub_165: @ 0x08038D74 + bx lr + .align 2, 0 + + thumb_func_start sub_08038D78 +sub_08038D78: @ 0x08038D78 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _08038D96 + movs r0, #0 + strb r0, [r4, #0xb] + movs r0, #0x30 + strb r0, [r4, #0x16] + adds r0, r4, #0 + bl sub_08039120 + b _08038D9C +_08038D96: + adds r0, r4, #0 + bl sub_08039140 +_08038D9C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038DA0 +sub_08038DA0: @ 0x08038DA0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038DB6 + adds r0, r4, #0 + bl sub_0803901C +_08038DB6: + adds r0, r4, #0 + bl sub_08039298 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038DC0 +sub_08038DC0: @ 0x08038DC0 + push {lr} + ldr r2, _08038DD4 @ =gUnk_080CF7AC + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08038DD4: .4byte gUnk_080CF7AC + + thumb_func_start sub_08038DD8 +sub_08038DD8: @ 0x08038DD8 + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x10 + strb r1, [r0, #0xe] + ldr r2, _08038E10 @ =gUnk_080CF7BC + ldrb r1, [r0, #0xa] + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r0, #0xf] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r3] + movs r1, #4 + bl sub_08004260 + ldr r0, _08038E14 @ =0x000001D9 + bl sub_08004488 + pop {pc} + .align 2, 0 +_08038E10: .4byte gUnk_080CF7BC +_08038E14: .4byte 0x000001D9 + + thumb_func_start sub_08038E18 +sub_08038E18: @ 0x08038E18 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08038E70 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038E70 + bl sub_08079184 + adds r0, r4, #0 + bl sub_08039218 + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08016A04 +_08038E70: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038EA2 + movs r0, #0x10 + strb r0, [r4, #0xe] + bl sub_08000E50 + ldrb r3, [r4, #0x18] + lsls r2, r3, #0x19 + lsrs r2, r2, #0x1f + movs r1, #1 + ands r1, r0 + eors r2, r1 + lsls r2, r2, #6 + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_08039260 +_08038EA2: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038EAC +sub_08038EAC: @ 0x08038EAC + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080390F8 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08038ED0 +sub_08038ED0: @ 0x08038ED0 + push {lr} + ldrb r2, [r0, #0x10] + movs r1, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + bl sub_08039218 + pop {pc} + + thumb_func_start sub_08038EE0 +sub_08038EE0: @ 0x08038EE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_08039298 + movs r1, #0xe0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08038F1C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08038F16 + adds r0, r4, #0 + bl sub_0803901C + b _08038F1C +_08038F16: + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r4, #0x20] +_08038F1C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08038F20 +sub_08038F20: @ 0x08038F20 + push {r4, lr} + adds r4, r0, #0 + bl sub_08039298 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08038F42 + adds r0, r4, #0 + bl sub_0803901C +_08038F42: + pop {r4, pc} + + thumb_func_start sub_08038F44 +sub_08038F44: @ 0x08038F44 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08038F8C @ =gLinkEntity + adds r1, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080390F8 + adds r0, r4, #0 + bl sub_080AEF88 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_080044EC + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_08039298 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r2, r0, #1 + strh r2, [r1] + lsls r0, r2, #0x10 + cmp r0, #0 + bne _08038F90 + adds r0, r4, #0 + bl sub_08039120 + b _08038F9E + .align 2, 0 +_08038F8C: .4byte gLinkEntity +_08038F90: + movs r0, #0x1f + ands r2, r0 + cmp r2, #0 + bne _08038F9E + adds r0, r4, #0 + bl sub_08039260 +_08038F9E: + pop {r4, pc} + + thumb_func_start sub_08038FA0 +sub_08038FA0: @ 0x08038FA0 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xe] + adds r0, r1, #1 + strb r0, [r4, #0xe] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0 + bne _08038FB8 + adds r0, r4, #0 + bl sub_08039260 +_08038FB8: + adds r2, r4, #0 + adds r2, #0x78 + ldrh r1, [r2] + cmp r1, #0 + beq _08038FFC + ldr r3, _08038FF4 @ =0x0000FFFF + adds r0, r1, r3 + strh r0, [r2] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _08038FE0 + ldr r1, _08038FF8 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_08038FE0: + adds r0, r4, #0 + bl sub_080390F8 + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + b _08039018 + .align 2, 0 +_08038FF4: .4byte 0x0000FFFF +_08038FF8: .4byte gLinkEntity +_08038FFC: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0803917C + cmp r0, #0 + beq _08039018 + adds r0, r4, #0 + bl sub_0805E7BC +_08039018: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803901C +sub_0803901C: @ 0x0803901C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r3, r0, #0 + movs r5, #3 + ands r5, r3 + cmp r3, #3 + bne _08039042 + ldrb r0, [r4, #0xc] + cmp r0, #3 + beq _0803903C + cmp r0, #4 + beq _08039040 + movs r5, #0 + b _08039042 +_0803903C: + movs r5, #1 + b _08039042 +_08039040: + movs r5, #2 +_08039042: + cmp r5, #1 + beq _0803906C + cmp r5, #2 + beq _080390AA + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _08039068 @ =gUnk_080CF7BE + lsrs r0, r3, #0x10 + movs r1, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _080390BC + .align 2, 0 +_08039068: .4byte gUnk_080CF7BE +_0803906C: + movs r1, #3 + movs r0, #3 + strb r0, [r4, #0xc] + lsrs r0, r3, #8 + ands r0, r1 + adds r0, #2 + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r4, #0x20] + adds r0, r4, #0 + bl sub_080390C0 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + bl sub_08000E50 + ands r0, r5 + cmp r0, #0 + beq _080390BC + bl sub_08000E50 + ands r5, r0 + movs r1, #0xeb + lsls r1, r1, #1 + adds r0, r5, r1 + bl sub_08004488 + b _080390BC +_080390AA: + movs r0, #4 + strb r0, [r4, #0xc] + lsrs r1, r3, #0x10 + movs r0, #1 + ands r1, r0 + adds r1, #2 + adds r0, r4, #0 + bl sub_08004260 +_080390BC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080390C0 +sub_080390C0: @ 0x080390C0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _080390E0 + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _080390E0 + lsrs r0, r5, #0x10 + b _080390E8 +_080390E0: + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #2 +_080390E8: + movs r1, #0x1c + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080390F8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080390F8 +sub_080390F8: @ 0x080390F8 + push {lr} + adds r3, r0, #0 + ldrb r1, [r3, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _0803911C + lsrs r1, r1, #4 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r3, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] +_0803911C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08039120 +sub_08039120: @ 0x08039120 + push {lr} + ldr r2, _0803913C @ =gUnk_080CF7C2 + ldrb r1, [r0, #0xa] + adds r1, r1, r2 + ldrb r1, [r1] + movs r2, #0 + strh r1, [r0, #0x24] + adds r1, r0, #0 + adds r1, #0x7a + strb r2, [r1] + bl sub_0803901C + pop {pc} + .align 2, 0 +_0803913C: .4byte gUnk_080CF7C2 + + thumb_func_start sub_08039140 +sub_08039140: @ 0x08039140 + push {r4, lr} + adds r4, r0, #0 + movs r0, #6 + strb r0, [r4, #0xc] + bl sub_08000E50 + strb r0, [r4, #0xe] + ldr r1, _08039174 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + ldr r0, _08039178 @ =0x0000FFFC + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0xb4 + strh r0, [r1] + adds r0, r4, #0 + bl sub_080390F8 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_08039174: .4byte gLinkEntity +_08039178: .4byte 0x0000FFFC + + thumb_func_start sub_0803917C +sub_0803917C: @ 0x0803917C + push {r4, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldr r3, _080391AC @ =gUnk_03000BF0 + movs r4, #0xa + ldrsh r1, [r3, r4] + adds r1, #0xc + subs r0, r0, r1 + movs r1, #0x84 + lsls r1, r1, #1 + cmp r0, r1 + bhi _080391B0 + movs r0, #0x32 + ldrsh r1, [r2, r0] + movs r2, #0xc + ldrsh r0, [r3, r2] + adds r0, #0xc + subs r1, r1, r0 + cmp r1, #0xb8 + bhi _080391B0 + movs r0, #0 + b _080391B2 + .align 2, 0 +_080391AC: .4byte gUnk_03000BF0 +_080391B0: + movs r0, #1 +_080391B2: + pop {r4, pc} + + thumb_func_start sub_080391B4 +sub_080391B4: @ 0x080391B4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x7a + ldrb r0, [r0] + cmp r0, #0 + beq _0803920C + adds r2, r5, #0 + adds r2, #0x7b + ldrb r1, [r2] + adds r0, r1, #1 + strb r0, [r2] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0803920C + movs r0, #0x41 + movs r1, #2 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _0803920C + bl sub_08000E50 + movs r1, #0x17 + ands r1, r0 + lsls r1, r1, #2 + ldr r0, _08039210 @ =gUnk_080CF7C4 + adds r1, r1, r0 + ldr r2, _08039214 @ =gUnk_03000BF0 + ldrh r0, [r1] + ldrh r3, [r2, #0xa] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + ldrh r2, [r2, #0xc] + adds r0, r0, r2 + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] +_0803920C: + pop {r4, r5, pc} + .align 2, 0 +_08039210: .4byte gUnk_080CF7C4 +_08039214: .4byte gUnk_03000BF0 + + thumb_func_start sub_08039218 +sub_08039218: @ 0x08039218 + push {lr} + adds r2, r0, #0 + movs r0, #5 + strb r0, [r2, #0xc] + ldr r1, _08039254 @ =gUnk_080CF824 + ldrb r0, [r2, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x24] + ldr r1, _08039258 @ =gUnk_080CF828 + ldrb r0, [r2, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x78 + strh r1, [r0] + subs r0, #0x20 + ldrb r0, [r0] + cmp r0, #4 + beq _0803924C + adds r0, r2, #0 + movs r1, #4 + bl sub_08004260 +_0803924C: + ldr r0, _0803925C @ =0x000001D9 + bl sub_08004488 + pop {pc} + .align 2, 0 +_08039254: .4byte gUnk_080CF824 +_08039258: .4byte gUnk_080CF828 +_0803925C: .4byte 0x000001D9 + + thumb_func_start sub_08039260 +sub_08039260: @ 0x08039260 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08039290 @ =gUnk_080CF82E + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0803928E + ldr r0, _08039294 @ =gUnk_080CF82C + ldrb r1, [r4, #0x18] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] +_0803928E: + pop {r4, pc} + .align 2, 0 +_08039290: .4byte gUnk_080CF82E +_08039294: .4byte gUnk_080CF82C + + thumb_func_start sub_08039298 +sub_08039298: @ 0x08039298 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xb] + cmp r0, #0 + bne _080392A8 + adds r0, r1, #0 + bl sub_08078930 +_080392A8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080392AC +sub_080392AC: @ 0x080392AC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080392C8 @ =gUnk_080CF8A4 + bl sub_0800129E + movs r3, #0x12 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_080392C8: .4byte gUnk_080CF8A4 + + thumb_func_start sub_080392CC +sub_080392CC: @ 0x080392CC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080392FC @ =gUnk_080CF8BC + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + cmp r0, #0 + beq _0803930C + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08039300 + subs r1, #0x3d + movs r0, #0x45 + b _0803930A + .align 2, 0 +_080392FC: .4byte gUnk_080CF8BC +_08039300: + adds r0, r4, #0 + adds r0, #0x7d + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x3f +_0803930A: + strb r0, [r1] +_0803930C: + movs r0, #0x36 + ldrsh r1, [r4, r0] + cmp r1, #0 + beq _0803933A + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + bge _08039334 + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + b _0803933A +_08039334: + adds r0, r4, #0 + bl sub_08016A04 +_0803933A: + pop {r4, pc} + + thumb_func_start sub_0803933C +sub_0803933C: @ 0x0803933C + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x44 + bne _08039390 + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #6 + bgt _08039390 + cmp r1, #4 + blt _08039390 + adds r0, r5, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bgt _08039390 + movs r0, #4 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r5, #0x15] + ldrb r0, [r5, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + movs r1, #0x10 + eors r0, r1 + asrs r0, r0, #3 + strb r0, [r5, #0x14] + movs r0, #0x90 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_0803981C +_08039390: + adds r0, r5, #0 + adds r0, #0x41 + ldrb r2, [r0] + cmp r2, #0x9d + bne _080393F8 + ldr r1, [r5, #0x54] + cmp r1, #0 + bne _080393CA + ldrb r0, [r5, #0xc] + cmp r0, #8 + bhi _080393EC + adds r0, r5, #0 + movs r1, #0x10 + movs r2, #1 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _080393DC + ldrb r0, [r5, #0x14] + lsls r0, r0, #1 + strb r0, [r1, #0x1e] + movs r0, #2 + strb r0, [r1, #0xb] + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_08004488 + b _080393DC +_080393CA: + adds r0, r1, #0 + adds r0, #0x41 + movs r4, #0 + strb r2, [r0] + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_08004488 + str r4, [r5, #0x54] +_080393DC: + adds r0, r5, #0 + bl sub_08039A48 + adds r1, r5, #0 + adds r1, #0x78 + ldrh r0, [r1] + adds r0, #0x5a + strh r0, [r1] +_080393EC: + adds r2, r5, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] +_080393F8: + adds r0, r5, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0803940A + adds r0, r5, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0803940A: + ldr r1, _08039414 @ =gUnk_080CF8A4 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_08039414: .4byte gUnk_080CF8A4 + + thumb_func_start sub_08039418 +sub_08039418: @ 0x08039418 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0803942E + adds r0, r1, #0 + movs r1, #0xf3 + movs r2, #0 + bl sub_0804A7E0 + b _08039434 +_0803942E: + adds r0, r1, #0 + bl sub_0804A7D4 +_08039434: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08039438 +sub_08039438: @ 0x08039438 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08039454 + ldr r0, _08039458 @ =gUnk_080CF8EC + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08039454: + pop {r4, pc} + .align 2, 0 +_08039458: .4byte gUnk_080CF8EC + + thumb_func_start sub_0803945C +sub_0803945C: @ 0x0803945C + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x5a + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_08039468 +sub_08039468: @ 0x08039468 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_08039470 +sub_08039470: @ 0x08039470 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x54] + cmp r2, #0 + bne _08039494 + movs r1, #0x10 + movs r2, #1 + bl sub_0804A98C + adds r2, r0, #0 + cmp r2, #0 + beq _0803949C + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + strb r0, [r2, #0x1e] + movs r0, #1 + strb r0, [r2, #0xb] + b _0803949C +_08039494: + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] +_0803949C: + movs r0, #0 + str r0, [r4, #0x54] + adds r3, r4, #0 + adds r3, #0x3a + ldrb r2, [r3] + movs r1, #0xfb + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3] + adds r2, r4, #0 + adds r2, #0x3b + ldrb r0, [r2] + ands r1, r0 + strb r1, [r2] + adds r0, r4, #0 + bl sub_08039A48 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + adds r0, #0x5a + strh r0, [r1] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080394CC +sub_080394CC: @ 0x080394CC + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + movs r1, #0 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x7b + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + subs r0, #0x3d + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x7d + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08039A00 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0803950A + adds r0, r4, #0 + bl sub_0803998C + b _0803952A +_0803950A: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x15] + ldr r1, _0803952C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0803981C +_0803952A: + pop {r4, pc} + .align 2, 0 +_0803952C: .4byte gLinkEntity + + thumb_func_start sub_08039530 +sub_08039530: @ 0x08039530 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + cmp r0, #0 + bne _08039568 + adds r0, r4, #0 + bl sub_08039758 + cmp r0, #0 + bne _08039568 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08039568 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xa + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08039858 +_08039568: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803956C +sub_0803956C: @ 0x0803956C + push {r4, lr} + adds r4, r0, #0 + bl sub_08039758 + cmp r0, #0 + bne _0803958A + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803958A + adds r0, r4, #0 + bl sub_0803992C +_0803958A: + pop {r4, pc} + + thumb_func_start sub_0803958C +sub_0803958C: @ 0x0803958C + push {r4, lr} + adds r4, r0, #0 + bl sub_08039758 + cmp r0, #0 + bne _080395D4 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + beq _080395C0 + adds r0, r4, #0 + bl sub_080042B8 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080395D4 + adds r0, r4, #0 + bl sub_0803998C + b _080395D4 +_080395C0: + adds r2, r4, #0 + adds r2, #0x7b + ldrb r0, [r2] + lsls r0, r0, #1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0803998C +_080395D4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080395D8 +sub_080395D8: @ 0x080395D8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08039602 + adds r0, r4, #0 + bl sub_0803998C + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x5a + strb r0, [r1] + movs r0, #0x7d + bl sub_08004488 +_08039602: + pop {r4, pc} + + thumb_func_start sub_08039604 +sub_08039604: @ 0x08039604 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _08039624 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] +_08039624: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08039628 +sub_08039628: @ 0x08039628 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + adds r1, r0, #0 + cmp r1, #0 + beq _0803963A + subs r0, #1 + strb r0, [r2, #0xe] + b _0803966A +_0803963A: + ldrh r0, [r2, #0x36] + adds r0, #4 + strh r0, [r2, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _0803966A + movs r0, #7 + strb r0, [r2, #0xc] + movs r0, #0xa + strb r0, [r2, #0xe] + strh r1, [r2, #0x36] + adds r1, r2, #0 + adds r1, #0x7a + movs r0, #0x78 + strb r0, [r1] + adds r1, #2 + movs r0, #0x3c + strb r0, [r1] + adds r0, r2, #0 + bl sub_080399C4 + ldr r0, _0803966C @ =0x0000014B + bl sub_08004488 +_0803966A: + pop {pc} + .align 2, 0 +_0803966C: .4byte 0x0000014B + + thumb_func_start sub_08039670 +sub_08039670: @ 0x08039670 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08039686 + adds r0, r1, #0 + bl sub_0803998C +_08039686: + pop {pc} + + thumb_func_start sub_08039688 +sub_08039688: @ 0x08039688 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _080396AC + adds r0, r4, #0 + movs r1, #0x3c + bl sub_08039A00 + adds r0, r4, #0 + bl sub_0803998C + b _080396BA +_080396AC: + movs r0, #0x1f + ands r1, r0 + cmp r1, #0 + bne _080396BA + adds r0, r4, #0 + bl sub_08039A20 +_080396BA: + pop {r4, pc} + + thumb_func_start sub_080396BC +sub_080396BC: @ 0x080396BC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + cmp r0, #0 + bne _080396E2 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080396E2 + adds r0, r4, #0 + bl sub_08039A70 +_080396E2: + pop {r4, pc} + + thumb_func_start sub_080396E4 +sub_080396E4: @ 0x080396E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + adds r0, r4, #0 + bl sub_080042B8 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08039708 + adds r0, r4, #0 + bl sub_08039AD4 +_08039708: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803970C +sub_0803970C: @ 0x0803970C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08039756 + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0803973A + adds r0, r4, #0 + bl sub_0803998C + ldr r0, [r4, #0x54] + bl sub_0805E7BC + movs r0, #0 + str r0, [r4, #0x54] + b _08039740 +_0803973A: + adds r0, r4, #0 + bl sub_08039A48 +_08039740: + adds r2, r4, #0 + adds r2, #0x3b + ldrb r1, [r2] + movs r0, #4 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + adds r0, #0x3c + strh r0, [r1] +_08039756: + pop {r4, pc} + + thumb_func_start sub_08039758 +sub_08039758: @ 0x08039758 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7a + ldrb r0, [r5] + cmp r0, #0 + beq _0803976A + subs r0, #1 + strb r0, [r5] +_0803976A: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08039818 + ldrb r0, [r5] + cmp r0, #0 + bne _08039818 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080397DC + ldr r5, _080397D8 @ =gUnk_020000B0 + ldr r0, [r5] + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x24 + bl sub_0806FCB8 + cmp r0, #0 + beq _08039818 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldr r1, [r5] + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #3 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0803981C + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x46 + strb r0, [r1] + adds r1, #0x3e + strb r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #1 + b _0803981A + .align 2, 0 +_080397D8: .4byte gUnk_020000B0 +_080397DC: + ldr r5, _08039814 @ =gUnk_020000B0 + ldr r0, [r5] + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x48 + bl sub_0806FCB8 + cmp r0, #0 + beq _08039818 + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r1, [r5] + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + adds r1, #0xc + adds r0, r4, #0 + bl sub_080042AC + movs r0, #1 + b _0803981A + .align 2, 0 +_08039814: .4byte gUnk_020000B0 +_08039818: + movs r0, #0 +_0803981A: + pop {r4, r5, pc} + + thumb_func_start sub_0803981C +sub_0803981C: @ 0x0803981C + push {lr} + adds r2, r0, #0 + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r2, #0x20] + adds r1, r2, #0 + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _08039836 + movs r0, #0xf4 + strb r0, [r1] +_08039836: + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x45 + strb r0, [r1] + adds r1, #0x3e + strb r0, [r1] + ldrb r1, [r2, #0x14] + adds r1, #8 + adds r0, r2, #0 + bl sub_080042AC + ldr r0, _08039854 @ =0x0000012B + bl sub_08004488 + pop {pc} + .align 2, 0 +_08039854: .4byte 0x0000012B + + thumb_func_start sub_08039858 +sub_08039858: @ 0x08039858 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_080398C0 + adds r6, r0, #0 + ldrb r0, [r5, #0x14] + lsls r4, r0, #3 + adds r0, r6, #4 + movs r1, #0x18 + ands r0, r1 + cmp r0, r4 + bne _0803988C + adds r1, r5, #0 + adds r1, #0x7b + ldrb r0, [r1] + cmp r0, #3 + bne _080398B8 + movs r0, #0 + strb r0, [r1] + bl sub_08000E50 + movs r1, #2 + ands r1, r0 + subs r1, #1 + lsls r1, r1, #3 + adds r6, r6, r1 +_0803988C: + subs r0, r6, r4 + movs r1, #0x1f + ands r0, r1 + lsrs r4, r0, #4 + movs r0, #1 + eors r4, r0 + ldr r1, _080398BC @ =gUnk_080CF8F8 + ldrb r0, [r5, #0x14] + lsls r0, r0, #1 + adds r0, r0, r4 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_080042AC + lsls r0, r4, #1 + ldrb r1, [r5, #0x14] + adds r0, r0, r1 + subs r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0x14] +_080398B8: + pop {r4, r5, r6, pc} + .align 2, 0 +_080398BC: .4byte gUnk_080CF8F8 + + thumb_func_start sub_080398C0 +sub_080398C0: @ 0x080398C0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08039908 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08039908 + ldr r0, _08039900 @ =gUnk_020000B0 + ldr r0, [r0] + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x58 + bl sub_0806FCB8 + cmp r0, #0 + beq _08039908 + ldr r1, _08039904 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + b _08039928 + .align 2, 0 +_08039900: .4byte gUnk_020000B0 +_08039904: .4byte gLinkEntity +_08039908: + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08039922 + movs r0, #7 + ands r0, r5 + cmp r0, #0 + beq _08039922 + adds r0, r4, #0 + bl sub_08049EE4 + b _08039928 +_08039922: + lsrs r0, r5, #0x10 + movs r1, #0x18 + ands r0, r1 +_08039928: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803992C +sub_0803992C: @ 0x0803992C + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0xe0 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x14] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + bl sub_08000E50 + ldr r2, _08039978 @ =gUnk_080CF900 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE58C + ldr r1, _0803997C @ =gUnk_080CF910 + ldrb r2, [r4, #0x14] + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + ldrh r0, [r4, #0x2a] + ands r0, r1 + cmp r0, #0 + beq _08039980 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080042AC + b _08039988 + .align 2, 0 +_08039978: .4byte gUnk_080CF900 +_0803997C: .4byte gUnk_080CF910 +_08039980: + adds r1, r2, #4 + adds r0, r4, #0 + bl sub_080042AC +_08039988: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803998C +sub_0803998C: @ 0x0803998C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x44 + strb r0, [r1] + adds r1, #0x3e + strb r0, [r1] + bl sub_08000E50 + ldr r2, _080399C0 @ =gUnk_080CF918 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 +_080399C0: .4byte gUnk_080CF918 + + thumb_func_start sub_080399C4 +sub_080399C4: @ 0x080399C4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x11 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080399E2 + ldrh r0, [r1, #0x2e] + subs r0, #4 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + adds r0, #2 + strh r0, [r1, #0x32] +_080399E2: + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080399FE + ldrh r0, [r1, #0x2e] + adds r0, #4 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + adds r0, #2 + strh r0, [r1, #0x32] +_080399FE: + pop {r4, pc} + + thumb_func_start sub_08039A00 +sub_08039A00: @ 0x08039A00 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08000E50 + ldr r2, _08039A1C @ =gUnk_080CF928 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r5 + adds r4, #0x7a + strb r0, [r4] + pop {r4, r5, pc} + .align 2, 0 +_08039A1C: .4byte gUnk_080CF928 + + thumb_func_start sub_08039A20 +sub_08039A20: @ 0x08039A20 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + movs r2, #0 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _08039A44 + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x3c + strb r0, [r1] + movs r0, #0xfb + bl sub_08004488 +_08039A44: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08039A48 +sub_08039A48: @ 0x08039A48 + push {lr} + adds r2, r0, #0 + movs r0, #9 + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x47 + strb r0, [r1] + adds r1, #0x3e + strb r0, [r1] + subs r1, #5 + movs r0, #0xa + strh r0, [r1] + ldrb r1, [r2, #0x14] + adds r1, #0x10 + adds r0, r2, #0 + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08039A70 +sub_08039A70: @ 0x08039A70 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xa + strb r0, [r5, #0xc] + movs r0, #0xe0 + strh r0, [r5, #0x24] + bl sub_08000E50 + adds r4, r0, #0 + ldr r1, _08039AB8 @ =gUnk_080CF92C + movs r0, #3 + ands r0, r4 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x78 + strh r1, [r0] + lsrs r4, r4, #0x10 + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08039ABC + movs r0, #7 + ands r0, r4 + cmp r0, #0 + beq _08039ABC + adds r0, r5, #0 + bl sub_08049EE4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] + b _08039AC2 + .align 2, 0 +_08039AB8: .4byte gUnk_080CF92C +_08039ABC: + movs r0, #0x18 + ands r4, r0 + strb r4, [r5, #0x15] +_08039AC2: + ldrb r0, [r5, #0x15] + lsrs r0, r0, #3 + strb r0, [r5, #0x14] + ldrb r1, [r5, #0x14] + adds r1, #0x14 + adds r0, r5, #0 + bl sub_080042AC + pop {r4, r5, pc} + + thumb_func_start sub_08039AD4 +sub_08039AD4: @ 0x08039AD4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08039B28 + adds r5, r0, #0 + ldr r0, _08039B18 @ =0x0000FFFF + cmp r5, r0 + beq _08039B20 + ldrb r2, [r4, #0xb] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _08039B20 + str r4, [r1, #0x50] + movs r0, #0xb + strb r0, [r4, #0xc] + str r1, [r4, #0x54] + ldrb r1, [r4, #0x14] + adds r1, #0x18 + adds r0, r4, #0 + bl sub_080042AC + ldr r0, _08039B1C @ =0x00004067 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r2, [r1] + adds r1, r5, #0 + bl sub_0800015E + b _08039B26 + .align 2, 0 +_08039B18: .4byte 0x0000FFFF +_08039B1C: .4byte 0x00004067 +_08039B20: + adds r0, r4, #0 + bl sub_08039A48 +_08039B26: + pop {r4, r5, pc} + + thumb_func_start sub_08039B28 +sub_08039B28: @ 0x08039B28 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, [r6, #0x54] + cmp r0, #0 + bne _08039B84 + ldrb r2, [r6, #0x14] + lsls r2, r2, #1 + ldr r0, _08039B88 @ =gUnk_080CF930 + adds r2, r2, r0 + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r1, #0 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + ldr r4, _08039B8C @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r3, #0x3f + ands r5, r3 + movs r1, #0x32 + ldrsh r0, [r6, r1] + movs r1, #1 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + ldrh r1, [r4, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r5, r0 + adds r0, r6, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_080002B0 + adds r2, r0, #0 + ldr r1, _08039B90 @ =gUnk_080CF938 +_08039B76: + ldrh r0, [r1] + cmp r0, r2 + beq _08039B98 + adds r1, #4 + ldrh r0, [r1] + cmp r0, #0 + bne _08039B76 +_08039B84: + ldr r0, _08039B94 @ =0x0000FFFF + b _08039B9E + .align 2, 0 +_08039B88: .4byte gUnk_080CF930 +_08039B8C: .4byte gUnk_03000BF0 +_08039B90: .4byte gUnk_080CF938 +_08039B94: .4byte 0x0000FFFF +_08039B98: + ldrh r0, [r1, #2] + strb r0, [r6, #0xb] + adds r0, r5, #0 +_08039B9E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08039BA0 +sub_08039BA0: @ 0x08039BA0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080012DC + adds r1, r0, #0 + cmp r1, #0 + beq _08039BC4 + ldr r0, _08039BC0 @ =gUnk_080012C8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 + b _08039BD8 + .align 2, 0 +_08039BC0: .4byte gUnk_080012C8 +_08039BC4: + ldr r4, _08039BDC @ =gUnk_080CFB84 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 +_08039BD8: + pop {r4, r5, pc} + .align 2, 0 +_08039BDC: .4byte gUnk_080CFB84 + + thumb_func_start sub_08039BE0 +sub_08039BE0: @ 0x08039BE0 + push {lr} + ldr r2, _08039BF4 @ =gUnk_080CFB9C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08039BF4: .4byte gUnk_080CFB9C + + thumb_func_start sub_08039BF8 +sub_08039BF8: @ 0x08039BF8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_0803A100 + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _08039C64 + movs r0, #7 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r5, #0x20] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08039C60 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + b _08039C72 + .align 2, 0 +_08039C60: .4byte gUnk_03000BF0 +_08039C64: + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08039C72 + adds r0, r5, #0 + bl sub_0803A0E0 +_08039C72: + ldr r1, _08039C7C @ =gUnk_080CFB84 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08039C7C: .4byte gUnk_080CFB84 + + thumb_func_start sub_08039C80 +sub_08039C80: @ 0x08039C80 + push {lr} + ldr r2, _08039C94 @ =gUnk_080CFBBC + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08039C94: .4byte gUnk_080CFBBC + + thumb_func_start sub_08039C98 +sub_08039C98: @ 0x08039C98 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803A100 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xd] + strb r1, [r4, #0xe] + movs r0, #0x30 + strb r0, [r4, #0x1d] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08039CB0 +sub_08039CB0: @ 0x08039CB0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803A100 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08039CCA + adds r0, r4, #0 + bl sub_0806F4E8 + b _08039CDE +_08039CCA: + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08039CDE + adds r0, r4, #0 + bl sub_0803A0E0 +_08039CDE: + pop {r4, pc} + + thumb_func_start sub_08039CE0 +sub_08039CE0: @ 0x08039CE0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xe] + cmp r4, #0 + bne _08039D2A + bl sub_0803A100 + movs r0, #1 + strb r0, [r5, #0xe] + ldr r0, _08039D3C @ =0x0000FFFF + strh r0, [r5, #0x36] + adds r0, r5, #0 + adds r0, #0x62 + strb r4, [r0] + adds r0, #0x12 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08039D40 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_08039D2A: + adds r0, r5, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08039D44 + adds r0, r5, #0 + bl sub_0806F3E4 + b _08039D4A + .align 2, 0 +_08039D3C: .4byte 0x0000FFFF +_08039D40: .4byte gUnk_03000BF0 +_08039D44: + adds r0, r5, #0 + bl sub_0803A0E0 +_08039D4A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08039D4C +sub_08039D4C: @ 0x08039D4C + push {lr} + adds r2, r0, #0 + ldr r0, _08039D64 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08039D62 + adds r0, r2, #0 + bl sub_0803A0E0 +_08039D62: + pop {pc} + .align 2, 0 +_08039D64: .4byte gUnk_03003F80 + + thumb_func_start nullsub_166 +nullsub_166: @ 0x08039D68 + bx lr + .align 2, 0 + + thumb_func_start sub_08039D6C +sub_08039D6C: @ 0x08039D6C + push {lr} + bl sub_0803A0E0 + pop {pc} + + thumb_func_start sub_08039D74 +sub_08039D74: @ 0x08039D74 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #2 + strb r0, [r5, #0x1c] + strb r1, [r5, #0x16] + ldrh r0, [r5, #0x32] + adds r0, #3 + strh r0, [r5, #0x32] + movs r0, #0x2e + ldrsh r4, [r5, r0] + ldr r1, _08039DD0 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r4, r4, r0 + asrs r4, r4, #4 + movs r2, #0x3f + ands r4, r2 + movs r3, #0x32 + ldrsh r0, [r5, r3] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r6, r5, #0 + adds r6, #0x38 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x74 + strh r0, [r1] + ldr r0, _08039DD4 @ =0x00004060 + ldrb r2, [r6] + adds r1, r4, #0 + bl sub_0800015E + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, r5, r6, pc} + .align 2, 0 +_08039DD0: .4byte gUnk_03000BF0 +_08039DD4: .4byte 0x00004060 + + thumb_func_start sub_08039DD8 +sub_08039DD8: @ 0x08039DD8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_0803A100 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08039E38 + adds r0, r5, #0 + bl sub_080002A0 + ldr r1, _08039E30 @ =0x00004073 + cmp r0, r1 + bne _08039E28 + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08039E34 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + adds r0, r5, #0 + bl sub_0803A0E0 +_08039E28: + adds r0, r5, #0 + bl sub_08078930 + b _08039EC6 + .align 2, 0 +_08039E30: .4byte 0x00004073 +_08039E34: .4byte gUnk_03000BF0 +_08039E38: + ldr r0, _08039E6C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08039EC6 + ldr r2, _08039E70 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r6, #0x32 + ldrsh r2, [r2, r6] + adds r0, r5, #0 + movs r3, #0x30 + bl sub_0806FCB8 + cmp r0, #0 + beq _08039EC6 + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _08039E74 + movs r0, #3 + strb r0, [r5, #0xc] + movs r0, #0x1e + strb r0, [r5, #0xe] + b _08039EC6 + .align 2, 0 +_08039E6C: .4byte gUnk_03003F80 +_08039E70: .4byte gLinkEntity +_08039E74: + ldrb r1, [r5, #0xa] + subs r1, #2 + movs r0, #0x42 + bl sub_0804AA60 + adds r2, r0, #0 + cmp r2, #0 + beq _08039EC6 + movs r0, #1 + strb r0, [r2, #0xb] + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08039EC8 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + adds r0, r5, #0 + bl sub_0805E7BC +_08039EC6: + pop {r4, r5, r6, pc} + .align 2, 0 +_08039EC8: .4byte gUnk_03000BF0 + + thumb_func_start sub_08039ECC +sub_08039ECC: @ 0x08039ECC + push {lr} + ldr r2, _08039EE0 @ =gUnk_080CFBD4 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08039EE0: .4byte gUnk_080CFBD4 + + thumb_func_start sub_08039EE4 +sub_08039EE4: @ 0x08039EE4 + push {r4, r5, r6, lr} + mov ip, r0 + movs r2, #0 + movs r0, #1 + mov r1, ip + strb r0, [r1, #0xd] + ldrb r1, [r1, #0x10] + movs r0, #0x7f + ands r0, r1 + mov r3, ip + strb r0, [r3, #0x10] + strh r2, [r3, #0x2a] + ldr r0, _08039F40 @ =gUnk_080FD340 + str r0, [r3, #0x48] + ldr r0, _08039F44 @ =gLinkEntity + ldrb r0, [r0, #0x14] + mov r1, ip + adds r1, #0x76 + strb r0, [r1] + mov r0, ip + adds r0, #0x74 + ldrh r0, [r0] + movs r5, #0x2e + ldrsh r1, [r3, r5] + ldr r3, _08039F48 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + mov r6, ip + movs r5, #0x32 + ldrsh r2, [r6, r5] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + mov r2, ip + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_08039F40: .4byte gUnk_080FD340 +_08039F44: .4byte gLinkEntity +_08039F48: .4byte gUnk_03000BF0 + + thumb_func_start sub_08039F4C +sub_08039F4C: @ 0x08039F4C + push {lr} + adds r3, r0, #0 + ldr r0, _08039F74 @ =gLinkEntity + movs r1, #0x76 + adds r1, r1, r3 + mov ip, r1 + ldrb r2, [r0, #0x14] + ldrb r0, [r1] + cmp r2, r0 + beq _08039F70 + subs r0, r2, r0 + ldrb r1, [r3, #0x1e] + adds r0, r0, r1 + movs r1, #6 + ands r0, r1 + strb r0, [r3, #0x1e] + mov r0, ip + strb r2, [r0] +_08039F70: + pop {pc} + .align 2, 0 +_08039F74: .4byte gLinkEntity + + thumb_func_start sub_08039F78 +sub_08039F78: @ 0x08039F78 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r3] + movs r1, #0x36 + ldrsh r0, [r2, r1] + cmp r0, #0 + beq _08039F9C + ldrh r0, [r2, #0x2a] + cmp r0, #0 + beq _08039FA2 +_08039F9C: + adds r0, r2, #0 + bl sub_0803A0E0 +_08039FA2: + pop {pc} + + thumb_func_start sub_08039FA4 +sub_08039FA4: @ 0x08039FA4 + push {lr} + bl sub_0803A0E0 + pop {pc} + + thumb_func_start sub_08039FAC +sub_08039FAC: @ 0x08039FAC + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_0803A100 + adds r3, r5, #0 + adds r3, #0x62 + ldr r2, _0803A03C @ =gUnk_080CFBE4 + ldrb r1, [r5, #0xe] + movs r0, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r1, [r3] + adds r0, r0, r1 + strb r0, [r3] + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0803A03A + movs r0, #4 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + strb r4, [r3] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xa0 + strb r0, [r1] + subs r1, #4 + movs r0, #0xf + strb r0, [r1] + ldr r0, _0803A040 @ =gUnk_080FD34C + str r0, [r5, #0x48] + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0803A044 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0803A03A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803A03C: .4byte gUnk_080CFBE4 +_0803A040: .4byte gUnk_080FD34C +_0803A044: .4byte gUnk_03000BF0 + + thumb_func_start sub_0803A048 +sub_0803A048: @ 0x0803A048 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r0, [r4, #0x34] + ldr r1, _0803A078 @ =0xFFFF0000 + adds r0, r0, r1 + str r0, [r4, #0x34] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + bgt _0803A076 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0xa + strb r0, [r4, #0xe] + ldr r1, _0803A07C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] +_0803A076: + pop {r4, pc} + .align 2, 0 +_0803A078: .4byte 0xFFFF0000 +_0803A07C: .4byte gLinkEntity + + thumb_func_start sub_0803A080 +sub_0803A080: @ 0x0803A080 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A098 + movs r0, #6 + strb r0, [r4, #0xc] +_0803A098: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803A09C +sub_0803A09C: @ 0x0803A09C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AEFE0 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _0803A0B6 + adds r0, r4, #0 + bl sub_0803A0E0 +_0803A0B6: + pop {r4, pc} + + thumb_func_start sub_0803A0B8 +sub_0803A0B8: @ 0x0803A0B8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _0803A0CA + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_0803A0CA: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0803A0DE + adds r0, r4, #0 + bl sub_0803A0E0 +_0803A0DE: + pop {r4, pc} + + thumb_func_start sub_0803A0E0 +sub_0803A0E0: @ 0x0803A0E0 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xb] + movs r2, #0 + movs r3, #0 + bl sub_0808288C + adds r2, r0, #0 + adds r0, r4, #0 + movs r1, #0x3c + bl CreateFX + bl sub_0805E780 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803A100 +sub_0803A100: @ 0x0803A100 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r3, _0803A14C @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r6, r5, #0 + adds r6, #0x38 + ldrb r1, [r6] + adds r0, r4, #0 + bl sub_080001DA + ldr r1, _0803A150 @ =0x00004067 + cmp r0, r1 + bne _0803A148 + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + ldrb r2, [r6] + adds r1, r4, #0 + bl sub_0800015E + bl sub_0805E780 +_0803A148: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803A14C: .4byte gUnk_03000BF0 +_0803A150: .4byte 0x00004067 + + thumb_func_start sub_0803A154 +sub_0803A154: @ 0x0803A154 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0803A16C @ =gUnk_080CFC14 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0803A16C: .4byte gUnk_080CFC14 + + thumb_func_start sub_0803A170 +sub_0803A170: @ 0x0803A170 + push {lr} + ldr r2, _0803A184 @ =gUnk_080CFC2C + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803A184: .4byte gUnk_080CFC2C + + thumb_func_start sub_0803A188 +sub_0803A188: @ 0x0803A188 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xa] + cmp r3, #1 + bhi _0803A23E + ldrb r0, [r4, #0xc] + cmp r0, #0x2b + beq _0803A210 + adds r0, r4, #0 + adds r0, #0x3d + movs r1, #0 + ldrsb r1, [r0, r1] + adds r5, r0, #0 + cmp r1, #0 + ble _0803A23E + adds r0, #4 + ldrb r0, [r0] + cmp r0, #0x95 + beq _0803A1B2 + cmp r0, #0x8e + bne _0803A23E +_0803A1B2: + movs r0, #0x28 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r2, [r4, #0x50] + adds r0, r2, #0 + adds r0, #0x7d + ldrb r1, [r0] + cmp r3, #0 + bne _0803A1CE + movs r0, #1 + b _0803A1D0 +_0803A1CE: + movs r0, #2 +_0803A1D0: + orrs r1, r0 + adds r0, r2, #0 + adds r0, #0x7d + strb r1, [r0] + adds r0, #3 + ldrb r2, [r0] + ldrb r1, [r4, #0xa] + adds r3, r0, #0 + cmp r1, #0 + bne _0803A1E8 + movs r0, #1 + b _0803A1EA +_0803A1E8: + movs r0, #2 +_0803A1EA: + orrs r0, r2 + strb r0, [r3] + ldr r2, [r4, #0x54] + ldrb r1, [r5] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r2, [r4, #0x74] + ldrb r1, [r5] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r0, _0803A20C @ =0x00000127 + bl sub_080A3268 + b _0803A23E + .align 2, 0 +_0803A20C: .4byte 0x00000127 +_0803A210: + ldr r2, [r4, #0x54] + adds r3, r4, #0 + adds r3, #0x3d + ldrb r1, [r3] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r2, [r4, #0x74] + ldrb r1, [r3] + adds r0, r2, #0 + adds r0, #0x3d + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0x18 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #9 + bl sub_080042AC + ldr r0, _0803A248 @ =0x00000127 + bl sub_080A3268 +_0803A23E: + ldr r1, _0803A24C @ =gUnk_080CFC14 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_0803A248: .4byte 0x00000127 +_0803A24C: .4byte gUnk_080CFC14 + + thumb_func_start nullsub_167 +nullsub_167: @ 0x0803A250 + bx lr + .align 2, 0 + + thumb_func_start sub_0803A254 +sub_0803A254: @ 0x0803A254 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803A270 @ =gUnk_080CFC3C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0803B538 + pop {r4, pc} + .align 2, 0 +_0803A270: .4byte gUnk_080CFC3C + + thumb_func_start sub_0803A274 +sub_0803A274: @ 0x0803A274 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0803A2C8 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x44 + bhi _0803A360 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0803A2CC + movs r0, #0x38 + movs r1, #0 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + str r1, [r4, #0x54] + movs r0, #0x44 + movs r1, #2 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + str r1, [r4, #0x74] + movs r0, #0x7e + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + str r4, [r1, #0x50] + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] + ldr r0, [r4, #0x50] + movs r2, #0x80 + lsls r2, r2, #0xd + movs r3, #0x80 + lsls r3, r3, #0xe + adds r1, r4, #0 + bl sub_0806FA48 + b _0803A310 + .align 2, 0 +_0803A2C8: .4byte gUnk_03003DBC +_0803A2CC: + movs r0, #0x38 + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + str r1, [r4, #0x54] + movs r0, #0x44 + movs r1, #3 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + str r1, [r4, #0x74] + movs r0, #0x7e + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + str r4, [r1, #0x50] + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x50] + ldr r2, _0803A34C @ =0xFFF00000 + movs r3, #0x80 + lsls r3, r3, #0xe + adds r1, r4, #0 + bl sub_0806FA48 +_0803A310: + ldr r0, _0803A350 @ =gUnk_030010A0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _0803A354 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r2, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r3, #1 + orrs r0, r3 + strb r0, [r4, #0x18] + ldr r2, [r4, #0x54] + ldrb r0, [r2, #0x18] + ands r1, r0 + orrs r1, r3 + strb r1, [r2, #0x18] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08004260 + b _0803A360 + .align 2, 0 +_0803A34C: .4byte 0xFFF00000 +_0803A350: .4byte gUnk_030010A0 +_0803A354: + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_0803A360: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803A364 +sub_0803A364: @ 0x0803A364 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A3A0 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xd] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0xb + bls _0803A394 + b _0803A52C +_0803A394: + lsls r0, r1, #2 + ldr r1, _0803A3A4 @ =_0803A3A8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803A3A0: .4byte gUnk_080CED6C +_0803A3A4: .4byte _0803A3A8 +_0803A3A8: @ jump table + .4byte _0803A546 @ case 0 + .4byte _0803A3D8 @ case 1 + .4byte _0803A546 @ case 2 + .4byte _0803A3FA @ case 3 + .4byte _0803A418 @ case 4 + .4byte _0803A434 @ case 5 + .4byte _0803A44E @ case 6 + .4byte _0803A468 @ case 7 + .4byte _0803A49A @ case 8 + .4byte _0803A4B2 @ case 9 + .4byte _0803A4CC @ case 10 + .4byte _0803A4FA @ case 11 +_0803A3D8: + movs r0, #2 + strb r0, [r4, #0xd] + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + ldrb r1, [r2, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #0x19] + b _0803A546 +_0803A3FA: + movs r0, #4 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #8 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x19] + b _0803A546 +_0803A418: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803A42E + b _0803A546 +_0803A42E: + movs r0, #5 + strb r0, [r4, #0xd] + b _0803A546 +_0803A434: + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + bne _0803A446 + adds r0, r4, #0 + bl sub_0806F69C + b _0803A546 +_0803A446: + movs r0, #0 + strb r0, [r4, #0xb] + movs r0, #6 + b _0803A516 +_0803A44E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A546 + movs r0, #7 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + b _0803A546 +_0803A468: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A546 + movs r0, #8 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #0xc + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x54] + movs r1, #8 + bl sub_080042AC + movs r0, #0xb7 + lsls r0, r0, #1 + bl sub_080A3268 + b _0803A546 +_0803A49A: + adds r0, r4, #0 + bl sub_0803B55C + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A546 + movs r0, #9 + b _0803A516 +_0803A4B2: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A546 + movs r0, #0xa + strb r0, [r4, #0xd] + ldr r0, [r4, #0x54] + movs r1, #6 + bl sub_080042AC + b _0803A546 +_0803A4CC: + adds r0, r4, #0 + bl sub_0803B55C + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A546 + movs r0, #0xb + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #0xf + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _0803A546 +_0803A4FA: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A546 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0803A51E + movs r0, #0xc +_0803A516: + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _0803A546 +_0803A51E: + movs r0, #1 + strb r0, [r4, #0xb] + movs r0, #6 + strb r0, [r4, #0xd] + movs r0, #0xa + strb r0, [r4, #0xe] + b _0803A546 +_0803A52C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A546 + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_0803B4D4 +_0803A546: + pop {r4, pc} + + thumb_func_start sub_0803A548 +sub_0803A548: @ 0x0803A548 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803B5C0 + adds r0, r4, #0 + bl sub_080042B8 + ldr r2, _0803A588 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + bne _0803A586 + adds r0, r4, #0 + bl sub_0806F69C +_0803A586: + pop {r4, pc} + .align 2, 0 +_0803A588: .4byte gUnk_080CED6C + + thumb_func_start sub_0803A58C +sub_0803A58C: @ 0x0803A58C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A5C4 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + beq _0803A5C8 + adds r0, r4, #0 + bl sub_0803B59C + b _0803A5CE + .align 2, 0 +_0803A5C4: .4byte gUnk_080CED6C +_0803A5C8: + adds r0, r4, #0 + bl sub_0806F69C +_0803A5CE: + pop {r4, pc} + + thumb_func_start sub_0803A5D0 +sub_0803A5D0: @ 0x0803A5D0 + push {lr} + movs r1, #5 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + ldr r3, _0803A608 @ =gUnk_080CED6C + ldr r1, [r0, #0x50] + ldrb r1, [r1, #0xf] + lsrs r1, r1, #4 + adds r1, #3 + ldrb r2, [r0, #0xa] + lsls r2, r2, #1 + adds r1, r1, r2 + movs r2, #7 + ands r1, r2 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, #4 + strh r1, [r0, #0x36] + movs r1, #5 + bl sub_08004260 + pop {pc} + .align 2, 0 +_0803A608: .4byte gUnk_080CED6C + + thumb_func_start sub_0803A60C +sub_0803A60C: @ 0x0803A60C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A65C @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A658 + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0xa + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x54] + movs r1, #8 + bl sub_080042AC +_0803A658: + pop {r4, pc} + .align 2, 0 +_0803A65C: .4byte gUnk_080CED6C + + thumb_func_start sub_0803A660 +sub_0803A660: @ 0x0803A660 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + adds r5, r0, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r6, #0x80 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0803A6A8 + ldrh r2, [r4, #0x36] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x50 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0803A688 + subs r0, r2, #2 + b _0803A6DC +_0803A688: + movs r1, #0 + movs r0, #7 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + ldr r1, _0803A6A4 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + b _0803A6DE + .align 2, 0 +_0803A6A4: .4byte gLinkEntity +_0803A6A8: + adds r0, r4, #0 + bl sub_0803B55C + ldrb r1, [r5] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0803A6BE + ldr r0, _0803A6E0 @ =0x00000157 + bl sub_080A3268 +_0803A6BE: + ldr r2, _0803A6E4 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 +_0803A6DC: + strh r0, [r4, #0x36] +_0803A6DE: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803A6E0: .4byte 0x00000157 +_0803A6E4: .4byte gUnk_080CED6C + + thumb_func_start sub_0803A6E8 +sub_0803A6E8: @ 0x0803A6E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803B610 + cmp r0, #0 + beq _0803A6FE + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0xa + strb r0, [r4, #0xe] + b _0803A71E +_0803A6FE: + adds r0, r4, #0 + bl sub_0803B63C + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, [r4, #0x50] + movs r1, #0x32 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + adds r1, #8 + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _0803A71E + strh r1, [r4, #0x32] +_0803A71E: + pop {r4, pc} + + thumb_func_start sub_0803A720 +sub_0803A720: @ 0x0803A720 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A73C + movs r0, #9 + strb r0, [r1, #0xc] + adds r0, r1, #0 + movs r1, #0x16 + bl sub_0803B8E8 +_0803A73C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803A740 +sub_0803A740: @ 0x0803A740 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x36] + adds r0, #4 + strh r0, [r3, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _0803A77E + movs r0, #0 + strh r0, [r3, #0x36] + movs r0, #0xa + strb r0, [r3, #0xc] + strb r0, [r3, #0xe] + ldr r1, [r3, #0x50] + adds r1, #0x7d + ldrb r2, [r1] + movs r0, #0x40 + orrs r0, r2 + strb r0, [r1] + adds r0, r3, #0 + movs r1, #0x13 + bl sub_0803B8E8 + movs r0, #0xa + movs r1, #0 + bl sub_08080964 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_080A3268 +_0803A77E: + pop {pc} + + thumb_func_start sub_0803A780 +sub_0803A780: @ 0x0803A780 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A7AA + adds r1, r2, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + ands r0, r3 + cmp r0, #0 + beq _0803A7A6 + movs r0, #6 + b _0803A7A8 +_0803A7A6: + movs r0, #0xb +_0803A7A8: + strb r0, [r2, #0xc] +_0803A7AA: + pop {pc} + + thumb_func_start sub_0803A7AC +sub_0803A7AC: @ 0x0803A7AC + push {lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x36] + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0803A7C4 + subs r0, r3, #1 + strh r0, [r2, #0x36] + b _0803A7C8 +_0803A7C4: + movs r0, #0xc + strb r0, [r2, #0xc] +_0803A7C8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803A7CC +sub_0803A7CC: @ 0x0803A7CC + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A808 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + beq _0803A80C + movs r0, #0xd + strb r0, [r4, #0xc] + ldr r0, [r4, #0x54] + movs r1, #6 + bl sub_080042AC + b _0803A812 + .align 2, 0 +_0803A808: .4byte gUnk_080CED6C +_0803A80C: + adds r0, r4, #0 + bl sub_0806F69C +_0803A812: + pop {r4, pc} + + thumb_func_start sub_0803A814 +sub_0803A814: @ 0x0803A814 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A868 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B55C + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A864 + movs r0, #0xe + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x12 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_0803A864: + pop {r4, pc} + .align 2, 0 +_0803A868: .4byte gUnk_080CED6C + + thumb_func_start sub_0803A86C +sub_0803A86C: @ 0x0803A86C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A8B4 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803A8B2 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_0803B59C +_0803A8B2: + pop {r4, pc} + .align 2, 0 +_0803A8B4: .4byte gUnk_080CED6C + + thumb_func_start sub_0803A8B8 +sub_0803A8B8: @ 0x0803A8B8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #0x10 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r1, [r4, #0x15] + movs r0, #0x80 + strh r0, [r4, #0x24] + ldr r2, _0803A904 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #1 + bl sub_080042AC + ldr r0, _0803A908 @ =0x00000153 + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_0803A904: .4byte gUnk_080CED6C +_0803A908: .4byte 0x00000153 + + thumb_func_start sub_0803A90C +sub_0803A90C: @ 0x0803A90C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A974 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0803B55C + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803A970 + movs r0, #0x11 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + lsls r0, r0, #4 + adds r0, #8 + strb r0, [r4, #0x15] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #7 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #2 + bl sub_080042AC +_0803A970: + pop {r4, pc} + .align 2, 0 +_0803A974: .4byte gUnk_080CED6C + + thumb_func_start sub_0803A978 +sub_0803A978: @ 0x0803A978 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803A9FC @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0803B55C + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0803A9C2 + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08004596 +_0803A9C2: + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0x15] + cmp r0, #0x10 + bne _0803A9F8 + movs r0, #0x12 + strb r0, [r4, #0xc] + movs r0, #3 + strb r0, [r4, #0xe] + ldrb r2, [r4, #0x10] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x10] + ldr r2, [r4, #0x74] + ldrb r0, [r2, #0x10] + ands r1, r0 + strb r1, [r2, #0x10] + adds r0, r4, #0 + movs r1, #8 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #3 + bl sub_080042AC +_0803A9F8: + pop {r4, pc} + .align 2, 0 +_0803A9FC: .4byte gUnk_080CED6C + + thumb_func_start sub_0803AA00 +sub_0803AA00: @ 0x0803AA00 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _0803AA90 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B870 + cmp r0, #0 + bne _0803AA8E + ldrb r1, [r4, #0xa] + movs r0, #1 + eors r0, r1 + lsls r0, r0, #4 + adds r5, r0, #0 + adds r5, #8 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0803AA54 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08004596 +_0803AA54: + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0x15] + cmp r0, r5 + beq _0803AA6E + ldr r0, _0803AA94 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r2, #0x32 + ldrsh r0, [r0, r2] + cmp r1, r0 + blt _0803AA8E +_0803AA6E: + movs r0, #0x13 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x17 + ands r0, r1 + strb r0, [r4, #0x18] + strb r5, [r4, #0x15] + ldr r0, _0803AA94 @ =gLinkEntity + ldrh r1, [r0, #0x2e] + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] + ldr r0, [r4, #0x54] + movs r1, #4 + bl sub_080042AC +_0803AA8E: + pop {r4, r5, pc} + .align 2, 0 +_0803AA90: .4byte gUnk_080CED6C +_0803AA94: .4byte gLinkEntity + + thumb_func_start sub_0803AA98 +sub_0803AA98: @ 0x0803AA98 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AB0C @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B870 + cmp r0, #0 + bne _0803AB0A + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_0803B6F4 + cmp r0, #0 + beq _0803AB0A + movs r0, #0x14 + strb r0, [r4, #0xc] + movs r0, #0x40 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0xa + bl sub_08004260 + ldr r2, [r4, #0x74] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + ldr r2, [r4, #0x54] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x13 + strb r0, [r1] + adds r0, r2, #0 + movs r1, #5 + bl sub_080042AC + movs r0, #0xb7 + lsls r0, r0, #1 + bl sub_080A3268 +_0803AB0A: + pop {r4, pc} + .align 2, 0 +_0803AB0C: .4byte gUnk_080CED6C + + thumb_func_start sub_0803AB10 +sub_0803AB10: @ 0x0803AB10 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AB58 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_0803B55C + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803AB56 + movs r0, #0x15 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] +_0803AB56: + pop {r4, pc} + .align 2, 0 +_0803AB58: .4byte gUnk_080CED6C + + thumb_func_start sub_0803AB5C +sub_0803AB5C: @ 0x0803AB5C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803ABB0 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803ABAC + movs r0, #0x16 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x1a + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0xb + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #6 + bl sub_080042AC +_0803ABAC: + pop {r4, pc} + .align 2, 0 +_0803ABB0: .4byte gUnk_080CED6C + + thumb_func_start sub_0803ABB4 +sub_0803ABB4: @ 0x0803ABB4 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AC18 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0803B55C + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803AC14 + movs r0, #0x17 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #0 + bl sub_080042AC +_0803AC14: + pop {r4, pc} + .align 2, 0 +_0803AC18: .4byte gUnk_080CED6C + + thumb_func_start sub_0803AC1C +sub_0803AC1C: @ 0x0803AC1C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AC54 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + beq _0803AC58 + adds r0, r4, #0 + bl sub_0803B59C + b _0803AC5E + .align 2, 0 +_0803AC54: .4byte gUnk_080CED6C +_0803AC58: + adds r0, r4, #0 + bl sub_0806F69C +_0803AC5E: + pop {r4, pc} + + thumb_func_start sub_0803AC60 +sub_0803AC60: @ 0x0803AC60 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803ACA8 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0803ACB4 + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + beq _0803ACAC + movs r0, #0x19 + strb r0, [r4, #0xc] + movs r0, #0 + strb r0, [r4, #0xd] + movs r0, #0x1e + b _0803ACB6 + .align 2, 0 +_0803ACA8: .4byte gUnk_080CED6C +_0803ACAC: + adds r0, r4, #0 + bl sub_0806F69C + b _0803ACB8 +_0803ACB4: + subs r0, #1 +_0803ACB6: + strb r0, [r4, #0xe] +_0803ACB8: + adds r0, r4, #0 + bl sub_0803B824 + pop {r4, pc} + + thumb_func_start sub_0803ACC0 +sub_0803ACC0: @ 0x0803ACC0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + subs r0, #1 + cmp r0, #4 + bhi _0803ACF0 + lsls r0, r0, #2 + ldr r1, _0803ACD8 @ =_0803ACDC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803ACD8: .4byte _0803ACDC +_0803ACDC: @ jump table + .4byte _0803AD02 @ case 0 + .4byte _0803AD1A @ case 1 + .4byte _0803AD4A @ case 2 + .4byte _0803AD5C @ case 3 + .4byte _0803AD74 @ case 4 +_0803ACF0: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803ADA4 + movs r0, #1 + strb r0, [r4, #0xd] + b _0803ADA4 +_0803AD02: + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0803ADA4 + movs r0, #2 + strb r0, [r4, #0xd] + b _0803ADA4 +_0803AD1A: + ldrh r0, [r4, #0x36] + adds r0, #4 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _0803ADA4 + movs r0, #0 + strh r0, [r4, #0x36] + movs r0, #0xc + strb r0, [r4, #0xe] + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #8 + movs r1, #0 + bl sub_08080964 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_0803B804 + b _0803ADA4 +_0803AD4A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803ADA4 + movs r0, #4 + strb r0, [r4, #0xd] + b _0803ADA4 +_0803AD5C: + ldrh r0, [r4, #0x36] + subs r0, #2 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x28 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0803ADA4 + movs r0, #5 + strb r0, [r4, #0xd] + b _0803ADA4 +_0803AD74: + ldrh r0, [r4, #0x36] + adds r0, #4 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + blt _0803ADA4 + movs r0, #0 + strh r0, [r4, #0x36] + movs r0, #0x1a + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x1e + movs r1, #0 + bl sub_08080964 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_0803B804 + b _0803ADAA +_0803ADA4: + adds r0, r4, #0 + bl sub_0803B824 +_0803ADAA: + pop {r4, pc} + + thumb_func_start sub_0803ADAC +sub_0803ADAC: @ 0x0803ADAC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803ADEC + movs r0, #0x16 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x1a + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r2, [r4, #0x74] + ldrb r0, [r2, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r0, r4, #0 + movs r1, #0xb + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #6 + bl sub_080042AC + bl sub_0803B798 + b _0803ADF2 +_0803ADEC: + adds r0, r4, #0 + bl sub_0803B824 +_0803ADF2: + pop {r4, pc} + + thumb_func_start sub_0803ADF4 +sub_0803ADF4: @ 0x0803ADF4 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AE44 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803AE42 + movs r0, #0x1c + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x22 + ands r0, r1 + strb r0, [r4, #0x18] +_0803AE42: + pop {r4, pc} + .align 2, 0 +_0803AE44: .4byte gUnk_080CED6C + + thumb_func_start sub_0803AE48 +sub_0803AE48: @ 0x0803AE48 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AEAC @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0803AE82 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803AEB0 +_0803AE82: + ldr r0, [r4, #0x50] + adds r0, #0x7d + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0803AEB0 + movs r0, #0x1d + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x21 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _0803AEC0 + .align 2, 0 +_0803AEAC: .4byte gUnk_080CED6C +_0803AEB0: + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + bne _0803AEC0 + adds r0, r4, #0 + bl sub_0806F69C +_0803AEC0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803AEC4 +sub_0803AEC4: @ 0x0803AEC4 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803AF14 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803AF10 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_0803B59C +_0803AF10: + pop {r4, pc} + .align 2, 0 +_0803AF14: .4byte gUnk_080CED6C + + thumb_func_start sub_0803AF18 +sub_0803AF18: @ 0x0803AF18 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x1f + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + ldr r2, _0803AF4C @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + pop {r4, pc} + .align 2, 0 +_0803AF4C: .4byte gUnk_080CED6C + + thumb_func_start sub_0803AF50 +sub_0803AF50: @ 0x0803AF50 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803AF7A + movs r0, #0x20 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x24 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x54] + movs r1, #8 + bl sub_080042AC +_0803AF7A: + pop {r4, pc} + + thumb_func_start sub_0803AF7C +sub_0803AF7C: @ 0x0803AF7C + push {r4, lr} + adds r4, r0, #0 + bl sub_0803B55C + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803AF9A + movs r0, #0x21 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] +_0803AF9A: + pop {r4, pc} + + thumb_func_start sub_0803AF9C +sub_0803AF9C: @ 0x0803AF9C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _0803AFAA + subs r0, #1 + b _0803AFC4 +_0803AFAA: + ldrh r3, [r2, #0x36] + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0803AFBE + subs r0, r3, #2 + strh r0, [r2, #0x36] + b _0803AFC6 +_0803AFBE: + movs r0, #0x22 + strb r0, [r2, #0xc] + movs r0, #0xa +_0803AFC4: + strb r0, [r2, #0xe] +_0803AFC6: + pop {pc} + + thumb_func_start sub_0803AFC8 +sub_0803AFC8: @ 0x0803AFC8 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803AFDC + movs r0, #0x23 + strb r0, [r1, #0xc] +_0803AFDC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803AFE0 +sub_0803AFE0: @ 0x0803AFE0 + push {lr} + adds r3, r0, #0 + ldrh r1, [r3, #0x36] + movs r2, #0x36 + ldrsh r0, [r3, r2] + cmp r0, #0 + bge _0803AFF4 + adds r0, r1, #4 + strh r0, [r3, #0x36] + b _0803B018 +_0803AFF4: + movs r2, #0 + movs r0, #0x24 + strb r0, [r3, #0xc] + movs r0, #0xf0 + strb r0, [r3, #0xe] + adds r1, r3, #0 + adds r1, #0x84 + movs r0, #3 + strb r0, [r1] + strh r2, [r3, #0x36] + movs r0, #0xa0 + movs r1, #0 + bl sub_08080964 + movs r0, #0xac + lsls r0, r0, #1 + bl sub_080A3268 +_0803B018: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803B01C +sub_0803B01C: @ 0x0803B01C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r1, r0, #1 + strb r1, [r2, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0803B032 + movs r0, #0x25 + strb r0, [r2, #0xc] + b _0803B048 +_0803B032: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x46 + bls _0803B048 + movs r0, #0xf + ands r1, r0 + cmp r1, #0 + bne _0803B048 + adds r0, r2, #0 + bl sub_0803B724 +_0803B048: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803B04C +sub_0803B04C: @ 0x0803B04C + push {lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x36] + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0803B064 + subs r0, r3, #1 + strh r0, [r2, #0x36] + b _0803B070 +_0803B064: + movs r0, #0x26 + strb r0, [r2, #0xc] + ldr r0, [r2, #0x54] + movs r1, #6 + bl sub_080042AC +_0803B070: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803B074 +sub_0803B074: @ 0x0803B074 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803B0D0 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B55C + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803B0CC + movs r0, #0x27 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x2b + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #0 + bl sub_080042AC +_0803B0CC: + pop {r4, pc} + .align 2, 0 +_0803B0D0: .4byte gUnk_080CED6C + + thumb_func_start sub_0803B0D4 +sub_0803B0D4: @ 0x0803B0D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803B0FE + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_0803B59C +_0803B0FE: + pop {r4, pc} + + thumb_func_start sub_0803B100 +sub_0803B100: @ 0x0803B100 + push {lr} + adds r2, r0, #0 + movs r0, #0x29 + strb r0, [r2, #0xc] + movs r0, #0xa0 + lsls r0, r0, #9 + str r0, [r2, #0x20] + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _0803B11C + ldr r0, _0803B118 @ =gUnk_080FD364 + b _0803B11E + .align 2, 0 +_0803B118: .4byte gUnk_080FD364 +_0803B11C: + ldr r0, _0803B13C @ =gUnk_080FD374 +_0803B11E: + str r0, [r2, #0x48] + ldr r0, [r2, #0x74] + movs r1, #3 + strb r1, [r0, #0xc] + adds r0, #0x74 + movs r1, #0x20 + strb r1, [r0] + ldr r0, [r2, #0x54] + movs r1, #9 + bl sub_080042AC + ldr r0, _0803B140 @ =0x0000014F + bl sub_080A3268 + pop {pc} + .align 2, 0 +_0803B13C: .4byte gUnk_080FD374 +_0803B140: .4byte 0x0000014F + + thumb_func_start sub_0803B144 +sub_0803B144: @ 0x0803B144 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + bl sub_080042B8 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0803B178 + movs r0, #0x2a + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x16 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_0803B8E8 + movs r0, #8 + movs r1, #0 + bl sub_08080964 +_0803B178: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803B17C +sub_0803B17C: @ 0x0803B17C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803B1B4 + movs r0, #0x2b + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x18 + strb r0, [r1] + adds r1, #6 + movs r0, #0xff + strb r0, [r1] + adds r1, #0x39 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r1] +_0803B1B4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803B1B8 +sub_0803B1B8: @ 0x0803B1B8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803B1D4 + adds r0, r5, #0 + bl sub_08004274 + ldr r0, [r5, #0x54] + bl sub_080042B8 +_0803B1D4: + adds r0, r5, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0xf4 + bhi _0803B2B8 + movs r0, #0x32 + strb r0, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x7e + ldr r0, _0803B284 @ =0x000005DC + strh r0, [r1] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #0x18] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x14 + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _0803B23A + ldr r0, [r5, #0x48] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldr r0, [r5, #0x48] + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_0803B23A: + movs r0, #0 + movs r1, #0x5e + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0803B268 + movs r0, #0 + strb r0, [r4, #0xe] + movs r0, #0x90 + strb r0, [r4, #0x15] + ldr r0, [r5, #0x48] + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 +_0803B268: + ldr r4, [r5, #0x74] + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #0x40 + strb r0, [r1] + ldr r4, [r5, #0x50] + adds r0, r4, #0 + adds r0, #0x80 + ldrb r1, [r0] + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _0803B288 + movs r0, #4 + b _0803B28A + .align 2, 0 +_0803B284: .4byte 0x000005DC +_0803B288: + movs r0, #8 +_0803B28A: + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + movs r0, #0xc + ands r0, r1 + cmp r0, #0xc + bne _0803B2CE + movs r0, #0xb + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #0 + str r0, [r4, #0x20] + ldr r0, [r4, #0x74] + adds r0, #0x7e + movs r1, #0xe1 + lsls r1, r1, #3 + strh r1, [r0] + ldr r0, [r4, #0x78] + adds r0, #0x7e + strh r1, [r0] + b _0803B2CE +_0803B2B8: + adds r1, r5, #0 + adds r1, #0x7e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803B2CE + adds r0, r5, #0 + bl sub_0803B6A4 +_0803B2CE: + pop {r4, r5, pc} + + thumb_func_start sub_0803B2D0 +sub_0803B2D0: @ 0x0803B2D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803B30A + movs r2, #0 + movs r0, #0x2d + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x31 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x74] + movs r1, #2 + strb r1, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x74 + strb r2, [r1] + adds r1, #4 + strh r2, [r1] + movs r1, #3 + bl sub_08004260 +_0803B30A: + pop {r4, pc} + + thumb_func_start sub_0803B30C +sub_0803B30C: @ 0x0803B30C + push {r4, lr} + adds r2, r0, #0 + ldr r4, [r2, #0x74] + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803B334 + movs r0, #0x2e + strb r0, [r2, #0xc] + adds r0, r2, #0 + movs r1, #0x13 + bl sub_0803B8E8 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0803B334: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803B338 +sub_0803B338: @ 0x0803B338 + push {lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x36] + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #0xa + rsbs r0, r0, #0 + cmp r1, r0 + ble _0803B350 + subs r0, r3, #1 + strh r0, [r2, #0x36] + b _0803B358 +_0803B350: + movs r0, #0x2f + strb r0, [r2, #0xc] + movs r0, #0xf + strb r0, [r2, #0xe] +_0803B358: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803B35C +sub_0803B35C: @ 0x0803B35C + push {lr} + adds r3, r0, #0 + ldr r2, _0803B394 @ =gUnk_080CED6C + ldr r0, [r3, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r3, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r3, #0x36] + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803B390 + movs r0, #0x30 + strb r0, [r3, #0xc] +_0803B390: + pop {pc} + .align 2, 0 +_0803B394: .4byte gUnk_080CED6C + + thumb_func_start sub_0803B398 +sub_0803B398: @ 0x0803B398 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0803B3E8 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0803B4E4 + cmp r0, #0 + beq _0803B3EC + movs r0, #0x31 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #0x35 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + ldr r0, [r4, #0x54] + movs r1, #0 + bl sub_080042AC + b _0803B3F2 + .align 2, 0 +_0803B3E8: .4byte gUnk_080CED6C +_0803B3EC: + adds r0, r4, #0 + bl sub_0806F69C +_0803B3F2: + pop {r4, pc} + + thumb_func_start sub_0803B3F4 +sub_0803B3F4: @ 0x0803B3F4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _0803B440 @ =gUnk_080CED6C + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + lsrs r0, r0, #4 + adds r0, #3 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r0, r0, r1 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803B47C + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x17 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0803B448 + ldr r0, _0803B444 @ =gUnk_080FD35C + b _0803B44A + .align 2, 0 +_0803B440: .4byte gUnk_080CED6C +_0803B444: .4byte gUnk_080FD35C +_0803B448: + ldr r0, _0803B468 @ =gUnk_080FD36C +_0803B44A: + str r0, [r4, #0x48] + ldr r0, [r4, #0x50] + ldrb r2, [r4, #0xa] + movs r1, #2 + cmp r2, #0 + bne _0803B458 + movs r1, #1 +_0803B458: + adds r0, #0x80 + ldrb r3, [r0] + adds r5, r0, #0 + cmp r2, #0 + bne _0803B46C + movs r0, #0x10 + b _0803B46E + .align 2, 0 +_0803B468: .4byte gUnk_080FD36C +_0803B46C: + movs r0, #0x20 +_0803B46E: + orrs r1, r0 + adds r0, r3, #0 + bics r0, r1 + strb r0, [r5] + adds r0, r4, #0 + bl sub_0803B59C +_0803B47C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803B480 +sub_0803B480: @ 0x0803B480 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7e + ldrh r1, [r0] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0803B4B6 + movs r0, #0x2d + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0803B4B6 + ldr r0, _0803B4D0 @ =gUnk_080CFD08 + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + adds r0, r4, #0 + adds r1, r3, #0 + movs r3, #0 + bl sub_0806FA48 +_0803B4B6: + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803B4CC + adds r0, r4, #0 + bl sub_0803B6A4 +_0803B4CC: + pop {r4, pc} + .align 2, 0 +_0803B4D0: .4byte gUnk_080CFD08 + + thumb_func_start sub_0803B4D4 +sub_0803B4D4: @ 0x0803B4D4 + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #0x10 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803B4E4 +sub_0803B4E4: @ 0x0803B4E4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x50] + movs r0, #0x2e + ldrsh r3, [r2, r0] + ldr r1, _0803B52C @ =gUnk_080CFD0A + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r5, r3, r0 + movs r1, #0x32 + ldrsh r0, [r2, r1] + adds r6, r0, #0 + adds r6, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + movs r3, #2 + bl sub_0806FCB8 + cmp r0, #0 + bne _0803B530 + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r5, #0 + adds r3, r6, #0 + bl sub_080045D4 + strb r0, [r4, #0x15] + movs r0, #0 + b _0803B536 + .align 2, 0 +_0803B52C: .4byte gUnk_080CFD0A +_0803B530: + strh r5, [r4, #0x2e] + strh r6, [r4, #0x32] + movs r0, #1 +_0803B536: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0803B538 +sub_0803B538: @ 0x0803B538 + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x54] + ldr r3, _0803B554 @ =0xFFFF0000 + movs r2, #0 + bl sub_0806FA48 + ldr r1, [r4, #0x74] + ldr r3, _0803B558 @ =0xFFFE0000 + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 + pop {r4, pc} + .align 2, 0 +_0803B554: .4byte 0xFFFF0000 +_0803B558: .4byte 0xFFFE0000 + + thumb_func_start sub_0803B55C +sub_0803B55C: @ 0x0803B55C + push {r4, r5, lr} + ldr r5, [r0, #0x74] + ldr r4, [r0, #0x54] + adds r0, r4, #0 + bl sub_080042B8 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0803B588 + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #1 + beq _0803B59A + adds r0, r5, #0 + movs r1, #1 + bl sub_08004260 + b _0803B59A +_0803B588: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + beq _0803B59A + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 +_0803B59A: + pop {r4, r5, pc} + + thumb_func_start sub_0803B59C +sub_0803B59C: @ 0x0803B59C + push {lr} + movs r3, #2 + strb r3, [r0, #0xc] + ldr r2, [r0, #0x50] + adds r1, r2, #0 + adds r1, #0x7d + ldrb r1, [r1] + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _0803B5B6 + movs r0, #1 + orrs r1, r0 + b _0803B5B8 +_0803B5B6: + orrs r1, r3 +_0803B5B8: + adds r0, r2, #0 + adds r0, #0x7d + strb r1, [r0] + pop {pc} + + thumb_func_start sub_0803B5C0 +sub_0803B5C0: @ 0x0803B5C0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803B5E8 @ =gLinkEntity + bl sub_080045C4 + adds r2, r0, #0 + cmp r2, #9 + bhi _0803B5D2 + movs r2, #0xa +_0803B5D2: + cmp r2, #0x16 + bls _0803B5D8 + movs r2, #0x16 +_0803B5D8: + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0803B5F0 + ldr r1, _0803B5EC @ =gUnk_080CFD0C + adds r0, r2, #0 + subs r0, #0xa + b _0803B5F6 + .align 2, 0 +_0803B5E8: .4byte gLinkEntity +_0803B5EC: .4byte gUnk_080CFD0C +_0803B5F0: + ldr r1, _0803B60C @ =gUnk_080CFD0C + movs r0, #0x16 + subs r0, r0, r2 +_0803B5F6: + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, r1 + beq _0803B60A + adds r0, r4, #0 + bl sub_08004260 +_0803B60A: + pop {r4, pc} + .align 2, 0 +_0803B60C: .4byte gUnk_080CFD0C + + thumb_func_start sub_0803B610 +sub_0803B610: @ 0x0803B610 + push {r4, lr} + ldr r4, _0803B634 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r4, r2] + ldr r3, _0803B638 @ =gUnk_080CFD19 + ldrb r2, [r0, #0xa] + adds r2, r2, r3 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r2, #0xc + movs r3, #8 + bl sub_0806FCB8 + pop {r4, pc} + .align 2, 0 +_0803B634: .4byte gLinkEntity +_0803B638: .4byte gUnk_080CFD19 + + thumb_func_start sub_0803B63C +sub_0803B63C: @ 0x0803B63C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _0803B680 @ =gLinkEntity + movs r0, #0x2e + ldrsh r3, [r2, r0] + ldr r1, _0803B684 @ =gUnk_080CFD19 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r3, r3, r0 + movs r1, #0x32 + ldrsh r0, [r2, r1] + adds r5, r0, #0 + subs r5, #0xc + ldrb r0, [r4, #0xe] + adds r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb4 + bls _0803B688 + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r3, #0 + adds r3, r5, #0 + bl sub_080045D4 + strb r0, [r4, #0x15] + b _0803B6A0 + .align 2, 0 +_0803B680: .4byte gLinkEntity +_0803B684: .4byte gUnk_080CFD19 +_0803B688: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r3, #0 + adds r3, r5, #0 + bl sub_080045D4 + + thumb_func_start sub_0803B698 +sub_0803B698: @ 0x0803B698 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_0803B6A0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803B6A4 +sub_0803B6A4: @ 0x0803B6A4 + push {r4, lr} + adds r2, r0, #0 + movs r0, #0x2c + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x14 + strb r0, [r1] + ldr r3, [r2, #0x50] + adds r0, r3, #0 + adds r0, #0x80 + ldrb r1, [r0] + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _0803B6C6 + movs r0, #0x10 + b _0803B6C8 +_0803B6C6: + movs r0, #0x20 +_0803B6C8: + orrs r1, r0 + adds r0, r3, #0 + adds r0, #0x80 + strb r1, [r0] + ldrb r3, [r0] + ldrb r1, [r2, #0xa] + adds r4, r0, #0 + cmp r1, #0 + bne _0803B6E0 + movs r0, #5 + rsbs r0, r0, #0 + b _0803B6E4 +_0803B6E0: + movs r0, #9 + rsbs r0, r0, #0 +_0803B6E4: + ands r0, r3 + strb r0, [r4] + adds r0, r2, #0 + movs r1, #0x17 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803B6F4 +sub_0803B6F4: @ 0x0803B6F4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _0803B710 + adds r0, r2, #0 + adds r0, #0x80 + ldrh r1, [r0] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r1, r0 + ble _0803B71E +_0803B70C: + movs r0, #1 + b _0803B720 +_0803B710: + adds r0, r2, #0 + adds r0, #0x80 + ldrh r1, [r0] + movs r3, #0x2e + ldrsh r0, [r2, r3] + cmp r1, r0 + blt _0803B70C +_0803B71E: + movs r0, #0 +_0803B720: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803B724 +sub_0803B724: @ 0x0803B724 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xf] + cmp r0, #2 + bhi _0803B78E + adds r6, r5, #0 + adds r6, #0x84 + ldrb r0, [r6] + cmp r0, #0 + beq _0803B78E + movs r0, #7 + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _0803B78E + movs r0, #1 + strb r0, [r4, #0xb] + bl sub_08000E50 + ldr r2, _0803B790 @ =gUnk_080CFD1B + ldrb r1, [r5, #0xa] + adds r1, r1, r2 + movs r3, #0x70 + adds r2, r0, #0 + ands r2, r3 + ldrb r1, [r1] + adds r2, r2, r1 + ldr r3, _0803B794 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + adds r1, r1, r2 + strh r1, [r4, #0x2e] + lsrs r0, r0, #0x10 + movs r1, #7 + ands r0, r1 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, #0x5c + ldrh r3, [r3, #8] + adds r1, r1, r3 + strh r1, [r4, #0x32] + str r5, [r4, #0x50] + adds r0, r4, #0 + bl sub_08016A30 + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] + ldrb r0, [r6] + subs r0, #1 + strb r0, [r6] +_0803B78E: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803B790: .4byte gUnk_080CFD1B +_0803B794: .4byte gUnk_03000BF0 + + thumb_func_start sub_0803B798 +sub_0803B798: @ 0x0803B798 + ldr r2, _0803B7F4 @ =gUnk_03003F80 + movs r1, #0 + movs r0, #0x41 + strb r0, [r2, #2] + strb r1, [r2, #0xa] + ldr r0, [r2, #0x30] + ldr r1, _0803B7F8 @ =0x0000FFEF + ands r0, r1 + str r0, [r2, #0x30] + ldr r3, _0803B7FC @ =gLinkEntity + ldrb r1, [r3, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r3, #0x10] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r3, #0x20] + movs r2, #0 + ldr r0, _0803B800 @ =0x0000FFF6 + strh r0, [r3, #0x36] + movs r0, #0x10 + strb r0, [r3, #0x15] + movs r0, #4 + strb r0, [r3, #0x14] + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + ldrb r1, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x63 + strb r2, [r0] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r3, #0x24] + adds r1, r3, #0 + adds r1, #0x3d + movs r0, #0xe2 + strb r0, [r1] + bx lr + .align 2, 0 +_0803B7F4: .4byte gUnk_03003F80 +_0803B7F8: .4byte 0x0000FFEF +_0803B7FC: .4byte gLinkEntity +_0803B800: .4byte 0x0000FFF6 + + thumb_func_start sub_0803B804 +sub_0803B804: @ 0x0803B804 + push {r4, lr} + ldr r4, _0803B820 @ =gLinkEntity + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0x1e + strb r0, [r1] + subs r0, #0x22 + bl sub_080526A0 + adds r0, r4, #0 + movs r1, #0x7a + bl sub_0800449C + pop {r4, pc} + .align 2, 0 +_0803B820: .4byte gLinkEntity + + thumb_func_start sub_0803B824 +sub_0803B824: @ 0x0803B824 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08077B2C + ldr r2, _0803B864 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1a] + ldr r4, _0803B868 @ =gLinkEntity + ldr r1, _0803B86C @ =gUnk_080CFD1D + ldrb r0, [r5, #0xa] + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #1 + bl sub_0806FA90 + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xfa + strb r0, [r1] + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4] + pop {r4, r5, pc} + .align 2, 0 +_0803B864: .4byte gUnk_03003F80 +_0803B868: .4byte gLinkEntity +_0803B86C: .4byte gUnk_080CFD1D + + thumb_func_start sub_0803B870 +sub_0803B870: @ 0x0803B870 + push {r4, lr} + adds r3, r0, #0 + ldr r4, [r3, #0x54] + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803B8DC + ldr r0, _0803B8D4 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0803B8DC + movs r0, #0x18 + strb r0, [r3, #0xc] + movs r0, #0x44 + strb r0, [r3, #0xe] + ldrb r1, [r3, #0x18] + subs r0, #0x48 + ands r0, r1 + strb r0, [r3, #0x18] + ldr r1, _0803B8D8 @ =gLinkEntity + ldrb r2, [r1, #0x10] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #0x10] + adds r1, #0x3d + movs r0, #0xf0 + strb r0, [r1] + adds r0, r3, #0 + bl sub_0803B824 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x13 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC + movs r0, #0xb7 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #1 + b _0803B8E6 + .align 2, 0 +_0803B8D4: .4byte gUnk_03003F80 +_0803B8D8: .4byte gLinkEntity +_0803B8DC: + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x15 + strb r0, [r1] + movs r0, #0 +_0803B8E6: + pop {r4, pc} + + thumb_func_start sub_0803B8E8 +sub_0803B8E8: @ 0x0803B8E8 + ldr r2, [r0, #0x54] + adds r2, #0x3f + strb r1, [r2] + ldr r2, [r0, #0x74] + adds r0, r2, #0 + adds r0, #0x3f + strb r1, [r0] + bx lr + + thumb_func_start sub_0803B8F8 +sub_0803B8F8: @ 0x0803B8F8 + push {lr} + ldr r2, _0803B90C @ =gUnk_080CFD20 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803B90C: .4byte gUnk_080CFD20 + + thumb_func_start sub_0803B910 +sub_0803B910: @ 0x0803B910 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0803B940 @ =gUnk_030010A0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _0803B944 + movs r2, #0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x74 + strb r2, [r0] + adds r0, r4, #0 + movs r1, #0xa + bl sub_0803BA8C + b _0803B950 + .align 2, 0 +_0803B940: .4byte gUnk_030010A0 +_0803B944: + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #0x80 + strb r0, [r1] +_0803B950: + ldrb r1, [r4, #0xa] + subs r1, #2 + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + pop {r4, pc} + + thumb_func_start sub_0803B978 +sub_0803B978: @ 0x0803B978 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #5 + bhi _0803BA34 + lsls r0, r0, #2 + ldr r1, _0803B98C @ =_0803B990 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803B98C: .4byte _0803B990 +_0803B990: @ jump table + .4byte _0803BA66 @ case 0 + .4byte _0803B9A8 @ case 1 + .4byte _0803B9C0 @ case 2 + .4byte _0803BA46 @ case 3 + .4byte _0803BA14 @ case 4 + .4byte _0803BA40 @ case 5 +_0803B9A8: + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x74 + strb r1, [r0] + ldr r0, _0803BA10 @ =0x000001A9 + bl sub_080A3268 +_0803B9C0: + ldrb r1, [r4, #0xf] + adds r0, r4, #0 + bl sub_0803BA8C + adds r0, r4, #0 + adds r0, #0x75 + adds r5, r4, #0 + adds r5, #0x74 + ldrb r1, [r0] + ldrb r0, [r5] + orrs r0, r1 + cmp r0, #0 + bne _0803B9E0 + ldr r0, _0803BA10 @ =0x000001A9 + bl sub_080A3268 +_0803B9E0: + ldrb r0, [r5] + cmp r0, #0 + bne _0803BA66 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803BA66 + movs r0, #2 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + subs r0, #4 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bne _0803BA66 + ldr r0, [r4, #0x50] + ldr r1, [r0, #0x50] + movs r0, #3 + strb r0, [r1, #0xd] + strb r0, [r4, #0xd] + b _0803BA66 + .align 2, 0 +_0803BA10: .4byte 0x000001A9 +_0803BA14: + movs r0, #5 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #9 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x19] + b _0803BA46 +_0803BA34: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x19] + subs r0, #0xf + ands r0, r1 + strb r0, [r4, #0x19] +_0803BA40: + adds r0, r4, #0 + bl sub_08004274 +_0803BA46: + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0803BA8C + adds r1, r4, #0 + adds r1, #0x75 + adds r0, r4, #0 + adds r0, #0x74 + ldrb r1, [r1] + ldrb r0, [r0] + orrs r0, r1 + cmp r0, #0 + bne _0803BA66 + ldr r0, _0803BA68 @ =0x000001A9 + bl sub_080A3268 +_0803BA66: + pop {r4, r5, pc} + .align 2, 0 +_0803BA68: .4byte 0x000001A9 + + thumb_func_start sub_0803BA6C +sub_0803BA6C: @ 0x0803BA6C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xa + bl sub_0803BA8C + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803BA80 +sub_0803BA80: @ 0x0803BA80 + push {lr} + movs r1, #0xa + bl sub_0803BA8C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803BA8C +sub_0803BA8C: @ 0x0803BA8C + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r1, #0 + adds r4, r6, #0 + adds r4, #0x74 + ldrb r3, [r4] + movs r2, #0xe0 + ands r2, r3 + cmp r2, #0 + bne _0803BAEC + cmp r3, #0 + bne _0803BAD2 + adds r2, r6, #0 + adds r2, #0x75 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #9 + bls _0803BABA + strb r1, [r2] +_0803BABA: + ldrb r0, [r6, #0xa] + cmp r0, #2 + bne _0803BAC8 + ldr r1, _0803BAC4 @ =gUnk_080CFD30 + b _0803BACA + .align 2, 0 +_0803BAC4: .4byte gUnk_080CFD30 +_0803BAC8: + ldr r1, _0803BAE8 @ =gUnk_080CFD44 +_0803BACA: + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] +_0803BAD2: + adds r2, r6, #0 + adds r2, #0x74 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + cmp r5, r0 + bhi _0803BB18 + movs r0, #0 + strb r0, [r2] + b _0803BB18 + .align 2, 0 +_0803BAE8: .4byte gUnk_080CFD44 +_0803BAEC: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _0803BB18 + movs r0, #0x80 + orrs r0, r3 + strb r0, [r4] + movs r0, #0x20 + ands r2, r0 + cmp r2, #0 + beq _0803BB0C + ldr r1, _0803BB08 @ =gUnk_080CFD58 + b _0803BB0E + .align 2, 0 +_0803BB08: .4byte gUnk_080CFD58 +_0803BB0C: + ldr r1, _0803BB78 @ =gUnk_080CFD5C +_0803BB0E: + ldrb r0, [r6, #0xa] + subs r0, #2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] +_0803BB18: + cmp r1, #0 + beq _0803BB74 + adds r0, r6, #0 + bl sub_0801D2B4 + ldr r0, [r6, #0x50] + ldr r4, [r0, #0x78] + ldrb r1, [r6, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldr r0, [r6, #0x50] + ldr r5, [r0, #0x78] + ldrb r1, [r6, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x18 + ldrb r4, [r5, #0x1a] + movs r2, #0xf + adds r0, r2, #0 + ands r0, r4 + orrs r0, r1 + strb r0, [r5, #0x1a] + ldr r0, [r6, #0x50] + ldr r4, [r0, #0x54] + ldrb r0, [r6, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r1, [r4, #0x1a] + ands r3, r1 + orrs r3, r0 + strb r3, [r4, #0x1a] + ldr r0, [r6, #0x50] + ldr r3, [r0, #0x54] + ldrb r0, [r6, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x18 + ldrb r1, [r3, #0x1a] + ands r2, r1 + orrs r2, r0 + strb r2, [r3, #0x1a] +_0803BB74: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803BB78: .4byte gUnk_080CFD5C + + thumb_func_start sub_0803BB7C +sub_0803BB7C: @ 0x0803BB7C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0803BB94 @ =gUnk_080CFF3C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0803BB94: .4byte gUnk_080CFF3C + + thumb_func_start sub_0803BB98 +sub_0803BB98: @ 0x0803BB98 + push {lr} + ldr r2, _0803BBAC @ =gUnk_080CFF54 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803BBAC: .4byte gUnk_080CFF54 + + thumb_func_start sub_0803BBB0 +sub_0803BBB0: @ 0x0803BBB0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0803BC2C + movs r5, #0x7f + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _0803BC06 + adds r0, r4, #0 + bl sub_0803C0AC + ldrb r1, [r4, #0x10] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r2, [r4, #0x15] + adds r0, r2, #4 + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0803BBF6 + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _0803BBF2 + adds r0, r2, #2 + b _0803BBF4 +_0803BBF2: + subs r0, r2, #2 +_0803BBF4: + strb r0, [r4, #0x15] +_0803BBF6: + ldrb r1, [r4, #0x15] + movs r0, #0x20 + subs r0, r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0803BF2C + b _0803BC1E +_0803BC06: + adds r0, r4, #0 + adds r0, #0x3d + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0803BC1E + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] +_0803BC1E: + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r1] + cmp r0, #0x10 + bls _0803BC2C + subs r0, #0xc + strh r0, [r1] +_0803BC2C: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + + thumb_func_start sub_0803BC34 +sub_0803BC34: @ 0x0803BC34 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0803BC78 @ =gUnk_080CFF6C + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + bne _0803BC74 + movs r1, #2 + strb r1, [r4, #0xc] + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x84 + strb r1, [r0] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0xe0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0803BF2C +_0803BC74: + pop {r4, pc} + .align 2, 0 +_0803BC78: .4byte gUnk_080CFF6C + + thumb_func_start sub_0803BC7C +sub_0803BC7C: @ 0x0803BC7C + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0803BC88 +sub_0803BC88: @ 0x0803BC88 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0803BC90 +sub_0803BC90: @ 0x0803BC90 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0803BCA2 + adds r0, r4, #0 + bl sub_0804A7D4 +_0803BCA2: + pop {r4, pc} + + thumb_func_start sub_0803BCA4 +sub_0803BCA4: @ 0x0803BCA4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_0804A720 + movs r4, #0 + movs r5, #1 + strb r5, [r6, #0xc] + strb r4, [r6, #0xf] + adds r0, r6, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r6, #0x15] + adds r0, r6, #0 + adds r0, #0x80 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + strb r5, [r6, #0x1c] + adds r2, r6, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r1, r6, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + ldrb r1, [r6, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r6, #0x1b] + ldrh r1, [r6, #0x2e] + adds r0, r6, #0 + adds r0, #0x78 + strh r1, [r0] + ldrh r0, [r6, #0x32] + adds r1, r6, #0 + adds r1, #0x7a + strh r0, [r1] + adds r0, r6, #0 + bl sub_08016A04 + adds r0, r6, #0 + bl sub_0803BF2C + pop {r4, r5, r6, pc} + + thumb_func_start sub_0803BD08 +sub_0803BD08: @ 0x0803BD08 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0803BD2C + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + bne _0803BD80 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] +_0803BD2C: + adds r0, r4, #0 + bl sub_0803BEE8 + adds r0, r4, #0 + bl sub_08004274 + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _0803BD80 + ldr r5, _0803BD84 @ =gUnk_020000B0 + ldr r1, [r5] + adds r0, r4, #0 + movs r2, #0x88 + movs r3, #0x50 + bl sub_080041A0 + cmp r0, #0 + beq _0803BD80 + ldr r0, [r5] + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r2, #0x32 + ldrsh r0, [r4, r2] + adds r0, #8 + cmp r1, r0 + ble _0803BD80 + movs r1, #0 + movs r2, #2 + strb r2, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x84 + strb r1, [r0] + movs r0, #0x10 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x81 + strb r2, [r0] + adds r0, r4, #0 + bl sub_0803BF2C +_0803BD80: + pop {r4, r5, pc} + .align 2, 0 +_0803BD84: .4byte gUnk_020000B0 + + thumb_func_start sub_0803BD88 +sub_0803BD88: @ 0x0803BD88 + push {lr} + bl sub_0803BF70 + pop {pc} + + thumb_func_start sub_0803BD90 +sub_0803BD90: @ 0x0803BD90 + push {r4, lr} + adds r4, r0, #0 + bl sub_080040A8 + cmp r0, #0 + bne _0803BDC8 + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #8 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + movs r0, #8 + strb r0, [r4, #0xe] + b _0803BDD4 +_0803BDC8: + adds r0, r4, #0 + bl sub_0803BF48 + adds r0, r4, #0 + bl sub_08004274 +_0803BDD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803BDD8 +sub_0803BDD8: @ 0x0803BDD8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803BE76 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803BDFE + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0803BE06 +_0803BDFE: + adds r0, r4, #0 + bl sub_0803C120 + b _0803BE70 +_0803BE06: + ldrb r1, [r4, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0803BE20 + movs r0, #8 + strb r0, [r4, #0x15] + ldr r1, _0803BE1C @ =gUnk_03000BF0 + ldrh r0, [r1, #0xa] + subs r0, #0x20 + b _0803BE30 + .align 2, 0 +_0803BE1C: .4byte gUnk_03000BF0 +_0803BE20: + movs r0, #0x18 + strb r0, [r4, #0x15] + ldr r1, _0803BE78 @ =gUnk_03000BF0 + movs r2, #0x88 + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r2, [r1, #0xa] + adds r0, r0, r2 +_0803BE30: + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0xc] + adds r0, #8 + strh r0, [r4, #0x32] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #2 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x84 + movs r0, #1 + strb r0, [r1] + movs r0, #0x18 + strb r0, [r4, #0xe] + subs r1, #2 + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1] + adds r0, #0x94 + strh r0, [r4, #0x24] + subs r1, #1 + movs r0, #4 + strb r0, [r1] +_0803BE70: + adds r0, r4, #0 + bl sub_0803BF2C +_0803BE76: + pop {r4, pc} + .align 2, 0 +_0803BE78: .4byte gUnk_03000BF0 + + thumb_func_start sub_0803BE7C +sub_0803BE7C: @ 0x0803BE7C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080040A8 + adds r5, r0, #0 + cmp r5, #0 + bne _0803BEE6 + movs r2, #1 + movs r3, #1 + strb r3, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #8 + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x80 + strb r5, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x81 + strb r5, [r0] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + bl sub_0803BF2C +_0803BEE6: + pop {r4, r5, pc} + + thumb_func_start sub_0803BEE8 +sub_0803BEE8: @ 0x0803BEE8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803BF28 + ldrb r0, [r4, #0x15] + adds r5, r4, #0 + adds r5, #0x80 + strb r0, [r5] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + cmp r0, #0xff + beq _0803BF0E + strb r0, [r4, #0x15] +_0803BF0E: + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r2, [r5] + movs r0, #0x10 + adds r1, r0, #0 + ands r1, r2 + ldrb r2, [r4, #0x15] + ands r0, r2 + cmp r1, r0 + beq _0803BF28 + adds r0, r4, #0 + bl sub_0803BF2C +_0803BF28: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803BF2C +sub_0803BF2C: @ 0x0803BF2C + push {lr} + ldrb r2, [r0, #0x15] + movs r1, #0x10 + ands r1, r2 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1c + adds r2, r0, #0 + adds r2, #0x81 + ldrb r2, [r2] + adds r1, r1, r2 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803BF48 +sub_0803BF48: @ 0x0803BF48 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + pop {r4, pc} + + thumb_func_start sub_0803BF70 +sub_0803BF70: @ 0x0803BF70 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x84 + ldrb r0, [r2] + cmp r0, #1 + beq _0803BFC0 + cmp r0, #1 + bgt _0803BF88 + cmp r0, #0 + beq _0803BF8E + b _0803C0A2 +_0803BF88: + cmp r0, #2 + beq _0803BFEA + b _0803C0A2 +_0803BF8E: + ldrb r1, [r5, #0xe] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0803BFA0 + ldrh r0, [r5, #0x36] + subs r0, #1 + strh r0, [r5, #0x36] +_0803BFA0: + subs r0, r1, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803C0A2 + strb r3, [r2] + movs r0, #0x18 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #2 + b _0803BFE0 +_0803BFC0: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803C0A2 + movs r0, #2 + strb r0, [r2] + movs r0, #8 + strb r0, [r5, #0xe] + movs r0, #0xe0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #4 +_0803BFE0: + strb r0, [r1] + adds r0, r5, #0 + bl sub_0803BF2C + b _0803C0A2 +_0803BFEA: + adds r1, r5, #0 + adds r1, #0x82 + ldrh r0, [r1] + subs r0, #1 + movs r3, #0 + strh r0, [r1] + lsls r0, r0, #0x10 + adds r6, r1, #0 + cmp r0, #0 + bne _0803C02C + movs r0, #3 + strb r0, [r5, #0xc] + strb r3, [r2] + strb r3, [r5, #0xe] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + ldrb r2, [r5, #0x15] + adds r0, r2, #0 + adds r0, #0x18 + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0803C024 + movs r0, #0x10 + subs r0, r0, r2 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] +_0803C024: + adds r0, r5, #0 + bl sub_0803BF2C + b _0803C09C +_0803C02C: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803C09C + movs r0, #8 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x15] + adds r4, r5, #0 + adds r4, #0x80 + strb r0, [r4] + adds r0, r5, #0 + movs r1, #1 + bl sub_08049F84 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_08004596 + ldrb r3, [r5, #0x15] + adds r0, r3, #0 + adds r0, #0x18 + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0803C07E + ldrb r0, [r4] + cmp r0, #0x10 + bne _0803C076 + ands r3, r0 + cmp r3, #0 + beq _0803C072 + movs r0, #0x12 + b _0803C074 +_0803C072: + movs r0, #0xe +_0803C074: + strb r0, [r4] +_0803C076: + ldrb r0, [r4] + strb r0, [r5, #0x15] + movs r0, #1 + strh r0, [r6] +_0803C07E: + ldrb r2, [r4] + movs r0, #0x10 + adds r1, r0, #0 + ands r1, r2 + lsls r1, r1, #0x18 + ldrb r2, [r5, #0x15] + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x1c + cmp r1, r0 + beq _0803C09C + adds r1, r2, #4 + adds r0, r5, #0 + bl sub_08004260 +_0803C09C: + adds r0, r5, #0 + bl sub_0803BF48 +_0803C0A2: + adds r0, r5, #0 + bl sub_08004274 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0803C0AC +sub_0803C0AC: @ 0x0803C0AC + push {r4, r5, r6, lr} + movs r0, #1 + bl sub_08049DF4 + adds r5, r0, #0 + cmp r5, #0 + beq _0803C11C + ldr r0, _0803C0D4 @ =gUnk_02002A40 + adds r0, #0xc0 + ldrh r1, [r0] + ldr r0, _0803C0D8 @ =0x000001F3 + cmp r1, r0 + bls _0803C0DC + movs r6, #0x56 + movs r4, #5 + movs r0, #0x64 + rsbs r0, r0, #0 + bl sub_080526CC + b _0803C118 + .align 2, 0 +_0803C0D4: .4byte gUnk_02002A40 +_0803C0D8: .4byte 0x000001F3 +_0803C0DC: + cmp r1, #0x63 + bls _0803C0EE + movs r6, #0x55 + movs r4, #5 + movs r0, #0x19 + rsbs r0, r0, #0 + bl sub_080526CC + b _0803C118 +_0803C0EE: + movs r6, #0x54 + adds r4, r1, #0 + cmp r4, #4 + bls _0803C0F8 + movs r4, #5 +_0803C0F8: + rsbs r0, r4, #0 + bl sub_080526CC + b _0803C118 +_0803C100: + movs r0, #0x1a + adds r1, r6, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0803C116 + adds r0, r5, #0 + bl sub_0806FA24 +_0803C116: + subs r4, #1 +_0803C118: + cmp r4, #0 + bne _0803C100 +_0803C11C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0803C120 +sub_0803C120: @ 0x0803C120 + adds r2, r0, #0 + movs r0, #5 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + subs r0, #9 + ands r0, r1 + strb r0, [r2, #0x18] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + adds r0, r2, #0 + adds r0, #0x78 + ldrh r0, [r0] + strh r0, [r2, #0x2e] + adds r0, r2, #0 + adds r0, #0x7a + ldrh r0, [r0] + strh r0, [r2, #0x32] + ldrh r0, [r2, #0x36] + adds r0, #8 + strh r0, [r2, #0x36] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + bx lr + .align 2, 0 + + thumb_func_start sub_0803C160 +sub_0803C160: @ 0x0803C160 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803C17C @ =gUnk_080CFF78 + bl sub_0800129E + movs r3, #0x18 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0803C17C: .4byte gUnk_080CFF78 + + thumb_func_start sub_0803C180 +sub_0803C180: @ 0x0803C180 + push {lr} + ldr r2, _0803C194 @ =gUnk_080CFF90 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803C194: .4byte gUnk_080CFF90 + + thumb_func_start sub_0803C198 +sub_0803C198: @ 0x0803C198 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0803C1AC + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0803C1AC: + ldr r1, _0803C1D8 @ =gUnk_080CFF78 + adds r0, r4, #0 + bl sub_0804AA30 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803C1D4 + adds r0, r4, #0 + bl sub_0803C5F0 + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _0803C1D4 + ldrb r0, [r1, #0xf] + adds r0, #1 + strb r0, [r1, #0xf] +_0803C1D4: + pop {r4, pc} + .align 2, 0 +_0803C1D8: .4byte gUnk_080CFF78 + + thumb_func_start nullsub_168 +nullsub_168: @ 0x0803C1DC + bx lr + .align 2, 0 + + thumb_func_start sub_0803C1E0 +sub_0803C1E0: @ 0x0803C1E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + movs r1, #0 + movs r2, #1 + strb r2, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x7b + strb r1, [r0] + adds r0, #5 + strb r1, [r0] + adds r0, #3 + strb r1, [r0] + subs r0, #2 + strb r1, [r0] + subs r0, #7 + strb r1, [r0] + adds r0, #8 + strb r2, [r0] + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0803C228 + ldrb r1, [r4, #0xb] + lsls r0, r1, #1 + strb r0, [r4, #0x14] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + lsls r1, r1, #3 + strb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_0803C690 + b _0803C232 +_0803C228: + movs r0, #0x10 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0803C4B0 +_0803C232: + pop {r4, pc} + + thumb_func_start sub_0803C234 +sub_0803C234: @ 0x0803C234 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x81 + ldrb r0, [r1] + cmp r0, #0 + beq _0803C246 + subs r0, #1 + strb r0, [r1] +_0803C246: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803C292 + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + adds r2, r0, #1 + strb r2, [r1] + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0xf + bls _0803C26E + adds r0, r4, #0 + bl sub_0803C5C4 + b _0803C2D2 +_0803C26E: + movs r0, #3 + ands r2, r0 + cmp r2, #0 + bne _0803C28A + bl sub_08000E50 + movs r1, #0x10 + ands r1, r0 + cmp r1, #0 + beq _0803C28A + adds r0, r4, #0 + bl sub_0803C624 + b _0803C2D2 +_0803C28A: + adds r0, r4, #0 + bl sub_0803C4B0 + b _0803C2D2 +_0803C292: + adds r0, r4, #0 + bl sub_0803C6F8 + cmp r0, #0 + beq _0803C2C2 + ldrh r1, [r4, #0x2a] + adds r0, r4, #0 + bl sub_0800417E + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x83 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803C690 + b _0803C2D2 +_0803C2C2: + adds r0, r4, #0 + bl sub_0803C568 + cmp r0, #0 + beq _0803C2D2 + adds r0, r4, #0 + bl sub_0803C5F0 +_0803C2D2: + adds r0, r4, #0 + bl sub_0803C6DC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803C2DC +sub_0803C2DC: @ 0x0803C2DC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0803C308 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x82 + strb r1, [r0] + subs r0, #2 + strb r1, [r0] + movs r0, #0x10 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0803C4B0 + b _0803C31E +_0803C308: + adds r0, r4, #0 + bl sub_0803C568 + cmp r0, #0 + beq _0803C31E + adds r2, r4, #0 + adds r2, #0x7b + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_0803C31E: + ldrb r0, [r4, #0xf] + cmp r0, #0xb + bls _0803C336 + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0 + beq _0803C33A + adds r0, r4, #0 + bl sub_0803C5F0 + b _0803C33A +_0803C336: + adds r0, #1 + strb r0, [r4, #0xf] +_0803C33A: + adds r0, r4, #0 + bl sub_0803C6DC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803C344 +sub_0803C344: @ 0x0803C344 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803C3F8 + adds r0, r4, #0 + adds r0, #0x82 + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #5 + bhi _0803C3C8 + lsls r0, r1, #2 + ldr r1, _0803C36C @ =_0803C370 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803C36C: .4byte _0803C370 +_0803C370: @ jump table + .4byte _0803C3C8 @ case 0 + .4byte _0803C3C8 @ case 1 + .4byte _0803C3A6 @ case 2 + .4byte _0803C388 @ case 3 + .4byte _0803C3BE @ case 4 + .4byte _0803C39C @ case 5 +_0803C388: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + b _0803C3E2 +_0803C39C: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x80 + strh r0, [r4, #0x24] + b _0803C3E2 +_0803C3A6: + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strh r1, [r4, #0x24] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0x40 + b _0803C3E0 +_0803C3BE: + ldrb r0, [r4, #0x15] + adds r0, #0x10 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] +_0803C3C8: + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r2] + movs r0, #0x80 + strh r0, [r4, #0x24] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #0x22 +_0803C3E0: + strb r1, [r4, #0xe] +_0803C3E2: + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0803C690 +_0803C3F8: + adds r0, r4, #0 + bl sub_0803C6DC + pop {r4, pc} + + thumb_func_start sub_0803C400 +sub_0803C400: @ 0x0803C400 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + adds r1, r0, #0 + cmp r1, #0 + beq _0803C458 + subs r0, #1 + strb r0, [r4, #0xf] + movs r2, #0xff + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0803C4AC + adds r0, r4, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #3 + bne _0803C450 + adds r1, r4, #0 + adds r1, #0x7a + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ands r0, r2 + cmp r0, #2 + bhi _0803C450 + bl sub_08000E50 + movs r1, #0xc0 + ands r1, r0 + cmp r1, #0 + beq _0803C450 + strb r5, [r4, #0xe] + adds r0, r4, #0 + bl sub_0803C690 + adds r0, r4, #0 + bl sub_0803C6DC + b _0803C4AC +_0803C450: + adds r0, r4, #0 + bl sub_0803C634 + b _0803C4AC +_0803C458: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0803C46C + cmp r0, #0x18 + beq _0803C494 + b _0803C49A +_0803C46C: + ldrb r2, [r4, #0x14] + lsls r0, r2, #2 + strb r0, [r4, #0x15] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x19 + adds r0, r4, #0 + movs r1, #0xd + bl sub_0804A98C + adds r2, r0, #0 + cmp r2, #0 + beq _0803C49A + str r2, [r4, #0x54] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r2, #0x15] + str r4, [r2, #0x50] + b _0803C49A +_0803C494: + strb r1, [r4, #0xe] + movs r0, #0x20 + strb r0, [r4, #0xf] +_0803C49A: + adds r0, r4, #0 + bl sub_0803C6DC + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _0803C4AC + adds r0, r4, #0 + bl sub_0803C714 +_0803C4AC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803C4B0 +sub_0803C4B0: @ 0x0803C4B0 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r1, #0 + strb r1, [r5, #0xf] + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #1 + bne _0803C54C + bl sub_08000E50 + ldr r1, _0803C4F0 @ =gUnk_080CFFA4 + movs r7, #7 + ands r0, r7 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0xe] + movs r0, #0x80 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _0803C4F4 + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #6 + ands r4, r0 + lsls r0, r4, #2 + strb r0, [r5, #0x15] + b _0803C556 + .align 2, 0 +_0803C4F0: .4byte gUnk_080CFFA4 +_0803C4F4: + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + adds r6, r5, #0 + adds r6, #0x83 + ldrb r0, [r6] + cmp r0, #0 + bne _0803C520 + bl sub_08000E50 + ldr r2, _0803C51C @ =gUnk_080CFFAC + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r4, r4, r0 + b _0803C53E + .align 2, 0 +_0803C51C: .4byte gUnk_080CFFAC +_0803C520: + bl sub_08000E50 + ldr r1, _0803C548 @ =gUnk_080CFFAC + ands r0, r7 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r4, r4, r0 + ldrb r0, [r5, #0xe] + adds r0, #0x10 + strb r0, [r5, #0xe] + ldrb r0, [r6] + subs r0, #1 + strb r0, [r6] +_0803C53E: + adds r0, r4, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] + b _0803C554 + .align 2, 0 +_0803C548: .4byte gUnk_080CFFAC +_0803C54C: + movs r0, #0xc + strb r0, [r5, #0xe] + strh r1, [r5, #0x24] + ldrb r0, [r5, #0x15] +_0803C554: + lsrs r4, r0, #2 +_0803C556: + ldrb r0, [r5, #0x14] + cmp r4, r0 + beq _0803C564 + strb r4, [r5, #0x14] + adds r0, r5, #0 + bl sub_0803C690 +_0803C564: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0803C568 +sub_0803C568: @ 0x0803C568 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + bne _0803C5C0 + movs r0, #1 + bl sub_08049DF4 + adds r4, r0, #0 + cmp r4, #0 + beq _0803C5C0 + adds r0, r5, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #2 + bne _0803C598 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x30 + bl sub_0806FC80 + cmp r0, #0 + bne _0803C5BC +_0803C598: + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x40 + bl sub_0806FC80 + cmp r0, #0 + beq _0803C5C0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + ldrb r5, [r5, #0x14] + cmp r0, r5 + bne _0803C5C0 +_0803C5BC: + movs r0, #1 + b _0803C5C2 +_0803C5C0: + movs r0, #0 +_0803C5C2: + pop {r4, r5, pc} + + thumb_func_start sub_0803C5C4 +sub_0803C5C4: @ 0x0803C5C4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x83 + ldrb r0, [r1] + lsrs r0, r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803C664 + adds r4, #0x82 + movs r0, #2 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_0803C5F0 +sub_0803C5F0: @ 0x0803C5F0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049F84 + movs r2, #0 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x83 + strb r2, [r0] + subs r0, #9 + strb r2, [r0] + adds r0, r4, #0 + bl sub_0803C664 + adds r4, #0x82 + movs r0, #3 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803C624 +sub_0803C624: @ 0x0803C624 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803C664 + adds r4, #0x82 + movs r0, #5 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_0803C634 +sub_0803C634: @ 0x0803C634 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + movs r1, #0 + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x83 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0803C664 + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + strb r0, [r4, #0xe] + adds r4, #0x82 + movs r0, #4 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_0803C664 +sub_0803C664: @ 0x0803C664 + push {lr} + adds r2, r0, #0 + movs r1, #0 + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #0x20 + strb r0, [r2, #0xe] + strb r1, [r2, #0xf] + adds r0, r2, #0 + adds r0, #0x80 + strb r1, [r0] + subs r0, #5 + strb r1, [r0] + movs r0, #0 + strh r1, [r2, #0x24] + adds r1, r2, #0 + adds r1, #0x82 + strb r0, [r1] + adds r0, r2, #0 + bl sub_0803C690 + pop {pc} + + thumb_func_start sub_0803C690 +sub_0803C690: @ 0x0803C690 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0x14] + lsrs r2, r0, #1 + adds r0, r3, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #5 + bhi _0803C6D2 + lsls r0, r0, #2 + ldr r1, _0803C6AC @ =_0803C6B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803C6AC: .4byte _0803C6B0 +_0803C6B0: @ jump table + .4byte _0803C6D2 @ case 0 + .4byte _0803C6C8 @ case 1 + .4byte _0803C6D0 @ case 2 + .4byte _0803C6CC @ case 3 + .4byte _0803C6C8 @ case 4 + .4byte _0803C6CC @ case 5 +_0803C6C8: + adds r2, #4 + b _0803C6D2 +_0803C6CC: + adds r2, #8 + b _0803C6D2 +_0803C6D0: + adds r2, #0xc +_0803C6D2: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0803C6DC +sub_0803C6DC: @ 0x0803C6DC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + bne _0803C6EA + strh r0, [r4, #0x24] +_0803C6EA: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_0803C6F8 +sub_0803C6F8: @ 0x0803C6F8 + ldr r2, _0803C710 @ =gUnk_080CFFBC + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r0, #0x2a] + ldrh r1, [r1] + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bx lr + .align 2, 0 +_0803C710: .4byte gUnk_080CFFBC + + thumb_func_start sub_0803C714 +sub_0803C714: @ 0x0803C714 + push {lr} + ldr r1, [r0, #0x54] + ldrb r3, [r0, #0x14] + ldr r2, _0803C734 @ =gUnk_080CFFC4 + adds r3, r3, r2 + movs r2, #0 + ldrsb r2, [r3, r2] + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + bl sub_0806FA48 + pop {pc} + .align 2, 0 +_0803C734: .4byte gUnk_080CFFC4 + + thumb_func_start sub_0803C738 +sub_0803C738: @ 0x0803C738 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803C754 @ =gUnk_080D0110 + bl sub_0800129E + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0803C754: .4byte gUnk_080D0110 + + thumb_func_start sub_0803C758 +sub_0803C758: @ 0x0803C758 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0803C76C + cmp r0, #7 + beq _0803C76C + adds r0, r4, #0 + bl sub_0803CAD0 +_0803C76C: + ldr r0, _0803C780 @ =gUnk_080D0128 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_0803C780: .4byte gUnk_080D0128 + + thumb_func_start sub_0803C784 +sub_0803C784: @ 0x0803C784 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x1d + bne _0803C7A2 + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + bl sub_0803CBAC + b _0803C7FA +_0803C7A2: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x43 + bne _0803C7FA + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0803C7FA + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #0x10 + eors r0, r1 + lsls r1, r0, #3 + ldr r3, _0803C818 @ =gUnk_080C9160 + lsls r0, r0, #4 + adds r0, r0, r3 + movs r5, #0 + ldrsh r0, [r0, r5] + cmp r0, #0 + bge _0803C7D8 + adds r0, #0x1f +_0803C7D8: + asrs r0, r0, #5 + ldrh r5, [r2, #0x2e] + adds r0, r0, r5 + strh r0, [r2, #0x2e] + adds r0, r1, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _0803C7F2 + adds r0, #0x1f +_0803C7F2: + asrs r1, r0, #5 + ldrh r0, [r2, #0x32] + subs r0, r0, r1 + strh r0, [r2, #0x32] +_0803C7FA: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0803C80C + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0803C80C: + ldr r1, _0803C81C @ =gUnk_080D0110 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_0803C818: .4byte gUnk_080C9160 +_0803C81C: .4byte gUnk_080D0110 + + thumb_func_start sub_0803C820 +sub_0803C820: @ 0x0803C820 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _0803C83C + ldr r0, _0803C840 @ =gUnk_080D0148 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0803C83C: + pop {r4, pc} + .align 2, 0 +_0803C840: .4byte gUnk_080D0148 + + thumb_func_start sub_0803C844 +sub_0803C844: @ 0x0803C844 + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0803C850 +sub_0803C850: @ 0x0803C850 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x54] + cmp r0, #0 + beq _0803C864 + adds r1, r2, #0 + adds r1, #0x62 + ldrb r1, [r1] + adds r0, #0x62 + strb r1, [r0] +_0803C864: + adds r0, r2, #0 + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0803C86C +sub_0803C86C: @ 0x0803C86C + push {r4, lr} + adds r4, r0, #0 + bl sub_0803CBAC + movs r0, #0 + str r0, [r4, #0x54] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803C87C +sub_0803C87C: @ 0x0803C87C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x11 + movs r2, #0 + bl sub_0804A98C + cmp r0, #0 + beq _0803C8B4 + str r4, [r0, #0x50] + str r0, [r4, #0x54] + adds r0, r4, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0803C8B8 @ =0x0000FFFE + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xff + strb r0, [r1] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r1, [r4, #0x32] + adds r0, #2 + strh r1, [r0] +_0803C8B4: + pop {r4, pc} + .align 2, 0 +_0803C8B8: .4byte 0x0000FFFE + + thumb_func_start sub_0803C8BC +sub_0803C8BC: @ 0x0803C8BC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0803CA84 + adds r0, r4, #0 + bl sub_0803CA4C + cmp r0, #0 + beq _0803C8E0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_0803C8E0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803C8E4 +sub_0803C8E4: @ 0x0803C8E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803C914 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x42 + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC +_0803C914: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803C918 +sub_0803C918: @ 0x0803C918 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803CB04 + cmp r0, #0 + bne _0803C94E + adds r0, r4, #0 + bl sub_0803CA4C + cmp r0, #0 + bne _0803C946 + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x43 + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #0xc + adds r0, r4, #0 + bl sub_080042AC + b _0803C94E +_0803C946: + adds r0, r4, #0 + movs r1, #4 + bl sub_0803CA84 +_0803C94E: + pop {r4, pc} + + thumb_func_start sub_0803C950 +sub_0803C950: @ 0x0803C950 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803C97A + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC +_0803C97A: + pop {r4, pc} + + thumb_func_start sub_0803C97C +sub_0803C97C: @ 0x0803C97C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803C9D2 + adds r0, r4, #0 + bl sub_0803CB64 + movs r0, #6 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x42 + strb r0, [r1] + bl sub_08000E50 + movs r1, #1 + ands r0, r1 + adds r2, r4, #0 + adds r2, #0x79 + cmp r0, #0 + beq _0803C9C2 + ldrb r0, [r2] + cmp r0, #0 + bne _0803C9C2 + movs r0, #0xf + strb r0, [r4, #0xe] + strb r1, [r2] + b _0803C9D2 +_0803C9C2: + movs r1, #0 + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r1, [r2] + ldr r0, [r4, #0x54] + ldrb r1, [r4, #0x14] + bl sub_080042AC +_0803C9D2: + pop {r4, pc} + + thumb_func_start sub_0803C9D4 +sub_0803C9D4: @ 0x0803C9D4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803CA08 + adds r0, r2, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #1 + bne _0803C9F6 + adds r0, r2, #0 + bl sub_0803CB34 + b _0803CA08 +_0803C9F6: + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #0xb4 + strb r0, [r2, #0xe] + ldrb r1, [r2, #0x14] + adds r1, #4 + adds r0, r2, #0 + bl sub_080042AC +_0803CA08: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803CA0C +sub_0803CA0C: @ 0x0803CA0C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + cmp r0, #0 + bne _0803CA3E + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x13 + bhi _0803CA3E + ldrb r1, [r4, #0x14] + adds r1, #0x14 + adds r0, r4, #0 + bl sub_080042AC + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0803CA3E: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0803CC08 + pop {r4, pc} + + thumb_func_start sub_0803CA4C +sub_0803CA4C: @ 0x0803CA4C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0803CA7C @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x32 + ldrsh r2, [r4, r0] + adds r0, r5, #0 + movs r3, #0x28 + bl sub_0806FCB8 + cmp r0, #0 + bne _0803CA80 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x70 + movs r3, #0x50 + bl sub_080041A0 + cmp r0, #0 + beq _0803CA80 + movs r0, #1 + b _0803CA82 + .align 2, 0 +_0803CA7C: .4byte gLinkEntity +_0803CA80: + movs r0, #0 +_0803CA82: + pop {r4, r5, pc} + + thumb_func_start sub_0803CA84 +sub_0803CA84: @ 0x0803CA84 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r1, _0803CACC @ =gLinkEntity + bl sub_080045C4 + adds r4, r0, #0 + subs r0, r4, #3 + movs r1, #7 + ands r0, r1 + cmp r0, #2 + bhi _0803CAAA + ldrb r0, [r5, #0x14] + lsrs r1, r4, #3 + subs r0, r0, r1 + movs r1, #3 + ands r0, r1 + cmp r0, #1 + bls _0803CACA +_0803CAAA: + adds r0, r4, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r4, r0, #3 + ldrb r0, [r5, #0x14] + cmp r4, r0 + beq _0803CACA + strb r4, [r5, #0x14] + adds r1, r4, r6 + adds r0, r5, #0 + bl sub_080042AC + ldr r0, [r5, #0x54] + adds r1, r4, #0 + bl sub_080042AC +_0803CACA: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803CACC: .4byte gLinkEntity + + thumb_func_start sub_0803CAD0 +sub_0803CAD0: @ 0x0803CAD0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x74 + ldrh r1, [r6] + adds r5, r4, #0 + adds r5, #0x76 + ldrh r2, [r5] + movs r3, #1 + bl sub_0806FCB8 + cmp r0, #0 + bne _0803CB02 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r6] + ldrh r3, [r5] + bl sub_080045D4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AEFE0 +_0803CB02: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0803CB04 +sub_0803CB04: @ 0x0803CB04 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _0803CB1A + movs r0, #0 + b _0803CB32 +_0803CB1A: + adds r0, r4, #0 + bl sub_0803CB34 + adds r0, r4, #0 + adds r0, #0x79 + strb r5, [r0] + ldr r0, [r4, #0x54] + ldrb r1, [r4, #0x14] + adds r1, #4 + bl sub_080042AC + movs r0, #1 +_0803CB32: + pop {r4, r5, pc} + + thumb_func_start sub_0803CB34 +sub_0803CB34: @ 0x0803CB34 + push {r4, lr} + adds r4, r0, #0 + movs r0, #5 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0xa6 + strb r0, [r1] + ldr r1, _0803CB60 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r4, #0 + adds r1, #0x78 + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #8 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 +_0803CB60: .4byte gLinkEntity + + thumb_func_start sub_0803CB64 +sub_0803CB64: @ 0x0803CB64 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x12 + movs r2, #0 + bl sub_0804A98C + adds r5, r0, #0 + cmp r5, #0 + beq _0803CBA0 + ldrb r1, [r4, #0x14] + lsls r1, r1, #1 + ldr r0, _0803CBA4 @ =gUnk_080D0154 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + strb r0, [r5, #0x15] + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r1, r3] + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 + ldr r0, _0803CBA8 @ =0x00000193 + bl sub_08004488 +_0803CBA0: + pop {r4, r5, pc} + .align 2, 0 +_0803CBA4: .4byte gUnk_080D0154 +_0803CBA8: .4byte 0x00000193 + + thumb_func_start sub_0803CBAC +sub_0803CBAC: @ 0x0803CBAC + push {lr} + adds r3, r0, #0 + ldr r2, [r3, #0x54] + cmp r2, #0 + beq _0803CBC6 + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x43 + strb r0, [r1] +_0803CBC6: + movs r0, #7 + strb r0, [r3, #0xc] + ldrb r1, [r3, #0x18] + subs r0, #0xb + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r3, #0x18] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r2, #0x12 + ldrb r1, [r2] + movs r0, #0x7b + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x3f + movs r0, #0x42 + strb r0, [r1] + ldrb r1, [r3, #0x14] + adds r1, #0x10 + adds r0, r3, #0 + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803CC08 +sub_0803CC08: @ 0x0803CC08 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x54] + cmp r5, #0 + beq _0803CCB4 + movs r1, #0x36 + ldrsh r0, [r5, r1] + movs r2, #0x36 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + cmp r0, #2 + bhi _0803CCB4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _0803CCB4 + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #6 + bl sub_0806FCB8 + cmp r0, #0 + beq _0803CCB4 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0803CC56 + ldrh r0, [r1, #0x2e] + adds r0, #6 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + adds r0, #6 + strh r0, [r1, #0x32] +_0803CC56: + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0803CC72 + ldrh r0, [r1, #0x2e] + subs r0, #6 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + adds r0, #6 + strh r0, [r1, #0x32] +_0803CC72: + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0803CC8E + ldrh r0, [r1, #0x2e] + adds r0, #6 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + subs r0, #6 + strh r0, [r1, #0x32] +_0803CC8E: + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0803CCAA + ldrh r0, [r1, #0x2e] + subs r0, #6 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + subs r0, #6 + strh r0, [r1, #0x32] +_0803CCAA: + movs r0, #0 + str r0, [r4, #0x54] + adds r0, r5, #0 + bl sub_0805E7BC +_0803CCB4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803CCB8 +sub_0803CCB8: @ 0x0803CCB8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0803CCD0 @ =gUnk_080D0418 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0803CCD0: .4byte gUnk_080D0418 + + thumb_func_start sub_0803CCD4 +sub_0803CCD4: @ 0x0803CCD4 + push {lr} + ldr r2, _0803CCE8 @ =gUnk_080D0430 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803CCE8: .4byte gUnk_080D0430 + + thumb_func_start sub_0803CCEC +sub_0803CCEC: @ 0x0803CCEC + push {lr} + adds r2, r0, #0 + adds r2, #0x42 + movs r1, #0 + strb r1, [r2] + bl sub_0803CCD4 + pop {pc} + + thumb_func_start sub_0803CCFC +sub_0803CCFC: @ 0x0803CCFC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + bne _0803CD16 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bne _0803CD26 + adds r0, r4, #0 + bl sub_0803CE3C + b _0803CD26 +_0803CD16: + ldr r0, _0803CD28 @ =gUnk_080D043C + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0803CD26: + pop {r4, pc} + .align 2, 0 +_0803CD28: .4byte gUnk_080D043C + + thumb_func_start sub_0803CD2C +sub_0803CD2C: @ 0x0803CD2C + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_0803CD38 +sub_0803CD38: @ 0x0803CD38 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0803CD40 +sub_0803CD40: @ 0x0803CD40 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0803CD66 + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + ldr r0, _0803CD68 @ =gLinkEntity + movs r1, #0x7a + bl sub_0800449C + bl sub_08079D84 + adds r0, r4, #0 + bl sub_0803CE3C +_0803CD66: + pop {r4, pc} + .align 2, 0 +_0803CD68: .4byte gLinkEntity + + thumb_func_start sub_0803CD6C +sub_0803CD6C: @ 0x0803CD6C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0803CDA4 @ =0x0000FFFE + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xa] + bl sub_0804B128 + str r0, [r4, #0x54] + str r0, [r4, #0x50] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + adds r0, r4, #0 + movs r1, #4 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0803CE14 + pop {r4, pc} + .align 2, 0 +_0803CDA4: .4byte 0x0000FFFE + + thumb_func_start sub_0803CDA8 +sub_0803CDA8: @ 0x0803CDA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803CDC0 + adds r0, r4, #0 + bl sub_0806F69C +_0803CDC0: + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803CDD6 + adds r0, r4, #0 + bl sub_0803CE14 +_0803CDD6: + pop {r4, pc} + + thumb_func_start sub_0803CDD8 +sub_0803CDD8: @ 0x0803CDD8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + movs r2, #1 + eors r0, r2 + movs r5, #4 + rsbs r5, r5, #0 + adds r3, r5, #0 + ands r3, r1 + orrs r3, r0 + strb r3, [r4, #0x18] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803CE10 + movs r0, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r4, #0x10] + ands r3, r5 + orrs r3, r0 + strb r3, [r4, #0x18] +_0803CE10: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803CE14 +sub_0803CE14: @ 0x0803CE14 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x54 + adds r2, r4, #0 + adds r2, #0x74 + bl sub_080A2CC0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803CE38 + lsrs r1, r1, #3 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC +_0803CE38: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803CE3C +sub_0803CE3C: @ 0x0803CE3C + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x3a + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + strh r0, [r4, #0x32] + ldr r0, [r4, #0x50] + str r0, [r4, #0x54] + adds r0, r4, #0 + bl sub_0803CE14 + pop {r4, pc} + + thumb_func_start sub_0803CE80 +sub_0803CE80: @ 0x0803CE80 + push {lr} + ldr r2, _0803CE94 @ =gUnk_080D0448 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803CE94: .4byte gUnk_080D0448 + + thumb_func_start sub_0803CE98 +sub_0803CE98: @ 0x0803CE98 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r1, r6, #0 + adds r1, #0x84 + ldrh r2, [r1] + movs r5, #0xf0 + lsls r5, r5, #8 + adds r0, r5, #0 + ands r0, r2 + lsrs r0, r0, #5 + strh r0, [r6, #0x24] + ldrh r2, [r1] + ldr r4, _0803CF1C @ =0x00000FFF + adds r0, r4, #0 + ands r0, r2 + strh r0, [r1] + adds r0, r6, #0 + bl sub_0804A720 + movs r0, #1 + strb r0, [r6, #0xc] + adds r3, r6, #0 + adds r3, #0x82 + ldrh r0, [r3] + ands r4, r0 + adds r0, r6, #0 + adds r0, #0x74 + strh r4, [r0] + ldrh r0, [r3] + movs r1, #0x3f + ands r1, r0 + lsls r1, r1, #4 + ldr r2, _0803CF20 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + adds r0, #8 + adds r1, r1, r0 + strh r1, [r6, #0x2e] + ldrh r1, [r3] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r1 + lsrs r0, r0, #2 + ldrh r1, [r2, #8] + adds r1, #8 + adds r0, r0, r1 + strh r0, [r6, #0x32] + movs r1, #0 + ldrsh r0, [r3, r1] + ands r0, r5 + asrs r0, r0, #0xa + strb r0, [r6, #0x15] + ldrb r0, [r6, #0xa] + lsls r0, r0, #2 + adds r1, r6, #0 + adds r1, #0x78 + strh r0, [r1] + adds r0, r6, #0 + bl sub_0803CFF0 + cmp r0, #0 + beq _0803CF18 + adds r0, r6, #0 + bl sub_0803D0B0 +_0803CF18: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803CF1C: .4byte 0x00000FFF +_0803CF20: .4byte gUnk_03000BF0 + + thumb_func_start sub_0803CF24 +sub_0803CF24: @ 0x0803CF24 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803CFD8 + cmp r0, #0 + beq _0803CF36 + adds r0, r4, #0 + bl sub_0803D024 +_0803CF36: + pop {r4, pc} + + thumb_func_start sub_0803CF38 +sub_0803CF38: @ 0x0803CF38 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803CFF0 + cmp r0, #0 + beq _0803CF4C + adds r0, r4, #0 + bl sub_0803D0B0 + b _0803CF8C +_0803CF4C: + adds r0, r4, #0 + movs r1, #0 + bl sub_08049FDC + cmp r0, #0 + beq _0803CF8C + ldr r0, _0803CF90 @ =gUnk_020000B0 + ldr r0, [r0] + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x20 + bl sub_0806FCB8 + cmp r0, #0 + bne _0803CF8C + adds r1, r4, #0 + adds r1, #0x7a + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803CF8C + adds r0, r4, #0 + bl sub_0803D058 + adds r0, r4, #0 + bl sub_0803D024 +_0803CF8C: + pop {r4, pc} + .align 2, 0 +_0803CF90: .4byte gUnk_020000B0 + + thumb_func_start sub_0803CF94 +sub_0803CF94: @ 0x0803CF94 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + cmp r0, #0x76 + bne _0803CFBA + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0 + strh r0, [r1] + adds r0, r4, #0 + bl sub_0803D024 + b _0803CFD4 +_0803CFBA: + adds r0, r4, #0 + adds r0, #0x7c + ldrh r0, [r0] + cmp r0, #0 + beq _0803CFD4 + adds r0, r4, #0 + bl sub_0803CFD8 + cmp r0, #0 + beq _0803CFD4 + adds r0, r4, #0 + bl sub_0803D024 +_0803CFD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803CFD8 +sub_0803CFD8: @ 0x0803CFD8 + push {lr} + adds r1, r0, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0 + bne _0803CFE8 + movs r0, #1 + b _0803CFEE +_0803CFE8: + ldrh r0, [r1] + bl sub_0807CBE4 +_0803CFEE: + pop {pc} + + thumb_func_start sub_0803CFF0 +sub_0803CFF0: @ 0x0803CFF0 + push {lr} + adds r1, r0, #0 + adds r1, #0x80 + ldrh r2, [r1] + cmp r2, #0 + beq _0803D01E + adds r0, #0x7c + ldrh r0, [r0] + cmp r2, r0 + bne _0803D016 + adds r0, r2, #0 + bl sub_0807CBE4 + movs r1, #0 + cmp r0, #0 + bne _0803D012 + movs r1, #1 +_0803D012: + adds r0, r1, #0 + b _0803D020 +_0803D016: + ldrh r0, [r1] + bl sub_0807CBE4 + b _0803D020 +_0803D01E: + movs r0, #0 +_0803D020: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803D024 +sub_0803D024: @ 0x0803D024 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x78 + ldrh r1, [r0] + cmp r1, #0 + beq _0803D03A + adds r0, #2 + b _0803D04E +_0803D03A: + bl sub_08000E50 + ldr r2, _0803D054 @ =gUnk_080D0458 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + adds r0, r4, #0 + adds r0, #0x7a +_0803D04E: + strh r1, [r0] + pop {r4, pc} + .align 2, 0 +_0803D054: .4byte gUnk_080D0458 + + thumb_func_start sub_0803D058 +sub_0803D058: @ 0x0803D058 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x16 + movs r2, #0 + bl sub_0804A98C + adds r5, r0, #0 + cmp r5, #0 + beq _0803D0AE + ldrh r1, [r4, #0x24] + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _0803D078 + strh r1, [r5, #0x24] + b _0803D08A +_0803D078: + bl sub_08000E50 + ldr r2, _0803D0A4 @ =gUnk_080D0468 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + strh r0, [r5, #0x24] +_0803D08A: + ldrb r1, [r4, #0x15] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0803D0AC + ldr r0, _0803D0A8 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] + b _0803D0AE + .align 2, 0 +_0803D0A4: .4byte gUnk_080D0468 +_0803D0A8: .4byte gUnk_020000B0 +_0803D0AC: + strb r1, [r5, #0x15] +_0803D0AE: + pop {r4, r5, pc} + + thumb_func_start sub_0803D0B0 +sub_0803D0B0: @ 0x0803D0B0 + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x74 + ldrh r1, [r1] + adds r0, #0x38 + ldrb r2, [r0] + movs r0, #0x75 + bl sub_0807B7D8 + pop {pc} + + thumb_func_start sub_0803D0C8 +sub_0803D0C8: @ 0x0803D0C8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0803D0F4 + cmp r0, #1 + bgt _0803D0DC + cmp r0, #0 + beq _0803D0E6 + b _0803D12C +_0803D0DC: + cmp r0, #2 + beq _0803D104 + cmp r0, #3 + beq _0803D11C + b _0803D12C +_0803D0E6: + adds r0, r4, #0 + bl sub_0803DFBC + ldr r0, _0803D0F0 @ =gUnk_080D0470 + b _0803D106 + .align 2, 0 +_0803D0F0: .4byte gUnk_080D0470 +_0803D0F4: + adds r0, r4, #0 + bl sub_0803DC58 + ldr r0, _0803D100 @ =gUnk_080D0490 + b _0803D106 + .align 2, 0 +_0803D100: .4byte gUnk_080D0490 +_0803D104: + ldr r0, _0803D118 @ =gUnk_080D0498 +_0803D106: + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0803D12C + .align 2, 0 +_0803D118: .4byte gUnk_080D0498 +_0803D11C: + ldr r0, _0803D130 @ =gUnk_080D04A0 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0803D12C: + pop {r4, pc} + .align 2, 0 +_0803D130: .4byte gUnk_080D04A0 + + thumb_func_start sub_0803D134 +sub_0803D134: @ 0x0803D134 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x7b + bl sub_0807CBD0 + cmp r0, #0 + beq _0803D146 + bl sub_0805E780 +_0803D146: + adds r0, r5, #0 + bl sub_0804A720 + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + bne _0803D158 + b _0803D25A +_0803D158: + ldr r0, _0803D25C @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x41 + bhi _0803D25A + movs r0, #0 + bl sub_0807CD8C + movs r2, #0 + movs r0, #3 + strb r0, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x74 + movs r0, #0xff + strb r0, [r1] + strb r2, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x76 + strb r2, [r0] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r5, #0x15] + adds r3, r5, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #7 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + str r2, [r5, #0x34] + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x86 + strb r2, [r0] + adds r1, #5 + movs r0, #0x30 + strb r0, [r1] + subs r1, #1 + subs r0, #0x31 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x87 + strb r2, [r0] + subs r0, #5 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + ldr r0, [r5, #0x2c] + str r0, [r5, #0x78] + ldr r0, [r5, #0x30] + str r0, [r5, #0x7c] + movs r0, #0x4a + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + str r5, [r4, #0x50] + str r4, [r5, #0x54] + movs r6, #0 +_0803D1E2: + movs r0, #0x54 + movs r1, #0 + bl sub_0804AA60 + adds r4, r0, #0 + str r5, [r4, #0x50] + adds r0, #0x79 + strb r6, [r0] + adds r6, #1 + cmp r6, #5 + ble _0803D1E2 + movs r6, #0 +_0803D1FA: + movs r0, #0x4a + movs r1, #3 + bl sub_0804AA60 + adds r4, r0, #0 + str r5, [r4, #0x50] + strb r6, [r4, #0xe] + adds r6, #1 + cmp r6, #3 + ble _0803D1FA + movs r6, #0 +_0803D210: + movs r0, #0x54 + movs r1, #1 + bl sub_0804AA60 + adds r4, r0, #0 + str r5, [r4, #0x50] + movs r0, #1 + adds r2, r6, #0 + ands r2, r0 + lsls r2, r2, #6 + ldrb r0, [r4, #0x18] + movs r3, #0x41 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + lsls r1, r6, #1 + ldr r0, _0803D260 @ =gUnk_080D04A8 + adds r1, r1, r0 + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r1, r3] + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + adds r6, #1 + cmp r6, #1 + ble _0803D210 + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC +_0803D25A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0803D25C: .4byte gUnk_03003DBC +_0803D260: .4byte gUnk_080D04A8 + + thumb_func_start sub_0803D264 +sub_0803D264: @ 0x0803D264 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0803D318 + subs r0, #1 + strb r0, [r4, #0xe] + movs r7, #0xff + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + beq _0803D27E + b _0803D400 +_0803D27E: + adds r5, r4, #0 + adds r5, #0x74 + ldrb r1, [r5] + movs r0, #0x70 + ands r0, r1 + cmp r0, #0 + bne _0803D2E4 + ldr r0, [r4, #0x54] + ldrb r0, [r0, #0xe] + cmp r0, #0 + bne _0803D2DE + adds r0, r4, #0 + bl sub_0803DD78 + adds r0, r4, #0 + adds r0, #0x75 + ldrb r0, [r0] + cmp r0, #0 + beq _0803D2B0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r6, [r5] + movs r0, #0x10 + strb r0, [r4, #0xe] + b _0803D2D6 +_0803D2B0: + adds r0, r4, #0 + adds r0, #0x86 + ldrb r0, [r0] + cmp r0, #0 + bne _0803D2C4 + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0803D2D6 +_0803D2C4: + bl sub_08000E50 + movs r1, #0x80 + ands r1, r0 + lsrs r1, r1, #3 + movs r0, #8 + orrs r1, r0 + strb r1, [r4, #0x15] + b _0803D400 +_0803D2D6: + ldrb r0, [r4, #0x15] + orrs r0, r7 + strb r0, [r4, #0x15] + b _0803D400 +_0803D2DE: + movs r0, #2 + strb r0, [r4, #0xe] + b _0803D400 +_0803D2E4: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + adds r1, r4, #0 + adds r1, #0x75 + strb r0, [r1] + strb r6, [r5] + movs r0, #0xc0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x15] + orrs r0, r7 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0803D400 +_0803D318: + adds r1, r4, #0 + adds r1, #0x77 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + movs r6, #0xff + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0803D3BA + adds r0, r4, #0 + bl sub_0803DEE0 + cmp r0, #1 + beq _0803D366 + cmp r0, #1 + blo _0803D344 + cmp r0, #2 + beq _0803D384 + cmp r0, #3 + beq _0803D374 + b _0803D3BA +_0803D344: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xa0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x15] + orrs r0, r6 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x84 + ldrb r0, [r1] + orrs r0, r6 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + b _0803D3BA +_0803D366: + movs r0, #6 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + strb r5, [r0] + strb r5, [r4, #0xe] + b _0803D3B4 +_0803D374: + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + strb r5, [r0] + movs r0, #0x20 + strb r0, [r4, #0xf] + b _0803D3B4 +_0803D384: + adds r0, r4, #0 + adds r0, #0x74 + strb r5, [r0] + movs r0, #0x20 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x86 + ldrb r0, [r0] + cmp r0, #0 + bne _0803D3A2 + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0803D3B4 +_0803D3A2: + bl sub_08000E50 + movs r1, #0x80 + ands r1, r0 + lsrs r1, r1, #3 + movs r0, #8 + orrs r1, r0 + strb r1, [r4, #0x15] + b _0803D3BA +_0803D3B4: + ldrb r0, [r4, #0x15] + orrs r0, r6 + strb r0, [r4, #0x15] +_0803D3BA: + ldr r0, [r4, #0x54] + ldrb r0, [r0, #0xe] + cmp r0, #0 + bne _0803D400 + adds r2, r4, #0 + adds r2, #0x85 + ldrb r0, [r2] + adds r1, r0, #1 + strb r1, [r2] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0803D3FA + movs r0, #0x30 + ands r0, r1 + cmp r0, #0x10 + beq _0803D3F4 + cmp r0, #0x10 + bgt _0803D3E6 + cmp r0, #0 + beq _0803D3EE + b _0803D3FA +_0803D3E6: + cmp r0, #0x20 + beq _0803D3F4 + cmp r0, #0x30 + bne _0803D3FA +_0803D3EE: + ldrh r0, [r4, #0x32] + adds r0, #1 + b _0803D3F8 +_0803D3F4: + ldrh r0, [r4, #0x32] + subs r0, #1 +_0803D3F8: + strh r0, [r4, #0x32] +_0803D3FA: + adds r0, r4, #0 + bl sub_080AEFB4 +_0803D400: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0803D408 +sub_0803D408: @ 0x0803D408 + push {r4, r5, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x74 + ldrb r0, [r2] + cmp r0, #1 + beq _0803D458 + cmp r0, #1 + bgt _0803D420 + cmp r0, #0 + beq _0803D42A + b _0803D558 +_0803D420: + cmp r0, #2 + beq _0803D478 + cmp r0, #3 + beq _0803D4FC + b _0803D558 +_0803D42A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803D438 + b _0803D558 +_0803D438: + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x20 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #3 + bl sub_080042AC + ldr r0, _0803D454 @ =0x0000019B + bl sub_080A3268 + b _0803D558 + .align 2, 0 +_0803D454: .4byte 0x0000019B +_0803D458: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803D558 + movs r0, #2 + strb r0, [r2] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x10 + strb r0, [r4, #0xe] + b _0803D558 +_0803D478: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803D558 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0803E028 + cmp r0, #0 + bne _0803D4D0 + bl sub_08000E50 + adds r5, r4, #0 + adds r5, #0x81 + ldrb r1, [r5] + adds r1, #1 + movs r2, #3 + ands r0, r2 + adds r1, r1, r0 + strb r1, [r5] + ldrb r0, [r5] + movs r1, #5 + bl __modsi3 + strb r0, [r5] + ldrb r1, [r5] + lsls r1, r1, #2 + ldr r0, _0803D4F4 @ =gUnk_080D04AC + adds r1, r1, r0 + ldr r2, _0803D4F8 @ =gUnk_03000BF0 + ldrh r0, [r1] + ldrh r3, [r2, #6] + adds r0, r0, r3 + adds r0, #0x10 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + ldrh r2, [r2, #8] + adds r0, r0, r2 + adds r0, #0x10 + strh r0, [r4, #0x32] +_0803D4D0: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x20 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #4 + bl sub_080042AC + movs r0, #0xf5 + bl sub_080A3268 + b _0803D558 + .align 2, 0 +_0803D4F4: .4byte gUnk_080D04AC +_0803D4F8: .4byte gUnk_03000BF0 +_0803D4FC: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803D558 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #4 + bls _0803D52E + ldr r1, _0803D544 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + subs r0, #0x18 + strh r0, [r4, #0x32] +_0803D52E: + adds r1, r4, #0 + adds r1, #0x77 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803D548 + movs r0, #1 + strb r0, [r4, #0xc] + b _0803D54E + .align 2, 0 +_0803D544: .4byte gLinkEntity +_0803D548: + movs r0, #0 + strb r0, [r2] + movs r0, #0x10 +_0803D54E: + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_0803D558: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + + thumb_func_start sub_0803D560 +sub_0803D560: @ 0x0803D560 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x74 + ldrb r0, [r2] + cmp r0, #2 + beq _0803D62A + cmp r0, #2 + bgt _0803D57C + cmp r0, #0 + beq _0803D5BC + cmp r0, #1 + beq _0803D5F8 + b _0803D650 +_0803D57C: + cmp r0, #0xfe + beq _0803D590 + cmp r0, #0xfe + bgt _0803D58A + cmp r0, #3 + beq _0803D646 + b _0803D650 +_0803D58A: + cmp r0, #0xff + beq _0803D598 + b _0803D650 +_0803D590: + movs r0, #0 + strb r0, [r2] + movs r0, #1 + b _0803D64E +_0803D598: + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #4 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0803D5AC + ldr r0, [r4, #0x34] + ldr r1, _0803D5B8 @ =0xFFFFE000 + adds r0, r0, r1 + str r0, [r4, #0x34] +_0803D5AC: + ldrb r0, [r4, #0xe] + cmp r0, #2 + bne _0803D650 + movs r0, #0xfe + strb r0, [r2] + b _0803D650 + .align 2, 0 +_0803D5B8: .4byte 0xFFFFE000 +_0803D5BC: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803D650 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x75 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + movs r1, #0x20 + cmp r0, #0 + beq _0803D5E0 + movs r1, #0x14 +_0803D5E0: + strb r1, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x86 + ldrb r0, [r0] + adds r0, #1 + asrs r0, r0, #1 + lsls r0, r0, #1 + adds r0, #2 + adds r1, r4, #0 + adds r1, #0x80 + strb r0, [r1] + b _0803D650 +_0803D5F8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803D650 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x75 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803D620 + movs r0, #0xd8 + lsls r0, r0, #1 + bl sub_080A3268 +_0803D620: + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + b _0803D650 +_0803D62A: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803D650 + movs r0, #3 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0803D650 +_0803D646: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r2] +_0803D64E: + strb r0, [r4, #0xe] +_0803D650: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_0803D658 +sub_0803D658: @ 0x0803D658 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803D68E + movs r2, #1 + strb r2, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x84 + ldrb r0, [r1] + orrs r0, r3 + strb r0, [r1] + strb r2, [r4, #0xe] + ldrb r0, [r4, #0x15] + adds r0, #0x10 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0803D6EE +_0803D68E: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0803D6EE + movs r0, #0xef + ands r0, r1 + strb r0, [r2] + adds r5, r4, #0 + adds r5, #0x84 + ldrb r0, [r5] + cmp r0, #0xff + bne _0803D6C8 + ldr r1, _0803D6F8 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + ldr r1, _0803D6FC @ =gUnk_080D04C0 + lsrs r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5] + movs r0, #0 + strb r0, [r4, #0xf] +_0803D6C8: + ldrb r0, [r4, #0xf] + cmp r0, #0xf + bhi _0803D6EE + ldrb r2, [r5] + adds r0, r4, #0 + movs r1, #0x1a + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _0803D6EE + ldrb r0, [r4, #0xf] + strb r0, [r1, #0xf] + str r4, [r1, #0x50] + ldrh r0, [r4, #0x36] + strh r0, [r1, #0x36] + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] +_0803D6EE: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 +_0803D6F8: .4byte gLinkEntity +_0803D6FC: .4byte gUnk_080D04C0 + + thumb_func_start sub_0803D700 +sub_0803D700: @ 0x0803D700 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0803D720 + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0803D82E +_0803D720: + adds r2, r4, #0 + adds r2, #0x74 + ldrb r0, [r2] + adds r6, r2, #0 + cmp r0, #1 + beq _0803D764 + cmp r0, #1 + bgt _0803D736 + cmp r0, #0 + beq _0803D744 + b _0803D73E +_0803D736: + cmp r0, #2 + beq _0803D78E + cmp r0, #3 + beq _0803D7FA +_0803D73E: + adds r5, r4, #0 + adds r5, #0x87 + b _0803D81C +_0803D744: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + adds r5, r4, #0 + adds r5, #0x87 + cmp r0, #0 + bne _0803D81C + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + b _0803D81C +_0803D764: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + adds r5, r4, #0 + adds r5, #0x87 + cmp r0, #0 + beq _0803D81C + movs r0, #2 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x40 + strb r0, [r4, #0xf] + movs r0, #0xf4 + bl sub_080A3268 + b _0803D81C +_0803D78E: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + adds r5, r4, #0 + adds r5, #0x87 + cmp r0, #0 + bne _0803D81C + adds r0, r4, #0 + adds r0, #0x86 + ldrb r0, [r0] + cmp r0, #1 + bls _0803D7E4 + ldrb r0, [r5] + cmp r0, #3 + bhi _0803D7E4 + bl sub_08000E50 + movs r1, #0x10 + ands r1, r0 + cmp r1, #0 + beq _0803D7E4 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x40 + strb r0, [r4, #0xf] + ldr r1, _0803D7E0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + movs r1, #0x10 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + b _0803D81A + .align 2, 0 +_0803D7E0: .4byte gLinkEntity +_0803D7E4: + ldrb r0, [r6] + adds r0, #1 + movs r1, #0 + strb r0, [r6] + strb r1, [r5] + movs r0, #0x30 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_080042AC + b _0803D81C +_0803D7FA: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + movs r3, #0xff + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r5, r4, #0 + adds r5, #0x87 + cmp r1, #0 + bne _0803D81C + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r2] + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x15] + orrs r0, r3 +_0803D81A: + strb r0, [r4, #0x15] +_0803D81C: + ldrb r0, [r5] + cmp r0, #0 + beq _0803D828 + adds r0, r4, #0 + bl sub_080AEFB4 +_0803D828: + adds r0, r4, #0 + bl sub_080042B8 +_0803D82E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0803D830 +sub_0803D830: @ 0x0803D830 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0803D844 + movs r0, #1 + strb r0, [r5, #0xc] + strb r0, [r5, #0xe] + b _0803D8F4 +_0803D844: + adds r4, r5, #0 + adds r4, #0x74 + ldrb r0, [r4] + cmp r0, #1 + beq _0803D870 + cmp r0, #1 + bgt _0803D858 + cmp r0, #0 + beq _0803D862 + b _0803D8EE +_0803D858: + cmp r0, #2 + beq _0803D8C2 + cmp r0, #3 + beq _0803D8CE + b _0803D8EE +_0803D862: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0803D8EE + movs r0, #1 + strb r0, [r4] + movs r0, #0x70 + b _0803D8EC +_0803D870: + ldrb r0, [r5, #0xe] + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0803D8B0 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r0, #0xa8 + lsls r0, r0, #1 + bl sub_080A3268 + adds r0, r5, #0 + movs r1, #0x18 + movs r2, #0 + bl sub_0804A98C + adds r4, r0, #0 + cmp r4, #0 + beq _0803D8EE + ldr r3, _0803D8AC @ =0xFFF00000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + str r5, [r4, #0x50] + b _0803D8EE + .align 2, 0 +_0803D8AC: .4byte 0xFFF00000 +_0803D8B0: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x40 + bne _0803D8EE + movs r0, #0xcb + lsls r0, r0, #1 + bl sub_080A3268 + b _0803D8EE +_0803D8C2: + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _0803D8EE + movs r0, #0 + strb r0, [r5, #0xf] + b _0803D8EE +_0803D8CE: + ldrb r0, [r5, #0xf] + cmp r0, #0 + bne _0803D8DE + movs r0, #1 + strb r0, [r5, #0xf] + ldr r0, _0803D8F8 @ =0x0000014F + bl sub_080A3268 +_0803D8DE: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0803D8EE + movs r1, #0 + movs r0, #1 + strb r0, [r5, #0xc] + strb r1, [r4] +_0803D8EC: + strb r0, [r5, #0xe] +_0803D8EE: + adds r0, r5, #0 + bl sub_080042B8 +_0803D8F4: + pop {r4, r5, pc} + .align 2, 0 +_0803D8F8: .4byte 0x0000014F + + thumb_func_start sub_0803D8FC +sub_0803D8FC: @ 0x0803D8FC + push {r4, r5, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _0803D968 + subs r1, r0, #1 + strb r1, [r2, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0803D918 + movs r0, #1 + bl sub_0807CD10 + b _0803D968 +_0803D918: + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0803D968 + adds r0, r2, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _0803D968 + bl sub_08000E50 + ldr r1, _0803D96C @ =0x00003F3F + ands r0, r1 + movs r3, #0xff + adds r1, r0, #0 + ands r1, r3 + ldr r5, _0803D970 @ =0x0000FFE0 + adds r2, r5, #0 + adds r1, r2, r1 + ldrh r5, [r4, #0x2e] + adds r1, r1, r5 + strh r1, [r4, #0x2e] + lsrs r0, r0, #8 + ands r0, r3 + adds r2, r2, r0 + ldrh r0, [r4, #0x32] + adds r2, r2, r0 + strh r2, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] +_0803D968: + pop {r4, r5, pc} + .align 2, 0 +_0803D96C: .4byte 0x00003F3F +_0803D970: .4byte 0x0000FFE0 + + thumb_func_start sub_0803D974 +sub_0803D974: @ 0x0803D974 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r5, r4, #0 + adds r5, #0x74 + strb r1, [r5] + adds r2, r4, #0 + adds r2, #0x75 + strb r0, [r2] + strb r1, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xff + strb r0, [r1] + ldr r0, [r4, #0x50] + movs r3, #0x80 + lsls r3, r3, #9 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #0x4a + movs r1, #2 + bl sub_0804AA60 + str r4, [r0, #0x50] + ldr r1, [r4, #0x50] + str r1, [r0, #0x54] + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_080042AC + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803D9BC +sub_0803D9BC: @ 0x0803D9BC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + adds r2, r4, #0 + adds r2, #0x74 + ldrb r0, [r2] + cmp r0, #0 + bne _0803D9E2 + adds r0, r5, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0803DA44 + movs r0, #1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x30 + b _0803D9F6 +_0803D9E2: + adds r0, r5, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0803DA02 + movs r0, #0 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x2f +_0803D9F6: + strb r0, [r1] + ldrb r1, [r2] + adds r0, r4, #0 + bl sub_080042AC + b _0803DA44 +_0803DA02: + adds r2, r4, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803DA2E + adds r0, r4, #0 + adds r0, #0x3d + ldrb r1, [r0] + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _0803DA2E + adds r0, r5, #0 + adds r0, #0x3d + strb r1, [r0] + ldrb r0, [r2] + adds r2, r5, #0 + adds r2, #0x41 + strb r0, [r2] +_0803DA2E: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0803DA44 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC +_0803DA44: + adds r1, r4, #0 + adds r1, #0x75 + ldrb r0, [r1] + cmp r0, #0 + bne _0803DA60 + ldrb r0, [r5, #0xc] + cmp r0, #2 + beq _0803DA72 + movs r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + b _0803DA70 +_0803DA60: + ldrb r0, [r5, #0xc] + cmp r0, #2 + bne _0803DA72 + movs r0, #0 + strb r0, [r1] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 +_0803DA70: + strb r0, [r4, #0x10] +_0803DA72: + ldrb r1, [r5, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r5, #0 + adds r0, #0x62 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + ldr r0, [r4, #0x50] + movs r3, #0x80 + lsls r3, r3, #9 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803DAA8 +sub_0803DAA8: @ 0x0803DAA8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #0x50] + movs r3, #0 + movs r2, #1 + strb r2, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x74 + strb r2, [r1] + adds r1, #1 + strb r3, [r1] + adds r2, r4, #0 + adds r2, #0x63 + movs r1, #0xfe + strb r1, [r2] + movs r1, #0xff + strb r1, [r4, #0x15] + movs r3, #0x80 + lsls r3, r3, #0xa + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803DAE4 +sub_0803DAE4: @ 0x0803DAE4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + adds r0, r5, #0 + adds r0, #0x74 + ldrb r2, [r0] + cmp r2, #0 + bne _0803DB3E + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #0 + beq _0803DB00 + strb r2, [r1] +_0803DB00: + ldr r0, [r5, #0x50] + ldrb r1, [r0, #0x15] + cmp r1, #0xff + beq _0803DB28 + adds r2, r4, #0 + adds r2, #0x75 + ldrb r0, [r2] + cmp r0, #0 + bne _0803DB16 + movs r0, #1 + strb r0, [r2] +_0803DB16: + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _0803DB54 + strb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_080042AC + b _0803DB54 +_0803DB28: + adds r1, r4, #0 + adds r1, #0x75 + ldrb r0, [r1] + cmp r0, #0 + beq _0803DB54 + strb r2, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0803DB54 +_0803DB3E: + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #0 + bne _0803DB54 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC +_0803DB54: + ldrb r1, [r5, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r5, #0 + adds r0, #0x62 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + ldr r0, [r5, #0x50] + movs r3, #0x80 + lsls r3, r3, #0xa + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + + thumb_func_start sub_0803DB88 +sub_0803DB88: @ 0x0803DB88 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x74 + strb r1, [r2] + movs r0, #0xff + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + ldrb r1, [r2] + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0803DC0C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803DBB8 +sub_0803DBB8: @ 0x0803DBB8 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x50] + ldrb r0, [r2, #0x15] + cmp r0, #0xff + beq _0803DBE8 + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #0 + bne _0803DBD2 + movs r0, #1 + strb r0, [r1] +_0803DBD2: + ldrb r0, [r2, #0x15] + lsls r1, r0, #0x18 + ldrb r2, [r4, #0x15] + cmp r0, r2 + beq _0803DC02 + strb r0, [r4, #0x15] + lsrs r1, r1, #0x1b + adds r0, r4, #0 + bl sub_080042AC + b _0803DC02 +_0803DBE8: + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #0 + beq _0803DC02 + movs r0, #0 + strb r0, [r1] + movs r0, #0xff + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC +_0803DC02: + adds r0, r4, #0 + bl sub_0803DC0C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803DC0C +sub_0803DC0C: @ 0x0803DC0C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r5, [r4, #0xe] + lsls r5, r5, #1 + ldr r1, _0803DC54 @ =gUnk_080D04C8 + adds r5, r5, r1 + ldrb r2, [r0, #0x18] + lsls r2, r2, #0x1e + lsrs r2, r2, #0x1e + ldrb r3, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r4, #0x18] + adds r1, r0, #0 + adds r1, #0x62 + ldrb r1, [r1] + adds r2, r4, #0 + adds r2, #0x62 + strb r1, [r2] + movs r2, #0 + ldrsb r2, [r5, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r5, r3] + adds r3, #1 + lsls r3, r3, #0x10 + adds r1, r4, #0 + bl sub_0806FA48 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 +_0803DC54: .4byte gUnk_080D04C8 + + thumb_func_start sub_0803DC58 +sub_0803DC58: @ 0x0803DC58 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x30 + beq _0803DC66 + b _0803DD74 +_0803DC66: + ldr r5, [r4, #0x50] + adds r2, r4, #0 + adds r2, #0x77 + movs r7, #0 + strb r7, [r2] + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + mov ip, r0 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + beq _0803DD20 + ldr r0, _0803DCE4 @ =gUnk_080D04D0 + adds r3, r5, #0 + adds r3, #0x86 + ldrb r2, [r3] + adds r0, r2, r0 + adds r1, r4, #0 + adds r1, #0x45 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _0803DCFA + adds r0, r2, #1 + strb r0, [r3] + movs r3, #0xff + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _0803DCF0 + ldrb r2, [r4, #0x10] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x10] + movs r0, #7 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0x10] + ands r1, r0 + strb r1, [r5, #0x10] + mov r2, ip + strb r2, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x62 + strb r7, [r0] + ldrb r0, [r5, #0x15] + orrs r0, r3 + strb r0, [r5, #0x15] + strb r7, [r4, #0xe] + ldr r0, _0803DCE8 @ =0x80100000 + bl sub_080A3268 + ldr r0, _0803DCEC @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + b _0803DD74 + .align 2, 0 +_0803DCE4: .4byte gUnk_080D04D0 +_0803DCE8: .4byte 0x80100000 +_0803DCEC: .4byte gUnk_02033A90 +_0803DCF0: + movs r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r6] + orrs r0, r3 + strb r0, [r6] +_0803DCFA: + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _0803DD20 + ldr r0, _0803DD50 @ =0x00000127 + bl sub_080A3268 + movs r0, #0xc + movs r1, #1 + bl sub_08080964 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0803DD26 + movs r0, #0x48 + strb r0, [r4, #0xe] +_0803DD20: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0803DD74 +_0803DD26: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803DD74 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x2f + strb r0, [r1] + adds r1, #0x35 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r6] + cmp r0, #0 + bne _0803DD54 + adds r1, r5, #0 + adds r1, #0x74 + movs r0, #0xf0 + b _0803DD64 + .align 2, 0 +_0803DD50: .4byte 0x00000127 +_0803DD54: + adds r1, r5, #0 + adds r1, #0x74 + movs r0, #0x70 + strb r0, [r1] + adds r1, r4, #0 + adds r1, #0x45 + ldrb r0, [r1] + orrs r0, r2 +_0803DD64: + strb r0, [r1] + movs r0, #1 + strb r0, [r5, #0xc] + strb r0, [r5, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_0803DD74: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0803DD78 +sub_0803DD78: @ 0x0803DD78 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0x7c + ands r1, r0 + lsrs r2, r1, #2 + adds r0, r4, #0 + adds r0, #0x86 + ldrb r0, [r0] + cmp r0, #1 + beq _0803DDFE + cmp r0, #1 + bgt _0803DD9A + cmp r0, #0 + beq _0803DDA0 + b _0803DDB6 +_0803DD9A: + cmp r0, #2 + beq _0803DE5C + b _0803DDB6 +_0803DDA0: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r1, [r0] + cmp r1, #0 + bne _0803DDBC + subs r0, #0xb + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x77 + movs r0, #0x50 + strb r0, [r1] +_0803DDB6: + adds r5, r4, #0 + adds r5, #0x83 + b _0803DED0 +_0803DDBC: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #5 + bls _0803DDCA + b _0803DED0 +_0803DDCA: + lsls r0, r1, #2 + ldr r1, _0803DDD4 @ =_0803DDD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803DDD4: .4byte _0803DDD8 +_0803DDD8: @ jump table + .4byte _0803DDF0 @ case 0 + .4byte _0803DEC2 @ case 1 + .4byte _0803DDF0 @ case 2 + .4byte _0803DEC2 @ case 3 + .4byte _0803DDF0 @ case 4 + .4byte _0803DEC2 @ case 5 +_0803DDF0: + adds r1, r4, #0 + adds r1, #0x75 + movs r0, #0 + strb r0, [r1] + adds r1, #2 + movs r0, #0x50 + b _0803DECE +_0803DDFE: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #5 + bhi _0803DED0 + lsls r0, r1, #2 + ldr r1, _0803DE14 @ =_0803DE18 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803DE14: .4byte _0803DE18 +_0803DE18: @ jump table + .4byte _0803DE98 @ case 0 + .4byte _0803DEC2 @ case 1 + .4byte _0803DE30 @ case 2 + .4byte _0803DEC2 @ case 3 + .4byte _0803DE46 @ case 4 + .4byte _0803DEC2 @ case 5 +_0803DE30: + movs r1, #8 + ands r1, r2 + cmp r1, #0 + bne _0803DEC2 + adds r0, r4, #0 + adds r0, #0x75 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x77 + movs r0, #0x50 + b _0803DECE +_0803DE46: + movs r0, #8 + ands r2, r0 + cmp r2, #0 + beq _0803DE98 + adds r1, r4, #0 + adds r1, #0x75 + movs r0, #0 + strb r0, [r1] + adds r1, #2 + movs r0, #0x50 + b _0803DECE +_0803DE5C: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #5 + bhi _0803DED0 + lsls r0, r1, #2 + ldr r1, _0803DE74 @ =_0803DE78 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803DE74: .4byte _0803DE78 +_0803DE78: @ jump table + .4byte _0803DE98 @ case 0 + .4byte _0803DEC2 @ case 1 + .4byte _0803DE90 @ case 2 + .4byte _0803DEC2 @ case 3 + .4byte _0803DEA6 @ case 4 + .4byte _0803DEC2 @ case 5 +_0803DE90: + movs r0, #0xf + ands r2, r0 + cmp r2, #2 + bls _0803DEC2 +_0803DE98: + adds r0, r4, #0 + adds r0, #0x75 + movs r1, #1 + strb r1, [r0] + adds r0, #2 + strb r1, [r0] + b _0803DED0 +_0803DEA6: + cmp r2, #9 + bls _0803DEC2 + adds r1, r4, #0 + adds r1, #0x75 + movs r0, #2 + strb r0, [r1] + bl sub_08000E50 + movs r1, #1 + ands r0, r1 + adds r0, #2 + adds r1, r4, #0 + adds r1, #0x77 + b _0803DECE +_0803DEC2: + adds r1, r4, #0 + adds r1, #0x75 + movs r0, #0 + strb r0, [r1] + adds r1, #2 + movs r0, #1 +_0803DECE: + strb r0, [r1] +_0803DED0: + ldrb r0, [r5] + adds r0, #1 + movs r1, #6 + bl __modsi3 + strb r0, [r5] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803DEE0 +sub_0803DEE0: @ 0x0803DEE0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #2 + bl sub_08000E50 + movs r1, #0xf8 + ands r1, r0 + lsrs r2, r1, #3 + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0803DFB8 + adds r0, r4, #0 + adds r0, #0x86 + ldrb r0, [r0] + cmp r0, #1 + beq _0803DF28 + cmp r0, #1 + bgt _0803DF0E + cmp r0, #0 + beq _0803DF14 + b _0803DFB8 +_0803DF0E: + cmp r0, #2 + beq _0803DF68 + b _0803DFB8 +_0803DF14: + adds r0, r4, #0 + adds r0, #0x82 + ldrb r1, [r0] + movs r5, #1 + ands r5, r1 + adds r1, #1 + movs r2, #3 + ands r1, r2 + strb r1, [r0] + b _0803DFB8 +_0803DF28: + adds r0, r4, #0 + adds r0, #0x82 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #4 + bhi _0803DFAC + lsls r0, r1, #2 + ldr r1, _0803DF40 @ =_0803DF44 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803DF40: .4byte _0803DF44 +_0803DF44: @ jump table + .4byte _0803DF9E @ case 0 + .4byte _0803DF58 @ case 1 + .4byte _0803DF9E @ case 2 + .4byte _0803DF58 @ case 3 + .4byte _0803DF5C @ case 4 +_0803DF58: + movs r5, #1 + b _0803DFAC +_0803DF5C: + movs r0, #8 + ands r2, r0 + movs r5, #0 + cmp r2, #0 + beq _0803DFAC + b _0803DF9E +_0803DF68: + adds r0, r4, #0 + adds r0, #0x82 + ldrb r1, [r0] + adds r4, r0, #0 + cmp r1, #4 + bhi _0803DFAC + lsls r0, r1, #2 + ldr r1, _0803DF80 @ =_0803DF84 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803DF80: .4byte _0803DF84 +_0803DF84: @ jump table + .4byte _0803DF9E @ case 0 + .4byte _0803DF98 @ case 1 + .4byte _0803DFA2 @ case 2 + .4byte _0803DF9E @ case 3 + .4byte _0803DFAA @ case 4 +_0803DF98: + movs r5, #0 + cmp r2, #5 + bls _0803DFAC +_0803DF9E: + movs r5, #3 + b _0803DFAC +_0803DFA2: + movs r5, #0 + cmp r2, #9 + bhi _0803DFAC + b _0803DF9E +_0803DFAA: + movs r5, #0 +_0803DFAC: + ldrb r0, [r4] + adds r0, #1 + movs r1, #5 + bl __modsi3 + strb r0, [r4] +_0803DFB8: + adds r0, r5, #0 + pop {r4, r5, pc} + + thumb_func_start sub_0803DFBC +sub_0803DFBC: @ 0x0803DFBC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0803DFCE + ldr r0, [r4, #0x2c] + str r0, [r4, #0x78] + ldr r0, [r4, #0x30] + str r0, [r4, #0x7c] +_0803DFCE: + adds r5, r4, #0 + adds r5, #0x76 + ldrb r0, [r5] + cmp r0, #0 + bne _0803DFFC + ldrb r0, [r4, #0x15] + cmp r0, #0xff + beq _0803E000 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0803E000 + adds r0, r4, #0 + bl sub_08049EE4 + movs r1, #0x10 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r4, #0x15] + movs r0, #0x10 + b _0803DFFE +_0803DFFC: + subs r0, #1 +_0803DFFE: + strb r0, [r5] +_0803E000: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0803E022 + ldrb r0, [r4, #0x14] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0x14] + ldr r1, _0803E024 @ =gUnk_080D04D3 + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x62 + strb r1, [r0] +_0803E022: + pop {r4, r5, pc} + .align 2, 0 +_0803E024: .4byte gUnk_080D04D3 + + thumb_func_start sub_0803E028 +sub_0803E028: @ 0x0803E028 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + adds r0, #0x75 + ldrb r0, [r0] + cmp r0, #2 + beq _0803E046 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803E046 + movs r0, #0 + b _0803E082 +_0803E046: + adds r0, r4, #0 + adds r0, #0x77 + ldrb r0, [r0] + cmp r0, #1 + bne _0803E080 + ldr r2, _0803E084 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + adds r1, r0, #0 + adds r1, #0x58 + ldr r0, _0803E088 @ =gLinkEntity + movs r3, #0x2e + ldrsh r0, [r0, r3] + cmp r1, r0 + bgt _0803E080 + ldrh r2, [r2, #8] + adds r1, r2, #0 + adds r1, #0x58 + cmp r1, r0 + bgt _0803E080 + adds r1, r2, #0 + adds r1, #0xf8 + cmp r1, r0 + blt _0803E080 + adds r1, r4, #0 + adds r1, #0x81 + ldrb r0, [r1] + adds r0, #5 + strb r0, [r1] + movs r5, #1 +_0803E080: + adds r0, r5, #0 +_0803E082: + pop {r4, r5, pc} + .align 2, 0 +_0803E084: .4byte gUnk_03000BF0 +_0803E088: .4byte gLinkEntity + + thumb_func_start sub_0803E08C +sub_0803E08C: @ 0x0803E08C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0803E4A0 + cmp r0, #0 + beq _0803E0AA + ldrb r0, [r5, #0x10] + movs r1, #0x7f + ands r1, r0 + movs r0, #0 + strb r1, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x45 + strb r0, [r1] + str r0, [r5, #0x50] +_0803E0AA: + ldr r4, _0803E0C0 @ =gUnk_080D0648 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0803E0C0: .4byte gUnk_080D0648 + + thumb_func_start sub_0803E0C4 +sub_0803E0C4: @ 0x0803E0C4 + push {lr} + ldr r2, _0803E0D8 @ =gUnk_080D0660 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803E0D8: .4byte gUnk_080D0660 + + thumb_func_start sub_0803E0DC +sub_0803E0DC: @ 0x0803E0DC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _0803E16C + adds r0, r5, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _0803E158 + movs r0, #5 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r6, #0x7f + adds r0, r6, #0 + ands r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r3, _0803E154 @ =gLinkEntity + ldrb r1, [r3, #0x10] + adds r0, r6, #0 + ands r0, r1 + strb r0, [r3, #0x10] + ldrb r2, [r5, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r4, [r3, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r3, #0x1b] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r3, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r3, #0x19] + adds r0, r5, #0 + bl sub_0803E444 + movs r0, #2 + bl sub_08078A90 + ldr r2, [r5, #0x50] + cmp r2, #0 + beq _0803E16C + ldrb r1, [r2, #0x10] + adds r0, r6, #0 + ands r0, r1 + b _0803E16A + .align 2, 0 +_0803E154: .4byte gLinkEntity +_0803E158: + ldr r2, _0803E178 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _0803E17C @ =0xFFFFFEFF + ands r0, r1 + str r0, [r2, #0x30] + ldr r2, _0803E180 @ =gLinkEntity + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 +_0803E16A: + strb r0, [r2, #0x10] +_0803E16C: + ldr r1, _0803E184 @ =gUnk_080D0648 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_0803E178: .4byte gUnk_03003F80 +_0803E17C: .4byte 0xFFFFFEFF +_0803E180: .4byte gLinkEntity +_0803E184: .4byte gUnk_080D0648 + + thumb_func_start sub_0803E188 +sub_0803E188: @ 0x0803E188 + push {lr} + adds r3, r0, #0 + ldr r2, [r3, #0x50] + cmp r2, #0 + beq _0803E19C + ldrb r0, [r2, #0xf] + subs r0, #1 + movs r1, #0 + strb r0, [r2, #0xf] + str r1, [r3, #0x50] +_0803E19C: + adds r0, r3, #0 + bl sub_0804A7D4 + pop {pc} + + thumb_func_start nullsub_19 +nullsub_19: @ 0x0803E1A4 + bx lr + .align 2, 0 + + thumb_func_start sub_0803E1A8 +sub_0803E1A8: @ 0x0803E1A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _0803E1F8 + movs r0, #0x4b + movs r1, #1 + bl sub_0804AA60 + cmp r0, #0 + beq _0803E250 + str r5, [r0, #0x50] + str r0, [r5, #0x54] + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _0803E1D8 + movs r0, #1 + strb r0, [r5, #0xc] + ldr r0, _0803E1D4 @ =0x0000FFE8 + strh r0, [r5, #0x36] + b _0803E1E8 + .align 2, 0 +_0803E1D4: .4byte 0x0000FFE8 +_0803E1D8: + movs r0, #9 + strb r0, [r5, #0xc] + ldr r0, _0803E1F4 @ =0x0000FF80 + strh r0, [r5, #0x36] + adds r1, r5, #0 + adds r1, #0x3b + movs r0, #1 + strb r0, [r1] +_0803E1E8: + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + b _0803E250 + .align 2, 0 +_0803E1F4: .4byte 0x0000FF80 +_0803E1F8: + movs r0, #8 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #1 + strb r0, [r1] + ldr r4, [r5, #0x50] + ldrb r2, [r4, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r4, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x19] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r5, #0x50] + ldr r3, _0803E254 @ =0xFFFF0000 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r5, #0 + movs r1, #1 + bl sub_08004260 +_0803E250: + pop {r4, r5, pc} + .align 2, 0 +_0803E254: .4byte 0xFFFF0000 + + thumb_func_start sub_0803E258 +sub_0803E258: @ 0x0803E258 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803E480 + adds r0, r4, #0 + movs r1, #0 + movs r2, #8 + bl sub_08049F64 + cmp r0, #0 + beq _0803E280 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xa + strb r0, [r4, #0xe] + ldr r0, [r4, #0x54] + movs r1, #2 + bl sub_08004260 + b _0803E29C +_0803E280: + ldr r0, _0803E2A4 @ =gUnk_020000B0 + ldr r1, [r0] + cmp r1, #0 + beq _0803E29C + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + adds r0, r4, #0 + bl sub_0806F69C +_0803E29C: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_0803E2A4: .4byte gUnk_020000B0 + + thumb_func_start sub_0803E2A8 +sub_0803E2A8: @ 0x0803E2A8 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + cmp r0, #0 + beq _0803E2B8 + subs r0, #1 + strb r0, [r1, #0xe] + b _0803E2C8 +_0803E2B8: + ldrh r0, [r1, #0x36] + adds r0, #1 + strh r0, [r1, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803E2C8 + movs r0, #3 + strb r0, [r1, #0xc] +_0803E2C8: + adds r0, r1, #0 + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0803E2D0 +sub_0803E2D0: @ 0x0803E2D0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803E312 + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x18 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _0803E30C + movs r0, #4 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + adds r0, #0xf + strb r0, [r4, #0xe] + ldr r0, [r4, #0x54] + movs r1, #1 + bl sub_08004260 +_0803E30C: + adds r0, r4, #0 + bl sub_08004274 +_0803E312: + pop {r4, pc} + + thumb_func_start sub_0803E314 +sub_0803E314: @ 0x0803E314 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803E332 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r1, _0803E33C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] +_0803E332: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_0803E33C: .4byte gLinkEntity + + thumb_func_start sub_0803E340 +sub_0803E340: @ 0x0803E340 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803E444 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0803E352 + subs r0, #1 + b _0803E36A +_0803E352: + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x18 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _0803E36C + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x14 +_0803E36A: + strb r0, [r4, #0xe] +_0803E36C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803E370 +sub_0803E370: @ 0x0803E370 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803E38E + movs r0, #7 + strb r0, [r1, #0xc] + movs r0, #0x10 + strb r0, [r1, #0x15] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r1, #0x24] +_0803E38E: + adds r0, r1, #0 + bl sub_0803E444 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803E398 +sub_0803E398: @ 0x0803E398 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803E444 + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_0803E4D8 + ldr r1, _0803E3CC @ =gUnk_03000BF0 + ldrh r0, [r1, #8] + ldrh r1, [r1, #0x20] + adds r0, r0, r1 + subs r0, #0x10 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bgt _0803E3C8 + bl sub_0805E5A8 + ldr r0, _0803E3D0 @ =gUnk_0813AB94 + bl sub_08080840 +_0803E3C8: + pop {r4, pc} + .align 2, 0 +_0803E3CC: .4byte gUnk_03000BF0 +_0803E3D0: .4byte gUnk_0813AB94 + + thumb_func_start sub_0803E3D4 +sub_0803E3D4: @ 0x0803E3D4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0803E3E4 + bl sub_0805E780 +_0803E3E4: + ldr r0, [r4, #0x50] + ldr r3, _0803E3F8 @ =0xFFFF0000 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_0803E3F8: .4byte 0xFFFF0000 + + thumb_func_start sub_0803E3FC +sub_0803E3FC: @ 0x0803E3FC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803E438 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + strh r0, [r4, #0x32] + ldrh r2, [r4, #0x36] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0803E43C + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #2 + beq _0803E42E + movs r0, #0 + strb r0, [r4, #0xe] + ldr r0, [r4, #0x54] + movs r1, #2 + bl sub_08004260 +_0803E42E: + adds r0, r4, #0 + bl sub_0803E2A8 + b _0803E442 + .align 2, 0 +_0803E438: .4byte gLinkEntity +_0803E43C: + adds r0, r2, #0 + adds r0, #8 + strh r0, [r4, #0x36] +_0803E442: + pop {r4, pc} + + thumb_func_start sub_0803E444 +sub_0803E444: @ 0x0803E444 + push {r4, lr} + adds r4, r0, #0 + bl sub_08077B2C + ldr r2, _0803E478 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0x1a] + ldrb r1, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] + ldr r1, [r4, #0x4c] + movs r3, #2 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA90 + ldr r1, _0803E47C @ =gLinkEntity + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #0xe + strb r0, [r1] + pop {r4, pc} + .align 2, 0 +_0803E478: .4byte gUnk_03003F80 +_0803E47C: .4byte gLinkEntity + + thumb_func_start sub_0803E480 +sub_0803E480: @ 0x0803E480 + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x78 + ldrh r1, [r2] + movs r0, #0x96 + lsls r0, r0, #3 + cmp r1, r0 + bls _0803E49A + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r3, #0x24] + b _0803E49E +_0803E49A: + adds r0, r1, #1 + strh r0, [r2] +_0803E49E: + pop {pc} + + thumb_func_start sub_0803E4A0 +sub_0803E4A0: @ 0x0803E4A0 + push {lr} + adds r1, r0, #0 + ldr r0, _0803E4B8 @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + beq _0803E4C6 + ldr r1, [r1, #0x50] + cmp r1, #0 + bne _0803E4BC + movs r0, #0 + b _0803E4D6 + .align 2, 0 +_0803E4B8: .4byte gUnk_030010A0 +_0803E4BC: + adds r0, r1, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0803E4CA +_0803E4C6: + movs r0, #1 + b _0803E4D6 +_0803E4CA: + movs r2, #0 + ldr r0, [r1, #4] + cmp r0, #0 + bne _0803E4D4 + movs r2, #1 +_0803E4D4: + adds r0, r2, #0 +_0803E4D6: + pop {pc} + + thumb_func_start sub_0803E4D8 +sub_0803E4D8: @ 0x0803E4D8 + push {r4, r5, lr} + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r3, _0803E51C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r4, r1, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r0, r1] + ldrh r1, [r3, #8] + subs r1, #8 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + ldr r0, _0803E520 @ =gLinkEntity + adds r5, r0, #0 + adds r5, #0x38 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_080002E0 + cmp r0, #0xff + beq _0803E518 + ldr r0, _0803E524 @ =0x00004074 + ldrb r2, [r5] + adds r1, r4, #0 + bl sub_0800015E +_0803E518: + pop {r4, r5, pc} + .align 2, 0 +_0803E51C: .4byte gUnk_03000BF0 +_0803E520: .4byte gLinkEntity +_0803E524: .4byte 0x00004074 + + thumb_func_start sub_0803E528 +sub_0803E528: @ 0x0803E528 + push {lr} + ldr r1, _0803E534 @ =gUnk_080D06E0 + bl sub_0800129E + pop {pc} + .align 2, 0 +_0803E534: .4byte gUnk_080D06E0 + + thumb_func_start sub_0803E538 +sub_0803E538: @ 0x0803E538 + push {lr} + ldr r2, _0803E54C @ =gUnk_080D06F8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803E54C: .4byte gUnk_080D06F8 + + thumb_func_start sub_0803E550 +sub_0803E550: @ 0x0803E550 + push {lr} + ldr r1, _0803E55C @ =gUnk_080D06E0 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_0803E55C: .4byte gUnk_080D06E0 + + thumb_func_start sub_0803E560 +sub_0803E560: @ 0x0803E560 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001324 + + thumb_func_start sub_0803E568 +sub_0803E568: @ 0x0803E568 + adds r0, r4, #0 + bl sub_0803E538 + pop {r4, pc} + + thumb_func_start sub_0803E570 +sub_0803E570: @ 0x0803E570 + push {lr} + movs r1, #0xff + movs r2, #0x57 + bl sub_0804A7E0 + pop {pc} + + thumb_func_start nullsub_20 +nullsub_20: @ 0x0803E57C + bx lr + .align 2, 0 + + thumb_func_start sub_0803E580 +sub_0803E580: @ 0x0803E580 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0804A720 + adds r0, r5, #0 + movs r1, #0x19 + movs r2, #0 + bl sub_0804A98C + cmp r0, #0 + beq _0803E5E4 + str r5, [r0, #0x50] + str r0, [r5, #0x54] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + movs r4, #0 + orrs r0, r1 + strb r0, [r5, #0x10] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x7b + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + adds r1, r5, #0 + adds r1, #0x7e + movs r0, #0x20 + strb r0, [r1] + adds r1, #1 + movs r0, #0xfe + strb r0, [r1] + ldrb r1, [r5, #0x14] + lsls r1, r1, #2 + adds r0, r5, #0 + bl sub_080042AC + adds r0, r5, #0 + bl sub_0803E86C +_0803E5E4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803E5E8 +sub_0803E5E8: @ 0x0803E5E8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + subs r1, #0xa + strb r1, [r0] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r0, r4, #0 + bl sub_0803E9D4 + cmp r0, #0 + bne _0803E61A + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803E61A + adds r0, r4, #0 + bl sub_0803E8CC +_0803E61A: + pop {r4, pc} + + thumb_func_start sub_0803E61C +sub_0803E61C: @ 0x0803E61C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + subs r1, #0xa + strb r1, [r0] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r0, r4, #0 + bl sub_0803E9D4 + cmp r0, #0 + bne _0803E66A + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _0803E654 + adds r0, r4, #0 + bl sub_080AEF88 + cmp r0, #0 + bne _0803E654 + adds r0, r4, #0 + bl sub_0803E86C + b _0803E66A +_0803E654: + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803E66A + adds r0, r4, #0 + bl sub_0803E92C +_0803E66A: + pop {r4, pc} + + thumb_func_start sub_0803E66C +sub_0803E66C: @ 0x0803E66C + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #0x10 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + cmp r0, #0x21 + bhi _0803E68E + adds r0, #1 + strb r0, [r1] +_0803E68E: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803E6A4 + adds r0, r4, #0 + bl sub_0803EA64 + cmp r0, #0 + bne _0803E6B0 +_0803E6A4: + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x7b + movs r0, #0 + strb r0, [r1] +_0803E6B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803E6B4 +sub_0803E6B4: @ 0x0803E6B4 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #0xa + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + cmp r0, #0x20 + bls _0803E6D8 + subs r0, #1 + strb r0, [r1] + b _0803E6DE +_0803E6D8: + adds r0, r4, #0 + bl sub_0803E86C +_0803E6DE: + pop {r4, pc} + + thumb_func_start sub_0803E6E0 +sub_0803E6E0: @ 0x0803E6E0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + subs r1, #0xc + strb r1, [r0] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + subs r0, #4 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bgt _0803E718 + movs r0, #0 + strb r0, [r1] + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x14] + adds r1, #0x20 + adds r0, r4, #0 + bl sub_080042AC +_0803E718: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803E71C +sub_0803E71C: @ 0x0803E71C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _0803E756 + movs r0, #7 + strb r0, [r2, #0xc] + movs r0, #1 + strb r0, [r2, #0xe] + ldr r1, _0803E758 @ =gUnk_080D0724 + ldrb r0, [r2, #0x14] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x7c + strb r1, [r0] + subs r0, #1 + strb r3, [r0] + adds r1, r2, #0 + adds r1, #0x7f + movs r0, #0xf6 + strb r0, [r1] + adds r0, #0x65 + bl sub_08004488 +_0803E756: + pop {pc} + .align 2, 0 +_0803E758: .4byte gUnk_080D0724 + + thumb_func_start sub_0803E75C +sub_0803E75C: @ 0x0803E75C + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803E774 + adds r0, r2, #0 + bl sub_080042B8 + b _0803E7B0 +_0803E774: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + adds r1, r2, #0 + adds r1, #0x7f + cmp r0, #0 + bne _0803E78E + movs r0, #2 + strb r0, [r2, #0xe] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0803E78E: + ldrb r0, [r1] + cmp r0, #0 + beq _0803E7A0 + adds r1, r2, #0 + adds r1, #0x7e + ldrb r0, [r1] + adds r0, #5 + strb r0, [r1] + b _0803E7B0 +_0803E7A0: + movs r0, #8 + strb r0, [r2, #0xc] + movs r0, #0x1e + strb r0, [r2, #0xe] + movs r0, #8 + movs r1, #0 + bl sub_08080964 +_0803E7B0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803E7B4 +sub_0803E7B4: @ 0x0803E7B4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803E7C8 + movs r0, #9 + strb r0, [r1, #0xc] +_0803E7C8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803E7CC +sub_0803E7CC: @ 0x0803E7CC + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x7e + ldrb r0, [r1] + subs r0, #2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _0803E806 + movs r0, #0xa + strb r0, [r2, #0xc] + movs r0, #0x5a + strb r0, [r2, #0xe] + ldrb r0, [r2, #0x14] + lsls r0, r0, #3 + strb r0, [r2, #0x15] + subs r1, #2 + movs r0, #0 + strb r0, [r1] + adds r1, #3 + movs r0, #0xfe + strb r0, [r1] + adds r0, r2, #0 + movs r1, #0x10 + bl sub_0803E94C + b _0803E814 +_0803E806: + cmp r0, #0x12 + bhi _0803E814 + ldr r2, [r2, #0x54] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] +_0803E814: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803E818 +sub_0803E818: @ 0x0803E818 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0803E840 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803E868 + ldr r0, [r4, #0x54] + ldrb r1, [r0, #0x10] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C + b _0803E868 +_0803E840: + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #0xa + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _0803E868 + adds r0, r4, #0 + bl sub_0803E86C +_0803E868: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803E86C +sub_0803E86C: @ 0x0803E86C + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803E898 + adds r0, r4, #0 + movs r1, #0x50 + bl sub_0803EAD0 + cmp r0, #0 + beq _0803E898 + ldr r0, _0803E8C4 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] +_0803E898: + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _0803E8C8 @ =gUnk_080D0728 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #4 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C + pop {r4, pc} + .align 2, 0 +_0803E8C4: .4byte gUnk_020000B0 +_0803E8C8: .4byte gUnk_080D0728 + + thumb_func_start sub_0803E8CC +sub_0803E8CC: @ 0x0803E8CC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0803E8F4 + movs r0, #3 + ands r0, r5 + cmp r0, #0 + beq _0803E8F4 + adds r0, r4, #0 + bl sub_08049EE4 + adds r0, #4 + movs r1, #0x18 + b _0803E8F8 +_0803E8F4: + movs r1, #0x18 + adds r0, r5, #0 +_0803E8F8: + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #2 + strb r0, [r4, #0xc] + ldr r2, _0803E928 @ =gUnk_080D0730 + lsrs r0, r5, #0x10 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #4 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0803E94C + pop {r4, r5, pc} + .align 2, 0 +_0803E928: .4byte gUnk_080D0730 + + thumb_func_start sub_0803E92C +sub_0803E92C: @ 0x0803E92C + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0803E944 + adds r0, r4, #0 + bl sub_0803E86C + b _0803E94A +_0803E944: + adds r0, r4, #0 + bl sub_0803E8CC +_0803E94A: + pop {r4, pc} + + thumb_func_start sub_0803E94C +sub_0803E94C: @ 0x0803E94C + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r6, r1, #0 + ldrb r2, [r3, #0x15] + adds r0, r2, #4 + movs r1, #0x18 + ands r0, r1 + asrs r4, r0, #3 + adds r0, r3, #0 + adds r0, #0x58 + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r6 + bne _0803E988 + movs r0, #7 + ands r0, r2 + ldrb r5, [r3, #0x14] + cmp r0, #4 + bne _0803E984 + lsrs r0, r2, #3 + subs r0, r5, r0 + movs r1, #3 + ands r0, r1 + cmp r0, #1 + ble _0803E9A2 +_0803E984: + cmp r4, r5 + beq _0803E9A2 +_0803E988: + strb r4, [r3, #0x14] + adds r0, r3, #0 + adds r0, #0x58 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + adds r0, r6, r0 + lsls r1, r4, #2 + adds r4, r0, r1 + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_080042AC +_0803E9A2: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0803E9A4 +sub_0803E9A4: @ 0x0803E9A4 + push {r4, lr} + adds r2, r0, #0 + adds r0, #0x7c + ldrb r0, [r0] + adds r0, #0x20 + movs r1, #0xff + ands r0, r1 + asrs r4, r0, #6 + adds r3, r2, #0 + adds r3, #0x58 + ldrb r1, [r3] + movs r0, #3 + ands r0, r1 + cmp r0, r4 + beq _0803E9D2 + ldrb r1, [r3] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + adds r1, r4, r1 + adds r0, r2, #0 + bl sub_080042AC +_0803E9D2: + pop {r4, pc} + + thumb_func_start sub_0803E9D4 +sub_0803E9D4: @ 0x0803E9D4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803EA58 + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0803EAD0 + cmp r0, #0 + beq _0803EA10 + movs r0, #3 + strb r0, [r4, #0xc] + ldr r0, _0803EA0C @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x7b + movs r0, #1 + b _0803EA46 + .align 2, 0 +_0803EA0C: .4byte gUnk_020000B0 +_0803EA10: + adds r0, r4, #0 + movs r1, #0x4e + bl sub_0803EAD0 + cmp r0, #0 + beq _0803EA58 + ldr r0, _0803EA54 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x12 + bl sub_0804A044 + adds r2, r0, #0 + cmp r2, #0xff + beq _0803EA58 + adds r1, r4, #0 + adds r1, #0x7a + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EA60 + movs r0, #5 + strb r0, [r4, #0xc] + strb r2, [r4, #0x15] + movs r0, #4 +_0803EA46: + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C + movs r0, #1 + b _0803EA62 + .align 2, 0 +_0803EA54: .4byte gUnk_020000B0 +_0803EA58: + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #4 + strb r0, [r1] +_0803EA60: + movs r0, #0 +_0803EA62: + pop {r4, pc} + + thumb_func_start sub_0803EA64 +sub_0803EA64: @ 0x0803EA64 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803EAC4 + adds r0, r4, #0 + movs r1, #0x4e + bl sub_0803EAD0 + cmp r0, #0 + beq _0803EAB8 + ldr r0, _0803EAB4 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x12 + bl sub_0804A044 + adds r2, r0, #0 + cmp r2, #0xff + beq _0803EAB8 + adds r1, r4, #0 + adds r1, #0x7a + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EAAE + movs r0, #5 + strb r0, [r4, #0xc] + strb r2, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C +_0803EAAE: + movs r0, #1 + b _0803EACE + .align 2, 0 +_0803EAB4: .4byte gUnk_020000B0 +_0803EAB8: + adds r0, r4, #0 + movs r1, #0x38 + bl sub_0803EAD0 + cmp r0, #0 + bne _0803EAAE +_0803EAC4: + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #4 + strb r0, [r1] + movs r0, #0 +_0803EACE: + pop {r4, pc} + + thumb_func_start sub_0803EAD0 +sub_0803EAD0: @ 0x0803EAD0 + push {r4, lr} + adds r3, r1, #0 + ldr r1, _0803EAE8 @ =gUnk_020000B0 + ldr r2, [r1] + movs r4, #0x2e + ldrsh r1, [r2, r4] + movs r4, #0x32 + ldrsh r2, [r2, r4] + subs r2, #4 + bl sub_0806FCB8 + pop {r4, pc} + .align 2, 0 +_0803EAE8: .4byte gUnk_020000B0 + + thumb_func_start sub_0803EAEC +sub_0803EAEC: @ 0x0803EAEC + push {lr} + ldr r1, _0803EAF8 @ =gUnk_080D0880 + bl sub_0800129E + pop {pc} + .align 2, 0 +_0803EAF8: .4byte gUnk_080D0880 + + thumb_func_start sub_0803EAFC +sub_0803EAFC: @ 0x0803EAFC + push {lr} + ldr r2, _0803EB10 @ =gUnk_080D0898 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0803EB10: .4byte gUnk_080D0898 + + thumb_func_start sub_0803EB14 +sub_0803EB14: @ 0x0803EB14 + push {lr} + ldr r1, _0803EB20 @ =gUnk_080D0880 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_0803EB20: .4byte gUnk_080D0880 + + thumb_func_start sub_0803EB24 +sub_0803EB24: @ 0x0803EB24 + push {r4, lr} + adds r4, r0, #0 + bl sub_08001324 + + thumb_func_start sub_0803EB2C +sub_0803EB2C: @ 0x0803EB2C + adds r0, r4, #0 + bl sub_0803EAFC + pop {r4, pc} + + thumb_func_start sub_0803EB34 +sub_0803EB34: @ 0x0803EB34 + push {lr} + movs r1, #0xff + movs r2, #0x57 + bl sub_0804A7E0 + pop {pc} + + thumb_func_start nullsub_21 +nullsub_21: @ 0x0803EB40 + bx lr + .align 2, 0 + + thumb_func_start sub_0803EB44 +sub_0803EB44: @ 0x0803EB44 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + adds r0, r4, #0 + movs r1, #0x19 + movs r2, #0 + bl sub_0804A98C + cmp r0, #0 + beq _0803EBB2 + str r4, [r0, #0x50] + str r0, [r4, #0x54] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + movs r2, #0 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x7b + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + adds r1, r4, #0 + adds r1, #0x7e + movs r0, #0x28 + strb r0, [r1] + adds r1, #1 + movs r0, #0xfe + strb r0, [r1] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x82 + strh r0, [r1] + ldrb r1, [r4, #0x14] + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0803EE8C +_0803EBB2: + pop {r4, pc} + + thumb_func_start sub_0803EBB4 +sub_0803EBB4: @ 0x0803EBB4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + subs r1, #0xa + strb r1, [r0] + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _0803EBE4 + ldr r0, _0803EC10 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C +_0803EBE4: + adds r0, r4, #0 + bl sub_0803E9A4 + adds r0, r4, #0 + adds r0, #0x80 + ldrh r1, [r0] + adds r0, #2 + ldrh r2, [r0] + adds r0, r4, #0 + movs r3, #2 + bl sub_0806FCB8 + cmp r0, #0 + bne _0803EC14 + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0803E94C + b _0803EC24 + .align 2, 0 +_0803EC10: .4byte gUnk_020000B0 +_0803EC14: + adds r0, r4, #0 + bl sub_0803EF20 + cmp r0, #0 + bne _0803EC24 + adds r0, r4, #0 + bl sub_0803EEA4 +_0803EC24: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803EC28 +sub_0803EC28: @ 0x0803EC28 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #0x10 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + cmp r0, #0x1c + bls _0803EC4A + subs r0, #1 + strb r0, [r1] +_0803EC4A: + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803EC64 + movs r0, #3 + strb r0, [r4, #0xc] + adds r1, #3 + movs r0, #0 + strb r0, [r1] +_0803EC64: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803EC68 +sub_0803EC68: @ 0x0803EC68 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #0xa + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + cmp r0, #0x27 + bhi _0803EC8C + adds r0, #1 + strb r0, [r1] + b _0803EC92 +_0803EC8C: + adds r0, r4, #0 + bl sub_0803EE8C +_0803EC92: + pop {r4, pc} + + thumb_func_start sub_0803EC94 +sub_0803EC94: @ 0x0803EC94 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #0xa + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r5, r4, #0 + adds r5, #0x80 + ldrh r1, [r5] + adds r6, r4, #0 + adds r6, #0x82 + ldrh r2, [r6] + adds r0, r4, #0 + movs r3, #1 + bl sub_0806FCB8 + cmp r0, #0 + beq _0803ECD8 + ldrh r0, [r5] + strh r0, [r4, #0x2e] + ldrh r0, [r6] + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0803EE8C + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C + b _0803ED02 +_0803ECD8: + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _0803ED02 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r5] + ldrh r3, [r6] + bl sub_080045D4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0803E94C + adds r0, r4, #0 + bl sub_080AEF88 +_0803ED02: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0803ED04 +sub_0803ED04: @ 0x0803ED04 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r1, [r0] + subs r1, #0xc + strb r1, [r0] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + subs r0, #4 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bgt _0803ED3C + movs r0, #0 + strb r0, [r1] + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x14] + adds r1, #0x20 + adds r0, r4, #0 + bl sub_080042AC +_0803ED3C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803ED40 +sub_0803ED40: @ 0x0803ED40 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803ED74 + movs r0, #7 + strb r0, [r2, #0xc] + movs r0, #1 + strb r0, [r2, #0xe] + ldr r1, _0803ED78 @ =gUnk_080D08C4 + ldrb r0, [r2, #0x14] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x7c + strb r1, [r0] + adds r1, r2, #0 + adds r1, #0x7f + movs r0, #0xf6 + strb r0, [r1] + adds r0, #0x65 + bl sub_08004488 +_0803ED74: + pop {pc} + .align 2, 0 +_0803ED78: .4byte gUnk_080D08C4 + + thumb_func_start sub_0803ED7C +sub_0803ED7C: @ 0x0803ED7C + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0803ED94 + adds r0, r2, #0 + bl sub_080042B8 + b _0803EDD0 +_0803ED94: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + adds r1, r2, #0 + adds r1, #0x7f + cmp r0, #0 + bne _0803EDAE + movs r0, #2 + strb r0, [r2, #0xe] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] +_0803EDAE: + ldrb r0, [r1] + cmp r0, #0 + beq _0803EDC0 + adds r1, r2, #0 + adds r1, #0x7e + ldrb r0, [r1] + adds r0, #5 + strb r0, [r1] + b _0803EDD0 +_0803EDC0: + movs r0, #8 + strb r0, [r2, #0xc] + movs r0, #0x1e + strb r0, [r2, #0xe] + movs r0, #8 + movs r1, #0 + bl sub_08080964 +_0803EDD0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803EDD4 +sub_0803EDD4: @ 0x0803EDD4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EDE8 + movs r0, #9 + strb r0, [r1, #0xc] +_0803EDE8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803EDEC +sub_0803EDEC: @ 0x0803EDEC + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x7e + ldrb r0, [r1] + subs r0, #2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bhi _0803EE26 + movs r0, #0xa + strb r0, [r2, #0xc] + movs r0, #0x3c + strb r0, [r2, #0xe] + ldrb r0, [r2, #0x14] + lsls r0, r0, #3 + strb r0, [r2, #0x15] + subs r1, #2 + movs r0, #0 + strb r0, [r1] + adds r1, #3 + movs r0, #0xfe + strb r0, [r1] + adds r0, r2, #0 + movs r1, #0x10 + bl sub_0803E94C + b _0803EE34 +_0803EE26: + cmp r0, #0x12 + bhi _0803EE34 + ldr r2, [r2, #0x54] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] +_0803EE34: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803EE38 +sub_0803EE38: @ 0x0803EE38 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0803EE60 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EE88 + ldr r0, [r4, #0x54] + ldrb r1, [r0, #0x10] + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C + b _0803EE88 +_0803EE60: + adds r1, r4, #0 + adds r1, #0x7c + ldrb r0, [r1] + subs r0, #0xa + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803E9A4 + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x27 + bls _0803EE88 + adds r0, r4, #0 + bl sub_0803EE8C +_0803EE88: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803EE8C +sub_0803EE8C: @ 0x0803EE8C + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x7a + movs r1, #0x1e + strb r1, [r2] + movs r1, #0 + bl sub_0803E94C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803EEA4 +sub_0803EEA4: @ 0x0803EEA4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803EEF8 + adds r0, r4, #0 + movs r1, #0x4e + bl sub_0803EF04 + cmp r0, #0 + beq _0803EEF8 + ldr r0, _0803EEF4 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x12 + bl sub_0804A044 + adds r2, r0, #0 + cmp r2, #0xff + beq _0803EEF8 + adds r1, r4, #0 + adds r1, #0x7a + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803EF00 + movs r0, #5 + strb r0, [r4, #0xc] + strb r2, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_0803E94C + movs r0, #1 + b _0803EF02 + .align 2, 0 +_0803EEF4: .4byte gUnk_020000B0 +_0803EEF8: + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0x1e + strb r0, [r1] +_0803EF00: + movs r0, #0 +_0803EF02: + pop {r4, pc} + + thumb_func_start sub_0803EF04 +sub_0803EF04: @ 0x0803EF04 + push {r4, lr} + adds r3, r1, #0 + ldr r1, _0803EF1C @ =gUnk_020000B0 + ldr r2, [r1] + movs r4, #0x2e + ldrsh r1, [r2, r4] + movs r4, #0x32 + ldrsh r2, [r2, r4] + subs r2, #4 + bl sub_0806FCB8 + pop {r4, pc} + .align 2, 0 +_0803EF1C: .4byte gUnk_020000B0 + + thumb_func_start sub_0803EF20 +sub_0803EF20: @ 0x0803EF20 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r6, _0803EF5C @ =gUnk_03003D80 + ldr r4, [r6, #4] + cmp r4, r6 + beq _0803EF6A + ldr r7, _0803EF60 @ =gUnk_080D08C8 +_0803EF2E: + ldrb r0, [r4, #8] + cmp r0, #8 + bne _0803EF64 + ldrb r0, [r4, #9] + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r2, [r0] + adds r0, r5, #0 + adds r1, r4, #0 + bl _call_via_r2 + cmp r0, #0 + beq _0803EF64 + movs r0, #2 + strb r0, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x78 + movs r0, #0xb4 + strh r0, [r1] + adds r1, #3 + movs r0, #1 + strb r0, [r1] + b _0803EF6C + .align 2, 0 +_0803EF5C: .4byte gUnk_03003D80 +_0803EF60: .4byte gUnk_080D08C8 +_0803EF64: + ldr r4, [r4, #4] + cmp r4, r6 + bne _0803EF2E +_0803EF6A: + movs r0, #0 +_0803EF6C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0803EF70 +sub_0803EF70: @ 0x0803EF70 + movs r0, #0 + bx lr + + thumb_func_start sub_0803EF74 +sub_0803EF74: @ 0x0803EF74 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x32 + ldrsh r2, [r4, r0] + adds r0, r5, #0 + movs r3, #0x50 + bl sub_0806FCB8 + cmp r0, #0 + beq _0803EFA8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080045C4 + ldrb r1, [r4, #0x15] + subs r1, r1, r0 + adds r1, #2 + movs r0, #0x1f + ands r1, r0 + cmp r1, #4 + bhi _0803EFA8 + movs r0, #1 + b _0803EFAA +_0803EFA8: + movs r0, #0 +_0803EFAA: + pop {r4, r5, pc} + + thumb_func_start sub_0803EFAC +sub_0803EFAC: @ 0x0803EFAC + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r2, #0x50 + movs r3, #0x50 + bl sub_080041A0 + cmp r0, #0 + beq _0803EFD6 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x1c + bl sub_0804A044 + cmp r0, #0xff + beq _0803EFD6 + ldrb r4, [r4, #0x15] + cmp r0, r4 + bne _0803EFD6 + movs r0, #1 + b _0803EFD8 +_0803EFD6: + movs r0, #0 +_0803EFD8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803EFDC +sub_0803EFDC: @ 0x0803EFDC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0803F004 @ =gUnk_080D0924 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_0803F004: .4byte gUnk_080D0924 + + thumb_func_start sub_0803F008 +sub_0803F008: @ 0x0803F008 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0803F024 @ =gUnk_080D093C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0803F694 + pop {r4, pc} + .align 2, 0 +_0803F024: .4byte gUnk_080D093C + + thumb_func_start sub_0803F028 +sub_0803F028: @ 0x0803F028 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0803F05C + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + lsrs r1, r1, #4 + movs r0, #1 + eors r1, r0 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0803F630 + adds r0, r4, #0 + bl sub_0803F6EC +_0803F05C: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x41 + cmp r0, #0x25 + bne _0803F07E + ldrb r0, [r1] + cmp r0, #0x80 + bne _0803F07E + movs r0, #8 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + b _0803F0E4 +_0803F07E: + ldrb r0, [r1] + cmp r0, #0x9d + bne _0803F08A + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_0803F08A: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0803F0B0 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsrs r0, r0, #4 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #7 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0803F0B0: + adds r0, r4, #0 + adds r0, #0x45 + adds r1, r4, #0 + adds r1, #0x7a + ldrb r0, [r0] + ldrb r2, [r1] + cmp r0, r2 + beq _0803F0E4 + strb r0, [r1] + ldrb r0, [r4, #0xc] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0803F0D4 + adds r0, r4, #0 + bl sub_0803F51C +_0803F0D4: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + lsrs r1, r1, #4 + adds r1, #7 + adds r0, r4, #0 + bl sub_08004260 +_0803F0E4: + ldr r1, _0803F0F0 @ =gUnk_080D0924 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_0803F0F0: .4byte gUnk_080D0924 + + thumb_func_start sub_0803F0F4 +sub_0803F0F4: @ 0x0803F0F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_08001328 + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _0803F144 + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _0803F144 + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + bne _0803F144 + movs r0, #0xff + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x58 + ldrb r0, [r1] + subs r0, #7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0803F144 + ldrb r1, [r1] + subs r1, #7 + movs r0, #1 + eors r1, r0 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 +_0803F144: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803F148 +sub_0803F148: @ 0x0803F148 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _0803F164 + ldrb r1, [r4, #0x14] + adds r1, #7 + adds r0, r4, #0 + bl sub_08004260 +_0803F164: + adds r0, r4, #0 + bl sub_08001242 + ldrh r1, [r4, #0x36] + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _0803F178 + ldr r0, _0803F1A4 @ =0x0000FFFF + strh r0, [r4, #0x36] +_0803F178: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + bne _0803F1A0 + ldrb r0, [r4, #0x14] + movs r1, #1 + eors r1, r0 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 + movs r0, #0xff + strb r0, [r4, #0x15] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0803F630 +_0803F1A0: + pop {r4, pc} + .align 2, 0 +_0803F1A4: .4byte 0x0000FFFF + + thumb_func_start sub_0803F1A8 +sub_0803F1A8: @ 0x0803F1A8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _0803F1CC + ldr r0, _0803F1C8 @ =gUnk_080D0964 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0803F1DE + .align 2, 0 +_0803F1C8: .4byte gUnk_080D0964 +_0803F1CC: + adds r0, r4, #0 + bl sub_0803F51C + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 +_0803F1DE: + pop {r4, pc} + + thumb_func_start sub_0803F1E0 +sub_0803F1E0: @ 0x0803F1E0 + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + ldr r1, _0803F1F8 @ =gLinkEntity + ldrb r1, [r1, #0x14] + lsrs r1, r1, #2 + adds r1, #5 + bl sub_08004260 + pop {pc} + .align 2, 0 +_0803F1F8: .4byte gLinkEntity + + thumb_func_start sub_0803F1FC +sub_0803F1FC: @ 0x0803F1FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F4E8 + pop {r4, pc} + + thumb_func_start sub_0803F20C +sub_0803F20C: @ 0x0803F20C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0803F244 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + cmp r0, #0 + beq _0803F23E + adds r2, r0, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_0803F23E: + adds r0, r4, #0 + bl sub_0804A7D4 +_0803F244: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803F248 +sub_0803F248: @ 0x0803F248 + push {r4, lr} + adds r4, r0, #0 + bl sub_0804A720 + bl sub_08000E50 + movs r2, #0x1e + adds r1, r0, #0 + ands r1, r2 + movs r2, #0 + strb r1, [r4, #0x15] + movs r1, #0xff + strb r1, [r4, #0x14] + movs r1, #1 + strb r1, [r4, #0x1c] + adds r1, r4, #0 + adds r1, #0x45 + ldrb r1, [r1] + adds r3, r4, #0 + adds r3, #0x7a + strb r1, [r3] + lsrs r0, r0, #4 + adds r1, r4, #0 + adds r1, #0x7b + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7c + strh r2, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0803F28E + adds r0, r4, #0 + bl sub_0803F50C + b _0803F2A0 +_0803F28E: + adds r0, r4, #0 + bl sub_0803F51C + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 +_0803F2A0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803F2A4 +sub_0803F2A4: @ 0x0803F2A4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803F5A8 + cmp r0, #0 + beq _0803F2C0 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x60 + ands r0, r1 + adds r0, #0xa + strb r0, [r4, #0xe] +_0803F2C0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803F2C4 +sub_0803F2C4: @ 0x0803F2C4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803F5A8 + cmp r0, #0 + bne _0803F2D8 + adds r0, r4, #0 + bl sub_0803F50C + b _0803F322 +_0803F2D8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803F322 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _0803F308 + ldr r0, _0803F304 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + b _0803F310 + .align 2, 0 +_0803F304: .4byte gUnk_020000B0 +_0803F308: + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 +_0803F310: + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #4 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 +_0803F322: + pop {r4, pc} + + thumb_func_start sub_0803F324 +sub_0803F324: @ 0x0803F324 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803F33E + adds r0, r4, #0 + bl sub_0803F51C +_0803F33E: + pop {r4, pc} + + thumb_func_start sub_0803F340 +sub_0803F340: @ 0x0803F340 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803F5D4 + cmp r0, #0 + bne _0803F36A + adds r0, r4, #0 + bl sub_0803F58C + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803F36A + adds r0, r4, #0 + bl sub_0803F51C +_0803F36A: + pop {r4, pc} + + thumb_func_start sub_0803F36C +sub_0803F36C: @ 0x0803F36C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0803F3A6 + adds r0, r4, #0 + bl sub_0803F66C + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0803F3AC + movs r0, #6 + strb r0, [r4, #0xc] + adds r0, #0xfa + strh r0, [r4, #0x24] + b _0803F3AC +_0803F3A6: + adds r0, r4, #0 + bl sub_0803F51C +_0803F3AC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803F3B0 +sub_0803F3B0: @ 0x0803F3B0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803F5A8 + cmp r0, #0 + bne _0803F3C4 + adds r0, r4, #0 + bl sub_0803F51C + b _0803F41C +_0803F3C4: + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _0803F414 + ldrb r1, [r4, #0xe] + adds r1, #1 + strb r1, [r4, #0xe] + ldr r2, _0803F40C @ =gUnk_080D0970 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x1e + adds r0, r0, r2 + ldrb r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0803F3F6 + ldr r0, _0803F410 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_0803F3F6: + adds r0, r4, #0 + bl sub_0803F66C + adds r0, r4, #0 + bl sub_080AEFB4 + adds r0, r4, #0 + bl sub_08004274 + b _0803F41C + .align 2, 0 +_0803F40C: .4byte gUnk_080D0970 +_0803F410: .4byte gUnk_020000B0 +_0803F414: + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] +_0803F41C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803F420 +sub_0803F420: @ 0x0803F420 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803F43A + adds r0, r4, #0 + bl sub_0803F51C +_0803F43A: + pop {r4, pc} + + thumb_func_start sub_0803F43C +sub_0803F43C: @ 0x0803F43C + push {r4, lr} + adds r4, r0, #0 + bl sub_0803F738 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0803F474 + movs r2, #0 + movs r0, #9 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x78 + strh r2, [r0] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_0803F474: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0803F478 +sub_0803F478: @ 0x0803F478 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0803F494 + adds r0, r4, #0 + bl sub_0803F6C0 +_0803F494: + bl sub_0807953C + adds r1, r4, #0 + adds r1, #0x78 + cmp r0, #0 + beq _0803F4A6 + ldrh r0, [r1] + adds r0, #0xc + strh r0, [r1] +_0803F4A6: + ldr r2, _0803F500 @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0803F4B6 + movs r0, #0xe0 + strh r0, [r1] +_0803F4B6: + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xdf + bls _0803F504 + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x78 + strh r0, [r1] + movs r0, #0xff + strb r0, [r4, #0x14] + subs r1, #0x3f + movs r0, #0xf4 + strb r0, [r1] + adds r1, #5 + movs r0, #0x14 + strb r0, [r1] + adds r1, #4 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803F51C + adds r0, r4, #0 + bl sub_0803F6EC + b _0803F50A + .align 2, 0 +_0803F500: .4byte gLinkEntity +_0803F504: + adds r0, r4, #0 + bl sub_0803F738 +_0803F50A: + pop {r4, pc} + + thumb_func_start sub_0803F50C +sub_0803F50C: @ 0x0803F50C + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #9 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0803F51C +sub_0803F51C: @ 0x0803F51C + push {lr} + movs r1, #4 + strb r1, [r0, #0xc] + bl sub_0803F528 + pop {pc} + + thumb_func_start sub_0803F528 +sub_0803F528: @ 0x0803F528 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #8 + adds r1, r5, #0 + ands r1, r0 + adds r1, #8 + strb r1, [r4, #0xe] + adds r0, r4, #0 + bl sub_08049FA0 + cmp r0, #0 + beq _0803F55C + ldr r1, _0803F558 @ =gUnk_080D0978 + movs r0, #7 + ands r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + b _0803F562 + .align 2, 0 +_0803F558: .4byte gUnk_080D0978 +_0803F55C: + adds r0, r4, #0 + bl sub_08049EE4 +_0803F562: + movs r1, #0x1e + ands r0, r1 + strb r0, [r4, #0x15] + ldr r2, _0803F588 @ =gUnk_080D0974 + lsrs r0, r5, #4 + movs r1, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x24 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0803F66C + pop {r4, r5, pc} + .align 2, 0 +_0803F588: .4byte gUnk_080D0974 + + thumb_func_start sub_0803F58C +sub_0803F58C: @ 0x0803F58C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x30] + bl sub_080AEFB4 + ldr r1, [r5, #0x30] + subs r4, r1, r4 + lsrs r0, r4, #0x1f + adds r4, r4, r0 + asrs r4, r4, #1 + subs r1, r1, r4 + str r1, [r5, #0x30] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803F5A8 +sub_0803F5A8: @ 0x0803F5A8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + bne _0803F5BA + movs r0, #0 + b _0803F5D2 +_0803F5BA: + ldr r0, _0803F5CC @ =gUnk_02033A90 + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0xf + bgt _0803F5D0 + adds r0, r4, #0 + bl sub_0806FD54 + b _0803F5D2 + .align 2, 0 +_0803F5CC: .4byte gUnk_02033A90 +_0803F5D0: + movs r0, #1 +_0803F5D2: + pop {r4, pc} + + thumb_func_start sub_0803F5D4 +sub_0803F5D4: @ 0x0803F5D4 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0 + beq _0803F5E8 + subs r0, #1 + strh r0, [r1] + b _0803F62C +_0803F5E8: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _0803F62C + adds r0, r4, #0 + bl sub_0806FD54 + cmp r0, #0 + bne _0803F61A + ldr r0, _0803F624 @ =gUnk_02033A90 + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0xf + ble _0803F62C + ldr r0, _0803F628 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x70 + movs r3, #0x48 + bl sub_080041A0 + cmp r0, #0 + beq _0803F62C +_0803F61A: + adds r0, r4, #0 + bl sub_0803F630 + movs r0, #1 + b _0803F62E + .align 2, 0 +_0803F624: .4byte gUnk_02033A90 +_0803F628: .4byte gUnk_020000B0 +_0803F62C: + movs r0, #0 +_0803F62E: + pop {r4, pc} + + thumb_func_start sub_0803F630 +sub_0803F630: @ 0x0803F630 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #5 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x25 + strb r0, [r1] + movs r5, #0 + ldr r0, _0803F664 @ =gUnk_03004040 + ldr r0, [r0] + cmp r0, #0 + beq _0803F64C + movs r5, #0x3c +_0803F64C: + bl sub_08000E50 + ldr r2, _0803F668 @ =gUnk_080D0980 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r5 + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + pop {r4, r5, pc} + .align 2, 0 +_0803F664: .4byte gUnk_03004040 +_0803F668: .4byte gUnk_080D0980 + + thumb_func_start sub_0803F66C +sub_0803F66C: @ 0x0803F66C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0803F680 + ldrb r0, [r2, #0x14] + cmp r0, #0xff + bne _0803F692 +_0803F680: + lsrs r0, r1, #4 + ldrb r1, [r2, #0x14] + cmp r0, r1 + beq _0803F692 + strb r0, [r2, #0x14] + adds r1, r0, #1 + adds r0, r2, #0 + bl sub_08004260 +_0803F692: + pop {pc} + + thumb_func_start sub_0803F694 +sub_0803F694: @ 0x0803F694 + push {r4, lr} + ldr r3, _0803F6BC @ =gUnk_080D0984 + movs r1, #0x7b + adds r1, r1, r0 + mov ip, r1 + ldrb r1, [r1] + adds r2, r1, #1 + mov r4, ip + strb r2, [r4] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1b + movs r2, #3 + ands r1, r2 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + strh r1, [r0, #0x36] + pop {r4, pc} + .align 2, 0 +_0803F6BC: .4byte gUnk_080D0984 + + thumb_func_start sub_0803F6C0 +sub_0803F6C0: @ 0x0803F6C0 + push {r4, lr} + adds r0, #0x5a + ldrb r2, [r0] + movs r1, #0xfe + ands r1, r2 + strb r1, [r0] + ldr r4, _0803F6E8 @ =gLinkEntity + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xc + strb r0, [r1] + subs r0, #0x10 + bl sub_080526A0 + adds r0, r4, #0 + movs r1, #0x7a + bl sub_0800449C + pop {r4, pc} + .align 2, 0 +_0803F6E8: .4byte gLinkEntity + + thumb_func_start sub_0803F6EC +sub_0803F6EC: @ 0x0803F6EC + push {lr} + ldr r2, _0803F72C @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x45 + ldrb r0, [r0] + ldr r3, _0803F730 @ =gUnk_03003F80 + cmp r0, #0 + beq _0803F720 + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r2, #0x20] + ldr r0, _0803F734 @ =0x0000FFFE + strh r0, [r2, #0x36] + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + strb r0, [r2, #0x15] + adds r1, r2, #0 + adds r1, #0x3d + movs r0, #0xc4 + strb r0, [r1] + movs r0, #0x41 + strb r0, [r3, #2] +_0803F720: + ldr r0, [r3, #0x30] + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r3, #0x30] + pop {pc} + .align 2, 0 +_0803F72C: .4byte gLinkEntity +_0803F730: .4byte gUnk_03003F80 +_0803F734: .4byte 0x0000FFFE + + thumb_func_start sub_0803F738 +sub_0803F738: @ 0x0803F738 + push {r4, lr} + adds r4, r0, #0 + bl sub_08077B2C + ldr r2, _0803F768 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0x1a] + ldrb r1, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] + ldr r0, _0803F76C @ =gLinkEntity + adds r1, r4, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806FA90 + adds r4, #0x63 + ldrb r0, [r4] + subs r0, #2 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_0803F768: .4byte gUnk_03003F80 +_0803F76C: .4byte gLinkEntity + + thumb_func_start sub_0803F770 +sub_0803F770: @ 0x0803F770 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #5 + bhi _0803F810 + lsls r0, r0, #2 + ldr r1, _0803F784 @ =_0803F788 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803F784: .4byte _0803F788 +_0803F788: @ jump table + .4byte _0803F7A0 @ case 0 + .4byte _0803F7D0 @ case 1 + .4byte _0803F7D8 @ case 2 + .4byte _0803F7E0 @ case 3 + .4byte _0803F7E8 @ case 4 + .4byte _0803F800 @ case 5 +_0803F7A0: + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0803F7C8 + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + adds r2, r4, #0 + adds r2, #0x7a + strh r0, [r2] + ldrh r0, [r4, #0x2e] + strh r0, [r1] + adds r1, #4 + ldrh r0, [r1] + adds r2, #4 + strh r0, [r2] + ldrh r0, [r4, #0x32] + strh r0, [r1] + adds r0, r4, #0 + bl sub_080409B0 +_0803F7C8: + ldr r0, _0803F7CC @ =gUnk_080D0AC8 + b _0803F7EA + .align 2, 0 +_0803F7CC: .4byte gUnk_080D0AC8 +_0803F7D0: + ldr r0, _0803F7D4 @ =gUnk_080D0AE8 + b _0803F7EA + .align 2, 0 +_0803F7D4: .4byte gUnk_080D0AE8 +_0803F7D8: + ldr r0, _0803F7DC @ =gUnk_080D0AF0 + b _0803F7EA + .align 2, 0 +_0803F7DC: .4byte gUnk_080D0AF0 +_0803F7E0: + ldr r0, _0803F7E4 @ =gUnk_080D0AFC + b _0803F7EA + .align 2, 0 +_0803F7E4: .4byte gUnk_080D0AFC +_0803F7E8: + ldr r0, _0803F7FC @ =gUnk_080D0B04 +_0803F7EA: + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0803F810 + .align 2, 0 +_0803F7FC: .4byte gUnk_080D0B04 +_0803F800: + ldr r0, _0803F814 @ =gUnk_080D0B0C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0803F810: + pop {r4, pc} + .align 2, 0 +_0803F814: .4byte gUnk_080D0B0C + + thumb_func_start sub_0803F818 +sub_0803F818: @ 0x0803F818 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl sub_0804A720 + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + beq _0803F910 + ldr r0, _0803F8FC @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x50 + bhi _0803F910 + movs r4, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + adds r3, r5, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r3] + adds r1, r5, #0 + adds r1, #0x6d + ldrb r0, [r1] + orrs r2, r0 + strb r2, [r1] + bl sub_08000E50 + movs r1, #0x17 + ands r0, r1 + adds r0, #4 + strb r0, [r5, #0x15] + movs r0, #0x30 + strb r0, [r5, #0xe] + movs r0, #0xc + strb r0, [r5, #0xf] + adds r1, r5, #0 + adds r1, #0x82 + movs r0, #4 + strb r0, [r1] + subs r1, #2 + movs r0, #0xff + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x74 + strb r4, [r0] + adds r0, #3 + strb r4, [r0] + adds r1, #4 + movs r0, #9 + strb r0, [r1] + strb r4, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x86 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + ldrh r1, [r5, #0x2e] + subs r0, #0xf + strh r1, [r0] + ldrh r0, [r5, #0x2e] + adds r1, r5, #0 + adds r1, #0x7a + strh r0, [r1] + ldrh r1, [r5, #0x32] + adds r0, r5, #0 + adds r0, #0x7c + strh r1, [r0] + ldrh r0, [r5, #0x32] + adds r1, r5, #0 + adds r1, #0x7e + strh r0, [r1] + movs r4, #1 + adds r7, r5, #0 + adds r7, #0x75 +_0803F8C2: + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_08040648 + adds r4, #1 + cmp r4, #5 + bls _0803F8C2 + bl sub_08000E50 + adds r0, r5, #0 + bl sub_080408EC + movs r4, #0 + movs r6, #1 +_0803F8E0: + movs r0, #0x5a + movs r1, #0 + bl sub_0804AA60 + str r5, [r0, #0x50] + strb r4, [r0, #0xb] + ldrb r1, [r7] + asrs r1, r4 + ands r1, r6 + cmp r1, #0 + beq _0803F900 + strb r6, [r0, #0xe] + b _0803F902 + .align 2, 0 +_0803F8FC: .4byte gUnk_03003DBC +_0803F900: + strb r1, [r0, #0xe] +_0803F902: + adds r4, #1 + cmp r4, #7 + bls _0803F8E0 + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC +_0803F910: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0803F914 +sub_0803F914: @ 0x0803F914 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + adds r4, r7, #0 + adds r4, #0x80 + ldrb r0, [r4] + cmp r0, #2 + beq _0803F998 + cmp r0, #2 + bgt _0803F932 + cmp r0, #0 + beq _0803F95A + cmp r0, #1 + beq _0803F97A + b _0803FA40 +_0803F932: + cmp r0, #4 + bne _0803F938 + b _0803FA3A +_0803F938: + cmp r0, #4 + blt _0803F9CE + adds r3, r4, #0 + cmp r0, #0xff + beq _0803F944 + b _0803FA42 +_0803F944: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0803FA42 + strb r0, [r3] + movs r0, #0xb + strb r0, [r7, #0xe] + b _0803FA42 +_0803F95A: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + adds r3, r4, #0 + cmp r0, #0 + bne _0803FA42 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r7, #0x24] + movs r0, #0x14 + strb r0, [r7, #0xe] + b _0803FA42 +_0803F97A: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + adds r3, r4, #0 + cmp r0, #0 + bne _0803FA42 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + movs r0, #0xc0 + strh r0, [r7, #0x24] + movs r0, #0xc + strb r0, [r7, #0xe] + b _0803FA42 +_0803F998: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r3, r4, #0 + cmp r1, #0 + bne _0803FA42 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + strh r1, [r7, #0x24] + ldrb r0, [r7, #0x14] + cmp r0, #1 + bhi _0803F9C8 + str r3, [sp] + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x40 + strb r0, [r7, #0xe] + ldr r3, [sp] + b _0803FA42 +_0803F9C8: + movs r0, #8 + strb r0, [r7, #0xe] + b _0803FA42 +_0803F9CE: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0803FA32 + movs r0, #0 + strh r1, [r7, #0x36] + strb r0, [r4] + ldr r1, _0803FA04 @ =gUnk_080D0ABF + ldrb r0, [r7, #0x14] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r7, #0xe] + adds r0, r7, #0 + bl sub_08040934 + adds r1, r0, #0 + cmp r1, #2 + beq _0803FA1A + cmp r1, #2 + bhi _0803FA08 + cmp r1, #1 + beq _0803FA0E + b _0803FA26 + .align 2, 0 +_0803FA04: .4byte gUnk_080D0ABF +_0803FA08: + cmp r1, #3 + beq _0803FA20 + b _0803FA26 +_0803FA0E: + movs r0, #4 + strb r0, [r7, #0xc] + adds r0, r7, #0 + adds r0, #0x74 + strb r1, [r0] + b _0803FA40 +_0803FA1A: + movs r0, #5 + strb r0, [r7, #0xc] + b _0803FA40 +_0803FA20: + movs r0, #6 + strb r0, [r7, #0xc] + b _0803FA40 +_0803FA26: + adds r1, r7, #0 + adds r1, #0x80 + movs r0, #4 + strb r0, [r1] + adds r3, r1, #0 + b _0803FA42 +_0803FA32: + adds r0, r7, #0 + bl sub_08040AD4 + b _0803FA40 +_0803FA3A: + adds r0, r7, #0 + bl sub_08040670 +_0803FA40: + adds r3, r4, #0 +_0803FA42: + adds r1, r7, #0 + adds r1, #0x82 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803FAAC + movs r0, #4 + strb r0, [r1] + ldrb r2, [r7, #0x15] + adds r2, #0x12 + movs r0, #0x1c + ands r2, r0 + asrs r2, r2, #2 + movs r0, #0x9b + movs r1, #0 + str r3, [sp] + bl sub_080A2960 + adds r6, r0, #0 + ldr r3, [sp] + cmp r6, #0 + beq _0803FAAC + str r7, [r6, #0x50] + str r3, [sp] + bl sub_08000E50 + movs r5, #0xf + ands r0, r5 + ldr r1, _0803FAC4 @ =0x0000FFF9 + adds r4, r1, #0 + adds r0, r4, r0 + ldrh r1, [r6, #0x2e] + adds r0, r0, r1 + strh r0, [r6, #0x2e] + bl sub_08000E50 + ands r0, r5 + adds r4, r4, r0 + ldrh r0, [r6, #0x32] + adds r4, r4, r0 + strh r4, [r6, #0x32] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldr r3, [sp] +_0803FAAC: + ldrb r0, [r3] + cmp r0, #0xff + beq _0803FAB8 + adds r0, r7, #0 + bl sub_080AEF88 +_0803FAB8: + adds r0, r7, #0 + bl sub_080042B8 + add sp, #4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0803FAC4: .4byte 0x0000FFF9 + + thumb_func_start sub_0803FAC8 +sub_0803FAC8: @ 0x0803FAC8 + push {lr} + bl sub_080042B8 + pop {pc} + + thumb_func_start sub_0803FAD0 +sub_0803FAD0: @ 0x0803FAD0 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #5 + bls _0803FADE + b _0803FD32 +_0803FADE: + lsls r0, r0, #2 + ldr r1, _0803FAE8 @ =_0803FAEC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0803FAE8: .4byte _0803FAEC +_0803FAEC: @ jump table + .4byte _0803FB04 @ case 0 + .4byte _0803FB34 @ case 1 + .4byte _0803FBB8 @ case 2 + .4byte _0803FBE2 @ case 3 + .4byte _0803FC80 @ case 4 + .4byte _0803FD0C @ case 5 +_0803FB04: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r7, #0 + bl sub_080044EC + adds r1, r0, #0 + cmp r1, #1 + beq _0803FB16 + b _0803FD32 +_0803FB16: + adds r0, r7, #0 + adds r0, #0x80 + strb r1, [r0] + movs r0, #0xc0 + strb r0, [r7, #0xe] + ldrb r1, [r7, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r7, #0x10] + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x14 + b _0803FC4A +_0803FB34: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + adds r3, r7, #0 + adds r3, #0x80 + cmp r2, #0 + bne _0803FB58 + movs r0, #2 + strb r0, [r3] + adds r1, r7, #0 + adds r1, #0x3f + movs r0, #0x35 + strb r0, [r1] + adds r0, r7, #0 + adds r0, #0x62 + strb r2, [r0] +_0803FB58: + adds r2, r7, #0 + adds r2, #0x45 + ldr r0, _0803FB70 @ =gUnk_080D0ABC + ldrb r1, [r7, #0x14] + adds r1, r1, r0 + ldrb r0, [r2] + ldrb r1, [r1] + cmp r0, r1 + bhs _0803FB74 + movs r0, #1 + strb r0, [r7, #0xe] + b _0803FB76 + .align 2, 0 +_0803FB70: .4byte gUnk_080D0ABC +_0803FB74: + movs r0, #0 +_0803FB76: + cmp r0, #0 + bne _0803FB7C + b _0803FD32 +_0803FB7C: + movs r1, #0 + movs r0, #2 + strb r0, [r3] + adds r2, r7, #0 + adds r2, #0x3f + movs r0, #0x35 + strb r0, [r2] + adds r0, r7, #0 + adds r0, #0x62 + strb r1, [r0] + ldrb r0, [r7, #0x14] + adds r0, #1 + strb r0, [r7, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _0803FBA0 + b _0803FD32 +_0803FBA0: + movs r0, #7 + strb r0, [r7, #0xc] + movs r0, #0xe0 + strb r0, [r7, #0xe] + bl sub_0807A108 + ldr r0, _0803FBB4 @ =0x00000127 + bl sub_080A3268 + b _0803FD4E + .align 2, 0 +_0803FBB4: .4byte 0x00000127 +_0803FBB8: + ldr r0, [r7, #0x54] + adds r0, #0x74 + movs r1, #0x10 + strb r1, [r0] + ldrb r0, [r7, #0xe] + cmp r0, #0 + beq _0803FBD4 + adds r0, r7, #0 + adds r0, #0x80 + movs r1, #3 + strb r1, [r0] + movs r0, #0x40 + strb r0, [r7, #0xe] + b _0803FD32 +_0803FBD4: + adds r0, r7, #0 + adds r0, #0x80 + movs r1, #4 + strb r1, [r0] + movs r0, #0x50 + strb r0, [r7, #0xe] + b _0803FD32 +_0803FBE2: + ldrb r0, [r7, #0xe] + cmp r0, #0 + beq _0803FC08 + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0803FBF4 + b _0803FD32 +_0803FBF4: + ldrb r1, [r7, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r7, #0x10] + movs r0, #0xe0 + lsls r0, r0, #0xa + str r0, [r7, #0x20] + movs r0, #0x10 + strb r0, [r7, #0xf] + b _0803FD32 +_0803FC08: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r7, #0 + bl sub_08003FC4 + adds r2, r0, #0 + cmp r2, #0 + bne _0803FC52 + adds r1, r7, #0 + adds r1, #0x80 + movs r0, #5 + strb r0, [r1] + movs r0, #0x10 + strb r0, [r7, #0xe] + ldrb r1, [r7, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r7, #0x10] + adds r1, r7, #0 + adds r1, #0x45 + movs r0, #0xff + strb r0, [r1] + adds r0, r7, #0 + adds r0, #0x86 + strb r2, [r0] + adds r0, r7, #0 + bl sub_080408EC + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x1e +_0803FC4A: + movs r1, #4 + bl sub_08080964 + b _0803FD32 +_0803FC52: + ldrb r0, [r7, #0xf] + cmp r0, #0 + beq _0803FD32 + subs r1, r0, #1 + strb r1, [r7, #0xf] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0803FC6C + movs r0, #0xd8 + lsls r0, r0, #1 + bl sub_080A3268 + b _0803FD32 +_0803FC6C: + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0803FD32 + ldr r0, _0803FC7C @ =0x00000149 + bl sub_080A3268 + b _0803FD32 + .align 2, 0 +_0803FC7C: .4byte 0x00000149 +_0803FC80: + ldrb r0, [r7, #0xe] + subs r1, r0, #1 + strb r1, [r7, #0xe] + lsls r0, r1, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _0803FCA8 + adds r0, r7, #0 + adds r0, #0x80 + movs r1, #5 + strb r1, [r0] + movs r0, #0x10 + strb r0, [r7, #0xe] + adds r0, r7, #0 + adds r0, #0x86 + strb r2, [r0] + adds r0, r7, #0 + bl sub_080408EC + b _0803FD32 +_0803FCA8: + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _0803FD32 + movs r0, #0x9b + movs r1, #1 + movs r2, #0xff + bl sub_080A2960 + adds r6, r0, #0 + cmp r6, #0 + beq _0803FD32 + str r7, [r6, #0x50] + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_0806FA24 + bl sub_08000E50 + movs r5, #0xf + ands r0, r5 + ldr r1, _0803FD08 @ =0x0000FFF9 + adds r4, r1, #0 + adds r0, r4, r0 + ldrh r1, [r6, #0x2e] + adds r0, r0, r1 + strh r0, [r6, #0x2e] + bl sub_08000E50 + ands r0, r5 + adds r4, r4, r0 + ldrh r0, [r6, #0x32] + adds r4, r4, r0 + strh r4, [r6, #0x32] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_080A3268 + b _0803FD32 + .align 2, 0 +_0803FD08: .4byte 0x0000FFF9 +_0803FD0C: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0803FD32 + movs r0, #1 + strb r0, [r7, #0xc] + adds r0, r7, #0 + adds r0, #0x80 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + subs r0, #0xb + strb r1, [r0] + adds r0, r7, #0 + bl sub_08040670 +_0803FD32: + adds r0, r7, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #2 + bls _0803FD48 + ldrb r1, [r7, #0xe] + movs r0, #1 + ands r0, r1 + adds r1, r7, #0 + adds r1, #0x62 + strb r0, [r1] +_0803FD48: + adds r0, r7, #0 + bl sub_080042B8 +_0803FD4E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0803FD50 +sub_0803FD50: @ 0x0803FD50 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x80 + ldrb r0, [r5] + cmp r0, #1 + beq _0803FDA8 + cmp r0, #1 + bgt _0803FD68 + cmp r0, #0 + beq _0803FD72 + b _0803FE86 +_0803FD68: + cmp r0, #2 + beq _0803FE0C + cmp r0, #3 + beq _0803FE62 + b _0803FE86 +_0803FD72: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0803FD82 + b _0803FE86 +_0803FD82: + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + adds r0, r4, #0 + adds r0, #0x74 + strb r1, [r0] + movs r0, #0x80 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + movs r0, #0x90 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldr r0, _0803FDA4 @ =0x0000012B + bl sub_080A3268 + b _0803FE86 + .align 2, 0 +_0803FDA4: .4byte 0x0000012B +_0803FDA8: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0803FE86 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + adds r0, r4, #0 + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #1 + beq _0803FDD8 + cmp r0, #1 + bgt _0803FDD0 + cmp r0, #0 + beq _0803FDDE + b _0803FDE4 +_0803FDD0: + cmp r0, #2 + beq _0803FDDE + cmp r0, #3 + bne _0803FDE4 +_0803FDD8: + movs r0, #1 + strb r0, [r4, #0xf] + b _0803FDF0 +_0803FDDE: + movs r0, #0 + strb r0, [r4, #0xf] + b _0803FDF0 +_0803FDE4: + bl sub_08000E50 + movs r1, #0x20 + ands r1, r0 + lsrs r1, r1, #5 + strb r1, [r4, #0xf] +_0803FDF0: + ldrb r0, [r4, #0x14] + cmp r0, #1 + bls _0803FDFA + movs r0, #1 + strb r0, [r4, #0xf] +_0803FDFA: + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x1e + movs r1, #4 + bl sub_08080964 + b _0803FE86 +_0803FE0C: + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0803FE34 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + ldr r2, _0803FE30 @ =gUnk_080D0ABF + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + movs r1, #1 + orrs r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r4, #0xe] + b _0803FE86 + .align 2, 0 +_0803FE30: .4byte gUnk_080D0ABF +_0803FE34: + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0803FE46 + ldrb r2, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0x1f + bl sub_0804A98C +_0803FE46: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0803FE86 + ldrb r0, [r4, #0x14] + cmp r0, #1 + bls _0803FE86 + ldrb r0, [r4, #0xe] + cmp r0, #5 + bhi _0803FE86 + movs r0, #0x80 + strb r0, [r4, #0xe] + movs r0, #0 + strb r0, [r4, #0xf] + b _0803FE86 +_0803FE62: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0803FE80 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r5] + strh r1, [r4, #0x36] + adds r0, r4, #0 + bl sub_08040670 + b _0803FE86 +_0803FE80: + adds r0, r4, #0 + bl sub_08040AD4 +_0803FE86: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0803FE90 +sub_0803FE90: @ 0x0803FE90 + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x80 + ldrb r2, [r3] + cmp r2, #1 + beq _0803FED4 + cmp r2, #1 + bgt _0803FEA8 + cmp r2, #0 + beq _0803FEAE + b _0803FF74 +_0803FEA8: + cmp r2, #2 + beq _0803FF52 + b _0803FF74 +_0803FEAE: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0803FF74 + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + movs r0, #0x40 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x14] + cmp r0, #1 + bls _0803FF74 + movs r0, #0x80 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] + b _0803FF74 +_0803FED4: + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0803FEFC + ldrb r0, [r3] + adds r0, #1 + strb r0, [r3] + ldr r1, _0803FEF8 @ =gUnk_080D0ABF + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + orrs r0, r2 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + b _0803FF74 + .align 2, 0 +_0803FEF8: .4byte gUnk_080D0ABF +_0803FEFC: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0803FF24 + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0803FF14 + ldrb r2, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0x1f + bl sub_0804A98C +_0803FF14: + ldrb r0, [r4, #0xe] + cmp r0, #5 + bhi _0803FF74 + movs r0, #0x40 + strb r0, [r4, #0xe] + movs r0, #0 + strb r0, [r4, #0xf] + b _0803FF74 +_0803FF24: + movs r5, #0xf + ands r5, r1 + cmp r5, #0 + bne _0803FF74 + adds r0, r4, #0 + movs r1, #0x1f + movs r2, #2 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _0803FF74 + strb r5, [r1, #0xb] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0803FF74 + ldrh r0, [r1, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r1, #0x24] + b _0803FF74 +_0803FF52: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0803FF6E + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r3] + adds r0, r4, #0 + bl sub_08040670 + b _0803FF74 +_0803FF6E: + adds r0, r4, #0 + bl sub_08040AD4 +_0803FF74: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + + thumb_func_start sub_0803FF7C +sub_0803FF7C: @ 0x0803FF7C + push {r4, r5, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x80 + ldrb r5, [r2] + cmp r5, #1 + beq _0803FFBC + cmp r5, #1 + bgt _0803FF94 + cmp r5, #0 + beq _0803FF9A + b _08040062 +_0803FF94: + cmp r5, #2 + beq _08040040 + b _08040062 +_0803FF9A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040062 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #0x80 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x14] + cmp r0, #1 + bls _08040062 + movs r0, #1 + strb r0, [r4, #0xf] + b _08040062 +_0803FFBC: + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0803FFE4 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldr r1, _0803FFE0 @ =gUnk_080D0ABF + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + orrs r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + b _08040062 + .align 2, 0 +_0803FFE0: .4byte gUnk_080D0ABF +_0803FFE4: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0804000C + movs r0, #7 + ands r1, r0 + cmp r1, #0 + bne _0803FFFC + ldrb r2, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0x1f + bl sub_0804A98C +_0803FFFC: + ldrb r0, [r4, #0xe] + cmp r0, #5 + bhi _08040062 + movs r0, #0x80 + strb r0, [r4, #0xe] + movs r0, #0 + strb r0, [r4, #0xf] + b _08040062 +_0804000C: + movs r0, #0x1f + ands r1, r0 + cmp r1, #0 + bne _08040062 + adds r0, r4, #0 + movs r1, #0x1f + movs r2, #2 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _08040062 + strb r5, [r1, #0xb] + ldrh r0, [r1, #0x32] + subs r0, #0x20 + strh r0, [r1, #0x32] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _08040062 + ldrh r0, [r1, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r1, #0x24] + b _08040062 +_08040040: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0804005C + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r0, r4, #0 + bl sub_08040670 + b _08040062 +_0804005C: + adds r0, r4, #0 + bl sub_08040AD4 +_08040062: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0804006C +sub_0804006C: @ 0x0804006C + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08078B48 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08040090 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080400C2 + movs r0, #2 + bl sub_0807CD10 + movs r0, #8 + strb r0, [r4, #0xf] + b _080400BA +_08040090: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080400B4 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _080400BA + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _080400BA +_080400B4: + adds r0, r4, #0 + bl sub_0804A7D4 +_080400BA: + adds r0, r4, #0 + bl sub_080042B8 + b _08040126 +_080400C2: + ldrb r0, [r4, #0xf] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0xf] + cmp r0, #0 + bne _08040120 + adds r0, r4, #0 + movs r1, #0x55 + movs r2, #0 + bl CreateFX + adds r5, r0, #0 + cmp r5, #0 + beq _08040120 + bl sub_08000E50 + ldr r1, _08040128 @ =0x00003F3F + ands r0, r1 + movs r3, #0xff + adds r1, r0, #0 + ands r1, r3 + ldr r6, _0804012C @ =0x0000FFE0 + adds r2, r6, #0 + adds r1, r2, r1 + ldrh r6, [r5, #0x2e] + adds r1, r1, r6 + strh r1, [r5, #0x2e] + lsrs r0, r0, #8 + ands r0, r3 + adds r2, r2, r0 + ldrh r0, [r5, #0x32] + adds r2, r2, r0 + strh r2, [r5, #0x32] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + movs r0, #0xb7 + lsls r0, r0, #1 + bl sub_080A3268 +_08040120: + adds r0, r4, #0 + bl sub_080042B8 +_08040126: + pop {r4, r5, r6, pc} + .align 2, 0 +_08040128: .4byte 0x00003F3F +_0804012C: .4byte 0x0000FFE0 + + thumb_func_start sub_08040130 +sub_08040130: @ 0x08040130 + push {lr} + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + strb r2, [r0, #0xe] + adds r1, r0, #0 + adds r1, #0x80 + strb r2, [r1] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #6 + orrs r1, r2 + strb r1, [r3] + ldrb r1, [r0, #0xe] + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804015C +sub_0804015C: @ 0x0804015C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + adds r0, r5, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0804017C + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_0804017C: + adds r0, r5, #0 + adds r0, #0x7a + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r5, #0 + adds r0, #0x7e + ldrh r0, [r0] + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r0, #0 + bne _0804019E + adds r0, r4, #0 + bl sub_080042B8 + b _080401A6 +_0804019E: + adds r0, r4, #0 + movs r1, #2 + bl sub_080042BA +_080401A6: + ldrb r0, [r5, #0xc] + cmp r0, #4 + bls _080401C0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080401D2 + movs r0, #1 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + b _080401D2 +_080401C0: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080401D2 + movs r0, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_080401D2: + ldrb r0, [r5, #0xc] + cmp r0, #3 + beq _080401DC + ldrh r0, [r5, #0x36] + strh r0, [r4, #0x36] +_080401DC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080401E0 +sub_080401E0: @ 0x080401E0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xb] + adds r5, r1, #0 + cmp r5, #0 + beq _08040212 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, #1 + adds r3, r4, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r4, #0xb] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + b _08040260 +_08040212: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08040264 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x45 + bhi _08040260 + adds r0, r4, #0 + movs r1, #2 + movs r2, #1 + bl sub_08040648 + adds r0, r4, #0 + movs r1, #2 + movs r2, #2 + bl sub_08040648 + movs r0, #1 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x17 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x74 + strb r5, [r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_08040260: + pop {r4, r5, pc} + .align 2, 0 +_08040264: .4byte gUnk_03003DBC + + thumb_func_start sub_08040268 +sub_08040268: @ 0x08040268 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _08040286 + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_08040286: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r2, [r4, #0xb] + cmp r2, #1 + beq _080402C6 + cmp r2, #1 + bgt _0804029E + cmp r2, #0 + beq _080402E4 + b _08040382 +_0804029E: + cmp r2, #2 + bne _08040382 + ldr r1, _080402DC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + lsls r0, r0, #1 + ldr r1, _080402E0 @ =gUnk_080D0B18 + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + ldrh r2, [r4, #0x2e] + adds r1, r1, r2 + strh r1, [r4, #0x2e] + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_080402C6: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0x1e] + cmp r0, #2 + beq _08040382 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + strb r0, [r4, #0x18] + b _08040382 + .align 2, 0 +_080402DC: .4byte gLinkEntity +_080402E0: .4byte gUnk_080D0B18 +_080402E4: + adds r5, r4, #0 + adds r5, #0x74 + ldrb r0, [r5] + cmp r0, #1 + beq _0804032E + cmp r0, #1 + bgt _080402F8 + cmp r0, #0 + beq _08040302 + b _08040382 +_080402F8: + cmp r0, #0x10 + beq _08040354 + cmp r0, #0x11 + beq _08040366 + b _08040382 +_08040302: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040382 + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x27 + strb r0, [r4, #0xf] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08040382 + strb r1, [r5] + adds r0, r4, #0 + movs r1, #8 + bl sub_080042AC + b _08040382 +_0804032E: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08040382 + strb r2, [r5] + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x17 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _08040382 +_08040354: + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC + movs r0, #0x11 + strb r0, [r5] + movs r0, #0x50 + strb r0, [r4, #0xf] + b _08040382 +_08040366: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040382 + movs r0, #1 + strb r0, [r5] + movs r0, #0x30 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #8 + bl sub_080042AC +_08040382: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0804038C +sub_0804038C: @ 0x0804038C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080403AA + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_080403AA: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0x1e] + cmp r0, #2 + bne _080403CA + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] +_080403CA: + pop {r4, pc} + + thumb_func_start sub_080403CC +sub_080403CC: @ 0x080403CC + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + subs r1, #9 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r3] + movs r1, #0 + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_080403EC +sub_080403EC: @ 0x080403EC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0804040A + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_0804040A: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804041C +sub_0804041C: @ 0x0804041C + push {lr} + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x80 + strb r2, [r1] + movs r1, #0xa + strb r1, [r0, #0xe] + ldrb r2, [r0, #0x18] + subs r1, #0xe + ands r1, r2 + strb r1, [r0, #0x18] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r2, #7 + orrs r1, r2 + strb r1, [r3] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804044C +sub_0804044C: @ 0x0804044C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0804046A + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_0804046A: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #5 + beq _0804048A + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + cmp r0, #0 + beq _080404BC + movs r0, #0 + strb r0, [r1] + ldrb r1, [r4, #0x18] + subs r0, #4 + ands r0, r1 + strb r0, [r4, #0x18] + b _080404BC +_0804048A: + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + cmp r0, #0 + bne _080404A6 + adds r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_080404A6: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080404BC + movs r0, #0xa + strb r0, [r4, #0xe] + ldr r0, _080404CC @ =0x00000149 + bl sub_080A3268 +_080404BC: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_080404CC: .4byte 0x00000149 + + thumb_func_start sub_080404D0 +sub_080404D0: @ 0x080404D0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xb] + cmp r0, #0 + beq _080404FC + movs r0, #2 + strb r0, [r2, #0xc] + movs r0, #0xa + strb r0, [r2, #0xe] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0x12 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + adds r0, r2, #0 + movs r1, #2 + bl sub_08004260 + b _08040518 +_080404FC: + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r2, #0x18] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_08040518: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804051C +sub_0804051C: @ 0x0804051C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0804053A + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_0804053A: + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + cmp r0, #0 + beq _0804054A + cmp r0, #1 + beq _0804056C + b _080405C4 +_0804054A: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #6 + bne _080405CC + movs r0, #1 + movs r2, #1 + strb r0, [r1] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _080405C4 +_0804056C: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #6 + beq _08040582 + movs r0, #0 + strb r0, [r1] + ldrb r1, [r4, #0x18] + subs r0, #4 + ands r0, r1 + strb r0, [r4, #0x18] + b _080405C4 +_08040582: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080405A8 + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r0, _080405D0 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x46 + bhi _080405A8 + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + movs r2, #1 + bl sub_08040648 +_080405A8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080405BE + movs r0, #0xa + strb r0, [r4, #0xe] + ldr r0, _080405D4 @ =0x00000149 + bl sub_080A3268 +_080405BE: + adds r0, r4, #0 + bl sub_08004274 +_080405C4: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 +_080405CC: + pop {r4, pc} + .align 2, 0 +_080405D0: .4byte gUnk_03003DBC +_080405D4: .4byte 0x00000149 + + thumb_func_start sub_080405D8 +sub_080405D8: @ 0x080405D8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080405F6 + adds r2, r4, #0 + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + bl sub_0805E780 +_080405F6: + adds r3, r4, #0 + adds r3, #0x80 + ldrb r2, [r3] + cmp r2, #0 + bne _08040626 + ldr r0, [r4, #0x50] + ldr r0, [r0, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #6 + beq _08040638 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08040638 + adds r0, r2, #1 + strb r0, [r3] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + b _08040638 +_08040626: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08040638 + bl sub_0805E780 +_08040638: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08040648 +sub_08040648: @ 0x08040648 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r7, r2, #0 + movs r0, #0x4f + bl sub_0804AA60 + adds r5, r0, #0 + strb r7, [r5, #0xb] + str r6, [r5, #0x50] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0806FA24 + cmp r4, #2 + bne _0804066E + cmp r7, #0 + bne _0804066E + str r5, [r6, #0x54] +_0804066E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08040670 +sub_08040670: @ 0x08040670 + push {lr} + adds r2, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x80 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #0x24] + movs r0, #0xc + strb r0, [r2, #0xe] + ldrb r0, [r2, #0x14] + cmp r0, #0 + bne _08040698 + adds r0, r2, #0 + bl sub_080406A0 + b _0804069E +_08040698: + adds r0, r2, #0 + bl sub_08040770 +_0804069E: + pop {pc} + + thumb_func_start sub_080406A0 +sub_080406A0: @ 0x080406A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + bl sub_08000E50 + mov r8, r0 + movs r0, #0x30 + mov r1, r8 + ands r1, r0 + mov r8, r1 + adds r0, r5, #0 + adds r0, #0x86 + ldrb r6, [r0] + ldr r2, _080406F0 @ =gUnk_03000BF0 + ldrh r3, [r2, #6] + ldr r4, _080406F4 @ =gUnk_080D0B58 + lsls r1, r6, #1 + lsls r0, r6, #2 + adds r0, r0, r4 + ldrh r0, [r0] + adds r7, r3, r0 + ldrh r2, [r2, #8] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + adds r4, r2, r0 + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r4, #0 + movs r3, #0x1c + bl sub_0806FCB8 + cmp r0, #0 + beq _0804071E + cmp r6, #0 + beq _080406F8 + movs r6, #0 + b _08040702 + .align 2, 0 +_080406F0: .4byte gUnk_03000BF0 +_080406F4: .4byte gUnk_080D0B58 +_080406F8: + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + adds r6, r1, #1 +_08040702: + ldr r2, _0804074C @ =gUnk_03000BF0 + ldrh r3, [r2, #6] + ldr r4, _08040750 @ =gUnk_080D0B58 + lsls r1, r6, #1 + lsls r0, r6, #2 + adds r0, r0, r4 + ldrh r0, [r0] + adds r7, r3, r0 + ldrh r2, [r2, #8] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + adds r4, r2, r0 +_0804071E: + movs r2, #0x2e + ldrsh r0, [r5, r2] + movs r2, #0x32 + ldrsh r1, [r5, r2] + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080045D4 + strb r0, [r5, #0x15] + movs r0, #0x20 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _0804075A + ldrb r1, [r5, #0x15] + movs r0, #0x10 + mov r2, r8 + ands r2, r0 + cmp r2, #0 + beq _08040754 + adds r0, r1, #1 + b _08040758 + .align 2, 0 +_0804074C: .4byte gUnk_03000BF0 +_08040750: .4byte gUnk_080D0B58 +_08040754: + adds r0, r1, #0 + adds r0, #0x1f +_08040758: + strb r0, [r5, #0x15] +_0804075A: + ldrb r0, [r5, #0x15] + movs r1, #0x1f + ands r1, r0 + strb r1, [r5, #0x15] + adds r0, r5, #0 + adds r0, #0x86 + strb r6, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08040770 +sub_08040770: @ 0x08040770 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + bl sub_08000E50 + mov r8, r0 + movs r0, #0x38 + mov r1, r8 + ands r1, r0 + mov r8, r1 + adds r0, r7, #0 + adds r0, #0x86 + ldrb r5, [r0] + ldr r2, _080407CC @ =gUnk_03000BF0 + ldrh r3, [r2, #6] + ldr r4, _080407D0 @ =gUnk_080D0B64 + lsls r1, r5, #1 + lsls r0, r5, #2 + adds r0, r0, r4 + ldrh r0, [r0] + adds r6, r3, r0 + ldrh r2, [r2, #8] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + adds r4, r2, r0 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #0x1c + bl sub_0806FCB8 + cmp r0, #0 + beq _0804089A + ldrb r0, [r7, #0x14] + cmp r0, #2 + beq _08040822 + movs r0, #8 + mov r2, r8 + ands r0, r2 + cmp r0, #0 + beq _080407D4 + adds r5, #1 + b _080407D6 + .align 2, 0 +_080407CC: .4byte gUnk_03000BF0 +_080407D0: .4byte gUnk_080D0B64 +_080407D4: + adds r5, #3 +_080407D6: + movs r0, #3 + ands r5, r0 + adds r0, r7, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _0804087E + adds r0, r7, #0 + adds r0, #0x75 + ldrb r0, [r0] + cmp r0, #0x3c + beq _0804080A + cmp r0, #0x3c + bgt _080407F8 + cmp r0, #0xf + beq _08040802 + b _0804087E +_080407F8: + cmp r0, #0xc3 + beq _0804081A + cmp r0, #0xf0 + beq _08040812 + b _0804087E +_08040802: + cmp r5, #0 + bne _0804087E + movs r5, #2 + b _0804087E +_0804080A: + cmp r5, #1 + bne _0804087E + movs r5, #3 + b _0804087E +_08040812: + cmp r5, #2 + bne _0804087E + movs r5, #0 + b _0804087E +_0804081A: + cmp r5, #3 + bne _0804087E + movs r5, #1 + b _0804087E +_08040822: + adds r1, r7, #0 + adds r1, #0x87 + ldrb r2, [r1] + movs r0, #0x7f + ands r0, r2 + adds r4, r1, #0 + cmp r0, #0 + beq _08040848 + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _0804083E + adds r5, #1 + b _08040840 +_0804083E: + adds r5, #3 +_08040840: + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] + b _0804087A +_08040848: + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + adds r0, #4 + strb r0, [r4] + ldrb r6, [r4] + bl sub_08000E50 + movs r1, #0x20 + ands r1, r0 + cmp r1, #0 + bne _08040868 + movs r1, #0x80 + orrs r1, r6 + b _0804086A +_08040868: + adds r1, r6, #0 +_0804086A: + strb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08040878 + adds r5, #1 + b _0804087A +_08040878: + adds r5, #3 +_0804087A: + movs r0, #3 + ands r5, r0 +_0804087E: + ldr r2, _080408C8 @ =gUnk_03000BF0 + ldrh r3, [r2, #6] + ldr r4, _080408CC @ =gUnk_080D0B64 + lsls r1, r5, #1 + lsls r0, r5, #2 + adds r0, r0, r4 + ldrh r0, [r0] + adds r6, r3, r0 + ldrh r2, [r2, #8] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + adds r4, r2, r0 +_0804089A: + movs r1, #0x2e + ldrsh r0, [r7, r1] + movs r2, #0x32 + ldrsh r1, [r7, r2] + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_080045D4 + strb r0, [r7, #0x15] + movs r0, #0x20 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _080408D6 + ldrb r1, [r7, #0x15] + movs r0, #0x10 + mov r2, r8 + ands r2, r0 + cmp r2, #0 + beq _080408D0 + adds r0, r1, #1 + b _080408D4 + .align 2, 0 +_080408C8: .4byte gUnk_03000BF0 +_080408CC: .4byte gUnk_080D0B64 +_080408D0: + adds r0, r1, #0 + adds r0, #0x1f +_080408D4: + strb r0, [r7, #0x15] +_080408D6: + ldrb r0, [r7, #0x15] + movs r1, #0x1f + ands r1, r0 + strb r1, [r7, #0x15] + adds r0, r7, #0 + adds r0, #0x86 + strb r5, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080408EC +sub_080408EC: @ 0x080408EC + push {r4, r5, r6, r7, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0x14] + cmp r0, #0 + bne _08040902 + movs r1, #0xf0 + adds r4, r2, #0 + adds r4, #0x75 + adds r5, r2, #0 + adds r5, #0x76 + b _08040926 +_08040902: + adds r4, r2, #0 + adds r4, #0x75 + adds r5, r2, #0 + adds r5, #0x76 + ldr r7, _08040930 @ =gUnk_080D0B74 + movs r6, #0x3c +_0804090E: + bl sub_08000E50 + ands r0, r6 + lsrs r0, r0, #2 + adds r0, r0, r7 + ldrb r1, [r0] + ldrb r0, [r4] + cmp r1, r0 + bne _08040922 + movs r1, #0xff +_08040922: + cmp r1, #0xff + beq _0804090E +_08040926: + movs r0, #0 + strb r1, [r4] + strb r0, [r5] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08040930: .4byte gUnk_080D0B74 + + thumb_func_start sub_08040934 +sub_08040934: @ 0x08040934 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0x3e + ands r1, r0 + movs r2, #0 + cmp r1, #0x2e + bhi _08040948 + movs r2, #1 +_08040948: + adds r0, r4, #0 + adds r0, #0x87 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _08040958 + movs r2, #0 +_08040958: + adds r4, #0x84 + ldrb r0, [r4] + cmp r0, #9 + beq _080409A4 + cmp r2, #0 + beq _080409AA + adds r0, #1 + movs r1, #5 + bl __modsi3 + strb r0, [r4] + bl sub_08000E50 + movs r1, #0xf8 + ands r1, r0 + lsrs r1, r1, #3 + ldr r0, _08040998 @ =gUnk_080D0B84 + adds r0, r1, r0 + ldrb r2, [r0] + ldrb r0, [r4] + cmp r0, #1 + beq _0804099C + cmp r0, #1 + blt _080409AA + cmp r0, #4 + bgt _080409AA + cmp r0, #3 + blt _080409AA + cmp r2, #0 + bne _080409AA + b _080409A8 + .align 2, 0 +_08040998: .4byte gUnk_080D0B84 +_0804099C: + cmp r2, #0 + beq _080409A8 + movs r2, #3 + b _080409AA +_080409A4: + movs r0, #0 + strb r0, [r4] +_080409A8: + movs r2, #1 +_080409AA: + adds r0, r2, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080409B0 +sub_080409B0: @ 0x080409B0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x81 + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + cmp r1, #1 + beq _080409EA + cmp r1, #1 + bgt _080409CA + cmp r1, #0 + beq _080409D0 + b _08040A68 +_080409CA: + cmp r1, #2 + beq _08040A04 + b _08040A68 +_080409D0: + adds r0, r4, #0 + adds r0, #0x75 + adds r2, r4, #0 + adds r2, #0x76 + ldrb r0, [r0] + ldrb r3, [r2] + cmp r0, r3 + bne _08040A68 + movs r0, #1 + mov r3, ip + strb r0, [r3] + strb r1, [r2] + b _08040A68 +_080409EA: + adds r0, r4, #0 + adds r0, #0x76 + ldrb r0, [r0] + cmp r0, #0 + beq _08040A68 + movs r0, #2 + mov r1, ip + strb r0, [r1] + adds r1, r4, #0 + adds r1, #0x77 + movs r0, #0x10 + strb r0, [r1] + b _08040A68 +_08040A04: + adds r1, r4, #0 + adds r1, #0x77 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _08040A68 + adds r0, r4, #0 + adds r0, #0x75 + adds r3, r4, #0 + adds r3, #0x76 + ldrb r1, [r0] + ldrb r0, [r3] + ands r0, r1 + cmp r1, r0 + beq _08040A3C + movs r0, #1 + mov r1, ip + strb r0, [r1] + strb r2, [r3] + ldr r0, _08040A38 @ =0x00000155 + bl sub_080A3268 + b _08040A68 + .align 2, 0 +_08040A38: .4byte 0x00000155 +_08040A3C: + movs r1, #3 + strb r1, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + mov r3, ip + strb r1, [r3] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x36 + strb r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0xb2 + lsls r0, r0, #1 + bl sub_080A3268 +_08040A68: + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #2 + bhi _08040A84 + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + beq _08040AC8 + adds r0, r4, #0 + bl sub_080AF18C + b _08040AC8 +_08040A84: + adds r2, r4, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + adds r5, r2, #0 + cmp r0, #0 + beq _08040AB0 + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08040AB0 + movs r0, #0xc + movs r1, #1 + bl sub_08080964 + ldr r0, _08040ACC @ =0x00000127 + bl sub_080A3268 +_08040AB0: + ldrb r0, [r5] + cmp r0, #0x8a + bne _08040AC8 + ldr r0, _08040AD0 @ =gUnk_03003F80 + adds r0, #0xa0 + ldrb r0, [r0] + cmp r0, #5 + bne _08040AC8 + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0xc0 + strb r0, [r1] +_08040AC8: + pop {r4, r5, pc} + .align 2, 0 +_08040ACC: .4byte 0x00000127 +_08040AD0: .4byte gUnk_03003F80 + + thumb_func_start sub_08040AD4 +sub_08040AD4: @ 0x08040AD4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + movs r1, #0x3f + ands r1, r0 + lsls r6, r1, #0x18 + lsrs r4, r6, #0x18 + movs r0, #0x1f + ands r0, r4 + cmp r0, #0 + bne _08040AF0 + ldr r0, _08040B0C @ =0x000001A9 + bl sub_080A3268 +_08040AF0: + movs r0, #3 + ands r4, r0 + cmp r4, #0 + bne _08040B2A + lsrs r4, r6, #0x1a + movs r0, #0x2e + ldrsh r2, [r5, r0] + adds r0, r4, #4 + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08040B10 + subs r0, r2, #1 + b _08040B12 + .align 2, 0 +_08040B0C: .4byte 0x000001A9 +_08040B10: + adds r0, r2, #1 +_08040B12: + strh r0, [r5, #0x2e] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #2 + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _08040B26 + subs r0, r2, #1 + b _08040B28 +_08040B26: + adds r0, r2, #1 +_08040B28: + strh r0, [r5, #0x32] +_08040B2A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08040B2C +sub_08040B2C: @ 0x08040B2C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _08040B5C + ldr r0, [r5, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08040B5C + adds r0, r5, #0 + bl sub_08041300 + cmp r0, #0 + beq _08040B4E + adds r0, r5, #0 + bl sub_0803F6EC +_08040B4E: + adds r0, r5, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_08040B5C: + ldr r4, _08040B80 @ =gUnk_080D0DC4 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, r5, pc} + .align 2, 0 +_08040B80: .4byte gUnk_080D0DC4 + + thumb_func_start sub_08040B84 +sub_08040B84: @ 0x08040B84 + push {lr} + ldr r2, _08040B98 @ =gUnk_080D0DDC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08040B98: .4byte gUnk_080D0DDC + + thumb_func_start sub_08040B9C +sub_08040B9C: @ 0x08040B9C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08040BD0 + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + lsrs r1, r1, #4 + movs r0, #1 + eors r1, r0 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08041134 + adds r0, r4, #0 + bl sub_0803F6EC +_08040BD0: + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x25 + bne _08040BF4 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0x80 + bne _08040C0E + movs r0, #8 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + b _08040C9C +_08040BF4: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0x80 + bne _08040C0E + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x78 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08041128 +_08040C0E: + ldrb r0, [r5] + cmp r0, #0x9d + bne _08040C1A + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_08040C1A: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08040C40 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsrs r0, r0, #4 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #7 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08040C40: + adds r0, r4, #0 + adds r0, #0x45 + adds r1, r4, #0 + adds r1, #0x7a + ldrb r2, [r0] + adds r6, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5] + cmp r2, r0 + beq _08040C9C + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08040C70 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsrs r0, r0, #4 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #7 + adds r0, r4, #0 + bl sub_08004260 + b _08040C98 +_08040C70: + adds r1, r4, #0 + adds r1, #0x3d + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _08040C84 + movs r0, #0x80 + orrs r0, r2 + strb r0, [r1] +_08040C84: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xff + strb r0, [r6] + movs r0, #0xa + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] +_08040C98: + ldrb r0, [r6] + strb r0, [r5] +_08040C9C: + ldr r1, _08040CA8 @ =gUnk_080D0DC4 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08040CA8: .4byte gUnk_080D0DC4 + + thumb_func_start sub_08040CAC +sub_08040CAC: @ 0x08040CAC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_08001328 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08040D04 + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _08040D2C + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _08040D2C + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + bne _08040D2C + movs r0, #0xff + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x58 + ldrb r0, [r1] + subs r0, #7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08040D2C + ldrb r1, [r1] + subs r1, #7 + movs r0, #1 + eors r1, r0 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 + b _08040D2C +_08040D04: + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + movs r5, #4 + rsbs r5, r5, #0 + adds r3, r5, #0 + ands r3, r2 + orrs r3, r1 + strb r3, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _08040D2C + ands r3, r5 + movs r0, #1 + orrs r3, r0 + strb r3, [r4, #0x18] +_08040D2C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08040D30 +sub_08040D30: @ 0x08040D30 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #7 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08040D4C + ldrb r1, [r4, #0x14] + adds r1, #7 + adds r0, r4, #0 + bl sub_08004260 +_08040D4C: + adds r0, r4, #0 + bl sub_08001242 + ldrh r1, [r4, #0x36] + movs r2, #0x36 + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08040D60 + ldr r0, _08040D8C @ =0x0000FFFF + strh r0, [r4, #0x36] +_08040D60: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + bne _08040D88 + ldrb r0, [r4, #0x14] + movs r1, #1 + eors r1, r0 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 + movs r0, #0xff + strb r0, [r4, #0x15] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08041134 +_08040D88: + pop {r4, pc} + .align 2, 0 +_08040D8C: .4byte 0x0000FFFF + + thumb_func_start sub_08040D90 +sub_08040D90: @ 0x08040D90 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08040DB4 + ldr r0, _08040DB0 @ =gUnk_080D0E08 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _08040DC6 + .align 2, 0 +_08040DB0: .4byte gUnk_080D0E08 +_08040DB4: + adds r0, r4, #0 + bl sub_08041128 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 +_08040DC6: + pop {r4, pc} + + thumb_func_start sub_08040DC8 +sub_08040DC8: @ 0x08040DC8 + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x3c + strb r1, [r0, #0x1d] + ldr r1, _08040DE0 @ =gLinkEntity + ldrb r1, [r1, #0x14] + lsrs r1, r1, #2 + adds r1, #5 + bl sub_08004260 + pop {pc} + .align 2, 0 +_08040DE0: .4byte gLinkEntity + + thumb_func_start sub_08040DE4 +sub_08040DE4: @ 0x08040DE4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F4E8 + pop {r4, pc} + + thumb_func_start sub_08040DF4 +sub_08040DF4: @ 0x08040DF4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08040E38 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + cmp r0, #0 + beq _08040E26 + adds r2, r0, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_08040E26: + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08040E34 + adds r0, r4, #0 + bl sub_0804A7D4 + b _08040E38 +_08040E34: + bl sub_0805E780 +_08040E38: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08040E3C +sub_08040E3C: @ 0x08040E3C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0804A720 + bl sub_08000E50 + movs r2, #0x1e + adds r1, r0, #0 + ands r1, r2 + movs r2, #0 + strb r1, [r4, #0x15] + movs r1, #0xff + strb r1, [r4, #0x14] + movs r5, #1 + strb r5, [r4, #0x1c] + adds r1, r4, #0 + adds r1, #0x45 + ldrb r1, [r1] + adds r3, r4, #0 + adds r3, #0x7a + strb r1, [r3] + lsrs r0, r0, #4 + adds r1, r4, #0 + adds r1, #0x7b + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7c + strh r2, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08040E86 + strb r5, [r4, #0xc] + ldrb r0, [r4, #0xe] + bl sub_0804B128 + str r0, [r4, #0x54] + b _08040E8C +_08040E86: + adds r0, r4, #0 + bl sub_080411CC +_08040E8C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08040E90 +sub_08040E90: @ 0x08040E90 + push {r4, lr} + adds r4, r0, #0 + bl sub_080411E8 + cmp r0, #0 + beq _08040EA4 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] +_08040EA4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08040EA8 +sub_08040EA8: @ 0x08040EA8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040EC4 + adds r0, r4, #0 + bl sub_080411CC + adds r0, r4, #0 + bl sub_0804122C +_08040EC4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08040EC8 +sub_08040EC8: @ 0x08040EC8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08040F08 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + bl sub_08000E50 + adds r1, r4, #0 + adds r1, #0x80 + ldrb r2, [r1] + movs r1, #0x30 + ands r1, r0 + adds r1, #0x3c + adds r0, r2, #0 + muls r0, r1, r0 + adds r0, #0x78 + adds r1, r4, #0 + adds r1, #0x7c + strh r0, [r1] + adds r0, r4, #0 + bl sub_08041128 +_08040F08: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08040F0C +sub_08040F0C: @ 0x08040F0C + push {r4, lr} + adds r4, r0, #0 + bl sub_08041170 + cmp r0, #0 + bne _08040F36 + adds r0, r4, #0 + bl sub_0803F58C + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08040F36 + adds r0, r4, #0 + bl sub_08041128 +_08040F36: + pop {r4, pc} + + thumb_func_start sub_08040F38 +sub_08040F38: @ 0x08040F38 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + movs r1, #1 + bl sub_08049F84 + strb r0, [r4, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08040F8E + adds r0, r4, #0 + bl sub_0803F66C + adds r1, r4, #0 + adds r1, #0x78 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08040F94 + movs r0, #6 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r2, #0xe0 + adds r1, r0, #0 + ands r1, r2 + strb r1, [r4, #0xe] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r4, #0x24] + lsrs r0, r0, #8 + movs r1, #0x78 + ands r0, r1 + adds r0, #0x3c + adds r1, r4, #0 + adds r1, #0x7e + strh r0, [r1] + b _08040F94 +_08040F8E: + adds r0, r4, #0 + bl sub_08041128 +_08040F94: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08040F98 +sub_08040F98: @ 0x08040F98 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0803F5A8 + cmp r0, #0 + bne _08040FB2 + adds r0, r4, #0 + bl sub_08041128 + b _08041014 +_08040FB2: + movs r0, #1 + bl sub_08049DF4 + cmp r0, #0 + beq _0804100C + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0804100C + ldrb r1, [r4, #0xe] + adds r1, #1 + strb r1, [r4, #0xe] + ldr r2, _08041004 @ =gUnk_080D0E14 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x1e + adds r0, r0, r2 + ldrb r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _08040FF4 + ldr r0, _08041008 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_08040FF4: + adds r0, r4, #0 + bl sub_0803F66C + adds r0, r4, #0 + bl sub_080AEFB4 + b _08041014 + .align 2, 0 +_08041004: .4byte gUnk_080D0E14 +_08041008: .4byte gUnk_020000B0 +_0804100C: + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] +_08041014: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08041018 +sub_08041018: @ 0x08041018 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08041042 + bl sub_08000E50 + movs r1, #0xf8 + ands r0, r1 + adds r0, #0xb4 + adds r1, r4, #0 + adds r1, #0x7c + strh r0, [r1] + adds r0, r4, #0 + bl sub_08041128 +_08041042: + pop {r4, pc} + + thumb_func_start sub_08041044 +sub_08041044: @ 0x08041044 + push {r4, lr} + adds r4, r0, #0 + bl sub_0803F738 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08041074 + movs r0, #0 + movs r1, #9 + strb r1, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_08041074: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08041078 +sub_08041078: @ 0x08041078 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08041094 + adds r0, r4, #0 + bl sub_0803F6C0 +_08041094: + bl sub_0807953C + adds r1, r4, #0 + adds r1, #0x78 + cmp r0, #0 + beq _080410A6 + ldrh r0, [r1] + adds r0, #8 + strh r0, [r1] +_080410A6: + ldr r2, _08041100 @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080410B6 + movs r0, #0xe0 + strh r0, [r1] +_080410B6: + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xdf + bls _08041104 + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x78 + strh r0, [r1] + movs r0, #0xff + strb r0, [r4, #0x14] + subs r1, #0x3f + movs r0, #0xf4 + strb r0, [r1] + adds r1, #5 + movs r0, #0x14 + strb r0, [r1] + adds r1, #4 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + adds r0, r4, #0 + bl sub_08041128 + adds r0, r4, #0 + bl sub_0803F6EC + b _0804110A + .align 2, 0 +_08041100: .4byte gLinkEntity +_08041104: + adds r0, r4, #0 + bl sub_0803F738 +_0804110A: + pop {r4, pc} + + thumb_func_start sub_0804110C +sub_0804110C: @ 0x0804110C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08041126 + adds r0, r4, #0 + bl sub_08041128 +_08041126: + pop {r4, pc} + + thumb_func_start sub_08041128 +sub_08041128: @ 0x08041128 + push {lr} + movs r1, #4 + strb r1, [r0, #0xc] + bl sub_0803F528 + pop {pc} + + thumb_func_start sub_08041134 +sub_08041134: @ 0x08041134 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #5 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x25 + strb r0, [r1] + movs r5, #0 + ldr r0, _08041168 @ =gUnk_03004040 + ldr r0, [r0] + cmp r0, #0 + beq _08041150 + movs r5, #0x3c +_08041150: + bl sub_08000E50 + ldr r2, _0804116C @ =gUnk_080D0E18 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r5 + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + pop {r4, r5, pc} + .align 2, 0 +_08041168: .4byte gUnk_03004040 +_0804116C: .4byte gUnk_080D0E18 + + thumb_func_start sub_08041170 +sub_08041170: @ 0x08041170 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0 + beq _08041184 + subs r0, #1 + strh r0, [r1] + b _080411C8 +_08041184: + adds r0, r4, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _080411C8 + adds r0, r4, #0 + bl sub_0806FD54 + cmp r0, #0 + bne _080411B6 + ldr r0, _080411C0 @ =gUnk_02033A90 + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0xf + ble _080411C8 + ldr r0, _080411C4 @ =gUnk_020000B0 + ldr r1, [r0] + adds r0, r4, #0 + movs r2, #0x70 + movs r3, #0x48 + bl sub_080041A0 + cmp r0, #0 + beq _080411C8 +_080411B6: + adds r0, r4, #0 + bl sub_08041134 + movs r0, #1 + b _080411CA + .align 2, 0 +_080411C0: .4byte gUnk_02033A90 +_080411C4: .4byte gUnk_020000B0 +_080411C8: + movs r0, #0 +_080411CA: + pop {r4, pc} + + thumb_func_start sub_080411CC +sub_080411CC: @ 0x080411CC + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #7 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080411E8 +sub_080411E8: @ 0x080411E8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_08049FDC + cmp r0, #0 + beq _08041222 + ldrb r0, [r4, #0xb] + cmp r0, #1 + beq _08041204 + cmp r0, #2 + beq _08041218 +_08041200: + movs r0, #1 + b _08041224 +_08041204: + ldr r0, _08041214 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08041222 + b _08041200 + .align 2, 0 +_08041214: .4byte gUnk_03003F80 +_08041218: + ldr r0, _08041228 @ =gUnk_02033A90 + movs r1, #0xa + ldrsh r0, [r0, r1] + cmp r0, #0xf + bgt _08041200 +_08041222: + movs r0, #0 +_08041224: + pop {r4, pc} + .align 2, 0 +_08041228: .4byte gUnk_02033A90 + + thumb_func_start sub_0804122C +sub_0804122C: @ 0x0804122C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + mov r8, r0 + bl sub_08000E50 + movs r6, #6 + ands r6, r0 + lsrs r5, r0, #8 + movs r0, #3 + ands r5, r0 + movs r7, #0 + ldr r3, _080412FC @ =gUnk_03000BF0 + mov sb, r3 +_08041250: + movs r0, #0x50 + movs r1, #1 + bl sub_0804AA60 + adds r2, r0, #0 + cmp r2, #0 + beq _080412C8 + lsls r1, r6, #1 + add r1, r8 + mov r3, sb + ldrh r0, [r3, #6] + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + mov r3, sb + ldrh r0, [r3, #8] + ldrh r1, [r1, #2] + adds r0, r0, r1 + strh r0, [r2, #0x32] + str r4, [r2, #0x50] + adds r0, r2, #0 + adds r0, #0x80 + strb r5, [r0] + adds r3, r2, #0 + adds r3, #0x6d + ldrb r0, [r3] + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x70 + strh r1, [r0] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + adds r1, r2, #0 + adds r1, #0x72 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x6e + ldrb r0, [r0] + subs r1, #4 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x6f + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08016A30 + adds r6, #2 + movs r0, #6 + ands r6, r0 + adds r5, #1 + movs r0, #3 + ands r5, r0 +_080412C8: + adds r7, #1 + cmp r7, #2 + bls _08041250 + lsls r1, r6, #1 + add r1, r8 + ldr r2, _080412FC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r3, [r1] + adds r0, r0, r3 + movs r3, #0 + strh r0, [r4, #0x2e] + ldrh r0, [r2, #8] + ldrh r1, [r1, #2] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x38 + strb r3, [r0] + adds r0, r4, #0 + bl sub_08016A30 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080412FC: .4byte gUnk_03000BF0 + + thumb_func_start sub_08041300 +sub_08041300: @ 0x08041300 + push {lr} + adds r1, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x25 + bne _0804131A + adds r0, r1, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _0804131A + movs r0, #1 + b _0804132C +_0804131A: + movs r2, #0 + ldrb r0, [r1, #0xc] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0804132A + movs r2, #1 +_0804132A: + adds r0, r2, #0 +_0804132C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08041330 +sub_08041330: @ 0x08041330 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08041384 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08041384 + adds r2, r4, #0 + adds r2, #0x45 + ldrb r0, [r2] + cmp r0, #0 + bne _08041384 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xff + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x84 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08041384 + movs r0, #0xd + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + ldr r0, _08041398 @ =0x80010000 + bl sub_080A3268 + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 +_08041384: + ldr r0, _0804139C @ =gUnk_080D0E1C + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08041398: .4byte 0x80010000 +_0804139C: .4byte gUnk_080D0E1C + + thumb_func_start sub_080413A0 +sub_080413A0: @ 0x080413A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080423A4 + ldr r1, _080413BC @ =gUnk_080D0E2C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080413BC: .4byte gUnk_080D0E2C + + thumb_func_start sub_080413C0 +sub_080413C0: @ 0x080413C0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r7, _080413F8 @ =gUnk_030010A0 + adds r0, r7, #0 + adds r0, #0x38 + ldrb r0, [r0] + movs r6, #1 + adds r5, r6, #0 + ands r5, r0 + cmp r5, #0 + beq _08041420 + adds r0, r4, #0 + bl sub_08041FCC + cmp r0, #0 + beq _08041486 + adds r0, r7, #0 + adds r0, #0x39 + ldrb r1, [r0] + movs r0, #0xc + ands r0, r1 + cmp r0, #0 + bne _080413FC + movs r0, #5 + strb r0, [r4, #0xc] + strb r6, [r4, #0xd] + b _08041404 + .align 2, 0 +_080413F8: .4byte gUnk_030010A0 +_080413FC: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] +_08041404: + ldr r0, _0804141C @ =gUnk_030010A0 + adds r1, r0, #0 + adds r1, #0x40 + ldrh r1, [r1] + strh r1, [r4, #0x2e] + adds r0, #0x42 + ldrh r0, [r0] + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_08042004 + b _0804144A + .align 2, 0 +_0804141C: .4byte gUnk_030010A0 +_08041420: + adds r0, r4, #0 + bl sub_08041ED4 + cmp r0, #0 + beq _08041486 + strb r6, [r4, #0xc] + strb r5, [r4, #0xd] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xb1 + ands r0, r1 + strb r0, [r2] + ldr r0, _08041488 @ =0x0000FFB0 + strh r0, [r4, #0x36] + ldr r0, _0804148C @ =gUnk_03000BF0 + str r4, [r0, #0x30] + bl sub_080809D4 +_0804144A: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r3, r4, #0 + adds r3, #0x6d + ldrb r0, [r3] + movs r2, #0 + orrs r1, r0 + strb r1, [r3] + adds r0, r4, #0 + adds r0, #0x79 + strb r2, [r0] + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x3c + strh r0, [r1] + adds r1, #2 + movs r0, #0x78 + strh r0, [r1] + adds r1, #6 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_08041486: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08041488: .4byte 0x0000FFB0 +_0804148C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08041490 +sub_08041490: @ 0x08041490 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xd] + cmp r0, #5 + bls _080414A0 + b _080415CC +_080414A0: + lsls r0, r0, #2 + ldr r1, _080414AC @ =_080414B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080414AC: .4byte _080414B0 +_080414B0: @ jump table + .4byte _080415E6 @ case 0 + .4byte _080414C8 @ case 1 + .4byte _08041510 @ case 2 + .4byte _08041532 @ case 3 + .4byte _0804155C @ case 4 + .4byte _08041592 @ case 5 +_080414C8: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4, #0x34] + movs r1, #0x80 + lsls r1, r1, #8 + adds r0, r0, r1 + str r0, [r4, #0x34] + ldrh r1, [r4, #0x36] + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _080414F4 + ldr r0, _0804150C @ =0x000001A9 + bl sub_080A3268 +_080414F4: + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + ble _080415E6 + movs r0, #2 + strb r0, [r4, #0xd] + ldr r0, _0804150C @ =0x000001A9 + bl sub_080A3268 + b _080415E6 + .align 2, 0 +_0804150C: .4byte 0x000001A9 +_08041510: + adds r0, r4, #0 + bl sub_08042004 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08041520 + subs r0, #1 + b _080415E4 +_08041520: + adds r0, r4, #0 + movs r1, #0 + bl sub_08041F74 + cmp r0, #0 + beq _080415E6 + movs r0, #3 + strb r0, [r4, #0xd] + b _080415E2 +_08041532: + adds r0, r4, #0 + bl sub_08042004 + ldrb r0, [r4, #0xe] + adds r5, r0, #0 + cmp r5, #0 + beq _08041544 + subs r0, #1 + b _080415E4 +_08041544: + adds r0, r4, #0 + movs r1, #1 + bl sub_08041F74 + cmp r0, #0 + beq _080415E6 + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #0x78 + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] + b _080415E6 +_0804155C: + adds r0, r4, #0 + bl sub_08042004 + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _08041574 + movs r0, #5 + strb r0, [r4, #0xd] + b _080415E6 +_08041574: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3c + bhi _080415E6 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080415E6 + adds r0, r4, #0 + bl sub_08041F1C + cmp r0, #0 + beq _080415E6 + movs r0, #1 + strb r0, [r4, #0xf] + b _080415E6 +_08041592: + adds r0, r4, #0 + bl sub_08042004 + movs r0, #6 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldr r1, _080415BC @ =gUnk_030010A0 + adds r1, #0x38 + ldrb r2, [r1] + movs r0, #1 + orrs r0, r2 + strb r0, [r1] + ldr r1, _080415C0 @ =gUnk_03000BF0 + ldr r0, _080415C4 @ =gLinkEntity + str r0, [r1, #0x30] + ldr r0, _080415C8 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + b _080415E6 + .align 2, 0 +_080415BC: .4byte gUnk_030010A0 +_080415C0: .4byte gUnk_03000BF0 +_080415C4: .4byte gLinkEntity +_080415C8: .4byte gUnk_03003F80 +_080415CC: + adds r0, r4, #0 + bl sub_08042004 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080415E6 + movs r0, #2 + strb r0, [r4, #0xc] +_080415E2: + movs r0, #0x3c +_080415E4: + strb r0, [r4, #0xe] +_080415E6: + pop {r4, r5, pc} + + thumb_func_start sub_080415E8 +sub_080415E8: @ 0x080415E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08042004 + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08041614 + bl sub_08000E50 + movs r1, #1 + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08042028 +_08041614: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08041618 +sub_08041618: @ 0x08041618 + push {r4, lr} + adds r4, r0, #0 + bl sub_08042004 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080AEF88 + ldr r0, _0804165C @ =gUnk_03000BF0 + ldrh r2, [r0, #8] + adds r0, r2, #0 + adds r0, #0x90 + movs r3, #0x32 + ldrsh r1, [r4, r3] + cmp r0, r1 + blt _08041644 + adds r0, r2, #0 + adds r0, #0x40 + cmp r0, r1 + ble _08041646 +_08041644: + strh r0, [r4, #0x32] +_08041646: + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _08041660 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + b _08041694 + .align 2, 0 +_0804165C: .4byte gUnk_03000BF0 +_08041660: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1d + bhi _0804166E + ldrh r0, [r4, #0x24] + subs r0, #8 + b _0804167A +_0804166E: + ldrh r1, [r4, #0x24] + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0xff + bgt _0804167C + adds r0, r1, #6 +_0804167A: + strh r0, [r4, #0x24] +_0804167C: + ldrb r1, [r4, #0xe] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08041694 + adds r0, r4, #0 + bl sub_0804207C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_08041694: + adds r0, r4, #0 + bl sub_0804212C + adds r0, r4, #0 + bl sub_080421AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080416A4 +sub_080416A4: @ 0x080416A4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08042004 + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080416DA + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r1 + cmp r0, #0 + bne _080416D4 + adds r0, r4, #0 + bl sub_08042120 + b _080416DA +_080416D4: + adds r0, r4, #0 + bl sub_08042028 +_080416DA: + pop {r4, pc} + + thumb_func_start sub_080416DC +sub_080416DC: @ 0x080416DC + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08042004 + adds r0, r5, #0 + bl sub_080042B8 + adds r0, r5, #0 + bl sub_0804212C + adds r0, r5, #0 + bl sub_080421AC + ldrb r1, [r5, #0xd] + cmp r1, #0 + bne _08041748 + movs r4, #1 + strb r4, [r5, #0xd] + bl sub_08000E50 + ands r0, r4 + cmp r0, #0 + beq _08041716 + ldr r0, [r5, #0x64] + ldr r2, [r0, #0x14] + cmp r2, #0 + bne _08041724 + ldr r2, [r0, #0x18] + b _08041720 +_08041716: + ldr r0, [r5, #0x64] + ldr r2, [r0, #0x18] + cmp r2, #0 + bne _08041724 + ldr r2, [r0, #0x14] +_08041720: + cmp r2, #0 + beq _08041734 +_08041724: + ldrb r0, [r2, #0xc] + cmp r0, #2 + bne _08041734 + movs r1, #0 + movs r0, #4 + strb r0, [r2, #0xc] + strb r1, [r2, #0xd] + b _080417AA +_08041734: + bl sub_08000E50 + movs r1, #1 + ands r0, r1 + adds r0, #1 + strb r0, [r5, #0xf] + adds r0, r5, #0 + bl sub_08042028 + b _080417AA +_08041748: + adds r0, r5, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #0 + bne _080417AA + adds r2, r1, #0 + cmp r2, #2 + bne _080417AA + ldr r0, _0804179C @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080417A4 + movs r0, #0xb5 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _080417AA + str r5, [r2, #0x50] + ldr r1, [r5, #0x64] + str r2, [r1, #0x10] + ldr r0, _080417A0 @ =gUnk_03000BF0 + str r2, [r0, #0x30] + movs r0, #6 + strb r0, [r5, #0xc] + movs r0, #0x1e + strb r0, [r5, #0xe] + ldr r1, [r1, #4] + movs r0, #1 + strb r0, [r1, #0xd] + ldr r0, [r5, #0x64] + ldr r0, [r0, #4] + movs r1, #0xe + bl sub_08004260 + b _080417AA + .align 2, 0 +_0804179C: .4byte gUnk_030010A0 +_080417A0: .4byte gUnk_03000BF0 +_080417A4: + strb r2, [r5, #0xc] + movs r0, #0x3c + strb r0, [r5, #0xe] +_080417AA: + pop {r4, r5, pc} + + thumb_func_start sub_080417AC +sub_080417AC: @ 0x080417AC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _08041816 + ldr r0, [r5, #0x64] + ldr r4, [r0, #4] + adds r0, r4, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + adds r0, r1, #0 + cmp r0, #1 + bne _080417DA + movs r0, #0xfe + ands r0, r1 + strb r0, [r4] + adds r0, r5, #0 + movs r1, #4 + bl sub_080042AC + b _0804181A +_080417DA: + cmp r0, #2 + bne _08041806 + movs r0, #0x51 + movs r1, #3 + bl sub_0804AA60 + adds r1, r0, #0 + cmp r1, #0 + beq _0804181A + ldr r0, [r5, #0x64] + str r0, [r1, #0x64] + ldr r0, [r5, #0x64] + str r1, [r0, #0xc] + ldr r0, [r0, #8] + movs r1, #0x14 + bl sub_08004260 + ldrb r1, [r4] + movs r0, #0xfd + ands r0, r1 + strb r0, [r4] + b _0804181A +_08041806: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804181A + adds r0, r5, #0 + bl sub_0804235C + b _0804181A +_08041816: + subs r0, #1 + strb r0, [r5, #0xe] +_0804181A: + adds r0, r5, #0 + bl sub_08042004 + adds r0, r5, #0 + bl sub_080042B8 + pop {r4, r5, pc} + + thumb_func_start sub_08041828 +sub_08041828: @ 0x08041828 + push {r4, lr} + adds r4, r0, #0 + bl sub_08042214 + adds r0, r4, #0 + bl sub_08042004 + adds r0, r4, #0 + bl sub_080042B8 + ldr r2, _08041868 @ =gUnk_03000BF0 + ldrh r0, [r2, #8] + adds r0, #0x48 + movs r3, #0x32 + ldrsh r1, [r4, r3] + cmp r0, r1 + beq _0804186C + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldrh r0, [r2, #8] + adds r0, #0x48 + movs r2, #0 + cmp r0, r1 + blt _0804185C + movs r2, #0x10 +_0804185C: + strb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C + b _0804187E + .align 2, 0 +_08041868: .4byte gUnk_03000BF0 +_0804186C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804187E + adds r0, r4, #0 + bl sub_08042050 +_0804187E: + pop {r4, pc} + + thumb_func_start sub_08041880 +sub_08041880: @ 0x08041880 + push {r4, lr} + adds r4, r0, #0 + bl sub_08042004 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, _080418D4 @ =gUnk_03000BF0 + ldrh r2, [r0, #6] + adds r0, r2, #0 + adds r0, #0x20 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + bgt _080418AE + movs r3, #0xa0 + lsls r3, r3, #1 + adds r0, r2, r3 + cmp r0, r1 + bge _080418BE +_080418AE: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0x3f + ble _080418BE + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r4, #0x15] +_080418BE: + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _080418D8 + movs r0, #9 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + b _080418F8 + .align 2, 0 +_080418D4: .4byte gUnk_03000BF0 +_080418D8: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1d + bhi _080418E6 + ldrh r0, [r4, #0x24] + subs r0, #0xc + b _080418F6 +_080418E6: + ldrh r2, [r4, #0x24] + movs r3, #0x24 + ldrsh r1, [r4, r3] + ldr r0, _08041900 @ =0x000001FF + cmp r1, r0 + bgt _080418F8 + adds r0, r2, #0 + adds r0, #0x10 +_080418F6: + strh r0, [r4, #0x24] +_080418F8: + adds r0, r4, #0 + bl sub_08042214 + pop {r4, pc} + .align 2, 0 +_08041900: .4byte 0x000001FF + + thumb_func_start sub_08041904 +sub_08041904: @ 0x08041904 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08042004 + adds r0, r4, #0 + bl sub_080042B8 + adds r3, r4, #0 + adds r3, #0x79 + ldrb r0, [r3] + cmp r0, #0 + beq _08041924 + adds r0, r4, #0 + bl sub_08042214 + b _0804197A +_08041924: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _0804197A + ldr r0, _0804196C @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r0, r1] + movs r5, #0x2e + ldrsh r1, [r4, r5] + subs r0, r0, r1 + adds r0, #0x40 + cmp r0, #0x80 + bhi _08041970 + movs r0, #0xa + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x7b + strb r2, [r0] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x1c] + movs r1, #1 + strb r1, [r0, #0xe] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x20] + strb r1, [r0, #0xe] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x24] + strb r1, [r0, #0xe] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x28] + strb r1, [r0, #0xe] + b _0804197A + .align 2, 0 +_0804196C: .4byte gLinkEntity +_08041970: + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r2, [r3] +_0804197A: + pop {r4, r5, pc} + + thumb_func_start sub_0804197C +sub_0804197C: @ 0x0804197C + push {r4, lr} + adds r4, r0, #0 + bl sub_08042004 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0xf + bne _080419A6 + movs r1, #0 + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x79 + strb r1, [r0] + b _080419F6 +_080419A6: + cmp r0, #0xf0 + bne _080419F6 + movs r1, #0 + movs r0, #0xb + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + strb r1, [r4, #0x15] + adds r0, #0xf5 + strh r0, [r4, #0x24] + movs r0, #0x90 + lsls r0, r0, #9 + str r0, [r4, #0x20] + ldr r1, _080419F8 @ =0x0000016B + adds r0, r4, #0 + bl sub_0801D2B4 + adds r0, r4, #0 + movs r1, #5 + bl sub_080042AC + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0xf + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x15 + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + movs r1, #0x1e + bl sub_08004260 + ldr r0, _080419FC @ =0x00000127 + bl sub_080A3268 +_080419F6: + pop {r4, pc} + .align 2, 0 +_080419F8: .4byte 0x0000016B +_080419FC: .4byte 0x00000127 + + thumb_func_start sub_08041A00 +sub_08041A00: @ 0x08041A00 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08041A60 + cmp r0, #1 + beq _08041ABC + ldr r2, _08041A5C @ =gUnk_080D0E64 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + ldrb r1, [r4, #0xe] + cmp r1, #0 + bne _08041AF0 + movs r0, #0xc + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_0801D2B4 + adds r0, r4, #0 + movs r1, #8 + bl sub_080042AC + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + movs r1, #0x10 + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x18 + bl sub_08004260 + b _08041AF0 + .align 2, 0 +_08041A5C: .4byte gUnk_080D0E64 +_08041A60: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080042B8 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + bl sub_08004274 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08041AF0 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xf0 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #8 + strb r0, [r1] + subs r1, #6 + movs r0, #0x38 + strb r0, [r1] + movs r0, #0x14 + movs r1, #0 + bl sub_08080964 + adds r0, r4, #0 + movs r1, #6 + bl sub_080042AC + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x16 + bl sub_08004260 + b _08041AF0 +_08041ABC: + adds r0, r4, #0 + bl sub_080042B8 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08041AF0 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x39 + strb r0, [r1] + adds r1, #6 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] +_08041AF0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08041AF4 +sub_08041AF4: @ 0x08041AF4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08041B12 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + bl sub_08004274 +_08041B12: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08041B44 + cmp r0, #1 + beq _08041B70 + adds r0, r4, #0 + bl sub_08042004 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + adds r2, r0, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08041BC0 + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #9 + bl sub_080042AC + b _08041BCE +_08041B44: + ldr r0, [r4, #0x34] + ldr r1, _08041B6C @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r4, #0x34] + movs r2, #0x36 + ldrsh r1, [r4, r2] + movs r0, #4 + rsbs r0, r0, #0 + cmp r1, r0 + bge _08041BCE + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0x15] + movs r0, #0x80 + strh r0, [r4, #0x24] + b _08041BCE + .align 2, 0 +_08041B6C: .4byte 0xFFFF8000 +_08041B70: + adds r0, r4, #0 + bl sub_08042004 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08041B82 + subs r0, #1 + strb r0, [r4, #0xe] + b _08041BCE +_08041B82: + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, _08041BBC @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r0, #0x48 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _08041BCE + movs r0, #2 + strb r0, [r4, #0xd] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + movs r1, #0x11 + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x19 + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + movs r1, #0x1f + bl sub_08004260 + b _08041BCE + .align 2, 0 +_08041BBC: .4byte gUnk_03000BF0 +_08041BC0: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08041BCE + adds r0, r4, #0 + bl sub_0804235C +_08041BCE: + pop {r4, pc} + + thumb_func_start sub_08041BD0 +sub_08041BD0: @ 0x08041BD0 + push {lr} + ldr r2, _08041BE4 @ =gUnk_080D0E68 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08041BE4: .4byte gUnk_080D0E68 + + thumb_func_start sub_08041BE8 +sub_08041BE8: @ 0x08041BE8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + bl sub_08079F8C + cmp r0, #0 + beq _08041CBA + movs r5, #0 + movs r0, #1 + strb r0, [r6, #0xd] + movs r0, #0x78 + strb r0, [r6, #0xe] + ldrb r1, [r6, #0x11] + movs r4, #0x10 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r1, #3 + mov r8, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r6, #0x11] + adds r0, r6, #0 + movs r1, #0xa + bl sub_080042AC + ldr r0, [r6, #0x64] + ldr r7, [r0, #4] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl sub_0805E7BC + ldr r0, [r6, #0x64] + str r5, [r0, #4] + ldr r7, [r0, #8] + ldrb r0, [r7, #0x11] + ands r4, r0 + mov r0, r8 + orrs r4, r0 + strb r4, [r7, #0x11] + adds r0, r7, #0 + bl sub_080AE068 + ldr r1, _08041CC0 @ =0x000001F5 + adds r0, r7, #0 + bl sub_080ADF80 + ldr r1, _08041CC4 @ =0x0000016B + adds r0, r7, #0 + bl sub_0801D2B4 + adds r0, r7, #0 + movs r1, #0x1a + bl sub_08004260 + ldr r0, [r6, #0x64] + ldr r7, [r0, #0xc] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl sub_0805E7BC + ldr r0, [r6, #0x64] + str r5, [r0, #0xc] + ldr r7, [r0, #0x10] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl sub_0805E7BC + ldr r2, [r6, #0x64] + str r5, [r2, #0x10] + ldr r1, _08041CC8 @ =gUnk_03000BF0 + ldr r0, _08041CCC @ =gLinkEntity + str r0, [r1, #0x30] + ldr r7, [r2, #0x1c] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl sub_0805E7BC + ldr r0, [r6, #0x64] + str r5, [r0, #0x1c] + ldr r7, [r0, #0x20] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl sub_0805E7BC + ldr r0, [r6, #0x64] + str r5, [r0, #0x20] + ldr r7, [r0, #0x24] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl sub_0805E7BC + ldr r0, [r6, #0x64] + str r5, [r0, #0x24] + ldr r7, [r0, #0x28] + str r5, [r7, #0x64] + adds r0, r7, #0 + bl sub_0805E7BC + ldr r0, [r6, #0x64] + str r5, [r0, #0x28] + movs r0, #2 + bl sub_08078A90 +_08041CBA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08041CC0: .4byte 0x000001F5 +_08041CC4: .4byte 0x0000016B +_08041CC8: .4byte gUnk_03000BF0 +_08041CCC: .4byte gLinkEntity + + thumb_func_start sub_08041CD0 +sub_08041CD0: @ 0x08041CD0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08041D0C + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08041CF6 + subs r0, #1 + strb r0, [r4, #0xe] + b _08041D12 +_08041CF6: + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r0, _08041D08 @ =0x00001651 + bl sub_08056378 + b _08041D12 + .align 2, 0 +_08041D08: .4byte 0x00001651 +_08041D0C: + adds r0, r4, #0 + bl sub_080042B8 +_08041D12: + pop {r4, pc} + + thumb_func_start sub_08041D14 +sub_08041D14: @ 0x08041D14 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + ldr r0, _08041D3C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08041D7C + ldrb r0, [r4, #0xe] + adds r5, r0, #0 + cmp r5, #0 + beq _08041D40 + subs r0, #1 + strb r0, [r4, #0xe] + b _08041D7C + .align 2, 0 +_08041D3C: .4byte gUnk_02000050 +_08041D40: + ldr r0, _08041D80 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x45 + bhi _08041D7C + movs r0, #0xb6 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + str r4, [r0, #0x50] + str r0, [r4, #0x54] + movs r0, #0xb6 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + str r4, [r0, #0x50] + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x96 + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] + ldrb r1, [r4, #0x18] + subs r0, #0x9a + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xe2 + lsls r0, r0, #1 + bl sub_080A3268 +_08041D7C: + pop {r4, r5, pc} + .align 2, 0 +_08041D80: .4byte gUnk_03003DBC + + thumb_func_start sub_08041D84 +sub_08041D84: @ 0x08041D84 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _08041D9C + subs r0, #1 + strb r0, [r5, #0xe] + b _08041E18 +_08041D9C: + ldrb r1, [r5, #0xf] + adds r0, r1, #0 + cmp r0, #0xef + bhi _08041DEC + cmp r0, #0xb7 + bls _08041DD8 + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _08041DD8 + ldr r0, [r5, #0x64] + ldr r0, [r0, #8] + ldr r4, _08041DE8 @ =gUnk_080D0E80 + ldrb r1, [r5, #0xf] + subs r1, #0xb8 + asrs r1, r1, #3 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r1, [r1] + bl sub_0801D2B4 + ldr r0, [r5, #0x54] + ldrb r1, [r5, #0xf] + subs r1, #0xb8 + asrs r1, r1, #3 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r1, [r1] + bl sub_0801D2B4 +_08041DD8: + ldrb r0, [r5, #0xf] + cmp r0, #0xe6 + bne _08041E0C + movs r0, #7 + movs r1, #4 + bl sub_08050054 + b _08041E0C + .align 2, 0 +_08041DE8: .4byte gUnk_080D0E80 +_08041DEC: + movs r0, #4 + strb r0, [r5, #0xd] + ldrb r1, [r5, #0x18] + subs r0, #8 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + ldr r1, _08041E1C @ =0x00000173 + adds r0, r5, #0 + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xb + bl sub_080042AC +_08041E0C: + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] + adds r0, r5, #0 + bl sub_08041E78 +_08041E18: + pop {r4, r5, pc} + .align 2, 0 +_08041E1C: .4byte 0x00000173 + + thumb_func_start sub_08041E20 +sub_08041E20: @ 0x08041E20 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08041E78 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + ldr r0, _08041E4C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08041E48 + movs r0, #5 + strb r0, [r4, #0xd] + movs r0, #0x5a + strb r0, [r4, #0xe] +_08041E48: + pop {r4, pc} + .align 2, 0 +_08041E4C: .4byte gUnk_03000FD0 + + thumb_func_start sub_08041E50 +sub_08041E50: @ 0x08041E50 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08041E76 + movs r0, #0x51 + bl sub_0807CD04 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + str r5, [r0, #0x64] + bl sub_0805E7BC + bl sub_0805E780 +_08041E76: + pop {r4, r5, pc} + + thumb_func_start sub_08041E78 +sub_08041E78: @ 0x08041E78 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xf] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08041ECE + adds r0, r4, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08041ECE + ldrb r1, [r4, #0xf] + lsrs r1, r1, #3 + movs r0, #0xe + ands r1, r0 + ldr r0, _08041ED0 @ =gUnk_080D0E90 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + movs r0, #4 + movs r1, #0 + bl sub_08080964 +_08041ECE: + pop {r4, pc} + .align 2, 0 +_08041ED0: .4byte gUnk_080D0E90 + + thumb_func_start sub_08041ED4 +sub_08041ED4: @ 0x08041ED4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08041F14 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x45 + bhi _08041F18 + movs r0, #0x2c + bl sub_0801D8E0 + adds r4, r0, #0 + cmp r4, #0 + beq _08041F18 + str r4, [r5, #0x64] + str r5, [r4] + movs r0, #0 + str r0, [r4, #0xc] + str r0, [r4, #0x14] + str r0, [r4, #0x18] + movs r0, #0x51 + movs r1, #1 + bl sub_0804AA60 + str r4, [r0, #0x64] + str r0, [r4, #4] + movs r0, #0x51 + movs r1, #2 + bl sub_0804AA60 + str r4, [r0, #0x64] + str r0, [r4, #8] + movs r0, #1 + b _08041F1A + .align 2, 0 +_08041F14: .4byte gUnk_03003DBC +_08041F18: + movs r0, #0 +_08041F1A: + pop {r4, r5, pc} + + thumb_func_start sub_08041F1C +sub_08041F1C: @ 0x08041F1C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08041F6C @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x43 + bhi _08041F70 + movs r0, #0x5f + movs r1, #0 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + ldr r0, [r4, #0x64] + str r1, [r0, #0x1c] + movs r0, #0x5f + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + ldr r0, [r4, #0x64] + str r1, [r0, #0x20] + movs r0, #0x5f + movs r1, #2 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + ldr r0, [r4, #0x64] + str r1, [r0, #0x24] + movs r0, #0x5f + movs r1, #3 + bl sub_0804AA60 + adds r1, r0, #0 + str r4, [r1, #0x50] + ldr r0, [r4, #0x64] + str r1, [r0, #0x28] + movs r0, #1 + b _08041F72 + .align 2, 0 +_08041F6C: .4byte gUnk_03003DBC +_08041F70: + movs r0, #0 +_08041F72: + pop {r4, pc} + + thumb_func_start sub_08041F74 +sub_08041F74: @ 0x08041F74 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, _08041F88 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x46 + bls _08041F8C + movs r0, #0 + b _08041FC8 + .align 2, 0 +_08041F88: .4byte gUnk_03003DBC +_08041F8C: + ldr r7, [r5, #0x64] + movs r4, #0 + ldr r0, _08041FC0 @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + asrs r0, r6 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08041FB6 + movs r0, #0x52 + movs r1, #0 + bl sub_0804AA60 + adds r4, r0, #0 + strb r6, [r4, #0xb] + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_08041FB6: + cmp r6, #0 + bne _08041FC4 + str r4, [r7, #0x14] + b _08041FC6 + .align 2, 0 +_08041FC0: .4byte gUnk_030010A0 +_08041FC4: + str r4, [r7, #0x18] +_08041FC6: + movs r0, #1 +_08041FC8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08041FCC +sub_08041FCC: @ 0x08041FCC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08041FFC @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x4c + bhi _08042000 + adds r0, r4, #0 + bl sub_08041ED4 + cmp r0, #0 + beq _08042000 + adds r0, r4, #0 + movs r1, #0 + bl sub_08041F74 + adds r0, r4, #0 + movs r1, #1 + bl sub_08041F74 + adds r0, r4, #0 + bl sub_08041F1C + movs r0, #1 + b _08042002 + .align 2, 0 +_08041FFC: .4byte gUnk_03003DBC +_08042000: + movs r0, #0 +_08042002: + pop {r4, pc} + + thumb_func_start sub_08042004 +sub_08042004: @ 0x08042004 + ldr r3, _08042024 @ =gUnk_080D0EA0 + adds r2, r0, #0 + adds r2, #0x78 + ldrb r1, [r2] + adds r1, #1 + strb r1, [r2] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1c + movs r2, #7 + ands r1, r2 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + strh r1, [r0, #0x36] + bx lr + .align 2, 0 +_08042024: .4byte gUnk_080D0EA0 + + thumb_func_start sub_08042028 +sub_08042028: @ 0x08042028 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #3 + strb r5, [r4, #0xc] + bl sub_08000E50 + ldr r1, _0804204C @ =gUnk_080D0EA8 + ands r0, r5 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + movs r0, #0x40 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0804207C + strb r0, [r4, #0x15] + pop {r4, r5, pc} + .align 2, 0 +_0804204C: .4byte gUnk_080D0EA8 + + thumb_func_start sub_08042050 +sub_08042050: @ 0x08042050 + push {r4, lr} + adds r4, r0, #0 + movs r0, #8 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08042078 @ =gUnk_080D0EAC + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r4, #0xe] + movs r1, #0x20 + strh r1, [r4, #0x24] + lsrs r0, r0, #8 + movs r1, #0x10 + ands r0, r1 + adds r0, #8 + strb r0, [r4, #0x15] + pop {r4, pc} + .align 2, 0 +_08042078: .4byte gUnk_080D0EAC + + thumb_func_start sub_0804207C +sub_0804207C: @ 0x0804207C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r6, [r5, r0] + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r7, r0, #0 + subs r7, #0x10 + ldr r0, [r5, #0x64] + ldr r4, [r0, #0x14] + cmp r4, #0 + beq _080420B8 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bls _080420B8 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + movs r3, #0x30 + bl sub_0806FCB8 + cmp r0, #0 + beq _080420B8 + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r6, #0 + adds r3, r7, #0 + b _08042118 +_080420B8: + ldr r0, [r5, #0x64] + ldr r4, [r0, #0x18] + cmp r4, #0 + beq _080420E4 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bls _080420E4 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + movs r3, #0x30 + bl sub_0806FCB8 + cmp r0, #0 + beq _080420E4 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r6, #0 + adds r3, r7, #0 + b _08042118 +_080420E4: + ldr r0, _080420FC @ =gLinkEntity + movs r4, #0x32 + ldrsh r1, [r0, r4] + adds r2, r0, #0 + cmp r1, #0x3f + bgt _08042104 + ldr r0, _08042100 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r3, r0, #0 + adds r3, #0x18 + b _0804210C + .align 2, 0 +_080420FC: .4byte gLinkEntity +_08042100: .4byte gUnk_03000BF0 +_08042104: + movs r1, #0x32 + ldrsh r0, [r2, r1] + adds r3, r0, #0 + subs r3, #0x28 +_0804210C: + movs r4, #0x2e + ldrsh r0, [r5, r4] + movs r4, #0x32 + ldrsh r1, [r5, r4] + movs r4, #0x2e + ldrsh r2, [r2, r4] +_08042118: + bl sub_080045D4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08042120 +sub_08042120: @ 0x08042120 + movs r2, #0 + movs r1, #5 + strb r1, [r0, #0xc] + strb r2, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_0804212C +sub_0804212C: @ 0x0804212C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + ldrh r0, [r1] + cmp r0, #0 + beq _0804213E + subs r0, #1 + b _080421A8 +_0804213E: + movs r5, #0 + movs r0, #0x32 + ldrsh r1, [r4, r0] + subs r1, #0x44 + ldr r3, _0804216C @ =gLinkEntity + movs r2, #0x32 + ldrsh r0, [r3, r2] + subs r0, r0, r1 + cmp r0, #0x60 + bhi _0804217A + movs r6, #0x2e + ldrsh r2, [r4, r6] + adds r0, r2, #0 + subs r0, #0x38 + movs r6, #0x2e + ldrsh r1, [r3, r6] + subs r0, r1, r0 + cmp r0, #0x38 + bhi _08042170 + ldr r0, [r4, #0x64] + ldr r5, [r0, #0x18] + b _0804217A + .align 2, 0 +_0804216C: .4byte gLinkEntity +_08042170: + subs r0, r1, r2 + cmp r0, #0x38 + bhi _0804217A + ldr r0, [r4, #0x64] + ldr r5, [r0, #0x14] +_0804217A: + cmp r5, #0 + beq _080421A2 + ldrb r0, [r5, #0xc] + cmp r0, #2 + bne _080421AA + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080421AA + movs r1, #0 + movs r0, #3 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0xb4 + lsls r0, r0, #2 + b _080421A8 +_080421A2: + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0x3c +_080421A8: + strh r0, [r1] +_080421AA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080421AC +sub_080421AC: @ 0x080421AC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7e + ldrh r0, [r5] + adds r7, r0, #0 + cmp r7, #0 + beq _080421C0 + subs r0, #1 + b _08042210 +_080421C0: + adds r6, r4, #0 + adds r6, #0x79 + ldrb r0, [r6] + cmp r0, #0 + bne _080421FE + bl sub_08000E50 + movs r5, #1 + ands r0, r5 + cmp r0, #0 + beq _080421F4 + ldr r0, _080421F0 @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r1, [r0] + movs r0, #0xc + ands r0, r1 + cmp r0, #0 + beq _080421F4 + adds r0, r4, #0 + bl sub_08042264 + strb r5, [r6] + b _08042212 + .align 2, 0 +_080421F0: .4byte gUnk_030010A0 +_080421F4: + adds r1, r4, #0 + adds r1, #0x7e + movs r0, #0x1e + strh r0, [r1] + b _08042212 +_080421FE: + adds r0, r4, #0 + movs r1, #0 + bl sub_080422C0 + cmp r0, #0 + beq _08042212 + strb r7, [r6] + movs r0, #0xb4 + lsls r0, r0, #1 +_08042210: + strh r0, [r5] +_08042212: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08042214 +sub_08042214: @ 0x08042214 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x7e + ldrh r0, [r6] + adds r7, r0, #0 + cmp r7, #0 + beq _08042228 + subs r0, #1 + b _0804225E +_08042228: + adds r5, r4, #0 + adds r5, #0x79 + ldrb r0, [r5] + cmp r0, #0 + bne _0804224E + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _0804224A + adds r0, r4, #0 + bl sub_0804228C + movs r0, #1 + strb r0, [r5] + b _08042260 +_0804224A: + movs r0, #0x1e + b _0804225E +_0804224E: + adds r0, r4, #0 + movs r1, #1 + bl sub_080422C0 + cmp r0, #0 + beq _08042260 + strb r7, [r5] + movs r0, #0xb4 +_0804225E: + strh r0, [r6] +_08042260: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08042264 +sub_08042264: @ 0x08042264 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + bl sub_080042AC + ldr r0, [r4, #0x64] + ldr r1, [r0, #4] + movs r0, #1 + strb r0, [r1, #0xd] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + movs r1, #0xd + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x13 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0804228C +sub_0804228C: @ 0x0804228C + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_080042AC + ldr r0, [r4, #0x64] + ldr r1, [r0, #4] + movs r0, #1 + strb r0, [r1, #0xd] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + movs r1, #0xd + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x13 + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + movs r1, #0x1d + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080422C0 +sub_080422C0: @ 0x080422C0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + mov r8, r1 + bl sub_080042B8 + ldr r0, [r5, #0x64] + ldr r0, [r0, #8] + bl sub_08004274 + ldr r0, [r5, #0x64] + ldr r7, [r0, #4] + adds r0, r7, #0 + bl sub_08004274 + mov r0, r8 + adds r0, #1 + adds r6, r7, #0 + adds r6, #0x5a + ldrb r4, [r6] + cmp r0, r4 + bne _08042306 + movs r0, #0x21 + bl sub_080A7EE0 + cmp r0, #0 + beq _08042354 + mov r1, r8 + strb r1, [r0, #0xa] + str r5, [r0, #0x50] + ldrb r0, [r6] + bics r0, r4 + strb r0, [r6] + b _08042354 +_08042306: + cmp r4, #4 + bne _0804231A + movs r0, #0xfb + ands r4, r0 + strb r4, [r6] + adds r0, r5, #0 + movs r1, #3 + bl sub_080042AC + b _08042354 +_0804231A: + movs r0, #0x80 + ands r4, r0 + cmp r4, #0 + beq _08042354 + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC + movs r0, #0 + strb r0, [r7, #0xd] + adds r0, r7, #0 + movs r1, #0xc + bl sub_08004260 + ldr r0, [r5, #0x64] + ldr r0, [r0, #8] + movs r1, #0x12 + bl sub_08004260 + mov r0, r8 + cmp r0, #1 + bne _08042350 + ldr r0, [r5, #0x64] + ldr r0, [r0, #0xc] + movs r1, #0x1b + bl sub_08004260 +_08042350: + movs r0, #1 + b _08042356 +_08042354: + movs r0, #0 +_08042356: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0804235C +sub_0804235C: @ 0x0804235C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x79 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x7e + movs r5, #0 + movs r0, #0xf0 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + strb r5, [r0, #0xd] + movs r1, #0xc + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x12 + bl sub_08004260 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + movs r1, #0x1b + bl sub_08004260 + pop {r4, r5, pc} + + thumb_func_start sub_080423A4 +sub_080423A4: @ 0x080423A4 + push {r4, lr} + ldr r0, _080423CC @ =gUnk_030010A0 + adds r4, r0, #0 + adds r4, #0x38 + ldrb r1, [r4] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0804241C + ldr r0, _080423D0 @ =gUnk_02002A40 + movs r2, #0x93 + lsls r2, r2, #3 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, #0 + beq _080423D4 + subs r0, #1 + str r0, [r1] + b _0804241C + .align 2, 0 +_080423CC: .4byte gUnk_030010A0 +_080423D0: .4byte gUnk_02002A40 +_080423D4: + ldr r2, _08042420 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0xa9 + ldrb r0, [r0] + cmp r0, #1 + bgt _0804241C + cmp r0, #0 + blt _0804241C + ldr r0, [r2, #0x2c] + cmp r0, #0 + bne _0804241C + ldr r1, _08042424 @ =gLinkEntity + adds r0, r1, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0 + bne _0804241C + movs r3, #0x36 + ldrsh r0, [r1, r3] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0804240A + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _0804241C +_0804240A: + movs r0, #0xb7 + lsls r0, r0, #4 + movs r1, #0 + bl sub_08078AA8 + ldrb r0, [r4] + movs r1, #2 + orrs r0, r1 + strb r0, [r4] +_0804241C: + pop {r4, pc} + .align 2, 0 +_08042420: .4byte gUnk_03003F80 +_08042424: .4byte gLinkEntity + + thumb_func_start sub_08042428 +sub_08042428: @ 0x08042428 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0804243C + str r0, [r4, #0x64] + bl sub_0805E780 +_0804243C: + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _08042450 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0xc + bl sub_08004260 +_08042450: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0804245C + adds r0, r4, #0 + bl sub_08004274 +_0804245C: + ldr r0, [r4, #0x58] + ldr r1, _0804249C @ =0x008000FF + ands r0, r1 + subs r1, #0xf3 + cmp r0, r1 + bne _08042480 + adds r0, r4, #0 + movs r1, #0xc + bl sub_08004260 + bl sub_08000E50 + movs r1, #0x78 + ands r0, r1 + adds r0, #0x78 + adds r1, r4, #0 + adds r1, #0x59 + strb r0, [r1] +_08042480: + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r1, r4, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806FA90 + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 +_0804249C: .4byte 0x008000FF + + thumb_func_start sub_080424A0 +sub_080424A0: @ 0x080424A0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080424B4 + str r0, [r4, #0x64] + bl sub_0805E780 +_080424B4: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080424C6 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x12 + bl sub_08004260 +_080424C6: + ldr r0, [r4, #0x64] + ldr r0, [r0] + movs r3, #1 + rsbs r3, r3, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA90 + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x12 + bne _08042502 + ldr r1, _08042504 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + ldr r1, _08042508 @ =gUnk_080D0EB0 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] +_08042502: + pop {r4, pc} + .align 2, 0 +_08042504: .4byte gLinkEntity +_08042508: .4byte gUnk_080D0EB0 + + thumb_func_start sub_0804250C +sub_0804250C: @ 0x0804250C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08042520 + str r0, [r4, #0x64] + bl sub_0805E780 +_08042520: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08042532 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x1c + bl sub_08004260 +_08042532: + ldr r0, [r4, #0x64] + ldr r0, [r0] + movs r3, #1 + rsbs r3, r3, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA90 + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08042554 +sub_08042554: @ 0x08042554 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0804256C @ =gUnk_080D1230 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0804256C: .4byte gUnk_080D1230 + + thumb_func_start sub_08042570 +sub_08042570: @ 0x08042570 + push {lr} + ldr r2, _08042584 @ =gUnk_080D1248 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08042584: .4byte gUnk_080D1248 + + thumb_func_start sub_08042588 +sub_08042588: @ 0x08042588 + push {lr} + ldr r1, _08042594 @ =gUnk_080D1230 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_08042594: .4byte gUnk_080D1230 + + thumb_func_start nullsub_170 +nullsub_170: @ 0x08042598 + bx lr + .align 2, 0 + + thumb_func_start sub_0804259C +sub_0804259C: @ 0x0804259C + push {lr} + ldr r2, _080425B0 @ =gUnk_080D125C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080425B0: .4byte gUnk_080D125C + + thumb_func_start sub_080425B4 +sub_080425B4: @ 0x080425B4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080437DC + cmp r0, #0 + beq _0804264C + adds r0, r4, #0 + adds r0, #0x7c + movs r1, #0 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + ldr r5, _08042614 @ =gUnk_030010A0 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + movs r6, #1 + adds r1, r6, #0 + ands r1, r0 + cmp r1, #0 + beq _08042634 + adds r0, r5, #0 + adds r0, #0x3c + ldrb r0, [r0] + ldrb r1, [r4, #0xb] + cmp r0, r1 + bne _08042620 + adds r0, r4, #0 + bl sub_08043EB8 + adds r0, r4, #0 + bl sub_08043ABC + adds r0, r5, #0 + adds r0, #0x39 + ldrb r1, [r0] + ldrb r0, [r4, #0xb] + adds r0, #2 + asrs r1, r0 + ands r1, r6 + cmp r1, #0 + beq _08042618 + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xd] + b _0804264C + .align 2, 0 +_08042614: .4byte gUnk_030010A0 +_08042618: + movs r0, #8 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _0804264C +_08042620: + adds r0, r4, #0 + bl sub_08044000 + adds r0, r4, #0 + bl sub_08043BC8 + adds r0, r4, #0 + bl sub_08043A10 + b _0804264C +_08042634: + strb r6, [r4, #0xc] + strb r1, [r4, #0xd] + ldr r2, [r4, #0x64] + ldr r1, _08042650 @ =gUnk_080D1280 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x20] + adds r0, r4, #0 + bl sub_08042654 +_0804264C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08042650: .4byte gUnk_080D1280 + + thumb_func_start sub_08042654 +sub_08042654: @ 0x08042654 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0xb] + lsls r3, r0, #2 + ldr r0, [r6, #0x64] + adds r2, r0, #0 + adds r2, #0x18 + ldrb r0, [r6, #0xd] + cmp r0, #4 + bls _0804266A + b _080427FC +_0804266A: + lsls r0, r0, #2 + ldr r1, _08042674 @ =_08042678 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08042674: .4byte _08042678 +_08042678: @ jump table + .4byte _0804268C @ case 0 + .4byte _080426B0 @ case 1 + .4byte _080426E0 @ case 2 + .4byte _08042710 @ case 3 + .4byte _08042740 @ case 4 +_0804268C: + movs r0, #1 + strb r0, [r6, #0xd] + ldr r1, _080426A8 @ =gUnk_080D1284 + ldrb r0, [r6, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2, #1] + ldr r1, _080426AC @ =gUnk_080D1286 + ldrb r0, [r6, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r6, #0 + b _080427EE + .align 2, 0 +_080426A8: .4byte gUnk_080D1284 +_080426AC: .4byte gUnk_080D1286 +_080426B0: + ldrh r0, [r2, #8] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + ldr r1, [r6, #0x64] + adds r1, #0x34 + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xb + bhi _080426CC + b _0804280E +_080426CC: + movs r0, #2 + strb r0, [r6, #0xd] + ldr r1, _080426DC @ =gUnk_080D1286 + adds r0, r3, #1 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r6, #0 + b _080427EE + .align 2, 0 +_080426DC: .4byte gUnk_080D1286 +_080426E0: + ldrh r0, [r2, #8] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + ldr r1, [r6, #0x64] + adds r1, #0x44 + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xd + bhi _080426FC + b _0804280E +_080426FC: + movs r0, #3 + strb r0, [r6, #0xd] + ldr r1, _0804270C @ =gUnk_080D1286 + adds r0, r3, #2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r6, #0 + b _080427EE + .align 2, 0 +_0804270C: .4byte gUnk_080D1286 +_08042710: + ldrh r0, [r2, #8] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + ldr r1, [r6, #0x64] + adds r1, #0x54 + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bls _0804280E + movs r0, #4 + strb r0, [r6, #0xd] + ldr r1, _0804273C @ =gUnk_080D1286 + adds r0, r3, #3 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r6, #0 + b _080427EE + .align 2, 0 +_0804273C: .4byte gUnk_080D1286 +_08042740: + ldrh r0, [r2, #8] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + ldr r1, [r6, #0x64] + adds r1, #0x64 + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1b + bls _0804280E + movs r0, #5 + strb r0, [r6, #0xd] + movs r0, #0x5a + strb r0, [r6, #0xe] + ldr r0, [r6, #0x64] + ldr r1, [r0] + ldrb r0, [r1, #0x10] + movs r5, #0x80 + orrs r0, r5 + strb r0, [r1, #0x10] + ldr r0, [r6, #0x64] + ldr r1, [r0] + adds r1, #0x29 + ldrb r2, [r1] + movs r3, #8 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r2 + movs r4, #4 + orrs r0, r4 + strb r0, [r1] + ldr r0, [r6, #0x64] + ldr r1, [r0, #4] + ldrb r0, [r1, #0x10] + orrs r0, r5 + strb r0, [r1, #0x10] + ldr r0, [r6, #0x64] + ldr r1, [r0, #4] + adds r1, #0x29 + ldrb r2, [r1] + adds r0, r3, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + ldr r0, [r6, #0x64] + ldr r1, [r0, #8] + ldrb r0, [r1, #0x10] + orrs r0, r5 + strb r0, [r1, #0x10] + ldr r0, [r6, #0x64] + ldr r1, [r0, #8] + adds r1, #0x29 + ldrb r2, [r1] + adds r0, r3, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + ldr r0, [r6, #0x64] + ldr r1, [r0, #0xc] + ldrb r0, [r1, #0x10] + orrs r0, r5 + strb r0, [r1, #0x10] + ldr r0, [r6, #0x64] + ldr r1, [r0, #0xc] + adds r1, #0x29 + ldrb r2, [r1] + adds r0, r3, #0 + ands r0, r2 + orrs r0, r4 + strb r0, [r1] + ldr r0, [r6, #0x64] + ldr r1, [r0, #0x10] + ldrb r0, [r1, #0x10] + orrs r0, r5 + strb r0, [r1, #0x10] + ldr r0, [r6, #0x64] + ldr r0, [r0, #0x10] + adds r0, #0x29 + ldrb r1, [r0] + ands r3, r1 + orrs r3, r4 + strb r3, [r0] + adds r0, r6, #0 + movs r1, #7 +_080427EE: + bl sub_080042AC + movs r0, #0xaf + lsls r0, r0, #1 + bl sub_080A3268 + b _0804280E +_080427FC: + ldrb r0, [r6, #0xe] + subs r0, #1 + strb r0, [r6, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804280E + adds r0, r6, #0 + bl sub_08043BC8 +_0804280E: + adds r0, r6, #0 + bl sub_08043A10 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08042818 +sub_08042818: @ 0x08042818 + push {r4, lr} + adds r4, r0, #0 + bl sub_08043CD4 + ldr r0, [r4, #0x64] + adds r2, r0, #0 + adds r2, #0x18 + ldrh r1, [r2, #8] + ldrh r3, [r0, #0x18] + adds r1, r1, r3 + strh r1, [r0, #0x18] + ldrb r0, [r2, #0xd] + subs r0, #1 + strb r0, [r2, #0xd] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042848 + movs r0, #0x78 + strb r0, [r2, #0xd] + movs r3, #8 + ldrsh r0, [r2, r3] + rsbs r0, r0, #0 + strh r0, [r2, #8] +_08042848: + ldrh r0, [r2, #0xa] + ldrh r3, [r2, #4] + adds r0, r0, r3 + strh r0, [r2, #4] + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + ands r0, r1 + cmp r0, #0 + bne _08042868 + movs r0, #0x50 + strb r0, [r2, #0xe] + movs r1, #0xa + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + strh r0, [r2, #0xa] +_08042868: + adds r0, r4, #0 + bl sub_08043A10 + pop {r4, pc} + + thumb_func_start sub_08042870 +sub_08042870: @ 0x08042870 + push {r4, lr} + adds r4, r0, #0 + bl sub_08043CD4 + ldr r1, _08042890 @ =gUnk_080D1290 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08043A10 + pop {r4, pc} + .align 2, 0 +_08042890: .4byte gUnk_080D1290 + + thumb_func_start sub_08042894 +sub_08042894: @ 0x08042894 + movs r1, #1 + strb r1, [r0, #0xd] + ldr r2, [r0, #0x64] + ldr r1, _080428A8 @ =gUnk_080D12AC + ldrb r0, [r0, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x20] + bx lr + .align 2, 0 +_080428A8: .4byte gUnk_080D12AC + + thumb_func_start sub_080428AC +sub_080428AC: @ 0x080428AC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + adds r3, r0, #0 + adds r3, #0x18 + ldrb r0, [r3, #5] + cmp r0, #0x40 + beq _080428CC + cmp r0, #0x40 + bls _080428C6 + ldrh r0, [r3, #4] + subs r0, #0x80 + b _080428CA +_080428C6: + ldrh r0, [r3, #4] + adds r0, #0x80 +_080428CA: + strh r0, [r3, #4] +_080428CC: + ldrb r1, [r3, #1] + ldr r2, _080428E8 @ =gUnk_080D12B0 + ldrb r0, [r4, #0xb] + adds r0, r0, r2 + ldrb r0, [r0] + subs r1, r1, r0 + adds r1, #1 + cmp r1, #2 + bls _080428EC + ldrh r0, [r3, #8] + ldrh r1, [r3] + adds r0, r0, r1 + strh r0, [r3] + b _080428F4 + .align 2, 0 +_080428E8: .4byte gUnk_080D12B0 +_080428EC: + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] +_080428F4: + adds r0, r4, #0 + bl sub_08043BF0 + pop {r4, pc} + + thumb_func_start sub_080428FC +sub_080428FC: @ 0x080428FC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804293C + movs r0, #3 + strb r0, [r4, #0xd] + ldr r1, [r4, #0x64] + adds r1, #0x18 + movs r0, #8 + ldrsh r2, [r1, r0] + lsls r0, r2, #1 + adds r0, r0, r2 + rsbs r0, r0, #0 + strh r0, [r1, #8] + ldr r0, _08042940 @ =0x00000153 + bl sub_080A3268 + movs r2, #0 + movs r3, #0x3b +_0804292A: + ldr r0, [r4, #0x64] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0x3f + strb r3, [r0] + adds r2, #1 + cmp r2, #4 + bls _0804292A +_0804293C: + pop {r4, pc} + .align 2, 0 +_08042940: .4byte 0x00000153 + + thumb_func_start sub_08042944 +sub_08042944: @ 0x08042944 + push {lr} + adds r3, r0, #0 + ldr r2, [r3, #0x64] + adds r1, r2, #0 + adds r1, #0x18 + ldrb r0, [r1, #1] + subs r0, #0x7c + cmp r0, #8 + bls _08042960 + ldrh r0, [r1, #8] + ldrh r1, [r2, #0x18] + adds r0, r0, r1 + strh r0, [r2, #0x18] + b _08042968 +_08042960: + movs r0, #4 + strb r0, [r3, #0xd] + ldrh r0, [r1, #8] + strh r0, [r3, #0x24] +_08042968: + adds r0, r3, #0 + bl sub_08043BF0 + pop {pc} + + thumb_func_start sub_08042970 +sub_08042970: @ 0x08042970 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r4, [r3, #0x64] + adds r2, r4, #0 + adds r2, #0x18 + ldrb r0, [r2, #1] + ldr r1, _080429A4 @ =gUnk_080D12B2 + ldrb r5, [r3, #0xb] + adds r1, r5, r1 + ldrb r1, [r1] + subs r0, r0, r1 + adds r0, #2 + cmp r0, #4 + bls _080429AC + ldr r0, _080429A8 @ =gUnk_080D12B4 + adds r0, r5, r0 + movs r1, #0 + ldrsb r1, [r0, r1] + ldrh r0, [r2, #8] + adds r1, r1, r0 + strh r1, [r2, #8] + ldrh r0, [r4, #0x18] + adds r0, r0, r1 + strh r0, [r4, #0x18] + b _080429CA + .align 2, 0 +_080429A4: .4byte gUnk_080D12B2 +_080429A8: .4byte gUnk_080D12B4 +_080429AC: + movs r0, #5 + strb r0, [r3, #0xd] + movs r0, #0x3c + strb r0, [r3, #0xe] + movs r2, #0 + movs r4, #0x39 +_080429B8: + ldr r0, [r3, #0x64] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0x3f + strb r4, [r0] + adds r2, #1 + cmp r2, #4 + bls _080429B8 +_080429CA: + adds r0, r3, #0 + bl sub_08043BF0 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080429D4 +sub_080429D4: @ 0x080429D4 + push {r4, lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080429FA + movs r0, #6 + strb r0, [r1, #0xd] + ldr r4, [r1, #0x64] + adds r4, #0x18 + movs r2, #0x24 + ldrsh r0, [r1, r2] + rsbs r0, r0, #0 + movs r1, #6 + bl __divsi3 + strh r0, [r4, #8] +_080429FA: + pop {r4, pc} + + thumb_func_start sub_080429FC +sub_080429FC: @ 0x080429FC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x64] + adds r5, r3, #0 + adds r5, #0x18 + ldrb r1, [r5, #1] + ldr r2, _08042A28 @ =gUnk_080D12B6 + ldrb r0, [r4, #0xb] + adds r0, r0, r2 + ldrb r0, [r0] + subs r1, r1, r0 + adds r1, #1 + cmp r1, #2 + bls _08042A2C + ldrh r0, [r5, #8] + ldrh r1, [r3, #0x18] + adds r0, r0, r1 + strh r0, [r3, #0x18] + adds r0, r4, #0 + bl sub_08043BF0 + b _08042A3A + .align 2, 0 +_08042A28: .4byte gUnk_080D12B6 +_08042A2C: + adds r0, r4, #0 + bl sub_08043BC8 + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC +_08042A3A: + pop {r4, r5, pc} + + thumb_func_start sub_08042A3C +sub_08042A3C: @ 0x08042A3C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08042A68 @ =gUnk_080D12B8 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08043A10 + ldr r0, [r4, #0x64] + ldr r1, [r0, #0x10] + adds r4, #0x78 + ldrh r0, [r1, #0x36] + ldrb r4, [r4] + adds r0, r0, r4 + strh r0, [r1, #0x36] + pop {r4, pc} + .align 2, 0 +_08042A68: .4byte gUnk_080D12B8 + + thumb_func_start sub_08042A6C +sub_08042A6C: @ 0x08042A6C + adds r3, r0, #0 + movs r2, #0 + movs r1, #1 + strb r1, [r3, #0xd] + adds r0, #0x78 + strb r2, [r0] + adds r0, #6 + strb r1, [r0] + ldr r1, [r3, #0x64] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1, #0x22] + bx lr + .align 2, 0 + + thumb_func_start sub_08042A88 +sub_08042A88: @ 0x08042A88 + push {r4, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x64] + adds r2, r3, #0 + adds r2, #0x18 + ldr r1, _08042AA8 @ =gUnk_080D12C8 + ldrb r0, [r4, #0xb] + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r0, [r2, #1] + cmp r1, r0 + beq _08042ABC + cmp r1, r0 + bhs _08042AB0 + ldr r1, _08042AAC @ =0xFFFFFF00 + b _08042AB4 + .align 2, 0 +_08042AA8: .4byte gUnk_080D12C8 +_08042AAC: .4byte 0xFFFFFF00 +_08042AB0: + movs r1, #0x80 + lsls r1, r1, #1 +_08042AB4: + adds r0, r1, #0 + ldrh r1, [r3, #0x18] + adds r0, r0, r1 + strh r0, [r3, #0x18] +_08042ABC: + movs r1, #0xa + ldrsh r0, [r2, r1] + ldrh r1, [r2, #4] + cmp r0, r1 + bge _08042ACE + ldrh r0, [r2, #0xa] + subs r0, r1, r0 + strh r0, [r2, #4] + b _08042AE6 +_08042ACE: + movs r0, #0 + strh r0, [r2, #4] + ldr r1, _08042AE8 @ =gUnk_080D12CA + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #8] + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] +_08042AE6: + pop {r4, pc} + .align 2, 0 +_08042AE8: .4byte gUnk_080D12CA + + thumb_func_start sub_08042AEC +sub_08042AEC: @ 0x08042AEC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042B1C + movs r0, #3 + strb r0, [r5, #0xd] + movs r0, #4 + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x3f + movs r4, #0x3d + strb r4, [r0] + adds r0, r5, #0 + movs r1, #0xe + bl sub_080042AC + ldr r0, [r5, #0x64] + ldr r0, [r0, #4] + adds r0, #0x3f + strb r4, [r0] +_08042B1C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08042B20 +sub_08042B20: @ 0x08042B20 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x64] + adds r1, r0, #0 + adds r1, #0x18 + ldrb r0, [r1, #5] + cmp r0, #0x7a + bhi _08042B3E + movs r2, #0xa0 + lsls r2, r2, #3 + adds r0, r2, #0 + ldrh r2, [r1, #4] + adds r0, r0, r2 + strh r0, [r1, #4] + b _08042B42 +_08042B3E: + movs r0, #0x80 + strb r0, [r1, #5] +_08042B42: + ldrb r0, [r1, #5] + cmp r0, #0x30 + bls _08042B50 + ldrh r0, [r1, #8] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] +_08042B50: + ldr r0, [r5, #0x64] + ldr r0, [r0, #0xc] + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _08042BE0 + adds r0, r5, #0 + bl sub_08043C40 + movs r6, #0 + movs r7, #0xa + rsbs r7, r7, #0 +_08042B68: + ldr r0, [r5, #0x64] + lsls r1, r6, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, r7 + blt _08042BD4 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08042BD4 + cmp r6, #0 + bne _08042BBA + movs r0, #0xaf + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08042B9C + ldr r0, [r5, #0x64] + ldr r0, [r0, #0x10] + str r0, [r1, #0x50] +_08042B9C: + ldr r0, [r5, #0x64] + ldr r0, [r0, #0x10] + str r1, [r0, #0x68] + movs r0, #0xaf + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08042BBA + ldr r0, [r5, #0x64] + ldr r0, [r0, #0x10] + bl sub_0806FA24 +_08042BBA: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0x18] + movs r2, #4 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, _08042BDC @ =0x00000161 + bl sub_080A3268 +_08042BD4: + adds r6, #1 + cmp r6, #3 + bls _08042B68 + b _08042C12 + .align 2, 0 +_08042BDC: .4byte 0x00000161 +_08042BE0: + adds r0, r5, #0 + adds r0, #0x78 + ldrb r1, [r0] + adds r1, #2 + strb r1, [r0] + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08042C12 + movs r0, #5 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + movs r0, #0x1e + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x3f + movs r1, #0x39 + strb r1, [r0] + ldr r0, [r5, #0x64] + ldr r0, [r0, #4] + adds r0, #0x3f + strb r1, [r0] +_08042C12: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08042C14 +sub_08042C14: @ 0x08042C14 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08042C30 @ =gUnk_080D12D0 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08043A78 + pop {r4, pc} + .align 2, 0 +_08042C30: .4byte gUnk_080D12D0 + + thumb_func_start sub_08042C34 +sub_08042C34: @ 0x08042C34 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r7, r0, #0 + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042D0C + movs r0, #0x3c + strb r0, [r7, #0xe] + movs r0, #3 + strb r0, [r7, #0xf] + movs r0, #1 + strb r0, [r7, #0xd] + bl sub_08000E50 + movs r1, #6 + ands r1, r0 + ldr r0, _08042D14 @ =gUnk_080D12F8 + adds r1, r1, r0 + ldr r3, _08042D18 @ =gLinkEntity + movs r0, #0x2e + ldrsh r2, [r3, r0] + movs r0, #0 + ldrsb r0, [r1, r0] + adds r6, r2, r0 + movs r0, #0x32 + ldrsh r2, [r3, r0] + movs r0, #1 + ldrsb r0, [r1, r0] + adds r5, r2, r0 + ldr r3, _08042D1C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + adds r0, r2, #0 + adds r0, #0x20 + cmp r0, r6 + ble _08042C86 + adds r6, r0, #0 +_08042C86: + ldrh r0, [r3, #0x1e] + adds r0, r2, r0 + subs r0, #0x20 + cmp r0, r6 + bge _08042C92 + adds r6, r0, #0 +_08042C92: + ldrh r1, [r3, #8] + adds r0, r1, #0 + adds r0, #0x20 + cmp r0, r5 + ble _08042C9E + adds r5, r0, #0 +_08042C9E: + ldrh r0, [r3, #0x20] + adds r0, r1, r0 + subs r0, #0x40 + cmp r0, r5 + bge _08042CAA + adds r5, r0, #0 +_08042CAA: + subs r0, r6, r2 + subs r0, #0x90 + cmp r0, #0x40 + bhi _08042CC2 + subs r0, r5, r1 + subs r0, #8 + cmp r0, #0x40 + bhi _08042CC2 + adds r6, r2, #0 + adds r6, #0xb0 + adds r5, r1, #0 + adds r5, #0x40 +_08042CC2: + movs r4, #0 + mov r8, r4 + movs r3, #0x18 +_08042CC8: + ldr r0, [r7, #0x64] + lsls r1, r4, #2 + adds r0, r0, r1 + ldr r2, [r0] + strh r6, [r2, #0x2e] + strh r5, [r2, #0x32] + movs r0, #0x32 + strh r0, [r2, #0x36] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0x39 + strb r0, [r1] + ldr r1, [r7, #0x64] + adds r1, r1, r3 + movs r0, #0x80 + strh r0, [r1] + mov r0, r8 + strh r0, [r1, #4] + ldr r0, _08042D20 @ =gUnk_080D1419 + adds r0, r4, r0 + ldrb r0, [r0] + strb r0, [r1, #0xc] + cmp r4, #0 + beq _08042D04 + adds r0, r2, #0 + movs r1, #0x12 + str r3, [sp] + bl sub_08004260 + ldr r3, [sp] +_08042D04: + adds r3, #0x10 + adds r4, #1 + cmp r4, #3 + bls _08042CC8 +_08042D0C: + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08042D14: .4byte gUnk_080D12F8 +_08042D18: .4byte gLinkEntity +_08042D1C: .4byte gUnk_03000BF0 +_08042D20: .4byte gUnk_080D1419 + + thumb_func_start sub_08042D24 +sub_08042D24: @ 0x08042D24 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042D68 + movs r0, #2 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x3f + movs r1, #0x3d + strb r1, [r0] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + adds r0, #0x3f + strb r1, [r0] + movs r0, #0xaf + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08042D5E + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + str r0, [r1, #0x50] +_08042D5E: + str r1, [r4, #0x68] + adds r0, r4, #0 + movs r1, #0xd + bl sub_080042AC +_08042D68: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08042D6C +sub_08042D6C: @ 0x08042D6C + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 +_08042D72: + ldr r0, [r5, #0x64] + lsls r1, r6, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #3 + bgt _08042DC4 + cmp r6, #2 + beq _08042D8E + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_08042D8E: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _08042DB4 + movs r0, #0xaf + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08042DB4 + adds r0, r4, #0 + bl sub_0806FA24 + movs r0, #0xb3 + lsls r0, r0, #1 + bl sub_080A3268 +_08042DB4: + ldrb r0, [r4, #0x18] + movs r2, #4 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_08042DC4: + adds r6, #1 + cmp r6, #3 + bls _08042D72 + ldr r0, [r5, #0x64] + ldr r4, [r0, #0xc] + ldrh r2, [r4, #0x36] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #3 + rsbs r0, r0, #0 + cmp r1, r0 + bgt _08042E28 + ldr r0, _08042E20 @ =0x0000FFFB + strh r0, [r4, #0x36] + ldr r2, [r5, #0x64] + ldr r1, _08042E24 @ =gUnk_080D1300 + ldrb r0, [r5, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x20] + ldr r1, [r5, #0x64] + movs r0, #0xc0 + strh r0, [r1, #0x22] + movs r0, #3 + strb r0, [r5, #0xd] + movs r0, #0x1e + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x3f + movs r4, #0x39 + strb r4, [r0] + adds r1, r5, #0 + adds r1, #0x7f + movs r0, #0x2d + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC + ldr r0, [r5, #0x64] + ldr r0, [r0, #4] + adds r0, #0x3f + strb r4, [r0] + b _08042E2C + .align 2, 0 +_08042E20: .4byte 0x0000FFFB +_08042E24: .4byte gUnk_080D1300 +_08042E28: + subs r0, r2, #2 + strh r0, [r4, #0x36] +_08042E2C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08042E30 +sub_08042E30: @ 0x08042E30 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r1, r6, #0 + adds r1, #0x7f + ldrb r0, [r1] + cmp r0, #0 + bne _08042E4A + adds r0, r6, #0 + bl sub_08043C98 + cmp r0, #0 + bne _08042EF0 + b _08042E4E +_08042E4A: + subs r0, #1 + strb r0, [r1] +_08042E4E: + ldr r7, [r6, #0x64] + adds r5, r7, #0 + adds r5, #0x18 + ldrb r0, [r6, #0xe] + subs r0, #1 + strb r0, [r6, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042EB2 + movs r0, #4 + strb r0, [r6, #0xd] + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #0x28 + strb r0, [r6, #0xe] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r6, #0x24] + ldrb r0, [r5, #1] + lsrs r0, r0, #3 + strb r0, [r6, #0x15] + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r2, #0x32 + ldrsh r1, [r6, r2] + ldr r3, _08042ED4 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + movs r4, #0x88 + lsls r4, r4, #1 + adds r2, r2, r4 + ldrh r3, [r3, #8] + adds r3, #0x60 + bl sub_080045D4 + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _08042ED8 @ =gUnk_080D1304 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r0, r0, r4 + movs r1, #0x1f + ands r0, r1 + adds r1, r6, #0 + adds r1, #0x79 + strb r0, [r1] +_08042EB2: + ldrh r0, [r5, #8] + ldrh r1, [r7, #0x18] + adds r0, r0, r1 + strh r0, [r7, #0x18] + ldrh r0, [r5, #0xa] + ldrh r2, [r5, #4] + adds r1, r0, r2 + strh r1, [r5, #4] + lsls r0, r0, #0x10 + cmp r0, #0 + ble _08042EDC + ldrb r0, [r5, #5] + cmp r0, #0x18 + bls _08042EEA + movs r4, #0xa + ldrsh r0, [r5, r4] + b _08042EE6 + .align 2, 0 +_08042ED4: .4byte gUnk_03000BF0 +_08042ED8: .4byte gUnk_080D1304 +_08042EDC: + ldrb r0, [r5, #5] + cmp r0, #3 + bhi _08042EEA + movs r1, #0xa + ldrsh r0, [r5, r1] +_08042EE6: + rsbs r0, r0, #0 + strh r0, [r5, #0xa] +_08042EEA: + adds r0, r6, #0 + bl sub_080042B8 +_08042EF0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08042EF4 +sub_08042EF4: @ 0x08042EF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08043C98 + cmp r0, #0 + bne _08042FCE + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08042F4E + ldr r0, _08042F38 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x50 + bl sub_0806FCB8 + cmp r0, #0 + beq _08042F3C + movs r0, #6 + strb r0, [r4, #0xd] + movs r0, #0x28 + strb r0, [r4, #0xe] + b _08042F4E + .align 2, 0 +_08042F38: .4byte gLinkEntity +_08042F3C: + movs r0, #5 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0xf + bl sub_080042AC + ldr r0, _08042FD4 @ =0x0000019B + bl sub_080A3268 +_08042F4E: + ldr r0, [r4, #0x64] + adds r7, r0, #0 + adds r7, #0x18 + ldrb r0, [r7, #5] + cmp r0, #0x1f + bhi _08042F66 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r2, [r7, #4] + adds r0, r0, r2 + strh r0, [r7, #4] +_08042F66: + ldr r0, [r4, #0x50] + movs r1, #0x2e + ldrsh r3, [r0, r1] + mov r8, r3 + movs r2, #0x32 + ldrsh r0, [r0, r2] + adds r6, r0, #0 + subs r6, #0x10 + adds r0, r4, #0 + mov r1, r8 + adds r2, r6, #0 + movs r3, #0x30 + bl sub_0806FCB8 + adds r5, r4, #0 + adds r5, #0x79 + cmp r0, #0 + beq _08042FAC + movs r3, #0x2e + ldrsh r0, [r4, r3] + movs r2, #0x32 + ldrsh r1, [r4, r2] + mov r2, r8 + adds r3, r6, #0 + bl sub_080045D4 + adds r1, r0, #0 + ldrb r0, [r5] + subs r0, r0, r1 + adds r0, #4 + cmp r0, #8 + bhi _08042FAC + movs r0, #0x10 + eors r1, r0 + strb r1, [r5] +_08042FAC: + ldrb r0, [r5] + ldrb r3, [r4, #0x15] + cmp r0, r3 + beq _08042FC2 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 + ldrb r0, [r4, #0x15] + lsls r0, r0, #3 + strb r0, [r7, #1] +_08042FC2: + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + ldrb r1, [r4, #0x15] + strb r1, [r0, #0x15] + bl sub_080AEF88 +_08042FCE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08042FD4: .4byte 0x0000019B + + thumb_func_start sub_08042FD8 +sub_08042FD8: @ 0x08042FD8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_080042B8 + adds r0, r5, #0 + bl sub_08043C98 + cmp r0, #0 + bne _08043046 + adds r6, r5, #0 + adds r6, #0x5a + ldrb r1, [r6] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08043018 + movs r0, #0x20 + bl sub_080A7EE0 + adds r4, r0, #0 + cmp r4, #0 + beq _08043046 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x36] + subs r0, #0x18 + movs r1, #0 + strh r0, [r4, #0x36] + strb r1, [r6] + b _08043046 +_08043018: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08043046 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08043036 + movs r0, #8 + strb r0, [r5, #0xd] + movs r0, #0x3c + strb r0, [r5, #0xe] + b _08043046 +_08043036: + movs r0, #3 + strb r0, [r5, #0xd] + movs r0, #0x3c + strb r0, [r5, #0xe] + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC +_08043046: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08043048 +sub_08043048: @ 0x08043048 + push {r4, lr} + adds r4, r0, #0 + bl sub_08043C98 + cmp r0, #0 + bne _080430CC + ldr r2, [r4, #0x64] + adds r1, r2, #0 + adds r1, #0x18 + ldrb r0, [r1, #5] + cmp r0, #0x4f + bhi _08043094 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r3, [r1, #4] + adds r0, r0, r3 + strh r0, [r1, #4] + ldrb r0, [r1, #5] + cmp r0, #0x4f + bls _080430C6 + movs r2, #0 + movs r3, #0x3b +_08043076: + ldr r0, [r4, #0x64] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0x3f + strb r3, [r0] + adds r2, #1 + cmp r2, #4 + bls _08043076 + ldr r0, _08043090 @ =0x00000153 + bl sub_080A3268 + b _080430C6 + .align 2, 0 +_08043090: .4byte 0x00000153 +_08043094: + movs r3, #8 + ldrsh r0, [r1, r3] + lsls r0, r0, #3 + ldrh r1, [r2, #0x18] + adds r0, r0, r1 + strh r0, [r2, #0x18] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080430C6 + movs r0, #7 + strb r0, [r4, #0xd] + movs r2, #0 + movs r3, #0x39 +_080430B4: + ldr r0, [r4, #0x64] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0x3f + strb r3, [r0] + adds r2, #1 + cmp r2, #4 + bls _080430B4 +_080430C6: + adds r0, r4, #0 + bl sub_08043B9C +_080430CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080430D0 +sub_080430D0: @ 0x080430D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08043C98 + cmp r0, #0 + bne _08043128 + ldr r1, [r4, #0x64] + adds r2, r1, #0 + adds r2, #0x18 + ldrh r0, [r2, #8] + ldrh r3, [r1, #0x18] + adds r0, r0, r3 + strh r0, [r1, #0x18] + ldr r1, _08043110 @ =0xFFFFFF00 + adds r0, r1, #0 + ldrh r3, [r2, #4] + adds r0, r0, r3 + strh r0, [r2, #4] + ldrb r0, [r2, #5] + cmp r0, #0x17 + bhi _08043128 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08043114 + movs r0, #8 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + b _08043128 + .align 2, 0 +_08043110: .4byte 0xFFFFFF00 +_08043114: + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r0, _0804312C @ =0x0000FF40 + strh r0, [r2, #0xa] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_08043128: + pop {r4, pc} + .align 2, 0 +_0804312C: .4byte 0x0000FF40 + + thumb_func_start sub_08043130 +sub_08043130: @ 0x08043130 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r1, [r6, #0x64] + adds r4, r1, #0 + adds r4, #0x18 + ldrb r0, [r4, #5] + cmp r0, #0 + beq _08043160 + adds r0, r6, #0 + bl sub_08043C98 + cmp r0, #0 + bne _080431E0 + ldrb r0, [r4, #5] + subs r0, #1 + strb r0, [r4, #5] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080431E0 + adds r0, r6, #0 + movs r1, #0xd + bl sub_080042AC + b _080431E0 +_08043160: + ldrb r0, [r6, #0xe] + cmp r0, #0 + beq _08043186 + subs r0, #1 + strb r0, [r6, #0xe] + movs r5, #1 + movs r1, #0x28 +_0804316E: + ldr r0, [r6, #0x64] + adds r4, r0, r1 + ldrb r0, [r4, #5] + cmp r0, #0 + beq _0804317C + subs r0, #1 + strb r0, [r4, #5] +_0804317C: + adds r1, #0x10 + adds r5, #1 + cmp r5, #3 + bls _0804316E + b _080431E0 +_08043186: + ldr r1, [r1, #0xc] + ldrh r0, [r1, #0x36] + adds r0, #3 + strh r0, [r1, #0x36] + movs r5, #0 + movs r7, #4 + rsbs r7, r7, #0 +_08043194: + ldr r0, [r6, #0x64] + lsls r1, r5, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, r7 + ble _080431C4 + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080431BC + ldr r0, _080431E4 @ =0x00000161 + bl sub_080A3268 +_080431BC: + ldrb r1, [r4, #0x18] + adds r0, r7, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_080431C4: + adds r5, #1 + cmp r5, #3 + bls _08043194 + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _080431E0 + movs r0, #9 + strb r0, [r6, #0xd] + movs r0, #0x3c + strb r0, [r6, #0xe] + adds r0, r6, #0 + bl sub_0804AA1C +_080431E0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080431E4: .4byte 0x00000161 + + thumb_func_start sub_080431E8 +sub_080431E8: @ 0x080431E8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0804324E + movs r0, #6 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r5, #0 + ldr r7, _08043250 @ =gUnk_080D130C + movs r6, #0x18 +_08043206: + ldr r1, [r4, #0x64] + adds r1, r1, r6 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #8 + strh r0, [r1, #4] + ldr r0, _08043254 @ =gUnk_080D1414 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r1, #0xc] + cmp r5, #3 + bne _08043230 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + movs r1, #0x11 + bl sub_08004260 +_08043230: + adds r6, #0x10 + adds r5, #1 + cmp r5, #3 + bls _08043206 + ldr r2, [r4, #0x64] + ldr r1, _08043258 @ =gUnk_080D1310 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #0x20] + adds r0, r4, #0 + movs r1, #0xe + bl sub_080042AC +_0804324E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08043250: .4byte gUnk_080D130C +_08043254: .4byte gUnk_080D1414 +_08043258: .4byte gUnk_080D1310 + + thumb_func_start sub_0804325C +sub_0804325C: @ 0x0804325C + push {r4, lr} + adds r4, r0, #0 + bl sub_08043CD4 + ldr r0, _0804329C @ =gUnk_080D1314 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08043A10 + adds r2, r4, #0 + adds r2, #0x78 + ldrb r0, [r2] + adds r1, r0, #0 + cmp r1, #0 + beq _080432A4 + cmp r1, #2 + bls _080432A0 + subs r0, #2 + strb r0, [r2] + ldr r0, [r4, #0x64] + ldr r1, [r0, #0x10] + ldrh r0, [r1, #0x36] + ldrb r2, [r2] + adds r0, r0, r2 + strh r0, [r1, #0x36] + b _080432A4 + .align 2, 0 +_0804329C: .4byte gUnk_080D1314 +_080432A0: + movs r0, #0 + strb r0, [r2] +_080432A4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080432A8 +sub_080432A8: @ 0x080432A8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r3, #3 + movs r2, #0 + ldr r0, [r4, #0x64] + adds r1, r0, #0 + adds r1, #0x48 + ldrb r0, [r1, #0xc] + cmp r0, #2 + bls _080432C2 + subs r0, #1 + strb r0, [r1, #0xc] + movs r2, #1 +_080432C2: + subs r3, #1 + cmp r3, #0 + blt _080432E0 + lsls r0, r3, #4 + adds r0, #0x18 + ldr r1, [r4, #0x64] + adds r1, r1, r0 + ldrb r0, [r1, #0xc] + cmp r0, #2 + bls _080432C2 + subs r0, #1 + strb r0, [r1, #0xc] + adds r2, #1 + cmp r2, #1 + ble _080432C2 +_080432E0: + ldr r0, [r4, #0x64] + adds r1, r0, #0 + adds r1, #0x18 + ldrb r0, [r1, #5] + subs r0, #2 + strb r0, [r1, #5] + movs r3, #0 + movs r6, #0x80 + movs r7, #4 + rsbs r7, r7, #0 + movs r5, #1 +_080432F6: + ldr r0, [r4, #0x64] + lsls r1, r3, #2 + adds r0, r0, r1 + ldr r2, [r0] + movs r1, #0x36 + ldrsh r0, [r2, r1] + cmp r0, #3 + bgt _08043316 + ldrb r0, [r2, #0x10] + orrs r0, r6 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x18] + adds r0, r7, #0 + ands r0, r1 + orrs r0, r5 + strb r0, [r2, #0x18] +_08043316: + adds r3, #1 + cmp r3, #3 + ble _080432F6 + ldr r1, [r4, #0x64] + ldr r0, [r1] + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1e + lsrs r2, r0, #0x1e + cmp r2, #1 + bne _08043348 + adds r0, r1, #0 + adds r0, #0x34 + ldrb r0, [r0] + cmp r0, #2 + bhi _08043348 + strb r2, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #7 + strh r0, [r1, #0x1c] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x10] + bl sub_0804AA1C +_08043348: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0804334C +sub_0804334C: @ 0x0804334C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08043388 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804341C + movs r5, #0 + movs r7, #0x80 + movs r6, #4 + rsbs r6, r6, #0 + movs r3, #1 +_0804336A: + ldr r0, [r4, #0x64] + lsls r1, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrb r0, [r2, #0x10] + orrs r0, r7 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x18] + adds r0, r6, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #0x18] + adds r5, #1 + cmp r5, #4 + bls _0804336A +_08043388: + ldr r3, [r4, #0x64] + adds r2, r3, #0 + adds r2, #0x18 + ldr r1, _080433AC @ =gUnk_080D131C + ldrb r0, [r4, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r1, [r2, #1] + subs r0, r0, r1 + adds r0, #1 + cmp r0, #2 + bls _080433B0 + ldrh r0, [r2, #8] + ldrh r1, [r3, #0x18] + adds r0, r0, r1 + strh r0, [r3, #0x18] + movs r7, #0 + b _080433B2 + .align 2, 0 +_080433AC: .4byte gUnk_080D131C +_080433B0: + movs r7, #1 +_080433B2: + adds r0, r4, #0 + bl sub_08043B9C + movs r5, #0 + movs r6, #0x18 +_080433BC: + ldr r0, [r4, #0x64] + adds r2, r0, r6 + ldr r0, _080433E4 @ =gUnk_080D1414 + adds r0, r5, r0 + ldrb r1, [r2, #0xc] + ldrb r3, [r0] + cmp r3, r1 + bls _080433E8 + adds r0, r1, #1 + strb r0, [r2, #0xc] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r3, r0 + bne _0804341C + movs r0, #0xaf + lsls r0, r0, #1 + bl sub_080A3268 + b _0804341C + .align 2, 0 +_080433E4: .4byte gUnk_080D1414 +_080433E8: + cmp r7, #0 + beq _08043414 + cmp r5, #4 + bne _08043414 + adds r0, r4, #0 + bl sub_08043BC8 + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC + adds r1, r4, #0 + adds r1, #0x7e + ldrb r0, [r1] + cmp r0, #0 + beq _08043414 + movs r0, #0 + strb r0, [r1] + ldr r0, [r4, #0x64] + ldr r1, [r0, #0x14] + movs r0, #2 + strb r0, [r1, #0xd] +_08043414: + adds r6, #0x10 + adds r5, #1 + cmp r5, #4 + bls _080433BC +_0804341C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08043420 +sub_08043420: @ 0x08043420 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0804343C @ =gUnk_080D1320 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08043ABC + pop {r4, pc} + .align 2, 0 +_0804343C: .4byte gUnk_080D1320 + + thumb_func_start sub_08043440 +sub_08043440: @ 0x08043440 + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r2, #0 + movs r5, #0 + movs r6, #0 + movs r4, #0x18 +_0804344C: + ldr r0, [r3, #0x64] + adds r1, r0, r4 + ldrb r0, [r1, #5] + cmp r0, #0x10 + bls _0804345E + subs r0, #0x10 + strb r0, [r1, #5] + adds r5, #1 + b _08043460 +_0804345E: + strh r6, [r1, #4] +_08043460: + adds r4, #0x10 + adds r2, #1 + cmp r2, #4 + bls _0804344C + cmp r5, #0 + bne _0804348C + movs r2, #0 + movs r4, #0x80 + lsls r4, r4, #8 +_08043472: + ldr r0, [r3, #0x64] + lsls r1, r2, #4 + adds r0, r0, r1 + strh r4, [r0, #0x18] + adds r2, #1 + cmp r2, #4 + bls _08043472 + movs r0, #1 + strb r0, [r3, #0xd] + adds r0, r3, #0 + movs r1, #0x10 + bl sub_080042AC +_0804348C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08043490 +sub_08043490: @ 0x08043490 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x10] + mov ip, r0 + ldrh r1, [r0, #0x36] + movs r2, #0x36 + ldrsh r0, [r0, r2] + movs r2, #4 + rsbs r2, r2, #0 + cmp r0, r2 + bge _080434C4 + movs r0, #0xc0 + lsls r0, r0, #9 + mov r3, ip + str r0, [r3, #0x20] + movs r0, #0 + movs r1, #2 + strb r1, [r4, #0xd] + adds r2, r4, #0 + adds r2, #0x7e + strb r0, [r2] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x14] + strb r1, [r0, #0xd] + b _08043514 +_080434C4: + subs r0, r1, #2 + mov r1, ip + strh r0, [r1, #0x36] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08043514 + ldrb r0, [r1, #0x10] + movs r3, #0x80 + orrs r0, r3 + strb r0, [r1, #0x10] + ldrb r1, [r1, #0x18] + adds r0, r2, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + mov r2, ip + strb r0, [r2, #0x18] + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xef + ands r0, r1 + strb r0, [r2] + mov r1, ip + adds r1, #0x3f + movs r0, #0x3a + strb r0, [r1] + ldr r0, _0804351C @ =gUnk_080FD450 + mov r1, ip + str r0, [r1, #0x48] + ldr r0, [r4, #0x64] + ldr r1, [r0, #8] + ldrb r0, [r1, #0x10] + orrs r3, r0 + strb r3, [r1, #0x10] + ldr r0, [r4, #0x64] + ldr r2, [r0, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] +_08043514: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_0804351C: .4byte gUnk_080FD450 + + thumb_func_start sub_08043520 +sub_08043520: @ 0x08043520 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x64] + ldr r4, [r0, #0x10] + movs r1, #0xd0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _08043556 + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08043556 + ldr r0, _08043558 @ =0x0000FFFA + strh r0, [r4, #0x36] + movs r0, #3 + strb r0, [r5, #0xd] + adds r1, r5, #0 + adds r1, #0x7a + movs r0, #0xe1 + lsls r0, r0, #2 + strh r0, [r1] +_08043556: + pop {r4, r5, pc} + .align 2, 0 +_08043558: .4byte 0x0000FFFA + + thumb_func_start sub_0804355C +sub_0804355C: @ 0x0804355C + push {r4, lr} + adds r4, r0, #0 + bl sub_08043DB0 + adds r1, r4, #0 + adds r1, #0x7a + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08043578 + movs r0, #4 + strb r0, [r4, #0xd] +_08043578: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_08043580 +sub_08043580: @ 0x08043580 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r1, [r0, #0x10] + ldrh r0, [r1, #0x36] + adds r0, #3 + strh r0, [r1, #0x36] + movs r2, #0 + movs r5, #4 + rsbs r5, r5, #0 + movs r6, #0x7f +_08043596: + ldr r0, [r4, #0x64] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r3, [r0] + movs r1, #0x36 + ldrsh r0, [r3, r1] + cmp r0, r5 + ble _080435B6 + ldrb r1, [r3, #0x10] + adds r0, r6, #0 + ands r0, r1 + strb r0, [r3, #0x10] + ldrb r1, [r3, #0x18] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r3, #0x18] +_080435B6: + adds r2, #1 + cmp r2, #4 + bls _08043596 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _080435EE + movs r0, #5 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r0, [r4, #0x64] + ldr r3, [r0, #0x10] + adds r2, r3, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x3f + movs r0, #0x39 + strb r0, [r1] + ldr r0, _080435F0 @ =gUnk_080FD538 + str r0, [r3, #0x48] + adds r0, r4, #0 + bl sub_0804AA1C +_080435EE: + pop {r4, r5, r6, pc} + .align 2, 0 +_080435F0: .4byte gUnk_080FD538 + + thumb_func_start sub_080435F4 +sub_080435F4: @ 0x080435F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08043674 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + movs r5, #0 + ldr r0, _08043658 @ =gUnk_080D1338 + mov sb, r0 + movs r0, #0 + mov r8, r0 + movs r6, #0x18 + ldr r7, _0804365C @ =gUnk_080D133C +_08043622: + ldr r1, [r4, #0x64] + adds r1, r1, r6 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #7 + strh r0, [r1, #4] + mov r0, r8 + strb r0, [r1, #0xc] + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + strh r0, [r1, #8] + ldr r0, [r4, #0x64] + lsls r1, r5, #2 + adds r0, r0, r1 + ldr r2, [r0] + cmp r5, #0 + bne _08043660 + adds r0, r2, #0 + bl sub_08043B9C + b _0804366C + .align 2, 0 +_08043658: .4byte gUnk_080D1338 +_0804365C: .4byte gUnk_080D133C +_08043660: + ldr r0, _0804367C @ =gUnk_080D1340 + adds r0, r5, r0 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_08004260 +_0804366C: + adds r6, #0x10 + adds r5, #1 + cmp r5, #4 + bls _08043622 +_08043674: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0804367C: .4byte gUnk_080D1340 + + thumb_func_start sub_08043680 +sub_08043680: @ 0x08043680 + push {lr} + ldr r2, _08043694 @ =gUnk_080D1348 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08043694: .4byte gUnk_080D1348 + + thumb_func_start sub_08043698 +sub_08043698: @ 0x08043698 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r3, #0 + movs r5, #0x7f +_080436A8: + ldr r0, [r4, #0x64] + lsls r1, r3, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrb r1, [r2, #0x10] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r2, #0x10] + adds r3, #1 + cmp r3, #4 + bls _080436A8 + pop {r4, r5, pc} + + thumb_func_start sub_080436C0 +sub_080436C0: @ 0x080436C0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080436FC + movs r0, #0x14 + strb r0, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + movs r1, #0x51 + movs r2, #0 + bl CreateFX + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + str r5, [r0, #0x64] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + bl sub_0805E7BC +_080436FC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08043700 +sub_08043700: @ 0x08043700 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08043734 + movs r0, #0x14 + strb r0, [r4, #0xe] + movs r0, #3 + strb r0, [r4, #0xd] + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + movs r1, #0x51 + movs r2, #0 + bl CreateFX + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + str r5, [r0, #0x64] + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_0805E7BC +_08043734: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08043738 +sub_08043738: @ 0x08043738 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0804376C + movs r0, #0x14 + strb r0, [r4, #0xe] + movs r0, #4 + strb r0, [r4, #0xd] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + movs r1, #0x51 + movs r2, #0 + bl CreateFX + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + str r5, [r0, #0x64] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + bl sub_0805E7BC +_0804376C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08043770 +sub_08043770: @ 0x08043770 + push {r4, r5, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080437D8 + ldr r0, [r2, #0x64] + ldr r3, [r0, #0x14] + ldr r0, _080437AC @ =gUnk_030010A0 + adds r5, r0, #0 + adds r5, #0x39 + ldrb r1, [r5] + movs r0, #0xc + ands r0, r1 + cmp r0, #0 + bne _0804379A + movs r0, #2 + strb r0, [r3, #0xd] +_0804379A: + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _080437B0 + ldr r0, [r3, #0x64] + str r4, [r0, #0x14] + ldrb r1, [r5] + movs r0, #0xfe + b _080437B8 + .align 2, 0 +_080437AC: .4byte gUnk_030010A0 +_080437B0: + ldr r0, [r3, #0x64] + str r4, [r0, #0x18] + ldrb r1, [r5] + movs r0, #0xfd +_080437B8: + ands r0, r1 + strb r0, [r5] + ldr r0, [r2, #0x64] + ldr r0, [r0, #0x10] + movs r1, #0 + str r1, [r0, #0x64] + ldr r0, [r2, #0x64] + ldr r0, [r0, #0x10] + adds r0, #0x45 + strb r1, [r0] + ldr r1, [r2, #0x68] + ldr r0, [r2, #0x64] + ldr r0, [r0, #0x10] + str r0, [r1, #0x50] + bl sub_0805E780 +_080437D8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080437DC +sub_080437DC: @ 0x080437DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldr r0, _0804392C @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x43 + bls _080437EE + b _08043934 +_080437EE: + movs r0, #0x68 + bl sub_0801D8E0 + adds r7, r0, #0 + cmp r7, #0 + bne _080437FC + b _08043934 +_080437FC: + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r4, #8 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r1, #5 + mov r8, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r2] + adds r1, r6, #0 + adds r1, #0x3c + ldrb r0, [r1] + movs r5, #0x10 + orrs r0, r5 + strb r0, [r1] + str r7, [r6, #0x64] + str r6, [r7] + movs r0, #0x52 + movs r1, #1 + bl sub_0804AA60 + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + adds r0, r4, #0 + ands r0, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + adds r1, #0x3c + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + str r7, [r2, #0x64] + str r2, [r7, #4] + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_0806FA24 + movs r0, #0x52 + movs r1, #2 + bl sub_0804AA60 + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + adds r0, r4, #0 + ands r0, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + adds r1, #0x3c + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + str r7, [r2, #0x64] + str r2, [r7, #8] + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_0806FA24 + movs r0, #0x52 + movs r1, #3 + bl sub_0804AA60 + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + adds r0, r4, #0 + ands r0, r1 + mov r1, r8 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + adds r1, #0x3c + ldrb r0, [r1] + orrs r0, r5 + strb r0, [r1] + str r7, [r2, #0x64] + str r2, [r7, #0xc] + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_0806FA24 + movs r0, #0x52 + movs r1, #4 + bl sub_0804AA60 + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x29 + ldrb r0, [r1] + ands r4, r0 + mov r0, r8 + orrs r4, r0 + strb r4, [r1] + adds r1, #0x13 + ldrb r0, [r1] + orrs r5, r0 + strb r5, [r1] + str r7, [r2, #0x64] + str r2, [r7, #0x10] + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_0806FA24 + ldr r0, [r6, #0x50] + str r0, [r7, #0x14] + ldr r1, _08043930 @ =gUnk_080D135C + ldrb r0, [r6, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r2, [r0] + movs r3, #0 + strh r2, [r7, #0x18] + movs r1, #0x80 + lsls r1, r1, #7 + strh r1, [r7, #0x1c] + adds r0, r7, #0 + adds r0, #0x24 + strb r3, [r0] + strh r2, [r7, #0x28] + strh r1, [r7, #0x2c] + adds r0, #0x10 + strb r3, [r0] + strh r2, [r7, #0x38] + strh r1, [r7, #0x3c] + adds r0, #0x10 + strb r3, [r0] + adds r0, #4 + strh r2, [r0] + adds r0, #4 + strh r1, [r0] + adds r0, #8 + strb r3, [r0] + adds r0, #4 + strh r2, [r0] + adds r0, #4 + strh r1, [r0] + adds r0, #8 + strb r3, [r0] + movs r0, #1 + b _08043936 + .align 2, 0 +_0804392C: .4byte gUnk_03003DBC +_08043930: .4byte gUnk_080D135C +_08043934: + movs r0, #0 +_08043936: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0804393C +sub_0804393C: @ 0x0804393C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r0, [r5, #0x64] + ldr r1, [r0] + adds r0, r1, #0 + adds r0, #0x7c + ldrb r0, [r0] + lsls r2, r0, #0x18 + cmp r2, #0 + beq _0804397C + adds r0, r1, #0 + adds r0, #0x7d + ldrb r0, [r0] + ldrb r1, [r5, #0xa] + cmp r0, r1 + bhi _0804397C + ldr r4, _08043978 @ =gUnk_080D1362 + ldrb r3, [r5, #0xa] + lsls r1, r3, #4 + lsrs r0, r2, #0x1b + movs r2, #0xf + ands r0, r2 + adds r1, r1, r0 + adds r1, r1, r4 + ldrb r4, [r1] + adds r6, r3, #0 + b _08043980 + .align 2, 0 +_08043978: .4byte gUnk_080D1362 +_0804397C: + movs r4, #0 + ldrb r6, [r5, #0xa] +_08043980: + lsls r0, r6, #4 + adds r0, #0x18 + ldr r2, [r5, #0x64] + mov ip, r2 + adds r2, r2, r0 + ldrb r0, [r2, #0xc] + adds r0, r4, r0 + lsls r4, r0, #8 + ldr r3, _08043A0C @ =gUnk_080C9160 + ldrb r1, [r2, #5] + adds r0, r1, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r7, #0 + ldrsh r0, [r0, r7] + rsbs r0, r0, #0 + adds r7, r0, #0 + muls r7, r4, r7 + mov r8, r7 + movs r0, #0x7f + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r3 + movs r7, #0 + ldrsh r0, [r1, r7] + muls r0, r4, r0 + cmp r0, #0 + bge _080439BC + adds r0, #0xff +_080439BC: + asrs r4, r0, #8 + ldrb r1, [r2, #1] + lsls r0, r1, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r2, r0, #0 + muls r2, r4, r2 + adds r1, #0x40 + lsls r1, r1, #1 + adds r1, r1, r3 + movs r3, #0 + ldrsh r0, [r1, r3] + rsbs r0, r0, #0 + adds r3, r0, #0 + muls r3, r4, r3 + adds r0, r6, #1 + lsls r0, r0, #2 + add r0, ip + ldr r0, [r0] + adds r1, r5, #0 + bl sub_0806FA48 + ldr r0, [r5, #0x34] + add r0, r8 + str r0, [r5, #0x34] + ldr r1, [r5, #0x64] + ldrb r0, [r5, #0xa] + adds r0, #1 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r0, [r1] + adds r0, #0x63 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x63 + strb r1, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08043A0C: .4byte gUnk_080C9160 + + thumb_func_start sub_08043A10 +sub_08043A10: @ 0x08043A10 + push {r4, lr} + adds r4, r0, #0 + bl sub_08043B7C + ldr r0, [r4, #0x64] + ldr r0, [r0, #0x10] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r1, [r0, #0x10] + ldrh r0, [r1, #0x32] + subs r0, #8 + strh r0, [r1, #0x32] + ldr r0, [r4, #0x64] + ldr r1, [r0, #0x10] + ldrh r0, [r1, #0x36] + subs r0, #8 + strh r0, [r1, #0x36] + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r1, [r0] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + ldr r0, [r4, #0x64] + ldr r1, [r0] + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r4, #0x7c + ldrb r0, [r4] + cmp r0, #0 + beq _08043A76 + subs r0, #1 + strb r0, [r4] +_08043A76: + pop {r4, pc} + + thumb_func_start sub_08043A78 +sub_08043A78: @ 0x08043A78 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08043B7C + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r1, [r0] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + ldr r0, [r4, #0x64] + ldr r1, [r0] + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08043ABC +sub_08043ABC: @ 0x08043ABC + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08043B7C + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r0, [r0] + bl sub_0804393C + ldr r0, [r4, #0x64] + ldr r1, [r0] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + ldr r0, [r4, #0x64] + ldr r1, [r0] + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08043B08 +sub_08043B08: @ 0x08043B08 + push {r4, r5, r6, lr} + ldrb r3, [r0, #0xa] + lsls r1, r3, #4 + adds r4, r1, #0 + adds r4, #8 + ldr r2, [r0, #0x64] + adds r6, r2, r4 + adds r1, #0x18 + adds r4, r2, r1 + ldr r0, _08043B40 @ =gUnk_080D13B2 + adds r3, r3, r0 + ldrb r5, [r3] + ldr r0, [r2] + ldrb r0, [r0, #0xb] + cmp r0, #0 + bne _08043B44 + ldrb r1, [r6, #1] + ldrb r0, [r4, #1] + subs r0, r1, r0 + lsls r0, r0, #0x18 + asrs r3, r0, #0x18 + cmp r5, r3 + bhs _08043B5E + cmp r3, #0 + ble _08043B56 + subs r0, r1, r5 + b _08043B5C + .align 2, 0 +_08043B40: .4byte gUnk_080D13B2 +_08043B44: + ldrb r0, [r4, #1] + ldrb r1, [r6, #1] + subs r0, r0, r1 + lsls r0, r0, #0x18 + asrs r3, r0, #0x18 + cmp r5, r3 + bhs _08043B5E + cmp r3, #0 + bge _08043B5A +_08043B56: + strb r1, [r4, #1] + b _08043B5E +_08043B5A: + adds r0, r1, r5 +_08043B5C: + strb r0, [r4, #1] +_08043B5E: + ldrb r2, [r6, #5] + ldrb r0, [r4, #5] + subs r3, r2, r0 + lsls r1, r5, #1 + adds r0, r3, r5 + cmp r1, r0 + bhs _08043B78 + cmp r3, #0 + ble _08043B74 + subs r0, r2, r5 + b _08043B76 +_08043B74: + adds r0, r2, r5 +_08043B76: + strb r0, [r4, #5] +_08043B78: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08043B7C +sub_08043B7C: @ 0x08043B7C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + bl sub_08043B08 + ldr r0, [r4, #0x64] + ldr r0, [r0, #8] + bl sub_08043B08 + ldr r0, [r4, #0x64] + ldr r0, [r0, #0xc] + bl sub_08043B08 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08043B9C +sub_08043B9C: @ 0x08043B9C + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x64] + ldrb r0, [r0, #0x19] + adds r0, #4 + movs r1, #0xff + ands r0, r1 + asrs r0, r0, #3 + ldr r1, _08043BC4 @ =gUnk_080D13B7 + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r0, [r2, #0x1e] + subs r0, #1 + cmp r1, r0 + beq _08043BC0 + adds r0, r2, #0 + bl sub_080042AC +_08043BC0: + pop {pc} + .align 2, 0 +_08043BC4: .4byte gUnk_080D13B7 + + thumb_func_start sub_08043BC8 +sub_08043BC8: @ 0x08043BC8 + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0xb] + lsls r2, r2, #2 + ldr r1, _08043BEC @ =gUnk_080D13D8 + adds r2, r2, r1 + ldr r1, [r0, #0x64] + adds r1, #0x18 + ldrh r0, [r2] + strh r0, [r1, #8] + ldrh r0, [r2, #2] + strh r0, [r1, #0xa] + movs r0, #0x5a + strb r0, [r1, #0xd] + movs r0, #0x28 + strb r0, [r1, #0xe] + bx lr + .align 2, 0 +_08043BEC: .4byte gUnk_080D13D8 + + thumb_func_start sub_08043BF0 +sub_08043BF0: @ 0x08043BF0 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x64] + adds r1, r0, #0 + adds r1, #0x18 + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _08043C18 + ldrb r0, [r1, #1] + movs r1, #6 + cmp r0, #0x2f + bls _08043C2E + movs r1, #7 + cmp r0, #0x5f + bls _08043C2E + movs r1, #9 + cmp r0, #0x8f + bhi _08043C2E + movs r1, #8 + b _08043C2E +_08043C18: + ldrb r0, [r1, #1] + movs r1, #8 + cmp r0, #0xd0 + bhi _08043C2E + movs r1, #7 + cmp r0, #0xa0 + bhi _08043C2E + movs r1, #5 + cmp r0, #0x70 + bls _08043C2E + movs r1, #6 +_08043C2E: + adds r0, r2, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r1 + beq _08043C3E + adds r0, r2, #0 + bl sub_080042AC +_08043C3E: + pop {pc} + + thumb_func_start sub_08043C40 +sub_08043C40: @ 0x08043C40 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldrb r0, [r1, #5] + cmp r0, #0x1f + bhi _08043C54 + ldr r6, _08043C50 @ =gUnk_080D13E0 + b _08043C68 + .align 2, 0 +_08043C50: .4byte gUnk_080D13E0 +_08043C54: + cmp r0, #0x2f + bhi _08043C60 + ldr r6, _08043C5C @ =gUnk_080D13E3 + b _08043C68 + .align 2, 0 +_08043C5C: .4byte gUnk_080D13E3 +_08043C60: + ldr r6, _08043C84 @ =gUnk_080D13E0 + cmp r0, #0x77 + bhi _08043C68 + adds r6, #6 +_08043C68: + movs r4, #0 + movs r5, #0x28 +_08043C6C: + ldr r0, [r7, #0x64] + adds r3, r0, r5 + adds r0, r6, r4 + ldrb r1, [r3, #0xc] + ldrb r2, [r0] + adds r0, r1, #0 + cmp r2, r0 + beq _08043C8C + cmp r2, r0 + bhs _08043C88 + subs r0, r1, #1 + b _08043C8A + .align 2, 0 +_08043C84: .4byte gUnk_080D13E0 +_08043C88: + adds r0, r1, #1 +_08043C8A: + strb r0, [r3, #0xc] +_08043C8C: + adds r5, #0x10 + adds r4, #1 + cmp r4, #2 + bls _08043C6C + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08043C98 +sub_08043C98: @ 0x08043C98 + push {lr} + adds r3, r0, #0 + ldr r0, [r3, #0x64] + ldr r1, [r0, #8] + ldr r2, [r0, #0xc] + adds r1, #0x41 + ldrb r0, [r1] + cmp r0, #0x9d + beq _08043CB4 + adds r0, r2, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _08043CD0 +_08043CB4: + adds r0, r3, #0 + bl sub_08043D08 + ldr r0, _08043CCC @ =gUnk_030010A0 + adds r0, #0x38 + ldrb r2, [r0] + movs r1, #2 + orrs r1, r2 + strb r1, [r0] + movs r0, #1 + b _08043CD2 + .align 2, 0 +_08043CCC: .4byte gUnk_030010A0 +_08043CD0: + movs r0, #0 +_08043CD2: + pop {pc} + + thumb_func_start sub_08043CD4 +sub_08043CD4: @ 0x08043CD4 + push {r4, r5, lr} + adds r3, r0, #0 + movs r2, #0 + adds r4, r3, #0 + adds r4, #0x7c + movs r5, #0x78 + movs r0, #0x7d + adds r0, r0, r3 + mov ip, r0 +_08043CE6: + ldr r0, [r3, #0x64] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _08043CFE + strb r5, [r4] + mov r0, ip + strb r2, [r0] + b _08043D04 +_08043CFE: + adds r2, #1 + cmp r2, #4 + bls _08043CE6 +_08043D04: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08043D08 +sub_08043D08: @ 0x08043D08 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0 + movs r0, #7 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + adds r0, r5, #0 + movs r1, #0xd + bl sub_080042AC + ldr r0, [r5, #0x64] + ldr r4, [r0, #0x10] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0x13 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0804AA1C + adds r0, r4, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08043D78 + ldr r1, _08043DAC @ =gUnk_080D13E9 + ldrb r0, [r5, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + ldrh r0, [r2, #0x32] + subs r0, #6 + strh r0, [r2, #0x32] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_08043D78: + ldr r0, [r5, #0x64] + ldr r0, [r0, #0xc] + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, [r5, #0x64] + adds r1, #0x54 + ldrh r0, [r4, #0x36] + ldrb r1, [r1] + adds r0, r0, r1 + strh r0, [r4, #0x36] + movs r2, #0 + movs r3, #0x39 +_08043D92: + ldr r0, [r5, #0x64] + lsls r1, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + adds r0, #0x3f + strb r3, [r0] + adds r2, #1 + cmp r2, #4 + bls _08043D92 + movs r0, #0xfe + bl sub_08004488 + pop {r4, r5, pc} + .align 2, 0 +_08043DAC: .4byte gUnk_080D13E9 + + thumb_func_start sub_08043DB0 +sub_08043DB0: @ 0x08043DB0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08043E48 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08043EAC + ldr r0, [r5, #0x64] + ldr r2, [r0, #0xc] + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldr r6, _08043E4C @ =gUnk_03000BF0 + ldrh r1, [r6, #6] + subs r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r2, r3] + ldrh r2, [r6, #8] + subs r1, r1, r2 + adds r1, #2 + movs r2, #3 + movs r3, #3 + bl sub_0800293E + cmp r0, #0 + beq _08043EAC + ldr r0, _08043E50 @ =gUnk_080D13EC + bl sub_08080840 + ldr r4, _08043E54 @ =gUnk_030010A0 + adds r0, r4, #0 + adds r0, #0x39 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + cmp r0, #3 + beq _08043DFE + movs r0, #1 + strb r0, [r4, #0xd] +_08043DFE: + adds r0, r5, #0 + adds r0, #0x7a + ldrh r0, [r0] + movs r1, #0x3c + bl __divsi3 + movs r1, #0x1e + subs r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x3d + strb r1, [r0] + ldrb r1, [r5, #0xb] + subs r0, #1 + strb r1, [r0] + ldr r0, [r5, #0x64] + ldr r2, [r0, #0x14] + ldrh r1, [r2, #0x2e] + adds r0, r4, #0 + adds r0, #0x40 + strh r1, [r0] + ldrh r0, [r2, #0x32] + adds r1, r4, #0 + adds r1, #0x42 + strh r0, [r1] + ldr r0, [r2, #0x64] + ldr r3, [r0, #0x14] + cmp r3, #0 + beq _08043E58 + ldrh r1, [r3, #0x2e] + adds r0, r4, #0 + adds r0, #0x44 + strh r1, [r0] + ldrh r1, [r3, #0x32] + adds r0, #2 + strh r1, [r0] + b _08043E70 + .align 2, 0 +_08043E48: .4byte gUnk_03003F80 +_08043E4C: .4byte gUnk_03000BF0 +_08043E50: .4byte gUnk_080D13EC +_08043E54: .4byte gUnk_030010A0 +_08043E58: + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r3, [r6, #6] + adds r0, r0, r3 + adds r1, r4, #0 + adds r1, #0x44 + strh r0, [r1] + ldrh r0, [r6, #8] + adds r0, #0x60 + adds r1, #2 + strh r0, [r1] +_08043E70: + ldr r0, [r2, #0x64] + ldr r3, [r0, #0x18] + cmp r3, #0 + beq _08043E90 + ldr r1, _08043E8C @ =gUnk_030010A0 + ldrh r2, [r3, #0x2e] + adds r0, r1, #0 + adds r0, #0x48 + strh r2, [r0] + ldrh r0, [r3, #0x32] + adds r1, #0x4a + strh r0, [r1] + b _08043EAC + .align 2, 0 +_08043E8C: .4byte gUnk_030010A0 +_08043E90: + ldr r2, _08043EB0 @ =gUnk_030010A0 + ldr r3, _08043EB4 @ =gUnk_03000BF0 + movs r1, #0x88 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r3, #6] + adds r0, r0, r1 + adds r1, r2, #0 + adds r1, #0x48 + strh r0, [r1] + ldrh r0, [r3, #8] + adds r0, #0x60 + adds r2, #0x4a + strh r0, [r2] +_08043EAC: + pop {r4, r5, r6, pc} + .align 2, 0 +_08043EB0: .4byte gUnk_030010A0 +_08043EB4: .4byte gUnk_03000BF0 + + thumb_func_start sub_08043EB8 +sub_08043EB8: @ 0x08043EB8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldrb r0, [r7, #0x10] + movs r5, #0x80 + orrs r0, r5 + strb r0, [r7, #0x10] + adds r2, r7, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r4, #8 + rsbs r4, r4, #0 + adds r0, r4, #0 + ands r0, r1 + movs r6, #4 + orrs r0, r6 + strb r0, [r2] + adds r0, r7, #0 + movs r1, #0xd + bl sub_080042AC + ldr r0, [r7, #0x64] + ldr r3, [r0, #4] + ldrb r0, [r3, #0x10] + orrs r0, r5 + strb r0, [r3, #0x10] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + adds r0, r4, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + ldr r0, [r7, #0x64] + ldr r3, [r0, #8] + ldrb r0, [r3, #0x10] + orrs r0, r5 + strb r0, [r3, #0x10] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + adds r0, r4, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + ldr r0, [r7, #0x64] + ldr r3, [r0, #0xc] + ldrb r1, [r3, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #0x10] + ldrb r2, [r3, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #1 + mov r8, r2 + mov r2, r8 + orrs r0, r2 + strb r0, [r3, #0x18] + adds r3, #0x29 + ldrb r2, [r3] + adds r0, r4, #0 + ands r0, r2 + orrs r0, r6 + strb r0, [r3] + ldr r0, [r7, #0x64] + ldr r3, [r0, #0x10] + ldrb r0, [r3, #0x10] + orrs r5, r0 + strb r5, [r3, #0x10] + ldrb r0, [r3, #0x18] + ands r1, r0 + mov r0, r8 + orrs r1, r0 + strb r1, [r3, #0x18] + adds r1, r3, #0 + adds r1, #0x29 + ldrb r0, [r1] + ands r4, r0 + orrs r4, r6 + strb r4, [r1] + ldrb r0, [r7, #0xb] + cmp r0, #0 + bne _08043F74 + ldr r1, _08043F70 @ =gUnk_030010A0 + adds r0, r1, #0 + adds r0, #0x44 + b _08043F7A + .align 2, 0 +_08043F70: .4byte gUnk_030010A0 +_08043F74: + ldr r1, _08043F8C @ =gUnk_030010A0 + adds r0, r1, #0 + adds r0, #0x48 +_08043F7A: + ldrh r0, [r0] + strh r0, [r3, #0x2e] + ldrb r0, [r7, #0xb] + cmp r0, #0 + bne _08043F90 + adds r0, r1, #0 + adds r0, #0x46 + b _08043F94 + .align 2, 0 +_08043F8C: .4byte gUnk_030010A0 +_08043F90: + adds r0, r1, #0 + adds r0, #0x4a +_08043F94: + ldrh r1, [r0] + movs r0, #0 + strh r1, [r3, #0x32] + strh r0, [r3, #0x36] + adds r2, r3, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xef + ands r0, r1 + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x3f + movs r0, #0x3a + strb r0, [r1] + ldr r0, _08043FF8 @ =gUnk_080FD450 + str r0, [r3, #0x48] + movs r0, #0xaf + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _08043FCA + ldr r0, [r7, #0x64] + ldr r0, [r0, #0xc] + str r0, [r3, #0x50] +_08043FCA: + ldr r0, [r7, #0x64] + ldr r0, [r0] + str r3, [r0, #0x68] + movs r2, #0 + movs r6, #0 + movs r5, #0x80 + lsls r5, r5, #8 + ldr r4, _08043FFC @ =gUnk_080D1419 + movs r3, #0x18 +_08043FDC: + ldr r0, [r7, #0x64] + adds r0, r0, r3 + strh r5, [r0] + strh r6, [r0, #4] + adds r1, r2, r4 + ldrb r1, [r1] + strb r1, [r0, #0xc] + adds r3, #0x10 + adds r2, #1 + cmp r2, #4 + bls _08043FDC + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08043FF8: .4byte gUnk_080FD450 +_08043FFC: .4byte gUnk_080D1419 + + thumb_func_start sub_08044000 +sub_08044000: @ 0x08044000 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _08044070 @ =gUnk_080D1400 + movs r3, #0 + ldr r2, _08044074 @ =gUnk_080D1414 + mov ip, r2 + movs r7, #8 + rsbs r7, r7, #0 + adds r5, r1, r0 + movs r6, #0x18 +_0804401C: + ldr r0, [r4, #0x64] + lsls r1, r3, #2 + adds r0, r0, r1 + ldr r2, [r0] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r2, #0x29 + ldrb r1, [r2] + adds r0, r7, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r4, #0x64] + adds r1, r1, r6 + ldrh r0, [r5] + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #7 + strh r0, [r1, #4] + mov r2, ip + adds r0, r3, r2 + ldrb r0, [r0] + strb r0, [r1, #0xc] + adds r5, #2 + adds r6, #0x10 + adds r3, #1 + cmp r3, #4 + bls _0804401C + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC + ldr r1, [r4, #0x64] + ldr r0, [r1, #0x14] + ldr r1, [r1, #0x10] + bl sub_0806FA24 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08044070: .4byte gUnk_080D1400 +_08044074: .4byte gUnk_080D1414 + + thumb_func_start sub_08044078 +sub_08044078: @ 0x08044078 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080440C4 + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _080440AC + ldr r3, _080440B8 @ =gUnk_030010A0 + adds r0, r3, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080440BC + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r1, r3, #0 + adds r1, #0x3c + ldrb r0, [r0, #0xb] + ldrb r1, [r1] + cmp r0, r1 + bne _080440BC +_080440AC: + adds r0, r4, #0 + movs r1, #0x12 + bl sub_08004260 + b _080440C4 + .align 2, 0 +_080440B8: .4byte gUnk_030010A0 +_080440BC: + adds r0, r4, #0 + movs r1, #0x11 + bl sub_08004260 +_080440C4: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080440CC +sub_080440CC: @ 0x080440CC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08044110 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _08044104 @ =gUnk_030010A0 + adds r1, r2, #0 + adds r1, #0x38 + ldrb r1, [r1] + ands r0, r1 + cmp r0, #0 + beq _08044108 + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r1, r2, #0 + adds r1, #0x3c + ldrb r0, [r0, #0xb] + ldrb r1, [r1] + cmp r0, r1 + bne _08044108 + adds r0, r4, #0 + movs r1, #0x13 + bl sub_08004260 + b _08044110 + .align 2, 0 +_08044104: .4byte gUnk_030010A0 +_08044108: + adds r0, r4, #0 + movs r1, #0x11 + bl sub_08004260 +_08044110: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08044118 +sub_08044118: @ 0x08044118 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08044130 @ =gUnk_080D1588 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_08044130: .4byte gUnk_080D1588 + + thumb_func_start sub_08044134 +sub_08044134: @ 0x08044134 + push {lr} + ldr r2, _08044148 @ =gUnk_080D15A0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08044148: .4byte gUnk_080D15A0 + + thumb_func_start sub_0804414C +sub_0804414C: @ 0x0804414C + push {lr} + ldr r1, _08044158 @ =gUnk_080D1588 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_08044158: .4byte gUnk_080D1588 + + thumb_func_start sub_0804415C +sub_0804415C: @ 0x0804415C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0804418E + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08044188 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080441BA + movs r0, #8 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08044310 + b _080441BA +_08044188: + movs r0, #8 + strb r0, [r4, #0xe] + b _080441BA +_0804418E: + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _080441B0 + ldr r0, _080441AC @ =gUnk_080D15A8 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _080441BA + .align 2, 0 +_080441AC: .4byte gUnk_080D15A8 +_080441B0: + adds r0, r4, #0 + bl sub_080445C0 + bl sub_0805E780 +_080441BA: + pop {r4, pc} + + thumb_func_start sub_080441BC +sub_080441BC: @ 0x080441BC + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_080441C4 +sub_080441C4: @ 0x080441C4 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_080441CC +sub_080441CC: @ 0x080441CC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _080441DE + adds r0, r4, #0 + bl sub_0804A7D4 +_080441DE: + pop {r4, pc} + + thumb_func_start sub_080441E0 +sub_080441E0: @ 0x080441E0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r0, #0x12 + bl GetProgressFlag + cmp r0, #0 + beq _080441F2 + bl sub_0805E780 +_080441F2: + ldrb r7, [r4, #0xa] + cmp r7, #0 + bne _08044284 + ldr r0, _08044244 @ =0x000001EB + movs r1, #1 + bl sub_080AD8F0 + adds r6, r0, #0 + ldrb r1, [r6] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r5, r0, #1 + adds r0, r5, #0 + bl sub_0801D8E0 + adds r1, r0, #0 + str r1, [r4, #0x64] + cmp r1, #0 + beq _0804429A + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_0801D66C + adds r1, r4, #0 + adds r1, #0x28 + movs r0, #0xff + strb r0, [r1] + ldr r0, [r4, #0x64] + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, #0xc + bl sub_0801D8E0 + adds r2, r0, #0 + cmp r2, #0 + bne _08044248 + ldr r0, [r4, #0x64] + bl sub_0801DA0C + b _0804429A + .align 2, 0 +_08044244: .4byte 0x000001EB +_08044248: + str r2, [r4, #0x48] + ldr r0, _0804427C @ =gUnk_080FD188 + ldr r1, [r0, #4] + ldr r0, [r0] + str r0, [r2] + str r1, [r2, #4] + adds r0, r4, #0 + bl sub_080442BC + movs r0, #1 + strb r0, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x75 + strb r7, [r0] + adds r1, r4, #0 + adds r1, #0x76 + ldr r0, _08044280 @ =0x0000FFFF + strh r0, [r1] + b _08044292 + .align 2, 0 +_0804427C: .4byte gUnk_080FD188 +_08044280: .4byte 0x0000FFFF +_08044284: + movs r0, #0 + strb r0, [r4, #0x1e] + strh r0, [r4, #0x24] + ldr r0, _0804429C @ =gUnk_080FD168 + str r0, [r4, #0x48] + movs r0, #1 + strb r0, [r4, #0x1c] +_08044292: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] +_0804429A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0804429C: .4byte gUnk_080FD168 + + thumb_func_start sub_080442A0 +sub_080442A0: @ 0x080442A0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _080442B2 + adds r0, r1, #0 + bl sub_08044498 + b _080442B8 +_080442B2: + adds r0, r1, #0 + bl sub_08044550 +_080442B8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080442BC +sub_080442BC: @ 0x080442BC + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldr r5, _0804430C @ =gUnk_080D15B4 + ldr r0, [r3, #0x64] + ldrb r6, [r0] + movs r4, #0 + cmp r4, r6 + bhs _08044304 + movs r7, #0 +_080442CE: + ldr r1, [r3, #0x48] + lsls r2, r4, #3 + adds r1, r2, r1 + ldrb r0, [r5] + strb r0, [r1, #0xc] + ldr r0, [r3, #0x48] + adds r0, r2, r0 + ldrb r1, [r5, #1] + strb r1, [r0, #0xd] + ldr r0, [r3, #0x48] + adds r0, r2, r0 + ldrb r1, [r5, #2] + strb r1, [r0, #0xe] + ldr r0, [r3, #0x48] + adds r0, r2, r0 + ldrb r1, [r5, #3] + strb r1, [r0, #0xf] + ldr r0, [r3, #0x48] + adds r0, r2, r0 + adds r0, #0xc + strb r7, [r0, #4] + ldr r0, [r3, #0x48] + adds r2, r2, r0 + strb r4, [r2, #0x11] + adds r4, #1 + cmp r4, r6 + blo _080442CE +_08044304: + adds r0, r3, #0 + adds r0, #0x74 + strb r6, [r0] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0804430C: .4byte gUnk_080D15B4 + + thumb_func_start sub_08044310 +sub_08044310: @ 0x08044310 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + movs r4, #0xff + movs r6, #0xff + ldr r0, _08044334 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r1, r0, #1 + movs r0, #3 + ands r1, r0 + cmp r1, #1 + beq _0804436A + cmp r1, #1 + bgt _08044338 + cmp r1, #0 + beq _08044342 + b _080443EA + .align 2, 0 +_08044334: .4byte gLinkEntity +_08044338: + cmp r1, #2 + beq _08044392 + cmp r1, #3 + beq _080443C4 + b _080443EA +_08044342: + movs r2, #0 + adds r0, r5, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r2, r0 + bhs _080443EA + adds r3, r0, #0 + ldr r1, [r5, #0x48] +_08044352: + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _08044360 + ldrb r0, [r1, #0xd] + cmp r6, r0 + bls _08044360 + adds r4, r2, #0 +_08044360: + adds r1, #8 + adds r2, #1 + cmp r2, r3 + blo _08044352 + b _080443EA +_0804436A: + movs r2, #0 + adds r0, r5, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r2, r0 + bhs _080443EA + adds r3, r0, #0 + ldr r1, [r5, #0x48] +_0804437A: + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _08044388 + ldrb r0, [r1, #0xe] + cmp r6, r0 + bls _08044388 + adds r4, r2, #0 +_08044388: + adds r1, #8 + adds r2, #1 + cmp r2, r3 + blo _0804437A + b _080443EA +_08044392: + movs r2, #0 + adds r0, r5, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r2, r0 + bhs _080443EA + adds r3, r0, #0 + ldr r1, [r5, #0x48] +_080443A2: + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _080443B0 + ldrb r0, [r1, #0xc] + cmp r6, r0 + bls _080443B0 + adds r4, r2, #0 +_080443B0: + adds r1, #8 + adds r2, #1 + cmp r2, r3 + blo _080443A2 + b _080443EA +_080443BA: + mov r1, r8 + adds r0, r1, r4 + ldrb r0, [r0, #0x11] + strb r0, [r3, #5] + b _08044492 +_080443C4: + movs r2, #0 + adds r0, r5, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r2, r0 + bhs _080443EA + adds r3, r0, #0 + ldr r1, [r5, #0x48] +_080443D4: + ldrb r0, [r1, #0x10] + cmp r0, #0 + bne _080443E2 + ldrb r0, [r1, #0xf] + cmp r6, r0 + bls _080443E2 + adds r4, r2, #0 +_080443E2: + adds r1, #8 + adds r2, #1 + cmp r2, r3 + blo _080443D4 +_080443EA: + cmp r4, #0xff + beq _08044492 + ldr r0, [r5, #0x48] + lsls r4, r4, #3 + adds r0, r4, r0 + movs r1, #1 + strb r1, [r0, #0x10] + ldr r1, [r5, #0x64] + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, #1 + adds r7, r2, r0 + ldr r0, [r5, #0x48] + adds r0, r4, r0 + ldrb r1, [r0, #0x11] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, #1 + adds r6, r2, r0 + movs r0, #0x53 + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + mov r8, r4 + cmp r1, #0 + beq _08044440 + movs r2, #0 + ldrsb r2, [r6, r2] + adds r2, #8 + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r6, r3] + adds r3, #8 + lsls r3, r3, #0x10 + adds r0, r5, #0 + bl sub_0806FA48 +_08044440: + ldr r0, [r5, #0x64] + ldrb r0, [r0] + cmp r0, #0 + bne _08044458 + movs r0, #0x12 + bl sub_0807CD04 + movs r0, #0x72 + bl sub_080A3268 + bl sub_0805E780 +_08044458: + movs r2, #0 + adds r3, r5, #0 + adds r3, #0x74 +_0804445E: + adds r0, r6, r2 + adds r1, r7, r2 + ldrb r1, [r1] + strb r1, [r0] + adds r2, #1 + cmp r2, #4 + bls _0804445E + movs r2, #0 + ldrb r1, [r3] + cmp r2, r1 + bhs _08044492 + ldr r4, [r5, #0x48] + ldr r0, [r5, #0x64] + ldrb r6, [r0] + adds r5, r1, #0 + adds r3, r4, #0 + adds r3, #0xc + adds r1, r4, #0 +_08044482: + ldrb r0, [r1, #0x11] + cmp r0, r6 + beq _080443BA + adds r3, #8 + adds r1, #8 + adds r2, #1 + cmp r2, r5 + blo _08044482 +_08044492: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08044498 +sub_08044498: @ 0x08044498 + push {r4, r5, r6, lr} + mov ip, r0 + ldr r6, _08044538 @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldr r3, _0804453C @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r2, #0x3f + ands r4, r2 + movs r5, #0x32 + ldrsh r0, [r6, r5] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + ldr r0, _08044540 @ =gUnk_03003F80 + adds r0, #0x92 + ldrh r0, [r0] + movs r1, #0xf0 + lsls r1, r1, #4 + ands r1, r0 + mov r2, ip + adds r2, #0x75 + ldrb r0, [r2] + cmp r1, r0 + bne _080444DE + mov r0, ip + adds r0, #0x76 + ldrh r0, [r0] + cmp r4, r0 + beq _0804454C +_080444DE: + strb r1, [r2] + mov r0, ip + adds r0, #0x76 + strh r4, [r0] + mov r1, ip + ldr r0, [r1, #0x64] + adds r2, r0, #1 + ldrb r4, [r0] + movs r3, #0x2e + ldrsh r1, [r6, r3] + mov r5, ip + movs r3, #0x2e + ldrsh r0, [r5, r3] + subs r5, r1, r0 + movs r0, #0x32 + ldrsh r1, [r6, r0] + mov r3, ip + movs r6, #0x32 + ldrsh r0, [r3, r6] + subs r1, r1, r0 + movs r3, #0 + cmp r3, r4 + bhs _0804454C +_0804450C: + movs r0, #0 + ldrsb r0, [r2, r0] + subs r0, r5, r0 + cmp r0, #0xf + bhi _08044544 + movs r0, #1 + ldrsb r0, [r2, r0] + subs r0, r1, r0 + cmp r0, #0xf + bhi _08044544 + movs r0, #0xf + movs r1, #0x11 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0804454C + ldr r0, _08044538 @ =gLinkEntity + bl sub_0806FA24 + b _0804454C + .align 2, 0 +_08044538: .4byte gLinkEntity +_0804453C: .4byte gUnk_03000BF0 +_08044540: .4byte gUnk_03003F80 +_08044544: + adds r2, #5 + adds r3, #1 + cmp r3, r4 + blo _0804450C +_0804454C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08044550 +sub_08044550: @ 0x08044550 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r0, _080445A8 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _080445B4 + ldrh r1, [r6, #0x24] + movs r2, #0x24 + ldrsh r0, [r6, r2] + cmp r0, #0xff + bgt _08044570 + adds r0, r1, #0 + adds r0, #0x10 + strh r0, [r6, #0x24] +_08044570: + ldr r5, _080445AC @ =gLinkEntity + ldrb r0, [r5, #0x14] + movs r4, #0xe + ands r4, r0 + ldr r0, _080445B0 @ =gUnk_08126EE4 + adds r4, r4, r0 + movs r3, #0x2e + ldrsh r0, [r6, r3] + movs r7, #0x32 + ldrsh r1, [r6, r7] + movs r3, #0x2e + ldrsh r2, [r5, r3] + movs r3, #0 + ldrsb r3, [r4, r3] + adds r2, r2, r3 + movs r7, #0x32 + ldrsh r3, [r5, r7] + ldrb r4, [r4, #1] + lsls r4, r4, #0x18 + asrs r4, r4, #0x18 + adds r3, r3, r4 + bl sub_080045D4 + strb r0, [r6, #0x15] + adds r0, r6, #0 + bl sub_0806F69C + b _080445BE + .align 2, 0 +_080445A8: .4byte gUnk_03003F80 +_080445AC: .4byte gLinkEntity +_080445B0: .4byte gUnk_08126EE4 +_080445B4: + adds r0, r6, #0 + bl sub_080445C0 + bl sub_0805E780 +_080445BE: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080445C0 +sub_080445C0: @ 0x080445C0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x21 + movs r1, #1 + movs r2, #1 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _080445DA + adds r0, r4, #0 + bl sub_0806FA24 +_080445DA: + pop {r4, pc} + + thumb_func_start sub_080445DC +sub_080445DC: @ 0x080445DC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08044604 + cmp r0, #3 + beq _08044604 + ldr r1, [r5, #0x2c] + ldr r0, [r5, #0x78] + subs r1, r1, r0 + ldr r0, [r4, #0x2c] + adds r0, r0, r1 + str r0, [r4, #0x2c] + ldr r1, [r5, #0x30] + ldr r0, [r5, #0x7c] + subs r1, r1, r0 + ldr r0, [r4, #0x30] + adds r0, r0, r1 + str r0, [r4, #0x30] +_08044604: + ldr r1, _08044684 @ =gUnk_080D1604 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #0 + beq _08044626 + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0xff + strb r0, [r1] +_08044626: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08044680 + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _0804464A + ldrb r0, [r4, #0xc] + cmp r0, #6 + bne _0804464A + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 +_0804464A: + adds r2, r4, #0 + adds r2, #0x45 + ldrb r0, [r2] + cmp r0, #0xfc + bhi _08044680 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xff + strb r0, [r2] + adds r1, r5, #0 + adds r1, #0x80 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A29BC + ldr r0, _08044688 @ =0x000001C3 + bl sub_080A3268 +_08044680: + pop {r4, r5, pc} + .align 2, 0 +_08044684: .4byte gUnk_080D1604 +_08044688: .4byte 0x000001C3 + + thumb_func_start sub_0804468C +sub_0804468C: @ 0x0804468C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x38 + movs r6, #0 + movs r5, #3 + strb r5, [r0] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x84 + strb r6, [r0] + ldrb r3, [r4, #0xa] + cmp r3, #0 + beq _080446C8 + cmp r3, #1 + beq _08044728 + b _0804474A +_080446C8: + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x79 + ldrb r0, [r2] + lsls r0, r0, #3 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x78 + strb r3, [r0] + adds r0, #0xb + strb r3, [r0] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r2] + adds r1, r5, #0 + ands r1, r0 + lsls r1, r1, #1 + ldr r0, _08044724 @ =gUnk_080D1620 + adds r1, r1, r0 + ldr r0, [r4, #0x50] + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r1, r3] + subs r3, #0x10 + lsls r3, r3, #0x10 + adds r1, r4, #0 + bl sub_0806FA48 + ldr r0, [r4, #0x50] + ldrh r0, [r0, #0x36] + strh r0, [r4, #0x36] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0804474A + .align 2, 0 +_08044724: .4byte gUnk_080D1620 +_08044728: + strb r5, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + strb r6, [r0] + adds r0, #0xf + movs r2, #1 + strb r3, [r0] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_0804474A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0804474C +sub_0804474C: @ 0x0804474C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r2, [r0, #0xc] + cmp r2, #3 + beq _0804476C + cmp r2, #3 + bgt _08044762 + cmp r2, #2 + beq _0804479A + b _080447A8 +_08044762: + cmp r2, #5 + beq _0804477A + cmp r2, #6 + beq _0804478A + b _080447A8 +_0804476C: + movs r1, #0 + strb r2, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + strb r1, [r0] + strb r1, [r4, #0xe] + b _080447A8 +_0804477A: + movs r0, #0 + strb r2, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x74 + strb r0, [r1] + movs r0, #1 + strb r0, [r4, #0xf] + b _080447A8 +_0804478A: + movs r0, #0 + strb r2, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x74 + strb r0, [r1] + movs r0, #0x20 + strb r0, [r4, #0xf] + b _080447A8 +_0804479A: + movs r1, #0 + strb r2, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + strb r1, [r0] + subs r0, #0x35 + strb r1, [r0] +_080447A8: + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080447B6 + adds r0, r4, #0 + bl sub_080042B8 + b _080447DC +_080447B6: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080447D0 + movs r0, #2 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x15] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_080447D0: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080042B8 +_080447DC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080447E0 +sub_080447E0: @ 0x080447E0 + push {r4, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x50] + ldrb r0, [r3, #0xc] + cmp r0, #1 + bne _08044818 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x2b + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08044E74 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08044864 + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + b _08044864 +_08044818: + adds r1, r4, #0 + adds r1, #0x77 + ldrb r0, [r1] + adds r2, r0, #1 + movs r0, #7 + ands r2, r0 + strb r2, [r1] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08044852 + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _08044848 + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + b _08044852 +_08044848: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_08044852: + adds r0, r3, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r0, #2 + bne _08044864 + adds r0, r4, #0 + movs r1, #2 + bl sub_08044E74 +_08044864: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08044868 +sub_08044868: @ 0x08044868 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + adds r0, r5, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r0, #3 + bne _0804487E + b _080449C8 +_0804487E: + cmp r0, #3 + bgt _0804488E + cmp r0, #1 + beq _08044948 + cmp r0, #2 + bne _0804488C + b _080449AE +_0804488C: + b _080449EA +_0804488E: + cmp r0, #0xfe + beq _08044898 + cmp r0, #0xff + beq _080448B6 + b _080449EA +_08044898: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + bne _080448A4 + b _080449EA +_080448A4: + adds r0, r4, #0 + adds r0, #0x74 + ldrb r0, [r0] + cmp r0, #2 + beq _080448B0 + b _080449EA +_080448B0: + bl sub_0805E780 + b _080449EA +_080448B6: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + bne _080448C2 + b _080449EA +_080448C2: + adds r6, r4, #0 + adds r6, #0x74 + ldrb r0, [r6] + cmp r0, #0 + beq _080448D2 + cmp r0, #1 + beq _08044900 + b _080449EA +_080448D2: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080448E2 + b _080449EA +_080448E2: + movs r0, #1 + strb r0, [r6] + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + subs r2, #0x10 + adds r0, r4, #0 + bl sub_080045B4 + strb r0, [r4, #0x15] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + b _080449EA +_08044900: + adds r0, r4, #0 + bl sub_0806F69C + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + subs r2, #0x10 + adds r0, r4, #0 + movs r3, #0xc + bl sub_0806FCB8 + cmp r0, #0 + beq _08044934 + ldrb r0, [r6] + adds r0, #1 + strb r0, [r6] + ldrh r0, [r5, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x32] + subs r0, #0x10 + strh r0, [r4, #0x32] + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + b _080449EA +_08044934: + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + subs r2, #0x10 + adds r0, r4, #0 + bl sub_080045B4 + strb r0, [r4, #0x15] + b _080449EA +_08044948: + adds r1, r4, #0 + adds r1, #0x83 + ldrb r0, [r1] + cmp r0, #0 + bne _08044964 + adds r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_08044964: + adds r0, r4, #0 + bl sub_08044DEC + adds r0, r5, #0 + adds r0, #0x86 + ldrb r0, [r0] + cmp r0, #1 + bls _080449A8 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r6, r0, #0x1e + cmp r6, #1 + bne _080449A8 + movs r0, #0x84 + adds r0, r0, r4 + mov r8, r0 + ldrb r7, [r0] + cmp r7, #0 + bne _080449A8 + adds r0, r4, #0 + movs r1, #0x18 + movs r2, #0 + bl sub_0804A98C + adds r5, r0, #0 + cmp r5, #0 + beq _080449A8 + strb r6, [r5, #0xb] + str r4, [r5, #0x50] + mov r0, r8 + strb r6, [r0] + adds r0, r4, #0 + adds r0, #0x3f + strb r7, [r0] +_080449A8: + movs r0, #0x20 + strb r0, [r4, #0xe] + b _080449EA +_080449AE: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080449EA + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bhi _080449EA + adds r0, r4, #0 + bl sub_0806F69C + b _080449EA +_080449C8: + adds r0, r4, #0 + movs r1, #1 + bl sub_08044E74 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080449E2 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + b _080449E8 +_080449E2: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 +_080449E8: + strb r0, [r4, #0x10] +_080449EA: + adds r0, r4, #0 + bl sub_080042B8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080449F8 +sub_080449F8: @ 0x080449F8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x50] + bl sub_080042B8 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08044A90 + adds r6, r4, #0 + adds r6, #0x74 + ldrb r0, [r6] + cmp r0, #1 + beq _08044A6A + cmp r0, #1 + bgt _08044A1C + cmp r0, #0 + beq _08044A26 + b _08044B02 +_08044A1C: + cmp r0, #2 + beq _08044AC6 + cmp r0, #3 + beq _08044AF8 + b _08044B02 +_08044A26: + adds r0, r5, #0 + bl sub_0806F69C + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08044B02 + adds r1, r5, #0 + adds r1, #0x78 + ldrb r0, [r1] + cmp r0, #0 + bne _08044A4C + adds r0, #1 + strb r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r5, #0x24] +_08044A4C: + movs r0, #4 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0x15] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _08044B02 + movs r0, #1 + strb r0, [r6] + b _08044B02 +_08044A6A: + ldrb r0, [r5, #0xe] + cmp r0, #2 + beq _08044A84 + cmp r0, #2 + bgt _08044A7A + cmp r0, #1 + beq _08044A9A + b _08044B02 +_08044A7A: + cmp r0, #3 + beq _08044ABA + cmp r0, #4 + beq _08044AB4 + b _08044B02 +_08044A84: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _08044B02 + strb r0, [r5, #0xf] +_08044A90: + adds r0, r5, #0 + movs r1, #0 + bl sub_08044E74 + b _08044B02 +_08044A9A: + ldrb r0, [r5, #0x15] + adds r0, #0x10 + movs r4, #0x1f + ands r0, r4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F69C + ldrb r0, [r5, #0x15] + adds r0, #0x10 + ands r0, r4 + strb r0, [r5, #0x15] + b _08044AC0 +_08044AB4: + adds r0, r5, #0 + bl sub_0806F69C +_08044ABA: + adds r0, r5, #0 + bl sub_0806F69C +_08044AC0: + movs r0, #2 + strb r0, [r5, #0xe] + b _08044B02 +_08044AC6: + adds r1, r5, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #0 + bne _08044B02 + adds r0, #1 + strb r0, [r1] + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _08044B02 + adds r0, r5, #0 + movs r1, #0x1c + movs r2, #0 + bl sub_0804A98C + adds r4, r0, #0 + cmp r4, #0 + beq _08044B02 + ldrh r0, [r4, #0x32] + adds r0, #4 + strh r0, [r4, #0x32] + str r5, [r4, #0x50] + str r4, [r5, #0x54] + b _08044B02 +_08044AF8: + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _08044B02 + movs r0, #0 + strb r0, [r5, #0xf] +_08044B02: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08044B04 +sub_08044B04: @ 0x08044B04 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r6, [r4, #0x50] + bl sub_080042B8 + ldrb r0, [r6, #0xc] + cmp r0, #1 + bne _08044B26 + adds r0, r4, #0 + movs r1, #0 + bl sub_08044E74 + movs r0, #0x20 + strb r0, [r4, #0xe] + b _08044DE6 +_08044B26: + adds r0, r6, #0 + adds r0, #0x74 + ldrb r5, [r0] + cmp r5, #1 + bne _08044B32 + b _08044D10 +_08044B32: + cmp r5, #1 + bgt _08044B3C + cmp r5, #0 + beq _08044B4A + b _08044DE6 +_08044B3C: + cmp r5, #2 + bne _08044B42 + b _08044DE6 +_08044B42: + cmp r5, #3 + bne _08044B48 + b _08044D6A +_08044B48: + b _08044DE6 +_08044B4A: + adds r0, r4, #0 + bl sub_0806F69C + adds r7, r4, #0 + adds r7, #0x74 + ldrb r0, [r7] + mov r8, r7 + cmp r0, #1 + beq _08044BF4 + cmp r0, #1 + bgt _08044B66 + cmp r0, #0 + beq _08044B72 + b _08044DE6 +_08044B66: + cmp r0, #2 + beq _08044C4C + cmp r0, #3 + bne _08044B70 + b _08044C9C +_08044B70: + b _08044DE6 +_08044B72: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08044B98 + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + movs r1, #2 + cmp r0, #0 + beq _08044B8C + movs r1, #4 +_08044B8C: + strb r1, [r4, #0xe] + ldrb r0, [r4, #0x15] + adds r0, #1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_08044B98: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + movs r2, #0xff + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08044BAA + b _08044DE6 +_08044BAA: + ldrb r0, [r4, #0xe] + cmp r0, #2 + beq _08044BB6 + movs r0, #1 + strb r0, [r4, #0xf] + b _08044DE6 +_08044BB6: + adds r1, r4, #0 + adds r1, #0x78 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ands r0, r2 + cmp r0, #2 + bls _08044BDA + mov r2, r8 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + movs r0, #1 + strb r0, [r1] + movs r0, #4 + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + b _08044BDE +_08044BDA: + movs r0, #0x20 + strb r0, [r4, #0xf] +_08044BDE: + ldrb r0, [r1] + movs r2, #0xa0 + lsls r2, r2, #3 + adds r1, r2, #0 + cmp r0, #0 + beq _08044BF0 + movs r0, #0xa0 + lsls r0, r0, #2 + adds r1, r0, #0 +_08044BF0: + strh r1, [r4, #0x24] + b _08044DE6 +_08044BF4: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08044C04 + b _08044DE6 +_08044C04: + movs r0, #6 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x15] + adds r0, #1 + movs r2, #0x1f + mov r8, r2 + mov r2, r8 + ands r0, r2 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + ands r0, r1 + cmp r0, #0x30 + beq _08044C24 + b _08044DE6 +_08044C24: + movs r0, #0x2e + ldrsh r1, [r6, r0] + movs r0, #0x32 + ldrsh r2, [r6, r0] + subs r2, #0x10 + adds r0, r4, #0 + bl sub_080045B4 + strh r5, [r4, #0x24] + adds r0, #0x10 + mov r1, r8 + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #0x10 + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + b _08044DE6 +_08044C4C: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08044CA2 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #4 + beq _08044CAE + cmp r5, #4 + bgt _08044C6A + cmp r5, #0 + beq _08044C78 + b _08044DE6 +_08044C6A: + cmp r5, #0xc + beq _08044C70 + b _08044DE6 +_08044C70: + movs r0, #0xa0 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + b _08044DE6 +_08044C78: + ldrb r0, [r7] + adds r0, #1 + strb r0, [r7] + movs r2, #0x2e + ldrsh r1, [r6, r2] + movs r0, #0x32 + ldrsh r2, [r6, r0] + subs r2, #0x10 + adds r0, r4, #0 + bl sub_080045B4 + strb r0, [r4, #0x15] + strh r5, [r4, #0x24] + movs r0, #4 + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08044DE6 +_08044C9C: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08044CB6 +_08044CA2: + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08044CAE + b _08044DE6 +_08044CAE: + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + b _08044DE6 +_08044CB6: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08044CD2 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08044CD2 + movs r0, #0xa0 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + ldr r0, _08044D0C @ =0x0000014F + bl sub_080A3268 +_08044CD2: + adds r0, r4, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #3 + bne _08044CF8 + movs r2, #0x2e + ldrsh r1, [r6, r2] + movs r0, #0x32 + ldrsh r2, [r6, r0] + subs r2, #0x10 + adds r0, r4, #0 + movs r3, #0xc + bl sub_0806FCB8 + cmp r0, #0 + beq _08044CF8 + ldrb r0, [r6, #0xe] + adds r0, #1 + strb r0, [r6, #0xe] +_08044CF8: + movs r2, #0x2e + ldrsh r1, [r6, r2] + movs r0, #0x32 + ldrsh r2, [r6, r0] + subs r2, #0x10 + adds r0, r4, #0 + bl sub_080045B4 + strb r0, [r4, #0x15] + b _08044DE6 + .align 2, 0 +_08044D0C: .4byte 0x0000014F +_08044D10: + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #1 + beq _08044D50 + cmp r0, #3 + bne _08044DE6 + strb r5, [r1] + movs r0, #0x50 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r3, _08044D4C @ =0xFFF00000 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08044DE6 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _08044DE6 + .align 2, 0 +_08044D4C: .4byte 0xFFF00000 +_08044D50: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08044DE6 + strb r0, [r1] + movs r0, #0x20 + strb r0, [r4, #0xe] + movs r0, #4 + strb r0, [r4, #0xf] + b _08044DE6 +_08044D6A: + adds r5, r4, #0 + adds r5, #0x74 + ldrb r0, [r5] + cmp r0, #1 + beq _08044DA4 + cmp r0, #1 + bgt _08044D7E + cmp r0, #0 + beq _08044D84 + b _08044DE6 +_08044D7E: + cmp r0, #2 + beq _08044DBE + b _08044DE6 +_08044D84: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08044DE6 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08044DE6 + adds r0, r4, #0 + bl sub_08044DEC + movs r0, #1 + strb r0, [r5] + movs r0, #0x10 + strb r0, [r4, #0xe] + b _08044DE6 +_08044DA4: + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08044DE6 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] + b _08044DE6 +_08044DBE: + adds r0, r4, #0 + movs r1, #1 + bl sub_08044E74 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08044DD8 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + b _08044DDE +_08044DD8: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 +_08044DDE: + strb r0, [r4, #0x10] + ldrb r0, [r6, #0xe] + adds r0, #1 + strb r0, [r6, #0xe] +_08044DE6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08044DEC +sub_08044DEC: @ 0x08044DEC + push {lr} + mov ip, r0 + ldr r0, [r0, #0x50] + adds r0, #0x80 + mov r1, ip + adds r1, #0x79 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bls _08044E1A + mov r0, ip + ldrb r1, [r0, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x18] + adds r1, #0x45 + movs r0, #0xff + strb r0, [r1] + b _08044E26 +_08044E1A: + mov r2, ip + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] +_08044E26: + mov r0, ip + ldrb r1, [r0, #0x10] + movs r0, #0x7f + ands r0, r1 + movs r1, #0 + mov r2, ip + strb r0, [r2, #0x10] + mov r0, ip + adds r0, #0x78 + strb r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r2, #0x24] + ldr r0, [r2, #0x50] + adds r1, r0, #0 + adds r1, #0x80 + ldrb r1, [r1] + subs r1, #1 + ldr r2, _08044E6C @ =gUnk_080D1628 + mov r3, ip + adds r3, #0x79 + lsls r1, r1, #2 + ldrb r3, [r3] + adds r1, r1, r3 + adds r1, r1, r2 + ldrb r1, [r1] + mov r2, ip + strb r1, [r2, #0x15] + ldr r3, _08044E70 @ =0xFFF00000 + mov r1, ip + movs r2, #0 + bl sub_0806FA48 + pop {pc} + .align 2, 0 +_08044E6C: .4byte gUnk_080D1628 +_08044E70: .4byte 0xFFF00000 + + thumb_func_start sub_08044E74 +sub_08044E74: @ 0x08044E74 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r2, r1, #0 + movs r0, #0 + movs r1, #1 + strb r1, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x74 + strb r0, [r1] + cmp r2, #1 + beq _08044ED4 + cmp r2, #1 + blo _08044EE4 + adds r6, r5, #0 + adds r6, #0x78 + cmp r2, #2 + bne _08044F3E + strb r2, [r5, #0xc] + ldrb r0, [r5, #0x15] + adds r0, #0x18 + movs r4, #0x1f + ands r0, r4 + strb r0, [r5, #0x15] + ldr r0, [r5, #0x50] + ldr r3, _08044ED0 @ =0xFFF00000 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #0xc0 + lsls r0, r0, #6 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_0806F69C + ldrb r0, [r5, #0x15] + adds r0, #8 + ands r0, r4 + strb r0, [r5, #0x15] + movs r0, #0xa0 + lsls r0, r0, #3 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_0806F69C + b _08044F3E + .align 2, 0 +_08044ED0: .4byte 0xFFF00000 +_08044ED4: + ldrb r0, [r5, #0x15] + adds r0, #8 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] + adds r6, r5, #0 + adds r6, #0x78 + b _08044F3E +_08044EE4: + adds r0, r5, #0 + adds r0, #0x78 + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + beq _08044F32 + ldrb r0, [r5, #0xe] + cmp r0, #1 + beq _08044F18 + cmp r0, #1 + blt _08044F3E + cmp r0, #4 + bgt _08044F3E + cmp r0, #3 + blt _08044F3E + movs r4, #0xff +_08044F04: + adds r0, r5, #0 + bl sub_0806F69C + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + ands r0, r4 + cmp r0, #2 + bne _08044F04 + b _08044F3E +_08044F18: + ldrb r0, [r5, #0x15] + adds r0, #0x10 + movs r4, #0x1f + ands r0, r4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F69C + ldrb r0, [r5, #0x15] + adds r0, #0x10 + ands r0, r4 + strb r0, [r5, #0x15] + b _08044F3E +_08044F32: + ldrb r0, [r5, #0xe] + cmp r0, #2 + bne _08044F3E + adds r0, r5, #0 + bl sub_0806F69C +_08044F3E: + movs r0, #0 + movs r1, #1 + strb r1, [r5, #0xe] + strb r0, [r6] + movs r0, #0xa0 + lsls r0, r0, #3 + strh r0, [r5, #0x24] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08044F50 +sub_08044F50: @ 0x08044F50 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08044F6C @ =gUnk_080D16A4 + bl sub_0800129E + movs r3, #0xc + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_08044F6C: .4byte gUnk_080D16A4 + + thumb_func_start sub_08044F70 +sub_08044F70: @ 0x08044F70 + push {lr} + ldr r2, _08044F84 @ =gUnk_080D16BC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08044F84: .4byte gUnk_080D16BC + + thumb_func_start sub_08044F88 +sub_08044F88: @ 0x08044F88 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + beq _08044FA2 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, r1 + beq _08044FA2 + movs r0, #4 + strb r0, [r4, #0xc] + b _08044FAA +_08044FA2: + ldr r1, _08044FC0 @ =gUnk_080D16A4 + adds r0, r4, #0 + bl sub_0804AA30 +_08044FAA: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _08044FBC + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_08044FBC: + pop {r4, pc} + .align 2, 0 +_08044FC0: .4byte gUnk_080D16A4 + + thumb_func_start nullsub_171 +nullsub_171: @ 0x08044FC4 + bx lr + .align 2, 0 + + thumb_func_start sub_08044FC8 +sub_08044FC8: @ 0x08044FC8 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0804A720 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08044FF8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08044FF8 +sub_08044FF8: @ 0x08044FF8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + adds r4, #0x84 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_08045018 +sub_08045018: @ 0x08045018 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08004274 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08045086 + movs r4, #3 + strb r4, [r5, #0xc] + movs r0, #1 + strb r0, [r5, #0xe] + movs r1, #0x24 + ldrsh r0, [r5, r1] + cmp r0, #0 + ble _0804504C + movs r0, #0x80 + lsls r0, r0, #5 + movs r2, #0x24 + ldrsh r1, [r5, r2] + bl sub_0806FA04 + lsrs r0, r0, #8 + strb r0, [r5, #0xe] +_0804504C: + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0804507C + bl sub_08000E50 + ands r0, r4 + cmp r0, #0 + beq _0804507C + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #8 + ands r0, r1 + adds r0, #0xfc + adds r4, r4, r0 + movs r0, #0x18 + ands r4, r0 + strb r4, [r5, #0x15] + b _08045086 +_0804507C: + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] +_08045086: + pop {r4, r5, pc} + + thumb_func_start sub_08045088 +sub_08045088: @ 0x08045088 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080450A6 + movs r0, #1 + strb r0, [r4, #0xc] +_080450A6: + pop {r4, pc} + + thumb_func_start sub_080450A8 +sub_080450A8: @ 0x080450A8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + mov r8, r0 + ldr r1, _0804516C @ =gUnk_080D16D0 + ldrb r0, [r0, #0xa] + adds r0, r0, r1 + ldrb r7, [r0] + movs r0, #0x48 + subs r0, r0, r7 + ldr r1, _08045170 @ =gUnk_03003DBC + ldrb r1, [r1] + cmp r0, r1 + ble _08045160 + cmp r7, #0 + beq _080450E2 + mov r4, sp + adds r5, r7, #0 +_080450D0: + mov r0, r8 + ldrb r1, [r0, #0xa] + movs r0, #0x57 + bl sub_0804AA60 + stm r4!, {r0} + subs r5, #1 + cmp r5, #0 + bne _080450D0 +_080450E2: + ldr r2, _08045174 @ =gUnk_080D16D4 + mov sb, r2 + movs r5, #0 + cmp r5, r7 + bge _08045142 +_080450EC: + lsls r0, r5, #2 + add r0, sp + ldr r6, [r0] + adds r4, r5, #1 + adds r0, r4, #0 + adds r1, r7, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + str r0, [r6, #0x54] + adds r0, r5, r7 + subs r0, #1 + adds r1, r7, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + str r0, [r6, #0x50] + movs r1, #0 + movs r0, #1 + strb r0, [r6, #0xb] + strh r1, [r6, #0x36] + adds r1, r6, #0 + adds r1, #0x3d + movs r0, #0xf0 + strb r0, [r1] + mov r0, sb + movs r2, #0 + ldrsb r2, [r0, r2] + movs r3, #1 + ldrsb r3, [r0, r3] + mov r0, r8 + adds r1, r6, #0 + bl sub_08045178 + movs r2, #2 + add sb, r2 + adds r5, r4, #0 + cmp r5, r7 + blt _080450EC +_08045142: + mov r0, r8 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r6, r0, #0 + cmp r6, #0 + beq _0804515A + mov r0, r8 + adds r1, r6, #0 + bl sub_0806FA24 +_0804515A: + mov r0, r8 + bl sub_0805E7BC +_08045160: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0804516C: .4byte gUnk_080D16D0 +_08045170: .4byte gUnk_03003DBC +_08045174: .4byte gUnk_080D16D4 + + thumb_func_start sub_08045178 +sub_08045178: @ 0x08045178 + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + cmp r4, #0 + beq _080451C6 + bl sub_0804A4E4 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_080002CC + cmp r0, #0 + bne _080451C6 + movs r1, #0x2e + ldrsh r0, [r4, r1] + adds r2, r0, r5 + cmp r2, #0 + blt _080451AE + ldr r0, _080451C8 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + ldrh r0, [r0, #0x1e] + adds r1, r1, r0 + cmp r2, r1 + bge _080451AE + strh r2, [r4, #0x2e] +_080451AE: + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r2, r0, r6 + cmp r2, #0 + blt _080451C6 + ldr r0, _080451C8 @ =gUnk_03000BF0 + ldrh r1, [r0, #8] + ldrh r0, [r0, #0x20] + adds r1, r1, r0 + cmp r2, r1 + bge _080451C6 + strh r2, [r4, #0x32] +_080451C6: + pop {r4, r5, r6, pc} + .align 2, 0 +_080451C8: .4byte gUnk_03000BF0 + + thumb_func_start sub_080451CC +sub_080451CC: @ 0x080451CC + ldrb r3, [r0, #0x10] + movs r2, #0xfe + ands r2, r3 + strb r2, [r1, #0x10] + ldr r2, [r0, #0x2c] + str r2, [r1, #0x2c] + ldr r2, [r0, #0x30] + str r2, [r1, #0x30] + ldr r2, [r0, #0x34] + str r2, [r1, #0x34] + adds r0, #0x68 + adds r1, #0x68 + ldrb r2, [r0, #4] + strb r2, [r1, #4] + ldrb r2, [r0, #5] + strb r2, [r1, #5] + ldrb r2, [r0, #6] + strb r2, [r1, #6] + ldrb r2, [r0, #7] + strb r2, [r1, #7] + ldrh r2, [r0, #8] + strh r2, [r1, #8] + ldrh r0, [r0, #0xa] + strh r0, [r1, #0xa] + bx lr + .align 2, 0 + + thumb_func_start sub_08045200 +sub_08045200: @ 0x08045200 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0804521C @ =gUnk_080D17C0 + bl sub_0800129E + movs r3, #8 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + bl sub_0804A9AC + pop {r4, pc} + .align 2, 0 +_0804521C: .4byte gUnk_080D17C0 + + thumb_func_start sub_08045220 +sub_08045220: @ 0x08045220 + push {lr} + ldr r2, _08045234 @ =gUnk_080D17D8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08045234: .4byte gUnk_080D17D8 + + thumb_func_start sub_08045238 +sub_08045238: @ 0x08045238 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _0804524C + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC +_0804524C: + ldr r1, _08045258 @ =gUnk_080D17C0 + adds r0, r4, #0 + bl sub_0804AA30 + pop {r4, pc} + .align 2, 0 +_08045258: .4byte gUnk_080D17C0 + + thumb_func_start sub_0804525C +sub_0804525C: @ 0x0804525C + push {r4, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x50] + cmp r4, r3 + beq _08045298 + cmp r3, #0 + beq _08045298 + adds r2, r4, #0 + adds r2, #0x6c + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] + ldr r1, [r4, #0x54] + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + adds r0, r4, #0 + adds r0, #0x6d + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08045298 + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_08058800 +_08045298: + adds r0, r4, #0 + bl sub_0804A7D4 + pop {r4, pc} + + thumb_func_start nullsub_22 +nullsub_22: @ 0x080452A0 + bx lr + .align 2, 0 + + thumb_func_start sub_080452A4 +sub_080452A4: @ 0x080452A4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r2, #1 + movs r5, #1 + strb r5, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0804A720 + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _080452DC + movs r0, #2 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + b _080452E2 +_080452DC: + adds r0, r4, #0 + bl sub_080452E4 +_080452E2: + pop {r4, r5, pc} + + thumb_func_start sub_080452E4 +sub_080452E4: @ 0x080452E4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xe] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080452FC +sub_080452FC: @ 0x080452FC + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08004274 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08045370 + movs r4, #3 + strb r4, [r5, #0xc] + movs r0, #1 + strb r0, [r5, #0xe] + movs r1, #0x24 + ldrsh r0, [r5, r1] + cmp r0, #0 + ble _08045330 + movs r0, #0x80 + lsls r0, r0, #5 + movs r2, #0x24 + ldrsh r1, [r5, r2] + bl sub_0806FA04 + lsrs r0, r0, #8 + strb r0, [r5, #0xe] +_08045330: + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _08045360 + bl sub_08000E50 + ands r0, r4 + cmp r0, #0 + beq _08045360 + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #8 + ands r0, r1 + adds r0, #0xfc + adds r4, r4, r0 + movs r0, #0x18 + ands r4, r0 + strb r4, [r5, #0x15] + b _08045370 +_08045360: + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_08045374 +_08045370: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08045374 +sub_08045374: @ 0x08045374 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08045392 + movs r0, #1 + strb r0, [r4, #0xc] +_08045392: + pop {r4, pc} + + thumb_func_start sub_08045394 +sub_08045394: @ 0x08045394 + push {lr} + ldr r1, _080453A0 @ =gUnk_080D17E8 + bl sub_0800129E + pop {pc} + .align 2, 0 +_080453A0: .4byte gUnk_080D17E8 + + thumb_func_start sub_080453A4 +sub_080453A4: @ 0x080453A4 + push {lr} + ldr r2, _080453B8 @ =gUnk_080D1800 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080453B8: .4byte gUnk_080D1800 + + thumb_func_start sub_080453BC +sub_080453BC: @ 0x080453BC + push {lr} + adds r2, r0, #0 + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + beq _080453D6 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, r1 + beq _080453D6 + movs r0, #2 + strb r0, [r2, #0xc] + b _080453DE +_080453D6: + ldr r1, _080453E0 @ =gUnk_080D17E8 + adds r0, r2, #0 + bl sub_0804AA30 +_080453DE: + pop {pc} + .align 2, 0 +_080453E0: .4byte gUnk_080D17E8 + + thumb_func_start nullsub_172 +nullsub_172: @ 0x080453E4 + bx lr + .align 2, 0 + + thumb_func_start sub_080453E8 +sub_080453E8: @ 0x080453E8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + adds r0, #0x3f + strb r1, [r0] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0804A720 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08045524 + pop {r4, pc} + + thumb_func_start sub_08045430 +sub_08045430: @ 0x08045430 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + adds r0, r4, #0 + bl sub_08004274 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08045452 + adds r0, r4, #0 + bl sub_08045524 +_08045452: + pop {r4, pc} + + thumb_func_start sub_08045454 +sub_08045454: @ 0x08045454 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x10 + mov r8, r0 + ldr r1, _08045518 @ =gUnk_080D180C + ldrb r0, [r0, #0xa] + adds r0, r0, r1 + ldrb r7, [r0] + movs r0, #0x48 + subs r0, r0, r7 + ldr r1, _0804551C @ =gUnk_03003DBC + ldrb r1, [r1] + cmp r0, r1 + ble _0804550C + cmp r7, #0 + beq _0804548E + mov r4, sp + adds r5, r7, #0 +_0804547C: + mov r0, r8 + ldrb r1, [r0, #0xa] + movs r0, #0x59 + bl sub_0804AA60 + stm r4!, {r0} + subs r5, #1 + cmp r5, #0 + bne _0804547C +_0804548E: + ldr r2, _08045520 @ =gUnk_080D1810 + mov sb, r2 + movs r5, #0 + cmp r5, r7 + bge _080454EE +_08045498: + lsls r0, r5, #2 + add r0, sp + ldr r6, [r0] + adds r4, r5, #1 + adds r0, r4, #0 + adds r1, r7, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + str r0, [r6, #0x54] + adds r0, r5, r7 + subs r0, #1 + adds r1, r7, #0 + bl __modsi3 + lsls r0, r0, #2 + add r0, sp + ldr r0, [r0] + str r0, [r6, #0x50] + movs r1, #0 + movs r0, #1 + strb r0, [r6, #0xb] + strh r1, [r6, #0x36] + adds r1, r6, #0 + adds r1, #0x3d + movs r0, #0xf0 + strb r0, [r1] + mov r0, sb + movs r2, #0 + ldrsb r2, [r0, r2] + movs r3, #1 + ldrsb r3, [r0, r3] + mov r0, r8 + adds r1, r6, #0 + bl sub_08045178 + movs r2, #2 + add sb, r2 + adds r5, r4, #0 + cmp r5, r7 + blt _08045498 +_080454EE: + mov r0, r8 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r6, r0, #0 + cmp r6, #0 + beq _08045506 + mov r0, r8 + adds r1, r6, #0 + bl sub_0806FA24 +_08045506: + mov r0, r8 + bl sub_0805E7BC +_0804550C: + add sp, #0x10 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08045518: .4byte gUnk_080D180C +_0804551C: .4byte gUnk_03003DBC +_08045520: .4byte gUnk_080D1810 + + thumb_func_start sub_08045524 +sub_08045524: @ 0x08045524 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xe0 + lsls r0, r0, #9 + str r0, [r5, #0x20] + adds r0, r5, #0 + movs r1, #1 + movs r2, #8 + bl sub_0804A024 + adds r4, r0, #0 + cmp r4, #0xff + beq _08045556 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + bne _08045556 + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0xe] + b _08045596 +_08045556: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _08045562 + subs r0, #1 + strb r0, [r5, #0xe] + b _080455A8 +_08045562: + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0xe] + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _0804559E + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _0804559E + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #8 + ands r0, r1 + adds r0, #0xfc + adds r4, r4, r0 +_08045596: + movs r0, #0x18 + ands r4, r0 + strb r4, [r5, #0x15] + b _080455A8 +_0804559E: + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] +_080455A8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080455AC +sub_080455AC: @ 0x080455AC + push {lr} + ldr r1, _080455B8 @ =gUnk_080D1868 + bl sub_0800129E + pop {pc} + .align 2, 0 +_080455B8: .4byte gUnk_080D1868 + + thumb_func_start sub_080455BC +sub_080455BC: @ 0x080455BC + push {lr} + ldr r2, _080455D0 @ =gUnk_080D1880 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080455D0: .4byte gUnk_080D1880 + + thumb_func_start sub_080455D4 +sub_080455D4: @ 0x080455D4 + push {lr} + ldr r1, _080455E0 @ =gUnk_080D1868 + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_080455E0: .4byte gUnk_080D1868 + + thumb_func_start sub_080455E4 +sub_080455E4: @ 0x080455E4 + push {lr} + adds r3, r0, #0 + ldr r0, [r3, #0x50] + cmp r3, r0 + beq _0804560A + cmp r0, #0 + beq _0804560A + adds r2, r3, #0 + adds r2, #0x6c + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldr r1, [r3, #0x50] + ldr r0, [r3, #0x54] + str r0, [r1, #0x54] + ldr r1, [r3, #0x54] + ldr r0, [r3, #0x50] + str r0, [r1, #0x50] +_0804560A: + adds r0, r3, #0 + bl sub_0804A7D4 + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_23 +nullsub_23: @ 0x08045614 + bx lr + .align 2, 0 + + thumb_func_start sub_08045618 +sub_08045618: @ 0x08045618 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0804A720 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08045678 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08045654 +sub_08045654: @ 0x08045654 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AEFE0 + adds r0, r4, #0 + bl sub_08004274 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08045676 + adds r0, r4, #0 + bl sub_08045678 +_08045676: + pop {r4, pc} + + thumb_func_start sub_08045678 +sub_08045678: @ 0x08045678 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xe0 + lsls r0, r0, #9 + str r0, [r5, #0x20] + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0804568E + subs r0, #1 + strb r0, [r5, #0xe] + b _080456D4 +_0804568E: + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0xe] + adds r0, r5, #0 + bl sub_08049FA0 + cmp r0, #0 + bne _080456CA + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + cmp r1, #0 + beq _080456CA + adds r0, r5, #0 + bl sub_08049EE4 + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #8 + ands r0, r1 + adds r0, #0xfc + adds r4, r4, r0 + movs r0, #0x18 + ands r4, r0 + strb r4, [r5, #0x15] + b _080456D4 +_080456CA: + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r5, #0x15] +_080456D4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080456D8 +sub_080456D8: @ 0x080456D8 + push {lr} + ldr r1, _080456E4 @ =gUnk_080D1888 + bl sub_0800129E + pop {pc} + .align 2, 0 +_080456E4: .4byte gUnk_080D1888 + + thumb_func_start sub_080456E8 +sub_080456E8: @ 0x080456E8 + push {lr} + ldr r2, _080456FC @ =gUnk_080D18A0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080456FC: .4byte gUnk_080D18A0 + + thumb_func_start sub_08045700 +sub_08045700: @ 0x08045700 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + beq _080457D0 + ldr r0, [r5, #0x50] + ldr r3, [r0, #0x50] + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080457D0 + movs r0, #0x3f + ands r0, r1 + cmp r0, #0xe + beq _08045728 + cmp r0, #0x15 + bne _08045778 +_08045728: + adds r1, r5, #0 + adds r1, #0x81 + ldrb r0, [r1] + cmp r0, #0 + bne _0804575C + movs r0, #3 + strb r0, [r5, #0xc] + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldrb r1, [r5, #0xa] + lsls r1, r1, #3 + ldrb r0, [r5, #0xe] + adds r0, #2 + orrs r1, r0 + adds r0, r5, #0 + bl sub_08004260 + ldr r0, [r5, #0x50] + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + ldrb r2, [r5, #0xe] + adds r2, #2 + orrs r1, r2 + bl sub_08004260 +_0804575C: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0804576C + movs r0, #0xbd + lsls r0, r0, #1 + bl sub_080A3268 + b _080457D0 +_0804576C: + ldr r0, _08045774 @ =0x00000119 + bl sub_080A3268 + b _080457D0 + .align 2, 0 +_08045774: .4byte 0x00000119 +_08045778: + adds r2, r5, #0 + adds r2, #0x45 + ldrb r1, [r2] + adds r0, r1, #0 + cmp r0, #0xff + beq _080457D0 + movs r0, #0xff + strb r0, [r2] + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _080457D0 + adds r0, r3, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _080457D0 + adds r0, r3, #0 + adds r0, #0x76 + movs r1, #1 + ldrb r2, [r5, #0xb] + lsls r1, r2 + ldrb r2, [r0] + orrs r1, r2 + strb r1, [r0] + adds r1, r5, #0 + adds r1, #0x85 + ldrb r0, [r1] + cmp r0, #0 + bne _080457D0 + adds r0, #1 + strb r0, [r1] + ldrb r1, [r5, #0xa] + lsls r1, r1, #3 + movs r4, #6 + orrs r1, r4 + adds r0, r5, #0 + bl sub_08004260 + ldr r0, [r5, #0x50] + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + orrs r1, r4 + bl sub_08004260 +_080457D0: + ldr r1, _080457DC @ =gUnk_080D1888 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_080457DC: .4byte gUnk_080D1888 + + thumb_func_start nullsub_173 +nullsub_173: @ 0x080457E0 + bx lr + .align 2, 0 + + thumb_func_start sub_080457E4 +sub_080457E4: @ 0x080457E4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08045850 @ =gUnk_02000050 + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + cmp r2, #0 + bne _08045868 + movs r3, #1 + strb r3, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + adds r0, #4 + strb r2, [r0] + strb r2, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0x30 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x83 + strb r2, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08045854 + adds r0, r4, #0 + bl sub_08045A00 + movs r0, #0x5a + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + cmp r1, #0 + beq _0804585A + str r4, [r1, #0x50] + str r1, [r4, #0x54] + ldrb r0, [r4, #0xe] + strb r0, [r1, #0xe] + ldrb r0, [r4, #0xb] + strb r0, [r1, #0xb] + adds r0, r4, #0 + bl sub_0806FA24 + b _0804585A + .align 2, 0 +_08045850: .4byte gUnk_02000050 +_08045854: + adds r0, r4, #0 + adds r0, #0x63 + strb r3, [r0] +_0804585A: + ldrb r1, [r4, #0xa] + lsls r1, r1, #3 + movs r0, #1 + orrs r1, r0 + adds r0, r4, #0 + bl sub_08004260 +_08045868: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804586C +sub_0804586C: @ 0x0804586C + push {r4, lr} + adds r4, r0, #0 + bl sub_08045A28 + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + cmp r0, #0 + bne _080458AA + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080458C2 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0804589A + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_0804589A: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + lsls r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 + b _080458C2 +_080458AA: + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080458C2 + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] +_080458C2: + pop {r4, pc} + + thumb_func_start sub_080458C4 +sub_080458C4: @ 0x080458C4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08045A28 + ldr r1, [r5, #0x50] + ldrb r2, [r5, #0xa] + cmp r2, #0 + beq _080458D6 + ldr r1, [r1, #0x50] +_080458D6: + ldrb r0, [r1, #0xc] + cmp r0, #3 + bne _08045934 + adds r0, r1, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #1 + bne _08045934 + movs r0, #0 + movs r4, #4 + strb r4, [r5, #0xc] + strb r0, [r5, #0xf] + cmp r2, #0 + beq _08045934 + ldrb r0, [r5, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r5, #0x10] + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0804591C + ldrb r1, [r5, #0xa] + lsls r1, r1, #3 + movs r4, #5 + orrs r1, r4 + adds r0, r5, #0 + bl sub_08004260 + ldr r0, [r5, #0x50] + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + orrs r1, r4 + bl sub_08004260 + b _08045934 +_0804591C: + ldrb r1, [r5, #0xa] + lsls r1, r1, #3 + orrs r1, r4 + adds r0, r5, #0 + bl sub_08004260 + ldr r0, [r5, #0x50] + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + orrs r1, r4 + bl sub_08004260 +_08045934: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08045938 +sub_08045938: @ 0x08045938 + push {r4, lr} + adds r4, r0, #0 + bl sub_08045A28 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08045980 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08045980 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08045966 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x32 + b _0804597E +_08045966: + ldr r0, [r4, #0x50] + ldr r2, [r0, #0x50] + adds r2, #0x76 + movs r0, #1 + ldrb r1, [r4, #0xb] + lsls r0, r1 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x31 +_0804597E: + strb r0, [r1] +_08045980: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08045984 +sub_08045984: @ 0x08045984 + push {r4, lr} + adds r4, r0, #0 + bl sub_08045A28 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080459A6 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080459FE + movs r0, #0x20 + strb r0, [r4, #0xf] + b _080459FE +_080459A6: + ldr r2, [r4, #0x50] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080459B0 + ldr r2, [r2, #0x50] +_080459B0: + ldrb r0, [r2, #0x14] + cmp r0, #2 + bhi _080459FE + ldrb r0, [r2, #0xc] + cmp r0, #3 + beq _080459FE + movs r0, #0 + movs r3, #1 + strb r3, [r4, #0xc] + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x81 + strb r0, [r1] + adds r1, #4 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080459DA + subs r1, #0x46 + movs r0, #0x33 + strb r0, [r1] +_080459DA: + adds r0, r2, #0 + adds r0, #0x75 + ldrb r0, [r0] + ldrb r1, [r4, #0xb] + asrs r0, r1 + ands r0, r3 + cmp r0, #0 + beq _080459EE + strb r3, [r4, #0xe] + b _080459F0 +_080459EE: + strb r0, [r4, #0xe] +_080459F0: + ldrb r1, [r4, #0xa] + lsls r1, r1, #3 + movs r0, #1 + orrs r1, r0 + adds r0, r4, #0 + bl sub_08004260 +_080459FE: + pop {r4, pc} + + thumb_func_start sub_08045A00 +sub_08045A00: @ 0x08045A00 + push {lr} + adds r1, r0, #0 + ldrb r3, [r1, #0xb] + lsls r3, r3, #1 + ldr r0, _08045A24 @ =gUnk_080D18B4 + adds r3, r3, r0 + ldr r0, [r1, #0x50] + movs r2, #0 + ldrsb r2, [r3, r2] + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + adds r3, #3 + lsls r3, r3, #0x10 + bl sub_0806FA48 + pop {pc} + .align 2, 0 +_08045A24: .4byte gUnk_080D18B4 + + thumb_func_start sub_08045A28 +sub_08045A28: @ 0x08045A28 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r0, #0 + bne _08045A3E + adds r0, r5, #0 + bl sub_08004274 +_08045A3E: + adds r6, r5, #0 + adds r6, #0x5a + ldrb r0, [r6] + movs r1, #0x70 + mov r8, r1 + mov r4, r8 + ands r4, r0 + ldrb r7, [r5, #0xa] + cmp r7, #0 + bne _08045AF8 + adds r0, r5, #0 + bl sub_08045A00 + adds r1, r5, #0 + adds r1, #0x83 + ldrb r0, [r1] + adds r2, r1, #0 + cmp r0, #1 + beq _08045AA4 + cmp r0, #1 + bgt _08045A6E + cmp r0, #0 + beq _08045A78 + b _08045B7C +_08045A6E: + cmp r0, #2 + beq _08045ABC + cmp r0, #3 + beq _08045AE8 + b _08045B7C +_08045A78: + cmp r4, #0x20 + beq _08045A8C + cmp r4, #0x20 + bhi _08045A86 + cmp r4, #0 + beq _08045A96 + b _08045B7C +_08045A86: + cmp r4, #0x40 + beq _08045A96 + b _08045B7C +_08045A8C: + movs r0, #1 + strb r0, [r1] + movs r1, #0x9f + lsls r1, r1, #1 + b _08045B5A +_08045A96: + movs r0, #2 + strb r0, [r2] + ldr r1, _08045AA0 @ =0x0000013F + b _08045B5A + .align 2, 0 +_08045AA0: .4byte 0x0000013F +_08045AA4: + cmp r4, #0 + beq _08045AB0 + cmp r4, #0x10 + bne _08045B7C + strb r7, [r1] + b _08045B58 +_08045AB0: + movs r0, #2 + strb r0, [r1] + ldr r1, _08045AB8 @ =0x0000013F + b _08045B5A + .align 2, 0 +_08045AB8: .4byte 0x0000013F +_08045ABC: + cmp r4, #0x20 + beq _08045AD0 + cmp r4, #0x20 + bhi _08045ACA + cmp r4, #0x10 + beq _08045ADA + b _08045B7C +_08045ACA: + cmp r4, #0x40 + beq _08045ADE + b _08045B7C +_08045AD0: + movs r0, #1 + strb r0, [r1] + movs r1, #0x9f + lsls r1, r1, #1 + b _08045B5A +_08045ADA: + strb r7, [r1] + b _08045B58 +_08045ADE: + strb r0, [r1] + ldr r1, _08045AE4 @ =0x0000013F + b _08045B5A + .align 2, 0 +_08045AE4: .4byte 0x0000013F +_08045AE8: + cmp r4, #0 + bne _08045B7C + movs r0, #2 + strb r0, [r1] + ldr r1, _08045AF4 @ =0x0000013F + b _08045B5A + .align 2, 0 +_08045AF4: .4byte 0x0000013F +_08045AF8: + ldr r0, [r5, #0x50] + ldr r3, _08045B18 @ =0xFFFF0000 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + adds r2, r5, #0 + adds r2, #0x83 + ldrb r0, [r2] + cmp r0, #1 + beq _08045B3A + cmp r0, #1 + bgt _08045B1C + cmp r0, #0 + beq _08045B22 + b _08045B7C + .align 2, 0 +_08045B18: .4byte 0xFFFF0000 +_08045B1C: + cmp r0, #2 + beq _08045B68 + b _08045B7C +_08045B22: + ldrb r0, [r6] + mov r1, r8 + ands r1, r0 + cmp r1, #0x10 + beq _08045B54 + cmp r1, #0x20 + bne _08045B7C + movs r0, #1 + strb r0, [r2] + movs r1, #0x9f + lsls r1, r1, #1 + b _08045B5A +_08045B3A: + ldrb r0, [r6] + mov r1, r8 + ands r1, r0 + cmp r1, #0 + beq _08045B4A + cmp r1, #0x10 + beq _08045B54 + b _08045B7C +_08045B4A: + strb r1, [r2] + ldr r1, _08045B50 @ =0x0000013F + b _08045B5A + .align 2, 0 +_08045B50: .4byte 0x0000013F +_08045B54: + movs r0, #2 + strb r0, [r2] +_08045B58: + ldr r1, _08045B64 @ =0x0000013B +_08045B5A: + adds r0, r5, #0 + bl sub_0801D2B4 + b _08045B7C + .align 2, 0 +_08045B64: .4byte 0x0000013B +_08045B68: + ldrb r0, [r6] + mov r1, r8 + ands r1, r0 + cmp r1, #0 + bne _08045B7C + strb r1, [r2] + ldr r1, _08045B84 @ =0x0000013F + adds r0, r5, #0 + bl sub_0801D2B4 +_08045B7C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08045B84: .4byte 0x0000013F + + thumb_func_start sub_08045B88 +sub_08045B88: @ 0x08045B88 + push {lr} + ldr r1, _08045B94 @ =gUnk_080D19FC + bl sub_0800129E + pop {pc} + .align 2, 0 +_08045B94: .4byte gUnk_080D19FC + + thumb_func_start sub_08045B98 +sub_08045B98: @ 0x08045B98 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r1, _08045BC4 @ =gUnk_080D1A14 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0800445C + pop {r4, pc} + .align 2, 0 +_08045BC4: .4byte gUnk_080D1A14 + + thumb_func_start sub_08045BC8 +sub_08045BC8: @ 0x08045BC8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #1 + bne _08045C2C + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r2, #0x7f + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0x42 + bne _08045C2C + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + movs r0, #0x28 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + adds r0, r2, #0 + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #4 + bl sub_08046030 + adds r0, r4, #0 + movs r1, #3 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08045C16 + ldrh r0, [r1, #0x36] + subs r0, #8 + strh r0, [r1, #0x36] +_08045C16: + ldr r0, _08045C30 @ =gUnk_03003F80 + adds r0, #0x27 + movs r1, #0xff + strb r1, [r0] + ldr r0, _08045C34 @ =0x000001BB + bl sub_08004488 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_08045C2C: + pop {r4, pc} + .align 2, 0 +_08045C30: .4byte gUnk_03003F80 +_08045C34: .4byte 0x000001BB + + thumb_func_start nullsub_174 +nullsub_174: @ 0x08045C38 + bx lr + .align 2, 0 + + thumb_func_start sub_08045C3C +sub_08045C3C: @ 0x08045C3C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + strb r0, [r4, #0xf] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x78 + movs r2, #0 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + strb r2, [r4, #0x14] + movs r0, #0x10 + strb r0, [r4, #0x15] + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xb1 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_08046030 + adds r0, r4, #0 + bl sub_08095C48 + ldr r1, _08045CA0 @ =gUnk_08015AC4 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r0, r4, #0 + bl sub_0807DD50 + pop {r4, pc} + .align 2, 0 +_08045CA0: .4byte gUnk_08015AC4 + + thumb_func_start sub_08045CA4 +sub_08045CA4: @ 0x08045CA4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + adds r5, r0, #0 + cmp r5, #0 + beq _08045CC0 + subs r0, #1 + strb r0, [r4, #0xe] + b _08045CD8 +_08045CC0: + adds r0, r4, #0 + movs r1, #0 + bl sub_08045F54 + cmp r0, #0 + beq _08045CD8 + adds r0, r4, #0 + bl sub_08045FF0 + strb r5, [r4, #0xd] + movs r0, #1 + strb r0, [r4, #0xf] +_08045CD8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start nullsub_24 +nullsub_24: @ 0x08045CDC + bx lr + .align 2, 0 + + thumb_func_start sub_08045CE0 +sub_08045CE0: @ 0x08045CE0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xd] + cmp r0, #4 + bls _08045CF0 + b _08045DF8 +_08045CF0: + lsls r0, r0, #2 + ldr r1, _08045CFC @ =_08045D00 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08045CFC: .4byte _08045D00 +_08045D00: @ jump table + .4byte _08045D14 @ case 0 + .4byte _08045D36 @ case 1 + .4byte _08045D60 @ case 2 + .4byte _08045D9A @ case 3 + .4byte _08045DBC @ case 4 +_08045D14: + movs r6, #1 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08045DF8 + strb r6, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08045F98 + b _08045DB2 +_08045D36: + movs r6, #1 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08045DF8 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x20 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r0, r4, #0 + bl sub_08045F98 + adds r0, r4, #0 + movs r1, #2 + bl sub_08046030 + b _08045DF8 +_08045D60: + movs r6, #1 + adds r0, r4, #0 + bl sub_0804604C + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08045DF8 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl sub_0804A98C + adds r1, r0, #0 + cmp r1, #0 + beq _08045DF8 + str r4, [r1, #0x50] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] + ldrb r1, [r5] + movs r0, #0xfe + ands r0, r1 + strb r0, [r5] + movs r0, #3 + strb r0, [r4, #0xd] + b _08045DF8 +_08045D9A: + movs r6, #2 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08045DF8 + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #0x50 + strb r0, [r4, #0xe] +_08045DB2: + adds r0, r4, #0 + movs r1, #1 + bl sub_08046030 + b _08045DF8 +_08045DBC: + movs r6, #2 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08045DF8 + adds r0, r4, #0 + movs r1, #0 + bl sub_08045F54 + adds r5, r0, #0 + cmp r5, #0 + beq _08045DEC + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08045F98 + b _08045DF8 +_08045DEC: + adds r0, r4, #0 + bl sub_08045FA0 + movs r0, #0x50 + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] +_08045DF8: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08045F54 + adds r5, r0, #0 + cmp r5, #0 + bne _08045E12 + adds r0, r4, #0 + bl sub_08045FA0 + strb r5, [r4, #0xd] + strb r5, [r4, #0xe] + strb r5, [r4, #0xf] +_08045E12: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08045E14 +sub_08045E14: @ 0x08045E14 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08045E2C @ =gUnk_03003F80 + adds r0, #0x27 + movs r1, #0xff + strb r1, [r0] + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08045E30 + cmp r0, #1 + beq _08045E70 + b _08045EBA + .align 2, 0 +_08045E2C: .4byte gUnk_03003F80 +_08045E30: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08045E6A + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08045EBA + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + bl sub_08045F98 + adds r0, r4, #0 + movs r1, #5 + bl sub_08046030 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + b _08045EBA +_08045E6A: + subs r0, #1 + strb r0, [r4, #0xe] + b _08045EBA +_08045E70: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08045EBA + movs r1, #0 + movs r0, #5 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r0, r4, #0 + bl sub_08046030 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0804A9FC + adds r2, r0, #0 + cmp r2, #0 + beq _08045EBA + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2, #0x36] + subs r0, #0xc + strh r0, [r2, #0x36] + adds r0, r2, #0 + movs r1, #2 + bl sub_0805E3A0 +_08045EBA: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0800445C + pop {r4, pc} + + thumb_func_start sub_08045EC8 +sub_08045EC8: @ 0x08045EC8 + push {lr} + movs r1, #0 + bl sub_0807DD94 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08045ED4 +sub_08045ED4: @ 0x08045ED4 + push {lr} + bl sub_08045FA0 + pop {pc} + + thumb_func_start sub_08045EDC +sub_08045EDC: @ 0x08045EDC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + adds r1, r0, #0 + cmp r1, #0 + bne _08045F00 + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x20 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r0, r4, #0 + bl sub_08045F98 + adds r0, r4, #0 + movs r1, #2 + bl sub_08046030 +_08045F00: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0804604C + adds r3, r4, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r2, #1 + ands r2, r1 + cmp r2, #0 + beq _08045F38 + movs r0, #0xfe + ands r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080954AC + ldr r0, _08045F34 @ =0x0000018D + bl sub_08004488 + b _08045F4E + .align 2, 0 +_08045F34: .4byte 0x0000018D +_08045F38: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08045F4E + movs r0, #5 + strb r0, [r4, #0xc] + strb r2, [r4, #0xd] + adds r0, r4, #0 + movs r1, #1 + bl sub_08046030 +_08045F4E: + pop {r4, pc} + + thumb_func_start nullsub_25 +nullsub_25: @ 0x08045F50 + bx lr + .align 2, 0 + + thumb_func_start sub_08045F54 +sub_08045F54: @ 0x08045F54 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r0, #1 + bl sub_08049DF4 + adds r4, r0, #0 + cmp r4, #0 + beq _08045F90 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0x20 + movs r3, #0x20 + bl sub_080041A0 + cmp r0, #0 + bne _08045F90 + cmp r5, #2 + beq _08045F94 + movs r3, #0x50 + cmp r5, #0 + beq _08045F82 + movs r3, #0x58 +_08045F82: + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r3, #0 + bl sub_080041A0 + cmp r0, #0 + bne _08045F94 +_08045F90: + movs r0, #0 + b _08045F96 +_08045F94: + movs r0, #1 +_08045F96: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08045F98 +sub_08045F98: @ 0x08045F98 + movs r1, #0x10 + strb r1, [r0, #0x15] + movs r0, #1 + bx lr + + thumb_func_start sub_08045FA0 +sub_08045FA0: @ 0x08045FA0 + push {lr} + adds r2, r0, #0 + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3] + adds r0, r2, #0 + adds r0, #0x78 + ldrh r0, [r0] + movs r1, #0 + strh r0, [r2, #0x2e] + adds r0, r2, #0 + adds r0, #0x7a + ldrh r0, [r0] + strh r0, [r2, #0x32] + adds r0, r2, #0 + adds r0, #0x62 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, r2, #0 + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08045FF0 +sub_08045FF0: @ 0x08045FF0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08045F98 + adds r0, r4, #0 + movs r1, #1 + bl sub_08046030 + pop {r4, pc} + + thumb_func_start sub_08046030 +sub_08046030: @ 0x08046030 + push {lr} + adds r3, r1, #0 + ldrb r1, [r0, #0x15] + lsrs r1, r1, #3 + ldr r2, _08046048 @ =gUnk_080D1A38 + adds r3, r3, r2 + ldrb r2, [r3] + orrs r1, r2 + bl sub_08004260 + pop {pc} + .align 2, 0 +_08046048: .4byte gUnk_080D1A38 + + thumb_func_start sub_0804604C +sub_0804604C: @ 0x0804604C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _08046070 + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bhi _08046070 + ldr r1, _08046074 @ =gUnk_080D1A3E + ldrb r0, [r2, #0xe] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x63 + strb r1, [r0] +_08046070: + pop {pc} + .align 2, 0 +_08046074: .4byte gUnk_080D1A3E + + thumb_func_start sub_08046078 +sub_08046078: @ 0x08046078 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _08046114 @ =gUnk_03003F80 + adds r0, #0x27 + movs r1, #0 + strb r1, [r0] + ldr r4, _08046118 @ =gUnk_080D1A4E + ldr r6, _0804611C @ =gUnk_03000BF0 + movs r5, #4 +_0804608A: + adds r0, r7, #0 + movs r1, #2 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080460AE + ldrh r0, [r4] + ldrh r2, [r6, #6] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + adds r4, #2 + ldrh r0, [r4] + ldrh r2, [r6, #8] + adds r0, r0, r2 + strh r0, [r1, #0x32] + adds r4, #2 +_080460AE: + subs r5, #1 + cmp r5, #0 + bge _0804608A + movs r0, #0xb7 + lsls r0, r0, #1 + bl sub_08004488 + ldr r0, _08046120 @ =0x000007A2 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08046124 @ =0x000007A3 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08046128 @ =0x000007A5 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804612C @ =0x000007A6 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08046130 @ =0x000007A7 + movs r1, #1 + bl sub_0807BA8C + adds r0, r7, #0 + movs r1, #0x43 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08046102 + adds r0, r7, #0 + bl sub_0806FA24 + movs r0, #0xc2 + lsls r0, r0, #1 + bl sub_08004488 +_08046102: + ldr r1, [r7, #0x54] + cmp r1, #0 + beq _0804610C + movs r0, #0xff + strb r0, [r1, #0xc] +_0804610C: + adds r0, r7, #0 + bl sub_0804AA1C + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08046114: .4byte gUnk_03003F80 +_08046118: .4byte gUnk_080D1A4E +_0804611C: .4byte gUnk_03000BF0 +_08046120: .4byte 0x000007A2 +_08046124: .4byte 0x000007A3 +_08046128: .4byte 0x000007A5 +_0804612C: .4byte 0x000007A6 +_08046130: .4byte 0x000007A7 + + thumb_func_start sub_08046134 +sub_08046134: @ 0x08046134 + push {lr} + ldr r2, _08046148 @ =gUnk_080D1A64 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08046148: .4byte gUnk_080D1A64 + + thumb_func_start sub_0804614C +sub_0804614C: @ 0x0804614C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _08046248 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x3d + bhi _08046244 + movs r0, #0x22 + bl sub_080A7EE0 + adds r1, r0, #0 + movs r4, #0 + strb r4, [r1, #0xa] + str r6, [r1, #0x50] + ldr r0, [r6, #0x64] + str r1, [r0, #0x14] + movs r0, #0x63 + movs r1, #0 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + ldr r0, [r6, #0x64] + str r1, [r0, #0x10] + movs r0, #0x61 + movs r1, #0 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #0x61 + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #0x61 + movs r1, #2 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #0x61 + movs r1, #3 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #0x61 + movs r1, #4 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #0x61 + movs r1, #5 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #0x61 + movs r1, #6 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #0x61 + movs r1, #7 + bl sub_0804AA60 + adds r1, r0, #0 + str r6, [r1, #0x50] + movs r0, #1 + strb r0, [r6, #0xc] + ldrb r2, [r6, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r6, #0x1b] + ldrb r0, [r6, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r6, #0x19] + adds r0, r6, #0 + adds r0, #0x38 + movs r5, #2 + strb r5, [r0] + adds r0, #0x40 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] + adds r1, r6, #0 + adds r1, #0x70 + movs r0, #0x3c + strh r0, [r1] + ldr r0, _0804624C @ =gUnk_02019EE0 + movs r4, #0x80 + lsls r4, r4, #8 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _08046250 @ =gUnk_02002F00 + adds r1, r4, #0 + bl sub_0801D630 + adds r0, r6, #0 + movs r1, #0 + bl sub_0804660C + adds r0, r6, #0 + bl sub_080464C0 + ldr r0, _08046254 @ =gLinkEntity + adds r1, r0, #0 + adds r1, #0x38 + strb r5, [r1] + bl sub_08016A04 + ldr r1, _08046258 @ =sub_08046498 + adds r0, r6, #0 + movs r2, #0 + bl sub_08052D74 +_08046244: + pop {r4, r5, r6, pc} + .align 2, 0 +_08046248: .4byte gUnk_03003DBC +_0804624C: .4byte gUnk_02019EE0 +_08046250: .4byte gUnk_02002F00 +_08046254: .4byte gLinkEntity +_08046258: .4byte sub_08046498 + + thumb_func_start sub_0804625C +sub_0804625C: @ 0x0804625C + push {r4, lr} + adds r4, r0, #0 + adds r3, r4, #0 + adds r3, #0x79 + ldrb r2, [r3] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08046286 + movs r1, #0x7f + ands r1, r2 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r3] + movs r0, #3 + ands r1, r0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_0804660C + b _0804629A +_08046286: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _0804629A + movs r0, #0xbf + ands r0, r2 + strb r0, [r3] + adds r0, r4, #0 + bl sub_080464C0 +_0804629A: + bl sub_080465C8 + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r0, #0x6c + ldrh r1, [r0] + movs r3, #0x38 + ands r3, r1 + cmp r3, #0 + beq _080462D6 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x7a + movs r2, #0 + strh r1, [r0] + adds r0, #2 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + adds r1, r4, #0 + adds r1, #0x70 + movs r0, #0x3c + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + b _0804632A +_080462D6: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08046302 + movs r0, #3 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x70 + movs r1, #0 + movs r0, #0x3c + strh r0, [r2] + strb r1, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x7a + strh r3, [r0] + adds r0, #2 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #3 + strb r1, [r0] + b _0804632A +_08046302: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0804632A + adds r1, r4, #0 + adds r1, #0x70 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0804632A + movs r0, #0xb4 + lsls r0, r0, #1 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #1 + bl sub_08046634 +_0804632A: + pop {r4, pc} + + thumb_func_start sub_0804632C +sub_0804632C: @ 0x0804632C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080465C8 + adds r0, r4, #0 + bl sub_080466A8 + adds r3, r4, #0 + adds r3, #0x7a + ldrh r0, [r3] + adds r2, r0, #1 + movs r5, #0 + strh r2, [r3] + lsls r1, r2, #0x10 + ldr r0, _08046360 @ =0x059F0000 + cmp r1, r0 + bls _08046364 + movs r0, #0 + strh r0, [r3] + adds r0, r4, #0 + adds r0, #0x7c + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #3 + b _08046388 + .align 2, 0 +_08046360: .4byte 0x059F0000 +_08046364: + lsls r0, r2, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x78 + bne _08046374 + adds r0, r4, #0 + bl sub_08046668 + b _0804638A +_08046374: + movs r0, #0xa5 + lsls r0, r0, #3 + cmp r1, r0 + bne _0804638A + adds r0, r4, #0 + adds r0, #0x78 + strb r5, [r0] + adds r0, #5 + strb r5, [r0] + adds r0, #2 +_08046388: + strb r5, [r0] +_0804638A: + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r0, #0x6c + ldrh r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080463B8 + adds r1, r4, #0 + adds r1, #0x70 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080463B8 + movs r0, #0xb4 + lsls r0, r0, #1 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08046634 +_080463B8: + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r0, #0x6c + ldrh r1, [r0] + movs r0, #0x38 + ands r0, r1 + cmp r0, #0 + bne _080463E0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x70 + movs r2, #0 + movs r0, #0x3c + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strb r2, [r0] + adds r0, #8 + strb r2, [r0] +_080463E0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080463E4 +sub_080463E4: @ 0x080463E4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080465C8 + adds r1, r4, #0 + adds r1, #0x70 + ldrh r0, [r1] + subs r0, #1 + movs r5, #0 + strh r0, [r1] + ldr r2, _0804643C @ =0x0000FFFF + adds r6, r2, #0 + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08046410 + movs r0, #0xb4 + lsls r0, r0, #1 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #1 + bl sub_08046634 +_08046410: + adds r0, r4, #0 + bl sub_080466A8 + adds r3, r4, #0 + adds r3, #0x7a + ldrh r0, [r3] + adds r2, r0, #1 + strh r2, [r3] + adds r0, r2, #0 + ands r0, r6 + ldr r1, _08046440 @ =0x0000059F + cmp r0, r1 + bls _08046444 + movs r0, #0 + strh r0, [r3] + adds r0, r4, #0 + adds r0, #0x7c + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #3 + b _08046468 + .align 2, 0 +_0804643C: .4byte 0x0000FFFF +_08046440: .4byte 0x0000059F +_08046444: + lsls r0, r2, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x78 + bne _08046454 + adds r0, r4, #0 + bl sub_08046668 + b _0804646A +_08046454: + movs r0, #0xa5 + lsls r0, r0, #3 + cmp r1, r0 + bne _0804646A + adds r0, r4, #0 + adds r0, #0x78 + strb r5, [r0] + adds r0, #5 + strb r5, [r0] + adds r0, #2 +_08046468: + strb r5, [r0] +_0804646A: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _08046494 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x70 + movs r2, #0 + movs r0, #0x3c + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x78 + strb r2, [r0] + adds r0, #8 + strb r2, [r0] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 +_08046494: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08046498 +sub_08046498: @ 0x08046498 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080464B8 @ =gUnk_02019EE0 + movs r4, #0x80 + lsls r4, r4, #8 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _080464BC @ =gUnk_02002F00 + adds r1, r4, #0 + bl sub_0801D630 + adds r0, r5, #0 + bl sub_080464C0 + pop {r4, r5, pc} + .align 2, 0 +_080464B8: .4byte gUnk_02019EE0 +_080464BC: .4byte gUnk_02002F00 + + thumb_func_start sub_080464C0 +sub_080464C0: @ 0x080464C0 + push {r4, r5, r6, lr} + ldr r1, _08046508 @ =gUnk_080D1A74 + ldrb r0, [r0, #0x14] + lsrs r0, r0, #6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_080197D4 + bl sub_08046518 + movs r6, #0x20 + ldr r4, _0804650C @ =gUnk_02019EE0 + ldr r0, _08046510 @ =0x00003260 + adds r5, r4, r0 +_080464DE: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x40 + bl sub_0801D66C + movs r0, #0x80 + lsls r0, r0, #1 + adds r5, r5, r0 + adds r4, #0x40 + subs r6, #1 + cmp r6, #0 + bne _080464DE + ldr r0, _0804650C @ =gUnk_02019EE0 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r1, _08046514 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + pop {r4, r5, r6, pc} + .align 2, 0 +_08046508: .4byte gUnk_080D1A74 +_0804650C: .4byte gUnk_02019EE0 +_08046510: .4byte 0x00003260 +_08046514: .4byte gUnk_02000070 + + thumb_func_start sub_08046518 +sub_08046518: @ 0x08046518 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r1, _080465AC @ =gUnk_02010654 + ldr r2, _080465B0 @ =0xFFFFBCB0 + adds r0, r1, r2 + ldr r3, _080465B4 @ =0xFFFFECB0 + adds r2, r1, r3 + ldr r7, _080465B8 @ =0x00006658 + adds r7, r1, r7 + str r7, [sp, #4] + ldr r3, _080465BC @ =0xFFFFD658 + adds r6, r1, r3 + movs r1, #0x10 +_0804653A: + movs r5, #0x10 + movs r7, #0x80 + adds r7, r7, r0 + mov sl, r7 + adds r3, r2, #0 + adds r3, #0x80 + str r3, [sp] + ldr r7, [sp, #4] + adds r7, #0x40 + mov r8, r7 + movs r3, #0x40 + adds r3, r3, r6 + mov sb, r3 + subs r1, #1 + mov ip, r1 + adds r3, r0, #0 + adds r3, #0x20 + adds r4, r2, #0 + adds r4, #0x20 +_08046560: + ldrh r0, [r3] + strh r0, [r4] + ldrh r0, [r3] + lsls r0, r0, #1 + ldr r7, _080465AC @ =gUnk_02010654 + adds r0, r0, r7 + ldrh r1, [r0] + ldr r0, [sp, #4] + adds r2, r0, r5 + ldr r7, _080465C0 @ =gUnk_080B37A0 + adds r0, r1, r7 + ldrb r0, [r0] + strb r0, [r2] + adds r2, r6, r5 + ldr r0, _080465C4 @ =gUnk_080B3E80 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r2] + subs r3, #2 + subs r4, #2 + subs r5, #1 + cmp r5, #0 + bne _08046560 + mov r0, sl + ldr r2, [sp] + mov r1, r8 + str r1, [sp, #4] + mov r6, sb + mov r1, ip + cmp r1, #0 + bne _0804653A + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080465AC: .4byte gUnk_02010654 +_080465B0: .4byte 0xFFFFBCB0 +_080465B4: .4byte 0xFFFFECB0 +_080465B8: .4byte 0x00006658 +_080465BC: .4byte 0xFFFFD658 +_080465C0: .4byte gUnk_080B37A0 +_080465C4: .4byte gUnk_080B3E80 + + thumb_func_start sub_080465C8 +sub_080465C8: @ 0x080465C8 + push {r4, lr} + ldr r3, _080465FC @ =gLinkEntity + movs r0, #0x2e + ldrsh r2, [r3, r0] + ldr r1, _08046600 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #3 + movs r4, #0x32 + ldrsh r0, [r3, r4] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #3 + ldr r1, _08046604 @ =gUnk_02019EE0 + lsls r0, r0, #7 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080465F8 + ldr r1, _08046608 @ =gUnk_03003F80 + movs r0, #1 + strb r0, [r1, #0x14] +_080465F8: + pop {r4, pc} + .align 2, 0 +_080465FC: .4byte gLinkEntity +_08046600: .4byte gUnk_03000BF0 +_08046604: .4byte gUnk_02019EE0 +_08046608: .4byte gUnk_03003F80 + + thumb_func_start sub_0804660C +sub_0804660C: @ 0x0804660C + push {r4, lr} + strb r1, [r0, #0x14] + lsrs r1, r1, #5 + lsls r1, r1, #1 + ldr r2, _0804662C @ =gUnk_080D1A84 + adds r1, r1, r2 + ldr r3, _08046630 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + ldrh r4, [r1] + adds r2, r2, r4 + strh r2, [r0, #0x2e] + ldrh r2, [r3, #8] + ldrh r1, [r1, #2] + adds r2, r2, r1 + strh r2, [r0, #0x32] + pop {r4, pc} + .align 2, 0 +_0804662C: .4byte gUnk_080D1A84 +_08046630: .4byte gUnk_03000BF0 + + thumb_func_start sub_08046634 +sub_08046634: @ 0x08046634 + push {r4, r5, lr} + adds r5, r0, #0 + cmp r1, #0 + bne _08046650 + ldr r4, _0804664C @ =gUnk_080D1AF4 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + adds r1, r1, r4 + ldrb r1, [r1] + b _0804665A + .align 2, 0 +_0804664C: .4byte gUnk_080D1AF4 +_08046650: + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #7 + ands r1, r0 +_0804665A: + ldrb r2, [r5, #0x14] + lsrs r2, r2, #3 + adds r0, r1, #0 + movs r1, #0 + bl sub_080A1ED0 + pop {r4, r5, pc} + + thumb_func_start sub_08046668 +sub_08046668: @ 0x08046668 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _080466A0 + adds r5, r4, #0 + adds r5, #0x78 + ldrb r0, [r5] + cmp r0, #0xff + beq _080466A0 + bl sub_08000E50 + ldr r2, _080466A4 @ =gUnk_080D1AF8 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + movs r1, #0 + strb r0, [r5] + adds r0, r4, #0 + adds r0, #0x7f + strb r1, [r0] + adds r0, #3 + strb r1, [r0] + adds r0, r4, #0 + bl sub_080467DC +_080466A0: + pop {r4, r5, pc} + .align 2, 0 +_080466A4: .4byte gUnk_080D1AF8 + + thumb_func_start sub_080466A8 +sub_080466A8: @ 0x080466A8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrb r2, [r0] + cmp r2, #0 + beq _0804674C + adds r0, #1 + ldrb r1, [r0] + orrs r1, r2 + strb r1, [r0] + ldrb r1, [r4, #0xe] + adds r5, r0, #0 + cmp r1, #0 + bne _080466D0 + subs r0, #5 + ldrb r0, [r0] + cmp r0, #0xff + beq _080466D0 + movs r0, #4 + strb r0, [r4, #0xe] +_080466D0: + ldrb r0, [r5] + bl sub_08000E62 + cmp r0, #2 + bls _0804674C + movs r0, #0 + strb r0, [r4, #0xe] + strb r0, [r5] + adds r7, r4, #0 + adds r7, #0x78 + subs r0, #1 + adds r6, r0, #0 + movs r0, #0xff + strb r0, [r7] + adds r0, #0x28 + bl sub_080A3268 + adds r5, r4, #0 + adds r5, #0x45 + ldrb r0, [r5] + cmp r0, #0 + beq _08046746 + movs r0, #8 + movs r1, #0 + bl sub_08080964 + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ands r0, r6 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xc + bhi _0804671E + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] +_0804671E: + ldrb r0, [r5] + cmp r0, #0 + bne _08046730 + strb r0, [r7] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0xa5 + lsls r0, r0, #3 + b _08046744 +_08046730: + adds r1, r4, #0 + adds r1, #0x7f + ldrb r0, [r1] + cmp r0, #0 + bne _08046746 + movs r0, #1 + strb r0, [r1] + subs r1, #5 + movs r0, #0x87 + lsls r0, r0, #3 +_08046744: + strh r0, [r1] +_08046746: + adds r0, r4, #0 + bl sub_080467DC +_0804674C: + ldrb r1, [r4, #0xe] + cmp r1, #0 + beq _080467CC + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + cmp r0, #0xff + beq _080467CC + subs r0, r1, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080467CC + adds r2, r4, #0 + adds r2, #0x80 + adds r3, r4, #0 + adds r3, #0x7d + ldrb r0, [r2] + ldrb r1, [r3] + orrs r0, r1 + strb r0, [r2] + strb r5, [r3] + adds r0, r4, #0 + bl sub_080467DC + ldr r0, [r4, #0x64] + adds r0, #0x3c + ldrb r1, [r0] + adds r0, r1, #0 + cmp r0, #0xff + beq _080467CC + ldr r2, _080467D8 @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x3e + strb r1, [r0] + adds r1, r2, #0 + adds r1, #0x3d + movs r0, #0xf4 + strb r0, [r1] + adds r1, #5 + movs r0, #0xa + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x2c + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _080467CC + ldr r0, [r4, #0x64] + ldrh r0, [r0, #0x38] + strh r0, [r2, #0x2e] + ldr r0, [r4, #0x64] + ldrh r0, [r0, #0x3a] + strh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08016A04 +_080467CC: + adds r1, r4, #0 + adds r1, #0x7c + movs r0, #0 + strb r0, [r1] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080467D8: .4byte gLinkEntity + + thumb_func_start sub_080467DC +sub_080467DC: @ 0x080467DC + push {lr} + movs r1, #0 + ldr r0, [r0, #0x64] + movs r2, #0 + adds r0, #0x18 +_080467E6: + stm r0!, {r2} + adds r1, #1 + cmp r1, #7 + bls _080467E6 + pop {pc} + + thumb_func_start sub_080467F0 +sub_080467F0: @ 0x080467F0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08046810 + adds r0, r4, #0 + adds r0, #0x7d + ldrb r1, [r0] + movs r0, #3 + ands r1, r0 + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_08046810: + ldr r1, _0804688C @ =gUnk_080D1AFC + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xc] + adds r5, r4, #0 + adds r5, #0x78 + cmp r0, #7 + beq _08046836 + ldrh r3, [r5] + adds r0, r4, #0 + movs r1, #0xaa + movs r2, #0xaa + bl sub_0805EC9C +_08046836: + ldrh r0, [r5] + lsrs r0, r0, #8 + rsbs r0, r0, #0 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08048004 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r1, r4, #0 + adds r1, #0x7d + strb r0, [r1] + ldrb r2, [r4, #0x18] + lsls r0, r2, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08046878 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldr r1, _08046890 @ =gUnk_03000BF0 + movs r3, #0xc + ldrsh r1, [r1, r3] + subs r0, r0, r1 + adds r0, #0x30 + movs r1, #0x80 + lsls r1, r1, #1 + cmp r0, r1 + bls _08046878 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r4, #0x18] +_08046878: + ldr r2, _08046894 @ =gLinkEntity + ldrh r1, [r2, #0x2e] + adds r0, r4, #0 + adds r0, #0x84 + strh r1, [r0] + ldrh r1, [r2, #0x32] + adds r0, #2 + strh r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_0804688C: .4byte gUnk_080D1AFC +_08046890: .4byte gUnk_03000BF0 +_08046894: .4byte gLinkEntity + + thumb_func_start sub_08046898 +sub_08046898: @ 0x08046898 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x22 + bl sub_080A7EE0 + adds r1, r0, #0 + cmp r1, #0 + beq _0804690C + movs r4, #0 + movs r3, #1 + movs r0, #1 + strb r0, [r1, #0xa] + str r5, [r1, #0x50] + str r1, [r5, #0x54] + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + ldrb r1, [r5, #0x19] + movs r0, #3 + orrs r1, r0 + ldrb r2, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r5, #0x18] + ldrb r2, [r5, #0x1b] + movs r3, #0x3f + adds r0, r3, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r5, #0x1b] + ands r1, r3 + orrs r1, r2 + strb r1, [r5, #0x19] + adds r2, r5, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x7c + strb r4, [r0] + subs r0, #4 + strh r4, [r0] + adds r0, #2 + strh r4, [r0] + subs r0, #8 + strh r4, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC +_0804690C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08046910 +sub_08046910: @ 0x08046910 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0804692C @ =gUnk_080D1B1C + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_0804692C: .4byte gUnk_080D1B1C + + thumb_func_start sub_08046930 +sub_08046930: @ 0x08046930 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08046948 + movs r0, #5 + strb r0, [r4, #0xd] + movs r0, #0x20 + strb r0, [r4, #0x15] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] +_08046948: + adds r0, r4, #0 + bl sub_08047D88 + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _0804696A + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + strb r1, [r4, #0x14] + strb r1, [r4, #0x15] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] +_0804696A: + pop {r4, pc} + + thumb_func_start sub_0804696C +sub_0804696C: @ 0x0804696C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08047E48 + ldr r5, _080469C8 @ =gUnk_03000BF0 + ldrh r0, [r5, #8] + movs r1, #0x98 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080469A6 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x80 + strb r0, [r4, #0x15] + adds r0, #0x80 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + movs r0, #0x2e + bl sub_080A3268 +_080469A6: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080469C6 + ldrh r0, [r5, #8] + movs r1, #0x96 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080469C6 + movs r0, #0 + strb r0, [r4, #0xe] + movs r0, #0xf7 + bl sub_080A3268 +_080469C6: + pop {r4, r5, pc} + .align 2, 0 +_080469C8: .4byte gUnk_03000BF0 + + thumb_func_start sub_080469CC +sub_080469CC: @ 0x080469CC + push {r4, lr} + adds r4, r0, #0 + bl sub_08047E48 + ldr r0, _080469F0 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + movs r1, #0x84 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _080469EE + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x90 + strb r0, [r4, #0x15] +_080469EE: + pop {r4, pc} + .align 2, 0 +_080469F0: .4byte gUnk_03000BF0 + + thumb_func_start sub_080469F4 +sub_080469F4: @ 0x080469F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08047E48 + ldr r0, _08046A2C @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + movs r1, #0xa4 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _08046A28 + movs r0, #4 + strb r0, [r4, #0xd] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] +_08046A28: + pop {r4, pc} + .align 2, 0 +_08046A2C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08046A30 +sub_08046A30: @ 0x08046A30 + push {r4, lr} + adds r4, r0, #0 + bl sub_08047D88 + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r0, #0x6c + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08046A50 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_08046A50: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08046A54 +sub_08046A54: @ 0x08046A54 + push {r4, lr} + adds r4, r0, #0 + bl sub_08047E48 + ldr r0, _08046A74 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + movs r1, #0xe0 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _08046A72 + movs r0, #6 + strb r0, [r4, #0xd] +_08046A72: + pop {r4, pc} + .align 2, 0 +_08046A74: .4byte gUnk_03000BF0 + + thumb_func_start sub_08046A78 +sub_08046A78: @ 0x08046A78 + push {r4, lr} + adds r4, r0, #0 + bl sub_08047D88 + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r0, #0x6c + ldrh r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08046A98 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_08046A98: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08046A9C +sub_08046A9C: @ 0x08046A9C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #1 + bne _08046ABA + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #1 + bne _08046ABA + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_08046ABA: + ldr r1, _08046AE4 @ =gUnk_080D1B38 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _08046AE2 + movs r1, #0 + movs r0, #6 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_08046AE2: + pop {r4, pc} + .align 2, 0 +_08046AE4: .4byte gUnk_080D1B38 + + thumb_func_start sub_08046AE8 +sub_08046AE8: @ 0x08046AE8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + ldrb r1, [r0, #0x14] + lsrs r1, r1, #5 + adds r0, r4, #0 + bl sub_08048178 + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08047D88 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08046B18 +sub_08046B18: @ 0x08046B18 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r1, [r1] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + adds r1, r0, #0 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _08046B6C + subs r0, r1, r0 + movs r1, #0xff + ands r0, r1 + cmp r0, #0x80 + bls _08046B54 + adds r1, r4, #0 + adds r1, #0x76 + ldr r2, _08046B50 @ =0xFFFFFF00 + b _08046B5C + .align 2, 0 +_08046B50: .4byte 0xFFFFFF00 +_08046B54: + adds r1, r4, #0 + adds r1, #0x76 + movs r2, #0x80 + lsls r2, r2, #1 +_08046B5C: + adds r0, r2, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x15] + b _08046B70 +_08046B6C: + movs r0, #2 + strb r0, [r4, #0xd] +_08046B70: + adds r0, r4, #0 + bl sub_08047D88 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + pop {r4, pc} + + thumb_func_start sub_08046B8C +sub_08046B8C: @ 0x08046B8C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x80 + ldrh r1, [r5] + adds r6, r4, #0 + adds r6, #0x82 + ldrh r2, [r6] + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _08046BD8 + movs r0, #3 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r1, _08046BD4 @ =gUnk_03000BF0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r5] + adds r2, #0x10 + adds r0, r2, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r6] + adds r0, r4, #0 + bl sub_08047D88 + b _08046C02 + .align 2, 0 +_08046BD4: .4byte gUnk_03000BF0 +_08046BD8: + ldrh r0, [r5] + movs r3, #0x2e + ldrsh r1, [r4, r3] + subs r0, r0, r1 + ldrh r1, [r6] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 +_08046C02: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08046C04 +sub_08046C04: @ 0x08046C04 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r1, [r1] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + adds r1, r0, #0 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _08046C58 + subs r0, r1, r0 + movs r1, #0xff + ands r0, r1 + cmp r0, #0x80 + bls _08046C40 + adds r1, r4, #0 + adds r1, #0x76 + ldr r2, _08046C3C @ =0xFFFFFF00 + b _08046C48 + .align 2, 0 +_08046C3C: .4byte 0xFFFFFF00 +_08046C40: + adds r1, r4, #0 + adds r1, #0x76 + movs r2, #0x80 + lsls r2, r2, #1 +_08046C48: + adds r0, r2, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x15] + b _08046C6C +_08046C58: + movs r0, #4 + strb r0, [r4, #0xd] + adds r0, r1, #0 + adds r0, #0x20 + movs r1, #0xc0 + ands r0, r1 + lsrs r0, r0, #6 + adds r1, r4, #0 + adds r1, #0x70 + strh r0, [r1] +_08046C6C: + adds r0, r4, #0 + bl sub_08047D88 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + pop {r4, pc} + + thumb_func_start sub_08046C88 +sub_08046C88: @ 0x08046C88 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x80 + ldrh r1, [r5] + adds r6, r4, #0 + adds r6, #0x82 + ldrh r2, [r6] + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _08046CC0 + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + bl sub_08048158 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08048178 + adds r0, r4, #0 + bl sub_08047D88 + b _08046CEA +_08046CC0: + ldrh r0, [r5] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + ldrh r1, [r6] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 +_08046CEA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08046CEC +sub_08046CEC: @ 0x08046CEC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + bne _08046D0A + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #1 + bne _08046D0A + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_08046D0A: + ldr r1, _08046D40 @ =gUnk_080D1B4C + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r0, #0x6c + ldrh r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08046D3C + movs r0, #0 + movs r1, #2 + strb r1, [r4, #0xc] + strb r0, [r4, #0xd] + ldrh r0, [r4, #0x24] + strb r0, [r4, #0x14] +_08046D3C: + pop {r4, pc} + .align 2, 0 +_08046D40: .4byte gUnk_080D1B4C + + thumb_func_start sub_08046D44 +sub_08046D44: @ 0x08046D44 + push {lr} + mov ip, r0 + movs r0, #1 + mov r1, ip + strb r0, [r1, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1, #0x24] + ldr r0, [r1, #0x64] + ldr r0, [r0, #4] + ldrb r1, [r0, #0x14] + lsrs r1, r1, #5 + lsls r1, r1, #1 + ldr r0, _08046D90 @ =gUnk_080D1B60 + adds r1, r1, r0 + ldr r3, _08046D94 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + ldrh r2, [r1] + adds r0, r0, r2 + mov r2, ip + adds r2, #0x80 + strh r0, [r2] + ldrh r0, [r3, #8] + ldrh r1, [r1, #2] + adds r0, r0, r1 + mov r1, ip + adds r1, #0x82 + strh r0, [r1] + mov r1, ip + ldrb r0, [r1, #0x15] + lsls r0, r0, #8 + adds r1, #0x76 + strh r0, [r1] + mov r0, ip + bl sub_08047D88 + pop {pc} + .align 2, 0 +_08046D90: .4byte gUnk_080D1B60 +_08046D94: .4byte gUnk_03000BF0 + + thumb_func_start sub_08046D98 +sub_08046D98: @ 0x08046D98 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r1, [r1] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + adds r1, r0, #0 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _08046DEC + subs r0, r1, r0 + movs r1, #0xff + ands r0, r1 + cmp r0, #0x80 + bls _08046DD4 + adds r1, r4, #0 + adds r1, #0x76 + ldr r2, _08046DD0 @ =0xFFFFFF00 + b _08046DDC + .align 2, 0 +_08046DD0: .4byte 0xFFFFFF00 +_08046DD4: + adds r1, r4, #0 + adds r1, #0x76 + movs r2, #0x80 + lsls r2, r2, #1 +_08046DDC: + adds r0, r2, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x15] + b _08046DF0 +_08046DEC: + movs r0, #2 + strb r0, [r4, #0xd] +_08046DF0: + adds r0, r4, #0 + bl sub_08047D88 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + pop {r4, pc} + + thumb_func_start sub_08046E0C +sub_08046E0C: @ 0x08046E0C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x80 + ldrh r1, [r5] + adds r6, r4, #0 + adds r6, #0x82 + ldrh r2, [r6] + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _08046E3C + movs r0, #3 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08047D88 + b _08046E66 +_08046E3C: + ldrh r0, [r5] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + ldrh r1, [r6] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 +_08046E66: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08046E68 +sub_08046E68: @ 0x08046E68 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x64] + ldr r0, [r0, #4] + ldrb r1, [r0, #0x14] + movs r0, #0x80 + adds r6, r0, #0 + eors r6, r1 + ldrb r0, [r5, #0x15] + cmp r6, r0 + beq _08046EC6 + subs r0, r6, r0 + movs r1, #0xff + ands r0, r1 + cmp r0, #0x80 + bls _08046E94 + adds r1, r5, #0 + adds r1, #0x76 + ldr r2, _08046E90 @ =0xFFFFFF00 + b _08046E9C + .align 2, 0 +_08046E90: .4byte 0xFFFFFF00 +_08046E94: + adds r1, r5, #0 + adds r1, #0x76 + movs r2, #0x80 + lsls r2, r2, #1 +_08046E9C: + adds r0, r2, #0 + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_08047D88 + ldrb r0, [r5, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r5, #0 + bl sub_08047EA4 + b _08046EEE +_08046EC6: + movs r0, #4 + strb r0, [r5, #0xd] + movs r0, #0x3f + strb r0, [r5, #0xe] + movs r4, #1 + strb r4, [r5, #0xf] + bl sub_08000E50 + ldr r1, _08046EF0 @ =gUnk_080D1B70 + ands r0, r4 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + adds r0, r0, r6 + movs r1, #0xc0 + ands r0, r1 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_08047D88 +_08046EEE: + pop {r4, r5, r6, pc} + .align 2, 0 +_08046EF0: .4byte gUnk_080D1B70 + + thumb_func_start sub_08046EF4 +sub_08046EF4: @ 0x08046EF4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08046F12 + movs r0, #0x7f + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x15] + movs r1, #0x80 + eors r0, r1 + strb r0, [r4, #0x15] +_08046F12: + ldr r2, _08046F60 @ =gUnk_080D1B74 + ldrb r0, [r4, #0xe] + lsrs r0, r0, #3 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r4, #0x24] + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r3 + cmp r0, #0 + bne _08046F58 + bl sub_08000E50 + movs r1, #0x38 + ands r0, r1 + adds r0, #0x78 + strb r0, [r4, #0xf] + movs r0, #0x23 + bl sub_080A7EE0 + adds r2, r0, #0 + cmp r2, #0 + beq _08046F58 + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + str r4, [r2, #0x50] + adds r0, r2, #0 + bl sub_08016A04 +_08046F58: + adds r0, r4, #0 + bl sub_08047E48 + pop {r4, pc} + .align 2, 0 +_08046F60: .4byte gUnk_080D1B74 + + thumb_func_start sub_08046F64 +sub_08046F64: @ 0x08046F64 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + bne _08046F82 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #1 + bne _08046F82 + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_08046F82: + ldr r1, _08046FE4 @ =gUnk_080D1B94 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08046FC8 + movs r0, #0x78 + strh r0, [r1] + movs r0, #0x23 + bl sub_080A7EE0 + adds r2, r0, #0 + cmp r2, #0 + beq _08046FC8 + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + str r4, [r2, #0x50] + adds r0, r2, #0 + bl sub_08016A04 +_08046FC8: + ldr r0, [r4, #0x64] + ldr r0, [r0] + adds r0, #0x6c + ldrh r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08046FE0 + movs r1, #0 + movs r0, #5 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_08046FE0: + pop {r4, pc} + .align 2, 0 +_08046FE4: .4byte gUnk_080D1B94 + + thumb_func_start sub_08046FE8 +sub_08046FE8: @ 0x08046FE8 + push {lr} + adds r3, r0, #0 + movs r0, #1 + strb r0, [r3, #0xd] + movs r0, #0xe0 + lsls r0, r0, #1 + strh r0, [r3, #0x24] + adds r1, r3, #0 + adds r1, #0x7e + movs r0, #0x1e + strh r0, [r1] + ldr r2, _08047028 @ =gUnk_03000BF0 + movs r1, #0xa4 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r1, [r2, #6] + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x80 + strh r0, [r1] + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r2, [r2, #8] + adds r0, r0, r2 + adds r1, r3, #0 + adds r1, #0x82 + strh r0, [r1] + adds r0, r3, #0 + bl sub_08047D88 + pop {pc} + .align 2, 0 +_08047028: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804702C +sub_0804702C: @ 0x0804702C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r1, [r1] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + adds r3, r0, #0 + ldrb r2, [r4, #0x15] + subs r0, r2, r3 + adds r0, #2 + movs r1, #0xff + ands r0, r1 + cmp r0, #4 + bls _0804706C + subs r0, r3, r2 + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08047068 + subs r0, r2, #1 + b _0804706A +_08047068: + adds r0, r2, #1 +_0804706A: + strb r0, [r4, #0x15] +_0804706C: + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 + adds r0, r4, #0 + adds r0, #0x80 + ldrh r1, [r0] + adds r0, #2 + ldrh r2, [r0] + movs r0, #0x24 + ldrsh r3, [r4, r0] + asrs r3, r3, #0x10 + adds r3, #0x10 + adds r0, r4, #0 + bl sub_0806FCB8 + cmp r0, #0 + beq _080470B0 + movs r0, #2 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] +_080470B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080470B4 +sub_080470B4: @ 0x080470B4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x40 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _0804710A + subs r0, r1, r0 + movs r1, #0xff + ands r0, r1 + cmp r0, #0x80 + bls _080470D8 + adds r1, r4, #0 + adds r1, #0x76 + ldr r2, _080470D4 @ =0xFFFFFF00 + b _080470E0 + .align 2, 0 +_080470D4: .4byte 0xFFFFFF00 +_080470D8: + adds r1, r4, #0 + adds r1, #0x76 + movs r2, #0x80 + lsls r2, r2, #1 +_080470E0: + adds r0, r2, #0 + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08047D88 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + b _0804713A +_0804710A: + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + bl sub_08000E50 + ldr r2, _0804713C @ =gUnk_080D1BBC + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + adds r0, r4, #0 + bl sub_08047D88 +_0804713A: + pop {r4, pc} + .align 2, 0 +_0804713C: .4byte gUnk_080D1BBC + + thumb_func_start sub_08047140 +sub_08047140: @ 0x08047140 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x76 + adds r0, #0x74 + ldrh r0, [r0] + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r2, #0x15] + cmp r0, #0xbf + bls _08047164 + movs r0, #0xc0 + strb r0, [r2, #0x15] + movs r0, #4 + strb r0, [r2, #0xd] +_08047164: + ldrb r0, [r2, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r2, #0 + bl sub_08047DF0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804717C +sub_0804717C: @ 0x0804717C + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldr r0, _080471C0 @ =0x0000027F + cmp r1, r0 + bgt _08047192 + adds r0, r2, #0 + adds r0, #8 + strh r0, [r4, #0x24] +_08047192: + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 + ldr r0, _080471C4 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _080471BC + movs r0, #5 + strb r0, [r4, #0xd] +_080471BC: + pop {r4, pc} + .align 2, 0 +_080471C0: .4byte 0x0000027F +_080471C4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080471C8 +sub_080471C8: @ 0x080471C8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + movs r0, #0xc0 + lsls r0, r0, #1 + cmp r1, r0 + ble _080471E0 + adds r0, r2, #0 + subs r0, #0x10 + strh r0, [r4, #0x24] +_080471E0: + ldrb r0, [r4, #0x15] + cmp r0, #0xdf + bhi _080471EA + adds r0, #1 + strb r0, [r4, #0x15] +_080471EA: + ldrb r1, [r4, #0x15] + movs r5, #0x80 + lsls r5, r5, #1 + subs r1, r5, r1 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 + ldr r0, _0804722C @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + movs r1, #0xc8 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _08047238 + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + cmp r0, r5 + bls _08047234 + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _08047230 + movs r0, #6 + b _08047236 + .align 2, 0 +_0804722C: .4byte gUnk_03000BF0 +_08047230: + strb r1, [r4, #0xd] + b _08047238 +_08047234: + movs r0, #0 +_08047236: + strb r0, [r4, #0xd] +_08047238: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0804723C +sub_0804723C: @ 0x0804723C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + subs r0, #2 + strb r0, [r4, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xbf + bhi _08047266 + movs r0, #7 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0xc0 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x76 + movs r0, #0xc0 + lsls r0, r0, #8 + strh r0, [r1] +_08047266: + adds r0, r4, #0 + bl sub_08047D88 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08047284 +sub_08047284: @ 0x08047284 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x76 + ldrh r0, [r1] + subs r0, #0xe0 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r2, #0x15] + cmp r0, #0x3f + bhi _080472A4 + movs r0, #0x40 + strb r0, [r2, #0x15] + movs r0, #8 + strb r0, [r2, #0xd] +_080472A4: + ldrb r0, [r2, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r2, #0 + bl sub_08047DF0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080472BC +sub_080472BC: @ 0x080472BC + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldr r0, _08047308 @ =0x000002FF + cmp r1, r0 + bgt _080472D2 + adds r0, r2, #0 + adds r0, #8 + strh r0, [r4, #0x24] +_080472D2: + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 + ldr r0, _0804730C @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + movs r1, #0xac + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _08047306 + movs r0, #9 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] +_08047306: + pop {r4, pc} + .align 2, 0 +_08047308: .4byte 0x000002FF +_0804730C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08047310 +sub_08047310: @ 0x08047310 + push {lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x24] + movs r0, #0x24 + ldrsh r1, [r2, r0] + ldr r0, _08047364 @ =0x0000017F + cmp r1, r0 + bgt _08047326 + adds r0, r3, #0 + subs r0, #0x10 + strh r0, [r2, #0x24] +_08047326: + adds r1, r2, #0 + adds r1, #0x76 + ldr r3, _08047368 @ =0xFFFFFE30 + adds r0, r3, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r2, #0x15] + adds r0, #0x7f + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3f + bhi _0804734C + movs r0, #0xc0 + strb r0, [r2, #0x15] + movs r0, #4 + strb r0, [r2, #0xd] +_0804734C: + ldrb r0, [r2, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r2, #0 + bl sub_08047DF0 + pop {pc} + .align 2, 0 +_08047364: .4byte 0x0000017F +_08047368: .4byte 0xFFFFFE30 + + thumb_func_start sub_0804736C +sub_0804736C: @ 0x0804736C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #1 + bne _0804738A + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #1 + bne _0804738A + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_0804738A: + ldr r0, _080473B4 @ =gUnk_080D1BC0 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + bne _080473B0 + movs r0, #7 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_080473B0: + pop {r4, pc} + .align 2, 0 +_080473B4: .4byte gUnk_080D1BC0 + + thumb_func_start sub_080473B8 +sub_080473B8: @ 0x080473B8 + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x90 + lsls r1, r1, #1 + strh r1, [r0, #0x24] + ldr r3, _080473EC @ =gUnk_03000BF0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r2, #0 + ldrh r2, [r3, #6] + adds r1, r1, r2 + adds r2, r0, #0 + adds r2, #0x80 + strh r1, [r2] + movs r2, #0xe8 + lsls r2, r2, #1 + adds r1, r2, #0 + ldrh r3, [r3, #8] + adds r1, r1, r3 + adds r2, r0, #0 + adds r2, #0x82 + strh r1, [r2] + bl sub_08047D88 + pop {pc} + .align 2, 0 +_080473EC: .4byte gUnk_03000BF0 + + thumb_func_start sub_080473F0 +sub_080473F0: @ 0x080473F0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r1, [r1] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + adds r3, r0, #0 + ldrb r2, [r4, #0x15] + subs r0, r2, r3 + adds r0, #2 + movs r1, #0xff + ands r0, r1 + cmp r0, #4 + bls _08047444 + subs r1, r3, r2 + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08047438 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bge _08047434 + subs r0, r2, #2 + b _08047442 +_08047434: + subs r0, r2, #1 + b _08047442 +_08047438: + cmp r1, #1 + ble _08047440 + adds r0, r2, #2 + b _08047442 +_08047440: + adds r0, r2, #1 +_08047442: + strb r0, [r4, #0x15] +_08047444: + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047DF0 + adds r0, r4, #0 + adds r0, #0x80 + ldrh r1, [r0] + adds r0, #2 + ldrh r2, [r0] + adds r0, r4, #0 + movs r3, #8 + bl sub_0806FCB8 + cmp r0, #0 + beq _08047482 + movs r0, #2 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] +_08047482: + pop {r4, pc} + + thumb_func_start sub_08047484 +sub_08047484: @ 0x08047484 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x40 + ldrb r0, [r4, #0x15] + cmp r1, r0 + beq _080474DA + subs r0, r1, r0 + movs r1, #0xff + ands r0, r1 + cmp r0, #0x80 + bls _080474A8 + adds r1, r4, #0 + adds r1, #0x76 + ldr r2, _080474A4 @ =0xFFFFFF00 + b _080474B0 + .align 2, 0 +_080474A4: .4byte 0xFFFFFF00 +_080474A8: + adds r1, r4, #0 + adds r1, #0x76 + movs r2, #0x80 + lsls r2, r2, #1 +_080474B0: + adds r0, r2, #0 + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + ldrh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08047D88 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + b _08047504 +_080474DA: + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + strb r1, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x76 + movs r0, #0x80 + lsls r0, r0, #7 + strh r0, [r1] + subs r1, #2 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + adds r1, #0xa + movs r0, #0xf0 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08047D88 +_08047504: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08047508 +sub_08047508: @ 0x08047508 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _0804754C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + movs r1, #0xd0 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _0804759A + ldrb r1, [r4, #0x15] + cmp r1, #0 + bne _08047550 + ldrh r0, [r2, #8] + movs r1, #0x82 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _0804759A + adds r0, r4, #0 + adds r0, #0x74 + ldrh r1, [r0] + rsbs r1, r1, #0 + strh r1, [r0] + adds r2, r4, #0 + adds r2, #0x76 + ldrh r0, [r2] + adds r0, r0, r1 + strh r0, [r2] + lsrs r0, r0, #8 + b _08047598 + .align 2, 0 +_0804754C: .4byte gUnk_03000BF0 +_08047550: + adds r0, r4, #0 + adds r0, #0x74 + movs r3, #0 + ldrsh r2, [r0, r3] + cmp r2, #0 + bge _0804757E + adds r3, r4, #0 + adds r3, #0x76 + ldrh r0, [r3] + adds r0, r0, r2 + strh r0, [r3] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r4, #0x15] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0804759A + movs r0, #0 + strb r0, [r4, #0x15] + movs r0, #0 + strh r0, [r3] + b _0804759A +_0804757E: + cmp r1, #0x3f + bhi _0804759A + adds r1, r4, #0 + adds r1, #0x76 + ldrh r0, [r1] + adds r0, r0, r2 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r4, #0x15] + cmp r0, #0x3f + bls _0804759A + movs r0, #0x40 +_08047598: + strb r0, [r4, #0x15] +_0804759A: + adds r0, r4, #0 + bl sub_08047E48 + ldr r0, _080475F0 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + movs r1, #0xa0 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _080475CA + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x15] + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] +_080475CA: + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080475EE + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + movs r0, #0x62 + bl sub_0804AA60 + cmp r0, #0 + beq _080475EE + str r4, [r0, #0x50] +_080475EE: + pop {r4, pc} + .align 2, 0 +_080475F0: .4byte gUnk_03000BF0 + + thumb_func_start sub_080475F4 +sub_080475F4: @ 0x080475F4 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x76 + movs r3, #0xc0 + lsls r3, r3, #1 + adds r0, r3, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r2, #0x15] + cmp r0, #0xbf + bls _08047626 + movs r0, #0xc0 + strb r0, [r2, #0x15] + movs r0, #5 + strb r0, [r2, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r2, #0x24] + adds r1, #8 + movs r0, #0x3c + strh r0, [r1] +_08047626: + ldrb r0, [r2, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r2, #0 + bl sub_08047DF0 + pop {pc} + + thumb_func_start sub_0804763C +sub_0804763C: @ 0x0804763C + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08047680 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + movs r1, #0xf8 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _080476D0 + ldrb r1, [r4, #0x15] + cmp r1, #0 + bne _08047684 + ldrh r0, [r2, #8] + movs r1, #0x82 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + blt _080476D0 + adds r0, r4, #0 + adds r0, #0x74 + ldrh r1, [r0] + rsbs r1, r1, #0 + strh r1, [r0] + adds r2, r4, #0 + adds r2, #0x76 + ldrh r0, [r2] + adds r0, r0, r1 + strh r0, [r2] + lsrs r0, r0, #8 + b _080476CE + .align 2, 0 +_08047680: .4byte gUnk_03000BF0 +_08047684: + adds r0, r4, #0 + adds r0, #0x74 + movs r3, #0 + ldrsh r2, [r0, r3] + cmp r2, #0 + ble _080476B4 + adds r3, r4, #0 + adds r3, #0x76 + ldrh r0, [r3] + adds r0, r0, r2 + strh r0, [r3] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r4, #0x15] + movs r1, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080476D0 + movs r0, #0 + strb r0, [r4, #0x15] + strh r1, [r3] + b _080476D0 +_080476B4: + cmp r1, #0xc0 + bls _080476D0 + adds r1, r4, #0 + adds r1, #0x76 + ldrh r0, [r1] + adds r0, r0, r2 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r4, #0x15] + cmp r0, #0xc0 + bhi _080476D0 + movs r0, #0xc0 +_080476CE: + strb r0, [r4, #0x15] +_080476D0: + adds r0, r4, #0 + bl sub_08047E48 + ldr r0, _08047728 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + movs r1, #0xc0 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r2, #0x2e + ldrsh r1, [r4, r2] + cmp r0, r1 + ble _08047700 + movs r0, #6 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x15] + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] +_08047700: + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08047724 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + movs r0, #0x62 + bl sub_0804AA60 + cmp r0, #0 + beq _08047724 + str r4, [r0, #0x50] +_08047724: + pop {r4, pc} + .align 2, 0 +_08047728: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804772C +sub_0804772C: @ 0x0804772C + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x76 + ldr r3, _08047774 @ =0xFFFFFE80 + adds r0, r3, #0 + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r2, #0x15] + cmp r0, #0x40 + bhi _0804775C + movs r0, #0x40 + strb r0, [r2, #0x15] + movs r0, #3 + strb r0, [r2, #0xd] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r2, #0x24] + adds r1, #8 + movs r0, #0x1e + strh r0, [r1] +_0804775C: + ldrb r0, [r2, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r2, #0 + bl sub_08047DF0 + pop {pc} + .align 2, 0 +_08047774: .4byte 0xFFFFFE80 + + thumb_func_start sub_08047778 +sub_08047778: @ 0x08047778 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08047794 @ =gUnk_080D1BDC + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08047794: .4byte gUnk_080D1BDC + + thumb_func_start sub_08047798 +sub_08047798: @ 0x08047798 + push {r4, lr} + adds r3, r0, #0 + movs r0, #1 + strb r0, [r3, #0xd] + movs r0, #0x80 + strh r0, [r3, #0x24] + movs r0, #0x2e + ldrsh r1, [r3, r0] + ldr r2, _080477BC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + ldr r0, _080477C0 @ =0x000001F7 + cmp r1, r0 + bgt _080477C4 + adds r1, r3, #0 + adds r1, #0x80 + movs r0, #0xa8 + b _080477CC + .align 2, 0 +_080477BC: .4byte gUnk_03000BF0 +_080477C0: .4byte 0x000001F7 +_080477C4: + adds r1, r3, #0 + adds r1, #0x80 + movs r0, #0xd2 + lsls r0, r0, #2 +_080477CC: + strh r0, [r1] + ldrh r0, [r2, #6] + ldrh r4, [r1] + adds r0, r0, r4 + strh r0, [r1] + movs r1, #0xd2 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r2, [r2, #8] + adds r0, r0, r2 + adds r1, r3, #0 + adds r1, #0x82 + strh r0, [r1] + adds r0, r3, #0 + bl sub_08047D88 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080477F0 +sub_080477F0: @ 0x080477F0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldrh r2, [r4, #0x24] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldr r0, _08047868 @ =0x000002FF + cmp r1, r0 + bgt _0804780A + adds r0, r2, #0 + adds r0, #8 + strh r0, [r4, #0x24] +_0804780A: + adds r7, r4, #0 + adds r7, #0x80 + ldrh r0, [r7] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r6, r4, #0 + adds r6, #0x82 + ldrh r1, [r6] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08047E48 + ldr r0, _0804786C @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x80 + bl sub_0806FCB8 + adds r1, r0, #0 + cmp r1, #0 + bne _08047870 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + ldrb r0, [r4, #0x14] + strb r0, [r4, #0x15] + b _0804790C + .align 2, 0 +_08047868: .4byte 0x000002FF +_0804786C: .4byte gLinkEntity +_08047870: + ldr r5, _080478FC @ =gUnk_03000BF0 + ldrh r1, [r5, #6] + movs r0, #0x80 + lsls r0, r0, #2 + mov r8, r0 + add r1, r8 + ldrh r2, [r5, #8] + movs r3, #0x84 + lsls r3, r3, #2 + adds r2, r2, r3 + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r4, #0 + bl sub_0806FCB8 + cmp r0, #0 + bne _080478A0 + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] +_080478A0: + ldrh r1, [r7] + ldrh r2, [r6] + adds r0, r4, #0 + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _0804790C + movs r0, #2 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x14] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + bl sub_08000E50 + ldr r2, _08047900 @ =gUnk_080D1BF0 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r2, [r0] + adds r0, r4, #0 + adds r0, #0x74 + strh r2, [r0] + ldr r2, [r4, #0x64] + ldr r0, [r2] + adds r0, #0x6c + ldrh r0, [r0] + ands r1, r0 + cmp r1, #0 + beq _08047904 + ldr r3, [r2, #4] + ldrh r0, [r5, #6] + add r0, r8 + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r2, #0x83 + cmp r0, r1 + ble _080478F4 + movs r2, #0x81 +_080478F4: + adds r0, r3, #0 + adds r0, #0x79 + strb r2, [r0] + b _0804790C + .align 2, 0 +_080478FC: .4byte gUnk_03000BF0 +_08047900: .4byte gUnk_080D1BF0 +_08047904: + ldr r0, [r2, #4] + adds r0, #0x79 + movs r1, #0x80 + strb r1, [r0] +_0804790C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08047914 +sub_08047914: @ 0x08047914 + push {r4, lr} + adds r4, r0, #0 + bl sub_08047D88 + ldrb r1, [r4, #0x14] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0 + beq _08047950 + adds r1, r4, #0 + adds r1, #0x76 + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + b _08047976 +_08047950: + movs r0, #3 + strb r0, [r4, #0xd] + adds r1, r4, #0 + adds r1, #0x70 + movs r0, #0x3c + strh r0, [r1] + ldrb r1, [r4, #0xa] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r0, #0x78 + adds r1, r4, #0 + adds r1, #0x7e + strh r0, [r1] + ldr r0, [r4, #0x64] + ldr r0, [r0] + ldrb r1, [r4, #0x14] + bl sub_080A1D70 +_08047976: + pop {r4, pc} + + thumb_func_start sub_08047978 +sub_08047978: @ 0x08047978 + push {r4, lr} + adds r4, r0, #0 + bl sub_08047D88 + adds r0, r4, #0 + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + beq _080479C6 + adds r2, r4, #0 + adds r2, #0x70 + ldrh r0, [r2] + subs r1, r0, #1 + strh r1, [r2] + lsls r0, r1, #0x10 + cmp r0, #0 + bne _080479B6 + adds r1, r4, #0 + adds r1, #0x72 + movs r0, #1 + strh r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080479AE + movs r0, #0xb4 + strh r0, [r2] + b _080479CC +_080479AE: + movs r0, #0xb4 + lsls r0, r0, #1 + strh r0, [r2] + b _080479CC +_080479B6: + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xf0 + bne _080479CC + adds r0, r4, #0 + bl sub_0804813C + b _080479CC +_080479C6: + adds r0, r4, #0 + adds r0, #0x72 + strh r1, [r0] +_080479CC: + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080479F4 + movs r0, #0xf0 + strh r0, [r1] + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + movs r0, #0x62 + bl sub_0804AA60 + cmp r0, #0 + beq _080479F4 + str r4, [r0, #0x50] +_080479F4: + ldr r0, _08047A78 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r4, #0 + movs r3, #0x80 + bl sub_0806FCB8 + adds r1, r0, #0 + cmp r1, #0 + bne _08047A2C + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + ldrb r0, [r4, #0x14] + strb r0, [r4, #0x15] +_08047A2C: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _08047B06 + ldr r0, [r4, #0x54] + ldrb r0, [r0, #0xc] + cmp r0, #1 + bne _08047B06 + movs r0, #4 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08047AA4 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #6 + cmp r0, #1 + bne _08047A80 + ldr r2, _08047A7C @ =gUnk_03000BF0 + movs r1, #0xe0 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r3, [r2, #6] + adds r0, r0, r3 + adds r1, r4, #0 + adds r1, #0x80 + strh r0, [r1] + movs r1, #0x94 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r2, [r2, #8] + adds r0, r0, r2 + adds r1, r4, #0 + adds r1, #0x82 + b _08047B04 + .align 2, 0 +_08047A78: .4byte gLinkEntity +_08047A7C: .4byte gUnk_03000BF0 +_08047A80: + ldr r2, _08047AA0 @ =gUnk_03000BF0 + movs r3, #0x90 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r2, #6] + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x80 + strh r0, [r1] + adds r3, #0x10 + adds r0, r3, #0 + ldrh r2, [r2, #8] + adds r0, r0, r2 + adds r1, #2 + b _08047B04 + .align 2, 0 +_08047AA0: .4byte gUnk_03000BF0 +_08047AA4: + ldr r0, _08047AC4 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + movs r2, #0x80 + lsls r2, r2, #2 + adds r1, r1, r2 + movs r3, #0x2e + ldrsh r2, [r4, r3] + adds r3, r0, #0 + cmp r1, r2 + bge _08047AC8 + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0xc8 + lsls r0, r0, #1 + b _08047AD0 + .align 2, 0 +_08047AC4: .4byte gUnk_03000BF0 +_08047AC8: + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0x9c + lsls r0, r0, #2 +_08047AD0: + strh r0, [r1] + ldrh r0, [r3, #6] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + ldrh r0, [r3, #8] + movs r1, #0x84 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _08047AF4 + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0xd0 + lsls r0, r0, #1 + b _08047AFC +_08047AF4: + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0xa0 + lsls r0, r0, #2 +_08047AFC: + strh r0, [r1] + ldrh r0, [r3, #8] + ldrh r3, [r1] + adds r0, r0, r3 +_08047B04: + strh r0, [r1] +_08047B06: + pop {r4, pc} + + thumb_func_start sub_08047B08 +sub_08047B08: @ 0x08047B08 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl sub_08047D88 + adds r4, r5, #0 + adds r4, #0x80 + ldrh r0, [r4] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + adds r6, r5, #0 + adds r6, #0x82 + ldrh r1, [r6] + movs r3, #0x32 + ldrsh r2, [r5, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + movs r7, #0 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_08047E58 + ldrh r1, [r4] + ldrh r2, [r6] + adds r0, r5, #0 + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _08047B80 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08047B60 + movs r0, #7 + strb r0, [r5, #0xc] + strb r7, [r5, #0xd] + ldrb r0, [r5, #0x15] + movs r1, #0x80 + eors r0, r1 + b _08047B7E +_08047B60: + movs r0, #4 + strb r0, [r5, #0xc] + strb r7, [r5, #0xd] + ldrb r2, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r5, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r5, #0x19] + ldrb r0, [r5, #0x14] +_08047B7E: + strb r0, [r5, #0x15] +_08047B80: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08047B84 +sub_08047B84: @ 0x08047B84 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08047BA0 @ =gUnk_080D1BF4 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08047BA0: .4byte gUnk_080D1BF4 + + thumb_func_start sub_08047BA4 +sub_08047BA4: @ 0x08047BA4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xd] + movs r2, #0x78 + strb r2, [r4, #0xe] + strb r1, [r4, #0xf] + ldr r0, _08047BD0 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r0, r1 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _08047BD4 + adds r0, r4, #0 + adds r0, #0x76 + strh r2, [r0] + b _08047BDC + .align 2, 0 +_08047BD0: .4byte gUnk_03000BF0 +_08047BD4: + adds r1, r4, #0 + adds r1, #0x76 + movs r0, #0x88 + strh r0, [r1] +_08047BDC: + ldr r0, _08047BEC @ =0x000001B5 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_08047BF0 + pop {r4, pc} + .align 2, 0 +_08047BEC: .4byte 0x000001B5 + + thumb_func_start sub_08047BF0 +sub_08047BF0: @ 0x08047BF0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r2, _08047CB8 @ =gUnk_080D1C00 + ldrb r1, [r5, #0xe] + movs r0, #3 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r5, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_08047E48 + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _08047CC4 + ldrb r1, [r5, #0xf] + adds r0, r1, #1 + strb r0, [r5, #0xf] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08047C74 + adds r0, r5, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _08047C74 + bl sub_08000E50 + movs r3, #0x1e + adds r1, r0, #0 + ands r1, r3 + ldr r6, _08047CBC @ =0x0000FFF1 + adds r2, r6, #0 + adds r1, r2, r1 + ldrh r6, [r4, #0x2e] + adds r1, r1, r6 + strh r1, [r4, #0x2e] + lsrs r0, r0, #8 + ands r0, r3 + adds r2, r2, r0 + ldrh r0, [r4, #0x32] + adds r2, r2, r0 + strh r2, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 +_08047C74: + adds r0, r5, #0 + adds r0, #0x76 + ldrh r0, [r0] + strb r0, [r5, #0x15] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_08047E48 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldr r0, _08047CC0 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + movs r6, #0x9c + lsls r6, r6, #2 + adds r0, r0, r6 + cmp r1, r0 + ble _08047D10 + movs r0, #2 + strb r0, [r5, #0xd] + adds r1, r5, #0 + adds r1, #0x7e + movs r0, #0xaa + strh r0, [r1] + adds r0, #0x83 + bl sub_080A3268 + adds r0, r5, #0 + movs r1, #1 + bl sub_080042AC + b _08047D10 + .align 2, 0 +_08047CB8: .4byte gUnk_080D1C00 +_08047CBC: .4byte 0x0000FFF1 +_08047CC0: .4byte gUnk_03000BF0 +_08047CC4: + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x5a + bne _08047CD4 + ldr r4, [r5, #0x54] + b _08047CDC +_08047CD4: + cmp r0, #0x3c + bne _08047CF2 + ldr r0, [r5, #0x54] + ldr r4, [r0, #0x54] +_08047CDC: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + b _08047D10 +_08047CF2: + cmp r0, #0x1e + bne _08047D10 + ldr r0, [r5, #0x54] + ldr r0, [r0, #0x54] + ldr r4, [r0, #0x54] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX +_08047D10: + adds r0, r5, #0 + adds r0, #0x78 + ldrh r3, [r0] + adds r0, r5, #0 + movs r1, #0xaa + movs r2, #0xaa + bl sub_0805EC9C + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08047D24 +sub_08047D24: @ 0x08047D24 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x7e + ldrh r0, [r1] + adds r0, #8 + movs r2, #0 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + movs r0, #0x80 + lsls r0, r0, #4 + cmp r1, r0 + bls _08047D5A + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08047D4C + ldr r0, [r4, #0x64] + str r2, [r0, #8] + b _08047D50 +_08047D4C: + ldr r0, [r4, #0x64] + str r2, [r0, #0xc] +_08047D50: + movs r0, #0 + str r0, [r4, #0x64] + bl sub_0805E780 + b _08047D84 +_08047D5A: + ldr r0, _08047D68 @ =0x000001FF + cmp r1, r0 + bhi _08047D6C + adds r0, r4, #0 + bl sub_08047E48 + b _08047D72 + .align 2, 0 +_08047D68: .4byte 0x000001FF +_08047D6C: + adds r0, r4, #0 + bl sub_08047E58 +_08047D72: + adds r0, r4, #0 + adds r0, #0x7e + ldrh r2, [r0] + subs r0, #6 + ldrh r3, [r0] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C +_08047D84: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08047D88 +sub_08047D88: @ 0x08047D88 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r3, #0 + adds r5, #0x7c + ldrb r2, [r5] + lsls r1, r2, #1 + movs r0, #0x7f + ands r1, r0 + movs r0, #0x80 + ands r0, r2 + orrs r1, r0 + strb r1, [r5] + ldrb r0, [r3, #0x19] + lsrs r0, r0, #6 + cmp r0, #3 + bne _08047DB0 + ldr r0, _08047DE8 @ =gUnk_03003F80 + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _08047DE6 +_08047DB0: + adds r0, r3, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #1 + beq _08047DE6 + ldr r4, _08047DEC @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x32 + ldrsh r2, [r4, r0] + adds r0, r3, #0 + movs r3, #0x20 + bl sub_0806FCB8 + cmp r0, #0 + beq _08047DE6 + ldr r0, _08047DE8 @ =gUnk_03003F80 + movs r1, #1 + strb r1, [r0, #0x14] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08047DE6 + ldrb r0, [r5] + movs r1, #1 + orrs r0, r1 + strb r0, [r5] +_08047DE6: + pop {r4, r5, pc} + .align 2, 0 +_08047DE8: .4byte gUnk_03003F80 +_08047DEC: .4byte gLinkEntity + + thumb_func_start sub_08047DF0 +sub_08047DF0: @ 0x08047DF0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08047D88 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08047EA4 + movs r0, #0x2e + ldrsh r4, [r5, r0] + movs r2, #0x32 + ldrsh r6, [r5, r2] + movs r0, #0x24 + ldrsh r1, [r5, r0] + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + adds r0, r5, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08047E42 + bl sub_08079F8C + cmp r0, #0 + beq _08047E42 + ldr r0, _08047E44 @ =gLinkEntity + ldrh r1, [r5, #0x2e] + subs r1, r1, r4 + ldrh r2, [r0, #0x2e] + adds r1, r1, r2 + strh r1, [r0, #0x2e] + ldrh r1, [r5, #0x32] + subs r1, r1, r6 + ldrh r2, [r0, #0x32] + adds r1, r1, r2 + strh r1, [r0, #0x32] +_08047E42: + pop {r4, r5, r6, pc} + .align 2, 0 +_08047E44: .4byte gLinkEntity + + thumb_func_start sub_08047E48 +sub_08047E48: @ 0x08047E48 + push {r4, lr} + adds r4, r0, #0 + bl sub_08047D88 + adds r0, r4, #0 + bl sub_08047E58 + pop {r4, pc} + + thumb_func_start sub_08047E58 +sub_08047E58: @ 0x08047E58 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r5, [r4, r0] + movs r2, #0x32 + ldrsh r6, [r4, r2] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08047E9C + bl sub_08079F8C + cmp r0, #0 + beq _08047E9C + ldr r0, _08047EA0 @ =gLinkEntity + ldrh r1, [r4, #0x2e] + subs r1, r1, r5 + ldrh r2, [r0, #0x2e] + adds r1, r1, r2 + strh r1, [r0, #0x2e] + ldrh r1, [r4, #0x32] + subs r1, r1, r6 + ldrh r2, [r0, #0x32] + adds r1, r1, r2 + strh r1, [r0, #0x32] +_08047E9C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08047EA0: .4byte gLinkEntity + + thumb_func_start sub_08047EA4 +sub_08047EA4: @ 0x08047EA4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r0, #0x78 + strh r1, [r0] + ldrh r1, [r0] + adds r0, #2 + ldrh r0, [r0] + subs r4, r1, r0 + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r4, r0 + adds r0, #0xff + cmp r1, r0 + bls _08047F58 + adds r0, r5, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08047F4E + adds r0, r5, #0 + bl sub_08047F68 + lsls r0, r0, #8 + mov r8, r0 + ldr r6, _08047F60 @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r6, r3] + movs r7, #0x32 + ldrsh r2, [r5, r7] + subs r1, r1, r2 + bl sub_080045DA + adds r3, r0, #0 + adds r0, r4, #0 + cmp r4, #0 + bge _08047F00 + adds r0, #0xff +_08047F00: + asrs r0, r0, #8 + subs r4, r3, r0 + movs r0, #0xff + ands r4, r0 + ldr r2, _08047F64 @ =gUnk_080C9160 + lsls r0, r4, #1 + adds r0, r0, r2 + movs r7, #0 + ldrsh r1, [r0, r7] + lsls r0, r3, #1 + adds r0, r0, r2 + movs r7, #0 + ldrsh r0, [r0, r7] + subs r1, r1, r0 + mov r0, r8 + muls r0, r1, r0 + adds r1, r0, #0 + ldr r0, [r6, #0x2c] + adds r0, r0, r1 + str r0, [r6, #0x2c] + adds r0, r4, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r4, #0 + ldrsh r1, [r0, r4] + adds r0, r3, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r7, #0 + ldrsh r0, [r0, r7] + subs r1, r1, r0 + mov r0, r8 + muls r0, r1, r0 + adds r1, r0, #0 + ldr r0, [r6, #0x30] + subs r0, r0, r1 + str r0, [r6, #0x30] +_08047F4E: + adds r0, r5, #0 + adds r0, #0x78 + ldrh r1, [r0] + adds r0, #2 + strh r1, [r0] +_08047F58: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08047F60: .4byte gLinkEntity +_08047F64: .4byte gUnk_080C9160 + + thumb_func_start sub_08047F68 +sub_08047F68: @ 0x08047F68 + push {r4, r5, lr} + ldr r3, _08047F98 @ =gLinkEntity + movs r1, #0x2e + ldrsh r2, [r3, r1] + movs r4, #0x2e + ldrsh r1, [r0, r4] + subs r2, r2, r1 + movs r4, #0x32 + ldrsh r1, [r3, r4] + movs r3, #0x32 + ldrsh r0, [r0, r3] + subs r1, r1, r0 + adds r4, r2, #0 + muls r4, r2, r4 + adds r2, r4, #0 + adds r0, r1, #0 + muls r0, r1, r0 + adds r4, r2, r0 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r4, r0 + bne _08047F9C + movs r0, #0x20 + b _08048002 + .align 2, 0 +_08047F98: .4byte gLinkEntity +_08047F9C: + ldr r0, _08047FB8 @ =gUnk_080D1C04 + movs r3, #0x18 + adds r2, r0, #0 + ldrh r0, [r2, #0x20] + cmp r4, r0 + bge _08047FAA + movs r3, #8 +_08047FAA: + lsls r0, r3, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r4, r0 + bge _08047FBC + subs r3, #4 + b _08047FBE + .align 2, 0 +_08047FB8: .4byte gUnk_080D1C04 +_08047FBC: + adds r3, #4 +_08047FBE: + lsls r0, r3, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r4, r0 + bge _08047FCC + subs r3, #2 + b _08047FCE +_08047FCC: + adds r3, #2 +_08047FCE: + lsls r0, r3, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r4, r0 + bge _08047FDC + subs r3, #1 + b _08047FDE +_08047FDC: + adds r3, #1 +_08047FDE: + lsls r0, r3, #1 + adds r0, r0, r2 + ldrh r1, [r0] + cmp r4, r1 + bge _08048000 + subs r5, r3, #1 + lsls r0, r5, #1 + adds r0, r0, r2 + ldrh r2, [r0] + subs r0, r1, r2 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r2, r2, r0 + cmp r4, r2 + bgt _08048000 + adds r3, r5, #0 +_08048000: + adds r0, r3, #0 +_08048002: + pop {r4, r5, pc} + + thumb_func_start sub_08048004 +sub_08048004: @ 0x08048004 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08048010 + b _08048138 +_08048010: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + beq _0804801C + b _08048130 +_0804801C: + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + ldr r6, _080480A4 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r6, r1] + cmp r0, #0 + beq _08048030 + b _08048138 +_08048030: + bl sub_08079F8C + cmp r0, #0 + bne _0804803A + b _08048138 +_0804803A: + adds r1, r4, #0 + adds r1, #0x7c + ldrb r3, [r1] + movs r0, #1 + ands r0, r3 + adds r5, r1, #0 + cmp r0, #0 + beq _080480BA + ldrb r0, [r4, #0x19] + lsrs r0, r0, #6 + cmp r0, #3 + bne _080480B0 + movs r7, #0x2e + ldrsh r2, [r6, r7] + ldr r1, _080480A8 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #3 + movs r7, #0x32 + ldrsh r0, [r6, r7] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #3 + ldr r1, _080480AC @ =gUnk_02019EE0 + lsls r0, r0, #7 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r0, #0 + beq _080480B0 + movs r0, #2 + ands r0, r3 + cmp r0, #0 + bne _08048086 + movs r0, #0x80 + orrs r0, r3 + strb r0, [r5] +_08048086: + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08048138 + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + strh r0, [r6, #0x2e] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + strh r0, [r6, #0x32] + b _08048138 + .align 2, 0 +_080480A4: .4byte gLinkEntity +_080480A8: .4byte gUnk_03000BF0 +_080480AC: .4byte gUnk_02019EE0 +_080480B0: + ldrb r1, [r5] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5] + b _08048138 +_080480BA: + ldrb r0, [r4, #0x19] + lsrs r0, r0, #6 + cmp r0, #3 + beq _08048124 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r3, #0x32 + ldrsh r2, [r4, r3] + adds r0, r6, #0 + movs r3, #0x24 + bl sub_0806FCB8 + cmp r0, #0 + beq _08048124 + ldrb r1, [r5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08048124 + movs r7, #0x2e + ldrsh r0, [r6, r7] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r6, r3] + movs r7, #0x32 + ldrsh r2, [r4, r7] + subs r1, r1, r2 + bl sub_080045DA + ldr r3, _0804812C @ =gUnk_080C9160 + lsls r1, r0, #1 + adds r1, r1, r3 + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r2, r1, #3 + adds r2, r2, r1 + lsls r2, r2, #0xa + ldr r1, [r4, #0x2c] + adds r1, r1, r2 + str r1, [r6, #0x2c] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r3, #0 + ldrsh r0, [r0, r3] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #0xa + ldr r0, [r4, #0x30] + subs r0, r0, r1 + str r0, [r6, #0x30] +_08048124: + movs r0, #0 + strb r0, [r5] + b _08048138 + .align 2, 0 +_0804812C: .4byte gUnk_080C9160 +_08048130: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_08048138: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0804813C +sub_0804813C: @ 0x0804813C + push {lr} + bl sub_08000E50 + adds r2, r0, #0 + movs r0, #7 + ands r0, r2 + lsrs r2, r2, #8 + movs r1, #3 + ands r2, r1 + movs r1, #1 + bl sub_080A1ED0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08048158 +sub_08048158: @ 0x08048158 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _08048174 @ =gUnk_080D1C44 + bl sub_08000E50 + lsls r4, r5, #1 + adds r4, r4, r5 + movs r1, #3 + bl __modsi3 + adds r4, r4, r0 + adds r4, r4, r6 + ldrb r0, [r4] + pop {r4, r5, r6, pc} + .align 2, 0 +_08048174: .4byte gUnk_080D1C44 + + thumb_func_start sub_08048178 +sub_08048178: @ 0x08048178 + push {r4, lr} + adds r4, r0, #0 + adds r2, r1, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #6 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08048198 + lsls r1, r2, #1 + ldr r0, _08048194 @ =gUnk_080D1C60 + b _0804819C + .align 2, 0 +_08048194: .4byte gUnk_080D1C60 +_08048198: + lsls r1, r2, #1 + ldr r0, _080481B8 @ =gUnk_080D1C50 +_0804819C: + adds r3, r1, r0 + ldr r2, _080481BC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r1, [r3] + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x80 + strh r0, [r1] + ldrh r0, [r2, #8] + ldrh r3, [r3, #2] + adds r0, r0, r3 + adds r1, #2 + strh r0, [r1] + pop {r4, pc} + .align 2, 0 +_080481B8: .4byte gUnk_080D1C50 +_080481BC: .4byte gUnk_03000BF0 + + thumb_func_start sub_080481C0 +sub_080481C0: @ 0x080481C0 + push {lr} + ldr r1, _080481CC @ =gUnk_080D1CC8 + bl sub_0800129E + pop {pc} + .align 2, 0 +_080481CC: .4byte gUnk_080D1CC8 + + thumb_func_start sub_080481D0 +sub_080481D0: @ 0x080481D0 + push {lr} + ldr r2, _080481E4 @ =gUnk_080D1CE0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080481E4: .4byte gUnk_080D1CE0 + + thumb_func_start sub_080481E8 +sub_080481E8: @ 0x080481E8 + push {lr} + adds r2, r0, #0 + adds r0, #0x46 + ldrh r0, [r0] + cmp r0, #0 + beq _08048210 + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] + movs r0, #3 + b _08048212 +_08048210: + movs r0, #2 +_08048212: + strb r0, [r2, #0xe] + ldrb r1, [r2, #0xe] + adds r0, r2, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_26 +nullsub_26: @ 0x08048220 + bx lr + .align 2, 0 + + thumb_func_start sub_08048224 +sub_08048224: @ 0x08048224 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r2] + movs r0, #0x72 + bl sub_0807CBD0 + adds r1, r0, #0 + cmp r1, #0 + bne _0804824E + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + b _0804825E +_0804824E: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #1 + strb r0, [r4, #0xe] +_0804825E: + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08048268 +sub_08048268: @ 0x08048268 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08048292 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048292 + movs r0, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08048292: + pop {r4, pc} + + thumb_func_start sub_08048294 +sub_08048294: @ 0x08048294 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080482BC + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x72 + bl sub_0807CCB4 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_080482BC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_27 +nullsub_27: @ 0x080482C0 + bx lr + .align 2, 0 + + thumb_func_start sub_080482C4 +sub_080482C4: @ 0x080482C4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080482D4 + bl sub_0805E780 +_080482D4: + ldr r0, _080482E8 @ =gUnk_080D1D48 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080482E8: .4byte gUnk_080D1D48 + + thumb_func_start sub_080482EC +sub_080482EC: @ 0x080482EC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08048310 @ =gUnk_030010A0 + adds r0, #0x38 + ldrb r1, [r0] + movs r2, #1 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08048314 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08048326 + .align 2, 0 +_08048310: .4byte gUnk_030010A0 +_08048314: + strb r2, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + movs r0, #0xb3 + lsls r0, r0, #1 + bl sub_080A3268 +_08048326: + adds r0, r4, #0 + bl sub_080485D8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08048330 +sub_08048330: @ 0x08048330 + push {r4, lr} + adds r4, r0, #0 + bl sub_080485D8 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048358 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08048358: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804835C +sub_0804835C: @ 0x0804835C + push {r4, lr} + adds r4, r0, #0 + bl sub_080485D8 + ldr r0, _08048384 @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r1, [r0] + movs r2, #3 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _08048382 + strb r2, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r1, r0 + strb r1, [r4, #0x10] + movs r0, #0x80 + strh r0, [r4, #0x24] +_08048382: + pop {r4, pc} + .align 2, 0 +_08048384: .4byte gUnk_030010A0 + + thumb_func_start sub_08048388 +sub_08048388: @ 0x08048388 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r2, [r5, #0x50] + adds r0, r2, #0 + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #0 + beq _080483A0 + adds r0, r5, #0 + bl sub_080485D8 + b _080483F2 +_080483A0: + ldrb r1, [r5, #0xa] + lsls r1, r1, #1 + ldr r0, _080483F4 @ =gUnk_080D1D98 + adds r1, r1, r0 + movs r0, #0x2e + ldrsh r4, [r2, r0] + movs r0, #0 + ldrsb r0, [r1, r0] + adds r4, r4, r0 + movs r0, #0x32 + ldrsh r2, [r2, r0] + movs r0, #1 + ldrsb r0, [r1, r0] + adds r6, r2, r0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r2, #0x32 + ldrsh r1, [r5, r2] + adds r2, r4, #0 + adds r3, r6, #0 + bl sub_080045D4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F69C + ldr r0, [r5, #0x50] + ldrh r0, [r0, #0x36] + strh r0, [r5, #0x36] + movs r1, #0x2e + ldrsh r0, [r5, r1] + cmp r0, r4 + bne _080483F2 + movs r2, #0x32 + ldrsh r0, [r5, r2] + cmp r0, r6 + bne _080483F2 + movs r0, #4 + strb r0, [r5, #0xc] + movs r0, #0x3c + strb r0, [r5, #0xe] +_080483F2: + pop {r4, r5, r6, pc} + .align 2, 0 +_080483F4: .4byte gUnk_080D1D98 + + thumb_func_start sub_080483F8 +sub_080483F8: @ 0x080483F8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080485FC + ldrb r0, [r4, #0xe] + adds r5, r0, #0 + cmp r5, #0 + beq _0804841C + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08048436 + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + b _08048436 +_0804841C: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048436 + movs r0, #5 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] +_08048436: + pop {r4, r5, pc} + + thumb_func_start sub_08048438 +sub_08048438: @ 0x08048438 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0804846A + movs r0, #6 + strb r0, [r4, #0xc] + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0x14 + bls _08048454 + movs r0, #0x78 + b _08048456 +_08048454: + movs r0, #0x3c +_08048456: + strb r0, [r4, #0xe] + movs r0, #0 + str r0, [r4, #0x54] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + ldr r0, _08048474 @ =0x0000019B + bl sub_080A3268 +_0804846A: + adds r0, r4, #0 + bl sub_080485FC + pop {r4, pc} + .align 2, 0 +_08048474: .4byte 0x0000019B + + thumb_func_start sub_08048478 +sub_08048478: @ 0x08048478 + push {r4, lr} + adds r4, r0, #0 + bl sub_080485FC + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + adds r2, r0, #0 + cmp r2, #0 + beq _080484A2 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080484E6 + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _080484E6 +_080484A2: + adds r3, r4, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080484BC + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + strb r2, [r4, #0xf] + b _080484E6 +_080484BC: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080484E6 + movs r0, #0xfe + ands r0, r1 + strb r0, [r3] + movs r0, #0x24 + bl sub_080A7EE0 + adds r1, r0, #0 + cmp r1, #0 + beq _080484E6 + str r4, [r1, #0x50] + str r1, [r4, #0x54] + movs r3, #0xc0 + lsls r3, r3, #0xc + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 +_080484E6: + pop {r4, pc} + + thumb_func_start sub_080484E8 +sub_080484E8: @ 0x080484E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080485FC + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08048528 + movs r0, #8 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0x1f + movs r2, #0x40 + bl CreateFX + ldr r2, [r4, #0x50] + adds r2, #0x7b + movs r0, #0x10 + b _08048542 +_08048528: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0804854C + movs r0, #5 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + ldr r2, [r4, #0x50] + adds r2, #0x7b + movs r0, #1 +_08048542: + ldrb r4, [r4, #0xa] + lsls r0, r4 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] +_0804854C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08048550 +sub_08048550: @ 0x08048550 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #0xb + bne _08048562 + movs r0, #0x3c + strb r0, [r4, #0xe] + b _0804859E +_08048562: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804859E + movs r0, #9 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080485FC + movs r0, #0xb3 + lsls r0, r0, #1 + bl sub_080A3268 +_0804859E: + pop {r4, pc} + + thumb_func_start sub_080485A0 +sub_080485A0: @ 0x080485A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080485FC + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080485D6 + movs r0, #4 + strb r0, [r4, #0xc] + movs r1, #1 + strb r1, [r4, #0xe] + ldr r2, [r4, #0x50] + adds r2, #0x7b + ldrb r3, [r2] + movs r0, #0xf + ands r0, r3 + ldrb r4, [r4, #0xa] + lsls r1, r4 + orrs r0, r1 + strb r0, [r2] +_080485D6: + pop {r4, pc} + + thumb_func_start sub_080485D8 +sub_080485D8: @ 0x080485D8 + push {lr} + adds r1, r0, #0 + ldrb r3, [r1, #0xa] + lsls r3, r3, #1 + ldr r0, _080485F8 @ =gUnk_080D1D70 + adds r3, r3, r0 + ldr r0, [r1, #0x50] + movs r2, #0 + ldrsb r2, [r3, r2] + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + bl sub_0806FA90 + pop {pc} + .align 2, 0 +_080485F8: .4byte gUnk_080D1D70 + + thumb_func_start sub_080485FC +sub_080485FC: @ 0x080485FC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + ldr r0, _08048638 @ =gUnk_080D1D98 + adds r1, r1, r0 + ldr r0, [r4, #0x50] + movs r2, #0 + ldrsb r2, [r1, r2] + movs r3, #1 + ldrsb r3, [r1, r3] + adds r1, r4, #0 + bl sub_0806FA90 + ldr r3, _0804863C @ =gUnk_080D1D78 + ldrb r1, [r4, #0xa] + lsls r1, r1, #3 + ldr r0, [r4, #0x50] + adds r0, #0x78 + ldrb r0, [r0] + lsrs r0, r0, #4 + movs r2, #7 + ands r0, r2 + adds r1, r1, r0 + adds r1, r1, r3 + movs r0, #0 + ldrsb r0, [r1, r0] + strh r0, [r4, #0x36] + pop {r4, pc} + .align 2, 0 +_08048638: .4byte gUnk_080D1D98 +_0804863C: .4byte gUnk_080D1D78 + + thumb_func_start sub_08048640 +sub_08048640: @ 0x08048640 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0804867C @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r2, [r0] + cmp r2, #0 + bne _08048664 + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + adds r0, r5, #0 + adds r0, #0x45 + strb r2, [r0] + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] +_08048664: + ldr r4, _08048680 @ =gUnk_080D1E6C + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_0804867C: .4byte gUnk_030010A0 +_08048680: .4byte gUnk_080D1E6C + + thumb_func_start sub_08048684 +sub_08048684: @ 0x08048684 + push {lr} + ldr r2, _08048698 @ =gUnk_080D1E84 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08048698: .4byte gUnk_080D1E84 + + thumb_func_start sub_0804869C +sub_0804869C: @ 0x0804869C + push {lr} + ldr r1, _080486A8 @ =gUnk_080D1E6C + bl sub_0804AA30 + pop {pc} + .align 2, 0 +_080486A8: .4byte gUnk_080D1E6C + + thumb_func_start sub_080486AC +sub_080486AC: @ 0x080486AC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + beq _080486C8 + ldr r0, _080486CC @ =gUnk_080D1E94 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_080486C8: + pop {r4, pc} + .align 2, 0 +_080486CC: .4byte gUnk_080D1E94 + + thumb_func_start sub_080486D0 +sub_080486D0: @ 0x080486D0 + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_080486D8 +sub_080486D8: @ 0x080486D8 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_080486E0 +sub_080486E0: @ 0x080486E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _080486F2 + adds r0, r4, #0 + bl sub_0804A7D4 +_080486F2: + pop {r4, pc} + + thumb_func_start sub_080486F4 +sub_080486F4: @ 0x080486F4 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #1 + strb r5, [r4, #0x1c] + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0804876C + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + strb r5, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + bl sub_08000E50 + movs r1, #0xb + bl __modsi3 + ldrb r1, [r4, #0x15] + adds r1, r1, r0 + subs r1, #5 + movs r2, #0x1f + ands r1, r2 + strb r1, [r4, #0x15] + lsls r0, r0, #1 + ldr r2, _08048768 @ =gUnk_080D1EA0 + adds r1, r0, r2 + ldrb r1, [r1] + strb r1, [r4, #0xe] + adds r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x7b + strb r0, [r1] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + b _0804877A + .align 2, 0 +_08048768: .4byte gUnk_080D1EA0 +_0804876C: + movs r0, #2 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + strb r0, [r4, #0x18] +_0804877A: + pop {r4, r5, pc} + + thumb_func_start sub_0804877C +sub_0804877C: @ 0x0804877C + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080487AA + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _080487AA + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_080487AA: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + cmp r0, #1 + beq _080487D4 + cmp r0, #1 + bgt _080487BC + cmp r0, #0 + beq _080487C2 + b _08048804 +_080487BC: + cmp r0, #2 + beq _080487EC + b _08048804 +_080487C2: + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldr r0, _080487D0 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r0, [r0, r2] + b _0804880E + .align 2, 0 +_080487D0: .4byte gUnk_03000BF0 +_080487D4: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r0, _080487E8 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r0, [r0, r2] + movs r2, #0x84 + lsls r2, r2, #1 + adds r0, r0, r2 + b _080487F8 + .align 2, 0 +_080487E8: .4byte gUnk_03000BF0 +_080487EC: + movs r0, #0x32 + ldrsh r1, [r4, r0] + ldr r0, _08048800 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r0, [r0, r2] + adds r0, #0xb8 +_080487F8: + cmp r1, r0 + blt _08048824 + b _08048814 + .align 2, 0 +_08048800: .4byte gUnk_03000BF0 +_08048804: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r0, _08048828 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r0, [r0, r2] +_0804880E: + subs r0, #0x18 + cmp r1, r0 + bgt _08048824 +_08048814: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x5e + ands r0, r1 + strb r0, [r4, #0x18] +_08048824: + pop {r4, pc} + .align 2, 0 +_08048828: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804882C +sub_0804882C: @ 0x0804882C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080488FA + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + bl sub_08000E50 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + adds r0, #0x7a + ldrb r0, [r0] + strb r0, [r4, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1a + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + cmp r0, #1 + beq _080488D0 + cmp r0, #1 + bgt _080488AA + cmp r0, #0 + beq _080488AE + b _080488D0 +_080488AA: + cmp r0, #2 + bne _080488D0 +_080488AE: + ldr r1, _080488C8 @ =gLinkEntity + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + ldrh r1, [r1, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldr r1, _080488CC @ =gUnk_03000BF0 + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + ldrh r1, [r1, #0xc] + b _080488E8 + .align 2, 0 +_080488C8: .4byte gLinkEntity +_080488CC: .4byte gUnk_03000BF0 +_080488D0: + ldr r1, _080488FC @ =gUnk_03000BF0 + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + ldrh r1, [r1, #0xa] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldr r1, _08048900 @ =gLinkEntity + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + ldrh r1, [r1, #0x32] +_080488E8: + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080488FA + movs r0, #0xcc + lsls r0, r0, #1 + bl sub_080A3268 +_080488FA: + pop {r4, pc} + .align 2, 0 +_080488FC: .4byte gUnk_03000BF0 +_08048900: .4byte gLinkEntity + + thumb_func_start sub_08048904 +sub_08048904: @ 0x08048904 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + cmp r0, #1 + beq _0804893C + cmp r0, #1 + bgt _08048924 + cmp r0, #0 + beq _0804892A + b _0804896C +_08048924: + cmp r0, #2 + beq _08048954 + b _0804896C +_0804892A: + movs r0, #0x32 + ldrsh r1, [r4, r0] + ldr r0, _08048938 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r0, [r0, r2] + b _08048976 + .align 2, 0 +_08048938: .4byte gUnk_03000BF0 +_0804893C: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r0, _08048950 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r0, [r0, r2] + movs r2, #0x8c + lsls r2, r2, #1 + adds r0, r0, r2 + b _08048960 + .align 2, 0 +_08048950: .4byte gUnk_03000BF0 +_08048954: + movs r0, #0x32 + ldrsh r1, [r4, r0] + ldr r0, _08048968 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r0, [r0, r2] + adds r0, #0xc8 +_08048960: + cmp r1, r0 + blt _08048980 + b _0804897C + .align 2, 0 +_08048968: .4byte gUnk_03000BF0 +_0804896C: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r0, _08048984 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r0, [r0, r2] +_08048976: + subs r0, #0x28 + cmp r1, r0 + bgt _08048980 +_0804897C: + bl sub_0805E780 +_08048980: + pop {r4, pc} + .align 2, 0 +_08048984: .4byte gUnk_03000BF0 + + thumb_func_start sub_08048988 +sub_08048988: @ 0x08048988 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08048998 + bl sub_0805E780 +_08048998: + ldr r4, _080489B0 @ =gUnk_080D1F64 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080489B0: .4byte gUnk_080D1F64 + + thumb_func_start sub_080489B4 +sub_080489B4: @ 0x080489B4 + push {lr} + ldr r2, _080489C8 @ =gUnk_080D1F7C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080489C8: .4byte gUnk_080D1F7C + + thumb_func_start sub_080489CC +sub_080489CC: @ 0x080489CC + push {r4, r5, r6, lr} + mov ip, r0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0xff + bne _080489DA + b _08048AD8 +_080489DA: + mov r0, ip + ldr r4, [r0, #0x50] + adds r0, r4, #0 + adds r0, #0x78 + ldrb r0, [r0] + mov r2, ip + ldrb r1, [r2, #0xa] + asrs r0, r1 + movs r3, #1 + ands r0, r3 + cmp r0, #0 + beq _08048AD8 + adds r2, r4, #0 + adds r2, #0x7c + adds r0, r3, #0 + lsls r0, r1 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + mov r0, ip + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + subs r0, #4 + cmp r0, #0x16 + bhi _08048AD0 + lsls r0, r0, #2 + ldr r1, _08048A1C @ =_08048A20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08048A1C: .4byte _08048A20 +_08048A20: @ jump table + .4byte _08048A7C @ case 0 + .4byte _08048A7C @ case 1 + .4byte _08048A7C @ case 2 + .4byte _08048AD0 @ case 3 + .4byte _08048A7C @ case 4 + .4byte _08048A7C @ case 5 + .4byte _08048A7C @ case 6 + .4byte _08048A7C @ case 7 + .4byte _08048A7C @ case 8 + .4byte _08048A7C @ case 9 + .4byte _08048AD0 @ case 10 + .4byte _08048AD0 @ case 11 + .4byte _08048A7C @ case 12 + .4byte _08048A7C @ case 13 + .4byte _08048A7C @ case 14 + .4byte _08048AD0 @ case 15 + .4byte _08048AD0 @ case 16 + .4byte _08048AD0 @ case 17 + .4byte _08048AD0 @ case 18 + .4byte _08048AD0 @ case 19 + .4byte _08048A7C @ case 20 + .4byte _08048A7C @ case 21 + .4byte _08048A7C @ case 22 +_08048A7C: + ldr r3, [r4, #0x64] + mov r5, ip + ldrb r0, [r5, #0xa] + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x18 + adds r1, r1, r0 + ldr r0, [r5, #0x4c] + str r0, [r1] + ldr r2, _08048ACC @ =gLinkEntity + movs r6, #0x2e + ldrsh r0, [r2, r6] + movs r6, #0x2e + ldrsh r1, [r5, r6] + adds r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r3, #0x38] + ldr r3, [r4, #0x64] + movs r1, #0x32 + ldrsh r0, [r2, r1] + movs r2, #0x32 + ldrsh r1, [r5, r2] + adds r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r3, #0x3a] + ldr r2, [r4, #0x64] + mov r3, ip + adds r3, #0x3e + ldrb r0, [r3] + movs r1, #0x10 + eors r0, r1 + strb r0, [r3] + adds r2, #0x3c + strb r0, [r2] + b _08048AD8 + .align 2, 0 +_08048ACC: .4byte gLinkEntity +_08048AD0: + ldr r0, [r4, #0x64] + adds r0, #0x3c + movs r1, #0xff + strb r1, [r0] +_08048AD8: + mov r1, ip + adds r1, #0x45 + movs r0, #0xff + strb r0, [r1] + ldr r1, _08048AEC @ =gUnk_080D1F64 + mov r0, ip + bl sub_0804AA30 + pop {r4, r5, r6, pc} + .align 2, 0 +_08048AEC: .4byte gUnk_080D1F64 + + thumb_func_start sub_08048AF0 +sub_08048AF0: @ 0x08048AF0 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0xff + strb r1, [r0, #0x14] + ldrb r3, [r0, #0x1b] + movs r2, #0x3f + adds r1, r2, #0 + ands r1, r3 + movs r3, #0x80 + orrs r1, r3 + strb r1, [r0, #0x1b] + ldrb r1, [r0, #0x19] + ands r2, r1 + orrs r2, r3 + strb r2, [r0, #0x19] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r2, #7 + orrs r1, r2 + strb r1, [r3] + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #2 + strb r1, [r2] + bl sub_08048D20 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08048B2C +sub_08048B2C: @ 0x08048B2C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08048D20 + ldr r5, [r4, #0x50] + adds r0, r5, #0 + bl sub_08048D70 + cmp r0, #0 + beq _08048B62 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _08048B52 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0x40 + bl CreateFX +_08048B52: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + b _08048B6C +_08048B62: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_08048B6C: + adds r0, r5, #0 + adds r0, #0x78 + ldrb r0, [r0] + ldrb r1, [r4, #0xa] + asrs r0, r1 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08048B82 + movs r0, #2 + strb r0, [r4, #0xc] +_08048B82: + pop {r4, r5, pc} + + thumb_func_start sub_08048B84 +sub_08048B84: @ 0x08048B84 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048BAE + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x1e + strb r0, [r1] +_08048BAE: + pop {r4, pc} + + thumb_func_start sub_08048BB0 +sub_08048BB0: @ 0x08048BB0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x50] + adds r0, r2, #0 + adds r0, #0x78 + ldrb r3, [r0] + ldrb r1, [r4, #0xa] + adds r0, r3, #0 + asrs r0, r1 + movs r6, #1 + ands r0, r6 + cmp r0, #0 + bne _08048C34 + adds r0, r2, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _08048BFC + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r1, _08048BF8 @ =gUnk_080D2030 + ldrb r0, [r4, #0x14] + lsls r0, r0, #3 + ldrb r2, [r4, #0xa] + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 + b _08048CEA + .align 2, 0 +_08048BF8: .4byte gUnk_080D2030 +_08048BFC: + strb r6, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r1, _08048C30 @ =gUnk_080D2010 + ldrb r0, [r4, #0x14] + lsls r0, r0, #3 + ldrb r2, [r4, #0xa] + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0x40 + bl CreateFX + b _08048CEA + .align 2, 0 +_08048C30: .4byte gUnk_080D2010 +_08048C34: + adds r5, r2, #0 + adds r5, #0x80 + ldrb r0, [r5] + asrs r0, r1 + ands r0, r6 + cmp r0, #0 + beq _08048CBC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x13 + bhi _08048C6C + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xf4 + strb r0, [r1] + adds r1, #2 + movs r0, #0x89 + strb r0, [r1] + ldrb r1, [r2, #0x14] + lsrs r1, r1, #6 + adds r1, #0x14 + adds r0, r4, #0 + bl sub_08004260 + ldr r0, _08048CB4 @ =0x00000119 + bl sub_080A3268 +_08048C6C: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048CEA + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x1e + strb r0, [r1] + ldr r1, _08048CB8 @ =gUnk_080D2010 + ldrb r0, [r4, #0x14] + lsls r0, r0, #3 + ldrb r2, [r4, #0xa] + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #7 + bl sub_08004276 + adds r1, r6, #0 + ldrb r4, [r4, #0xa] + lsls r1, r4 + ldrb r0, [r5] + bics r0, r1 + strb r0, [r5] + b _08048CEA + .align 2, 0 +_08048CB4: .4byte 0x00000119 +_08048CB8: .4byte gUnk_080D2010 +_08048CBC: + cmp r3, #0xff + bne _08048CEA + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #0x10 + cmp r0, #3 + bls _08048CE4 + ldrb r1, [r4, #0x14] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_08004260 + bl sub_08000E50 + movs r1, #0x1c + ands r1, r0 + adds r0, r4, #0 + bl sub_08004276 +_08048CE4: + adds r0, r4, #0 + bl sub_08004274 +_08048CEA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08048CEC +sub_08048CEC: @ 0x08048CEC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048D1A + movs r0, #1 + strb r0, [r4, #0xc] + ldr r1, _08048D1C @ =gUnk_080D2010 + ldrb r0, [r4, #0x14] + lsls r0, r0, #3 + ldrb r2, [r4, #0xa] + adds r0, r0, r2 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_08048D1A: + pop {r4, pc} + .align 2, 0 +_08048D1C: .4byte gUnk_080D2010 + + thumb_func_start sub_08048D20 +sub_08048D20: @ 0x08048D20 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #6 + ldrb r1, [r4, #0x14] + cmp r0, r1 + beq _08048D60 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0xa] + lsls r3, r0, #3 + adds r1, r1, r3 + lsls r1, r1, #2 + ldr r0, _08048D64 @ =gUnk_080D1F90 + adds r1, r1, r0 + ldr r2, _08048D68 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r5, [r1] + adds r0, r0, r5 + strh r0, [r4, #0x2e] + ldrh r0, [r2, #8] + ldrh r1, [r1, #2] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldr r1, _08048D6C @ =gUnk_080D2010 + ldrb r0, [r4, #0xa] + adds r0, r0, r3 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_08048D60: + pop {r4, r5, pc} + .align 2, 0 +_08048D64: .4byte gUnk_080D1F90 +_08048D68: .4byte gUnk_03000BF0 +_08048D6C: .4byte gUnk_080D2010 + + thumb_func_start sub_08048D70 +sub_08048D70: @ 0x08048D70 + push {lr} + adds r1, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _08048D8E + ldr r1, [r1, #0x64] + ldr r0, [r1, #8] + cmp r0, #0 + bne _08048D86 + ldr r0, [r1, #0xc] +_08048D86: + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _08048D92 +_08048D8E: + movs r0, #1 + b _08048D94 +_08048D92: + movs r0, #0 +_08048D94: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08048D98 +sub_08048D98: @ 0x08048D98 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, [r5, #0x50] + ldr r0, [r6, #4] + cmp r0, #0 + bne _08048DA8 + bl sub_0805E780 +_08048DA8: + ldr r4, _08048E00 @ =gUnk_080D22D8 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + ldrb r2, [r6, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r6, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x19] + adds r0, r6, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, r5, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + pop {r4, r5, r6, pc} + .align 2, 0 +_08048E00: .4byte gUnk_080D22D8 + + thumb_func_start sub_08048E04 +sub_08048E04: @ 0x08048E04 + push {lr} + ldr r2, _08048E18 @ =gUnk_080D22F0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08048E18: .4byte gUnk_080D22F0 + + thumb_func_start sub_08048E1C +sub_08048E1C: @ 0x08048E1C + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x45 + ldrb r1, [r0] + movs r0, #0xff + subs r0, r0, r1 + cmp r0, #0 + beq _08048E96 + ldr r4, [r5, #0x50] + adds r1, r4, #0 + adds r1, #0x45 + ldrb r2, [r1] + cmp r2, r0 + bls _08048E48 + subs r0, r2, r0 + strb r0, [r1] + ldr r0, _08048E44 @ =0x00000127 + bl sub_080A3268 + b _08048E5C + .align 2, 0 +_08048E44: .4byte 0x00000127 +_08048E48: + movs r0, #0 + strb r0, [r1] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x28 + movs r1, #0 + bl sub_08080964 +_08048E5C: + adds r2, r5, #0 + adds r2, #0x3d + ldrb r1, [r2] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + ble _08048E8E + adds r0, r4, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r4, [r4, #0x54] + ldrb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3d + strb r0, [r1] + ldr r4, [r4, #0x54] + ldrb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3d + strb r0, [r1] + ldr r4, [r4, #0x54] + ldrb r1, [r2] + adds r0, r4, #0 + adds r0, #0x3d + strb r1, [r0] +_08048E8E: + adds r1, r5, #0 + adds r1, #0x45 + movs r0, #0xff + strb r0, [r1] +_08048E96: + ldr r1, _08048EA0 @ =gUnk_080D22D8 + adds r0, r5, #0 + bl sub_0804AA30 + pop {r4, r5, pc} + .align 2, 0 +_08048EA0: .4byte gUnk_080D22D8 + + thumb_func_start sub_08048EA4 +sub_08048EA4: @ 0x08048EA4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, [r4, #0x50] + ldrb r1, [r0, #0x14] + movs r0, #0xe0 + ands r0, r1 + lsrs r0, r0, #3 + ldrb r1, [r4, #0xa] + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x78 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08048F50 + adds r0, r4, #0 + bl sub_08048F74 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08048ED0 +sub_08048ED0: @ 0x08048ED0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08048F50 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048EFC + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x2d + strb r0, [r4, #0xe] +_08048EFC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08048F00 +sub_08048F00: @ 0x08048F00 + push {r4, lr} + adds r4, r0, #0 + bl sub_08048F50 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08048F2E + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_08048F2E: + pop {r4, pc} + + thumb_func_start sub_08048F30 +sub_08048F30: @ 0x08048F30 + push {r4, lr} + adds r4, r0, #0 + bl sub_08048F50 + adds r0, r4, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08048F4E + bl sub_0805E780 +_08048F4E: + pop {r4, pc} + + thumb_func_start sub_08048F50 +sub_08048F50: @ 0x08048F50 + push {lr} + adds r1, r0, #0 + adds r0, #0x78 + ldrb r3, [r0] + lsls r3, r3, #1 + ldr r0, _08048F70 @ =gUnk_080D2300 + adds r3, r3, r0 + ldr r0, [r1, #0x50] + movs r2, #0 + ldrsb r2, [r3, r2] + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + bl sub_0806FA90 + pop {pc} + .align 2, 0 +_08048F70: .4byte gUnk_080D2300 + + thumb_func_start sub_08048F74 +sub_08048F74: @ 0x08048F74 + push {lr} + ldr r2, _08048F88 @ =gUnk_080D2348 + adds r1, r0, #0 + adds r1, #0x78 + ldrb r1, [r1] + adds r1, r1, r2 + ldrb r1, [r1] + bl sub_08004260 + pop {pc} + .align 2, 0 +_08048F88: .4byte gUnk_080D2348 + + thumb_func_start sub_08048F8C +sub_08048F8C: @ 0x08048F8C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08048F9C + bl sub_0805E780 +_08048F9C: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08048FD4 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + movs r0, #0xff + strb r0, [r4, #0x14] +_08048FD4: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0x14] + lsrs r0, r0, #5 + lsls r6, r0, #0x18 + lsrs r5, r6, #0x18 + ldrb r0, [r4, #0x14] + cmp r5, r0 + beq _08049018 + strb r5, [r4, #0x14] + ldr r3, _08049010 @ =gUnk_080D28CC + lsls r1, r5, #1 + adds r1, r1, r3 + ldr r2, _08049014 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r1, [r1] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + adds r1, r5, #1 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r0, [r2, #8] + ldrh r1, [r1] + adds r0, r0, r1 + strh r0, [r4, #0x32] + lsrs r1, r6, #0x19 + adds r0, r4, #0 + bl sub_08004260 + b _0804901E + .align 2, 0 +_08049010: .4byte gUnk_080D28CC +_08049014: .4byte gUnk_03000BF0 +_08049018: + adds r0, r4, #0 + bl sub_08004274 +_0804901E: + movs r0, #2 + ands r0, r5 + cmp r0, #0 + beq _08049038 + ldr r0, _08049034 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r2, #0x32 + ldrsh r0, [r0, r2] + b _08049042 + .align 2, 0 +_08049034: .4byte gLinkEntity +_08049038: + ldr r0, _08049054 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r2, #0x2e + ldrsh r0, [r0, r2] +_08049042: + cmp r1, r0 + bge _08049048 + adds r5, #1 +_08049048: + ldr r0, _08049058 @ =gUnk_080D28AC + lsls r1, r5, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r4, #0x48] + pop {r4, r5, r6, pc} + .align 2, 0 +_08049054: .4byte gLinkEntity +_08049058: .4byte gUnk_080D28AC + + thumb_func_start sub_0804905C +sub_0804905C: @ 0x0804905C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _0804907C + adds r0, r5, #0 + adds r0, #0x7d + ldrb r1, [r0] + movs r0, #3 + ands r1, r0 + ldrb r2, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] +_0804907C: + adds r1, r5, #0 + adds r1, #0x45 + ldrb r0, [r1] + adds r2, r0, #0 + cmp r2, #0 + bne _08049092 + movs r0, #0xff + strb r0, [r1] + movs r0, #4 + strb r0, [r5, #0xc] + strb r2, [r5, #0xd] +_08049092: + ldr r1, _080490F8 @ =gUnk_080D2974 + ldrb r0, [r5, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + adds r4, r5, #0 + adds r4, #0x78 + ldrh r3, [r4] + adds r0, r5, #0 + movs r1, #0xaa + movs r2, #0xaa + bl sub_0805EC9C + ldrh r0, [r4] + lsrs r0, r0, #8 + rsbs r0, r0, #0 + strb r0, [r5, #0x14] + adds r0, r5, #0 + bl sub_080499F0 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + adds r1, r5, #0 + adds r1, #0x7d + strb r0, [r1] + ldrb r2, [r5, #0x18] + lsls r0, r2, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080490F4 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldr r1, _080490FC @ =gUnk_03000BF0 + movs r3, #0xc + ldrsh r1, [r1, r3] + subs r0, r0, r1 + adds r0, #0x30 + movs r1, #0x80 + lsls r1, r1, #1 + cmp r0, r1 + bls _080490F4 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r5, #0x18] +_080490F4: + pop {r4, r5, pc} + .align 2, 0 +_080490F8: .4byte gUnk_080D2974 +_080490FC: .4byte gUnk_03000BF0 + + thumb_func_start sub_08049100 +sub_08049100: @ 0x08049100 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x7c + bl sub_0807CBE4 + cmp r0, #0 + beq _08049144 + ldr r4, _08049140 @ =0x00004081 + adds r0, r4, #0 + movs r1, #0xa + movs r2, #2 + bl sub_0800015E + adds r0, r4, #0 + movs r1, #0x4a + movs r2, #2 + bl sub_0800015E + adds r0, r4, #0 + movs r1, #0x8a + movs r2, #2 + bl sub_0800015E + adds r0, r4, #0 + movs r1, #0xca + movs r2, #2 + bl sub_0800015E + bl sub_0805E780 + b _0804916E + .align 2, 0 +_08049140: .4byte 0x00004081 +_08049144: + ldr r4, _080491E8 @ =0x00000323 + adds r0, r4, #0 + movs r1, #0xa + movs r2, #1 + bl sub_0807B7D8 + adds r0, r4, #0 + movs r1, #0x4a + movs r2, #1 + bl sub_0807B7D8 + adds r0, r4, #0 + movs r1, #0x8a + movs r2, #1 + bl sub_0807B7D8 + adds r0, r4, #0 + movs r1, #0xca + movs r2, #1 + bl sub_0807B7D8 +_0804916E: + movs r0, #0x22 + bl sub_080A7EE0 + adds r2, r0, #0 + cmp r2, #0 + beq _080491E4 + movs r1, #0 + movs r3, #1 + movs r0, #1 + strb r0, [r2, #0xa] + str r5, [r2, #0x50] + str r2, [r5, #0x54] + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + movs r0, #0x3c + strb r0, [r5, #0xe] + movs r0, #0xc0 + strb r0, [r5, #0x15] + strb r0, [r5, #0x14] + movs r4, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + ldrb r1, [r5, #0x19] + movs r0, #3 + orrs r1, r0 + ldrb r2, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r3 + strb r0, [r5, #0x18] + ldrb r2, [r5, #0x1b] + movs r3, #0x3f + adds r0, r3, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r5, #0x1b] + ands r1, r3 + orrs r1, r2 + strb r1, [r5, #0x19] + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x7c + strb r4, [r0] + subs r0, #4 + movs r1, #0x80 + lsls r1, r1, #7 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC +_080491E4: + pop {r4, r5, pc} + .align 2, 0 +_080491E8: .4byte 0x00000323 + + thumb_func_start sub_080491EC +sub_080491EC: @ 0x080491EC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08049208 @ =gUnk_080D2988 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08049208: .4byte gUnk_080D2988 + + thumb_func_start sub_0804920C +sub_0804920C: @ 0x0804920C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0804921C + subs r0, #1 + strb r0, [r4, #0xe] + b _08049268 +_0804921C: + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + ldr r2, _0804926C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldr r1, _08049270 @ =0xFFFFFF00 + adds r0, r0, r1 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _08049268 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x80 + strb r0, [r4, #0x15] + strb r0, [r4, #0x14] + movs r0, #0xc0 + strh r0, [r4, #0x24] + ldrh r0, [r2, #6] + adds r0, #0xa8 + strh r0, [r4, #0x2e] + ldrh r0, [r2, #8] + subs r0, #0x40 + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x78 + movs r1, #0x80 + lsls r1, r1, #8 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] +_08049268: + pop {r4, pc} + .align 2, 0 +_0804926C: .4byte gUnk_03000BF0 +_08049270: .4byte 0xFFFFFF00 + + thumb_func_start sub_08049274 +sub_08049274: @ 0x08049274 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + ldr r0, _080492A4 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r0, #0x40 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _080492A2 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_080492A2: + pop {r4, pc} + .align 2, 0 +_080492A4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080492A8 +sub_080492A8: @ 0x080492A8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080492C4 @ =gUnk_080D2990 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_080492C4: .4byte gUnk_080D2990 + + thumb_func_start sub_080492C8 +sub_080492C8: @ 0x080492C8 + push {r4, r5, lr} + adds r3, r0, #0 + movs r0, #1 + strb r0, [r3, #0xd] + movs r1, #0 + movs r0, #0x90 + lsls r0, r0, #1 + strh r0, [r3, #0x24] + adds r0, r3, #0 + adds r0, #0x6e + strb r1, [r0] + movs r0, #0x2e + ldrsh r1, [r3, r0] + ldr r2, _08049300 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + adds r5, r2, #0 + cmp r1, #0xa7 + bgt _08049304 + adds r2, r3, #0 + adds r2, #0x80 + movs r0, #0xd8 + strh r0, [r2] + adds r1, r3, #0 + adds r1, #0x74 + adds r0, #0x28 + b _08049314 + .align 2, 0 +_08049300: .4byte gUnk_03000BF0 +_08049304: + adds r2, r3, #0 + adds r2, #0x80 + movs r0, #0x78 + strh r0, [r2] + adds r1, r3, #0 + adds r1, #0x74 + movs r0, #0xff + lsls r0, r0, #8 +_08049314: + strh r0, [r1] + adds r4, r1, #0 + ldrh r0, [r5, #6] + ldrh r1, [r2] + adds r0, r0, r1 + strh r0, [r2] + movs r2, #0x32 + ldrsh r0, [r3, r2] + ldrh r1, [r5, #8] + subs r0, r0, r1 + cmp r0, #0x7f + bgt _08049336 + adds r1, r3, #0 + adds r1, #0x82 + movs r0, #0xb0 + strh r0, [r1] + b _08049346 +_08049336: + adds r1, r3, #0 + adds r1, #0x82 + movs r0, #0x50 + strh r0, [r1] + movs r2, #0 + ldrsh r0, [r4, r2] + rsbs r0, r0, #0 + strh r0, [r4] +_08049346: + ldrh r0, [r5, #8] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + adds r0, r3, #0 + bl sub_08049358 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08049358 +sub_08049358: @ 0x08049358 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x82 + ldrh r1, [r1] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + adds r3, r0, #0 + ldrb r2, [r4, #0x15] + subs r0, r2, r3 + adds r0, #2 + movs r1, #0xff + ands r0, r1 + cmp r0, #4 + bls _08049398 + subs r0, r3, r2 + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08049394 + subs r0, r2, #1 + b _08049396 +_08049394: + adds r0, r2, #1 +_08049396: + strb r0, [r4, #0x15] +_08049398: + ldrb r1, [r4, #0x15] + movs r5, #0x80 + lsls r5, r5, #1 + subs r1, r5, r1 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + adds r0, r4, #0 + adds r0, #0x80 + ldrh r1, [r0] + adds r0, #2 + ldrh r2, [r0] + movs r0, #0x24 + ldrsh r3, [r4, r0] + asrs r3, r3, #0x10 + adds r3, #0x10 + adds r0, r4, #0 + bl sub_0806FCB8 + cmp r0, #0 + beq _080493E0 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0xc0 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x7e + strh r5, [r0] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] +_080493E0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080493E4 +sub_080493E4: @ 0x080493E4 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x76 + adds r0, #0x74 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x18 + strb r0, [r4, #0x15] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0804943A + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldr r3, _08049458 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + adds r2, #0xa8 + ldrh r3, [r3, #8] + adds r3, #0x80 + bl sub_080045D4 + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + subs r0, r0, r1 + movs r1, #0xf + ands r0, r1 + cmp r0, #8 + bne _0804943A + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #7 + strb r0, [r4, #0xf] +_0804943A: + adds r0, r4, #0 + bl sub_08049944 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + pop {r4, pc} + .align 2, 0 +_08049458: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804945C +sub_0804945C: @ 0x0804945C + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x76 + adds r0, #0x74 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r1, r0, #0x18 + strb r1, [r4, #0x15] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0804948C + movs r0, #0x1f + ands r1, r0 + cmp r1, #0 + bne _080494B2 + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #0x5a + strb r0, [r4, #0xe] + b _080494B2 +_0804948C: + adds r0, r4, #0 + bl sub_08049A8C + cmp r0, #0 + beq _080494B2 + movs r0, #0x23 + bl sub_080A7EE0 + adds r2, r0, #0 + cmp r2, #0 + beq _080494B2 + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + str r4, [r2, #0x50] + adds r0, r2, #0 + bl sub_08016A04 +_080494B2: + adds r0, r4, #0 + bl sub_08049944 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080494D0 +sub_080494D0: @ 0x080494D0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + ldrb r0, [r4, #0xe] + subs r1, r0, #1 + strb r1, [r4, #0xe] + movs r2, #0xff + lsls r0, r1, #0x18 + cmp r0, #0 + bne _08049518 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r2 + cmp r0, #0 + bne _0804950E + movs r0, #5 + strb r0, [r4, #0xd] + ldrh r0, [r4, #0x24] + adds r0, #0x40 + strh r0, [r4, #0x24] + b _08049534 +_0804950E: + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0xa + strb r0, [r4, #0xe] + b _08049534 +_08049518: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x50 + bne _08049534 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + movs r0, #0x62 + bl sub_0804AA60 + cmp r0, #0 + beq _08049534 + str r4, [r0, #0x50] +_08049534: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08049538 +sub_08049538: @ 0x08049538 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + ldr r0, _08049570 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + adds r1, #0xa8 + ldrh r2, [r0, #8] + adds r2, #0x80 + adds r0, r4, #0 + movs r3, #0x70 + bl sub_0806FCB8 + adds r1, r0, #0 + cmp r1, #0 + bne _0804956E + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_0804956E: + pop {r4, pc} + .align 2, 0 +_08049570: .4byte gUnk_03000BF0 + + thumb_func_start sub_08049574 +sub_08049574: @ 0x08049574 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08049590 @ =gUnk_080D29A8 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08049590: .4byte gUnk_080D29A8 + + thumb_func_start sub_08049594 +sub_08049594: @ 0x08049594 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _080495C8 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + movs r3, #0x2e + ldrsh r1, [r4, r3] + subs r1, #0xa8 + subs r0, r0, r1 + ldrh r1, [r2, #8] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r2, #0x80 + subs r1, r1, r2 + bl sub_080045DA + ldrb r2, [r4, #0x15] + cmp r0, r2 + beq _080495D2 + subs r0, r0, r2 + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080495CC + subs r0, r2, #1 + strb r0, [r4, #0x15] + b _080495DC + .align 2, 0 +_080495C8: .4byte gUnk_03000BF0 +_080495CC: + adds r0, r2, #1 + strb r0, [r4, #0x15] + b _080495DC +_080495D2: + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] +_080495DC: + adds r0, r4, #0 + bl sub_08049944 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08047EA4 + pop {r4, pc} + + thumb_func_start sub_080495F8 +sub_080495F8: @ 0x080495F8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08049654 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + adds r1, #0xa8 + ldrh r2, [r0, #8] + adds r2, #0x80 + adds r0, r4, #0 + movs r3, #0x28 + bl sub_0806FCB8 + cmp r0, #0 + beq _0804963C + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x2d + strb r0, [r4, #0xe] + bl sub_08000E50 + ldr r2, _08049658 @ =gUnk_080D29B8 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] +_0804963C: + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + pop {r4, pc} + .align 2, 0 +_08049654: .4byte gUnk_03000BF0 +_08049658: .4byte gUnk_080D29B8 + + thumb_func_start sub_0804965C +sub_0804965C: @ 0x0804965C + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x76 + adds r0, #0x74 + ldrh r0, [r0] + ldrh r2, [r1] + adds r0, r0, r2 + strh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804969A + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] +_0804969A: + pop {r4, pc} + + thumb_func_start sub_0804969C +sub_0804969C: @ 0x0804969C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080496C8 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_080496C8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080496CC +sub_080496CC: @ 0x080496CC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080496E8 @ =gUnk_080D29C0 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_080496E8: .4byte gUnk_080D29C0 + + thumb_func_start sub_080496EC +sub_080496EC: @ 0x080496EC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + bl sub_08079F8C + cmp r0, #0 + beq _08049720 + ldr r0, _0804971C @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08049720 + movs r0, #2 + bl sub_08078A90 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _08049724 + .align 2, 0 +_0804971C: .4byte gLinkEntity +_08049720: + movs r0, #1 + strb r0, [r4, #0xd] +_08049724: + adds r0, r4, #0 + bl sub_08049944 + pop {r4, pc} + + thumb_func_start sub_0804972C +sub_0804972C: @ 0x0804972C + push {r4, lr} + adds r4, r0, #0 + bl sub_08079F8C + cmp r0, #0 + beq _08049750 + ldr r0, _08049758 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _08049750 + movs r0, #2 + bl sub_08078A90 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #1 + strb r0, [r4, #0xe] +_08049750: + adds r0, r4, #0 + bl sub_08049944 + pop {r4, pc} + .align 2, 0 +_08049758: .4byte gLinkEntity + + thumb_func_start sub_0804975C +sub_0804975C: @ 0x0804975C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0804977E + movs r0, #3 + strb r0, [r1, #0xd] + movs r0, #0xb4 + strb r0, [r1, #0xe] + adds r0, #0x4c + strh r0, [r1, #0x24] + ldrb r0, [r1, #0x15] + subs r0, #0x40 + strb r0, [r1, #0x15] +_0804977E: + adds r0, r1, #0 + bl sub_08049944 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08049788 +sub_08049788: @ 0x08049788 + push {r4, lr} + adds r4, r0, #0 + bl sub_08049AB0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080497B8 + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x14] + strb r0, [r4, #0x15] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + b _080497C6 +_080497B8: + ldrb r0, [r4, #0x15] + movs r1, #0x80 + eors r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08049B20 +_080497C6: + adds r0, r4, #0 + bl sub_08049944 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080497D0 +sub_080497D0: @ 0x080497D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08049AB0 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + subs r1, r1, r0 + movs r0, #0xff + ands r1, r0 + lsls r1, r1, #8 + adds r0, r4, #0 + bl sub_08049998 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08049802 + movs r0, #5 + strb r0, [r4, #0xd] + movs r1, #0x10 + bl sub_08050054 +_08049802: + pop {r4, pc} + + thumb_func_start sub_08049804 +sub_08049804: @ 0x08049804 + push {r4, lr} + adds r4, r0, #0 + bl sub_08049944 + ldr r0, _0804987C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08049878 + movs r0, #6 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + movs r3, #4 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r4, [r4, #0x54] + ldrb r2, [r4, #0x10] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x10] + ldrb r2, [r4, #0x18] + adds r0, r3, #0 + ands r0, r2 + strb r0, [r4, #0x18] + ldr r4, [r4, #0x54] + ldrb r2, [r4, #0x10] + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x10] + ldrb r2, [r4, #0x18] + adds r0, r3, #0 + ands r0, r2 + strb r0, [r4, #0x18] + ldr r4, [r4, #0x54] + ldrb r0, [r4, #0x10] + ands r1, r0 + strb r1, [r4, #0x10] + ldrb r0, [r4, #0x18] + ands r3, r0 + strb r3, [r4, #0x18] + ldr r4, _08049880 @ =gLinkEntity + ldr r1, _08049884 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0xa8 + movs r2, #0 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x80 + strh r0, [r4, #0x32] + strb r2, [r4, #0x14] + bl sub_080809D4 + movs r0, #4 + movs r1, #4 + bl sub_08050054 +_08049878: + pop {r4, pc} + .align 2, 0 +_0804987C: .4byte gUnk_03000FD0 +_08049880: .4byte gLinkEntity +_08049884: .4byte gUnk_03000BF0 + + thumb_func_start sub_08049888 +sub_08049888: @ 0x08049888 + push {lr} + adds r1, r0, #0 + ldr r0, _080498B0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080498AE + movs r0, #7 + strb r0, [r1, #0xd] + movs r0, #0xa0 + strb r0, [r1, #0xe] + movs r0, #0x72 + bl sub_080A3268 + movs r0, #0x7c + bl sub_0807CCC8 + movs r0, #1 + bl sub_08078A90 +_080498AE: + pop {pc} + .align 2, 0 +_080498B0: .4byte gUnk_03000FD0 + + thumb_func_start sub_080498B4 +sub_080498B4: @ 0x080498B4 + push {lr} + ldrb r1, [r0, #0xe] + subs r1, #1 + strb r1, [r0, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _080498C8 + bl sub_0805E780 + b _0804993E +_080498C8: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bne _080498E4 + movs r0, #0x36 + movs r1, #0xca + movs r2, #1 + bl sub_0807B7D8 + ldr r0, _080498E0 @ =0x00004081 + movs r1, #0xca + b _0804990E + .align 2, 0 +_080498E0: .4byte 0x00004081 +_080498E4: + cmp r0, #0x18 + bne _080498FC + movs r0, #0x36 + movs r1, #0x8a + movs r2, #1 + bl sub_0807B7D8 + ldr r0, _080498F8 @ =0x00004081 + movs r1, #0x8a + b _0804990E + .align 2, 0 +_080498F8: .4byte 0x00004081 +_080498FC: + cmp r0, #0x20 + bne _08049920 + movs r0, #0x36 + movs r1, #0x4a + movs r2, #1 + bl sub_0807B7D8 + ldr r0, _0804991C @ =0x00004081 + movs r1, #0x4a +_0804990E: + movs r2, #2 + bl sub_0800015E + movs r0, #0x71 + bl sub_080A3268 + b _0804993E + .align 2, 0 +_0804991C: .4byte 0x00004081 +_08049920: + cmp r0, #0x28 + bne _0804993E + movs r0, #0x36 + movs r1, #0xa + movs r2, #1 + bl sub_0807B7D8 + ldr r0, _08049940 @ =0x00004081 + movs r1, #0xa + movs r2, #2 + bl sub_0800015E + movs r0, #0x71 + bl sub_080A3268 +_0804993E: + pop {pc} + .align 2, 0 +_08049940: .4byte 0x00004081 + + thumb_func_start sub_08049944 +sub_08049944: @ 0x08049944 + push {r4, r5, lr} + adds r4, r0, #0 + adds r4, #0x7c + ldrb r3, [r4] + lsls r2, r3, #1 + movs r1, #0x7f + ands r2, r1 + movs r1, #0x80 + ands r1, r3 + orrs r2, r1 + strb r2, [r4] + ldr r5, _08049990 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r5, r2] + movs r3, #0x32 + ldrsh r2, [r5, r3] + movs r3, #0x20 + bl sub_0806FCB8 + cmp r0, #0 + beq _0804998C + ldr r2, _08049994 @ =gUnk_03003F80 + movs r0, #1 + strb r0, [r2, #0x14] + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0804998C + ldr r0, [r2, #0x30] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #0x30] + ldrb r0, [r4] + movs r1, #1 + orrs r0, r1 + strb r0, [r4] +_0804998C: + pop {r4, r5, pc} + .align 2, 0 +_08049990: .4byte gLinkEntity +_08049994: .4byte gUnk_03003F80 + + thumb_func_start sub_08049998 +sub_08049998: @ 0x08049998 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08049944 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08047EA4 + movs r0, #0x2e + ldrsh r4, [r5, r0] + movs r2, #0x32 + ldrsh r6, [r5, r2] + movs r0, #0x24 + ldrsh r1, [r5, r0] + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + adds r0, r5, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080499EA + bl sub_08079F8C + cmp r0, #0 + beq _080499EA + ldr r0, _080499EC @ =gLinkEntity + ldrh r1, [r5, #0x2e] + subs r1, r1, r4 + ldrh r2, [r0, #0x2e] + adds r1, r1, r2 + strh r1, [r0, #0x2e] + ldrh r1, [r5, #0x32] + subs r1, r1, r6 + ldrh r2, [r0, #0x32] + adds r1, r1, r2 + strh r1, [r0, #0x32] +_080499EA: + pop {r4, r5, r6, pc} + .align 2, 0 +_080499EC: .4byte gLinkEntity + + thumb_func_start sub_080499F0 +sub_080499F0: @ 0x080499F0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08049A82 + ldr r5, _08049A84 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08049A82 + bl sub_08079F8C + cmp r0, #0 + beq _08049A82 + adds r2, r4, #0 + adds r2, #0x7c + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + bne _08049A82 + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r3, #0x32 + ldrsh r2, [r4, r3] + adds r0, r5, #0 + movs r3, #0x24 + bl sub_0806FCB8 + cmp r0, #0 + beq _08049A7E + ldrb r1, [r6] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08049A7E + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r5, r3] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + bl sub_080045DA + ldr r3, _08049A88 @ =gUnk_080C9160 + lsls r1, r0, #1 + adds r1, r1, r3 + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r2, r1, #3 + adds r2, r2, r1 + lsls r2, r2, #0xa + ldr r1, [r4, #0x2c] + adds r1, r1, r2 + str r1, [r5, #0x2c] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r3, #0 + ldrsh r0, [r0, r3] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #0xa + ldr r0, [r4, #0x30] + subs r0, r0, r1 + str r0, [r5, #0x30] +_08049A7E: + movs r0, #0 + strb r0, [r6] +_08049A82: + pop {r4, r5, r6, pc} + .align 2, 0 +_08049A84: .4byte gLinkEntity +_08049A88: .4byte gUnk_080C9160 + + thumb_func_start sub_08049A8C +sub_08049A8C: @ 0x08049A8C + push {lr} + ldrb r1, [r0, #0xe] + subs r1, #1 + strb r1, [r0, #0xe] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _08049AAA + bl sub_08000E50 + movs r1, #0xf + ands r1, r0 + cmp r1, #0 + beq _08049AAA + movs r0, #1 + b _08049AAC +_08049AAA: + movs r0, #0 +_08049AAC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08049AB0 +sub_08049AB0: @ 0x08049AB0 + push {r4, r5, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xf] + adds r0, #1 + strb r0, [r2, #0xf] + movs r1, #0xff + ands r0, r1 + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _08049B18 + adds r0, r2, #0 + movs r1, #0x48 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _08049B18 + bl sub_08000E50 + movs r3, #0x30 + adds r1, r0, #0 + ands r1, r3 + ldr r5, _08049B1C @ =0x0000FFE8 + adds r2, r5, #0 + adds r1, r2, r1 + ldrh r5, [r4, #0x2e] + adds r1, r1, r5 + strh r1, [r4, #0x2e] + lsrs r0, r0, #8 + ands r0, r3 + adds r2, r2, r0 + ldrh r0, [r4, #0x32] + adds r2, r2, r0 + strh r2, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 +_08049B18: + pop {r4, r5, pc} + .align 2, 0 +_08049B1C: .4byte 0x0000FFE8 + + thumb_func_start sub_08049B20 +sub_08049B20: @ 0x08049B20 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08049944 + movs r0, #0x2e + ldrsh r5, [r4, r0] + movs r2, #0x32 + ldrsh r6, [r4, r2] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + adds r0, r4, #0 + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08049B68 + bl sub_08079F8C + cmp r0, #0 + beq _08049B68 + ldr r0, _08049B6C @ =gLinkEntity + ldrh r1, [r4, #0x2e] + subs r1, r1, r5 + ldrh r2, [r0, #0x2e] + adds r1, r1, r2 + strh r1, [r0, #0x2e] + ldrh r1, [r4, #0x32] + subs r1, r1, r6 + ldrh r2, [r0, #0x32] + adds r1, r1, r2 + strh r1, [r0, #0x32] +_08049B68: + pop {r4, r5, r6, pc} + .align 2, 0 +_08049B6C: .4byte gLinkEntity + + thumb_func_start sub_08049B70 +sub_08049B70: @ 0x08049B70 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08049BB0 + adds r0, #1 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0xa] + lsls r0, r0, #4 + ldr r1, _08049BEC @ =gUnk_080D29E0 + adds r0, r0, r1 + bl sub_080028F4 + adds r4, r5, #0 + adds r4, #0x68 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bls _08049B9C + bl sub_0805E780 +_08049B9C: + ldrb r0, [r4] + cmp r0, #7 + bhi _08049BB0 + movs r0, #0x67 + bl sub_0807CA84 + cmp r0, #0 + bne _08049BB0 + movs r0, #8 + strb r0, [r4] +_08049BB0: + adds r0, r5, #0 + bl sub_08049C2C + cmp r0, #0 + beq _08049C20 + adds r0, r5, #0 + adds r0, #0x68 + ldrb r1, [r0] + cmp r1, #0 + blt _08049C16 + cmp r1, #7 + ble _08049BF0 + cmp r1, #8 + bne _08049C16 + movs r0, #0x40 + movs r1, #0x60 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08049C16 + movs r0, #0 + strb r0, [r4, #0xe] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + b _08049C16 + .align 2, 0 +_08049BEC: .4byte gUnk_080D29E0 +_08049BF0: + ldr r0, _08049C24 @ =gUnk_080D2AB0 + adds r0, r1, r0 + ldrb r2, [r0] + movs r0, #0x96 + movs r1, #7 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08049C16 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x32] + adds r0, #0x10 + strh r0, [r4, #0x32] + ldr r0, _08049C28 @ =0x0000FFE0 + strh r0, [r4, #0x36] +_08049C16: + adds r0, r5, #0 + bl sub_08049CF4 + bl sub_0805E780 +_08049C20: + pop {r4, r5, pc} + .align 2, 0 +_08049C24: .4byte gUnk_080D2AB0 +_08049C28: .4byte 0x0000FFE0 + + thumb_func_start sub_08049C2C +sub_08049C2C: @ 0x08049C2C + push {r4, r5, r6, lr} + adds r2, r0, #0 + ldr r3, _08049CA4 @ =gLinkEntity + ldrb r0, [r3, #0xc] + cmp r0, #6 + bne _08049CA8 + movs r0, #0x2e + ldrsh r1, [r3, r0] + movs r4, #0x2e + ldrsh r0, [r2, r4] + subs r1, r1, r0 + movs r5, #6 + movs r4, #0x80 + lsls r4, r4, #8 + adds r0, r1, #0 + ands r0, r4 + cmp r0, #0 + beq _08049C52 + movs r5, #2 +_08049C52: + adds r1, #0x28 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x4f + bhi _08049CA8 + movs r6, #0x32 + ldrsh r1, [r3, r6] + movs r6, #0x32 + ldrsh r0, [r2, r6] + subs r1, r1, r0 + adds r0, r1, #0 + ands r0, r4 + rsbs r0, r0, #0 + asrs r2, r0, #0x1f + movs r0, #4 + ands r2, r0 + adds r1, #0x28 + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x4f + bhi _08049CA8 + ldrb r0, [r3, #0x14] + cmp r0, #0 + bne _08049C86 + cmp r2, #0 + beq _08049C9E +_08049C86: + cmp r0, #4 + bne _08049C8E + cmp r2, #4 + beq _08049C9E +_08049C8E: + cmp r0, #6 + bne _08049C96 + cmp r5, #6 + beq _08049C9E +_08049C96: + cmp r0, #2 + bne _08049CA8 + cmp r5, #2 + bne _08049CA8 +_08049C9E: + movs r0, #1 + b _08049CAA + .align 2, 0 +_08049CA4: .4byte gLinkEntity +_08049CA8: + movs r0, #0 +_08049CAA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08049CAC +sub_08049CAC: @ 0x08049CAC + push {lr} + adds r2, r0, #0 + ldr r1, _08049CC8 @ =gUnk_080D2ABC + ldrb r0, [r2, #0xf] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + cmp r1, #0 + beq _08049CCC + adds r0, r2, #0 + bl _call_via_r1 + b _08049CD0 + .align 2, 0 +_08049CC8: .4byte gUnk_080D2ABC +_08049CCC: + bl sub_0805E780 +_08049CD0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08049CD4 +sub_08049CD4: @ 0x08049CD4 + push {r4, lr} + movs r0, #1 + rsbs r0, r0, #0 + ldr r4, _08049CEC @ =gUnk_02024050 + adds r1, r4, #0 + movs r2, #0x40 + bl sub_0801D610 + ldr r0, _08049CF0 @ =gUnk_020354B0 + str r4, [r0] + pop {r4, pc} + .align 2, 0 +_08049CEC: .4byte gUnk_02024050 +_08049CF0: .4byte gUnk_020354B0 + + thumb_func_start sub_08049CF4 +sub_08049CF4: @ 0x08049CF4 + push {lr} + adds r0, #0x6c + ldrb r3, [r0] + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _08049D14 + ldr r0, _08049D18 @ =gUnk_020354B0 + ldr r2, [r0] + movs r0, #0x1f + ands r3, r0 + movs r1, #1 + lsls r1, r3 + ldr r0, [r2, #4] + orrs r0, r1 + str r0, [r2, #4] +_08049D14: + pop {pc} + .align 2, 0 +_08049D18: .4byte gUnk_020354B0 + + thumb_func_start sub_08049D1C +sub_08049D1C: @ 0x08049D1C + ldr r1, _08049D2C @ =gUnk_020354B0 + ldr r1, [r1] + ldr r1, [r1, #4] + lsrs r1, r0 + movs r0, #1 + bics r0, r1 + bx lr + .align 2, 0 +_08049D2C: .4byte gUnk_020354B0 + + thumb_func_start sub_08049D30 +sub_08049D30: @ 0x08049D30 + push {r4, r5, r6, lr} + ldr r1, _08049D58 @ =gUnk_020354B0 + ldr r0, _08049D5C @ =gUnk_02024050 + str r0, [r1] + adds r5, r1, #0 + ldr r6, _08049D60 @ =gUnk_03000BF0 + ldr r4, _08049D64 @ =0x0000FFFF +_08049D3E: + ldr r3, [r5] + ldrh r0, [r3] + ldrh r2, [r6, #4] + adds r1, r4, #0 + ands r1, r0 + adds r0, r4, #0 + ands r0, r2 + cmp r1, r0 + bne _08049D68 + adds r0, r3, #0 + bl sub_08049DCC + b _08049D7C + .align 2, 0 +_08049D58: .4byte gUnk_020354B0 +_08049D5C: .4byte gUnk_02024050 +_08049D60: .4byte gUnk_03000BF0 +_08049D64: .4byte 0x0000FFFF +_08049D68: + adds r1, r3, #0 + adds r1, #8 + str r1, [r5] + ldr r0, _08049D80 @ =gUnk_02024090 + cmp r1, r0 + blo _08049D3E + bl sub_08049D88 + ldr r1, _08049D84 @ =gUnk_020354B0 + str r0, [r1] +_08049D7C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08049D80: .4byte gUnk_02024090 +_08049D84: .4byte gUnk_020354B0 + + thumb_func_start sub_08049D88 +sub_08049D88: @ 0x08049D88 + push {r4, r5, lr} + ldr r4, _08049DC0 @ =gUnk_02024050 + adds r1, r4, #0 + adds r1, #8 + ldr r3, _08049DC4 @ =gUnk_03000BF0 + adds r2, r4, #0 + adds r2, #0x40 +_08049D96: + ldrh r0, [r1, #2] + ldrh r5, [r4, #2] + cmp r0, r5 + bls _08049DA0 + adds r4, r1, #0 +_08049DA0: + adds r1, #8 + cmp r1, r2 + blo _08049D96 + ldrb r0, [r3, #4] + movs r1, #0 + strb r0, [r4] + ldrb r0, [r3, #5] + strb r0, [r4, #1] + ldr r0, _08049DC8 @ =0x0000FFFF + strh r0, [r4, #2] + str r1, [r4, #4] + adds r0, r4, #0 + bl sub_08049DCC + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 +_08049DC0: .4byte gUnk_02024050 +_08049DC4: .4byte gUnk_03000BF0 +_08049DC8: .4byte 0x0000FFFF + + thumb_func_start sub_08049DCC +sub_08049DCC: @ 0x08049DCC + push {r4, lr} + adds r2, r0, #0 + ldr r1, _08049DF0 @ =gUnk_02024050 + adds r3, r1, #0 + adds r3, #0x40 +_08049DD6: + ldrh r0, [r1, #2] + ldrh r4, [r2, #2] + cmp r0, r4 + bhs _08049DE2 + adds r0, #1 + strh r0, [r1, #2] +_08049DE2: + adds r1, #8 + cmp r1, r3 + blo _08049DD6 + movs r0, #0 + strh r0, [r2, #2] + pop {r4, pc} + .align 2, 0 +_08049DF0: .4byte gUnk_02024050 + + thumb_func_start sub_08049DF4 +sub_08049DF4: @ 0x08049DF4 + push {lr} + adds r2, r0, #0 + ldr r0, _08049E10 @ =gUnk_020000B0 + ldr r0, [r0] + cmp r0, #0 + bne _08049E0C + ldr r1, _08049E14 @ =gUnk_080D3BE8 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_08049E0C: + pop {pc} + .align 2, 0 +_08049E10: .4byte gUnk_020000B0 +_08049E14: .4byte gUnk_080D3BE8 + + thumb_func_start sub_08049E18 +sub_08049E18: @ 0x08049E18 + push {lr} + ldr r1, _08049E38 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #0 + bne _08049E48 + ldr r0, [r1, #0x30] + ldr r1, _08049E3C @ =0x22189B75 + ands r0, r1 + cmp r0, #0 + bne _08049E48 + ldr r1, _08049E40 @ =gUnk_020000B0 + ldr r0, _08049E44 @ =gLinkEntity + str r0, [r1] + b _08049E4A + .align 2, 0 +_08049E38: .4byte gUnk_03003F80 +_08049E3C: .4byte 0x22189B75 +_08049E40: .4byte gUnk_020000B0 +_08049E44: .4byte gLinkEntity +_08049E48: + movs r0, #0 +_08049E4A: + pop {pc} + + thumb_func_start sub_08049E4C +sub_08049E4C: @ 0x08049E4C + push {lr} + ldr r1, _08049E6C @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #0 + bne _08049E7C + ldr r0, [r1, #0x30] + ldr r1, _08049E70 @ =0x22189BF5 + ands r0, r1 + cmp r0, #0 + bne _08049E7C + ldr r1, _08049E74 @ =gUnk_020000B0 + ldr r0, _08049E78 @ =gLinkEntity + str r0, [r1] + b _08049E7E + .align 2, 0 +_08049E6C: .4byte gUnk_03003F80 +_08049E70: .4byte 0x22189BF5 +_08049E74: .4byte gUnk_020000B0 +_08049E78: .4byte gLinkEntity +_08049E7C: + movs r0, #0 +_08049E7E: + pop {pc} + + thumb_func_start sub_08049E80 +sub_08049E80: @ 0x08049E80 + push {lr} + ldr r1, _08049E9C @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #0 + bne _08049E98 + ldr r0, [r1, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08049EA0 +_08049E98: + movs r0, #0 + b _08049EA6 + .align 2, 0 +_08049E9C: .4byte gUnk_03003F80 +_08049EA0: + ldr r1, _08049EA8 @ =gUnk_020000B0 + ldr r0, _08049EAC @ =gLinkEntity + str r0, [r1] +_08049EA6: + pop {pc} + .align 2, 0 +_08049EA8: .4byte gUnk_020000B0 +_08049EAC: .4byte gLinkEntity + + thumb_func_start sub_08049EB0 +sub_08049EB0: @ 0x08049EB0 + push {lr} + ldr r1, _08049ED0 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #0 + bne _08049EE0 + ldr r0, [r1, #0x30] + ldr r1, _08049ED4 @ =0x00080190 + ands r0, r1 + cmp r0, #0 + bne _08049EE0 + ldr r1, _08049ED8 @ =gUnk_020000B0 + ldr r0, _08049EDC @ =gLinkEntity + str r0, [r1] + b _08049EE2 + .align 2, 0 +_08049ED0: .4byte gUnk_03003F80 +_08049ED4: .4byte 0x00080190 +_08049ED8: .4byte gUnk_020000B0 +_08049EDC: .4byte gLinkEntity +_08049EE0: + movs r0, #0 +_08049EE2: + pop {pc} + + thumb_func_start sub_08049EE4 +sub_08049EE4: @ 0x08049EE4 + push {r4, r5, lr} + mov ip, r0 + adds r0, #0x70 + mov r1, ip + adds r1, #0x6e + ldrb r2, [r1] + lsls r2, r2, #2 + ldrh r0, [r0] + adds r2, r2, r0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + adds r1, #4 + mov r0, ip + adds r0, #0x6f + ldrb r3, [r0] + lsls r3, r3, #2 + ldrh r1, [r1] + adds r3, r3, r1 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x10 + mov r1, ip + movs r4, #0x2e + ldrsh r0, [r1, r4] + movs r5, #0x32 + ldrsh r1, [r1, r5] + bl sub_080045D4 + pop {r4, r5, pc} + + thumb_func_start sub_08049F1C +sub_08049F1C: @ 0x08049F1C + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r5, r2, #0 + adds r0, #0x38 + adds r1, #0x38 + ldrb r2, [r0] + ldrb r0, [r1] + ands r0, r2 + cmp r0, #0 + beq _08049F5E + movs r0, #0x2e + ldrsh r2, [r3, r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + subs r2, r2, r0 + movs r0, #0x32 + ldrsh r1, [r3, r0] + movs r3, #0x32 + ldrsh r0, [r4, r3] + subs r1, r1, r0 + adds r3, r5, #0 + muls r3, r5, r3 + adds r0, r2, #0 + muls r0, r2, r0 + adds r2, r1, #0 + muls r2, r1, r2 + adds r1, r2, #0 + adds r0, r0, r1 + cmp r3, r0 + blt _08049F5E + movs r0, #1 + b _08049F60 +_08049F5E: + movs r0, #0 +_08049F60: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08049F64 +sub_08049F64: @ 0x08049F64 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r5, r2, #0 + bl sub_08049DF4 + adds r1, r0, #0 + cmp r1, #0 + beq _08049F80 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08049F1C + b _08049F82 +_08049F80: + movs r0, #0 +_08049F82: + pop {r4, r5, pc} + + thumb_func_start sub_08049F84 +sub_08049F84: @ 0x08049F84 + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + bl sub_08049DF4 + adds r1, r0, #0 + cmp r1, #0 + beq _08049F9C + adds r0, r4, #0 + bl sub_080045C4 + b _08049F9E +_08049F9C: + movs r0, #0xff +_08049F9E: + pop {r4, pc} + + thumb_func_start sub_08049FA0 +sub_08049FA0: @ 0x08049FA0 + push {lr} + adds r3, r0, #0 + adds r0, #0x6e + ldrb r2, [r0] + lsls r2, r2, #3 + movs r1, #0x2e + ldrsh r0, [r3, r1] + adds r1, r3, #0 + adds r1, #0x70 + ldrh r1, [r1] + subs r0, r0, r1 + cmp r2, r0 + blo _08049FD6 + adds r0, r3, #0 + adds r0, #0x6f + ldrb r2, [r0] + lsls r2, r2, #3 + movs r1, #0x32 + ldrsh r0, [r3, r1] + adds r1, r3, #0 + adds r1, #0x72 + ldrh r1, [r1] + subs r0, r0, r1 + cmp r2, r0 + blo _08049FD6 + movs r0, #1 + b _08049FD8 +_08049FD6: + movs r0, #0 +_08049FD8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08049FDC +sub_08049FDC: @ 0x08049FDC + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + bl sub_08049DF4 + adds r3, r0, #0 + cmp r3, #0 + beq _0804A020 + adds r0, r4, #0 + adds r0, #0x6e + ldrb r2, [r0] + lsls r2, r2, #3 + movs r1, #0x2e + ldrsh r0, [r3, r1] + adds r1, r4, #0 + adds r1, #0x70 + ldrh r1, [r1] + subs r0, r0, r1 + cmp r2, r0 + blo _0804A020 + adds r0, r4, #0 + adds r0, #0x6f + ldrb r2, [r0] + lsls r2, r2, #3 + movs r1, #0x32 + ldrsh r0, [r3, r1] + adds r1, r4, #0 + adds r1, #0x72 + ldrh r1, [r1] + subs r0, r0, r1 + cmp r2, r0 + blo _0804A020 + movs r0, #1 + b _0804A022 +_0804A020: + movs r0, #0 +_0804A022: + pop {r4, pc} + + thumb_func_start sub_0804A024 +sub_0804A024: @ 0x0804A024 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, r1, #0 + adds r5, r2, #0 + bl sub_08049DF4 + adds r1, r0, #0 + cmp r1, #0 + beq _0804A040 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_0804A044 + b _0804A042 +_0804A040: + movs r0, #0xff +_0804A042: + pop {r4, r5, pc} + + thumb_func_start sub_0804A044 +sub_0804A044: @ 0x0804A044 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r7, r0, #0 + mov r8, r1 + mov r0, r8 + adds r0, #0x38 + movs r1, #0x38 + adds r1, r1, r7 + mov sl, r1 + ldrb r1, [r0] + mov r3, sl + ldrb r0, [r3] + ands r0, r1 + cmp r0, #0 + beq _0804A15A + movs r5, #0 + mov r0, r8 + movs r3, #0x2e + ldrsh r1, [r0, r3] + ldr r0, [r0, #0x48] + mov ip, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r1, r0 + movs r3, #0x2e + ldrsh r0, [r7, r3] + subs r1, r1, r0 + ldr r4, [r7, #0x48] + movs r0, #0 + ldrsb r0, [r4, r0] + subs r6, r1, r0 + lsrs r3, r2, #1 + adds r0, r6, r3 + cmp r2, r0 + blo _0804A096 + movs r5, #1 +_0804A096: + lsls r0, r2, #1 + mov sb, r0 + adds r0, r6, r2 + cmp sb, r0 + blo _0804A0A4 + movs r0, #2 + orrs r5, r0 +_0804A0A4: + mov r1, r8 + movs r0, #0x32 + ldrsh r1, [r1, r0] + str r1, [sp] + mov r1, ip + ldrb r1, [r1, #1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov ip, r1 + ldr r0, [sp] + add r0, ip + str r0, [sp] + movs r0, #0x32 + ldrsh r1, [r7, r0] + ldr r0, [sp] + subs r0, r0, r1 + movs r1, #1 + ldrsb r1, [r4, r1] + subs r4, r0, r1 + adds r0, r4, r3 + cmp r2, r0 + blo _0804A0D4 + movs r0, #4 + orrs r5, r0 +_0804A0D4: + adds r0, r4, r2 + cmp sb, r0 + blo _0804A0DE + movs r0, #8 + orrs r5, r0 +_0804A0DE: + cmp r5, #0 + beq _0804A15A + movs r0, #5 + ands r0, r5 + cmp r0, #0xa + beq _0804A15A + mov r1, sl + ldrb r0, [r1] + bl sub_0808094C + mov sb, r0 + cmp r6, #0 + bge _0804A0FA + rsbs r6, r6, #0 +_0804A0FA: + cmp r4, #0 + bge _0804A100 + rsbs r4, r4, #0 +_0804A100: + cmp r6, r4 + bge _0804A12E + movs r0, #1 + ands r0, r5 + cmp r0, #0 + beq _0804A11A + adds r0, r7, #0 + mov r1, r8 + mov r2, sb + bl sub_0804A168 + cmp r0, #0xff + bne _0804A15C +_0804A11A: + movs r0, #4 + ands r5, r0 + cmp r5, #0 + beq _0804A15A + adds r0, r7, #0 + mov r1, r8 + mov r2, sb + bl sub_0804A318 + b _0804A156 +_0804A12E: + movs r0, #4 + ands r0, r5 + cmp r0, #0 + beq _0804A144 + adds r0, r7, #0 + mov r1, r8 + mov r2, sb + bl sub_0804A318 + cmp r0, #0xff + bne _0804A15C +_0804A144: + movs r0, #1 + ands r5, r0 + cmp r5, #0 + beq _0804A15A + adds r0, r7, #0 + mov r1, r8 + mov r2, sb + bl sub_0804A168 +_0804A156: + cmp r0, #0xff + bne _0804A15C +_0804A15A: + movs r0, #0xff +_0804A15C: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0804A168 +sub_0804A168: @ 0x0804A168 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + mov sb, r1 + adds r5, r2, #0 + movs r0, #0x32 + ldrsh r1, [r1, r0] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _0804A248 + movs r3, #0x2e + ldrsh r0, [r4, r3] + subs r2, r0, #4 + movs r0, #0xf + mov sl, r0 + adds r0, r2, #0 + mov r1, sl + ands r0, r1 + movs r7, #5 + cmp r0, #7 + bhi _0804A19E + movs r7, #0xa +_0804A19E: + ldr r3, _0804A240 @ =gUnk_03000BF0 + mov r8, r3 + ldrh r1, [r3, #6] + subs r1, r2, r1 + lsrs r1, r1, #4 + movs r6, #0x3f + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r4, r2] + ldrh r3, [r3, #8] + mov ip, r3 + mov r2, ip + subs r2, #0xa + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r0, r1 + mov r2, sb + movs r3, #0x32 + ldrsh r2, [r2, r3] + mov r3, ip + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldr r2, _0804A244 @ =0x00002004 + adds r0, r0, r2 + adds r0, r5, r0 + adds r1, r1, r2 + adds r1, r5, r1 + movs r2, #0x40 + adds r3, r7, #0 + bl sub_0804A4BC + cmp r0, #0 + bne _0804A1EC + b _0804A308 +_0804A1EC: + movs r1, #0x2e + ldrsh r0, [r4, r1] + adds r2, r0, #4 + mov r3, sl + eors r7, r3 + mov r0, r8 + ldrh r1, [r0, #6] + subs r1, r2, r1 + lsrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r4, r2] + mov r4, r8 + ldrh r3, [r4, #8] + adds r2, r3, #0 + subs r2, #0xa + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r0, r1 + mov r2, sb + movs r4, #0x32 + ldrsh r2, [r2, r4] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldr r2, _0804A244 @ =0x00002004 + adds r0, r0, r2 + adds r0, r5, r0 + adds r1, r1, r2 + adds r1, r5, r1 + movs r2, #0x40 + adds r3, r7, #0 + bl sub_0804A4BC + cmp r0, #0 + beq _0804A308 + movs r0, #0x10 + b _0804A30A + .align 2, 0 +_0804A240: .4byte gUnk_03000BF0 +_0804A244: .4byte 0x00002004 +_0804A248: + movs r3, #0x2e + ldrsh r0, [r4, r3] + subs r2, r0, #4 + adds r0, r2, #0 + movs r1, #0xf + ands r0, r1 + movs r7, #5 + cmp r0, #7 + bhi _0804A25C + movs r7, #0xa +_0804A25C: + ldr r3, _0804A300 @ =gUnk_03000BF0 + mov r8, r3 + ldrh r1, [r3, #6] + subs r1, r2, r1 + lsrs r1, r1, #4 + movs r6, #0x3f + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r4, r2] + ldrh r3, [r3, #8] + mov sl, r3 + mov r2, sl + adds r2, #0xa + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r0, r1 + mov r2, sb + movs r3, #0x32 + ldrsh r2, [r2, r3] + mov r3, sl + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldr r2, _0804A304 @ =0x00002004 + adds r0, r0, r2 + adds r0, r5, r0 + adds r1, r1, r2 + adds r1, r5, r1 + movs r2, #0x40 + rsbs r2, r2, #0 + mov sl, r2 + adds r3, r7, #0 + bl sub_0804A4BC + cmp r0, #0 + beq _0804A308 + movs r3, #0x2e + ldrsh r0, [r4, r3] + adds r2, r0, #4 + movs r0, #0xf + eors r7, r0 + mov r3, r8 + ldrh r1, [r3, #6] + subs r1, r2, r1 + lsrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r4, r2] + ldrh r3, [r3, #8] + adds r2, r3, #0 + adds r2, #0xa + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r0, r1 + mov r4, sb + movs r2, #0x32 + ldrsh r4, [r4, r2] + subs r2, r4, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldr r3, _0804A304 @ =0x00002004 + adds r0, r0, r3 + adds r0, r5, r0 + adds r1, r1, r3 + adds r1, r5, r1 + mov r2, sl + adds r3, r7, #0 + bl sub_0804A4BC + cmp r0, #0 + beq _0804A308 + movs r0, #0 + b _0804A30A + .align 2, 0 +_0804A300: .4byte gUnk_03000BF0 +_0804A304: .4byte 0x00002004 +_0804A308: + movs r0, #0xff +_0804A30A: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0804A318 +sub_0804A318: @ 0x0804A318 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + mov sl, r1 + adds r6, r2, #0 + movs r0, #0x2e + ldrsh r1, [r1, r0] + movs r2, #0x2e + ldrsh r0, [r5, r2] + cmp r1, r0 + ble _0804A3F0 + movs r4, #0x32 + ldrsh r0, [r5, r4] + subs r4, r0, #4 + adds r0, r4, #0 + movs r1, #0xf + ands r0, r1 + movs r2, #3 + mov r8, r2 + cmp r0, #7 + bhi _0804A34C + movs r0, #0xc + mov r8, r0 +_0804A34C: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r2, _0804A3E8 @ =gUnk_03000BF0 + mov sb, r2 + ldrh r3, [r2, #6] + adds r1, r3, #0 + subs r1, #0xa + subs r0, r0, r1 + asrs r0, r0, #4 + movs r7, #0x3f + ands r0, r7 + ldrh r2, [r2, #8] + subs r2, r4, r2 + lsrs r2, r2, #4 + ands r2, r7 + lsls r2, r2, #6 + orrs r0, r2 + mov r4, sl + movs r1, #0x2e + ldrsh r4, [r4, r1] + subs r1, r4, r3 + asrs r1, r1, #4 + ands r1, r7 + orrs r1, r2 + ldr r2, _0804A3EC @ =0x00002004 + adds r0, r0, r2 + adds r0, r6, r0 + adds r1, r1, r2 + adds r1, r6, r1 + movs r2, #1 + mov r3, r8 + bl sub_0804A4BC + cmp r0, #0 + bne _0804A394 + b _0804A4B0 +_0804A394: + movs r2, #0x32 + ldrsh r0, [r5, r2] + adds r4, r0, #4 + mov r0, r8 + movs r1, #0xf + eors r0, r1 + mov r8, r0 + movs r2, #0x2e + ldrsh r0, [r5, r2] + mov r5, sb + ldrh r3, [r5, #6] + adds r1, r3, #0 + subs r1, #0xa + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r7 + ldrh r2, [r5, #8] + subs r2, r4, r2 + lsrs r2, r2, #4 + ands r2, r7 + lsls r2, r2, #6 + orrs r0, r2 + mov r4, sl + movs r5, #0x2e + ldrsh r1, [r4, r5] + subs r1, r1, r3 + asrs r1, r1, #4 + ands r1, r7 + orrs r1, r2 + ldr r2, _0804A3EC @ =0x00002004 + adds r0, r0, r2 + adds r0, r6, r0 + adds r1, r1, r2 + adds r1, r6, r1 + movs r2, #1 + mov r3, r8 + bl sub_0804A4BC + cmp r0, #0 + beq _0804A4B0 + movs r0, #8 + b _0804A4B2 + .align 2, 0 +_0804A3E8: .4byte gUnk_03000BF0 +_0804A3EC: .4byte 0x00002004 +_0804A3F0: + movs r4, #0x32 + ldrsh r0, [r5, r4] + subs r4, r0, #4 + adds r0, r4, #0 + movs r1, #0xf + ands r0, r1 + movs r2, #3 + mov r8, r2 + cmp r0, #7 + bhi _0804A408 + movs r0, #0xc + mov r8, r0 +_0804A408: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r2, _0804A4A8 @ =gUnk_03000BF0 + mov sb, r2 + ldrh r3, [r2, #6] + adds r1, r3, #0 + adds r1, #0xa + subs r0, r0, r1 + asrs r0, r0, #4 + movs r7, #0x3f + ands r0, r7 + ldrh r2, [r2, #8] + subs r2, r4, r2 + lsrs r2, r2, #4 + ands r2, r7 + lsls r2, r2, #6 + orrs r0, r2 + mov r4, sl + movs r1, #0x2e + ldrsh r4, [r4, r1] + subs r1, r4, r3 + asrs r1, r1, #4 + ands r1, r7 + orrs r1, r2 + ldr r2, _0804A4AC @ =0x00002004 + adds r0, r0, r2 + adds r0, r6, r0 + adds r1, r1, r2 + adds r1, r6, r1 + movs r2, #1 + rsbs r2, r2, #0 + mov r3, r8 + bl sub_0804A4BC + cmp r0, #0 + beq _0804A4B0 + movs r2, #0x32 + ldrsh r0, [r5, r2] + adds r4, r0, #4 + mov r0, r8 + movs r1, #0xf + eors r0, r1 + mov r8, r0 + movs r2, #0x2e + ldrsh r0, [r5, r2] + mov r5, sb + ldrh r3, [r5, #6] + adds r1, r3, #0 + adds r1, #0xa + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r7 + ldrh r2, [r5, #8] + subs r2, r4, r2 + lsrs r2, r2, #4 + ands r2, r7 + lsls r2, r2, #6 + orrs r0, r2 + mov r4, sl + movs r5, #0x2e + ldrsh r1, [r4, r5] + subs r1, r1, r3 + asrs r1, r1, #4 + ands r1, r7 + orrs r1, r2 + ldr r2, _0804A4AC @ =0x00002004 + adds r0, r0, r2 + adds r0, r6, r0 + adds r1, r1, r2 + adds r1, r6, r1 + movs r2, #1 + rsbs r2, r2, #0 + mov r3, r8 + bl sub_0804A4BC + cmp r0, #0 + beq _0804A4B0 + movs r0, #0x18 + b _0804A4B2 + .align 2, 0 +_0804A4A8: .4byte gUnk_03000BF0 +_0804A4AC: .4byte 0x00002004 +_0804A4B0: + movs r0, #0xff +_0804A4B2: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0804A4BC +sub_0804A4BC: @ 0x0804A4BC + push {r4, lr} + adds r4, r0, #0 + cmp r4, r1 + beq _0804A4DE +_0804A4C4: + ldrb r0, [r4] + cmp r0, #0 + beq _0804A4D8 + cmp r0, #0xf + bhi _0804A4D4 + ands r0, r3 + cmp r0, #0 + beq _0804A4D8 +_0804A4D4: + movs r0, #0 + b _0804A4E0 +_0804A4D8: + adds r4, r4, r2 + cmp r4, r1 + bne _0804A4C4 +_0804A4DE: + movs r0, #1 +_0804A4E0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804A4E4 +sub_0804A4E4: @ 0x0804A4E4 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r5, #0 + adds r7, #0x6d + ldrb r1, [r7] + movs r4, #0x40 + adds r0, r4, #0 + ands r0, r1 + movs r1, #4 + adds r2, r6, #0 + adds r2, #0x6d + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6c + ldrb r1, [r0] + adds r0, r6, #0 + adds r0, #0x6c + strb r1, [r0] + adds r0, r5, #0 + adds r0, #0x70 + ldrh r1, [r0] + adds r0, r6, #0 + adds r0, #0x70 + strh r1, [r0] + adds r0, r5, #0 + adds r0, #0x72 + ldrh r0, [r0] + adds r1, r6, #0 + adds r1, #0x72 + strh r0, [r1] + adds r0, r5, #0 + adds r0, #0x6e + ldrb r0, [r0] + subs r1, #4 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x6f + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0806FA6C + ldrb r0, [r7] + ands r4, r0 + cmp r4, #0 + beq _0804A550 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08058800 +_0804A550: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0804A554 +sub_0804A554: @ 0x0804A554 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #9] + lsls r0, r0, #4 + ldr r1, _0804A574 @ =gUnk_080D2C58 + adds r2, r0, r1 + ldrh r1, [r2] + ldr r0, _0804A578 @ =0x0000FFFF + cmp r1, r0 + bne _0804A570 + ldrb r0, [r3, #0xa] + lsls r0, r0, #4 + ldr r1, [r2, #4] + adds r2, r1, r0 +_0804A570: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_0804A574: .4byte gUnk_080D2C58 +_0804A578: .4byte 0x0000FFFF + + thumb_func_start sub_0804A57C +sub_0804A57C: @ 0x0804A57C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0804A58C + b _0804A6B6 +_0804A58C: + adds r0, r4, #0 + bl sub_0804A554 + adds r5, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0804A6C0 + cmp r0, #0 + bne _0804A5A4 + movs r0, #0 + b _0804A6B8 +_0804A5A4: + ldrb r1, [r4, #0x10] + movs r0, #1 + adds r2, r1, #0 + orrs r2, r0 + strb r2, [r4, #0x10] + ldrb r1, [r5, #0xa] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0804A5BE + movs r0, #0x80 + orrs r2, r0 + strb r2, [r4, #0x10] +_0804A5BE: + ldrh r0, [r5, #8] + strh r0, [r4, #0x12] + ldrb r2, [r4, #0x18] + lsls r0, r2, #0x1e + cmp r0, #0 + bne _0804A5DA + ldrb r1, [r5, #0xa] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0804A5DA: + ldrb r1, [r5, #0xa] + lsls r1, r1, #0x1d + adds r3, r4, #0 + adds r3, #0x29 + movs r6, #7 + lsrs r1, r1, #0x1a + ldrb r2, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r5, #0xa] + movs r7, #3 + lsrs r1, r1, #6 + lsls r1, r1, #4 + ldrb r2, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0804A612 + ldrh r0, [r5, #0xc] + strh r0, [r4, #0x24] +_0804A612: + ldrb r0, [r5, #0xf] + adds r1, r4, #0 + adds r1, #0x3b + strb r0, [r1] + ldrb r0, [r5, #0xe] + adds r1, #4 + strb r0, [r1] + ldr r0, [r5, #4] + str r0, [r4, #0x48] + ldrb r0, [r5, #0xb] + adds r2, r4, #0 + adds r2, #0x45 + strb r0, [r2] + adds r1, #1 + ldrb r0, [r1] + cmp r0, #0 + bne _0804A638 + movs r0, #0x41 + strb r0, [r1] +_0804A638: + adds r0, r4, #0 + bl sub_08016A04 + adds r5, r4, #0 + adds r5, #0x6d + ldrb r1, [r5] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0804A6B6 + ldr r2, _0804A6BC @ =gUnk_080D3E74 + ldrb r1, [r4, #9] + lsrs r0, r1, #3 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r2, [r0] + ands r6, r1 + lsls r0, r6, #1 + asrs r2, r0 + movs r0, #3 + ands r2, r0 + cmp r2, #0 + beq _0804A6B6 + subs r1, r2, #1 + movs r0, #0xa9 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0804A6B6 + ldrb r0, [r4, #0x10] + strb r0, [r2, #0xe] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + strb r0, [r2, #0xf] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r7 + strb r0, [r3] + str r4, [r2, #0x50] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0806FA24 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r5] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r5] +_0804A6B6: + movs r0, #1 +_0804A6B8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0804A6BC: .4byte gUnk_080D3E74 + + thumb_func_start sub_0804A6C0 +sub_0804A6C0: @ 0x0804A6C0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrh r2, [r5] + lsls r1, r2, #0x10 + cmp r1, #0 + beq _0804A712 + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + beq _0804A6E8 + ldr r0, _0804A6E4 @ =0x000003FF + ands r0, r2 + adds r1, r4, #0 + adds r1, #0x60 + strh r0, [r1] + b _0804A712 + .align 2, 0 +_0804A6E4: .4byte 0x000003FF +_0804A6E8: + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r2 + cmp r0, #0 + beq _0804A702 + lsrs r1, r1, #0x14 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE008 + b _0804A70A +_0804A702: + ldrh r1, [r5] + adds r0, r4, #0 + bl sub_080ADF80 +_0804A70A: + cmp r0, #0 + bne _0804A712 + movs r0, #0 + b _0804A71C +_0804A712: + ldrh r1, [r5, #2] + adds r0, r4, #0 + bl sub_0801D040 + movs r0, #1 +_0804A71C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0804A720 +sub_0804A720: @ 0x0804A720 + push {r4, r5, r6, lr} + adds r2, r0, #0 + adds r0, #0x6d + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0804A7D0 + ldrb r0, [r2, #9] + lsls r0, r0, #1 + ldr r1, _0804A76C @ =gUnk_080D3D94 + adds r3, r0, r1 + adds r4, r2, #0 + adds r4, #0x68 + ldrb r1, [r4, #0x16] + cmp r1, #0 + bne _0804A744 + ldrb r1, [r3] +_0804A744: + adds r0, r2, #0 + adds r0, #0x6e + strb r1, [r0] + adds r5, r0, #0 + ldrb r1, [r4, #0x17] + cmp r1, #0 + bne _0804A754 + ldrb r1, [r3, #1] +_0804A754: + adds r0, r2, #0 + adds r0, #0x6f + strb r1, [r0] + adds r6, r0, #0 + ldrh r1, [r4, #0x1c] + adds r3, r1, #0 + cmp r3, #0 + beq _0804A774 + ldr r0, _0804A770 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + adds r0, r1, r0 + b _0804A784 + .align 2, 0 +_0804A76C: .4byte gUnk_080D3D94 +_0804A770: .4byte gUnk_03000BF0 +_0804A774: + ldrb r0, [r5] + lsls r1, r0, #2 + movs r5, #0x2e + ldrsh r0, [r2, r5] + cmp r0, r1 + blt _0804A78C + ldrh r0, [r2, #0x2e] + subs r0, r0, r1 +_0804A784: + adds r1, r2, #0 + adds r1, #0x70 + strh r0, [r1] + b _0804A792 +_0804A78C: + adds r0, r2, #0 + adds r0, #0x70 + strh r3, [r0] +_0804A792: + ldrh r1, [r4, #0x1e] + adds r3, r1, #0 + cmp r3, #0 + beq _0804A7A8 + ldr r0, _0804A7A4 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r0, r1, r0 + b _0804A7B8 + .align 2, 0 +_0804A7A4: .4byte gUnk_03000BF0 +_0804A7A8: + ldrb r0, [r6] + lsls r1, r0, #2 + movs r4, #0x32 + ldrsh r0, [r2, r4] + cmp r0, r1 + blt _0804A7C0 + ldrh r0, [r2, #0x32] + subs r0, r0, r1 +_0804A7B8: + adds r1, r2, #0 + adds r1, #0x72 + strh r0, [r1] + b _0804A7C6 +_0804A7C0: + adds r0, r2, #0 + adds r0, #0x72 + strh r3, [r0] +_0804A7C6: + adds r2, #0x6d + ldrb r1, [r2] + movs r0, #4 + orrs r0, r1 + strb r0, [r2] +_0804A7D0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0804A7D4 +sub_0804A7D4: @ 0x0804A7D4 + push {lr} + ldrb r1, [r0, #9] + movs r2, #0 + bl sub_0804A7E0 + pop {pc} + + thumb_func_start sub_0804A7E0 +sub_0804A7E0: @ 0x0804A7E0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + mov sb, r1 + mov sl, r2 + adds r6, r5, #0 + adds r6, #0x6d + ldrb r1, [r6] + movs r7, #1 + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _0804A864 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0804A80A + b _0804A982 +_0804A80A: + ldrb r1, [r5, #9] + movs r0, #1 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + bne _0804A81C + b _0804A982 +_0804A81C: + adds r0, #0x6c + strb r7, [r0] + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806FA48 + str r5, [r4, #0x50] + ldrb r1, [r6] + movs r0, #2 + orrs r0, r1 + strb r0, [r6] + ldrb r0, [r5, #9] + cmp r0, #0x37 + bne _0804A84A + ldr r0, _0804A85C @ =gUnk_030010A0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + beq _0804A84A + bl sub_0805E780 +_0804A84A: + bl sub_0807CD9C + ldr r0, _0804A860 @ =0x80100000 + bl sub_080A3268 + bl sub_0805E780 + b _0804A982 + .align 2, 0 +_0804A85C: .4byte gUnk_030010A0 +_0804A860: .4byte 0x80100000 +_0804A864: + adds r4, r5, #0 + adds r4, #0x3a + ldrb r1, [r4] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + mov r8, r0 + cmp r0, #0 + bne _0804A934 + adds r0, r5, #0 + bl sub_08049CF4 + ldr r1, _0804A8E8 @ =gUnk_02002A40 + ldr r0, [r1, #0x50] + adds r0, #1 + str r0, [r1, #0x50] + ldrb r0, [r4] + movs r7, #0 + movs r1, #2 + orrs r0, r1 + strb r0, [r4] + movs r0, #0xff + strb r0, [r5, #0xe] + adds r0, r5, #0 + movs r1, #3 + bl sub_0805E3A0 + ldrb r1, [r5, #9] + movs r0, #1 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0804A8CA + adds r0, #0x6c + mov r2, r8 + strb r2, [r0] + adds r0, #1 + mov r1, sb + strb r1, [r0] + adds r0, #1 + mov r2, sl + strb r2, [r0] + str r5, [r4, #0x50] + str r5, [r4, #0x54] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_0804A8CA: + ldrb r1, [r6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0804A8EC + adds r0, r4, #0 + adds r0, #0x6c + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + strb r1, [r0] + adds r0, r5, #0 + bl sub_0805E7BC + b _0804A982 + .align 2, 0 +_0804A8E8: .4byte gUnk_02002A40 +_0804A8EC: + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + bne _0804A934 + ldrb r0, [r5, #0x1c] + movs r1, #0xf + ands r1, r0 + cmp r1, #1 + beq _0804A91A + cmp r1, #2 + bne _0804A92A + cmp r4, #0 + beq _0804A92A + adds r1, r4, #0 + adds r1, #0x6c + ldrb r0, [r1] + movs r2, #2 + orrs r0, r2 + strb r0, [r1] + b _0804A92A +_0804A91A: + cmp r4, #0 + beq _0804A92A + adds r0, r4, #0 + adds r0, #0x6c + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] +_0804A92A: + movs r0, #0 + str r0, [r4, #0x50] + bl sub_0805E780 + b _0804A982 +_0804A934: + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _0804A940 + bl sub_0805E780 + b _0804A982 +_0804A940: + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0804A95E + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #0x18] + adds r0, r5, #0 + movs r1, #0 + bl sub_0805E3A0 + b _0804A982 +_0804A95E: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bhi _0804A982 + ldrb r1, [r5, #0x18] + lsls r0, r1, #0x1e + cmp r0, #0 + beq _0804A976 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + b _0804A980 +_0804A976: + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 +_0804A980: + strb r0, [r5, #0x18] +_0804A982: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0804A98C +sub_0804A98C: @ 0x0804A98C + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r0, r1, #0 + adds r5, r2, #0 + bl sub_080A7EE0 + adds r4, r0, #0 + cmp r4, #0 + beq _0804A9A8 + strb r5, [r4, #0xa] + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_0804A9A8: + adds r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0804A9AC +sub_0804A9AC: @ 0x0804A9AC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + mov ip, r3 + ldr r4, [r5, #0x68] + cmp r4, #0 + beq _0804A9FA + ldrb r2, [r5, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x1b] + ldrh r0, [r5, #0x2e] + adds r0, r0, r6 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x32] + adds r0, r0, r7 + strh r0, [r4, #0x32] + ldrh r0, [r5, #0x36] + add r0, ip + strh r0, [r4, #0x36] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] +_0804A9FA: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0804A9FC +sub_0804A9FC: @ 0x0804A9FC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x68] + cmp r0, #0 + bne _0804AA16 + adds r0, r4, #0 + movs r2, #0 + bl CreateFX + cmp r0, #0 + beq _0804AA16 + str r0, [r4, #0x68] + b _0804AA18 +_0804AA16: + movs r0, #0 +_0804AA18: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804AA1C +sub_0804AA1C: @ 0x0804AA1C + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #0x68] + cmp r1, #0 + beq _0804AA2C + movs r0, #0 + str r0, [r1, #0x50] + str r0, [r2, #0x68] +_0804AA2C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804AA30 +sub_0804AA30: @ 0x0804AA30 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r4, #0 + adds r6, #0x41 + ldrb r1, [r6] + movs r0, #0x7f + ands r0, r1 + strb r0, [r6] + adds r0, r4, #0 + bl sub_0800279C + ldrb r2, [r6] + movs r1, #0x80 + orrs r1, r2 + strb r1, [r6] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0804AA60 +sub_0804AA60: @ 0x0804AA60 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + bl sub_0805E678 + adds r4, r0, #0 + cmp r4, #0 + beq _0804AA80 + movs r0, #3 + strb r0, [r4, #8] + strb r5, [r4, #9] + strb r6, [r4, #0xa] + adds r0, r4, #0 + movs r1, #4 + bl sub_0805EA2C +_0804AA80: + adds r0, r4, #0 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0804AA84 +sub_0804AA84: @ 0x0804AA84 + push {lr} + ldr r3, _0804AA98 @ =gUnk_02033A90 + ldrb r0, [r3, #0x19] + cmp r0, #0 + bne _0804AA9C + strb r0, [r3, #0x18] + strb r0, [r3, #0x19] + movs r0, #0 + b _0804AAB0 + .align 2, 0 +_0804AA98: .4byte gUnk_02033A90 +_0804AA9C: + ldr r2, _0804AAB4 @ =gUnk_03001000 + movs r1, #0 + movs r0, #4 + strb r0, [r2, #4] + strb r1, [r3, #0xe] + strb r1, [r3, #0xf] + strh r1, [r3, #0x10] + bl sub_0805E5A8 + movs r0, #1 +_0804AAB0: + pop {pc} + .align 2, 0 +_0804AAB4: .4byte gUnk_03001000 + + thumb_func_start sub_0804AAB8 +sub_0804AAB8: @ 0x0804AAB8 + push {lr} + ldr r1, _0804AACC @ =gUnk_080D4120 + ldr r0, _0804AAD0 @ =gUnk_02033A90 + ldrb r0, [r0, #0xe] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0804AACC: .4byte gUnk_080D4120 +_0804AAD0: .4byte gUnk_02033A90 + + thumb_func_start sub_0804AAD4 +sub_0804AAD4: @ 0x0804AAD4 + push {r4, lr} + ldr r4, _0804AAFC @ =gUnk_02018EB0 + adds r0, r4, #0 + movs r1, #0x28 + bl sub_0801D630 + movs r0, #0 + str r0, [r4, #0x14] + bl sub_0805E60C + ldr r4, _0804AB00 @ =gUnk_02033A90 + ldrb r1, [r4, #0x17] + movs r0, #0x3d + movs r2, #0 + bl sub_080A2960 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + pop {r4, pc} + .align 2, 0 +_0804AAFC: .4byte gUnk_02018EB0 +_0804AB00: .4byte gUnk_02033A90 + + thumb_func_start sub_0804AB04 +sub_0804AB04: @ 0x0804AB04 + push {lr} + bl sub_0805E5C0 + ldr r0, _0804AB20 @ =gUnk_02033A90 + ldrh r0, [r0, #0x10] + cmp r0, #0 + beq _0804AB1E + bl sub_080AD90C + bl sub_080AD9B0 + bl sub_080AD918 +_0804AB1E: + pop {pc} + .align 2, 0 +_0804AB20: .4byte gUnk_02033A90 + + thumb_func_start sub_0804AB24 +sub_0804AB24: @ 0x0804AB24 + push {r4, r5, lr} + ldr r5, _0804AB48 @ =gUnk_03000FD0 + ldrb r1, [r5] + cmp r1, #0 + bne _0804AB46 + ldr r0, _0804AB4C @ =gUnk_03000F50 + movs r4, #0 + strh r1, [r0] + bl sub_0801E104 + ldr r0, _0804AB50 @ =gUnk_02033A90 + strb r4, [r0, #0xe] + movs r0, #6 + movs r1, #0 + bl sub_080A7138 + strb r4, [r5] +_0804AB46: + pop {r4, r5, pc} + .align 2, 0 +_0804AB48: .4byte gUnk_03000FD0 +_0804AB4C: .4byte gUnk_03000F50 +_0804AB50: .4byte gUnk_02033A90 + + thumb_func_start sub_0804AB54 +sub_0804AB54: @ 0x0804AB54 + push {lr} + ldr r1, _0804AB68 @ =gUnk_080D412C + ldr r0, _0804AB6C @ =gUnk_02033A90 + ldrb r0, [r0, #0xe] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0804AB68: .4byte gUnk_080D412C +_0804AB6C: .4byte gUnk_02033A90 + + thumb_func_start sub_0804AB70 +sub_0804AB70: @ 0x0804AB70 + push {r4, r5, lr} + movs r0, #0 + bl sub_0801DA90 + ldr r1, _0804ABF8 @ =gUnk_03000F50 + movs r2, #0 + movs r0, #0x92 + lsls r0, r0, #5 + strh r0, [r1] + ldr r0, _0804ABFC @ =0x00009E83 + strh r0, [r1, #0x14] + ldr r0, _0804AC00 @ =gUnk_03000BF0 + strh r2, [r1, #0x16] + strh r2, [r0, #0xa] + strh r2, [r1, #0x18] + strh r2, [r0, #0xc] + ldr r0, _0804AC04 @ =gUnk_02033A90 + ldrb r5, [r0, #0x17] + cmp r5, #2 + bne _0804ABA4 + ldr r0, _0804AC08 @ =gUnk_02032EC0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #2 + beq _0804ABA4 + movs r5, #3 +_0804ABA4: + lsls r4, r5, #1 + ldr r0, _0804AC0C @ =gUnk_080D4138 + adds r4, r4, r0 + ldrb r0, [r4] + bl sub_0801D714 + ldrb r0, [r4, #1] + bl sub_0801D7EC + ldr r0, _0804AC10 @ =gUnk_02017700 + movs r2, #0x90 + lsls r2, r2, #2 + adds r1, r0, r2 + movs r2, #0x20 + bl sub_0801D66C + ldr r2, _0804AC14 @ =gUnk_0200B644 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [r2] + bl sub_0805E60C + ldr r1, _0804AC18 @ =gUnk_080D4110 + lsls r0, r5, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0804ADDC + bl sub_0805E5B4 + ldr r1, _0804AC04 @ =gUnk_02033A90 + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] + movs r0, #4 + movs r1, #8 + bl sub_08050054 + pop {r4, r5, pc} + .align 2, 0 +_0804ABF8: .4byte gUnk_03000F50 +_0804ABFC: .4byte 0x00009E83 +_0804AC00: .4byte gUnk_03000BF0 +_0804AC04: .4byte gUnk_02033A90 +_0804AC08: .4byte gUnk_02032EC0 +_0804AC0C: .4byte gUnk_080D4138 +_0804AC10: .4byte gUnk_02017700 +_0804AC14: .4byte gUnk_0200B644 +_0804AC18: .4byte gUnk_080D4110 + + thumb_func_start sub_0804AC1C +sub_0804AC1C: @ 0x0804AC1C + push {r4, lr} + bl sub_0805E5C0 + ldr r0, _0804AC98 @ =gUnk_02018EB0 + ldr r2, [r0, #0x14] + cmp r2, #0 + beq _0804AC5E + ldr r3, _0804AC9C @ =gUnk_03000BF0 + movs r1, #0xc + ldrsh r0, [r3, r1] + movs r4, #0x32 + ldrsh r1, [r2, r4] + subs r1, #0x50 + subs r0, r0, r1 + movs r4, #0x36 + ldrsh r1, [r2, r4] + subs r1, r0, r1 + cmp r1, #0 + beq _0804AC5E + ldrh r0, [r3, #0xc] + subs r0, r0, r1 + strh r0, [r3, #0xc] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0804AC52 + movs r0, #0 + strh r0, [r3, #0xc] +_0804AC52: + movs r1, #0xc + ldrsh r0, [r3, r1] + cmp r0, #0x9f + ble _0804AC5E + movs r0, #0x9f + strh r0, [r3, #0xc] +_0804AC5E: + ldr r2, _0804ACA0 @ =gUnk_03000F50 + ldr r1, _0804AC9C @ =gUnk_03000BF0 + ldrh r0, [r1, #0xa] + strh r0, [r2, #0x16] + ldrh r0, [r1, #0xc] + strh r0, [r2, #0x18] + bl sub_080AD90C + bl sub_080AD9B0 + bl sub_080AD918 + ldr r0, _0804AC98 @ =gUnk_02018EB0 + ldrb r0, [r0, #0x1b] + cmp r0, #0 + bne _0804AC86 + bl sub_0804ACA8 + cmp r0, #0 + beq _0804AC96 +_0804AC86: + ldr r1, _0804ACA4 @ =gUnk_02033A90 + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 +_0804AC96: + pop {r4, pc} + .align 2, 0 +_0804AC98: .4byte gUnk_02018EB0 +_0804AC9C: .4byte gUnk_03000BF0 +_0804ACA0: .4byte gUnk_03000F50 +_0804ACA4: .4byte gUnk_02033A90 + + thumb_func_start sub_0804ACA8 +sub_0804ACA8: @ 0x0804ACA8 + push {lr} + ldr r0, _0804ACC0 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #0x81 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0804ACC4 + bl sub_0804AD18 + b _0804ACC6 + .align 2, 0 +_0804ACC0: .4byte gUnk_03000FF0 +_0804ACC4: + movs r0, #0 +_0804ACC6: + pop {pc} + + thumb_func_start sub_0804ACC8 +sub_0804ACC8: @ 0x0804ACC8 + push {lr} + ldr r0, _0804ACEC @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0804ACE8 + ldr r0, _0804ACF0 @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + adds r0, #0x5e + bl sub_0807CD04 + ldr r0, _0804ACF4 @ =gUnk_02032EDC + bl sub_0804AD6C + movs r0, #0 + bl sub_080A71F4 +_0804ACE8: + pop {pc} + .align 2, 0 +_0804ACEC: .4byte gUnk_03000FD0 +_0804ACF0: .4byte gUnk_02033A90 +_0804ACF4: .4byte gUnk_02032EDC + + thumb_func_start sub_0804ACF8 +sub_0804ACF8: @ 0x0804ACF8 + push {lr} + bl sub_0804AD18 + cmp r0, #0 + beq _0804AD12 + ldr r0, _0804AD14 @ =gUnk_03000BF0 + bl sub_0804AD6C + bl sub_0805E5A8 + movs r0, #0xf8 + bl sub_080A3268 +_0804AD12: + pop {pc} + .align 2, 0 +_0804AD14: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804AD18 +sub_0804AD18: @ 0x0804AD18 + push {lr} + ldr r0, _0804AD30 @ =gUnk_02033A90 + ldrb r1, [r0, #0x17] + adds r2, r0, #0 + cmp r1, #6 + bhi _0804AD66 + lsls r0, r1, #2 + ldr r1, _0804AD34 @ =_0804AD38 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804AD30: .4byte gUnk_02033A90 +_0804AD34: .4byte _0804AD38 +_0804AD38: @ jump table + .4byte _0804AD54 @ case 0 + .4byte _0804AD54 @ case 1 + .4byte _0804AD54 @ case 2 + .4byte _0804AD66 @ case 3 + .4byte _0804AD66 @ case 4 + .4byte _0804AD66 @ case 5 + .4byte _0804AD62 @ case 6 +_0804AD54: + ldrb r0, [r2, #0x17] + adds r0, #0x5e + bl GetProgressFlag + adds r1, r0, #0 + cmp r1, #0 + bne _0804AD68 +_0804AD62: + movs r0, #0 + b _0804AD68 +_0804AD66: + movs r0, #0 +_0804AD68: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804AD6C +sub_0804AD6C: @ 0x0804AD6C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r3, _0804ADD0 @ =gUnk_030010A0 + movs r1, #0 + movs r6, #1 + strb r6, [r3, #8] + strb r1, [r3, #9] + ldr r4, _0804ADD4 @ =gUnk_02033A90 + ldr r5, _0804ADD8 @ =gUnk_080D4140 + ldrb r1, [r4, #0x16] + lsls r1, r1, #2 + adds r1, r1, r5 + ldrh r1, [r1] + ldrh r2, [r4, #0x12] + adds r1, r1, r2 + ldrh r2, [r0, #6] + subs r1, r1, r2 + movs r2, #0 + mov r8, r2 + strh r1, [r3, #0x10] + ldrb r1, [r4, #0x16] + lsls r1, r1, #1 + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r5 + ldrh r1, [r1] + ldrh r2, [r4, #0x14] + adds r1, r1, r2 + ldrh r2, [r0, #8] + subs r1, r1, r2 + strh r1, [r3, #0x12] + ldrb r1, [r4, #0x16] + lsls r1, r1, #1 + strb r1, [r3, #0xe] + strb r6, [r3, #0xf] + ldrb r1, [r0, #4] + strb r1, [r3, #0xc] + ldrb r0, [r0, #5] + strb r0, [r3, #0xd] + mov r0, r8 + strb r0, [r3, #0x14] + bl sub_080300AC + bl sub_080300C4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_0804ADD0: .4byte gUnk_030010A0 +_0804ADD4: .4byte gUnk_02033A90 +_0804ADD8: .4byte gUnk_080D4140 + + thumb_func_start sub_0804ADDC +sub_0804ADDC: @ 0x0804ADDC + push {r4, lr} + adds r4, r0, #0 + cmp r4, #0 + beq _0804ADF4 + b _0804ADEE +_0804ADE6: + adds r0, r4, #0 + adds r4, #0x10 + bl sub_0804ADF8 +_0804ADEE: + ldrb r0, [r4] + cmp r0, #0xff + bne _0804ADE6 +_0804ADF4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804ADF8 +sub_0804ADF8: @ 0x0804ADF8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4] + movs r6, #0xf + ands r6, r0 + ldrb r1, [r4, #1] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x50 + bne _0804AE1C + ldrb r1, [r4, #2] + adds r0, r6, #0 + bl sub_0805EB9C + cmp r0, #0 + beq _0804AE1C + movs r0, #0 + b _0804AEAC +_0804AE1C: + adds r0, r6, #0 + bl sub_0805E768 + adds r5, r0, #0 + cmp r5, #0 + beq _0804AEAA + strb r6, [r5, #8] + ldrb r0, [r4, #2] + strb r0, [r5, #9] + ldrb r0, [r4, #3] + strb r0, [r5, #0xa] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0804AEB0 + ldrb r1, [r4, #1] + movs r7, #0xf0 + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0x10 + beq _0804AEAA + ldrb r0, [r4, #4] + strb r0, [r5, #0xb] + ldr r0, [r4, #4] + movs r1, #0xff + lsls r1, r1, #8 + ands r0, r1 + lsrs r0, r0, #8 + strb r0, [r5, #0xe] + cmp r6, #9 + beq _0804AEAA + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0804AF0C + ldr r0, [r5, #4] + cmp r0, #0 + beq _0804AEAA + ldrb r0, [r4] + adds r2, r7, #0 + ands r2, r0 + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _0804AE94 + movs r0, #0x20 + ands r2, r0 + cmp r2, #0 + beq _0804AE88 + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + b _0804AEAA +_0804AE88: + ldr r0, _0804AEA0 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0804AEA4 +_0804AE94: + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + b _0804AEAA + .align 2, 0 +_0804AEA0: .4byte gUnk_03000BF0 +_0804AEA4: + adds r0, r5, #0 + bl sub_08016A30 +_0804AEAA: + adds r0, r5, #0 +_0804AEAC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0804AEB0 +sub_0804AEB0: @ 0x0804AEB0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldrb r0, [r6, #1] + movs r1, #0xf + adds r2, r1, #0 + ands r2, r0 + ldrb r0, [r6] + adds r4, r1, #0 + ands r4, r0 + ldr r0, [r5] + cmp r0, #0 + bne _0804AEF6 + cmp r2, #0xf + bne _0804AEE0 + ldr r0, _0804AEDC @ =gUnk_081091E4 + adds r0, r4, r0 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_0805EA2C + b _0804AEF6 + .align 2, 0 +_0804AEDC: .4byte gUnk_081091E4 +_0804AEE0: + cmp r2, #8 + bne _0804AEEE + adds r0, r5, #0 + movs r1, #8 + bl sub_0805EA2C + b _0804AEF6 +_0804AEEE: + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_0805EA2C +_0804AEF6: + adds r1, r5, #0 + adds r1, #0x78 + cmp r4, #9 + bne _0804AF00 + subs r1, #0x48 +_0804AF00: + adds r0, r6, #0 + movs r2, #0x10 + bl sub_0801D66C + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0804AF0C +sub_0804AF0C: @ 0x0804AF0C + push {r4, lr} + adds r4, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #1] + movs r1, #0xf0 + ands r1, r0 + cmp r1, #0x20 + beq _0804AF40 + cmp r1, #0x20 + bgt _0804AF26 + cmp r1, #0 + beq _0804AF2C + b _0804AF88 +_0804AF26: + cmp r1, #0x40 + beq _0804AF64 + b _0804AF88 +_0804AF2C: + ldr r0, _0804AF3C @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + ldrh r3, [r2, #8] + adds r1, r1, r3 + strh r1, [r4, #0x2e] + ldrh r0, [r0, #8] + b _0804AF58 + .align 2, 0 +_0804AF3C: .4byte gUnk_03000BF0 +_0804AF40: + adds r3, r4, #0 + adds r3, #0x6d + ldrb r1, [r3] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r3] + ldr r1, _0804AF60 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r2, #8] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #8] +_0804AF58: + ldrh r2, [r2, #0xa] + adds r0, r0, r2 + strh r0, [r4, #0x32] + b _0804AF88 + .align 2, 0 +_0804AF60: .4byte gUnk_03000BF0 +_0804AF64: + ldr r1, _0804AF8C @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r2, #8] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #8] + ldrh r1, [r2, #0xa] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldr r1, [r2, #0xc] + adds r0, r4, #0 + bl sub_0807DAD0 + cmp r0, #0 + bne _0804AF88 + adds r0, r4, #0 + bl sub_0805E7BC +_0804AF88: + pop {r4, pc} + .align 2, 0 +_0804AF8C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804AF90 +sub_0804AF90: @ 0x0804AF90 + push {lr} + ldr r0, _0804AFA8 @ =gUnk_02033A90 + ldr r1, _0804AFAC @ =0x0000085C + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0, #0x1c] + bl sub_0804AFB0 + bl sub_080A7C7C + pop {pc} + .align 2, 0 +_0804AFA8: .4byte gUnk_02033A90 +_0804AFAC: .4byte 0x0000085C + + thumb_func_start sub_0804AFB0 +sub_0804AFB0: @ 0x0804AFB0 + push {r4, lr} + ldr r1, _0804AFD4 @ =gUnk_02017654 + str r0, [r1] + movs r2, #0 + ldr r0, _0804AFD8 @ =gUnk_02034350 + adds r3, r1, #0 + adds r4, r0, #0 + adds r4, #0x6c +_0804AFC0: + lsls r0, r2, #2 + ldr r1, [r3] + adds r0, r0, r1 + ldr r0, [r0] + stm r4!, {r0} + adds r2, #1 + cmp r2, #7 + bls _0804AFC0 + pop {r4, pc} + .align 2, 0 +_0804AFD4: .4byte gUnk_02017654 +_0804AFD8: .4byte gUnk_02034350 + + thumb_func_start sub_0804AFDC +sub_0804AFDC: @ 0x0804AFDC + push {r4, lr} + movs r4, #1 + movs r0, #6 + bl sub_0804B128 + cmp r0, #0 + beq _0804AFF0 + bl _call_via_r0 + adds r4, r0, #0 +_0804AFF0: + adds r0, r4, #0 + pop {r4, pc} + + thumb_func_start sub_0804AFF4 +sub_0804AFF4: @ 0x0804AFF4 + push {lr} + bl sub_080186EC + movs r0, #5 + bl sub_0804B128 + cmp r0, #0 + beq _0804B008 + bl _call_via_r0 +_0804B008: + movs r0, #7 + bl sub_0804B128 + cmp r0, #0 + beq _0804B016 + bl _call_via_r0 +_0804B016: + bl sub_0804B16C + pop {pc} diff --git a/asm/code_0804B058.s b/asm/code_0804B058.s new file mode 100644 index 00000000..4d0db031 --- /dev/null +++ b/asm/code_0804B058.s @@ -0,0 +1,17390 @@ + .include "asm/macros.inc" + .text + .syntax unified + + thumb_func_start sub_0804B058 +sub_0804B058: @ 0x0804B058 + push {r4, r5, lr} + adds r4, r0, #0 + cmp r4, #0 + beq _0804B0AE + ldrb r0, [r4] + cmp r0, #0xff + beq _0804B0AE + movs r5, #0 +_0804B068: + cmp r5, #0x1f + bhi _0804B09E + ldrb r1, [r4] + movs r0, #0xf + ands r0, r1 + cmp r0, #3 + bne _0804B09E + adds r0, r5, #0 + bl sub_08049D1C + cmp r0, #0 + beq _0804B0A4 + adds r0, r4, #0 + bl sub_0804ADF8 + adds r2, r0, #0 + cmp r2, #0 + beq _0804B0A4 + ldrb r0, [r2, #8] + cmp r0, #3 + bne _0804B0A4 + movs r0, #0x80 + adds r2, #0x6c + adds r1, r5, #0 + orrs r1, r0 + strb r1, [r2] + b _0804B0A4 +_0804B09E: + adds r0, r4, #0 + bl sub_0804ADF8 +_0804B0A4: + adds r5, #1 + adds r4, #0x10 + ldrb r0, [r4] + cmp r0, #0xff + bne _0804B068 +_0804B0AE: + pop {r4, r5, pc} + + thumb_func_start sub_0804B0B0 +sub_0804B0B0: @ 0x0804B0B0 + push {lr} + movs r2, #1 + bl sub_0804B0FC + bl sub_0804ADDC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B0C0 +sub_0804B0C0: @ 0x0804B0C0 + push {lr} + adds r2, r1, #0 + ldr r3, _0804B0E0 @ =gUnk_02017654 + movs r1, #0 + str r1, [r3] + ldr r1, _0804B0E4 @ =gUnk_080D50FC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + cmp r1, #0 + beq _0804B0DE + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r3] +_0804B0DE: + pop {pc} + .align 2, 0 +_0804B0E0: .4byte gUnk_02017654 +_0804B0E4: .4byte gUnk_080D50FC + + thumb_func_start sub_0804B0E8 +sub_0804B0E8: @ 0x0804B0E8 + push {lr} + movs r2, #4 + bl sub_0804B0FC + cmp r0, #0 + beq _0804B0F8 + bl _call_via_r0 +_0804B0F8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B0FC +sub_0804B0FC: @ 0x0804B0FC + push {r4, lr} + adds r3, r1, #0 + adds r4, r2, #0 + movs r2, #0 + ldr r1, _0804B124 @ =gUnk_080D50FC + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + cmp r1, #0 + beq _0804B120 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r2, [r0] + cmp r2, #0 + beq _0804B120 + lsls r0, r4, #2 + adds r0, r0, r2 + ldr r2, [r0] +_0804B120: + adds r0, r2, #0 + pop {r4, pc} + .align 2, 0 +_0804B124: .4byte gUnk_080D50FC + + thumb_func_start sub_0804B128 +sub_0804B128: @ 0x0804B128 + push {lr} + adds r2, r0, #0 + ldr r0, _0804B138 @ =gUnk_02017654 + ldr r1, [r0] + cmp r1, #0 + bne _0804B13C + movs r0, #0 + b _0804B166 + .align 2, 0 +_0804B138: .4byte gUnk_02017654 +_0804B13C: + cmp r2, #0x7f + bls _0804B150 + ldr r0, _0804B14C @ =gUnk_02034350 + movs r1, #7 + ands r1, r2 + lsls r1, r1, #2 + adds r0, #0x8c + b _0804B162 + .align 2, 0 +_0804B14C: .4byte gUnk_02034350 +_0804B150: + cmp r2, #7 + bls _0804B15C + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + b _0804B166 +_0804B15C: + ldr r0, _0804B168 @ =gUnk_02034350 + lsls r1, r2, #2 + adds r0, #0x6c +_0804B162: + adds r1, r1, r0 + ldr r0, [r1] +_0804B166: + pop {pc} + .align 2, 0 +_0804B168: .4byte gUnk_02034350 + + thumb_func_start sub_0804B16C +sub_0804B16C: @ 0x0804B16C + push {r4, lr} + ldr r4, _0804B1A4 @ =gUnk_02017660 +_0804B170: + ldrh r0, [r4, #4] + cmp r0, #0 + beq _0804B198 + ldrb r0, [r4, #1] + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B198 + ldrh r3, [r4, #4] + ldrb r1, [r4, #6] + movs r0, #1 + ands r0, r1 + movs r2, #1 + cmp r0, #0 + beq _0804B190 + movs r2, #2 +_0804B190: + movs r0, #0x74 + adds r1, r3, #0 + bl sub_0807B314 +_0804B198: + adds r4, #8 + ldr r0, _0804B1A8 @ =gUnk_020176A0 + cmp r4, r0 + blo _0804B170 + pop {r4, pc} + .align 2, 0 +_0804B1A4: .4byte gUnk_02017660 +_0804B1A8: .4byte gUnk_020176A0 + + thumb_func_start sub_0804B1AC +sub_0804B1AC: @ 0x0804B1AC + push {r4, lr} + adds r4, r0, #0 + cmp r4, #0 + beq _0804B25A + b _0804B254 +_0804B1B6: + ldrb r0, [r4] + subs r0, #1 + cmp r0, #0xc + bhi _0804B252 + lsls r0, r0, #2 + ldr r1, _0804B1C8 @ =_0804B1CC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804B1C8: .4byte _0804B1CC +_0804B1CC: @ jump table + .4byte _0804B200 @ case 0 + .4byte _0804B208 @ case 1 + .4byte _0804B252 @ case 2 + .4byte _0804B210 @ case 3 + .4byte _0804B252 @ case 4 + .4byte _0804B252 @ case 5 + .4byte _0804B218 @ case 6 + .4byte _0804B252 @ case 7 + .4byte _0804B22C @ case 8 + .4byte _0804B234 @ case 9 + .4byte _0804B23C @ case 10 + .4byte _0804B244 @ case 11 + .4byte _0804B24C @ case 12 +_0804B200: + adds r0, r4, #0 + bl sub_0804B290 + b _0804B252 +_0804B208: + adds r0, r4, #0 + bl sub_0804B29C + b _0804B252 +_0804B210: + adds r0, r4, #0 + bl sub_0804B300 + b _0804B252 +_0804B218: + ldr r0, _0804B224 @ =gUnk_02033A90 + ldr r1, _0804B228 @ =0x00000864 + adds r0, r0, r1 + ldrb r1, [r4, #3] + str r1, [r0] + b _0804B252 + .align 2, 0 +_0804B224: .4byte gUnk_02033A90 +_0804B228: .4byte 0x00000864 +_0804B22C: + adds r0, r4, #0 + bl sub_0804B334 + b _0804B252 +_0804B234: + adds r0, r4, #0 + bl sub_0804B340 + b _0804B252 +_0804B23C: + adds r0, r4, #0 + bl sub_0804B260 + b _0804B252 +_0804B244: + adds r0, r4, #0 + bl sub_0804B27C + b _0804B252 +_0804B24C: + ldr r1, _0804B25C @ =gUnk_02034350 + ldrb r0, [r4, #3] + strb r0, [r1, #9] +_0804B252: + adds r4, #8 +_0804B254: + ldrb r0, [r4] + cmp r0, #0 + bne _0804B1B6 +_0804B25A: + pop {r4, pc} + .align 2, 0 +_0804B25C: .4byte gUnk_02034350 + + thumb_func_start sub_0804B260 +sub_0804B260: @ 0x0804B260 + push {lr} + ldrb r0, [r0, #1] + lsls r0, r0, #5 + ldr r1, _0804B274 @ =gUnk_080015BC + adds r0, r0, r1 + ldr r1, _0804B278 @ =gUnk_02034398 + movs r2, #0x20 + bl sub_0801D66C + pop {pc} + .align 2, 0 +_0804B274: .4byte gUnk_080015BC +_0804B278: .4byte gUnk_02034398 + + thumb_func_start sub_0804B27C +sub_0804B27C: @ 0x0804B27C + push {lr} + ldr r1, _0804B28C @ =gUnk_02033A90 + ldrb r0, [r0, #1] + strb r0, [r1, #1] + bl sub_08054524 + pop {pc} + .align 2, 0 +_0804B28C: .4byte gUnk_02033A90 + + thumb_func_start sub_0804B290 +sub_0804B290: @ 0x0804B290 + push {lr} + ldrb r0, [r0, #1] + bl sub_0807CCB4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B29C +sub_0804B29C: @ 0x0804B29C + push {r4, lr} + adds r2, r0, #0 + ldr r4, _0804B2EC @ =gUnk_02017660 + movs r1, #0 +_0804B2A4: + ldrh r0, [r4, #4] + cmp r0, #0 + bne _0804B2F4 + adds r0, r2, #0 + adds r1, r4, #0 + movs r2, #8 + bl sub_0801D66C + ldrb r1, [r4, #6] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0804B2FC + ldr r0, _0804B2F0 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0804B2FC + ldrb r0, [r4, #1] + bl sub_0807CBD0 + cmp r0, #0 + bne _0804B2FC + ldrb r1, [r4, #1] + movs r0, #0x52 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _0804B2FC + ldrh r1, [r4, #4] + bl sub_0806F704 + b _0804B2FC + .align 2, 0 +_0804B2EC: .4byte gUnk_02017660 +_0804B2F0: .4byte gUnk_03000BF0 +_0804B2F4: + adds r1, #1 + adds r4, #8 + cmp r1, #7 + bls _0804B2A4 +_0804B2FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804B300 +sub_0804B300: @ 0x0804B300 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _0804B332 + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0x24 + strb r0, [r1, #9] + ldrh r0, [r4, #4] + strh r0, [r1, #0x38] + ldrh r0, [r4, #6] + strh r0, [r1, #0x3a] + ldrb r0, [r4, #2] + adds r2, r1, #0 + adds r2, #0x35 + strb r0, [r2] + ldrb r0, [r4, #1] + strh r0, [r1, #0x3e] + adds r0, r1, #0 + movs r1, #6 + bl sub_0805EA2C +_0804B332: + pop {r4, pc} + + thumb_func_start sub_0804B334 +sub_0804B334: @ 0x0804B334 + push {lr} + ldrb r0, [r0, #3] + movs r1, #1 + bl sub_0805BB00 + pop {pc} + + thumb_func_start sub_0804B340 +sub_0804B340: @ 0x0804B340 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #2] + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B35A + ldrh r0, [r4, #6] + ldrh r1, [r4, #4] + ldrb r2, [r4, #1] + bl sub_0807B314 + b _0804B380 +_0804B35A: + ldr r1, _0804B384 @ =gUnk_02034350 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _0804B380 + movs r0, #1 + strb r0, [r1, #1] + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _0804B380 + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0x2a + strb r0, [r1, #9] + adds r0, r1, #0 + movs r1, #6 + bl sub_0805EA2C +_0804B380: + pop {r4, pc} + .align 2, 0 +_0804B384: .4byte gUnk_02034350 + + thumb_func_start sub_0804B388 +sub_0804B388: @ 0x0804B388 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0x34 + cmp r4, #1 + bne _0804B396 + movs r0, #0x26 +_0804B396: + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0807B314 + movs r0, #0xf + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0804B3BA + adds r0, #0x38 + strb r4, [r0] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0806F704 +_0804B3BA: + movs r0, #1 + rsbs r0, r0, #0 + bl sub_080526F8 + pop {r4, r5, pc} + + thumb_func_start sub_0804B3C4 +sub_0804B3C4: @ 0x0804B3C4 + push {lr} + bl sub_0804B29C + pop {pc} + + thumb_func_start sub_0804B3CC +sub_0804B3CC: @ 0x0804B3CC + movs r0, #1 + bx lr + + thumb_func_start sub_0804B3D0 +sub_0804B3D0: @ 0x0804B3D0 + push {lr} + movs r0, #0 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B3DC +sub_0804B3DC: @ 0x0804B3DC + movs r0, #1 + bx lr + + thumb_func_start sub_0804B3E0 +sub_0804B3E0: @ 0x0804B3E0 + push {lr} + movs r0, #1 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B3EC +sub_0804B3EC: @ 0x0804B3EC + movs r0, #1 + bx lr + + thumb_func_start sub_0804B3F0 +sub_0804B3F0: @ 0x0804B3F0 + push {lr} + movs r0, #2 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B3FC +sub_0804B3FC: @ 0x0804B3FC + movs r0, #1 + bx lr + + thumb_func_start sub_0804B400 +sub_0804B400: @ 0x0804B400 + push {lr} + movs r0, #3 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B40C +sub_0804B40C: @ 0x0804B40C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B410 +sub_0804B410: @ 0x0804B410 + push {lr} + movs r0, #4 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B41C +sub_0804B41C: @ 0x0804B41C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B420 +sub_0804B420: @ 0x0804B420 + push {lr} + movs r0, #5 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B42C +sub_0804B42C: @ 0x0804B42C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B430 +sub_0804B430: @ 0x0804B430 + push {lr} + movs r0, #6 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B43C +sub_0804B43C: @ 0x0804B43C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B440 +sub_0804B440: @ 0x0804B440 + push {lr} + movs r0, #7 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B44C +sub_0804B44C: @ 0x0804B44C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B450 +sub_0804B450: @ 0x0804B450 + push {lr} + movs r0, #8 + bl sub_08030118 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B45C +sub_0804B45C: @ 0x0804B45C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B460 +sub_0804B460: @ 0x0804B460 + push {lr} + movs r0, #9 + bl sub_08030118 + ldr r0, _0804B474 @ =gUnk_02033A90 + movs r1, #3 + strb r1, [r0, #3] + movs r1, #0x4e + strb r1, [r0] + pop {pc} + .align 2, 0 +_0804B474: .4byte gUnk_02033A90 + + thumb_func_start sub_0804B478 +sub_0804B478: @ 0x0804B478 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B47C +sub_0804B47C: @ 0x0804B47C + push {lr} + movs r0, #0xa + bl sub_08030118 + ldr r0, _0804B490 @ =gUnk_02033A90 + movs r1, #3 + strb r1, [r0, #3] + movs r1, #0x4e + strb r1, [r0] + pop {pc} + .align 2, 0 +_0804B490: .4byte gUnk_02033A90 + + thumb_func_start sub_0804B494 +sub_0804B494: @ 0x0804B494 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B498 +sub_0804B498: @ 0x0804B498 + push {lr} + movs r0, #0x23 + bl sub_080575C8 + bl sub_08057688 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B4A8 +sub_0804B4A8: @ 0x0804B4A8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B4AC +sub_0804B4AC: @ 0x0804B4AC + push {lr} + movs r0, #0x23 + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B4B8 +sub_0804B4B8: @ 0x0804B4B8 + push {lr} + movs r0, #0x23 + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B4C4 +sub_0804B4C4: @ 0x0804B4C4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B4C8 +sub_0804B4C8: @ 0x0804B4C8 + push {lr} + movs r0, #0x22 + bl sub_080580B0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B4D4 +sub_0804B4D4: @ 0x0804B4D4 + push {lr} + movs r0, #0x22 + bl sub_080580B0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B4E0 +sub_0804B4E0: @ 0x0804B4E0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B4E4 +sub_0804B4E4: @ 0x0804B4E4 + push {lr} + movs r0, #0x22 + bl sub_080580B0 + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _0804B4FC + movs r0, #0x56 + bl sub_0807CD04 +_0804B4FC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B500 +sub_0804B500: @ 0x0804B500 + push {lr} + movs r0, #0x22 + bl sub_080580B0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B50C +sub_0804B50C: @ 0x0804B50C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B510 +sub_0804B510: @ 0x0804B510 + push {lr} + movs r0, #0x1e + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B51C +sub_0804B51C: @ 0x0804B51C + push {lr} + movs r0, #0x1e + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B528 +sub_0804B528: @ 0x0804B528 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B52C +sub_0804B52C: @ 0x0804B52C + push {lr} + movs r0, #0x21 + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B538 +sub_0804B538: @ 0x0804B538 + push {lr} + movs r0, #0x21 + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B544 +sub_0804B544: @ 0x0804B544 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B548 +sub_0804B548: @ 0x0804B548 + push {lr} + movs r0, #0x1f + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B554 +sub_0804B554: @ 0x0804B554 + push {lr} + movs r0, #0x1f + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B560 +sub_0804B560: @ 0x0804B560 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B564 +sub_0804B564: @ 0x0804B564 + push {lr} + movs r0, #0x20 + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B570 +sub_0804B570: @ 0x0804B570 + push {lr} + movs r0, #0x20 + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B57C +sub_0804B57C: @ 0x0804B57C + movs r0, #1 + bx lr + + thumb_func_start sub_0804B580 +sub_0804B580: @ 0x0804B580 + push {lr} + movs r0, #0x20 + bl sub_080575C8 + ldr r0, _0804B5A0 @ =gLinkEntity + movs r1, #0x32 + ldrsh r0, [r0, r1] + ldr r1, _0804B5A4 @ =gUnk_03000BF0 + ldrh r1, [r1, #8] + subs r0, r0, r1 + cmp r0, #0x40 + ble _0804B59E + ldr r0, _0804B5A8 @ =gUnk_080D6138 + bl sub_0804ADDC +_0804B59E: + pop {pc} + .align 2, 0 +_0804B5A0: .4byte gLinkEntity +_0804B5A4: .4byte gUnk_03000BF0 +_0804B5A8: .4byte gUnk_080D6138 + + thumb_func_start sub_0804B5AC +sub_0804B5AC: @ 0x0804B5AC + push {lr} + movs r0, #0x20 + bl sub_080575C8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804B5B8 +sub_0804B5B8: @ 0x0804B5B8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B5BC +sub_0804B5BC: @ 0x0804B5BC + push {lr} + ldr r0, _0804B5D0 @ =gUnk_030010A0 + ldrh r0, [r0, #0x12] + cmp r0, #0x40 + bls _0804B5CC + ldr r0, _0804B5D4 @ =gUnk_080D6210 + bl sub_0804ADDC +_0804B5CC: + pop {pc} + .align 2, 0 +_0804B5D0: .4byte gUnk_030010A0 +_0804B5D4: .4byte gUnk_080D6210 + + thumb_func_start sub_0804B5D8 +sub_0804B5D8: @ 0x0804B5D8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B5DC +sub_0804B5DC: @ 0x0804B5DC + push {r4, r5, r6, lr} + movs r0, #0x2c + bl sub_0801E7F4 + cmp r0, #0 + beq _0804B5EE + ldr r0, _0804B618 @ =gUnk_080D6340 + bl sub_0804ADDC +_0804B5EE: + movs r6, #0 + ldr r4, _0804B61C @ =gUnk_080D64F8 + movs r5, #7 +_0804B5F4: + ldrh r0, [r4] + adds r4, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _0804B602 + adds r6, #1 +_0804B602: + subs r5, #1 + cmp r5, #0 + bge _0804B5F4 + movs r0, #0x8b + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B648 + ldr r4, _0804B620 @ =gUnk_080D6508 + movs r5, #0 + b _0804B628 + .align 2, 0 +_0804B618: .4byte gUnk_080D6340 +_0804B61C: .4byte gUnk_080D64F8 +_0804B620: .4byte gUnk_080D6508 +_0804B624: + adds r5, #1 + adds r4, #2 +_0804B628: + cmp r5, r6 + bge _0804B648 + ldrh r0, [r4] + bl sub_0807CBD0 + cmp r0, #0 + bne _0804B624 + ldrh r0, [r4] + bl sub_0807CCB4 + movs r0, #0x8b + bl sub_0807CD34 + movs r0, #0x8c + bl sub_0807CCB4 +_0804B648: + movs r0, #0x1f + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B658 + ldr r0, _0804B6CC @ =gUnk_080D6360 + bl sub_0804ADDC +_0804B658: + movs r0, #0x20 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B668 + ldr r0, _0804B6D0 @ =gUnk_080D6380 + bl sub_0804ADDC +_0804B668: + movs r0, #0x21 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B678 + ldr r0, _0804B6D4 @ =gUnk_080D63A0 + bl sub_0804ADDC +_0804B678: + movs r0, #0x22 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B688 + ldr r0, _0804B6D8 @ =gUnk_080D63C0 + bl sub_0804ADDC +_0804B688: + movs r0, #0x23 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B698 + ldr r0, _0804B6DC @ =gUnk_080D63E0 + bl sub_0804ADDC +_0804B698: + movs r0, #0x24 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B6A8 + ldr r0, _0804B6E0 @ =gUnk_080D6400 + bl sub_0804ADDC +_0804B6A8: + movs r0, #0x25 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B6B8 + ldr r0, _0804B6E4 @ =gUnk_080D6420 + bl sub_0804ADDC +_0804B6B8: + movs r0, #0x26 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B6C8 + ldr r0, _0804B6E8 @ =gUnk_080D6440 + bl sub_0804ADDC +_0804B6C8: + pop {r4, r5, r6, pc} + .align 2, 0 +_0804B6CC: .4byte gUnk_080D6360 +_0804B6D0: .4byte gUnk_080D6380 +_0804B6D4: .4byte gUnk_080D63A0 +_0804B6D8: .4byte gUnk_080D63C0 +_0804B6DC: .4byte gUnk_080D63E0 +_0804B6E0: .4byte gUnk_080D6400 +_0804B6E4: .4byte gUnk_080D6420 +_0804B6E8: .4byte gUnk_080D6440 + + thumb_func_start sub_0804B6EC +sub_0804B6EC: @ 0x0804B6EC + movs r0, #1 + bx lr + + thumb_func_start sub_0804B6F0 +sub_0804B6F0: @ 0x0804B6F0 + push {lr} + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804B71C + ldr r0, _0804B714 @ =gUnk_080D6578 + bl sub_0804ADDC + movs r0, #0x73 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804B722 + ldr r0, _0804B718 @ =gUnk_080D6638 + bl sub_0804ADDC + b _0804B728 + .align 2, 0 +_0804B714: .4byte gUnk_080D6578 +_0804B718: .4byte gUnk_080D6638 +_0804B71C: + ldr r0, _0804B72C @ =gUnk_080D6558 + bl sub_0804ADDC +_0804B722: + ldr r0, _0804B730 @ =gUnk_080D6618 + bl sub_0804ADDC +_0804B728: + pop {pc} + .align 2, 0 +_0804B72C: .4byte gUnk_080D6558 +_0804B730: .4byte gUnk_080D6618 + + thumb_func_start sub_0804B734 +sub_0804B734: @ 0x0804B734 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B738 +sub_0804B738: @ 0x0804B738 + push {lr} + ldr r0, _0804B770 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #4 + bls _0804B748 + ldr r0, _0804B774 @ =gUnk_080D6714 + bl sub_0804ADDC +_0804B748: + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804B77C + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0804B77C + movs r0, #0x6a + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B77C + ldr r0, _0804B778 @ =gUnk_080D6734 + bl sub_0804ADDC + b _0804B782 + .align 2, 0 +_0804B770: .4byte gUnk_02002A40 +_0804B774: .4byte gUnk_080D6714 +_0804B778: .4byte gUnk_080D6734 +_0804B77C: + ldr r0, _0804B784 @ =gUnk_080D66F4 + bl sub_0804ADDC +_0804B782: + pop {pc} + .align 2, 0 +_0804B784: .4byte gUnk_080D66F4 + + thumb_func_start sub_0804B788 +sub_0804B788: @ 0x0804B788 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B78C +sub_0804B78C: @ 0x0804B78C + push {lr} + ldr r0, _0804B7A0 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #7 + bls _0804B79C + ldr r0, _0804B7A4 @ =gUnk_080D6924 + bl sub_0804ADDC +_0804B79C: + pop {pc} + .align 2, 0 +_0804B7A0: .4byte gUnk_02002A40 +_0804B7A4: .4byte gUnk_080D6924 + + thumb_func_start sub_0804B7A8 +sub_0804B7A8: @ 0x0804B7A8 + push {r4, lr} + movs r0, #0x91 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B7C8 + bl sub_08000E50 + movs r1, #3 + bl __modsi3 + adds r4, r0, #0 + movs r0, #1 + bl sub_0807CD34 + b _0804B7D0 +_0804B7C8: + movs r4, #0 + movs r0, #1 + bl sub_0807CCB4 +_0804B7D0: + ldr r2, _0804B7E0 @ =gUnk_02034350 + ldr r1, _0804B7E4 @ =gUnk_080D6A74 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2, #0x78] + movs r0, #1 + pop {r4, pc} + .align 2, 0 +_0804B7E0: .4byte gUnk_02034350 +_0804B7E4: .4byte gUnk_080D6A74 + + thumb_func_start sub_0804B7E8 +sub_0804B7E8: @ 0x0804B7E8 + push {lr} + movs r0, #0x91 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B81E + movs r0, #0x91 + bl sub_0807CD34 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + ldr r2, _0804B820 @ =gLinkEntity + ldr r1, _0804B824 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0x50 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x38 + strh r0, [r2, #0x32] + ldr r2, _0804B828 @ =gUnk_08010A5C + movs r0, #1 + movs r1, #2 + bl sub_080751E8 +_0804B81E: + pop {pc} + .align 2, 0 +_0804B820: .4byte gLinkEntity +_0804B824: .4byte gUnk_03000BF0 +_0804B828: .4byte gUnk_08010A5C + + thumb_func_start sub_0804B82C +sub_0804B82C: @ 0x0804B82C + push {r4, lr} + movs r0, #0x91 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B84A + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #1 + ands r4, r0 + movs r0, #2 + bl sub_0807CD34 + b _0804B852 +_0804B84A: + movs r4, #0 + movs r0, #2 + bl sub_0807CCB4 +_0804B852: + ldr r2, _0804B864 @ =gUnk_02034350 + ldr r1, _0804B868 @ =gUnk_080D6B18 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2, #0x78] + movs r0, #1 + pop {r4, pc} + .align 2, 0 +_0804B864: .4byte gUnk_02034350 +_0804B868: .4byte gUnk_080D6B18 + + thumb_func_start sub_0804B86C +sub_0804B86C: @ 0x0804B86C + push {lr} + movs r0, #0x91 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B8A2 + movs r0, #0x91 + bl sub_0807CD34 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + ldr r2, _0804B8A4 @ =gLinkEntity + ldr r1, _0804B8A8 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0x50 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x38 + strh r0, [r2, #0x32] + ldr r2, _0804B8AC @ =gUnk_08010A5C + movs r0, #1 + movs r1, #2 + bl sub_080751E8 +_0804B8A2: + pop {pc} + .align 2, 0 +_0804B8A4: .4byte gLinkEntity +_0804B8A8: .4byte gUnk_03000BF0 +_0804B8AC: .4byte gUnk_08010A5C + + thumb_func_start sub_0804B8B0 +sub_0804B8B0: @ 0x0804B8B0 + push {r4, lr} + movs r0, #0x91 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B8D0 + bl sub_08000E50 + movs r1, #3 + bl __modsi3 + adds r4, r0, #0 + movs r0, #3 + bl sub_0807CD34 + b _0804B8D8 +_0804B8D0: + movs r4, #0 + movs r0, #3 + bl sub_0807CCB4 +_0804B8D8: + ldr r2, _0804B8E8 @ =gUnk_02034350 + ldr r1, _0804B8EC @ =gUnk_080D6BB8 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r2, #0x78] + movs r0, #1 + pop {r4, pc} + .align 2, 0 +_0804B8E8: .4byte gUnk_02034350 +_0804B8EC: .4byte gUnk_080D6BB8 + + thumb_func_start sub_0804B8F0 +sub_0804B8F0: @ 0x0804B8F0 + push {lr} + movs r0, #0x91 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804B926 + movs r0, #0x91 + bl sub_0807CD34 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + ldr r2, _0804B928 @ =gLinkEntity + ldr r1, _0804B92C @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0x60 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x38 + strh r0, [r2, #0x32] + ldr r2, _0804B930 @ =gUnk_08010A5C + movs r0, #1 + movs r1, #2 + bl sub_080751E8 +_0804B926: + pop {pc} + .align 2, 0 +_0804B928: .4byte gLinkEntity +_0804B92C: .4byte gUnk_03000BF0 +_0804B930: .4byte gUnk_08010A5C + + thumb_func_start sub_0804B934 +sub_0804B934: @ 0x0804B934 + movs r0, #1 + bx lr + + thumb_func_start sub_0804B938 +sub_0804B938: @ 0x0804B938 + push {lr} + ldr r0, _0804B968 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bls _0804B9F2 + movs r0, #0x2b + bl GetProgressFlag + cmp r0, #0 + beq _0804B970 + movs r0, #0x2f + bl GetProgressFlag + cmp r0, #0 + bne _0804B984 + movs r0, #0x30 + bl GetProgressFlag + cmp r0, #0 + bne _0804B9BC + ldr r0, _0804B96C @ =gUnk_080D6C64 + bl sub_0804ADDC + b _0804B9F2 + .align 2, 0 +_0804B968: .4byte gUnk_02002A40 +_0804B96C: .4byte gUnk_080D6C64 +_0804B970: + movs r0, #0x2c + bl GetProgressFlag + cmp r0, #0 + beq _0804B9A8 + movs r0, #0x2e + bl GetProgressFlag + cmp r0, #0 + beq _0804B990 +_0804B984: + ldr r0, _0804B98C @ =gUnk_080D6D04 + bl sub_0804ADDC + b _0804B9F2 + .align 2, 0 +_0804B98C: .4byte gUnk_080D6D04 +_0804B990: + movs r0, #0x30 + bl GetProgressFlag + cmp r0, #0 + bne _0804B9D2 + ldr r0, _0804B9A4 @ =gUnk_080D6C94 + bl sub_0804ADDC + b _0804B9F2 + .align 2, 0 +_0804B9A4: .4byte gUnk_080D6C94 +_0804B9A8: + movs r0, #0x2d + bl GetProgressFlag + cmp r0, #0 + beq _0804B9EC + movs r0, #0x2e + bl GetProgressFlag + cmp r0, #0 + beq _0804B9C8 +_0804B9BC: + ldr r0, _0804B9C4 @ =gUnk_080D6CE4 + bl sub_0804ADDC + b _0804B9F2 + .align 2, 0 +_0804B9C4: .4byte gUnk_080D6CE4 +_0804B9C8: + movs r0, #0x2f + bl GetProgressFlag + cmp r0, #0 + beq _0804B9E0 +_0804B9D2: + ldr r0, _0804B9DC @ =gUnk_080D6CC4 + bl sub_0804ADDC + b _0804B9F2 + .align 2, 0 +_0804B9DC: .4byte gUnk_080D6CC4 +_0804B9E0: + ldr r0, _0804B9E8 @ =gUnk_080D6C34 + bl sub_0804ADDC + b _0804B9F2 + .align 2, 0 +_0804B9E8: .4byte gUnk_080D6C34 +_0804B9EC: + ldr r0, _0804B9F4 @ =gUnk_080D6BF4 + bl sub_0804ADDC +_0804B9F2: + pop {pc} + .align 2, 0 +_0804B9F4: .4byte gUnk_080D6BF4 + + thumb_func_start sub_0804B9F8 +sub_0804B9F8: @ 0x0804B9F8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_176 +nullsub_176: @ 0x0804B9FC + bx lr + .align 2, 0 + + thumb_func_start sub_0804BA00 +sub_0804BA00: @ 0x0804BA00 + movs r0, #1 + bx lr + + thumb_func_start nullsub_177 +nullsub_177: @ 0x0804BA04 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BA08 +sub_0804BA08: @ 0x0804BA08 + movs r0, #1 + bx lr + + thumb_func_start sub_0804BA0C +sub_0804BA0C: @ 0x0804BA0C + push {lr} + ldr r0, _0804BA34 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #7 + bhi _0804BA1C + ldr r0, _0804BA38 @ =gUnk_080D7038 + bl sub_0804ADDC +_0804BA1C: + ldr r0, _0804BA3C @ =gUnk_02034350 + ldrb r0, [r0] + cmp r0, #0 + bne _0804BA32 + movs r2, #0xb2 + lsls r2, r2, #2 + movs r0, #2 + movs r1, #0 + movs r3, #0xa8 + bl sub_08052CA4 +_0804BA32: + pop {pc} + .align 2, 0 +_0804BA34: .4byte gUnk_02002A40 +_0804BA38: .4byte gUnk_080D7038 +_0804BA3C: .4byte gUnk_02034350 + + thumb_func_start sub_0804BA40 +sub_0804BA40: @ 0x0804BA40 + movs r0, #1 + bx lr + + thumb_func_start sub_0804BA44 +sub_0804BA44: @ 0x0804BA44 + push {r4, lr} + ldr r4, _0804BA7C @ =gUnk_02002A40 + ldrb r0, [r4, #8] + cmp r0, #6 + bne _0804BA54 + ldr r0, _0804BA80 @ =gUnk_080D7140 + bl sub_0804ADDC +_0804BA54: + ldrb r0, [r4, #8] + cmp r0, #7 + bne _0804BA60 + ldr r0, _0804BA84 @ =gUnk_080D7170 + bl sub_0804ADDC +_0804BA60: + ldrb r0, [r4, #8] + cmp r0, #7 + bls _0804BA72 + ldr r0, _0804BA88 @ =gUnk_080D71A0 + bl sub_0804ADDC + ldrb r0, [r4, #8] + cmp r0, #7 + bhi _0804BA90 +_0804BA72: + ldr r0, _0804BA8C @ =gUnk_080D71D0 + bl sub_0804ADDC + b _0804BA96 + .align 2, 0 +_0804BA7C: .4byte gUnk_02002A40 +_0804BA80: .4byte gUnk_080D7140 +_0804BA84: .4byte gUnk_080D7170 +_0804BA88: .4byte gUnk_080D71A0 +_0804BA8C: .4byte gUnk_080D71D0 +_0804BA90: + ldr r0, _0804BA98 @ =gUnk_080D71F0 + bl sub_0804ADDC +_0804BA96: + pop {r4, pc} + .align 2, 0 +_0804BA98: .4byte gUnk_080D71F0 + + thumb_func_start sub_0804BA9C +sub_0804BA9C: @ 0x0804BA9C + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804BAB2 + ldr r0, _0804BAB8 @ =gUnk_02034350 + ldr r1, _0804BABC @ =gUnk_080D7348 + str r1, [r0, #0x6c] + movs r1, #0 + str r1, [r0, #0x74] +_0804BAB2: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804BAB8: .4byte gUnk_02034350 +_0804BABC: .4byte gUnk_080D7348 + + thumb_func_start sub_0804BAC0 +sub_0804BAC0: @ 0x0804BAC0 + push {lr} + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + bne _0804BAD2 + ldr r0, _0804BAE8 @ =gUnk_080D7328 + bl sub_0804ADDC +_0804BAD2: + movs r0, #0x64 + bl GetProgressFlag + cmp r0, #0 + beq _0804BAF4 + ldr r0, _0804BAEC @ =gUnk_02033A90 + ldr r1, _0804BAF0 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x1b + str r1, [r0] + b _0804BB0C + .align 2, 0 +_0804BAE8: .4byte gUnk_080D7328 +_0804BAEC: .4byte gUnk_02033A90 +_0804BAF0: .4byte 0x00000864 +_0804BAF4: + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804BB0C + ldr r0, _0804BB10 @ =gUnk_02033A90 + ldr r2, _0804BB14 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804BB0C: + pop {pc} + .align 2, 0 +_0804BB10: .4byte gUnk_02033A90 +_0804BB14: .4byte 0x00000864 + + thumb_func_start sub_0804BB18 +sub_0804BB18: @ 0x0804BB18 + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804BB2E + ldr r0, _0804BB34 @ =gUnk_02034350 + ldr r1, _0804BB38 @ =gUnk_080D7410 + str r1, [r0, #0x6c] + movs r1, #0 + str r1, [r0, #0x74] +_0804BB2E: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804BB34: .4byte gUnk_02034350 +_0804BB38: .4byte gUnk_080D7410 + + thumb_func_start sub_0804BB3C +sub_0804BB3C: @ 0x0804BB3C + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + bne _0804BB7C + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + bne _0804BB58 + ldr r0, _0804BB8C @ =gUnk_080D73B0 + bl sub_0804ADDC +_0804BB58: + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + bne _0804BB72 + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + beq _0804BB72 + ldr r0, _0804BB90 @ =gUnk_080D73E0 + bl sub_0804ADDC +_0804BB72: + movs r0, #0x64 + bl GetProgressFlag + cmp r0, #0 + beq _0804BB8A +_0804BB7C: + ldr r0, _0804BB94 @ =gUnk_02033A90 + ldr r2, _0804BB98 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804BB8A: + pop {pc} + .align 2, 0 +_0804BB8C: .4byte gUnk_080D73B0 +_0804BB90: .4byte gUnk_080D73E0 +_0804BB94: .4byte gUnk_02033A90 +_0804BB98: .4byte 0x00000864 + + thumb_func_start sub_0804BB9C +sub_0804BB9C: @ 0x0804BB9C + movs r0, #1 + bx lr + + thumb_func_start sub_0804BBA0 +sub_0804BBA0: @ 0x0804BBA0 + push {lr} + movs r0, #0x64 + bl GetProgressFlag + cmp r0, #0 + beq _0804BBBA + ldr r0, _0804BBDC @ =gUnk_02033A90 + ldr r2, _0804BBE0 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804BBBA: + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804BBE8 + ldr r0, _0804BBE4 @ =gUnk_080D7618 + bl sub_0804ADDC + ldr r0, _0804BBDC @ =gUnk_02033A90 + ldr r2, _0804BBE0 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + b _0804BC2E + .align 2, 0 +_0804BBDC: .4byte gUnk_02033A90 +_0804BBE0: .4byte 0x00000864 +_0804BBE4: .4byte gUnk_080D7618 +_0804BBE8: + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + bne _0804BC10 + ldr r0, _0804BC04 @ =gUnk_080D74C8 + bl sub_0804ADDC + ldr r0, _0804BC08 @ =gUnk_02033A90 + ldr r1, _0804BC0C @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x1b + str r1, [r0] + b _0804BC2E + .align 2, 0 +_0804BC04: .4byte gUnk_080D74C8 +_0804BC08: .4byte gUnk_02033A90 +_0804BC0C: .4byte 0x00000864 +_0804BC10: + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + bne _0804BC28 + ldr r0, _0804BC24 @ =gUnk_080D7588 + bl sub_0804ADDC + b _0804BC2E + .align 2, 0 +_0804BC24: .4byte gUnk_080D7588 +_0804BC28: + ldr r0, _0804BC30 @ =gUnk_080D75D8 + bl sub_0804ADDC +_0804BC2E: + pop {pc} + .align 2, 0 +_0804BC30: .4byte gUnk_080D75D8 + + thumb_func_start sub_0804BC34 +sub_0804BC34: @ 0x0804BC34 + movs r0, #1 + bx lr + + thumb_func_start sub_0804BC38 +sub_0804BC38: @ 0x0804BC38 + push {lr} + movs r0, #0x9c + bl sub_0807CBD0 + cmp r0, #0 + beq _0804BC4A + ldr r0, _0804BC4C @ =gUnk_080D7690 + bl sub_0804ADDC +_0804BC4A: + pop {pc} + .align 2, 0 +_0804BC4C: .4byte gUnk_080D7690 + + thumb_func_start sub_0804BC50 +sub_0804BC50: @ 0x0804BC50 + push {lr} + movs r0, #0x9f + bl sub_0807CBD0 + cmp r0, #0 + bne _0804BC68 + ldr r1, _0804BC6C @ =gUnk_030010A0 + movs r0, #5 + strb r0, [r1, #0xf] + movs r0, #0x1c + bl sub_0807CD80 +_0804BC68: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804BC6C: .4byte gUnk_030010A0 + + thumb_func_start sub_0804BC70 +sub_0804BC70: @ 0x0804BC70 + push {lr} + movs r0, #0x9f + bl sub_0807CBD0 + cmp r0, #0 + bne _0804BCA0 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + ldr r2, _0804BCB0 @ =gLinkEntity + ldr r1, _0804BCB4 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0xb0 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x40 + strh r0, [r2, #0x32] + ldr r2, _0804BCB8 @ =gUnk_08009E88 + movs r0, #0 + movs r1, #6 + bl sub_080751E8 +_0804BCA0: + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + bne _0804BCBC + bl sub_08052878 + b _0804BCD0 + .align 2, 0 +_0804BCB0: .4byte gLinkEntity +_0804BCB4: .4byte gUnk_03000BF0 +_0804BCB8: .4byte gUnk_08009E88 +_0804BCBC: + movs r0, #0x64 + bl GetProgressFlag + cmp r0, #0 + beq _0804BCD0 + ldr r0, _0804BCD4 @ =gUnk_02033A90 + ldr r1, _0804BCD8 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x1b + str r1, [r0] +_0804BCD0: + pop {pc} + .align 2, 0 +_0804BCD4: .4byte gUnk_02033A90 +_0804BCD8: .4byte 0x00000864 + + thumb_func_start sub_0804BCDC +sub_0804BCDC: @ 0x0804BCDC + push {lr} + ldr r0, _0804BCE8 @ =gUnk_0813AB80 + movs r1, #4 + bl sub_0808091C + pop {pc} + .align 2, 0 +_0804BCE8: .4byte gUnk_0813AB80 + + thumb_func_start sub_0804BCEC +sub_0804BCEC: @ 0x0804BCEC + movs r0, #1 + bx lr + + thumb_func_start nullsub_178 +nullsub_178: @ 0x0804BCF0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BCF4 +sub_0804BCF4: @ 0x0804BCF4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_179 +nullsub_179: @ 0x0804BCF8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BCFC +sub_0804BCFC: @ 0x0804BCFC + movs r0, #1 + bx lr + + thumb_func_start nullsub_180 +nullsub_180: @ 0x0804BD00 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD04 +sub_0804BD04: @ 0x0804BD04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_181 +nullsub_181: @ 0x0804BD08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD0C +sub_0804BD0C: @ 0x0804BD0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_182 +nullsub_182: @ 0x0804BD10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD14 +sub_0804BD14: @ 0x0804BD14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_183 +nullsub_183: @ 0x0804BD18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD1C +sub_0804BD1C: @ 0x0804BD1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_184 +nullsub_184: @ 0x0804BD20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD24 +sub_0804BD24: @ 0x0804BD24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_185 +nullsub_185: @ 0x0804BD28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD2C +sub_0804BD2C: @ 0x0804BD2C + movs r0, #1 + bx lr + + thumb_func_start nullsub_186 +nullsub_186: @ 0x0804BD30 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD34 +sub_0804BD34: @ 0x0804BD34 + movs r0, #1 + bx lr + + thumb_func_start nullsub_187 +nullsub_187: @ 0x0804BD38 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD3C +sub_0804BD3C: @ 0x0804BD3C + movs r0, #1 + bx lr + + thumb_func_start nullsub_188 +nullsub_188: @ 0x0804BD40 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD44 +sub_0804BD44: @ 0x0804BD44 + movs r0, #1 + bx lr + + thumb_func_start nullsub_189 +nullsub_189: @ 0x0804BD48 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BD4C +sub_0804BD4C: @ 0x0804BD4C + movs r0, #1 + bx lr + + thumb_func_start sub_0804BD50 +sub_0804BD50: @ 0x0804BD50 + push {r4, lr} + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + beq _0804BD94 + ldr r4, _0804BD98 @ =0x00004072 + ldr r1, _0804BD9C @ =0x0000014D + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + movs r1, #0x86 + lsls r1, r1, #1 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r4, #0x1e + movs r1, #0xa6 + lsls r1, r1, #1 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + movs r1, #0xc6 + lsls r1, r1, #1 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r0, _0804BDA0 @ =gUnk_080D7D34 + bl sub_0804ADDC +_0804BD94: + pop {r4, pc} + .align 2, 0 +_0804BD98: .4byte 0x00004072 +_0804BD9C: .4byte 0x0000014D +_0804BDA0: .4byte gUnk_080D7D34 + + thumb_func_start sub_0804BDA4 +sub_0804BDA4: @ 0x0804BDA4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_190 +nullsub_190: @ 0x0804BDA8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BDAC +sub_0804BDAC: @ 0x0804BDAC + movs r0, #1 + bx lr + + thumb_func_start nullsub_191 +nullsub_191: @ 0x0804BDB0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BDB4 +sub_0804BDB4: @ 0x0804BDB4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_192 +nullsub_192: @ 0x0804BDB8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BDBC +sub_0804BDBC: @ 0x0804BDBC + movs r0, #1 + bx lr + + thumb_func_start nullsub_193 +nullsub_193: @ 0x0804BDC0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BDC4 +sub_0804BDC4: @ 0x0804BDC4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_194 +nullsub_194: @ 0x0804BDC8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BDCC +sub_0804BDCC: @ 0x0804BDCC + movs r0, #1 + bx lr + + thumb_func_start sub_0804BDD0 +sub_0804BDD0: @ 0x0804BDD0 + push {lr} + movs r0, #3 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804BDE8 + ldr r0, _0804BDE4 @ =gUnk_080D827C + bl sub_0804ADDC + b _0804BE00 + .align 2, 0 +_0804BDE4: .4byte gUnk_080D827C +_0804BDE8: + bl sub_0805BC4C + movs r0, #0x76 + movs r1, #0x82 + movs r2, #2 + bl sub_0807B314 + movs r0, #0x76 + movs r1, #0x8c + movs r2, #2 + bl sub_0807B314 +_0804BE00: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804BE04 +sub_0804BE04: @ 0x0804BE04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_28 +nullsub_28: @ 0x0804BE08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE0C +sub_0804BE0C: @ 0x0804BE0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_29 +nullsub_29: @ 0x0804BE10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE14 +sub_0804BE14: @ 0x0804BE14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_30 +nullsub_30: @ 0x0804BE18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE1C +sub_0804BE1C: @ 0x0804BE1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_31 +nullsub_31: @ 0x0804BE20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE24 +sub_0804BE24: @ 0x0804BE24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_32 +nullsub_32: @ 0x0804BE28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE2C +sub_0804BE2C: @ 0x0804BE2C + movs r0, #1 + bx lr + + thumb_func_start nullsub_33 +nullsub_33: @ 0x0804BE30 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE34 +sub_0804BE34: @ 0x0804BE34 + movs r0, #1 + bx lr + + thumb_func_start nullsub_34 +nullsub_34: @ 0x0804BE38 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE3C +sub_0804BE3C: @ 0x0804BE3C + movs r0, #1 + bx lr + + thumb_func_start nullsub_35 +nullsub_35: @ 0x0804BE40 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE44 +sub_0804BE44: @ 0x0804BE44 + movs r0, #1 + bx lr + + thumb_func_start nullsub_36 +nullsub_36: @ 0x0804BE48 + bx lr + .align 2, 0 + + thumb_func_start sub_0804BE4C +sub_0804BE4C: @ 0x0804BE4C + movs r0, #1 + bx lr + + thumb_func_start sub_0804BE50 +sub_0804BE50: @ 0x0804BE50 + push {lr} + movs r0, #0x68 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804BE62 + movs r0, #0x68 + bl sub_0807CCB4 +_0804BE62: + movs r0, #0x2f + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BE78 + ldr r0, _0804BE74 @ =gUnk_080D8B24 + bl sub_0804ADDC + b _0804BEDE + .align 2, 0 +_0804BE74: .4byte gUnk_080D8B24 +_0804BE78: + movs r0, #0x2b + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BE90 + ldr r0, _0804BE8C @ =gUnk_080D8AC4 + bl sub_0804ADDC + b _0804BEDE + .align 2, 0 +_0804BE8C: .4byte gUnk_080D8AC4 +_0804BE90: + movs r0, #0x26 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BEA8 + ldr r0, _0804BEA4 @ =gUnk_080D8A74 + bl sub_0804ADDC + b _0804BEDE + .align 2, 0 +_0804BEA4: .4byte gUnk_080D8A74 +_0804BEA8: + movs r0, #0x2a + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BEC0 + ldr r0, _0804BEBC @ =gUnk_080D8A34 + bl sub_0804ADDC + b _0804BEDE + .align 2, 0 +_0804BEBC: .4byte gUnk_080D8A34 +_0804BEC0: + movs r0, #0x25 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BED8 + ldr r0, _0804BED4 @ =gUnk_080D8A04 + bl sub_0804ADDC + b _0804BEDE + .align 2, 0 +_0804BED4: .4byte gUnk_080D8A04 +_0804BED8: + ldr r0, _0804BF1C @ =gUnk_080D89E4 + bl sub_0804ADDC +_0804BEDE: + movs r0, #0x25 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BEF2 + ldr r0, _0804BF20 @ =gUnk_080D8BBC + ldr r1, _0804BF24 @ =0x000007C5 + movs r2, #1 + bl sub_0807BB68 +_0804BEF2: + movs r0, #0x26 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BF06 + ldr r0, _0804BF28 @ =gUnk_080D8BFA + ldr r1, _0804BF2C @ =0x00000503 + movs r2, #1 + bl sub_0807BB68 +_0804BF06: + movs r0, #0x2f + bl sub_0801E7F4 + cmp r0, #0 + beq _0804BF1A + ldr r0, _0804BF30 @ =gUnk_080D8C68 + ldr r1, _0804BF34 @ =0x00000281 + movs r2, #1 + bl sub_0807BB68 +_0804BF1A: + pop {pc} + .align 2, 0 +_0804BF1C: .4byte gUnk_080D89E4 +_0804BF20: .4byte gUnk_080D8BBC +_0804BF24: .4byte 0x000007C5 +_0804BF28: .4byte gUnk_080D8BFA +_0804BF2C: .4byte 0x00000503 +_0804BF30: .4byte gUnk_080D8C68 +_0804BF34: .4byte 0x00000281 + + thumb_func_start sub_0804BF38 +sub_0804BF38: @ 0x0804BF38 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, [r1, #4] + lsls r0, r0, #4 + ldr r1, _0804C000 @ =gUnk_080D8E50 + adds r4, r0, r1 + ldr r0, [r4] + ldrh r1, [r4, #4] + lsrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + ldrh r2, [r4, #6] + lsrs r2, r2, #4 + ands r2, r3 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #1 + bl sub_0807BB68 + ldrh r0, [r4, #8] + mov r8, r0 + movs r5, #0 + cmp r5, r8 + bhs _0804BFE8 + ldr r7, _0804C004 @ =gUnk_03000BF0 + movs r1, #0 + mov sl, r1 + movs r6, #0 + movs r3, #1 + mov sb, r3 +_0804BF7A: + movs r0, #0xf + movs r1, #0xf + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0804BFA6 + ldrh r0, [r7, #6] + ldrh r1, [r4, #4] + adds r0, r0, r1 + adds r0, r0, r6 + strh r0, [r2, #0x2e] + ldrh r1, [r7, #8] + ldrh r3, [r4, #6] + adds r1, r1, r3 + adds r0, r5, #0 + mov r3, sb + ands r0, r3 + lsls r0, r0, #3 + adds r1, r1, r0 + strh r1, [r2, #0x32] +_0804BFA6: + movs r0, #0xf + movs r1, #0x54 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0804BFE0 + ldrh r0, [r7, #6] + ldrh r1, [r4, #4] + adds r0, r0, r1 + adds r0, r0, r6 + strh r0, [r2, #0x2e] + ldrh r1, [r7, #8] + ldrh r3, [r4, #6] + adds r1, r1, r3 + ldr r0, _0804C008 @ =0x0000FFF4 + adds r1, r1, r0 + adds r0, r5, #0 + mov r3, sb + ands r0, r3 + lsls r0, r0, #3 + adds r1, r1, r0 + strh r1, [r2, #0x32] + mov r0, sl + strb r0, [r2, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #0x24] +_0804BFE0: + adds r6, #0x10 + adds r5, #1 + cmp r5, r8 + blo _0804BF7A +_0804BFE8: + ldrh r0, [r4, #0xa] + ldrh r1, [r4, #0xc] + bl sub_08080964 + ldrh r0, [r4, #0xe] + bl sub_080A3268 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0804C000: .4byte gUnk_080D8E50 +_0804C004: .4byte gUnk_03000BF0 +_0804C008: .4byte 0x0000FFF4 + + thumb_func_start sub_0804C00C +sub_0804C00C: @ 0x0804C00C + movs r0, #1 + bx lr + + thumb_func_start nullsub_195 +nullsub_195: @ 0x0804C010 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C014 +sub_0804C014: @ 0x0804C014 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C018 +sub_0804C018: @ 0x0804C018 + push {r4, lr} + movs r0, #0x20 + bl GetProgressFlag + cmp r0, #0 + bne _0804C044 + movs r0, #0x3c + bl sub_0807CA84 + cmp r0, #1 + bne _0804C054 + ldr r0, _0804C03C @ =gUnk_080D90C8 + bl sub_0804ADDC + ldr r0, _0804C040 @ =gUnk_080D9108 + bl sub_0804ADDC + b _0804C054 + .align 2, 0 +_0804C03C: .4byte gUnk_080D90C8 +_0804C040: .4byte gUnk_080D9108 +_0804C044: + movs r0, #0x21 + bl GetProgressFlag + cmp r0, #0 + bne _0804C054 + ldr r0, _0804C0D0 @ =gUnk_080D9108 + bl sub_0804ADDC +_0804C054: + movs r0, #0x3c + bl sub_0807CA84 + cmp r0, #2 + beq _0804C090 + ldr r0, _0804C0D4 @ =gUnk_080D9098 + bl sub_0804ADDC + movs r0, #0xbd + lsls r0, r0, #1 + ldr r1, _0804C0D8 @ =0x0000058E + movs r2, #1 + bl sub_0807B314 + ldr r0, _0804C0DC @ =0x0000017B + ldr r1, _0804C0E0 @ =0x0000058F + movs r2, #1 + bl sub_0807B314 + movs r0, #0xbe + lsls r0, r0, #1 + ldr r1, _0804C0E4 @ =0x000005CE + movs r2, #1 + bl sub_0807B314 + ldr r0, _0804C0E8 @ =0x0000017D + ldr r1, _0804C0EC @ =0x000005CF + movs r2, #1 + bl sub_0807B314 +_0804C090: + bl sub_08054570 + bl sub_08059278 + ldr r4, _0804C0F0 @ =0x00004072 + ldr r1, _0804C0F4 @ =0x00000A47 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804C0F8 @ =0x00000C47 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + movs r0, #0x62 + bl GetProgressFlag + cmp r0, #0 + beq _0804C0C8 + ldr r0, _0804C0FC @ =gUnk_030010A0 + ldr r1, [r0, #0x10] + ldr r0, _0804C100 @ =0x02780078 + cmp r1, r0 + bne _0804C0C8 + movs r0, #0x72 + bl sub_080A3268 +_0804C0C8: + movs r0, #0x62 + bl sub_0807CD80 + pop {r4, pc} + .align 2, 0 +_0804C0D0: .4byte gUnk_080D9108 +_0804C0D4: .4byte gUnk_080D9098 +_0804C0D8: .4byte 0x0000058E +_0804C0DC: .4byte 0x0000017B +_0804C0E0: .4byte 0x0000058F +_0804C0E4: .4byte 0x000005CE +_0804C0E8: .4byte 0x0000017D +_0804C0EC: .4byte 0x000005CF +_0804C0F0: .4byte 0x00004072 +_0804C0F4: .4byte 0x00000A47 +_0804C0F8: .4byte 0x00000C47 +_0804C0FC: .4byte gUnk_030010A0 +_0804C100: .4byte 0x02780078 + + thumb_func_start sub_0804C104 +sub_0804C104: @ 0x0804C104 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C108 +sub_0804C108: @ 0x0804C108 + push {lr} + ldr r2, _0804C124 @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x40 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r2, #0xd] + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0xd] + bl sub_0804C128 + pop {pc} + .align 2, 0 +_0804C124: .4byte gUnk_02033A90 + + thumb_func_start sub_0804C128 +sub_0804C128: @ 0x0804C128 + push {r4, r5, lr} + movs r0, #0 + bl sub_080AF250 + ldr r0, _0804C15C @ =gUnk_02034350 + ldrb r0, [r0] + cmp r0, #0 + bne _0804C13A + b _0804C24C +_0804C13A: + ldr r1, _0804C160 @ =gUnk_02033A90 + ldrb r3, [r1, #0xd] + movs r0, #0xe + ands r0, r3 + adds r5, r1, #0 + cmp r0, #0 + bne _0804C164 + movs r0, #0xf0 + ands r0, r3 + cmp r0, #0 + bne _0804C19C + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r3 + movs r1, #2 + orrs r0, r1 + b _0804C19A + .align 2, 0 +_0804C15C: .4byte gUnk_02034350 +_0804C160: .4byte gUnk_02033A90 +_0804C164: + ldr r2, _0804C18C @ =gUnk_03000BF0 + ldr r1, _0804C190 @ =gUnk_080D9338 + lsls r4, r3, #0x1c + lsrs r0, r4, #0x1d + adds r0, r0, r1 + ldrb r1, [r2, #0x10] + ldrb r0, [r0] + cmp r1, r0 + bne _0804C194 + lsrs r0, r4, #0x1d + adds r0, #1 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0xf + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r0 + strb r1, [r5, #0xd] + b _0804C19C + .align 2, 0 +_0804C18C: .4byte gUnk_03000BF0 +_0804C190: .4byte gUnk_080D9338 +_0804C194: + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r3 +_0804C19A: + strb r0, [r5, #0xd] +_0804C19C: + ldrb r3, [r5, #0xd] + movs r0, #0xe + ands r0, r3 + cmp r0, #0 + bne _0804C1DE + ldr r2, _0804C1D0 @ =gUnk_03000BF0 + ldr r1, _0804C1D4 @ =gUnk_080D9340 + lsls r4, r3, #0x18 + lsrs r0, r4, #0x1c + adds r0, r0, r1 + ldrb r1, [r2, #0x10] + ldrb r0, [r0] + cmp r1, r0 + bne _0804C1D8 + lsrs r0, r4, #0x1c + adds r0, #1 + lsls r0, r0, #4 + movs r1, #0xf + ands r1, r3 + orrs r1, r0 + movs r0, #0xf + rsbs r0, r0, #0 + ands r1, r0 + strb r1, [r5, #0xd] + b _0804C1DE + .align 2, 0 +_0804C1D0: .4byte gUnk_03000BF0 +_0804C1D4: .4byte gUnk_080D9340 +_0804C1D8: + movs r0, #0xf + ands r0, r3 + strb r0, [r5, #0xd] +_0804C1DE: + adds r4, r5, #0 + ldrb r1, [r4, #0xd] + movs r0, #0xe + ands r0, r1 + cmp r0, #0xc + bne _0804C206 + movs r0, #1 + bl sub_080AF250 + movs r0, #0x62 + bl sub_0807CD04 + bl sub_0804C290 + ldrb r1, [r4, #0xd] + movs r0, #0xf + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0xd] + b _0804C254 +_0804C206: + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x60 + bne _0804C250 + movs r0, #1 + bl sub_080AF250 + movs r0, #0x5c + bl sub_0807CBD0 + cmp r0, #0 + bne _0804C228 + ldr r1, _0804C244 @ =0x00000107 + movs r0, #0x73 + movs r2, #1 + bl sub_0807B314 +_0804C228: + ldr r0, _0804C248 @ =gUnk_080D9328 + bl sub_0804B1AC + movs r0, #0x62 + bl sub_0807CD04 + bl sub_0804C290 + ldrb r1, [r5, #0xd] + movs r0, #0xf + ands r0, r1 + strb r0, [r5, #0xd] + b _0804C254 + .align 2, 0 +_0804C244: .4byte 0x00000107 +_0804C248: .4byte gUnk_080D9328 +_0804C24C: + bl sub_0804C258 +_0804C250: + bl sub_0804C290 +_0804C254: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0804C258 +sub_0804C258: @ 0x0804C258 + push {lr} + ldr r3, _0804C288 @ =gUnk_02033A90 + ldrb r0, [r3, #0xd] + movs r2, #0xf + rsbs r2, r2, #0 + ands r2, r0 + movs r0, #2 + orrs r2, r0 + movs r0, #0xf + ands r2, r0 + strb r2, [r3, #0xd] + ldr r0, _0804C28C @ =gUnk_030010A0 + ldrb r0, [r0, #0xe] + cmp r0, #4 + bne _0804C284 + movs r1, #0xe + adds r0, r2, #0 + orrs r0, r1 + strb r0, [r3, #0xd] + movs r0, #1 + bl sub_080AF250 +_0804C284: + pop {pc} + .align 2, 0 +_0804C288: .4byte gUnk_02033A90 +_0804C28C: .4byte gUnk_030010A0 + + thumb_func_start sub_0804C290 +sub_0804C290: @ 0x0804C290 + push {lr} + ldr r0, _0804C2B4 @ =gUnk_02033A90 + ldrb r1, [r0, #0xd] + movs r0, #0xe + ands r0, r1 + cmp r0, #0 + beq _0804C2B2 + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1d + lsls r1, r1, #2 + ldr r0, _0804C2B8 @ =gUnk_080D9348 + adds r1, r1, r0 + ldrh r0, [r1] + ldrh r1, [r1, #2] + movs r2, #1 + bl sub_0807B314 +_0804C2B2: + pop {pc} + .align 2, 0 +_0804C2B4: .4byte gUnk_02033A90 +_0804C2B8: .4byte gUnk_080D9348 + + thumb_func_start sub_0804C2BC +sub_0804C2BC: @ 0x0804C2BC + movs r0, #1 + bx lr + + thumb_func_start nullsub_196 +nullsub_196: @ 0x0804C2C0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C2C4 +sub_0804C2C4: @ 0x0804C2C4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_197 +nullsub_197: @ 0x0804C2C8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C2CC +sub_0804C2CC: @ 0x0804C2CC + movs r0, #1 + bx lr + + thumb_func_start sub_0804C2D0 +sub_0804C2D0: @ 0x0804C2D0 + push {lr} + movs r0, #0 + bl sub_08058324 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804C2DC +sub_0804C2DC: @ 0x0804C2DC + movs r0, #1 + bx lr + + thumb_func_start sub_0804C2E0 +sub_0804C2E0: @ 0x0804C2E0 + push {lr} + movs r0, #1 + bl sub_08058324 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804C2EC +sub_0804C2EC: @ 0x0804C2EC + movs r0, #1 + bx lr + + thumb_func_start sub_0804C2F0 +sub_0804C2F0: @ 0x0804C2F0 + push {lr} + movs r0, #2 + bl sub_08058324 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0804C312 + movs r0, #0x2a + bl GetProgressFlag + cmp r0, #0 + bne _0804C312 + ldr r0, _0804C314 @ =gUnk_080D9800 + bl sub_0804ADDC +_0804C312: + pop {pc} + .align 2, 0 +_0804C314: .4byte gUnk_080D9800 + + thumb_func_start sub_0804C318 +sub_0804C318: @ 0x0804C318 + push {lr} + bl sub_0804C2F0 + pop {pc} + + thumb_func_start sub_0804C320 +sub_0804C320: @ 0x0804C320 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C324 +sub_0804C324: @ 0x0804C324 + push {lr} + movs r0, #3 + bl sub_08058324 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804C330 +sub_0804C330: @ 0x0804C330 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C334 +sub_0804C334: @ 0x0804C334 + push {lr} + movs r0, #0x1e + bl sub_0807CD04 + movs r0, #0x5b + bl sub_0801E7F4 + cmp r0, #0 + beq _0804C34C + ldr r0, _0804C374 @ =gUnk_080D9CC8 + bl sub_0804ADDC +_0804C34C: + ldr r0, _0804C378 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x16 + ands r0, r1 + cmp r0, #0 + bne _0804C360 + ldr r0, _0804C37C @ =gUnk_080D9CE8 + bl sub_0804ADDC +_0804C360: + movs r0, #0x15 + bl sub_0807CA84 + cmp r0, #0 + bne _0804C370 + ldr r0, _0804C380 @ =gUnk_080D9C38 + bl sub_0804ADDC +_0804C370: + pop {pc} + .align 2, 0 +_0804C374: .4byte gUnk_080D9CC8 +_0804C378: .4byte gUnk_02002A40 +_0804C37C: .4byte gUnk_080D9CE8 +_0804C380: .4byte gUnk_080D9C38 + + thumb_func_start sub_0804C384 +sub_0804C384: @ 0x0804C384 + push {lr} + ldr r0, _0804C39C @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x16 + ands r0, r1 + cmp r0, #0 + bne _0804C39A + ldr r0, _0804C3A0 @ =gUnk_080D9CE8 + bl sub_0804ADDC +_0804C39A: + pop {pc} + .align 2, 0 +_0804C39C: .4byte gUnk_02002A40 +_0804C3A0: .4byte gUnk_080D9CE8 + + thumb_func_start sub_0804C3A4 +sub_0804C3A4: @ 0x0804C3A4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_198 +nullsub_198: @ 0x0804C3A8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C3AC +sub_0804C3AC: @ 0x0804C3AC + movs r0, #1 + bx lr + + thumb_func_start nullsub_199 +nullsub_199: @ 0x0804C3B0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C3B4 +sub_0804C3B4: @ 0x0804C3B4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_200 +nullsub_200: @ 0x0804C3B8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C3BC +sub_0804C3BC: @ 0x0804C3BC + movs r0, #1 + bx lr + + thumb_func_start nullsub_201 +nullsub_201: @ 0x0804C3C0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C3C4 +sub_0804C3C4: @ 0x0804C3C4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_202 +nullsub_202: @ 0x0804C3C8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C3CC +sub_0804C3CC: @ 0x0804C3CC + push {lr} + movs r0, #0x39 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804C3DE + ldr r1, _0804C3E4 @ =gUnk_02034350 + ldr r0, _0804C3E8 @ =gUnk_080DA230 + str r0, [r1, #0x6c] +_0804C3DE: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804C3E4: .4byte gUnk_02034350 +_0804C3E8: .4byte gUnk_080DA230 + + thumb_func_start nullsub_203 +nullsub_203: @ 0x0804C3EC + bx lr + .align 2, 0 + + thumb_func_start sub_0804C3F0 +sub_0804C3F0: @ 0x0804C3F0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_204 +nullsub_204: @ 0x0804C3F4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C3F8 +sub_0804C3F8: @ 0x0804C3F8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_205 +nullsub_205: @ 0x0804C3FC + bx lr + .align 2, 0 + + thumb_func_start sub_0804C400 +sub_0804C400: @ 0x0804C400 + movs r0, #1 + bx lr + + thumb_func_start nullsub_206 +nullsub_206: @ 0x0804C404 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C408 +sub_0804C408: @ 0x0804C408 + movs r0, #1 + bx lr + + thumb_func_start nullsub_207 +nullsub_207: @ 0x0804C40C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C410 +sub_0804C410: @ 0x0804C410 + movs r0, #1 + bx lr + + thumb_func_start nullsub_208 +nullsub_208: @ 0x0804C414 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C418 +sub_0804C418: @ 0x0804C418 + movs r0, #1 + bx lr + + thumb_func_start nullsub_209 +nullsub_209: @ 0x0804C41C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C420 +sub_0804C420: @ 0x0804C420 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C424 +sub_0804C424: @ 0x0804C424 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C42C +sub_0804C42C: @ 0x0804C42C + movs r0, #1 + bx lr + + thumb_func_start sub_0804C430 +sub_0804C430: @ 0x0804C430 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C438 +sub_0804C438: @ 0x0804C438 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C43C +sub_0804C43C: @ 0x0804C43C + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C444 +sub_0804C444: @ 0x0804C444 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C448 +sub_0804C448: @ 0x0804C448 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C450 +sub_0804C450: @ 0x0804C450 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C454 +sub_0804C454: @ 0x0804C454 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C45C +sub_0804C45C: @ 0x0804C45C + movs r0, #1 + bx lr + + thumb_func_start sub_0804C460 +sub_0804C460: @ 0x0804C460 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C468 +sub_0804C468: @ 0x0804C468 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C46C +sub_0804C46C: @ 0x0804C46C + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C474 +sub_0804C474: @ 0x0804C474 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C478 +sub_0804C478: @ 0x0804C478 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C480 +sub_0804C480: @ 0x0804C480 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C484 +sub_0804C484: @ 0x0804C484 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C48C +sub_0804C48C: @ 0x0804C48C + movs r0, #1 + bx lr + + thumb_func_start sub_0804C490 +sub_0804C490: @ 0x0804C490 + push {r4, lr} + movs r0, #0x5b + bl sub_0807CA84 + cmp r0, #0 + bne _0804C4A8 + ldr r0, _0804C4A4 @ =gUnk_080DAB44 + bl sub_0804ADDC + b _0804C4AE + .align 2, 0 +_0804C4A4: .4byte gUnk_080DAB44 +_0804C4A8: + ldr r0, _0804C4D8 @ =gUnk_080DAB64 + bl sub_0804ADDC +_0804C4AE: + movs r0, #0x54 + bl GetProgressFlag + cmp r0, #0 + beq _0804C4F0 + bl sub_08060354 + cmp r0, #0 + beq _0804C4F0 + movs r0, #0 + bl sub_0807CD10 + movs r0, #0x3b + bl GetProgressFlag + cmp r0, #0 + bne _0804C4DC + movs r4, #0xc8 + lsls r4, r4, #6 + b _0804C522 + .align 2, 0 +_0804C4D8: .4byte gUnk_080DAB64 +_0804C4DC: + movs r0, #0x3c + bl GetProgressFlag + movs r4, #0x91 + lsls r4, r4, #7 + cmp r0, #0 + bne _0804C522 + movs r4, #0x8c + lsls r4, r4, #7 + b _0804C522 +_0804C4F0: + movs r0, #0x3d + bl GetProgressFlag + cmp r0, #0 + beq _0804C500 + movs r4, #0x92 + lsls r4, r4, #7 + b _0804C522 +_0804C500: + movs r0, #0x3c + bl GetProgressFlag + cmp r0, #0 + beq _0804C510 + movs r4, #0x94 + lsls r4, r4, #7 + b _0804C522 +_0804C510: + movs r0, #0x3b + bl GetProgressFlag + movs r4, #0x92 + lsls r4, r4, #8 + cmp r0, #0 + beq _0804C522 + movs r4, #0xa4 + lsls r4, r4, #7 +_0804C522: + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r4 + cmp r0, #0 + beq _0804C532 + ldr r0, _0804C5B8 @ =gUnk_080DAB84 + bl sub_0804ADDC +_0804C532: + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r4 + cmp r0, #0 + beq _0804C542 + ldr r0, _0804C5BC @ =gUnk_080DAC54 + bl sub_0804ADDC +_0804C542: + movs r0, #0x80 + lsls r0, r0, #6 + ands r0, r4 + cmp r0, #0 + beq _0804C552 + ldr r0, _0804C5C0 @ =gUnk_080DAD24 + bl sub_0804ADDC +_0804C552: + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r4 + cmp r0, #0 + beq _0804C562 + ldr r0, _0804C5C4 @ =gUnk_080DABC4 + bl sub_0804ADDC +_0804C562: + movs r0, #0x80 + lsls r0, r0, #4 + ands r0, r4 + cmp r0, #0 + beq _0804C572 + ldr r0, _0804C5C8 @ =gUnk_080DAC94 + bl sub_0804ADDC +_0804C572: + movs r0, #0x80 + lsls r0, r0, #3 + ands r0, r4 + cmp r0, #0 + beq _0804C582 + ldr r0, _0804C5CC @ =gUnk_080DAD64 + bl sub_0804ADDC +_0804C582: + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r4 + cmp r0, #0 + beq _0804C592 + ldr r0, _0804C5D0 @ =gUnk_080DAC04 + bl sub_0804ADDC +_0804C592: + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0804C5A2 + ldr r0, _0804C5D4 @ =gUnk_080DACD4 + bl sub_0804ADDC +_0804C5A2: + movs r0, #0x80 + ands r4, r0 + cmp r4, #0 + beq _0804C5B0 + ldr r0, _0804C5D8 @ =gUnk_080DADA4 + bl sub_0804ADDC +_0804C5B0: + bl sub_0801AFE4 + pop {r4, pc} + .align 2, 0 +_0804C5B8: .4byte gUnk_080DAB84 +_0804C5BC: .4byte gUnk_080DAC54 +_0804C5C0: .4byte gUnk_080DAD24 +_0804C5C4: .4byte gUnk_080DABC4 +_0804C5C8: .4byte gUnk_080DAC94 +_0804C5CC: .4byte gUnk_080DAD64 +_0804C5D0: .4byte gUnk_080DAC04 +_0804C5D4: .4byte gUnk_080DACD4 +_0804C5D8: .4byte gUnk_080DADA4 + + thumb_func_start sub_0804C5DC +sub_0804C5DC: @ 0x0804C5DC + movs r0, #1 + bx lr + + thumb_func_start sub_0804C5E0 +sub_0804C5E0: @ 0x0804C5E0 + push {lr} + movs r0, #0x56 + bl GetProgressFlag + cmp r0, #0 + beq _0804C5F2 + ldr r0, _0804C5F8 @ =gUnk_080DAEE8 + bl sub_0804ADDC +_0804C5F2: + bl sub_0801AFE4 + pop {pc} + .align 2, 0 +_0804C5F8: .4byte gUnk_080DAEE8 + + thumb_func_start sub_0804C5FC +sub_0804C5FC: @ 0x0804C5FC + movs r0, #1 + bx lr + + thumb_func_start sub_0804C600 +sub_0804C600: @ 0x0804C600 + push {lr} + movs r0, #0x56 + bl GetProgressFlag + cmp r0, #0 + beq _0804C612 + ldr r0, _0804C618 @ =gUnk_080DAF80 + bl sub_0804ADDC +_0804C612: + bl sub_0801AFE4 + pop {pc} + .align 2, 0 +_0804C618: .4byte gUnk_080DAF80 + + thumb_func_start sub_0804C61C +sub_0804C61C: @ 0x0804C61C + movs r0, #1 + bx lr + + thumb_func_start sub_0804C620 +sub_0804C620: @ 0x0804C620 + push {lr} + movs r0, #0x56 + bl GetProgressFlag + cmp r0, #0 + beq _0804C632 + ldr r0, _0804C638 @ =gUnk_080DB018 + bl sub_0804ADDC +_0804C632: + bl sub_0801AFE4 + pop {pc} + .align 2, 0 +_0804C638: .4byte gUnk_080DB018 + + thumb_func_start sub_0804C63C +sub_0804C63C: @ 0x0804C63C + movs r0, #1 + bx lr + + thumb_func_start sub_0804C640 +sub_0804C640: @ 0x0804C640 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C648 +sub_0804C648: @ 0x0804C648 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C64C +sub_0804C64C: @ 0x0804C64C + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C654 +sub_0804C654: @ 0x0804C654 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C658 +sub_0804C658: @ 0x0804C658 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C660 +sub_0804C660: @ 0x0804C660 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C664 +sub_0804C664: @ 0x0804C664 + push {lr} + ldr r0, _0804C67C @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #8 + bls _0804C674 + ldr r0, _0804C680 @ =gUnk_080DB238 + bl sub_0804ADDC +_0804C674: + bl sub_0801AFE4 + pop {pc} + .align 2, 0 +_0804C67C: .4byte gUnk_02002A40 +_0804C680: .4byte gUnk_080DB238 + + thumb_func_start sub_0804C684 +sub_0804C684: @ 0x0804C684 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C688 +sub_0804C688: @ 0x0804C688 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C690 +sub_0804C690: @ 0x0804C690 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C694 +sub_0804C694: @ 0x0804C694 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C69C +sub_0804C69C: @ 0x0804C69C + movs r0, #1 + bx lr + + thumb_func_start sub_0804C6A0 +sub_0804C6A0: @ 0x0804C6A0 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C6A8 +sub_0804C6A8: @ 0x0804C6A8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C6AC +sub_0804C6AC: @ 0x0804C6AC + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C6B4 +sub_0804C6B4: @ 0x0804C6B4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C6B8 +sub_0804C6B8: @ 0x0804C6B8 + push {lr} + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804C6E4 + movs r0, #0x3b + bl sub_0807CA84 + cmp r0, #0 + bne _0804C6E4 + movs r0, #0x71 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804C6E4 + ldr r0, _0804C6E0 @ =gUnk_080DB4D0 + bl sub_0804ADDC + b _0804C6EA + .align 2, 0 +_0804C6E0: .4byte gUnk_080DB4D0 +_0804C6E4: + ldr r0, _0804C6F0 @ =gUnk_080DB4A0 + bl sub_0804ADDC +_0804C6EA: + bl sub_0801AFE4 + pop {pc} + .align 2, 0 +_0804C6F0: .4byte gUnk_080DB4A0 + + thumb_func_start sub_0804C6F4 +sub_0804C6F4: @ 0x0804C6F4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C6F8 +sub_0804C6F8: @ 0x0804C6F8 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C700 +sub_0804C700: @ 0x0804C700 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C704 +sub_0804C704: @ 0x0804C704 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C70C +sub_0804C70C: @ 0x0804C70C + movs r0, #1 + bx lr + + thumb_func_start sub_0804C710 +sub_0804C710: @ 0x0804C710 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C718 +sub_0804C718: @ 0x0804C718 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C71C +sub_0804C71C: @ 0x0804C71C + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C724 +sub_0804C724: @ 0x0804C724 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C728 +sub_0804C728: @ 0x0804C728 + push {lr} + bl sub_0801AFE4 + pop {pc} + + thumb_func_start sub_0804C730 +sub_0804C730: @ 0x0804C730 + push {lr} + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0804C74C + movs r0, #0x73 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804C74C + ldr r1, _0804C750 @ =gUnk_02034350 + ldr r0, _0804C754 @ =gUnk_080DB910 + str r0, [r1, #0x70] +_0804C74C: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804C750: .4byte gUnk_02034350 +_0804C754: .4byte gUnk_080DB910 + + thumb_func_start sub_0804C758 +sub_0804C758: @ 0x0804C758 + push {lr} + ldr r0, _0804C780 @ =gUnk_080DB8F0 + bl sub_0804ADDC + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804C77A + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0804C77A + ldr r0, _0804C784 @ =gUnk_080DB820 + bl sub_0804ADDC +_0804C77A: + bl sub_0801AFE4 + pop {pc} + .align 2, 0 +_0804C780: .4byte gUnk_080DB8F0 +_0804C784: .4byte gUnk_080DB820 + + thumb_func_start sub_0804C788 +sub_0804C788: @ 0x0804C788 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C78C +sub_0804C78C: @ 0x0804C78C + push {lr} + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804C7A2 + movs r0, #0x73 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804C7A8 +_0804C7A2: + ldr r0, _0804C7B0 @ =gUnk_080DBA08 + bl sub_0804ADDC +_0804C7A8: + bl sub_0801AFE4 + pop {pc} + .align 2, 0 +_0804C7B0: .4byte gUnk_080DBA08 + + thumb_func_start sub_0804C7B4 +sub_0804C7B4: @ 0x0804C7B4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C7B8 +sub_0804C7B8: @ 0x0804C7B8 + push {r4, r5, lr} + movs r0, #0x60 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804C7CA + ldr r0, _0804C7E4 @ =gUnk_080DBB50 + bl sub_0804ADDC +_0804C7CA: + movs r0, #0x15 + bl sub_0807CA84 + cmp r0, #1 + bne _0804C7F0 + ldr r0, _0804C7E8 @ =gUnk_080DBB70 + bl sub_0804ADDC + ldr r0, _0804C7EC @ =gUnk_080DBB10 + bl sub_0804ADDC + b _0804C7F6 + .align 2, 0 +_0804C7E4: .4byte gUnk_080DBB50 +_0804C7E8: .4byte gUnk_080DBB70 +_0804C7EC: .4byte gUnk_080DBB10 +_0804C7F0: + ldr r0, _0804C824 @ =gUnk_080DBAD0 + bl sub_0804ADDC +_0804C7F6: + movs r0, #0x62 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804C818 + movs r5, #0xa0 + lsls r5, r5, #1 + movs r4, #0 +_0804C806: + ldr r0, _0804C828 @ =0x00004072 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + adds r4, #1 + adds r5, #1 + cmp r4, #0x12 + bls _0804C806 +_0804C818: + ldr r0, _0804C82C @ =gUnk_080DBB90 + bl sub_0804ADDC + bl sub_0801AFE4 + pop {r4, r5, pc} + .align 2, 0 +_0804C824: .4byte gUnk_080DBAD0 +_0804C828: .4byte 0x00004072 +_0804C82C: .4byte gUnk_080DBB90 + + thumb_func_start sub_0804C830 +sub_0804C830: @ 0x0804C830 + movs r0, #1 + bx lr + + thumb_func_start nullsub_210 +nullsub_210: @ 0x0804C834 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C838 +sub_0804C838: @ 0x0804C838 + movs r0, #1 + bx lr + + thumb_func_start nullsub_211 +nullsub_211: @ 0x0804C83C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C840 +sub_0804C840: @ 0x0804C840 + movs r0, #1 + bx lr + + thumb_func_start nullsub_212 +nullsub_212: @ 0x0804C844 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C848 +sub_0804C848: @ 0x0804C848 + movs r0, #1 + bx lr + + thumb_func_start nullsub_213 +nullsub_213: @ 0x0804C84C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C850 +sub_0804C850: @ 0x0804C850 + movs r0, #1 + bx lr + + thumb_func_start nullsub_214 +nullsub_214: @ 0x0804C854 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C858 +sub_0804C858: @ 0x0804C858 + movs r0, #1 + bx lr + + thumb_func_start nullsub_215 +nullsub_215: @ 0x0804C85C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C860 +sub_0804C860: @ 0x0804C860 + movs r0, #1 + bx lr + + thumb_func_start nullsub_216 +nullsub_216: @ 0x0804C864 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C868 +sub_0804C868: @ 0x0804C868 + movs r0, #1 + bx lr + + thumb_func_start nullsub_217 +nullsub_217: @ 0x0804C86C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C870 +sub_0804C870: @ 0x0804C870 + movs r0, #1 + bx lr + + thumb_func_start nullsub_218 +nullsub_218: @ 0x0804C874 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C878 +sub_0804C878: @ 0x0804C878 + movs r0, #1 + bx lr + + thumb_func_start nullsub_219 +nullsub_219: @ 0x0804C87C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C880 +sub_0804C880: @ 0x0804C880 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C884 +sub_0804C884: @ 0x0804C884 + push {lr} + movs r0, #0x5b + bl sub_0807CA84 + cmp r0, #0 + bne _0804C8B4 + ldr r0, _0804C8AC @ =gUnk_080DC390 + bl sub_0804ADDC + movs r0, #0x80 + lsls r0, r0, #2 + movs r1, #0x80 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804C8CA + ldr r0, _0804C8B0 @ =gUnk_080DC3F0 + bl sub_0804ADDC + b _0804C8CA + .align 2, 0 +_0804C8AC: .4byte gUnk_080DC390 +_0804C8B0: .4byte gUnk_080DC3F0 +_0804C8B4: + ldr r0, _0804C900 @ =gUnk_080DC430 + bl sub_0804ADDC + movs r0, #0x11 + bl sub_0807CA84 + cmp r0, #0 + bne _0804C8CA + ldr r0, _0804C904 @ =gUnk_080DC530 + bl sub_0804ADDC +_0804C8CA: + movs r0, #0x80 + lsls r0, r0, #2 + movs r1, #0x83 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804C8E8 + movs r0, #0x11 + bl sub_0807CA84 + cmp r0, #0 + beq _0804C8E8 + ldr r0, _0804C908 @ =gUnk_080DC470 + bl sub_0804ADDC +_0804C8E8: + movs r0, #0x8d + bl sub_0807CBD0 + cmp r0, #0 + bne _0804C8F8 + ldr r0, _0804C90C @ =gUnk_080DC4C0 + bl sub_0804ADDC +_0804C8F8: + bl sub_08057E64 + pop {pc} + .align 2, 0 +_0804C900: .4byte gUnk_080DC430 +_0804C904: .4byte gUnk_080DC530 +_0804C908: .4byte gUnk_080DC470 +_0804C90C: .4byte gUnk_080DC4C0 + + thumb_func_start sub_0804C910 +sub_0804C910: @ 0x0804C910 + movs r0, #1 + bx lr + + thumb_func_start nullsub_220 +nullsub_220: @ 0x0804C914 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C918 +sub_0804C918: @ 0x0804C918 + push {r4, r5, lr} + ldr r4, _0804C940 @ =gUnk_086D4460 + movs r1, #0xc0 + lsls r1, r1, #0x13 + movs r5, #0x80 + lsls r5, r5, #7 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08000E96 + adds r4, r4, r5 + ldr r1, _0804C944 @ =0x06008000 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08000E96 + movs r0, #0x19 + bl sub_0801D714 + pop {r4, r5, pc} + .align 2, 0 +_0804C940: .4byte gUnk_086D4460 +_0804C944: .4byte 0x06008000 + + thumb_func_start sub_0804C948 +sub_0804C948: @ 0x0804C948 + movs r0, #1 + bx lr + + thumb_func_start nullsub_221 +nullsub_221: @ 0x0804C94C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C950 +sub_0804C950: @ 0x0804C950 + movs r0, #1 + bx lr + + thumb_func_start nullsub_222 +nullsub_222: @ 0x0804C954 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C958 +sub_0804C958: @ 0x0804C958 + movs r0, #1 + bx lr + + thumb_func_start nullsub_223 +nullsub_223: @ 0x0804C95C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C960 +sub_0804C960: @ 0x0804C960 + movs r0, #1 + bx lr + + thumb_func_start nullsub_224 +nullsub_224: @ 0x0804C964 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C968 +sub_0804C968: @ 0x0804C968 + movs r0, #1 + bx lr + + thumb_func_start nullsub_225 +nullsub_225: @ 0x0804C96C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C970 +sub_0804C970: @ 0x0804C970 + movs r0, #1 + bx lr + + thumb_func_start nullsub_226 +nullsub_226: @ 0x0804C974 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C978 +sub_0804C978: @ 0x0804C978 + movs r0, #1 + bx lr + + thumb_func_start nullsub_227 +nullsub_227: @ 0x0804C97C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C980 +sub_0804C980: @ 0x0804C980 + movs r0, #1 + bx lr + + thumb_func_start nullsub_228 +nullsub_228: @ 0x0804C984 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C988 +sub_0804C988: @ 0x0804C988 + movs r0, #1 + bx lr + + thumb_func_start nullsub_229 +nullsub_229: @ 0x0804C98C + bx lr + .align 2, 0 + + thumb_func_start sub_0804C990 +sub_0804C990: @ 0x0804C990 + movs r0, #1 + bx lr + + thumb_func_start nullsub_230 +nullsub_230: @ 0x0804C994 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C998 +sub_0804C998: @ 0x0804C998 + movs r0, #1 + bx lr + + thumb_func_start sub_0804C99C +sub_0804C99C: @ 0x0804C99C + push {lr} + movs r0, #9 + bl sub_0807CA84 + cmp r0, #0 + bne _0804C9AE + ldr r0, _0804C9B0 @ =gUnk_080DCB10 + bl sub_0804ADDC +_0804C9AE: + pop {pc} + .align 2, 0 +_0804C9B0: .4byte gUnk_080DCB10 + + thumb_func_start sub_0804C9B4 +sub_0804C9B4: @ 0x0804C9B4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_231 +nullsub_231: @ 0x0804C9B8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9BC +sub_0804C9BC: @ 0x0804C9BC + movs r0, #1 + bx lr + + thumb_func_start nullsub_232 +nullsub_232: @ 0x0804C9C0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9C4 +sub_0804C9C4: @ 0x0804C9C4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_233 +nullsub_233: @ 0x0804C9C8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9CC +sub_0804C9CC: @ 0x0804C9CC + movs r0, #1 + bx lr + + thumb_func_start nullsub_234 +nullsub_234: @ 0x0804C9D0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9D4 +sub_0804C9D4: @ 0x0804C9D4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_235 +nullsub_235: @ 0x0804C9D8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9DC +sub_0804C9DC: @ 0x0804C9DC + movs r0, #1 + bx lr + + thumb_func_start nullsub_236 +nullsub_236: @ 0x0804C9E0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9E4 +sub_0804C9E4: @ 0x0804C9E4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_237 +nullsub_237: @ 0x0804C9E8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9EC +sub_0804C9EC: @ 0x0804C9EC + movs r0, #1 + bx lr + + thumb_func_start nullsub_238 +nullsub_238: @ 0x0804C9F0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9F4 +sub_0804C9F4: @ 0x0804C9F4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_239 +nullsub_239: @ 0x0804C9F8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804C9FC +sub_0804C9FC: @ 0x0804C9FC + movs r0, #1 + bx lr + + thumb_func_start nullsub_240 +nullsub_240: @ 0x0804CA00 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CA04 +sub_0804CA04: @ 0x0804CA04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_241 +nullsub_241: @ 0x0804CA08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CA0C +sub_0804CA0C: @ 0x0804CA0C + movs r0, #1 + bx lr + + thumb_func_start sub_0804CA10 +sub_0804CA10: @ 0x0804CA10 + push {lr} + movs r0, #0x56 + bl GetProgressFlag + cmp r0, #0 + bne _0804CA22 + ldr r0, _0804CA34 @ =gUnk_080DD214 + bl sub_0804ADDC +_0804CA22: + movs r0, #0x7f + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CA3C + ldr r0, _0804CA38 @ =gUnk_080DD274 + bl sub_0804ADDC + b _0804CA42 + .align 2, 0 +_0804CA34: .4byte gUnk_080DD214 +_0804CA38: .4byte gUnk_080DD274 +_0804CA3C: + ldr r0, _0804CA4C @ =gUnk_080DD294 + bl sub_0804ADDC +_0804CA42: + movs r0, #0x8e + bl sub_0807CCB4 + pop {pc} + .align 2, 0 +_0804CA4C: .4byte gUnk_080DD294 + + thumb_func_start sub_0804CA50 +sub_0804CA50: @ 0x0804CA50 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CA54 +sub_0804CA54: @ 0x0804CA54 + push {lr} + ldr r0, _0804CA6C @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x13 + ands r0, r1 + cmp r0, #0 + bne _0804CA6A + ldr r0, _0804CA70 @ =gUnk_080DD364 + bl sub_0804ADDC +_0804CA6A: + pop {pc} + .align 2, 0 +_0804CA6C: .4byte gUnk_02002A40 +_0804CA70: .4byte gUnk_080DD364 + + thumb_func_start sub_0804CA74 +sub_0804CA74: @ 0x0804CA74 + push {lr} + ldr r0, _0804CA8C @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x13 + ands r0, r1 + cmp r0, #0 + bne _0804CA8A + ldr r0, _0804CA90 @ =gUnk_080DD364 + bl sub_0804ADDC +_0804CA8A: + pop {pc} + .align 2, 0 +_0804CA8C: .4byte gUnk_02002A40 +_0804CA90: .4byte gUnk_080DD364 + + thumb_func_start sub_0804CA94 +sub_0804CA94: @ 0x0804CA94 + movs r0, #1 + bx lr + + thumb_func_start nullsub_242 +nullsub_242: @ 0x0804CA98 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CA9C +sub_0804CA9C: @ 0x0804CA9C + movs r0, #1 + bx lr + + thumb_func_start sub_0804CAA0 +sub_0804CAA0: @ 0x0804CAA0 + push {lr} + movs r0, #0x24 + bl GetProgressFlag + cmp r0, #0 + beq _0804CAB2 + ldr r0, _0804CAC4 @ =0x000006DE + bl sub_0809F814 +_0804CAB2: + movs r0, #0xf3 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804CAC8 + movs r0, #0xe0 + bl sub_0809F814 + b _0804CACE + .align 2, 0 +_0804CAC4: .4byte 0x000006DE +_0804CAC8: + ldr r0, _0804CAE0 @ =gUnk_080DD7E0 + bl sub_0804ADDC +_0804CACE: + movs r0, #0xf5 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804CAE8 + ldr r0, _0804CAE4 @ =0x00000BA3 + bl sub_0809F814 + b _0804CAEE + .align 2, 0 +_0804CAE0: .4byte gUnk_080DD7E0 +_0804CAE4: .4byte 0x00000BA3 +_0804CAE8: + ldr r0, _0804CAF0 @ =gUnk_080DD840 + bl sub_0804ADDC +_0804CAEE: + pop {pc} + .align 2, 0 +_0804CAF0: .4byte gUnk_080DD840 + + thumb_func_start sub_0804CAF4 +sub_0804CAF4: @ 0x0804CAF4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CAF8 +sub_0804CAF8: @ 0x0804CAF8 + push {lr} + bl sub_080300E8 + movs r0, #0x24 + bl sub_0807CCB4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804CB08 +sub_0804CB08: @ 0x0804CB08 + movs r0, #1 + bx lr + + thumb_func_start nullsub_37 +nullsub_37: @ 0x0804CB0C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CB10 +sub_0804CB10: @ 0x0804CB10 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CB14 +sub_0804CB14: @ 0x0804CB14 + push {lr} + movs r0, #0x41 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804CB26 + ldr r0, _0804CB28 @ =gUnk_080DDE88 + bl sub_0804ADDC +_0804CB26: + pop {pc} + .align 2, 0 +_0804CB28: .4byte gUnk_080DDE88 + + thumb_func_start sub_0804CB2C +sub_0804CB2C: @ 0x0804CB2C + push {lr} + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #0x27 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _0804CB42 + movs r0, #0x85 + bl sub_08059340 +_0804CB42: + pop {pc} + + thumb_func_start sub_0804CB44 +sub_0804CB44: @ 0x0804CB44 + movs r0, #1 + bx lr + + thumb_func_start nullsub_38 +nullsub_38: @ 0x0804CB48 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CB4C +sub_0804CB4C: @ 0x0804CB4C + movs r0, #1 + bx lr + + thumb_func_start sub_0804CB50 +sub_0804CB50: @ 0x0804CB50 + push {lr} + bl sub_080300E8 + movs r0, #4 + bl GetProgressFlag + cmp r0, #0 + beq _0804CB70 + movs r0, #3 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CB70 + ldr r0, _0804CB74 @ =gUnk_080DE008 + bl sub_0804ADDC +_0804CB70: + pop {pc} + .align 2, 0 +_0804CB74: .4byte gUnk_080DE008 + + thumb_func_start sub_0804CB78 +sub_0804CB78: @ 0x0804CB78 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CB7C +sub_0804CB7C: @ 0x0804CB7C + push {lr} + bl sub_080300E8 + movs r0, #0x30 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CB92 + ldr r0, _0804CBA4 @ =gUnk_080DE1E0 + bl sub_0804ADDC +_0804CB92: + movs r0, #0x31 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CBA2 + ldr r0, _0804CBA8 @ =gUnk_080DE200 + bl sub_0804ADDC +_0804CBA2: + pop {pc} + .align 2, 0 +_0804CBA4: .4byte gUnk_080DE1E0 +_0804CBA8: .4byte gUnk_080DE200 + + thumb_func_start sub_0804CBAC +sub_0804CBAC: @ 0x0804CBAC + movs r0, #1 + bx lr + + thumb_func_start sub_0804CBB0 +sub_0804CBB0: @ 0x0804CBB0 + push {lr} + ldr r0, _0804CBD8 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + ldr r2, _0804CBDC @ =gUnk_03000BF0 + ldrh r0, [r2, #8] + subs r1, r1, r0 + ldrh r0, [r2, #0x20] + lsrs r0, r0, #1 + cmp r1, r0 + bge _0804CBD6 + movs r0, #0x17 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CBD6 + ldr r0, _0804CBE0 @ =gUnk_080DE4C8 + bl sub_0804ADDC +_0804CBD6: + pop {pc} + .align 2, 0 +_0804CBD8: .4byte gLinkEntity +_0804CBDC: .4byte gUnk_03000BF0 +_0804CBE0: .4byte gUnk_080DE4C8 + + thumb_func_start sub_0804CBE4 +sub_0804CBE4: @ 0x0804CBE4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_243 +nullsub_243: @ 0x0804CBE8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CBEC +sub_0804CBEC: @ 0x0804CBEC + movs r0, #1 + bx lr + + thumb_func_start sub_0804CBF0 +sub_0804CBF0: @ 0x0804CBF0 + push {lr} + movs r0, #0x4b + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CC08 + ldr r0, _0804CC04 @ =gUnk_080DE814 + bl sub_0804ADDC + b _0804CC4A + .align 2, 0 +_0804CC04: .4byte gUnk_080DE814 +_0804CC08: + movs r0, #0x4c + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CC2C + ldr r0, _0804CC24 @ =gUnk_080DE834 + bl sub_0804ADDC + ldr r1, _0804CC28 @ =0x00000285 + movs r0, #0x79 + movs r2, #1 + bl sub_0807B314 + b _0804CC4A + .align 2, 0 +_0804CC24: .4byte gUnk_080DE834 +_0804CC28: .4byte 0x00000285 +_0804CC2C: + ldr r1, _0804CC4C @ =0x00000285 + movs r0, #0x7a + movs r2, #1 + bl sub_0807B314 + movs r0, #0x24 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804CC4A + ldr r1, _0804CC50 @ =0x00000205 + movs r0, #0x73 + movs r2, #1 + bl sub_0807B314 +_0804CC4A: + pop {pc} + .align 2, 0 +_0804CC4C: .4byte 0x00000285 +_0804CC50: .4byte 0x00000205 + + thumb_func_start sub_0804CC54 +sub_0804CC54: @ 0x0804CC54 + movs r0, #1 + bx lr + + thumb_func_start nullsub_244 +nullsub_244: @ 0x0804CC58 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CC5C +sub_0804CC5C: @ 0x0804CC5C + movs r0, #1 + bx lr + + thumb_func_start nullsub_245 +nullsub_245: @ 0x0804CC60 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CC64 +sub_0804CC64: @ 0x0804CC64 + movs r0, #1 + bx lr + + thumb_func_start nullsub_246 +nullsub_246: @ 0x0804CC68 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CC6C +sub_0804CC6C: @ 0x0804CC6C + movs r0, #1 + bx lr + + thumb_func_start sub_0804CC70 +sub_0804CC70: @ 0x0804CC70 + push {lr} + ldr r0, _0804CC94 @ =gUnk_02002A40 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _0804CC7E + cmp r0, #2 + beq _0804CCA0 +_0804CC7E: + ldr r1, _0804CC98 @ =0x0000020B + movs r0, #0x90 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804CC9C @ =0x00000411 + movs r0, #0x90 + movs r2, #1 + bl sub_0807B314 + b _0804CCB4 + .align 2, 0 +_0804CC94: .4byte gUnk_02002A40 +_0804CC98: .4byte 0x0000020B +_0804CC9C: .4byte 0x00000411 +_0804CCA0: + ldr r1, _0804CCE4 @ =0x00000211 + movs r0, #0x90 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804CCE8 @ =0x0000040B + movs r0, #0x90 + movs r2, #1 + bl sub_0807B314 +_0804CCB4: + movs r0, #0x15 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804CCCA + movs r1, #0xc1 + lsls r1, r1, #2 + movs r0, #0x76 + movs r2, #2 + bl sub_0807B314 +_0804CCCA: + movs r0, #0x16 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804CCE0 + movs r1, #0xc6 + lsls r1, r1, #2 + movs r0, #0x76 + movs r2, #2 + bl sub_0807B314 +_0804CCE0: + pop {pc} + .align 2, 0 +_0804CCE4: .4byte 0x00000211 +_0804CCE8: .4byte 0x0000040B + + thumb_func_start sub_0804CCEC +sub_0804CCEC: @ 0x0804CCEC + movs r0, #1 + bx lr + + thumb_func_start nullsub_247 +nullsub_247: @ 0x0804CCF0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CCF4 +sub_0804CCF4: @ 0x0804CCF4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_248 +nullsub_248: @ 0x0804CCF8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CCFC +sub_0804CCFC: @ 0x0804CCFC + movs r0, #1 + bx lr + + thumb_func_start nullsub_249 +nullsub_249: @ 0x0804CD00 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD04 +sub_0804CD04: @ 0x0804CD04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_250 +nullsub_250: @ 0x0804CD08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD0C +sub_0804CD0C: @ 0x0804CD0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_251 +nullsub_251: @ 0x0804CD10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD14 +sub_0804CD14: @ 0x0804CD14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_252 +nullsub_252: @ 0x0804CD18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD1C +sub_0804CD1C: @ 0x0804CD1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_253 +nullsub_253: @ 0x0804CD20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD24 +sub_0804CD24: @ 0x0804CD24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_254 +nullsub_254: @ 0x0804CD28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD2C +sub_0804CD2C: @ 0x0804CD2C + movs r0, #1 + bx lr + + thumb_func_start nullsub_255 +nullsub_255: @ 0x0804CD30 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD34 +sub_0804CD34: @ 0x0804CD34 + movs r0, #1 + bx lr + + thumb_func_start nullsub_256 +nullsub_256: @ 0x0804CD38 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD3C +sub_0804CD3C: @ 0x0804CD3C + movs r0, #1 + bx lr + + thumb_func_start nullsub_257 +nullsub_257: @ 0x0804CD40 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CD44 +sub_0804CD44: @ 0x0804CD44 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CD48 +sub_0804CD48: @ 0x0804CD48 + push {r4, lr} + movs r0, #0x48 + bl sub_0807CBD0 + adds r4, r0, #0 + cmp r4, #0 + bne _0804CD80 + movs r0, #0x48 + bl sub_0807CCB4 + movs r0, #5 + movs r1, #0 + bl sub_080A7138 + ldr r0, _0804CD94 @ =gUnk_02000070 + strb r4, [r0] + ldr r0, _0804CD98 @ =gUnk_03000FD0 + strb r4, [r0] + ldr r0, _0804CD9C @ =gUnk_0200B644 + str r4, [r0] + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _0804CDA0 @ =0x00007FFF + adds r0, r2, #0 + strh r0, [r1] + movs r0, #1 + bl sub_0801DA90 +_0804CD80: + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + beq _0804CDA8 + ldr r0, _0804CDA4 @ =gUnk_080DF94C + bl sub_0804ADDC + b _0804CDBE + .align 2, 0 +_0804CD94: .4byte gUnk_02000070 +_0804CD98: .4byte gUnk_03000FD0 +_0804CD9C: .4byte gUnk_0200B644 +_0804CDA0: .4byte 0x00007FFF +_0804CDA4: .4byte gUnk_080DF94C +_0804CDA8: + ldr r0, _0804CDC0 @ =0x80100000 + bl sub_080A3268 + ldr r0, _0804CDC4 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804CDBE: + pop {r4, pc} + .align 2, 0 +_0804CDC0: .4byte 0x80100000 +_0804CDC4: .4byte gUnk_02033A90 + + thumb_func_start sub_0804CDC8 +sub_0804CDC8: @ 0x0804CDC8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_258 +nullsub_258: @ 0x0804CDCC + bx lr + .align 2, 0 + + thumb_func_start sub_0804CDD0 +sub_0804CDD0: @ 0x0804CDD0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CDD4 +sub_0804CDD4: @ 0x0804CDD4 + push {lr} + bl sub_08058D34 + ldr r2, _0804CDEC @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x40 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0804CDF0 @ =gUnk_03001000 + movs r0, #5 + strb r0, [r1, #4] + pop {pc} + .align 2, 0 +_0804CDEC: .4byte gUnk_02033A90 +_0804CDF0: .4byte gUnk_03001000 + + thumb_func_start sub_0804CDF4 +sub_0804CDF4: @ 0x0804CDF4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CDF8 +sub_0804CDF8: @ 0x0804CDF8 + push {lr} + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + beq _0804CE18 + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #1 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804CE18 + ldr r0, _0804CE1C @ =gUnk_080DFB78 + bl sub_0804ADDC +_0804CE18: + pop {pc} + .align 2, 0 +_0804CE1C: .4byte gUnk_080DFB78 + + thumb_func_start sub_0804CE20 +sub_0804CE20: @ 0x0804CE20 + movs r0, #1 + bx lr + + thumb_func_start nullsub_259 +nullsub_259: @ 0x0804CE24 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE28 +sub_0804CE28: @ 0x0804CE28 + movs r0, #1 + bx lr + + thumb_func_start nullsub_260 +nullsub_260: @ 0x0804CE2C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE30 +sub_0804CE30: @ 0x0804CE30 + movs r0, #1 + bx lr + + thumb_func_start nullsub_261 +nullsub_261: @ 0x0804CE34 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE38 +sub_0804CE38: @ 0x0804CE38 + movs r0, #1 + bx lr + + thumb_func_start nullsub_262 +nullsub_262: @ 0x0804CE3C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE40 +sub_0804CE40: @ 0x0804CE40 + movs r0, #1 + bx lr + + thumb_func_start nullsub_263 +nullsub_263: @ 0x0804CE44 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE48 +sub_0804CE48: @ 0x0804CE48 + movs r0, #1 + bx lr + + thumb_func_start nullsub_264 +nullsub_264: @ 0x0804CE4C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE50 +sub_0804CE50: @ 0x0804CE50 + movs r0, #1 + bx lr + + thumb_func_start nullsub_265 +nullsub_265: @ 0x0804CE54 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE58 +sub_0804CE58: @ 0x0804CE58 + movs r0, #1 + bx lr + + thumb_func_start nullsub_266 +nullsub_266: @ 0x0804CE5C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE60 +sub_0804CE60: @ 0x0804CE60 + movs r0, #1 + bx lr + + thumb_func_start nullsub_267 +nullsub_267: @ 0x0804CE64 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE68 +sub_0804CE68: @ 0x0804CE68 + movs r0, #1 + bx lr + + thumb_func_start nullsub_268 +nullsub_268: @ 0x0804CE6C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE70 +sub_0804CE70: @ 0x0804CE70 + movs r0, #1 + bx lr + + thumb_func_start nullsub_269 +nullsub_269: @ 0x0804CE74 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE78 +sub_0804CE78: @ 0x0804CE78 + movs r0, #1 + bx lr + + thumb_func_start nullsub_270 +nullsub_270: @ 0x0804CE7C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CE80 +sub_0804CE80: @ 0x0804CE80 + push {lr} + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _0804CE92 + ldr r1, _0804CE98 @ =gUnk_02034350 + ldr r0, _0804CE9C @ =gUnk_080E103C + str r0, [r1, #0x70] +_0804CE92: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804CE98: .4byte gUnk_02034350 +_0804CE9C: .4byte gUnk_080E103C + + thumb_func_start nullsub_271 +nullsub_271: @ 0x0804CEA0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CEA4 +sub_0804CEA4: @ 0x0804CEA4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_272 +nullsub_272: @ 0x0804CEA8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CEAC +sub_0804CEAC: @ 0x0804CEAC + movs r0, #1 + bx lr + + thumb_func_start nullsub_273 +nullsub_273: @ 0x0804CEB0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CEB4 +sub_0804CEB4: @ 0x0804CEB4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_274 +nullsub_274: @ 0x0804CEB8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CEBC +sub_0804CEBC: @ 0x0804CEBC + movs r0, #1 + bx lr + + thumb_func_start nullsub_275 +nullsub_275: @ 0x0804CEC0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CEC4 +sub_0804CEC4: @ 0x0804CEC4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_276 +nullsub_276: @ 0x0804CEC8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CECC +sub_0804CECC: @ 0x0804CECC + movs r0, #1 + bx lr + + thumb_func_start nullsub_277 +nullsub_277: @ 0x0804CED0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CED4 +sub_0804CED4: @ 0x0804CED4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CED8 +sub_0804CED8: @ 0x0804CED8 + push {lr} + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _0804CF18 + ldr r1, _0804CF04 @ =gUnk_0200B650 + movs r0, #0 + str r0, [r1] + ldr r2, _0804CF08 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0804CF0C @ =0x0000FDFF + ands r0, r1 + strh r0, [r2] + ldr r0, _0804CF10 @ =gLinkEntity + bl sub_0807AABC + ldr r0, _0804CF14 @ =gUnk_080E1814 + bl sub_0804ADDC + b _0804CF2E + .align 2, 0 +_0804CF04: .4byte gUnk_0200B650 +_0804CF08: .4byte gUnk_03000F50 +_0804CF0C: .4byte 0x0000FDFF +_0804CF10: .4byte gLinkEntity +_0804CF14: .4byte gUnk_080E1814 +_0804CF18: + ldr r0, _0804CF30 @ =0x80100000 + bl sub_080A3268 + ldr r0, _0804CF34 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804CF2E: + pop {pc} + .align 2, 0 +_0804CF30: .4byte 0x80100000 +_0804CF34: .4byte gUnk_02033A90 + + thumb_func_start sub_0804CF38 +sub_0804CF38: @ 0x0804CF38 + movs r0, #1 + bx lr + + thumb_func_start nullsub_278 +nullsub_278: @ 0x0804CF3C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CF40 +sub_0804CF40: @ 0x0804CF40 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CF44 +sub_0804CF44: @ 0x0804CF44 + ldr r1, _0804CF58 @ =gUnk_030010A0 + adds r2, r1, #0 + adds r2, #0x38 + movs r0, #0 + strb r0, [r2] + adds r1, #0x39 + movs r0, #0x5a + strb r0, [r1] + bx lr + .align 2, 0 +_0804CF58: .4byte gUnk_030010A0 + + thumb_func_start sub_0804CF5C +sub_0804CF5C: @ 0x0804CF5C + movs r0, #1 + bx lr + + thumb_func_start sub_0804CF60 +sub_0804CF60: @ 0x0804CF60 + push {lr} + bl sub_080300E8 + pop {pc} + + thumb_func_start sub_0804CF68 +sub_0804CF68: @ 0x0804CF68 + movs r0, #1 + bx lr + + thumb_func_start nullsub_39 +nullsub_39: @ 0x0804CF6C + bx lr + .align 2, 0 + + thumb_func_start sub_0804CF70 +sub_0804CF70: @ 0x0804CF70 + movs r0, #1 + bx lr + + thumb_func_start sub_0804CF74 +sub_0804CF74: @ 0x0804CF74 + push {lr} + bl sub_080300E8 + pop {pc} + + thumb_func_start sub_0804CF7C +sub_0804CF7C: @ 0x0804CF7C + movs r0, #1 + bx lr + + thumb_func_start nullsub_40 +nullsub_40: @ 0x0804CF80 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CF84 +sub_0804CF84: @ 0x0804CF84 + movs r0, #1 + bx lr + + thumb_func_start nullsub_41 +nullsub_41: @ 0x0804CF88 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CF8C +sub_0804CF8C: @ 0x0804CF8C + movs r0, #1 + bx lr + + thumb_func_start nullsub_42 +nullsub_42: @ 0x0804CF90 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CF94 +sub_0804CF94: @ 0x0804CF94 + movs r0, #1 + bx lr + + thumb_func_start nullsub_43 +nullsub_43: @ 0x0804CF98 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CF9C +sub_0804CF9C: @ 0x0804CF9C + movs r0, #1 + bx lr + + thumb_func_start nullsub_44 +nullsub_44: @ 0x0804CFA0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CFA4 +sub_0804CFA4: @ 0x0804CFA4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_45 +nullsub_45: @ 0x0804CFA8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804CFAC +sub_0804CFAC: @ 0x0804CFAC + movs r0, #1 + bx lr + + thumb_func_start sub_0804CFB0 +sub_0804CFB0: @ 0x0804CFB0 + push {lr} + movs r0, #0x31 + bl sub_0807CBE4 + cmp r0, #0 + bne _0804CFFE + ldr r1, _0804CFD0 @ =gUnk_030010A0 + adds r0, r1, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + bne _0804CFD8 + ldr r0, _0804CFD4 @ =0x80100000 + bl sub_080A3268 + b _0804CFEE + .align 2, 0 +_0804CFD0: .4byte gUnk_030010A0 +_0804CFD4: .4byte 0x80100000 +_0804CFD8: + adds r0, r1, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _0804CFEE + ldr r0, _0804D000 @ =0x80050000 + bl sub_080A3268 + movs r0, #3 + bl sub_08078A90 +_0804CFEE: + ldr r0, _0804D004 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804CFFE: + pop {pc} + .align 2, 0 +_0804D000: .4byte 0x80050000 +_0804D004: .4byte gUnk_02033A90 + + thumb_func_start sub_0804D008 +sub_0804D008: @ 0x0804D008 + movs r0, #1 + bx lr + + thumb_func_start nullsub_279 +nullsub_279: @ 0x0804D00C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D010 +sub_0804D010: @ 0x0804D010 + movs r0, #1 + bx lr + + thumb_func_start nullsub_280 +nullsub_280: @ 0x0804D014 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D018 +sub_0804D018: @ 0x0804D018 + movs r0, #1 + bx lr + + thumb_func_start nullsub_281 +nullsub_281: @ 0x0804D01C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D020 +sub_0804D020: @ 0x0804D020 + movs r0, #1 + bx lr + + thumb_func_start nullsub_282 +nullsub_282: @ 0x0804D024 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D028 +sub_0804D028: @ 0x0804D028 + movs r0, #1 + bx lr + + thumb_func_start nullsub_283 +nullsub_283: @ 0x0804D02C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D030 +sub_0804D030: @ 0x0804D030 + movs r0, #1 + bx lr + + thumb_func_start nullsub_284 +nullsub_284: @ 0x0804D034 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D038 +sub_0804D038: @ 0x0804D038 + movs r0, #1 + bx lr + + thumb_func_start nullsub_285 +nullsub_285: @ 0x0804D03C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D040 +sub_0804D040: @ 0x0804D040 + movs r0, #1 + bx lr + + thumb_func_start nullsub_286 +nullsub_286: @ 0x0804D044 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D048 +sub_0804D048: @ 0x0804D048 + movs r0, #1 + bx lr + + thumb_func_start nullsub_287 +nullsub_287: @ 0x0804D04C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D050 +sub_0804D050: @ 0x0804D050 + movs r0, #1 + bx lr + + thumb_func_start nullsub_288 +nullsub_288: @ 0x0804D054 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D058 +sub_0804D058: @ 0x0804D058 + movs r0, #1 + bx lr + + thumb_func_start nullsub_289 +nullsub_289: @ 0x0804D05C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D060 +sub_0804D060: @ 0x0804D060 + movs r0, #1 + bx lr + + thumb_func_start nullsub_290 +nullsub_290: @ 0x0804D064 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D068 +sub_0804D068: @ 0x0804D068 + movs r0, #1 + bx lr + + thumb_func_start nullsub_291 +nullsub_291: @ 0x0804D06C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D070 +sub_0804D070: @ 0x0804D070 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D074 +sub_0804D074: @ 0x0804D074 + push {lr} + movs r0, #4 + bl sub_0807CD04 + bl sub_080530C8 + movs r0, #3 + bl sub_0805B4D0 + movs r0, #0x17 + bl sub_0807CA84 + cmp r0, #0 + bne _0804D0A0 + movs r0, #0x45 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804D0A0 + ldr r0, _0804D0A4 @ =gUnk_080E3850 + bl sub_0804ADDC +_0804D0A0: + pop {pc} + .align 2, 0 +_0804D0A4: .4byte gUnk_080E3850 + + thumb_func_start sub_0804D0A8 +sub_0804D0A8: @ 0x0804D0A8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D0AC +sub_0804D0AC: @ 0x0804D0AC + push {lr} + bl sub_0804D0B4 + pop {pc} + + thumb_func_start sub_0804D0B4 +sub_0804D0B4: @ 0x0804D0B4 + push {lr} + movs r0, #0x29 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D0D2 + movs r0, #0x29 + bl sub_0807CCB4 + movs r0, #0x4b + bl sub_0807CCB4 + movs r0, #0x4e + bl sub_0807CCB4 +_0804D0D2: + pop {pc} + + thumb_func_start sub_0804D0D4 +sub_0804D0D4: @ 0x0804D0D4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_46 +nullsub_46: @ 0x0804D0D8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D0DC +sub_0804D0DC: @ 0x0804D0DC + movs r0, #1 + bx lr + + thumb_func_start nullsub_47 +nullsub_47: @ 0x0804D0E0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D0E4 +sub_0804D0E4: @ 0x0804D0E4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_48 +nullsub_48: @ 0x0804D0E8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D0EC +sub_0804D0EC: @ 0x0804D0EC + movs r0, #1 + bx lr + + thumb_func_start nullsub_49 +nullsub_49: @ 0x0804D0F0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D0F4 +sub_0804D0F4: @ 0x0804D0F4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_50 +nullsub_50: @ 0x0804D0F8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D0FC +sub_0804D0FC: @ 0x0804D0FC + movs r0, #1 + bx lr + + thumb_func_start nullsub_51 +nullsub_51: @ 0x0804D100 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D104 +sub_0804D104: @ 0x0804D104 + movs r0, #1 + bx lr + + thumb_func_start nullsub_52 +nullsub_52: @ 0x0804D108 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D10C +sub_0804D10C: @ 0x0804D10C + movs r0, #1 + bx lr + + thumb_func_start nullsub_53 +nullsub_53: @ 0x0804D110 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D114 +sub_0804D114: @ 0x0804D114 + movs r0, #1 + bx lr + + thumb_func_start nullsub_54 +nullsub_54: @ 0x0804D118 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D11C +sub_0804D11C: @ 0x0804D11C + movs r0, #1 + bx lr + + thumb_func_start nullsub_55 +nullsub_55: @ 0x0804D120 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D124 +sub_0804D124: @ 0x0804D124 + movs r0, #1 + bx lr + + thumb_func_start nullsub_56 +nullsub_56: @ 0x0804D128 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D12C +sub_0804D12C: @ 0x0804D12C + movs r0, #1 + bx lr + + thumb_func_start nullsub_57 +nullsub_57: @ 0x0804D130 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D134 +sub_0804D134: @ 0x0804D134 + movs r0, #1 + bx lr + + thumb_func_start nullsub_58 +nullsub_58: @ 0x0804D138 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D13C +sub_0804D13C: @ 0x0804D13C + movs r0, #1 + bx lr + + thumb_func_start sub_0804D140 +sub_0804D140: @ 0x0804D140 + push {lr} + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_0805308C + movs r0, #5 + bl GetProgressFlag + cmp r0, #0 + beq _0804D160 + ldr r0, _0804D15C @ =gUnk_080E49F4 + bl sub_0804ADDC + b _0804D176 + .align 2, 0 +_0804D15C: .4byte gUnk_080E49F4 +_0804D160: + ldr r0, _0804D178 @ =0x80100000 + bl sub_080A3268 + ldr r0, _0804D17C @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804D176: + pop {pc} + .align 2, 0 +_0804D178: .4byte 0x80100000 +_0804D17C: .4byte gUnk_02033A90 + + thumb_func_start sub_0804D180 +sub_0804D180: @ 0x0804D180 + movs r0, #1 + bx lr + + thumb_func_start nullsub_292 +nullsub_292: @ 0x0804D184 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D188 +sub_0804D188: @ 0x0804D188 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D18C +sub_0804D18C: @ 0x0804D18C + push {lr} + movs r0, #0x48 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D1A4 + movs r0, #0x46 + bl sub_0807CD34 + ldr r0, _0804D1A8 @ =gUnk_080E4BD8 + bl sub_0804ADDC +_0804D1A4: + pop {pc} + .align 2, 0 +_0804D1A8: .4byte gUnk_080E4BD8 + + thumb_func_start sub_0804D1AC +sub_0804D1AC: @ 0x0804D1AC + movs r0, #1 + bx lr + + thumb_func_start sub_0804D1B0 +sub_0804D1B0: @ 0x0804D1B0 + push {lr} + bl sub_0804D0B4 + movs r0, #0x6c + bl sub_0807CBD0 + cmp r0, #0 + beq _0804D1CC + ldr r0, _0804D1C8 @ =gUnk_080E4CD8 + bl sub_0804ADDC + b _0804D1D2 + .align 2, 0 +_0804D1C8: .4byte gUnk_080E4CD8 +_0804D1CC: + ldr r0, _0804D1E4 @ =gUnk_080E4CF8 + bl sub_0804ADDC +_0804D1D2: + movs r0, #0x4b + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D1E2 + movs r0, #0x49 + bl sub_0807CD34 +_0804D1E2: + pop {pc} + .align 2, 0 +_0804D1E4: .4byte gUnk_080E4CF8 + + thumb_func_start sub_0804D1E8 +sub_0804D1E8: @ 0x0804D1E8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_293 +nullsub_293: @ 0x0804D1EC + bx lr + .align 2, 0 + + thumb_func_start sub_0804D1F0 +sub_0804D1F0: @ 0x0804D1F0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_294 +nullsub_294: @ 0x0804D1F4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D1F8 +sub_0804D1F8: @ 0x0804D1F8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_295 +nullsub_295: @ 0x0804D1FC + bx lr + .align 2, 0 + + thumb_func_start sub_0804D200 +sub_0804D200: @ 0x0804D200 + movs r0, #1 + bx lr + + thumb_func_start nullsub_296 +nullsub_296: @ 0x0804D204 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D208 +sub_0804D208: @ 0x0804D208 + movs r0, #1 + bx lr + + thumb_func_start nullsub_297 +nullsub_297: @ 0x0804D20C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D210 +sub_0804D210: @ 0x0804D210 + movs r0, #1 + bx lr + + thumb_func_start nullsub_298 +nullsub_298: @ 0x0804D214 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D218 +sub_0804D218: @ 0x0804D218 + movs r0, #1 + bx lr + + thumb_func_start nullsub_299 +nullsub_299: @ 0x0804D21C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D220 +sub_0804D220: @ 0x0804D220 + movs r0, #1 + bx lr + + thumb_func_start nullsub_300 +nullsub_300: @ 0x0804D224 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D228 +sub_0804D228: @ 0x0804D228 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D22C +sub_0804D22C: @ 0x0804D22C + push {lr} + movs r0, #0x59 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D244 + ldr r0, _0804D240 @ =gUnk_080E5660 + bl sub_0804ADDC + b _0804D24A + .align 2, 0 +_0804D240: .4byte gUnk_080E5660 +_0804D244: + ldr r0, _0804D24C @ =gUnk_080E5680 + bl sub_0804ADDC +_0804D24A: + pop {pc} + .align 2, 0 +_0804D24C: .4byte gUnk_080E5680 + + thumb_func_start sub_0804D250 +sub_0804D250: @ 0x0804D250 + movs r0, #1 + bx lr + + thumb_func_start nullsub_301 +nullsub_301: @ 0x0804D254 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D258 +sub_0804D258: @ 0x0804D258 + movs r0, #1 + bx lr + + thumb_func_start nullsub_302 +nullsub_302: @ 0x0804D25C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D260 +sub_0804D260: @ 0x0804D260 + movs r0, #1 + bx lr + + thumb_func_start nullsub_303 +nullsub_303: @ 0x0804D264 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D268 +sub_0804D268: @ 0x0804D268 + movs r0, #1 + bx lr + + thumb_func_start nullsub_304 +nullsub_304: @ 0x0804D26C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D270 +sub_0804D270: @ 0x0804D270 + movs r0, #1 + bx lr + + thumb_func_start nullsub_305 +nullsub_305: @ 0x0804D274 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D278 +sub_0804D278: @ 0x0804D278 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D27C +sub_0804D27C: @ 0x0804D27C + push {lr} + bl sub_0804D0B4 + movs r0, #0x4b + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D298 + ldr r0, _0804D294 @ =gUnk_080E5E3C + bl sub_0804ADDC + b _0804D29E + .align 2, 0 +_0804D294: .4byte gUnk_080E5E3C +_0804D298: + ldr r0, _0804D2A0 @ =gUnk_080E5E5C + bl sub_0804ADDC +_0804D29E: + pop {pc} + .align 2, 0 +_0804D2A0: .4byte gUnk_080E5E5C + + thumb_func_start sub_0804D2A4 +sub_0804D2A4: @ 0x0804D2A4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_306 +nullsub_306: @ 0x0804D2A8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2AC +sub_0804D2AC: @ 0x0804D2AC + movs r0, #1 + bx lr + + thumb_func_start nullsub_307 +nullsub_307: @ 0x0804D2B0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2B4 +sub_0804D2B4: @ 0x0804D2B4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_308 +nullsub_308: @ 0x0804D2B8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2BC +sub_0804D2BC: @ 0x0804D2BC + movs r0, #1 + bx lr + + thumb_func_start nullsub_309 +nullsub_309: @ 0x0804D2C0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2C4 +sub_0804D2C4: @ 0x0804D2C4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_310 +nullsub_310: @ 0x0804D2C8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2CC +sub_0804D2CC: @ 0x0804D2CC + movs r0, #1 + bx lr + + thumb_func_start nullsub_311 +nullsub_311: @ 0x0804D2D0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2D4 +sub_0804D2D4: @ 0x0804D2D4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_312 +nullsub_312: @ 0x0804D2D8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2DC +sub_0804D2DC: @ 0x0804D2DC + movs r0, #1 + bx lr + + thumb_func_start nullsub_313 +nullsub_313: @ 0x0804D2E0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D2E4 +sub_0804D2E4: @ 0x0804D2E4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D2E8 +sub_0804D2E8: @ 0x0804D2E8 + push {lr} + movs r0, #0x32 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D2FA + ldr r0, _0804D2FC @ =gUnk_080E693C + bl sub_0804ADDC +_0804D2FA: + pop {pc} + .align 2, 0 +_0804D2FC: .4byte gUnk_080E693C + + thumb_func_start sub_0804D300 +sub_0804D300: @ 0x0804D300 + movs r0, #1 + bx lr + + thumb_func_start nullsub_314 +nullsub_314: @ 0x0804D304 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D308 +sub_0804D308: @ 0x0804D308 + movs r0, #1 + bx lr + + thumb_func_start nullsub_315 +nullsub_315: @ 0x0804D30C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D310 +sub_0804D310: @ 0x0804D310 + movs r0, #1 + bx lr + + thumb_func_start nullsub_316 +nullsub_316: @ 0x0804D314 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D318 +sub_0804D318: @ 0x0804D318 + movs r0, #1 + bx lr + + thumb_func_start nullsub_317 +nullsub_317: @ 0x0804D31C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D320 +sub_0804D320: @ 0x0804D320 + movs r0, #1 + bx lr + + thumb_func_start nullsub_318 +nullsub_318: @ 0x0804D324 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D328 +sub_0804D328: @ 0x0804D328 + movs r0, #1 + bx lr + + thumb_func_start nullsub_319 +nullsub_319: @ 0x0804D32C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D330 +sub_0804D330: @ 0x0804D330 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D334 +sub_0804D334: @ 0x0804D334 + push {lr} + bl sub_08054570 + pop {pc} + + thumb_func_start sub_0804D33C +sub_0804D33C: @ 0x0804D33C + movs r0, #1 + bx lr + + thumb_func_start sub_0804D340 +sub_0804D340: @ 0x0804D340 + push {lr} + ldr r0, _0804D374 @ =0x00000312 + movs r1, #0x84 + lsls r1, r1, #1 + movs r2, #1 + bl sub_0807B314 + bl sub_08054570 + movs r0, #0xc4 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D362 + ldr r0, _0804D378 @ =gUnk_080E718C + bl sub_0804ADDC +_0804D362: + movs r0, #0xc5 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D372 + ldr r0, _0804D37C @ =gUnk_080E71AC + bl sub_0804ADDC +_0804D372: + pop {pc} + .align 2, 0 +_0804D374: .4byte 0x00000312 +_0804D378: .4byte gUnk_080E718C +_0804D37C: .4byte gUnk_080E71AC + + thumb_func_start sub_0804D380 +sub_0804D380: @ 0x0804D380 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D384 +sub_0804D384: @ 0x0804D384 + push {lr} + movs r0, #0 + bl sub_0805AF60 + movs r0, #6 + bl GetProgressFlag + cmp r0, #0 + beq _0804D39C + ldr r0, _0804D3B0 @ =gUnk_080E7314 + bl sub_0804ADDC +_0804D39C: + movs r0, #0x7b + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D3B8 + ldr r0, _0804D3B4 @ =gUnk_080E72C4 + bl sub_0804ADDC + b _0804D3EA + .align 2, 0 +_0804D3B0: .4byte gUnk_080E7314 +_0804D3B4: .4byte gUnk_080E72C4 +_0804D3B8: + movs r0, #6 + bl sub_0807CD04 + movs r0, #0x43 + bl sub_0807CA84 + cmp r0, #0 + bne _0804D3EA + movs r0, #3 + bl sub_08078A90 + ldr r0, _0804D3EC @ =gUnk_080E72E4 + bl sub_0804ADDC + ldr r0, _0804D3F0 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + ldr r0, _0804D3F4 @ =0x80100000 + bl sub_080A3268 +_0804D3EA: + pop {pc} + .align 2, 0 +_0804D3EC: .4byte gUnk_080E72E4 +_0804D3F0: .4byte gUnk_02033A90 +_0804D3F4: .4byte 0x80100000 + + thumb_func_start sub_0804D3F8 +sub_0804D3F8: @ 0x0804D3F8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D3FC +sub_0804D3FC: @ 0x0804D3FC + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D408 +sub_0804D408: @ 0x0804D408 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D40C +sub_0804D40C: @ 0x0804D40C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D418 +sub_0804D418: @ 0x0804D418 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D41C +sub_0804D41C: @ 0x0804D41C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D428 +sub_0804D428: @ 0x0804D428 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D42C +sub_0804D42C: @ 0x0804D42C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D438 +sub_0804D438: @ 0x0804D438 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D43C +sub_0804D43C: @ 0x0804D43C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D448 +sub_0804D448: @ 0x0804D448 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D44C +sub_0804D44C: @ 0x0804D44C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D458 +sub_0804D458: @ 0x0804D458 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D45C +sub_0804D45C: @ 0x0804D45C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D468 +sub_0804D468: @ 0x0804D468 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D46C +sub_0804D46C: @ 0x0804D46C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D478 +sub_0804D478: @ 0x0804D478 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D47C +sub_0804D47C: @ 0x0804D47C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D488 +sub_0804D488: @ 0x0804D488 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D48C +sub_0804D48C: @ 0x0804D48C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D498 +sub_0804D498: @ 0x0804D498 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D49C +sub_0804D49C: @ 0x0804D49C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D4A8 +sub_0804D4A8: @ 0x0804D4A8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D4AC +sub_0804D4AC: @ 0x0804D4AC + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D4B8 +sub_0804D4B8: @ 0x0804D4B8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D4BC +sub_0804D4BC: @ 0x0804D4BC + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D4C8 +sub_0804D4C8: @ 0x0804D4C8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D4CC +sub_0804D4CC: @ 0x0804D4CC + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D4D8 +sub_0804D4D8: @ 0x0804D4D8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D4DC +sub_0804D4DC: @ 0x0804D4DC + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D4E8 +sub_0804D4E8: @ 0x0804D4E8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D4EC +sub_0804D4EC: @ 0x0804D4EC + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D4F8 +sub_0804D4F8: @ 0x0804D4F8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D4FC +sub_0804D4FC: @ 0x0804D4FC + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D508 +sub_0804D508: @ 0x0804D508 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D50C +sub_0804D50C: @ 0x0804D50C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D518 +sub_0804D518: @ 0x0804D518 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D51C +sub_0804D51C: @ 0x0804D51C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D528 +sub_0804D528: @ 0x0804D528 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D52C +sub_0804D52C: @ 0x0804D52C + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D538 +sub_0804D538: @ 0x0804D538 + movs r0, #1 + bx lr + + thumb_func_start nullsub_59 +nullsub_59: @ 0x0804D53C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D540 +sub_0804D540: @ 0x0804D540 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D544 +sub_0804D544: @ 0x0804D544 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D550 +sub_0804D550: @ 0x0804D550 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D554 +sub_0804D554: @ 0x0804D554 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D560 +sub_0804D560: @ 0x0804D560 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D564 +sub_0804D564: @ 0x0804D564 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D570 +sub_0804D570: @ 0x0804D570 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D574 +sub_0804D574: @ 0x0804D574 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D580 +sub_0804D580: @ 0x0804D580 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D584 +sub_0804D584: @ 0x0804D584 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D590 +sub_0804D590: @ 0x0804D590 + movs r0, #1 + bx lr + + thumb_func_start nullsub_60 +nullsub_60: @ 0x0804D594 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D598 +sub_0804D598: @ 0x0804D598 + movs r0, #1 + bx lr + + thumb_func_start nullsub_61 +nullsub_61: @ 0x0804D59C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D5A0 +sub_0804D5A0: @ 0x0804D5A0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_62 +nullsub_62: @ 0x0804D5A4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D5A8 +sub_0804D5A8: @ 0x0804D5A8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_63 +nullsub_63: @ 0x0804D5AC + bx lr + .align 2, 0 + + thumb_func_start sub_0804D5B0 +sub_0804D5B0: @ 0x0804D5B0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_64 +nullsub_64: @ 0x0804D5B4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D5B8 +sub_0804D5B8: @ 0x0804D5B8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_65 +nullsub_65: @ 0x0804D5BC + bx lr + .align 2, 0 + + thumb_func_start sub_0804D5C0 +sub_0804D5C0: @ 0x0804D5C0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D5C4 +sub_0804D5C4: @ 0x0804D5C4 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D5D0 +sub_0804D5D0: @ 0x0804D5D0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D5D4 +sub_0804D5D4: @ 0x0804D5D4 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D5E0 +sub_0804D5E0: @ 0x0804D5E0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D5E4 +sub_0804D5E4: @ 0x0804D5E4 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D5F0 +sub_0804D5F0: @ 0x0804D5F0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D5F4 +sub_0804D5F4: @ 0x0804D5F4 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D600 +sub_0804D600: @ 0x0804D600 + movs r0, #1 + bx lr + + thumb_func_start nullsub_66 +nullsub_66: @ 0x0804D604 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D608 +sub_0804D608: @ 0x0804D608 + movs r0, #1 + bx lr + + thumb_func_start nullsub_67 +nullsub_67: @ 0x0804D60C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D610 +sub_0804D610: @ 0x0804D610 + movs r0, #1 + bx lr + + thumb_func_start nullsub_68 +nullsub_68: @ 0x0804D614 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D618 +sub_0804D618: @ 0x0804D618 + movs r0, #1 + bx lr + + thumb_func_start nullsub_69 +nullsub_69: @ 0x0804D61C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D620 +sub_0804D620: @ 0x0804D620 + movs r0, #1 + bx lr + + thumb_func_start nullsub_70 +nullsub_70: @ 0x0804D624 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D628 +sub_0804D628: @ 0x0804D628 + movs r0, #1 + bx lr + + thumb_func_start nullsub_71 +nullsub_71: @ 0x0804D62C + bx lr + .align 2, 0 + + thumb_func_start sub_0804D630 +sub_0804D630: @ 0x0804D630 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D634 +sub_0804D634: @ 0x0804D634 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D640 +sub_0804D640: @ 0x0804D640 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D644 +sub_0804D644: @ 0x0804D644 + push {lr} + movs r0, #0 + bl sub_0805AF60 + movs r0, #0x70 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D65C + ldr r0, _0804D660 @ =gUnk_080EA09C + bl sub_0804ADDC +_0804D65C: + pop {pc} + .align 2, 0 +_0804D660: .4byte gUnk_080EA09C + + thumb_func_start sub_0804D664 +sub_0804D664: @ 0x0804D664 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D668 +sub_0804D668: @ 0x0804D668 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D674 +sub_0804D674: @ 0x0804D674 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D678 +sub_0804D678: @ 0x0804D678 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D684 +sub_0804D684: @ 0x0804D684 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D688 +sub_0804D688: @ 0x0804D688 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D694 +sub_0804D694: @ 0x0804D694 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D698 +sub_0804D698: @ 0x0804D698 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D6A4 +sub_0804D6A4: @ 0x0804D6A4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D6A8 +sub_0804D6A8: @ 0x0804D6A8 + push {lr} + movs r0, #0 + bl sub_0805AF60 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D6B4 +sub_0804D6B4: @ 0x0804D6B4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_72 +nullsub_72: @ 0x0804D6B8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D6BC +sub_0804D6BC: @ 0x0804D6BC + movs r0, #1 + bx lr + + thumb_func_start nullsub_73 +nullsub_73: @ 0x0804D6C0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D6C4 +sub_0804D6C4: @ 0x0804D6C4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D6C8 +sub_0804D6C8: @ 0x0804D6C8 + push {lr} + ldr r0, _0804D6E4 @ =0x80100000 + bl sub_080A3268 + ldr r0, _0804D6E8 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + pop {pc} + .align 2, 0 +_0804D6E4: .4byte 0x80100000 +_0804D6E8: .4byte gUnk_02033A90 + + thumb_func_start sub_0804D6EC +sub_0804D6EC: @ 0x0804D6EC + movs r0, #1 + bx lr + + thumb_func_start sub_0804D6F0 +sub_0804D6F0: @ 0x0804D6F0 + push {lr} + movs r0, #0 + bl sub_0805D3C8 + ldr r2, _0804D72C @ =gUnk_030010A0 + adds r0, r2, #0 + adds r0, #0x38 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0804D74C + adds r0, r2, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + beq _0804D74C + adds r0, r2, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #1 + bne _0804D734 + ldr r1, _0804D730 @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x48 + ldrh r0, [r0] + strh r0, [r1, #0x2e] + adds r0, r2, #0 + adds r0, #0x4a + b _0804D746 + .align 2, 0 +_0804D72C: .4byte gUnk_030010A0 +_0804D730: .4byte gLinkEntity +_0804D734: + cmp r0, #0 + bne _0804D74C + ldr r1, _0804D750 @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x44 + ldrh r0, [r0] + strh r0, [r1, #0x2e] + adds r0, r2, #0 + adds r0, #0x46 +_0804D746: + ldrh r0, [r0] + adds r0, #8 + strh r0, [r1, #0x32] +_0804D74C: + pop {pc} + .align 2, 0 +_0804D750: .4byte gLinkEntity + + thumb_func_start sub_0804D754 +sub_0804D754: @ 0x0804D754 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D758 +sub_0804D758: @ 0x0804D758 + push {lr} + movs r0, #6 + bl sub_0805B4D0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D764 +sub_0804D764: @ 0x0804D764 + movs r0, #1 + bx lr + + thumb_func_start nullsub_74 +nullsub_74: @ 0x0804D768 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D76C +sub_0804D76C: @ 0x0804D76C + movs r0, #1 + bx lr + + thumb_func_start nullsub_75 +nullsub_75: @ 0x0804D770 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D774 +sub_0804D774: @ 0x0804D774 + push {lr} + bl sub_080534AC + movs r0, #1 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804D780 +sub_0804D780: @ 0x0804D780 + push {r4, r5, lr} + movs r0, #4 + bl sub_0805B4D0 + movs r0, #0x77 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D7A0 + ldr r0, _0804D79C @ =gUnk_080EAD68 + bl sub_0804ADDC + b _0804D7D0 + .align 2, 0 +_0804D79C: .4byte gUnk_080EAD68 +_0804D7A0: + movs r0, #0x79 + bl sub_0807CBD0 + adds r5, r0, #0 + cmp r5, #0 + bne _0804D7D0 + ldr r0, _0804D7D4 @ =gUnk_080EADB8 + bl sub_0804ADDC + ldr r4, _0804D7D8 @ =0x00004072 + ldr r1, _0804D7DC @ =0x00000145 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804D7E0 @ =0x00000149 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0804D7E4 @ =gUnk_02033A90 + ldr r1, _0804D7E8 @ =0x00000864 + adds r0, r0, r1 + str r5, [r0] +_0804D7D0: + pop {r4, r5, pc} + .align 2, 0 +_0804D7D4: .4byte gUnk_080EADB8 +_0804D7D8: .4byte 0x00004072 +_0804D7DC: .4byte 0x00000145 +_0804D7E0: .4byte 0x00000149 +_0804D7E4: .4byte gUnk_02033A90 +_0804D7E8: .4byte 0x00000864 + + thumb_func_start sub_0804D7EC +sub_0804D7EC: @ 0x0804D7EC + push {r4, lr} + ldr r4, _0804D7F4 @ =gUnk_080EAE00 + b _0804D804 + .align 2, 0 +_0804D7F4: .4byte gUnk_080EAE00 +_0804D7F8: + ldrh r1, [r4] + adds r4, #2 + ldr r0, _0804D80C @ =0x00004072 + movs r2, #1 + bl sub_0807B314 +_0804D804: + ldrh r0, [r4] + cmp r0, #0 + bne _0804D7F8 + pop {r4, pc} + .align 2, 0 +_0804D80C: .4byte 0x00004072 + + thumb_func_start sub_0804D810 +sub_0804D810: @ 0x0804D810 + push {r4, lr} + ldr r4, _0804D818 @ =gUnk_080EAE00 + b _0804D826 + .align 2, 0 +_0804D818: .4byte gUnk_080EAE00 +_0804D81C: + ldrh r0, [r4] + adds r4, #2 + movs r1, #1 + bl sub_0807BA8C +_0804D826: + ldrh r0, [r4] + cmp r0, #0 + bne _0804D81C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0804D830 +sub_0804D830: @ 0x0804D830 + movs r0, #1 + bx lr + + thumb_func_start sub_0804D834 +sub_0804D834: @ 0x0804D834 + push {r4, lr} + ldr r4, _0804D86C @ =gUnk_02033A90 + movs r0, #0 + movs r1, #0x40 + strb r1, [r4] + strb r0, [r4, #1] + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804D894 + movs r0, #0x7f + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D878 + ldr r0, _0804D870 @ =gUnk_080EAEC0 + bl sub_0804ADDC + movs r0, #0x7f + bl sub_0807CCB4 + ldr r0, _0804D874 @ =0x00000864 + adds r1, r4, r0 + movs r0, #0x11 + str r0, [r1] + b _0804D8BC + .align 2, 0 +_0804D86C: .4byte gUnk_02033A90 +_0804D870: .4byte gUnk_080EAEC0 +_0804D874: .4byte 0x00000864 +_0804D878: + ldr r0, _0804D88C @ =gUnk_080EAF20 + bl sub_0804ADDC + ldr r2, _0804D890 @ =0x00000864 + adds r1, r4, r2 + subs r2, #4 + adds r0, r4, r2 + ldr r0, [r0] + str r0, [r1] + b _0804D8BC + .align 2, 0 +_0804D88C: .4byte gUnk_080EAF20 +_0804D890: .4byte 0x00000864 +_0804D894: + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804D8AC + ldr r1, _0804D8C4 @ =0x00000864 + adds r0, r4, r1 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r4, r2 + ldr r1, [r1] + str r1, [r0] +_0804D8AC: + movs r0, #1 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804D8BC + ldr r0, _0804D8C8 @ =gUnk_080EAE60 + bl sub_0804ADDC +_0804D8BC: + movs r0, #0x5d + bl sub_0807CD80 + pop {r4, pc} + .align 2, 0 +_0804D8C4: .4byte 0x00000864 +_0804D8C8: .4byte gUnk_080EAE60 + + thumb_func_start sub_0804D8CC +sub_0804D8CC: @ 0x0804D8CC + movs r0, #1 + bx lr + + thumb_func_start nullsub_320 +nullsub_320: @ 0x0804D8D0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D8D4 +sub_0804D8D4: @ 0x0804D8D4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_321 +nullsub_321: @ 0x0804D8D8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D8DC +sub_0804D8DC: @ 0x0804D8DC + movs r0, #1 + bx lr + + thumb_func_start nullsub_322 +nullsub_322: @ 0x0804D8E0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D8E4 +sub_0804D8E4: @ 0x0804D8E4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_323 +nullsub_323: @ 0x0804D8E8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D8EC +sub_0804D8EC: @ 0x0804D8EC + movs r0, #1 + bx lr + + thumb_func_start nullsub_324 +nullsub_324: @ 0x0804D8F0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D8F4 +sub_0804D8F4: @ 0x0804D8F4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_325 +nullsub_325: @ 0x0804D8F8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D8FC +sub_0804D8FC: @ 0x0804D8FC + movs r0, #1 + bx lr + + thumb_func_start nullsub_326 +nullsub_326: @ 0x0804D900 + bx lr + .align 2, 0 + + thumb_func_start sub_0804D904 +sub_0804D904: @ 0x0804D904 + push {r4, r5, lr} + movs r0, #0x51 + bl GetProgressFlag + adds r5, r0, #0 + cmp r5, #0 + beq _0804D93C + ldr r1, _0804D930 @ =gUnk_02034350 + ldr r0, _0804D934 @ =gUnk_080EB604 + str r0, [r1, #0x6c] + movs r0, #0 + str r0, [r1, #0x74] + ldr r0, _0804D938 @ =gUnk_02033A90 + movs r1, #0x86 + lsls r1, r1, #4 + adds r2, r0, r1 + adds r1, #4 + adds r0, r0, r1 + movs r1, #0x11 + str r1, [r0] + str r1, [r2] + b _0804D96A + .align 2, 0 +_0804D930: .4byte gUnk_02034350 +_0804D934: .4byte gUnk_080EB604 +_0804D938: .4byte gUnk_02033A90 +_0804D93C: + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804D96A + ldr r4, _0804D970 @ =gUnk_02034350 + str r5, [r4, #0x6c] + movs r0, #0x7a + bl sub_0807CBD0 + adds r5, r0, #0 + cmp r5, #0 + bne _0804D96A + movs r0, #0x1c + bl sub_0807CD04 + ldr r0, _0804D974 @ =gUnk_080EB5D4 + str r0, [r4, #0x6c] + adds r1, r4, #0 + adds r1, #0x88 + ldr r0, _0804D978 @ =sub_0804D9B0 + str r0, [r1] + str r5, [r4, #0x74] +_0804D96A: + movs r0, #1 + pop {r4, r5, pc} + .align 2, 0 +_0804D970: .4byte gUnk_02034350 +_0804D974: .4byte gUnk_080EB5D4 +_0804D978: .4byte sub_0804D9B0 + + thumb_func_start sub_0804D97C +sub_0804D97C: @ 0x0804D97C + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804D996 + ldr r0, _0804D9A8 @ =gUnk_02033A90 + ldr r2, _0804D9AC @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804D996: + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804D9A4 + bl sub_0804D9B0 +_0804D9A4: + pop {pc} + .align 2, 0 +_0804D9A8: .4byte gUnk_02033A90 +_0804D9AC: .4byte 0x00000864 + + thumb_func_start sub_0804D9B0 +sub_0804D9B0: @ 0x0804D9B0 + push {lr} + ldr r0, _0804D9EC @ =0x00000797 + movs r1, #1 + movs r2, #5 + movs r3, #1 + bl sub_0807BB98 + ldr r0, _0804D9F0 @ =0x00000357 + movs r1, #1 + movs r2, #5 + movs r3, #1 + bl sub_0807BB98 + ldr r0, _0804D9F4 @ =0x0000055F + movs r1, #1 + movs r2, #2 + movs r3, #1 + bl sub_0807BB98 + ldr r0, _0804D9F8 @ =gUnk_080EB684 + bl sub_0804ADDC + ldr r0, _0804D9FC @ =gUnk_02033A90 + ldr r2, _0804DA00 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + pop {pc} + .align 2, 0 +_0804D9EC: .4byte 0x00000797 +_0804D9F0: .4byte 0x00000357 +_0804D9F4: .4byte 0x0000055F +_0804D9F8: .4byte gUnk_080EB684 +_0804D9FC: .4byte gUnk_02033A90 +_0804DA00: .4byte 0x00000864 + + thumb_func_start sub_0804DA04 +sub_0804DA04: @ 0x0804DA04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_327 +nullsub_327: @ 0x0804DA08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DA0C +sub_0804DA0C: @ 0x0804DA0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_328 +nullsub_328: @ 0x0804DA10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DA14 +sub_0804DA14: @ 0x0804DA14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_329 +nullsub_329: @ 0x0804DA18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DA1C +sub_0804DA1C: @ 0x0804DA1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_330 +nullsub_330: @ 0x0804DA20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DA24 +sub_0804DA24: @ 0x0804DA24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_331 +nullsub_331: @ 0x0804DA28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DA2C +sub_0804DA2C: @ 0x0804DA2C + push {lr} + movs r0, #0x77 + bl sub_0807CBD0 + adds r1, r0, #0 + cmp r1, #0 + bne _0804DA40 + ldr r0, _0804DA44 @ =gUnk_02034350 + str r1, [r0, #0x6c] + str r1, [r0, #0x74] +_0804DA40: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804DA44: .4byte gUnk_02034350 + + thumb_func_start sub_0804DA48 +sub_0804DA48: @ 0x0804DA48 + push {lr} + movs r0, #0x77 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804DA60 + ldr r0, _0804DA5C @ =gUnk_080EB9F4 + bl sub_0804ADDC + b _0804DA8C + .align 2, 0 +_0804DA5C: .4byte gUnk_080EB9F4 +_0804DA60: + movs r0, #0x78 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804DA76 + ldr r0, _0804DA90 @ =gUnk_080EBAA4 + bl sub_0804ADDC + movs r0, #0x75 + bl sub_0807CCB4 +_0804DA76: + movs r0, #0x7b + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DA8C + ldr r0, _0804DA94 @ =gUnk_080EBAF4 + bl sub_0804ADDC + movs r0, #0x76 + bl sub_0807CCB4 +_0804DA8C: + pop {pc} + .align 2, 0 +_0804DA90: .4byte gUnk_080EBAA4 +_0804DA94: .4byte gUnk_080EBAF4 + + thumb_func_start sub_0804DA98 +sub_0804DA98: @ 0x0804DA98 + movs r0, #1 + bx lr + + thumb_func_start nullsub_332 +nullsub_332: @ 0x0804DA9C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DAA0 +sub_0804DAA0: @ 0x0804DAA0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_333 +nullsub_333: @ 0x0804DAA4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DAA8 +sub_0804DAA8: @ 0x0804DAA8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_334 +nullsub_334: @ 0x0804DAAC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DAB0 +sub_0804DAB0: @ 0x0804DAB0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_335 +nullsub_335: @ 0x0804DAB4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DAB8 +sub_0804DAB8: @ 0x0804DAB8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_336 +nullsub_336: @ 0x0804DABC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DAC0 +sub_0804DAC0: @ 0x0804DAC0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_337 +nullsub_337: @ 0x0804DAC4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DAC8 +sub_0804DAC8: @ 0x0804DAC8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_338 +nullsub_338: @ 0x0804DACC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DAD0 +sub_0804DAD0: @ 0x0804DAD0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804DAD4 +sub_0804DAD4: @ 0x0804DAD4 + push {lr} + movs r0, #0x86 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DAF0 + movs r0, #0x4c + bl sub_0807CBD0 + cmp r0, #0 + bne _0804DAF0 + ldr r0, _0804DAF4 @ =gUnk_080EC2CC + bl sub_0804ADDC +_0804DAF0: + pop {pc} + .align 2, 0 +_0804DAF4: .4byte gUnk_080EC2CC + + thumb_func_start sub_0804DAF8 +sub_0804DAF8: @ 0x0804DAF8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_339 +nullsub_339: @ 0x0804DAFC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DB00 +sub_0804DB00: @ 0x0804DB00 + movs r0, #1 + bx lr + + thumb_func_start sub_0804DB04 +sub_0804DB04: @ 0x0804DB04 + push {lr} + movs r0, #0x86 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DB20 + movs r0, #0x4d + bl sub_0807CBD0 + cmp r0, #0 + bne _0804DB20 + ldr r0, _0804DB24 @ =gUnk_080EC4E8 + bl sub_0804ADDC +_0804DB20: + pop {pc} + .align 2, 0 +_0804DB24: .4byte gUnk_080EC4E8 + + thumb_func_start sub_0804DB28 +sub_0804DB28: @ 0x0804DB28 + movs r0, #1 + bx lr + + thumb_func_start nullsub_340 +nullsub_340: @ 0x0804DB2C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DB30 +sub_0804DB30: @ 0x0804DB30 + movs r0, #1 + bx lr + + thumb_func_start nullsub_341 +nullsub_341: @ 0x0804DB34 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DB38 +sub_0804DB38: @ 0x0804DB38 + movs r0, #1 + bx lr + + thumb_func_start sub_0804DB3C +sub_0804DB3C: @ 0x0804DB3C + push {lr} + movs r0, #0x86 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DB58 + movs r0, #0x53 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804DB58 + ldr r0, _0804DB5C @ =gUnk_080EC820 + bl sub_0804ADDC +_0804DB58: + pop {pc} + .align 2, 0 +_0804DB5C: .4byte gUnk_080EC820 + + thumb_func_start sub_0804DB60 +sub_0804DB60: @ 0x0804DB60 + movs r0, #1 + bx lr + + thumb_func_start nullsub_342 +nullsub_342: @ 0x0804DB64 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DB68 +sub_0804DB68: @ 0x0804DB68 + movs r0, #1 + bx lr + + thumb_func_start sub_0804DB6C +sub_0804DB6C: @ 0x0804DB6C + push {lr} + movs r0, #0x86 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DB88 + movs r0, #0x56 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804DB88 + ldr r0, _0804DB8C @ =gUnk_080ECA60 + bl sub_0804ADDC +_0804DB88: + pop {pc} + .align 2, 0 +_0804DB8C: .4byte gUnk_080ECA60 + + thumb_func_start sub_0804DB90 +sub_0804DB90: @ 0x0804DB90 + movs r0, #1 + bx lr + + thumb_func_start nullsub_343 +nullsub_343: @ 0x0804DB94 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DB98 +sub_0804DB98: @ 0x0804DB98 + movs r0, #1 + bx lr + + thumb_func_start nullsub_344 +nullsub_344: @ 0x0804DB9C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DBA0 +sub_0804DBA0: @ 0x0804DBA0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_345 +nullsub_345: @ 0x0804DBA4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DBA8 +sub_0804DBA8: @ 0x0804DBA8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_346 +nullsub_346: @ 0x0804DBAC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DBB0 +sub_0804DBB0: @ 0x0804DBB0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_347 +nullsub_347: @ 0x0804DBB4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DBB8 +sub_0804DBB8: @ 0x0804DBB8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_348 +nullsub_348: @ 0x0804DBBC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DBC0 +sub_0804DBC0: @ 0x0804DBC0 + push {lr} + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DBD2 + ldr r1, _0804DBD8 @ =gUnk_02034350 + movs r0, #0 + str r0, [r1, #0x74] +_0804DBD2: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804DBD8: .4byte gUnk_02034350 + + thumb_func_start sub_0804DBDC +sub_0804DBDC: @ 0x0804DBDC + push {lr} + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DC08 + movs r0, #0x90 + movs r1, #1 + movs r2, #1 + movs r3, #5 + bl sub_0807BB98 + ldr r0, _0804DC0C @ =gUnk_080ECFCC + bl sub_0804ADDC + ldr r0, _0804DC10 @ =gUnk_02033A90 + ldr r2, _0804DC14 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804DC08: + pop {pc} + .align 2, 0 +_0804DC0C: .4byte gUnk_080ECFCC +_0804DC10: .4byte gUnk_02033A90 +_0804DC14: .4byte 0x00000864 + + thumb_func_start sub_0804DC18 +sub_0804DC18: @ 0x0804DC18 + movs r0, #1 + bx lr + + thumb_func_start nullsub_349 +nullsub_349: @ 0x0804DC1C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DC20 +sub_0804DC20: @ 0x0804DC20 + movs r0, #1 + bx lr + + thumb_func_start nullsub_350 +nullsub_350: @ 0x0804DC24 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DC28 +sub_0804DC28: @ 0x0804DC28 + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804DC3E + ldr r0, _0804DC44 @ =gUnk_02034350 + ldr r1, _0804DC48 @ =gUnk_080ED1E4 + str r1, [r0, #0x6c] + movs r1, #0 + str r1, [r0, #0x74] +_0804DC3E: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804DC44: .4byte gUnk_02034350 +_0804DC48: .4byte gUnk_080ED1E4 + + thumb_func_start sub_0804DC4C +sub_0804DC4C: @ 0x0804DC4C + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804DC66 + ldr r0, _0804DC68 @ =gUnk_02033A90 + ldr r2, _0804DC6C @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804DC66: + pop {pc} + .align 2, 0 +_0804DC68: .4byte gUnk_02033A90 +_0804DC6C: .4byte 0x00000864 + + thumb_func_start sub_0804DC70 +sub_0804DC70: @ 0x0804DC70 + movs r0, #1 + bx lr + + thumb_func_start nullsub_351 +nullsub_351: @ 0x0804DC74 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DC78 +sub_0804DC78: @ 0x0804DC78 + movs r0, #1 + bx lr + + thumb_func_start nullsub_352 +nullsub_352: @ 0x0804DC7C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DC80 +sub_0804DC80: @ 0x0804DC80 + movs r0, #1 + bx lr + + thumb_func_start nullsub_353 +nullsub_353: @ 0x0804DC84 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DC88 +sub_0804DC88: @ 0x0804DC88 + movs r0, #1 + bx lr + + thumb_func_start nullsub_354 +nullsub_354: @ 0x0804DC8C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DC90 +sub_0804DC90: @ 0x0804DC90 + movs r0, #1 + bx lr + + thumb_func_start nullsub_355 +nullsub_355: @ 0x0804DC94 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DC98 +sub_0804DC98: @ 0x0804DC98 + movs r0, #1 + bx lr + + thumb_func_start nullsub_356 +nullsub_356: @ 0x0804DC9C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCA0 +sub_0804DCA0: @ 0x0804DCA0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_357 +nullsub_357: @ 0x0804DCA4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCA8 +sub_0804DCA8: @ 0x0804DCA8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_358 +nullsub_358: @ 0x0804DCAC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCB0 +sub_0804DCB0: @ 0x0804DCB0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_359 +nullsub_359: @ 0x0804DCB4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCB8 +sub_0804DCB8: @ 0x0804DCB8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_360 +nullsub_360: @ 0x0804DCBC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCC0 +sub_0804DCC0: @ 0x0804DCC0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_361 +nullsub_361: @ 0x0804DCC4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCC8 +sub_0804DCC8: @ 0x0804DCC8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_362 +nullsub_362: @ 0x0804DCCC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCD0 +sub_0804DCD0: @ 0x0804DCD0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_363 +nullsub_363: @ 0x0804DCD4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCD8 +sub_0804DCD8: @ 0x0804DCD8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_364 +nullsub_364: @ 0x0804DCDC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCE0 +sub_0804DCE0: @ 0x0804DCE0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_365 +nullsub_365: @ 0x0804DCE4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCE8 +sub_0804DCE8: @ 0x0804DCE8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_366 +nullsub_366: @ 0x0804DCEC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCF0 +sub_0804DCF0: @ 0x0804DCF0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_367 +nullsub_367: @ 0x0804DCF4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DCF8 +sub_0804DCF8: @ 0x0804DCF8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_368 +nullsub_368: @ 0x0804DCFC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DD00 +sub_0804DD00: @ 0x0804DD00 + movs r0, #1 + bx lr + + thumb_func_start nullsub_369 +nullsub_369: @ 0x0804DD04 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DD08 +sub_0804DD08: @ 0x0804DD08 + movs r0, #1 + bx lr + + thumb_func_start nullsub_370 +nullsub_370: @ 0x0804DD0C + bx lr + .align 2, 0 + + thumb_func_start sub_0804DD10 +sub_0804DD10: @ 0x0804DD10 + movs r0, #1 + bx lr + + thumb_func_start nullsub_371 +nullsub_371: @ 0x0804DD14 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DD18 +sub_0804DD18: @ 0x0804DD18 + push {lr} + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DD2C + ldr r1, _0804DD30 @ =gUnk_02034350 + movs r0, #0 + str r0, [r1, #0x74] + str r0, [r1, #0x6c] +_0804DD2C: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804DD30: .4byte gUnk_02034350 + + thumb_func_start sub_0804DD34 +sub_0804DD34: @ 0x0804DD34 + push {lr} + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DD60 + movs r0, #3 + movs r1, #2 + movs r2, #5 + movs r3, #1 + bl sub_0807BB98 + ldr r0, _0804DD64 @ =gUnk_080EE314 + bl sub_0804ADDC + ldr r0, _0804DD68 @ =gUnk_02033A90 + ldr r2, _0804DD6C @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804DD60: + pop {pc} + .align 2, 0 +_0804DD64: .4byte gUnk_080EE314 +_0804DD68: .4byte gUnk_02033A90 +_0804DD6C: .4byte 0x00000864 + + thumb_func_start sub_0804DD70 +sub_0804DD70: @ 0x0804DD70 + movs r0, #1 + bx lr + + thumb_func_start nullsub_372 +nullsub_372: @ 0x0804DD74 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DD78 +sub_0804DD78: @ 0x0804DD78 + push {lr} + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DD8A + ldr r1, _0804DD90 @ =gUnk_02034350 + movs r0, #0 + str r0, [r1, #0x74] +_0804DD8A: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804DD90: .4byte gUnk_02034350 + + thumb_func_start sub_0804DD94 +sub_0804DD94: @ 0x0804DD94 + push {lr} + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DDC0 + ldr r0, _0804DDC4 @ =0x00000392 + movs r1, #2 + movs r2, #2 + movs r3, #5 + bl sub_0807BB98 + ldr r0, _0804DDC8 @ =gUnk_080EE5DC + bl sub_0804ADDC + ldr r0, _0804DDCC @ =gUnk_02033A90 + ldr r2, _0804DDD0 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804DDC0: + pop {pc} + .align 2, 0 +_0804DDC4: .4byte 0x00000392 +_0804DDC8: .4byte gUnk_080EE5DC +_0804DDCC: .4byte gUnk_02033A90 +_0804DDD0: .4byte 0x00000864 + + thumb_func_start sub_0804DDD4 +sub_0804DDD4: @ 0x0804DDD4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_373 +nullsub_373: @ 0x0804DDD8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804DDDC +sub_0804DDDC: @ 0x0804DDDC + movs r0, #1 + bx lr + + thumb_func_start sub_0804DDE0 +sub_0804DDE0: @ 0x0804DDE0 + push {lr} + movs r0, #1 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804DDF2 + ldr r0, _0804DDF4 @ =gUnk_080EE71C + bl sub_0804ADDC +_0804DDF2: + pop {pc} + .align 2, 0 +_0804DDF4: .4byte gUnk_080EE71C + + thumb_func_start sub_0804DDF8 +sub_0804DDF8: @ 0x0804DDF8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_374 +nullsub_374: @ 0x0804DDFC + bx lr + .align 2, 0 + + thumb_func_start sub_0804DE00 +sub_0804DE00: @ 0x0804DE00 + push {r4, r5, r6, lr} + bl sub_080530C8 + movs r0, #0xb + bl sub_0801E7F4 + cmp r0, #0 + beq _0804DE32 + movs r0, #0x19 + bl GetProgressFlag + cmp r0, #0 + bne _0804DE22 + movs r0, #0x19 + bl sub_0807CD04 + b _0804DE32 +_0804DE22: + movs r0, #0x18 + bl GetProgressFlag + cmp r0, #0 + bne _0804DE32 + movs r0, #0x18 + bl sub_0807CD04 +_0804DE32: + ldr r5, _0804DE50 @ =gUnk_080D4250 + ldr r4, _0804DE54 @ =gUnk_02002A40 + ldrb r0, [r4, #8] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + bl sub_0804AFB0 + ldrb r0, [r4, #8] + cmp r0, #1 + beq _0804DE5C + ldr r1, _0804DE58 @ =gUnk_02017654 + ldr r0, [r5] + str r0, [r1] + b _0804DECC + .align 2, 0 +_0804DE50: .4byte gUnk_080D4250 +_0804DE54: .4byte gUnk_02002A40 +_0804DE58: .4byte gUnk_02017654 +_0804DE5C: + movs r0, #0x1c + bl sub_0807CD04 + ldr r4, _0804DEB4 @ =gUnk_02033A90 + ldr r0, _0804DEB8 @ =0x0000085C + adds r4, r4, r0 + ldr r0, [r4] + ldrh r5, [r0, #4] + ldrh r6, [r0, #6] + ldr r1, _0804DEBC @ =gUnk_03000BF0 + movs r2, #0 + movs r0, #0x15 + strb r0, [r1, #4] + strb r2, [r1, #5] + bl sub_08052CFC + ldr r0, [r4] + movs r1, #0x98 + lsls r1, r1, #1 + adds r5, r5, r1 + strh r5, [r0, #4] + ldr r0, [r4] + strh r6, [r0, #6] + ldr r1, _0804DEC0 @ =gUnk_030010A0 + ldr r0, [r4] + ldrh r0, [r0] + lsrs r0, r0, #1 + strh r0, [r1, #0x10] + bl sub_08052EA0 + bl sub_0804AF90 + movs r0, #0xcd + bl sub_0807CBD0 + cmp r0, #0 + bne _0804DEC4 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #7 + bl sub_08050054 + b _0804DECC + .align 2, 0 +_0804DEB4: .4byte gUnk_02033A90 +_0804DEB8: .4byte 0x0000085C +_0804DEBC: .4byte gUnk_03000BF0 +_0804DEC0: .4byte gUnk_030010A0 +_0804DEC4: + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 +_0804DECC: + movs r0, #1 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0804DED0 +sub_0804DED0: @ 0x0804DED0 + push {r4, lr} + bl sub_08054570 + bl sub_08059D18 + movs r0, #0xbb + lsls r0, r0, #1 + ldr r1, _0804DEF8 @ =0x0000066B + movs r2, #1 + bl sub_0807B314 + ldr r0, _0804DEFC @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #1 + bne _0804DF00 + movs r0, #0 + bl sub_0801D000 + b _0804E112 + .align 2, 0 +_0804DEF8: .4byte 0x0000066B +_0804DEFC: .4byte gUnk_02002A40 +_0804DF00: + ldr r0, _0804DF7C @ =0x00000DB4 + bl sub_08018C58 + movs r4, #0x80 + lsls r4, r4, #2 + adds r0, r4, #0 + movs r1, #0x84 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804DF1C + ldr r0, _0804DF80 @ =gUnk_080EEB6C + bl sub_0804ADDC +_0804DF1C: + adds r0, r4, #0 + movs r1, #0x85 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804DF2E + ldr r0, _0804DF84 @ =gUnk_080EEB8C + bl sub_0804ADDC +_0804DF2E: + movs r0, #0x67 + bl sub_0807CA84 + cmp r0, #0 + bne _0804DF48 + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + beq _0804DF48 + ldr r0, _0804DF88 @ =gUnk_080EE88C + bl sub_0804ADDC +_0804DF48: + movs r0, #0x28 + bl sub_0801E7F4 + cmp r0, #0 + bne _0804DF58 + ldr r0, _0804DF8C @ =gUnk_080EE8FC + bl sub_0804ADDC +_0804DF58: + movs r0, #0x33 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804DF68 + ldr r0, _0804DF90 @ =gUnk_080EE91C + bl sub_0804ADDC +_0804DF68: + movs r0, #0x12 + bl GetProgressFlag + cmp r0, #0 + beq _0804DF98 + ldr r0, _0804DF94 @ =gUnk_080EE93C + bl sub_0804ADDC + b _0804DF9E + .align 2, 0 +_0804DF7C: .4byte 0x00000DB4 +_0804DF80: .4byte gUnk_080EEB6C +_0804DF84: .4byte gUnk_080EEB8C +_0804DF88: .4byte gUnk_080EE88C +_0804DF8C: .4byte gUnk_080EE8FC +_0804DF90: .4byte gUnk_080EE91C +_0804DF94: .4byte gUnk_080EE93C +_0804DF98: + ldr r0, _0804DFF4 @ =gUnk_080EECBC + bl sub_0804ADDC +_0804DF9E: + movs r0, #0x1b + bl sub_0801E7F4 + cmp r0, #0 + beq _0804E02A + ldr r0, _0804DFF8 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bls _0804E02A + movs r0, #0x2e + bl GetProgressFlag + cmp r0, #0 + bne _0804E024 + movs r0, #0x2f + bl GetProgressFlag + cmp r0, #0 + bne _0804E024 + movs r0, #0x30 + bl GetProgressFlag + cmp r0, #0 + bne _0804E024 + movs r0, #0x2b + bl GetProgressFlag + cmp r0, #0 + bne _0804E000 + movs r0, #0x2c + bl GetProgressFlag + cmp r0, #0 + bne _0804E000 + movs r0, #0x2d + bl GetProgressFlag + cmp r0, #0 + bne _0804E000 + ldr r0, _0804DFFC @ =gUnk_080EE95C + bl sub_0804ADDC + b _0804E02A + .align 2, 0 +_0804DFF4: .4byte gUnk_080EECBC +_0804DFF8: .4byte gUnk_02002A40 +_0804DFFC: .4byte gUnk_080EE95C +_0804E000: + movs r0, #0x18 + bl GetProgressFlag + cmp r0, #0 + bne _0804E018 + ldr r0, _0804E014 @ =gUnk_080EE97C + bl sub_0804ADDC + b _0804E02A + .align 2, 0 +_0804E014: .4byte gUnk_080EE97C +_0804E018: + ldr r0, _0804E020 @ =gUnk_080EE9BC + bl sub_0804ADDC + b _0804E02A + .align 2, 0 +_0804E020: .4byte gUnk_080EE9BC +_0804E024: + ldr r0, _0804E03C @ =gUnk_080EE99C + bl sub_0804ADDC +_0804E02A: + movs r0, #0x2b + bl GetProgressFlag + cmp r0, #0 + beq _0804E044 + ldr r0, _0804E040 @ =gUnk_080EE9FC + bl sub_0804ADDC + b _0804E07A + .align 2, 0 +_0804E03C: .4byte gUnk_080EE99C +_0804E040: .4byte gUnk_080EE9FC +_0804E044: + movs r0, #0x2c + bl GetProgressFlag + cmp r0, #0 + beq _0804E05C + ldr r0, _0804E058 @ =gUnk_080EEA1C + bl sub_0804ADDC + b _0804E07A + .align 2, 0 +_0804E058: .4byte gUnk_080EEA1C +_0804E05C: + movs r0, #0x2d + bl GetProgressFlag + cmp r0, #0 + beq _0804E074 + ldr r0, _0804E070 @ =gUnk_080EEA3C + bl sub_0804ADDC + b _0804E07A + .align 2, 0 +_0804E070: .4byte gUnk_080EEA3C +_0804E074: + ldr r0, _0804E114 @ =gUnk_080EE9DC + bl sub_0804ADDC +_0804E07A: + ldr r0, _0804E118 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #4 + bls _0804E0B0 + movs r0, #0xb + bl sub_0801E7F4 + cmp r0, #0 + bne _0804E0B0 + movs r0, #0x2b + bl GetProgressFlag + cmp r0, #0 + bne _0804E0AA + movs r0, #0x2c + bl GetProgressFlag + cmp r0, #0 + bne _0804E0AA + movs r0, #0x2d + bl GetProgressFlag + cmp r0, #0 + beq _0804E0B0 +_0804E0AA: + ldr r0, _0804E11C @ =gUnk_080EEA5C + bl sub_0804ADDC +_0804E0B0: + movs r0, #0xd0 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E0CA + movs r0, #0x14 + bl sub_0807CA84 + cmp r0, #0 + beq _0804E0CA + ldr r0, _0804E120 @ =gUnk_080EEABC + bl sub_0804ADDC +_0804E0CA: + ldr r0, _0804E118 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bls _0804E0E2 + movs r0, #0x1d + bl GetProgressFlag + cmp r0, #0 + beq _0804E0E2 + ldr r0, _0804E124 @ =gUnk_080EEA7C + bl sub_0804ADDC +_0804E0E2: + ldr r0, _0804E118 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #5 + bhi _0804E0FA + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + bne _0804E0FA + ldr r0, _0804E128 @ =gUnk_080EEA9C + bl sub_0804ADDC +_0804E0FA: + ldr r0, _0804E118 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x14 + ands r0, r1 + cmp r0, #0 + bne _0804E10E + ldr r0, _0804E12C @ =gUnk_080EEBAC + bl sub_0804ADDC +_0804E10E: + bl sub_0804E150 +_0804E112: + pop {r4, pc} + .align 2, 0 +_0804E114: .4byte gUnk_080EE9DC +_0804E118: .4byte gUnk_02002A40 +_0804E11C: .4byte gUnk_080EEA5C +_0804E120: .4byte gUnk_080EEABC +_0804E124: .4byte gUnk_080EEA7C +_0804E128: .4byte gUnk_080EEA9C +_0804E12C: .4byte gUnk_080EEBAC + + thumb_func_start sub_0804E130 +sub_0804E130: @ 0x0804E130 + push {lr} + ldr r0, _0804E148 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x14 + ands r0, r1 + cmp r0, #0 + bne _0804E146 + ldr r0, _0804E14C @ =gUnk_080EEBAC + bl sub_0804ADDC +_0804E146: + pop {pc} + .align 2, 0 +_0804E148: .4byte gUnk_02002A40 +_0804E14C: .4byte gUnk_080EEBAC + + thumb_func_start sub_0804E150 +sub_0804E150: @ 0x0804E150 + push {r4, r5, lr} + ldr r4, _0804E160 @ =gUnk_080EED2C + ldr r0, _0804E164 @ =gUnk_02002A40 + movs r5, #1 + ldrb r0, [r0, #8] + lsls r5, r0 + b _0804E17C + .align 2, 0 +_0804E160: .4byte gUnk_080EED2C +_0804E164: .4byte gUnk_02002A40 +_0804E168: + ldrh r0, [r4] + ands r0, r5 + cmp r0, #0 + beq _0804E17A + ldrh r0, [r4, #4] + ldrh r1, [r4, #2] + movs r2, #1 + bl sub_0800015E +_0804E17A: + adds r4, #6 +_0804E17C: + ldrh r0, [r4, #2] + cmp r0, #0 + bne _0804E168 + movs r0, #0xd1 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E1BA + ldr r4, _0804E198 @ =gUnk_080EED7A + ldr r0, _0804E19C @ =gUnk_02002A40 + movs r5, #1 + ldrb r0, [r0, #8] + lsls r5, r0 + b _0804E1B4 + .align 2, 0 +_0804E198: .4byte gUnk_080EED7A +_0804E19C: .4byte gUnk_02002A40 +_0804E1A0: + ldrh r0, [r4] + ands r0, r5 + cmp r0, #0 + beq _0804E1B2 + ldrh r0, [r4, #4] + ldrh r1, [r4, #2] + movs r2, #1 + bl sub_0800015E +_0804E1B2: + adds r4, #6 +_0804E1B4: + ldrh r0, [r4] + cmp r0, #0 + bne _0804E1A0 +_0804E1BA: + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + bne _0804E1F2 + ldr r4, _0804E1D0 @ =gUnk_080EED8C + ldr r0, _0804E1D4 @ =gUnk_02002A40 + movs r5, #1 + ldrb r0, [r0, #8] + lsls r5, r0 + b _0804E1EC + .align 2, 0 +_0804E1D0: .4byte gUnk_080EED8C +_0804E1D4: .4byte gUnk_02002A40 +_0804E1D8: + ldrh r0, [r4] + ands r0, r5 + cmp r0, #0 + beq _0804E1EA + ldrh r0, [r4, #4] + ldrh r1, [r4, #2] + movs r2, #1 + bl sub_0800015E +_0804E1EA: + adds r4, #6 +_0804E1EC: + ldrh r0, [r4] + cmp r0, #0 + bne _0804E1D8 +_0804E1F2: + pop {r4, r5, pc} + + thumb_func_start sub_0804E1F4 +sub_0804E1F4: @ 0x0804E1F4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_76 +nullsub_76: @ 0x0804E1F8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E1FC +sub_0804E1FC: @ 0x0804E1FC + movs r0, #1 + bx lr + + thumb_func_start nullsub_77 +nullsub_77: @ 0x0804E200 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E204 +sub_0804E204: @ 0x0804E204 + movs r0, #1 + bx lr + + thumb_func_start nullsub_78 +nullsub_78: @ 0x0804E208 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E20C +sub_0804E20C: @ 0x0804E20C + movs r0, #1 + bx lr + + thumb_func_start nullsub_79 +nullsub_79: @ 0x0804E210 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E214 +sub_0804E214: @ 0x0804E214 + movs r0, #1 + bx lr + + thumb_func_start nullsub_080 +nullsub_080: @ 0x0804E218 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E21C +sub_0804E21C: @ 0x0804E21C + movs r0, #1 + bx lr + + thumb_func_start nullsub_081 +nullsub_081: @ 0x0804E220 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E224 +sub_0804E224: @ 0x0804E224 + movs r0, #1 + bx lr + + thumb_func_start nullsub_082 +nullsub_082: @ 0x0804E228 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E22C +sub_0804E22C: @ 0x0804E22C + movs r0, #1 + bx lr + + thumb_func_start nullsub_083 +nullsub_083: @ 0x0804E230 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E234 +sub_0804E234: @ 0x0804E234 + movs r0, #1 + bx lr + + thumb_func_start nullsub_084 +nullsub_084: @ 0x0804E238 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E23C +sub_0804E23C: @ 0x0804E23C + movs r0, #1 + bx lr + + thumb_func_start nullsub_085 +nullsub_085: @ 0x0804E240 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E244 +sub_0804E244: @ 0x0804E244 + movs r0, #1 + bx lr + + thumb_func_start nullsub_086 +nullsub_086: @ 0x0804E248 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E24C +sub_0804E24C: @ 0x0804E24C + movs r0, #1 + bx lr + + thumb_func_start nullsub_087 +nullsub_087: @ 0x0804E250 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E254 +sub_0804E254: @ 0x0804E254 + movs r0, #1 + bx lr + + thumb_func_start nullsub_088 +nullsub_088: @ 0x0804E258 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E25C +sub_0804E25C: @ 0x0804E25C + push {lr} + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + beq _0804E26E + ldr r1, _0804E274 @ =gUnk_02034350 + ldr r0, _0804E278 @ =gUnk_080F09A0 + str r0, [r1, #0x70] +_0804E26E: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804E274: .4byte gUnk_02034350 +_0804E278: .4byte gUnk_080F09A0 + + thumb_func_start sub_0804E27C +sub_0804E27C: @ 0x0804E27C + push {r4, lr} + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + bne _0804E2AC + ldr r0, _0804E2A0 @ =gUnk_080F0650 + bl sub_0804ADDC + ldr r0, _0804E2A4 @ =gUnk_02033A90 + ldr r1, _0804E2A8 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x13 + str r1, [r0] + movs r0, #0x64 + bl sub_0807CD04 + b _0804E2C0 + .align 2, 0 +_0804E2A0: .4byte gUnk_080F0650 +_0804E2A4: .4byte gUnk_02033A90 +_0804E2A8: .4byte 0x00000864 +_0804E2AC: + movs r0, #0x64 + bl GetProgressFlag + cmp r0, #0 + beq _0804E2C0 + ldr r0, _0804E300 @ =gUnk_02033A90 + ldr r1, _0804E304 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x1b + str r1, [r0] +_0804E2C0: + movs r0, #0x9c + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E318 + ldr r0, _0804E308 @ =gUnk_080F0800 + bl sub_0804ADDC + ldr r4, _0804E30C @ =0x00004072 + movs r1, #0x96 + lsls r1, r1, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r1, #0xa6 + lsls r1, r1, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804E310 @ =0x00000266 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804E314 @ =0x000002A6 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + b _0804E3A6 + .align 2, 0 +_0804E300: .4byte gUnk_02033A90 +_0804E304: .4byte 0x00000864 +_0804E308: .4byte gUnk_080F0800 +_0804E30C: .4byte 0x00004072 +_0804E310: .4byte 0x00000266 +_0804E314: .4byte 0x000002A6 +_0804E318: + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + bne _0804E348 + ldr r0, _0804E360 @ =gUnk_080F08F0 + bl sub_0804ADDC + ldr r4, _0804E364 @ =0x00004072 + adds r0, r4, #0 + movs r1, #0x9e + movs r2, #1 + bl sub_0807B314 + adds r0, r4, #0 + movs r1, #0x9f + movs r2, #1 + bl sub_0807B314 + adds r0, r4, #0 + movs r1, #0xa0 + movs r2, #1 + bl sub_0807B314 +_0804E348: + ldr r0, _0804E368 @ =gUnk_080F0850 + bl sub_0804ADDC + movs r0, #0x42 + bl sub_0807CA84 + cmp r0, #0 + bne _0804E370 + ldr r0, _0804E36C @ =gUnk_080F0870 + bl sub_0804ADDC + b _0804E376 + .align 2, 0 +_0804E360: .4byte gUnk_080F08F0 +_0804E364: .4byte 0x00004072 +_0804E368: .4byte gUnk_080F0850 +_0804E36C: .4byte gUnk_080F0870 +_0804E370: + ldr r0, _0804E3AC @ =gUnk_080F0890 + bl sub_0804ADDC +_0804E376: + ldr r4, _0804E3B0 @ =0x00004072 + movs r1, #0x96 + lsls r1, r1, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r1, #0xa6 + lsls r1, r1, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0x10 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804E3A6 + ldr r0, _0804E3B4 @ =gUnk_080F0920 + bl sub_0804ADDC + movs r0, #0x10 + bl sub_0807CD34 +_0804E3A6: + bl sub_080AF284 + pop {r4, pc} + .align 2, 0 +_0804E3AC: .4byte gUnk_080F0890 +_0804E3B0: .4byte 0x00004072 +_0804E3B4: .4byte gUnk_080F0920 + + thumb_func_start sub_0804E3B8 +sub_0804E3B8: @ 0x0804E3B8 + push {lr} + movs r0, #1 + bl sub_0807CD34 + movs r0, #1 + pop {pc} + + thumb_func_start sub_0804E3C4 +sub_0804E3C4: @ 0x0804E3C4 + push {r4, r5, r6, lr} + movs r0, #5 + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r6, r1, #0x1f + movs r0, #6 + bl GetProgressFlag + cmp r0, #0 + beq _0804E3DE + movs r6, #2 +_0804E3DE: + movs r0, #0x55 + bl GetProgressFlag + cmp r0, #0 + beq _0804E3EA + movs r6, #3 +_0804E3EA: + bl sub_08000E50 + adds r4, r0, #0 + ldr r1, _0804E448 @ =gUnk_080F0D58 + lsls r0, r6, #2 + adds r0, r0, r1 + movs r5, #0x1f + adds r1, r4, #0 + ands r1, r5 + ldr r0, [r0] + adds r0, r0, r1 + ldrb r6, [r0] + ldr r1, _0804E44C @ =gUnk_080F0CB8 + movs r0, #0xf + ands r0, r6 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0804ADDC + lsrs r6, r6, #4 + lsrs r4, r4, #8 + ldr r1, _0804E450 @ =gUnk_080F0E08 + lsls r0, r6, #2 + adds r0, r0, r1 + ands r4, r5 + ldr r0, [r0] + adds r0, r0, r4 + ldrb r6, [r0] + movs r0, #0xc6 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E436 + movs r0, #0xc6 + bl sub_0807CCB4 + movs r6, #0xe +_0804E436: + lsls r0, r6, #3 + ldr r1, _0804E454 @ =gUnk_080F0E1C + adds r0, r0, r1 + bl sub_0804B3C4 + ldr r0, _0804E458 @ =0x80100000 + bl sub_080A3268 + pop {r4, r5, r6, pc} + .align 2, 0 +_0804E448: .4byte gUnk_080F0D58 +_0804E44C: .4byte gUnk_080F0CB8 +_0804E450: .4byte gUnk_080F0E08 +_0804E454: .4byte gUnk_080F0E1C +_0804E458: .4byte 0x80100000 + + thumb_func_start sub_0804E45C +sub_0804E45C: @ 0x0804E45C + movs r0, #1 + bx lr + + thumb_func_start sub_0804E460 +sub_0804E460: @ 0x0804E460 + push {lr} + movs r0, #0x4a + bl GetProgressFlag + cmp r0, #0 + bne _0804E478 + ldr r0, _0804E474 @ =gUnk_080F1C68 + bl sub_0804ADDC + b _0804E47E + .align 2, 0 +_0804E474: .4byte gUnk_080F1C68 +_0804E478: + ldr r0, _0804E480 @ =gUnk_080F1C88 + bl sub_0804ADDC +_0804E47E: + pop {pc} + .align 2, 0 +_0804E480: .4byte gUnk_080F1C88 + + thumb_func_start sub_0804E484 +sub_0804E484: @ 0x0804E484 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E488 +sub_0804E488: @ 0x0804E488 + push {lr} + movs r0, #0x2e + bl GetProgressFlag + cmp r0, #0 + beq _0804E4A0 + ldr r0, _0804E49C @ =gUnk_080F1D90 + bl sub_0804ADDC + b _0804E4C8 + .align 2, 0 +_0804E49C: .4byte gUnk_080F1D90 +_0804E4A0: + movs r0, #0x2f + bl GetProgressFlag + cmp r0, #0 + beq _0804E4B8 + ldr r0, _0804E4B4 @ =gUnk_080F1DB0 + bl sub_0804ADDC + b _0804E4C8 + .align 2, 0 +_0804E4B4: .4byte gUnk_080F1DB0 +_0804E4B8: + movs r0, #0x30 + bl GetProgressFlag + cmp r0, #0 + beq _0804E4C8 + ldr r0, _0804E4CC @ =gUnk_080F1DD0 + bl sub_0804ADDC +_0804E4C8: + pop {pc} + .align 2, 0 +_0804E4CC: .4byte gUnk_080F1DD0 + + thumb_func_start sub_0804E4D0 +sub_0804E4D0: @ 0x0804E4D0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_375 +nullsub_375: @ 0x0804E4D4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E4D8 +sub_0804E4D8: @ 0x0804E4D8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_376 +nullsub_376: @ 0x0804E4DC + bx lr + .align 2, 0 + + thumb_func_start sub_0804E4E0 +sub_0804E4E0: @ 0x0804E4E0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E4E4 +sub_0804E4E4: @ 0x0804E4E4 + push {lr} + ldr r0, _0804E518 @ =gUnk_080F2174 + bl sub_0804ADDC + movs r0, #0x3a + bl sub_0807CA84 + cmp r0, #0 + bne _0804E506 + movs r0, #0x2a + bl GetProgressFlag + cmp r0, #0 + beq _0804E506 + ldr r0, _0804E51C @ =gUnk_080F2194 + bl sub_0804ADDC +_0804E506: + ldr r0, _0804E520 @ =gUnk_030010A0 + ldrb r0, [r0, #0xf] + cmp r0, #1 + bne _0804E514 + ldr r0, _0804E524 @ =gUnk_080F21B4 + bl sub_0804ADDC +_0804E514: + pop {pc} + .align 2, 0 +_0804E518: .4byte gUnk_080F2174 +_0804E51C: .4byte gUnk_080F2194 +_0804E520: .4byte gUnk_030010A0 +_0804E524: .4byte gUnk_080F21B4 + + thumb_func_start sub_0804E528 +sub_0804E528: @ 0x0804E528 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E52C +sub_0804E52C: @ 0x0804E52C + push {lr} + ldr r0, _0804E558 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #7 + bls _0804E53C + ldr r0, _0804E55C @ =gUnk_080F23BC + bl sub_0804ADDC +_0804E53C: + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804E564 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0804E564 + ldr r0, _0804E560 @ =gUnk_080F238C + bl sub_0804ADDC + b _0804E56A + .align 2, 0 +_0804E558: .4byte gUnk_02002A40 +_0804E55C: .4byte gUnk_080F23BC +_0804E560: .4byte gUnk_080F238C +_0804E564: + ldr r0, _0804E56C @ =gUnk_080F236C + bl sub_0804ADDC +_0804E56A: + pop {pc} + .align 2, 0 +_0804E56C: .4byte gUnk_080F236C + + thumb_func_start sub_0804E570 +sub_0804E570: @ 0x0804E570 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E574 +sub_0804E574: @ 0x0804E574 + push {lr} + ldr r0, _0804E588 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #9 + bhi _0804E608 + lsls r0, r0, #2 + ldr r1, _0804E58C @ =_0804E590 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0804E588: .4byte gUnk_02002A40 +_0804E58C: .4byte _0804E590 +_0804E590: @ jump table + .4byte _0804E5CC @ case 0 + .4byte _0804E608 @ case 1 + .4byte _0804E5CC @ case 2 + .4byte _0804E608 @ case 3 + .4byte _0804E5CC @ case 4 + .4byte _0804E5B8 @ case 5 + .4byte _0804E602 @ case 6 + .4byte _0804E602 @ case 7 + .4byte _0804E5FC @ case 8 + .4byte _0804E5FC @ case 9 +_0804E5B8: + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804E5F0 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + bne _0804E5D8 +_0804E5CC: + ldr r0, _0804E5D4 @ =gUnk_080F2570 + bl sub_0804ADDC + b _0804E608 + .align 2, 0 +_0804E5D4: .4byte gUnk_080F2570 +_0804E5D8: + movs r0, #0x39 + bl sub_0807CA84 + cmp r0, #0 + bne _0804E608 + ldr r0, _0804E5EC @ =gUnk_080F25C0 + bl sub_0804ADDC + b _0804E608 + .align 2, 0 +_0804E5EC: .4byte gUnk_080F25C0 +_0804E5F0: + ldr r0, _0804E5F8 @ =gUnk_080F2590 + bl sub_0804ADDC + b _0804E608 + .align 2, 0 +_0804E5F8: .4byte gUnk_080F2590 +_0804E5FC: + ldr r0, _0804E60C @ =gUnk_080F2600 + bl sub_0804ADDC +_0804E602: + ldr r0, _0804E610 @ =gUnk_080F2590 + bl sub_0804ADDC +_0804E608: + pop {pc} + .align 2, 0 +_0804E60C: .4byte gUnk_080F2600 +_0804E610: .4byte gUnk_080F2590 + + thumb_func_start sub_0804E614 +sub_0804E614: @ 0x0804E614 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E618 +sub_0804E618: @ 0x0804E618 + push {lr} + movs r0, #0x21 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804E67A + movs r0, #0x42 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E65C + movs r0, #0x43 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E650 + ldr r0, _0804E648 @ =gUnk_080F2718 + bl sub_0804ADDC + ldr r0, _0804E64C @ =gUnk_080F2860 + bl sub_0804B1AC + b _0804E67A + .align 2, 0 +_0804E648: .4byte gUnk_080F2718 +_0804E64C: .4byte gUnk_080F2860 +_0804E650: + ldr r0, _0804E658 @ =gUnk_080F2758 + bl sub_0804ADDC + b _0804E67A + .align 2, 0 +_0804E658: .4byte gUnk_080F2758 +_0804E65C: + movs r0, #0x3f + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E674 + ldr r0, _0804E670 @ =gUnk_080F27D8 + bl sub_0804ADDC + b _0804E67A + .align 2, 0 +_0804E670: .4byte gUnk_080F27D8 +_0804E674: + ldr r0, _0804E67C @ =gUnk_080F2798 + bl sub_0804ADDC +_0804E67A: + pop {pc} + .align 2, 0 +_0804E67C: .4byte gUnk_080F2798 + + thumb_func_start sub_0804E680 +sub_0804E680: @ 0x0804E680 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E684 +sub_0804E684: @ 0x0804E684 + push {lr} + movs r0, #0x2b + bl GetProgressFlag + cmp r0, #0 + beq _0804E69C + ldr r0, _0804E698 @ =gUnk_080F28D4 + bl sub_0804ADDC + b _0804E6C4 + .align 2, 0 +_0804E698: .4byte gUnk_080F28D4 +_0804E69C: + movs r0, #0x2c + bl GetProgressFlag + cmp r0, #0 + beq _0804E6B4 + ldr r0, _0804E6B0 @ =gUnk_080F28F4 + bl sub_0804ADDC + b _0804E6C4 + .align 2, 0 +_0804E6B0: .4byte gUnk_080F28F4 +_0804E6B4: + movs r0, #0x2d + bl GetProgressFlag + cmp r0, #0 + beq _0804E6C4 + ldr r0, _0804E6C8 @ =gUnk_080F2914 + bl sub_0804ADDC +_0804E6C4: + pop {pc} + .align 2, 0 +_0804E6C8: .4byte gUnk_080F2914 + + thumb_func_start sub_0804E6CC +sub_0804E6CC: @ 0x0804E6CC + movs r0, #1 + bx lr + + thumb_func_start nullsub_377 +nullsub_377: @ 0x0804E6D0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E6D4 +sub_0804E6D4: @ 0x0804E6D4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_378 +nullsub_378: @ 0x0804E6D8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E6DC +sub_0804E6DC: @ 0x0804E6DC + movs r0, #1 + bx lr + + thumb_func_start nullsub_379 +nullsub_379: @ 0x0804E6E0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804E6E4 +sub_0804E6E4: @ 0x0804E6E4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E6E8 +sub_0804E6E8: @ 0x0804E6E8 + push {lr} + movs r0, #0x49 + bl GetProgressFlag + cmp r0, #0 + bne _0804E70A + ldr r0, _0804E71C @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + ldr r0, _0804E720 @ =0x800B0036 + bl sub_080A3268 +_0804E70A: + movs r0, #0x13 + bl GetProgressFlag + cmp r0, #0 + bne _0804E71A + ldr r0, _0804E724 @ =gUnk_080F2E2C + bl sub_0804ADDC +_0804E71A: + pop {pc} + .align 2, 0 +_0804E71C: .4byte gUnk_02033A90 +_0804E720: .4byte 0x800B0036 +_0804E724: .4byte gUnk_080F2E2C + + thumb_func_start sub_0804E728 +sub_0804E728: @ 0x0804E728 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E72C +sub_0804E72C: @ 0x0804E72C + push {lr} + movs r0, #0x49 + bl GetProgressFlag + cmp r0, #0 + bne _0804E74E + ldr r0, _0804E760 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + ldr r0, _0804E764 @ =0x800B0036 + bl sub_080A3268 +_0804E74E: + movs r0, #0x13 + bl GetProgressFlag + cmp r0, #0 + bne _0804E76C + ldr r0, _0804E768 @ =gUnk_080F2E94 + bl sub_0804ADDC + b _0804E772 + .align 2, 0 +_0804E760: .4byte gUnk_02033A90 +_0804E764: .4byte 0x800B0036 +_0804E768: .4byte gUnk_080F2E94 +_0804E76C: + ldr r0, _0804E774 @ =gUnk_080F2EC4 + bl sub_0804ADDC +_0804E772: + pop {pc} + .align 2, 0 +_0804E774: .4byte gUnk_080F2EC4 + + thumb_func_start sub_0804E778 +sub_0804E778: @ 0x0804E778 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E77C +sub_0804E77C: @ 0x0804E77C + push {lr} + movs r0, #0x69 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804E792 + movs r0, #0x3c + bl sub_0807CA84 + cmp r0, #1 + bls _0804E798 +_0804E792: + ldr r0, _0804E79C @ =gUnk_080F2FD4 + bl sub_0804ADDC +_0804E798: + pop {pc} + .align 2, 0 +_0804E79C: .4byte gUnk_080F2FD4 + + thumb_func_start sub_0804E7A0 +sub_0804E7A0: @ 0x0804E7A0 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E7A4 +sub_0804E7A4: @ 0x0804E7A4 + push {lr} + movs r0, #0x36 + bl sub_0807CA84 + cmp r0, #1 + bne _0804E7CC + movs r0, #0x5b + bl GetProgressFlag + cmp r0, #0 + bne _0804E7CC + ldr r0, _0804E7D0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0804E7CC + ldr r0, _0804E7D4 @ =gUnk_080F30CC + bl sub_0804ADDC +_0804E7CC: + pop {pc} + .align 2, 0 +_0804E7D0: .4byte gUnk_03003F80 +_0804E7D4: .4byte gUnk_080F30CC + + thumb_func_start sub_0804E7D8 +sub_0804E7D8: @ 0x0804E7D8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E7DC +sub_0804E7DC: @ 0x0804E7DC + push {r4, lr} + movs r0, #0x13 + bl GetProgressFlag + cmp r0, #0 + bne _0804E818 + movs r0, #0x46 + bl sub_0807CBD0 + adds r4, r0, #0 + cmp r4, #0 + bne _0804E818 + movs r0, #5 + movs r1, #1 + movs r2, #4 + movs r3, #4 + bl sub_080A71C4 + ldr r0, _0804E84C @ =gUnk_02000070 + strb r4, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + ldr r2, _0804E850 @ =gUnk_08009B30 + movs r0, #0 + movs r1, #6 + bl sub_080751E8 +_0804E818: + movs r0, #0x49 + bl GetProgressFlag + cmp r0, #0 + bne _0804E838 + ldr r0, _0804E854 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + ldr r0, _0804E858 @ =0x800B0036 + bl sub_080A3268 +_0804E838: + ldr r0, _0804E85C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0804E84A + ldr r0, _0804E860 @ =gUnk_080F31D8 + bl sub_0804ADDC +_0804E84A: + pop {r4, pc} + .align 2, 0 +_0804E84C: .4byte gUnk_02000070 +_0804E850: .4byte gUnk_08009B30 +_0804E854: .4byte gUnk_02033A90 +_0804E858: .4byte 0x800B0036 +_0804E85C: .4byte gUnk_03003F80 +_0804E860: .4byte gUnk_080F31D8 + + thumb_func_start sub_0804E864 +sub_0804E864: @ 0x0804E864 + push {lr} + ldr r2, _0804E888 @ =gLinkEntity + ldr r1, _0804E88C @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0x90 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x38 + strh r0, [r2, #0x32] + ldr r2, _0804E890 @ =gUnk_08009E58 + movs r0, #1 + movs r1, #6 + bl sub_080751E8 + movs r0, #0xa0 + bl sub_080526A0 + pop {pc} + .align 2, 0 +_0804E888: .4byte gLinkEntity +_0804E88C: .4byte gUnk_03000BF0 +_0804E890: .4byte gUnk_08009E58 + + thumb_func_start sub_0804E894 +sub_0804E894: @ 0x0804E894 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E898 +sub_0804E898: @ 0x0804E898 + push {r4, lr} + movs r0, #0x12 + bl sub_0807CA84 + cmp r0, #0 + beq _0804E8D8 + ldr r0, _0804E8DC @ =gUnk_080F3260 + bl sub_0804ADDC + ldr r4, _0804E8E0 @ =0x00004072 + ldr r1, _0804E8E4 @ =0x00000202 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804E8E8 @ =0x00000242 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r1, #0x81 + lsls r1, r1, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r1, #0x91 + lsls r1, r1, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 +_0804E8D8: + pop {r4, pc} + .align 2, 0 +_0804E8DC: .4byte gUnk_080F3260 +_0804E8E0: .4byte 0x00004072 +_0804E8E4: .4byte 0x00000202 +_0804E8E8: .4byte 0x00000242 + + thumb_func_start sub_0804E8EC +sub_0804E8EC: @ 0x0804E8EC + movs r0, #1 + bx lr + + thumb_func_start sub_0804E8F0 +sub_0804E8F0: @ 0x0804E8F0 + push {lr} + bl sub_08054564 + pop {pc} + + thumb_func_start sub_0804E8F8 +sub_0804E8F8: @ 0x0804E8F8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E8FC +sub_0804E8FC: @ 0x0804E8FC + push {lr} + movs r0, #0x1d + bl GetProgressFlag + cmp r0, #0 + bne _0804E914 + ldr r0, _0804E910 @ =gUnk_080F36FC + bl sub_0804ADDC + b _0804E922 + .align 2, 0 +_0804E910: .4byte gUnk_080F36FC +_0804E914: + ldr r0, _0804E924 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bhi _0804E922 + ldr r0, _0804E928 @ =gUnk_080F3604 + bl sub_0804ADDC +_0804E922: + pop {pc} + .align 2, 0 +_0804E924: .4byte gUnk_02002A40 +_0804E928: .4byte gUnk_080F3604 + + thumb_func_start sub_0804E92C +sub_0804E92C: @ 0x0804E92C + movs r0, #1 + bx lr + + thumb_func_start sub_0804E930 +sub_0804E930: @ 0x0804E930 + push {lr} + movs r0, #0x1d + bl GetProgressFlag + cmp r0, #0 + beq _0804E942 + ldr r0, _0804E944 @ =gUnk_080F37D0 + bl sub_0804ADDC +_0804E942: + pop {pc} + .align 2, 0 +_0804E944: .4byte gUnk_080F37D0 + + thumb_func_start sub_0804E948 +sub_0804E948: @ 0x0804E948 + movs r0, #1 + bx lr + + thumb_func_start nullsub_380 +nullsub_380: @ 0x0804E94C + bx lr + .align 2, 0 + + thumb_func_start sub_0804E950 +sub_0804E950: @ 0x0804E950 + movs r0, #1 + bx lr + + thumb_func_start sub_0804E954 +sub_0804E954: @ 0x0804E954 + push {lr} + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0804E97A + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0804E97A + movs r0, #0x3b + bl sub_0807CA84 + cmp r0, #0 + bne _0804E97A + ldr r0, _0804E988 @ =gUnk_080F3A48 + bl sub_0804ADDC +_0804E97A: + ldr r0, _0804E98C @ =gUnk_030010A0 + ldr r1, _0804E990 @ =0x00000F28 + strh r1, [r0, #0x20] + ldr r1, _0804E994 @ =0x0000082D + strh r1, [r0, #0x22] + pop {pc} + .align 2, 0 +_0804E988: .4byte gUnk_080F3A48 +_0804E98C: .4byte gUnk_030010A0 +_0804E990: .4byte 0x00000F28 +_0804E994: .4byte 0x0000082D + + thumb_func_start sub_0804E998 +sub_0804E998: @ 0x0804E998 + push {lr} + movs r0, #5 + bl GetProgressFlag + cmp r0, #0 + beq _0804E9BC + movs r0, #4 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E9BC + ldr r1, _0804E9B4 @ =gUnk_02034350 + ldr r0, _0804E9B8 @ =gUnk_080F3EA4 + b _0804E9C0 + .align 2, 0 +_0804E9B4: .4byte gUnk_02034350 +_0804E9B8: .4byte gUnk_080F3EA4 +_0804E9BC: + ldr r1, _0804E9C8 @ =gUnk_02034350 + ldr r0, _0804E9CC @ =gUnk_080F3D44 +_0804E9C0: + str r0, [r1, #0x74] + movs r0, #1 + pop {pc} + .align 2, 0 +_0804E9C8: .4byte gUnk_02034350 +_0804E9CC: .4byte gUnk_080F3D44 + + thumb_func_start sub_0804E9D0 +sub_0804E9D0: @ 0x0804E9D0 + push {r4, lr} + movs r0, #5 + bl GetProgressFlag + cmp r0, #0 + beq _0804E9EC + movs r0, #4 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804E9EC + ldr r0, _0804EAC4 @ =gUnk_080F3C64 + bl sub_0804ADDC +_0804E9EC: + movs r0, #0x12 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804E9FC + ldr r0, _0804EAC8 @ =gUnk_080F3C94 + bl sub_0804ADDC +_0804E9FC: + ldr r0, _0804EACC @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bls _0804EA14 + movs r0, #0x5c + bl GetProgressFlag + cmp r0, #0 + beq _0804EA14 + ldr r0, _0804EAD0 @ =gUnk_080F3C44 + bl sub_0804ADDC +_0804EA14: + ldr r4, _0804EAD4 @ =0x00004091 + movs r1, #0xb2 + lsls r1, r1, #3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAD8 @ =0x00000591 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EADC @ =0x00000592 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAE0 @ =0x00000593 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAE4 @ =0x00000594 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + movs r1, #0xba + lsls r1, r1, #3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + movs r1, #0xc2 + lsls r1, r1, #3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + movs r1, #0xca + lsls r1, r1, #3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAE8 @ =0x000005D4 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAEC @ =0x00000614 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAF0 @ =0x00000654 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + movs r1, #0xd2 + lsls r1, r1, #3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAF4 @ =0x00000691 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAF8 @ =0x00000692 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EAFC @ =0x00000693 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0804EB00 @ =0x00000694 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + pop {r4, pc} + .align 2, 0 +_0804EAC4: .4byte gUnk_080F3C64 +_0804EAC8: .4byte gUnk_080F3C94 +_0804EACC: .4byte gUnk_02002A40 +_0804EAD0: .4byte gUnk_080F3C44 +_0804EAD4: .4byte 0x00004091 +_0804EAD8: .4byte 0x00000591 +_0804EADC: .4byte 0x00000592 +_0804EAE0: .4byte 0x00000593 +_0804EAE4: .4byte 0x00000594 +_0804EAE8: .4byte 0x000005D4 +_0804EAEC: .4byte 0x00000614 +_0804EAF0: .4byte 0x00000654 +_0804EAF4: .4byte 0x00000691 +_0804EAF8: .4byte 0x00000692 +_0804EAFC: .4byte 0x00000693 +_0804EB00: .4byte 0x00000694 + + thumb_func_start sub_0804EB04 +sub_0804EB04: @ 0x0804EB04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_381 +nullsub_381: @ 0x0804EB08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB0C +sub_0804EB0C: @ 0x0804EB0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_382 +nullsub_382: @ 0x0804EB10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB14 +sub_0804EB14: @ 0x0804EB14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_383 +nullsub_383: @ 0x0804EB18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB1C +sub_0804EB1C: @ 0x0804EB1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_384 +nullsub_384: @ 0x0804EB20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB24 +sub_0804EB24: @ 0x0804EB24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_385 +nullsub_385: @ 0x0804EB28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB2C +sub_0804EB2C: @ 0x0804EB2C + movs r0, #1 + bx lr + + thumb_func_start nullsub_386 +nullsub_386: @ 0x0804EB30 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB34 +sub_0804EB34: @ 0x0804EB34 + movs r0, #1 + bx lr + + thumb_func_start nullsub_387 +nullsub_387: @ 0x0804EB38 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB3C +sub_0804EB3C: @ 0x0804EB3C + movs r0, #1 + bx lr + + thumb_func_start nullsub_388 +nullsub_388: @ 0x0804EB40 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB44 +sub_0804EB44: @ 0x0804EB44 + movs r0, #1 + bx lr + + thumb_func_start nullsub_389 +nullsub_389: @ 0x0804EB48 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB4C +sub_0804EB4C: @ 0x0804EB4C + movs r0, #1 + bx lr + + thumb_func_start nullsub_390 +nullsub_390: @ 0x0804EB50 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB54 +sub_0804EB54: @ 0x0804EB54 + ldr r2, _0804EB64 @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x48 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + bx lr + .align 2, 0 +_0804EB64: .4byte gUnk_02033A90 + + thumb_func_start nullsub_391 +nullsub_391: @ 0x0804EB68 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB6C +sub_0804EB6C: @ 0x0804EB6C + ldr r2, _0804EB7C @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x48 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + bx lr + .align 2, 0 +_0804EB7C: .4byte gUnk_02033A90 + + thumb_func_start nullsub_392 +nullsub_392: @ 0x0804EB80 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB84 +sub_0804EB84: @ 0x0804EB84 + ldr r2, _0804EB94 @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x48 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + bx lr + .align 2, 0 +_0804EB94: .4byte gUnk_02033A90 + + thumb_func_start nullsub_393 +nullsub_393: @ 0x0804EB98 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EB9C +sub_0804EB9C: @ 0x0804EB9C + push {lr} + movs r0, #0x58 + movs r1, #5 + bl sub_0801DD58 + ldr r2, _0804EBB4 @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x48 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + pop {pc} + .align 2, 0 +_0804EBB4: .4byte gUnk_02033A90 + + thumb_func_start nullsub_394 +nullsub_394: @ 0x0804EBB8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EBBC +sub_0804EBBC: @ 0x0804EBBC + push {lr} + movs r0, #0x58 + movs r1, #6 + bl sub_0801DD58 + ldr r2, _0804EBD4 @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x48 + orrs r0, r1 + strb r0, [r2] + movs r0, #1 + pop {pc} + .align 2, 0 +_0804EBD4: .4byte gUnk_02033A90 + + thumb_func_start nullsub_395 +nullsub_395: @ 0x0804EBD8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EBDC +sub_0804EBDC: @ 0x0804EBDC + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804EBF2 + ldr r0, _0804EBF8 @ =gUnk_02034350 + ldr r1, _0804EBFC @ =gUnk_080F4EB0 + str r1, [r0, #0x6c] + movs r1, #0 + str r1, [r0, #0x74] +_0804EBF2: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804EBF8: .4byte gUnk_02034350 +_0804EBFC: .4byte gUnk_080F4EB0 + + thumb_func_start sub_0804EC00 +sub_0804EC00: @ 0x0804EC00 + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804EC1A + ldr r0, _0804EC48 @ =gUnk_02033A90 + ldr r2, _0804EC4C @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] +_0804EC1A: + movs r0, #0x14 + bl GetProgressFlag + cmp r0, #0 + bne _0804EC2A + ldr r0, _0804EC50 @ =gUnk_080F4D50 + bl sub_0804ADDC +_0804EC2A: + movs r0, #0x3e + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EC64 + movs r0, #0x3b + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EC58 + ldr r0, _0804EC54 @ =gUnk_080F4DB0 + bl sub_0804ADDC + b _0804EC5E + .align 2, 0 +_0804EC48: .4byte gUnk_02033A90 +_0804EC4C: .4byte 0x00000864 +_0804EC50: .4byte gUnk_080F4D50 +_0804EC54: .4byte gUnk_080F4DB0 +_0804EC58: + ldr r0, _0804EC84 @ =gUnk_080F4DD0 + bl sub_0804ADDC +_0804EC5E: + ldr r0, _0804EC88 @ =gUnk_080F4DF0 + bl sub_0804ADDC +_0804EC64: + movs r0, #0x4e + bl sub_0801E7F4 + cmp r0, #0 + beq _0804EC74 + ldr r0, _0804EC8C @ =gUnk_080F4F10 + bl sub_0804ADDC +_0804EC74: + ldr r0, _0804EC90 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + cmp r0, #0 + blt _0804EC82 + ldr r0, _0804EC94 @ =gUnk_080F4E10 + bl sub_0804ADDC +_0804EC82: + pop {pc} + .align 2, 0 +_0804EC84: .4byte gUnk_080F4DD0 +_0804EC88: .4byte gUnk_080F4DF0 +_0804EC8C: .4byte gUnk_080F4F10 +_0804EC90: .4byte gUnk_02002A40 +_0804EC94: .4byte gUnk_080F4E10 + + thumb_func_start sub_0804EC98 +sub_0804EC98: @ 0x0804EC98 + push {lr} + ldr r0, _0804ECAC @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + cmp r0, #0 + blt _0804ECA8 + ldr r0, _0804ECB0 @ =gUnk_080F4E10 + bl sub_0804ADDC +_0804ECA8: + pop {pc} + .align 2, 0 +_0804ECAC: .4byte gUnk_02002A40 +_0804ECB0: .4byte gUnk_080F4E10 + + thumb_func_start sub_0804ECB4 +sub_0804ECB4: @ 0x0804ECB4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_396 +nullsub_396: @ 0x0804ECB8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804ECBC +sub_0804ECBC: @ 0x0804ECBC + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804ECDA + ldr r1, _0804ECE0 @ =gUnk_02034350 + ldr r0, _0804ECE4 @ =gUnk_080F5348 + str r0, [r1, #0x6c] + adds r2, r1, #0 + adds r2, #0x88 + ldr r0, _0804ECE8 @ =sub_0804ED18 + str r0, [r2] + movs r0, #0 + str r0, [r1, #0x74] +_0804ECDA: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804ECE0: .4byte gUnk_02034350 +_0804ECE4: .4byte gUnk_080F5348 +_0804ECE8: .4byte sub_0804ED18 + + thumb_func_start sub_0804ECEC +sub_0804ECEC: @ 0x0804ECEC + push {lr} + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _0804ED0E + ldr r0, _0804ED10 @ =gUnk_080F5328 + bl sub_0804ADDC + movs r0, #0x14 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804ED0E + ldr r0, _0804ED14 @ =gUnk_080F5308 + bl sub_0804ADDC +_0804ED0E: + pop {pc} + .align 2, 0 +_0804ED10: .4byte gUnk_080F5328 +_0804ED14: .4byte gUnk_080F5308 + + thumb_func_start sub_0804ED18 +sub_0804ED18: @ 0x0804ED18 + ldr r0, _0804ED28 @ =gUnk_02033A90 + ldr r2, _0804ED2C @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + bx lr + .align 2, 0 +_0804ED28: .4byte gUnk_02033A90 +_0804ED2C: .4byte 0x00000864 + + thumb_func_start sub_0804ED30 +sub_0804ED30: @ 0x0804ED30 + movs r0, #1 + bx lr + + thumb_func_start sub_0804ED34 +sub_0804ED34: @ 0x0804ED34 + push {lr} + bl sub_080AF2E4 + movs r0, #0x5d + bl GetProgressFlag + cmp r0, #0 + beq _0804ED4E + ldr r0, _0804ED50 @ =gUnk_02033A90 + ldr r1, _0804ED54 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x31 + str r1, [r0] +_0804ED4E: + pop {pc} + .align 2, 0 +_0804ED50: .4byte gUnk_02033A90 +_0804ED54: .4byte 0x00000864 + + thumb_func_start sub_0804ED58 +sub_0804ED58: @ 0x0804ED58 + movs r0, #1 + bx lr + + thumb_func_start sub_0804ED5C +sub_0804ED5C: @ 0x0804ED5C + push {lr} + movs r0, #0x79 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804ED6E + ldr r0, _0804EDA8 @ =gUnk_080F54E8 + bl sub_0804ADDC +_0804ED6E: + movs r0, #0x7a + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EDB0 + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _0804EE16 + movs r0, #3 + bl sub_0807CA84 + cmp r0, #0 + bne _0804EE16 + movs r0, #0x40 + bl sub_0807CA84 + cmp r0, #0 + beq _0804EE16 + movs r0, #0x41 + bl sub_0807CA84 + cmp r0, #0 + beq _0804EE16 + ldr r0, _0804EDAC @ =gUnk_080F5508 + bl sub_0804ADDC + b _0804EE16 + .align 2, 0 +_0804EDA8: .4byte gUnk_080F54E8 +_0804EDAC: .4byte gUnk_080F5508 +_0804EDB0: + movs r0, #0x7b + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EDE4 + movs r0, #3 + bl sub_0807CA84 + cmp r0, #0 + beq _0804EE16 + movs r0, #4 + bl sub_0807CA84 + cmp r0, #0 + bne _0804EE16 + movs r0, #0x42 + bl sub_0807CA84 + cmp r0, #0 + beq _0804EE16 + ldr r0, _0804EDE0 @ =gUnk_080F5558 + bl sub_0804ADDC + b _0804EE16 + .align 2, 0 +_0804EDE0: .4byte gUnk_080F5558 +_0804EDE4: + movs r0, #0x7c + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EE10 + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + bne _0804EE16 + movs r0, #0x43 + bl sub_0807CA84 + cmp r0, #0 + beq _0804EE16 + ldr r0, _0804EE0C @ =gUnk_080F5598 + bl sub_0804ADDC + b _0804EE16 + .align 2, 0 +_0804EE0C: .4byte gUnk_080F5598 +_0804EE10: + ldr r0, _0804EE5C @ =gUnk_080F55D8 + bl sub_0804ADDC +_0804EE16: + movs r0, #0x7a + bl sub_0807CBD0 + cmp r0, #0 + beq _0804EE26 + ldr r0, _0804EE60 @ =gUnk_080F5528 + bl sub_0804ADDC +_0804EE26: + movs r0, #0x7b + bl sub_0807CBD0 + cmp r0, #0 + beq _0804EE36 + ldr r0, _0804EE64 @ =gUnk_080F5578 + bl sub_0804ADDC +_0804EE36: + movs r0, #0x7c + bl sub_0807CBD0 + cmp r0, #0 + beq _0804EE46 + ldr r0, _0804EE68 @ =gUnk_080F55B8 + bl sub_0804ADDC +_0804EE46: + movs r0, #0x5d + bl GetProgressFlag + cmp r0, #0 + beq _0804EE5A + ldr r0, _0804EE6C @ =gUnk_02033A90 + ldr r1, _0804EE70 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x31 + str r1, [r0] +_0804EE5A: + pop {pc} + .align 2, 0 +_0804EE5C: .4byte gUnk_080F55D8 +_0804EE60: .4byte gUnk_080F5528 +_0804EE64: .4byte gUnk_080F5578 +_0804EE68: .4byte gUnk_080F55B8 +_0804EE6C: .4byte gUnk_02033A90 +_0804EE70: .4byte 0x00000864 + + thumb_func_start sub_0804EE74 +sub_0804EE74: @ 0x0804EE74 + movs r0, #1 + bx lr + + thumb_func_start sub_0804EE78 +sub_0804EE78: @ 0x0804EE78 + push {lr} + movs r0, #0x78 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EE94 + movs r0, #0x7c + bl sub_0807CBD0 + cmp r0, #0 + beq _0804EE94 + ldr r0, _0804EEAC @ =gUnk_080F5660 + bl sub_0804ADDC +_0804EE94: + movs r0, #0x5d + bl GetProgressFlag + cmp r0, #0 + beq _0804EEA8 + ldr r0, _0804EEB0 @ =gUnk_02033A90 + ldr r1, _0804EEB4 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x31 + str r1, [r0] +_0804EEA8: + pop {pc} + .align 2, 0 +_0804EEAC: .4byte gUnk_080F5660 +_0804EEB0: .4byte gUnk_02033A90 +_0804EEB4: .4byte 0x00000864 + + thumb_func_start sub_0804EEB8 +sub_0804EEB8: @ 0x0804EEB8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804EEBC +sub_0804EEBC: @ 0x0804EEBC + push {lr} + ldr r0, _0804EEF4 @ =gUnk_080F5758 + bl sub_0804ADDC + movs r0, #0x36 + bl sub_0807CA84 + cmp r0, #0 + bne _0804EEE2 + movs r0, #0x80 + lsls r0, r0, #2 + movs r1, #0x8f + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _0804EEE2 + ldr r0, _0804EEF8 @ =gUnk_080F57E8 + bl sub_0804ADDC +_0804EEE2: + movs r0, #0x55 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EF00 + ldr r0, _0804EEFC @ =gUnk_080F57A8 + bl sub_0804ADDC + b _0804EF54 + .align 2, 0 +_0804EEF4: .4byte gUnk_080F5758 +_0804EEF8: .4byte gUnk_080F57E8 +_0804EEFC: .4byte gUnk_080F57A8 +_0804EF00: + ldr r1, _0804EF34 @ =gUnk_080FD5A0 + ldr r0, _0804EF38 @ =gUnk_02002A40 + adds r0, #0xae + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x1d + bls _0804EF16 + ldr r0, _0804EF3C @ =gUnk_080F57C8 + bl sub_0804ADDC +_0804EF16: + movs r0, #0xb + bl sub_0807CA84 + cmp r0, #0 + bne _0804EF44 + movs r0, #0xc + bl sub_0807CA84 + cmp r0, #0 + bne _0804EF44 + ldr r0, _0804EF40 @ =gUnk_080F5888 + bl sub_0804ADDC + b _0804EF54 + .align 2, 0 +_0804EF34: .4byte gUnk_080FD5A0 +_0804EF38: .4byte gUnk_02002A40 +_0804EF3C: .4byte gUnk_080F57C8 +_0804EF40: .4byte gUnk_080F5888 +_0804EF44: + movs r0, #0xcd + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EF54 + ldr r0, _0804EF80 @ =gUnk_080F58A8 + bl sub_0804ADDC +_0804EF54: + movs r0, #9 + bl sub_0807CA84 + cmp r0, #0 + bne _0804EF68 + movs r0, #4 + bl GetProgressFlag + cmp r0, #0 + beq _0804EF92 +_0804EF68: + ldr r0, _0804EF84 @ =gUnk_080F5868 + bl sub_0804ADDC + movs r0, #0x56 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804EF8C + ldr r0, _0804EF88 @ =gUnk_080F5828 + bl sub_0804ADDC + b _0804EF92 + .align 2, 0 +_0804EF80: .4byte gUnk_080F58A8 +_0804EF84: .4byte gUnk_080F5868 +_0804EF88: .4byte gUnk_080F5828 +_0804EF8C: + ldr r0, _0804EFA4 @ =gUnk_080F5848 + bl sub_0804ADDC +_0804EF92: + ldr r0, _0804EFA8 @ =gUnk_02002A40 + adds r0, #0xbb + ldrb r0, [r0] + cmp r0, #0 + bne _0804EFA2 + ldr r0, _0804EFAC @ =gUnk_080F5788 + bl sub_0804ADDC +_0804EFA2: + pop {pc} + .align 2, 0 +_0804EFA4: .4byte gUnk_080F5848 +_0804EFA8: .4byte gUnk_02002A40 +_0804EFAC: .4byte gUnk_080F5788 + + thumb_func_start sub_0804EFB0 +sub_0804EFB0: @ 0x0804EFB0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_397 +nullsub_397: @ 0x0804EFB4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EFB8 +sub_0804EFB8: @ 0x0804EFB8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804EFBC +sub_0804EFBC: @ 0x0804EFBC + push {lr} + movs r0, #0x38 + bl sub_0807CA84 + cmp r0, #1 + bne _0804EFCE + ldr r0, _0804EFD0 @ =gUnk_080F5B3C + bl sub_0804ADDC +_0804EFCE: + pop {pc} + .align 2, 0 +_0804EFD0: .4byte gUnk_080F5B3C + + thumb_func_start sub_0804EFD4 +sub_0804EFD4: @ 0x0804EFD4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_398 +nullsub_398: @ 0x0804EFD8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804EFDC +sub_0804EFDC: @ 0x0804EFDC + push {lr} + movs r0, #0x50 + bl GetProgressFlag + cmp r0, #0 + beq _0804EFEE + ldr r1, _0804EFF4 @ =gUnk_030010A0 + movs r0, #5 + strb r0, [r1, #0xf] +_0804EFEE: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804EFF4: .4byte gUnk_030010A0 + + thumb_func_start sub_0804EFF8 +sub_0804EFF8: @ 0x0804EFF8 + push {lr} + ldr r0, _0804F020 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #7 + bls _0804F008 + ldr r0, _0804F024 @ =gUnk_080F5DD0 + bl sub_0804ADDC +_0804F008: + movs r0, #0x50 + bl GetProgressFlag + cmp r0, #0 + beq _0804F01C + ldr r2, _0804F028 @ =gUnk_08011C50 + movs r0, #1 + movs r1, #2 + bl sub_080751E8 +_0804F01C: + pop {pc} + .align 2, 0 +_0804F020: .4byte gUnk_02002A40 +_0804F024: .4byte gUnk_080F5DD0 +_0804F028: .4byte gUnk_08011C50 + + thumb_func_start sub_0804F02C +sub_0804F02C: @ 0x0804F02C + movs r0, #1 + bx lr + + thumb_func_start sub_0804F030 +sub_0804F030: @ 0x0804F030 + push {lr} + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #0xd1 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804F046 + ldr r0, _0804F048 @ =gUnk_080F5E68 + bl sub_0804ADDC +_0804F046: + pop {pc} + .align 2, 0 +_0804F048: .4byte gUnk_080F5E68 + + thumb_func_start sub_0804F04C +sub_0804F04C: @ 0x0804F04C + movs r0, #1 + bx lr + + thumb_func_start sub_0804F050 +sub_0804F050: @ 0x0804F050 + push {lr} + ldr r0, _0804F074 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #4 + bls _0804F060 + ldr r0, _0804F078 @ =gUnk_080F5F38 + bl sub_0804ADDC +_0804F060: + movs r0, #0x92 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804F080 + ldr r0, _0804F07C @ =gUnk_080F5F58 + bl sub_0804ADDC + b _0804F086 + .align 2, 0 +_0804F074: .4byte gUnk_02002A40 +_0804F078: .4byte gUnk_080F5F38 +_0804F07C: .4byte gUnk_080F5F58 +_0804F080: + ldr r0, _0804F088 @ =gUnk_080F5F78 + bl sub_0804ADDC +_0804F086: + pop {pc} + .align 2, 0 +_0804F088: .4byte gUnk_080F5F78 + + thumb_func_start sub_0804F08C +sub_0804F08C: @ 0x0804F08C + movs r0, #1 + bx lr + + thumb_func_start nullsub_399 +nullsub_399: @ 0x0804F090 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F094 +sub_0804F094: @ 0x0804F094 + movs r0, #1 + bx lr + + thumb_func_start nullsub_400 +nullsub_400: @ 0x0804F098 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F09C +sub_0804F09C: @ 0x0804F09C + push {lr} + movs r0, #0x24 + bl GetProgressFlag + cmp r0, #0 + beq _0804F0BC + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #0xdc + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _0804F0BC + movs r0, #0x58 + bl sub_0807CD04 +_0804F0BC: + movs r0, #1 + pop {pc} + + thumb_func_start sub_0804F0C0 +sub_0804F0C0: @ 0x0804F0C0 + push {r4, lr} + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #0xdc + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _0804F0D6 + movs r0, #0x90 + bl sub_0807CCB4 +_0804F0D6: + movs r0, #0xf + bl sub_0801E7F4 + cmp r0, #0 + beq _0804F0E6 + ldr r0, _0804F118 @ =gUnk_080F61BC + bl sub_0804ADDC +_0804F0E6: + movs r0, #0x58 + bl GetProgressFlag + cmp r0, #0 + bne _0804F106 + ldr r4, _0804F11C @ =0x00004072 + ldr r1, _0804F120 @ =0x000004C7 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F124 @ =0x00000507 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 +_0804F106: + movs r2, #0xf4 + lsls r2, r2, #1 + movs r3, #0xac + lsls r3, r3, #1 + movs r0, #8 + movs r1, #0 + bl sub_08052CA4 + pop {r4, pc} + .align 2, 0 +_0804F118: .4byte gUnk_080F61BC +_0804F11C: .4byte 0x00004072 +_0804F120: .4byte 0x000004C7 +_0804F124: .4byte 0x00000507 + + thumb_func_start sub_0804F128 +sub_0804F128: @ 0x0804F128 + movs r0, #1 + bx lr + + thumb_func_start sub_0804F12C +sub_0804F12C: @ 0x0804F12C + push {lr} + movs r0, #0x58 + bl GetProgressFlag + cmp r0, #0 + bne _0804F144 + ldr r0, _0804F140 @ =gUnk_080F62E4 + bl sub_0804ADDC + b _0804F154 + .align 2, 0 +_0804F140: .4byte gUnk_080F62E4 +_0804F144: + movs r0, #0x63 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804F154 + ldr r0, _0804F158 @ =gUnk_080F6324 + bl sub_0804ADDC +_0804F154: + pop {pc} + .align 2, 0 +_0804F158: .4byte gUnk_080F6324 + + thumb_func_start sub_0804F15C +sub_0804F15C: @ 0x0804F15C + movs r0, #1 + bx lr + + thumb_func_start nullsub_401 +nullsub_401: @ 0x0804F160 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F164 +sub_0804F164: @ 0x0804F164 + movs r0, #1 + bx lr + + thumb_func_start sub_0804F168 +sub_0804F168: @ 0x0804F168 + push {lr} + movs r0, #0xb1 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804F180 + ldr r0, _0804F17C @ =gUnk_080F6564 + bl sub_0804ADDC + b _0804F186 + .align 2, 0 +_0804F17C: .4byte gUnk_080F6564 +_0804F180: + ldr r0, _0804F188 @ =gUnk_080F6584 + bl sub_0804ADDC +_0804F186: + pop {pc} + .align 2, 0 +_0804F188: .4byte gUnk_080F6584 + + thumb_func_start sub_0804F18C +sub_0804F18C: @ 0x0804F18C + movs r0, #1 + bx lr + + thumb_func_start sub_0804F190 +sub_0804F190: @ 0x0804F190 + push {lr} + movs r0, #5 + bl sub_0805B4D0 + movs r0, #6 + bl GetProgressFlag + cmp r0, #0 + beq _0804F1B6 + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #5 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804F1B6 + ldr r0, _0804F1D4 @ =gUnk_080F66AC + bl sub_0804ADDC +_0804F1B6: + movs r2, #0xf4 + lsls r2, r2, #1 + movs r3, #0xac + lsls r3, r3, #1 + movs r0, #8 + movs r1, #0 + bl sub_08052CA4 + ldr r2, _0804F1D8 @ =gUnk_02033A90 + ldrb r1, [r2] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2] + pop {pc} + .align 2, 0 +_0804F1D4: .4byte gUnk_080F66AC +_0804F1D8: .4byte gUnk_02033A90 + + thumb_func_start sub_0804F1DC +sub_0804F1DC: @ 0x0804F1DC + movs r0, #1 + bx lr + + thumb_func_start nullsub_402 +nullsub_402: @ 0x0804F1E0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F1E4 +sub_0804F1E4: @ 0x0804F1E4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_403 +nullsub_403: @ 0x0804F1E8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F1EC +sub_0804F1EC: @ 0x0804F1EC + movs r0, #1 + bx lr + + thumb_func_start nullsub_404 +nullsub_404: @ 0x0804F1F0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F1F4 +sub_0804F1F4: @ 0x0804F1F4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_405 +nullsub_405: @ 0x0804F1F8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F1FC +sub_0804F1FC: @ 0x0804F1FC + movs r0, #1 + bx lr + + thumb_func_start nullsub_406 +nullsub_406: @ 0x0804F200 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F204 +sub_0804F204: @ 0x0804F204 + movs r0, #1 + bx lr + + thumb_func_start nullsub_407 +nullsub_407: @ 0x0804F208 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F20C +sub_0804F20C: @ 0x0804F20C + movs r0, #1 + bx lr + + thumb_func_start nullsub_408 +nullsub_408: @ 0x0804F210 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F214 +sub_0804F214: @ 0x0804F214 + movs r0, #1 + bx lr + + thumb_func_start nullsub_409 +nullsub_409: @ 0x0804F218 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F21C +sub_0804F21C: @ 0x0804F21C + movs r0, #1 + bx lr + + thumb_func_start nullsub_410 +nullsub_410: @ 0x0804F220 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F224 +sub_0804F224: @ 0x0804F224 + movs r0, #1 + bx lr + + thumb_func_start nullsub_411 +nullsub_411: @ 0x0804F228 + bx lr + .align 2, 0 + + thumb_func_start sub_0804F22C +sub_0804F22C: @ 0x0804F22C + movs r0, #1 + bx lr + + thumb_func_start sub_0804F230 +sub_0804F230: @ 0x0804F230 + push {lr} + movs r0, #0 + bl sub_0805ADD8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804F23C +sub_0804F23C: @ 0x0804F23C + push {lr} + movs r0, #0x6d + bl sub_0807CBD0 + cmp r0, #0 + bne _0804F252 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #7 + bl sub_08050054 +_0804F252: + movs r0, #0x49 + bl sub_0807CD04 + movs r0, #1 + pop {pc} + + thumb_func_start sub_0804F25C +sub_0804F25C: @ 0x0804F25C + push {r4, lr} + movs r0, #0 + bl sub_0805ADD8 + movs r0, #0x6d + bl sub_0807CBD0 + cmp r0, #0 + bne _0804F27A + ldr r0, _0804F2B0 @ =gUnk_080F70A8 + bl sub_0804ADDC + movs r0, #0x1c + bl sub_0807CD80 +_0804F27A: + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + bne _0804F28E + ldr r0, _0804F2B4 @ =gUnk_02033A90 + ldr r1, _0804F2B8 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x10 + str r1, [r0] +_0804F28E: + ldr r4, _0804F2BC @ =gUnk_02002A40 + ldr r0, [r4, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x17 + ands r0, r1 + cmp r0, #0 + bne _0804F2A2 + ldr r0, _0804F2C0 @ =gUnk_080F70D8 + bl sub_0804ADDC +_0804F2A2: + ldrb r0, [r4, #8] + cmp r0, #3 + bls _0804F2AE + ldr r0, _0804F2C4 @ =gUnk_080F7088 + bl sub_0804ADDC +_0804F2AE: + pop {r4, pc} + .align 2, 0 +_0804F2B0: .4byte gUnk_080F70A8 +_0804F2B4: .4byte gUnk_02033A90 +_0804F2B8: .4byte 0x00000864 +_0804F2BC: .4byte gUnk_02002A40 +_0804F2C0: .4byte gUnk_080F70D8 +_0804F2C4: .4byte gUnk_080F7088 + + thumb_func_start sub_0804F2C8 +sub_0804F2C8: @ 0x0804F2C8 + push {lr} + ldr r0, _0804F2E0 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x17 + ands r0, r1 + cmp r0, #0 + bne _0804F2DE + ldr r0, _0804F2E4 @ =gUnk_080F70D8 + bl sub_0804ADDC +_0804F2DE: + pop {pc} + .align 2, 0 +_0804F2E0: .4byte gUnk_02002A40 +_0804F2E4: .4byte gUnk_080F70D8 + + thumb_func_start sub_0804F2E8 +sub_0804F2E8: @ 0x0804F2E8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804F2EC +sub_0804F2EC: @ 0x0804F2EC + push {lr} + movs r0, #0 + bl sub_0805ADD8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804F2F8 +sub_0804F2F8: @ 0x0804F2F8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804F2FC +sub_0804F2FC: @ 0x0804F2FC + push {lr} + movs r0, #0 + bl sub_0805ADD8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804F308 +sub_0804F308: @ 0x0804F308 + push {lr} + movs r0, #0x11 + bl sub_0807CA84 + cmp r0, #0 + beq _0804F324 + movs r0, #0x12 + bl sub_0807CA84 + cmp r0, #0 + bne _0804F324 + ldr r1, _0804F328 @ =gUnk_02034350 + ldr r0, _0804F32C @ =gUnk_080F7680 + str r0, [r1, #0x74] +_0804F324: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804F328: .4byte gUnk_02034350 +_0804F32C: .4byte gUnk_080F7680 + + thumb_func_start sub_0804F330 +sub_0804F330: @ 0x0804F330 + push {r4, lr} + movs r0, #0 + bl sub_0805ADD8 + ldr r0, _0804F38C @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bls _0804F346 + ldr r0, _0804F390 @ =gUnk_080F7500 + bl sub_0804ADDC +_0804F346: + movs r0, #0x11 + bl sub_0807CA84 + cmp r0, #0 + beq _0804F38A + movs r0, #0x12 + bl sub_0807CA84 + cmp r0, #0 + bne _0804F38A + ldr r0, _0804F394 @ =gUnk_080F7550 + bl sub_0804ADDC + ldr r4, _0804F398 @ =0x00004072 + ldr r1, _0804F39C @ =0x00000311 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F3A0 @ =0x00000351 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F3A4 @ =0x000003D9 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F3A8 @ =0x00000419 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 +_0804F38A: + pop {r4, pc} + .align 2, 0 +_0804F38C: .4byte gUnk_02002A40 +_0804F390: .4byte gUnk_080F7500 +_0804F394: .4byte gUnk_080F7550 +_0804F398: .4byte 0x00004072 +_0804F39C: .4byte 0x00000311 +_0804F3A0: .4byte 0x00000351 +_0804F3A4: .4byte 0x000003D9 +_0804F3A8: .4byte 0x00000419 + + thumb_func_start sub_0804F3AC +sub_0804F3AC: @ 0x0804F3AC + movs r0, #1 + bx lr + + thumb_func_start sub_0804F3B0 +sub_0804F3B0: @ 0x0804F3B0 + push {lr} + movs r0, #0 + bl sub_0805ADD8 + movs r0, #0x80 + lsls r0, r0, #2 + movs r1, #0x8f + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _0804F3DC + movs r0, #0x1d + bl GetProgressFlag + cmp r0, #0 + bne _0804F3EC + ldr r0, _0804F3D8 @ =gUnk_080F77C0 + bl sub_0804ADDC + b _0804F3EC + .align 2, 0 +_0804F3D8: .4byte gUnk_080F77C0 +_0804F3DC: + movs r0, #0x40 + bl sub_0807CA84 + cmp r0, #0 + beq _0804F3EC + ldr r0, _0804F444 @ =gUnk_080F77F0 + bl sub_0804ADDC +_0804F3EC: + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + beq _0804F406 + movs r0, #0x40 + bl sub_0807CA84 + cmp r0, #0 + bne _0804F406 + ldr r0, _0804F448 @ =gUnk_080F7810 + bl sub_0804ADDC +_0804F406: + movs r0, #0x29 + bl sub_0801E7F4 + cmp r0, #0 + bne _0804F42A + ldr r0, _0804F44C @ =gUnk_080F7860 + bl sub_0804ADDC + ldr r0, _0804F450 @ =0x00004072 + ldr r1, _0804F454 @ =0x00000D88 + movs r2, #1 + bl sub_0800015E + ldr r0, _0804F458 @ =0x00004096 + ldr r1, _0804F45C @ =0x00000DC8 + movs r2, #1 + bl sub_0800015E +_0804F42A: + ldr r0, _0804F460 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bls _0804F442 + movs r0, #0x5c + bl GetProgressFlag + cmp r0, #0 + beq _0804F442 + ldr r0, _0804F464 @ =gUnk_080F78A0 + bl sub_0804ADDC +_0804F442: + pop {pc} + .align 2, 0 +_0804F444: .4byte gUnk_080F77F0 +_0804F448: .4byte gUnk_080F7810 +_0804F44C: .4byte gUnk_080F7860 +_0804F450: .4byte 0x00004072 +_0804F454: .4byte 0x00000D88 +_0804F458: .4byte 0x00004096 +_0804F45C: .4byte 0x00000DC8 +_0804F460: .4byte gUnk_02002A40 +_0804F464: .4byte gUnk_080F78A0 + + thumb_func_start sub_0804F468 +sub_0804F468: @ 0x0804F468 + push {lr} + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + beq _0804F48A + movs r0, #0x11 + bl sub_0807CA84 + cmp r0, #0 + bne _0804F48A + ldr r0, _0804F4D0 @ =gUnk_02034350 + ldr r1, _0804F4D4 @ =gUnk_080F7CD0 + str r1, [r0, #0x6c] + adds r0, #0x88 + ldr r1, _0804F4D8 @ =sub_0804F5E8 + str r1, [r0] +_0804F48A: + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _0804F4BA + movs r0, #3 + bl sub_0807CA84 + cmp r0, #0 + beq _0804F4BA + movs r0, #0x8c + bl sub_0807CBD0 + adds r3, r0, #0 + cmp r3, #0 + bne _0804F4BA + ldr r1, _0804F4D0 @ =gUnk_02034350 + ldr r0, _0804F4DC @ =gUnk_080F7C80 + str r0, [r1, #0x6c] + adds r2, r1, #0 + adds r2, #0x88 + ldr r0, _0804F4E0 @ =sub_0804F4E4 + str r0, [r2] + str r3, [r1, #0x74] +_0804F4BA: + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + beq _0804F4CA + movs r0, #0x64 + bl sub_0807CD80 +_0804F4CA: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804F4D0: .4byte gUnk_02034350 +_0804F4D4: .4byte gUnk_080F7CD0 +_0804F4D8: .4byte sub_0804F5E8 +_0804F4DC: .4byte gUnk_080F7C80 +_0804F4E0: .4byte sub_0804F4E4 + + thumb_func_start sub_0804F4E4 +sub_0804F4E4: @ 0x0804F4E4 + push {lr} + movs r0, #0 + bl sub_0805ADD8 + bl sub_0804F578 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804F4F4 +sub_0804F4F4: @ 0x0804F4F4 + push {r4, lr} + bl sub_0804F4E4 + movs r0, #0x8b + bl sub_0807CBD0 + cmp r0, #0 + bne _0804F540 + ldr r0, _0804F558 @ =gUnk_080F7D70 + bl sub_0804ADDC + movs r4, #0xba + lsls r4, r4, #1 + ldr r1, _0804F55C @ =0x000007A2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F560 @ =0x000007A3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F564 @ =0x000007A5 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F568 @ =0x000007A6 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F56C @ =0x000007A7 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 +_0804F540: + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + bne _0804F554 + ldr r0, _0804F570 @ =gUnk_02033A90 + ldr r1, _0804F574 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x13 + str r1, [r0] +_0804F554: + pop {r4, pc} + .align 2, 0 +_0804F558: .4byte gUnk_080F7D70 +_0804F55C: .4byte 0x000007A2 +_0804F560: .4byte 0x000007A3 +_0804F564: .4byte 0x000007A5 +_0804F568: .4byte 0x000007A6 +_0804F56C: .4byte 0x000007A7 +_0804F570: .4byte gUnk_02033A90 +_0804F574: .4byte 0x00000864 + + thumb_func_start sub_0804F578 +sub_0804F578: @ 0x0804F578 + push {lr} + movs r0, #0x8e + bl sub_0807CBD0 + cmp r0, #0 + bne _0804F590 + ldr r0, _0804F58C @ =gUnk_080F7DC0 + bl sub_0804ADDC + b _0804F5CC + .align 2, 0 +_0804F58C: .4byte gUnk_080F7DC0 +_0804F590: + ldr r1, _0804F5D0 @ =0x0000094A + movs r0, #0x37 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F5D4 @ =0x0000094B + movs r0, #0x37 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F5D8 @ =0x0000094C + movs r0, #0x37 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F5DC @ =0x0000098A + movs r0, #0x37 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F5E0 @ =0x0000098B + movs r0, #0x37 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F5E4 @ =0x0000098C + movs r0, #0x37 + movs r2, #1 + bl sub_0807B314 +_0804F5CC: + pop {pc} + .align 2, 0 +_0804F5D0: .4byte 0x0000094A +_0804F5D4: .4byte 0x0000094B +_0804F5D8: .4byte 0x0000094C +_0804F5DC: .4byte 0x0000098A +_0804F5E0: .4byte 0x0000098B +_0804F5E4: .4byte 0x0000098C + + thumb_func_start sub_0804F5E8 +sub_0804F5E8: @ 0x0804F5E8 + push {r4, lr} + bl sub_0804F4E4 + ldr r0, _0804F654 @ =0x000001D3 + ldr r1, _0804F658 @ =0x00000BDE + movs r2, #1 + bl sub_0807B314 + movs r4, #0xeb + lsls r4, r4, #1 + ldr r1, _0804F65C @ =0x00000BE2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0xea + lsls r0, r0, #1 + ldr r1, _0804F660 @ =0x00000C1F + movs r2, #1 + bl sub_0807B314 + ldr r0, _0804F664 @ =0x000001D5 + movs r1, #0xc2 + lsls r1, r1, #4 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F668 @ =0x00000C5E + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r4, _0804F66C @ =0x00004072 + ldr r1, _0804F670 @ =0x00000B9B + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F674 @ =0x00000BDB + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F678 @ =0x00000AA4 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F67C @ =0x00000AE4 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, pc} + .align 2, 0 +_0804F654: .4byte 0x000001D3 +_0804F658: .4byte 0x00000BDE +_0804F65C: .4byte 0x00000BE2 +_0804F660: .4byte 0x00000C1F +_0804F664: .4byte 0x000001D5 +_0804F668: .4byte 0x00000C5E +_0804F66C: .4byte 0x00004072 +_0804F670: .4byte 0x00000B9B +_0804F674: .4byte 0x00000BDB +_0804F678: .4byte 0x00000AA4 +_0804F67C: .4byte 0x00000AE4 + + thumb_func_start sub_0804F680 +sub_0804F680: @ 0x0804F680 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0804F6A2 + ldr r0, _0804F6A4 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + adds r1, r1, r4 + strh r1, [r2, #0x2e] + ldrh r0, [r0, #8] + adds r0, r0, r5 + strh r0, [r2, #0x32] +_0804F6A2: + pop {r4, r5, pc} + .align 2, 0 +_0804F6A4: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804F6A8 +sub_0804F6A8: @ 0x0804F6A8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xec + lsls r1, r1, #1 + movs r2, #0x84 + lsls r2, r2, #1 + bl sub_0804F680 + movs r1, #0x86 + lsls r1, r1, #2 + movs r2, #0xc4 + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + pop {r4, pc} + + thumb_func_start sub_0804F6C8 +sub_0804F6C8: @ 0x0804F6C8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xf4 + lsls r1, r1, #1 + movs r2, #0x84 + lsls r2, r2, #1 + bl sub_0804F680 + movs r1, #0x82 + lsls r1, r1, #2 + movs r2, #0xc4 + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + pop {r4, pc} + + thumb_func_start sub_0804F6E8 +sub_0804F6E8: @ 0x0804F6E8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0xfc + lsls r5, r5, #1 + movs r2, #0x84 + lsls r2, r2, #1 + adds r1, r5, #0 + bl sub_0804F680 + movs r1, #0x96 + lsls r1, r1, #2 + movs r2, #0x9c + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + movs r2, #0xc4 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0804F680 + movs r1, #0xcc + lsls r1, r1, #1 + movs r2, #0xac + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + pop {r4, r5, pc} + + thumb_func_start sub_0804F724 +sub_0804F724: @ 0x0804F724 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x82 + lsls r1, r1, #2 + movs r2, #0x84 + lsls r2, r2, #1 + bl sub_0804F680 + movs r1, #0x96 + lsls r1, r1, #2 + movs r5, #0xa4 + lsls r5, r5, #1 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_0804F680 + movs r1, #0xf4 + lsls r1, r1, #1 + movs r2, #0xc4 + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + movs r1, #0xcc + lsls r1, r1, #1 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_0804F680 + pop {r4, r5, pc} + + thumb_func_start sub_0804F760 +sub_0804F760: @ 0x0804F760 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x86 + lsls r1, r1, #2 + movs r2, #0x84 + lsls r2, r2, #1 + bl sub_0804F680 + movs r1, #0x96 + lsls r1, r1, #2 + movs r2, #0xac + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + movs r1, #0xec + lsls r1, r1, #1 + movs r2, #0xc4 + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + movs r1, #0xcc + lsls r1, r1, #1 + movs r2, #0x9c + lsls r2, r2, #1 + adds r0, r4, #0 + bl sub_0804F680 + pop {r4, pc} + + thumb_func_start sub_0804F79C +sub_0804F79C: @ 0x0804F79C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x35 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0804F7D0 + ldrb r1, [r2, #0x19] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #0x19] + ldr r1, _0804F804 @ =gUnk_03000BF0 + movs r3, #0xdc + lsls r3, r3, #1 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r3, #0xa4 + lsls r3, r3, #1 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x32] +_0804F7D0: + adds r0, r4, #0 + movs r1, #0x35 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0804F802 + ldrb r1, [r2, #0x19] + movs r0, #0x3f + ands r0, r1 + strb r0, [r2, #0x19] + ldr r1, _0804F804 @ =gUnk_03000BF0 + movs r3, #0x8e + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r3, #0xa4 + lsls r3, r3, #1 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x32] +_0804F802: + pop {r4, pc} + .align 2, 0 +_0804F804: .4byte gUnk_03000BF0 + + thumb_func_start sub_0804F808 +sub_0804F808: @ 0x0804F808 + push {r4, lr} + ldr r4, _0804F824 @ =0x000001D3 + ldr r1, _0804F828 @ =0x0000041D + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F82C @ =0x00000621 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, pc} + .align 2, 0 +_0804F824: .4byte 0x000001D3 +_0804F828: .4byte 0x0000041D +_0804F82C: .4byte 0x00000621 + + thumb_func_start sub_0804F830 +sub_0804F830: @ 0x0804F830 + push {r4, lr} + movs r4, #0xea + lsls r4, r4, #1 + ldr r1, _0804F850 @ =0x0000041E + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r1, #0xc4 + lsls r1, r1, #3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, pc} + .align 2, 0 +_0804F850: .4byte 0x0000041E + + thumb_func_start sub_0804F854 +sub_0804F854: @ 0x0804F854 + push {r4, r5, lr} + ldr r5, _0804F888 @ =0x000001D5 + ldr r1, _0804F88C @ =0x0000041F + adds r0, r5, #0 + movs r2, #1 + bl sub_0807B314 + movs r4, #0xea + lsls r4, r4, #1 + ldr r1, _0804F890 @ =0x000004E5 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F894 @ =0x0000061F + adds r0, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F898 @ =0x00000559 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, r5, pc} + .align 2, 0 +_0804F888: .4byte 0x000001D5 +_0804F88C: .4byte 0x0000041F +_0804F890: .4byte 0x000004E5 +_0804F894: .4byte 0x0000061F +_0804F898: .4byte 0x00000559 + + thumb_func_start sub_0804F89C +sub_0804F89C: @ 0x0804F89C + push {r4, r5, lr} + movs r5, #0xeb + lsls r5, r5, #1 + movs r1, #0x84 + lsls r1, r1, #3 + adds r0, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r4, _0804F8D0 @ =0x000001D5 + ldr r1, _0804F8D4 @ =0x00000525 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F8D8 @ =0x0000061E + adds r0, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F8DC @ =0x00000519 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, r5, pc} + .align 2, 0 +_0804F8D0: .4byte 0x000001D5 +_0804F8D4: .4byte 0x00000525 +_0804F8D8: .4byte 0x0000061E +_0804F8DC: .4byte 0x00000519 + + thumb_func_start sub_0804F8E0 +sub_0804F8E0: @ 0x0804F8E0 + push {r4, r5, lr} + ldr r5, _0804F914 @ =0x000001D3 + ldr r1, _0804F918 @ =0x00000421 + adds r0, r5, #0 + movs r2, #1 + bl sub_0807B314 + movs r4, #0xeb + lsls r4, r4, #1 + ldr r1, _0804F91C @ =0x00000565 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F920 @ =0x0000061D + adds r0, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _0804F924 @ =0x000004D9 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, r5, pc} + .align 2, 0 +_0804F914: .4byte 0x000001D3 +_0804F918: .4byte 0x00000421 +_0804F91C: .4byte 0x00000565 +_0804F920: .4byte 0x0000061D +_0804F924: .4byte 0x000004D9 + + thumb_func_start sub_0804F928 +sub_0804F928: @ 0x0804F928 + push {lr} + ldr r0, _0804F93C @ =0x0000041D + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F940 @ =0x00000621 + movs r1, #1 + bl sub_0807BA8C + pop {pc} + .align 2, 0 +_0804F93C: .4byte 0x0000041D +_0804F940: .4byte 0x00000621 + + thumb_func_start sub_0804F944 +sub_0804F944: @ 0x0804F944 + push {lr} + ldr r0, _0804F95C @ =0x0000041E + movs r1, #1 + bl sub_0807BA8C + movs r0, #0xc4 + lsls r0, r0, #3 + movs r1, #1 + bl sub_0807BA8C + pop {pc} + .align 2, 0 +_0804F95C: .4byte 0x0000041E + + thumb_func_start sub_0804F960 +sub_0804F960: @ 0x0804F960 + push {lr} + ldr r0, _0804F984 @ =0x0000041F + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F988 @ =0x000004E5 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F98C @ =0x0000061F + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F990 @ =0x00000559 + movs r1, #1 + bl sub_0807BA8C + pop {pc} + .align 2, 0 +_0804F984: .4byte 0x0000041F +_0804F988: .4byte 0x000004E5 +_0804F98C: .4byte 0x0000061F +_0804F990: .4byte 0x00000559 + + thumb_func_start sub_0804F994 +sub_0804F994: @ 0x0804F994 + push {lr} + movs r0, #0x84 + lsls r0, r0, #3 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F9BC @ =0x00000525 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F9C0 @ =0x0000061E + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F9C4 @ =0x00000519 + movs r1, #1 + bl sub_0807BA8C + pop {pc} + .align 2, 0 +_0804F9BC: .4byte 0x00000525 +_0804F9C0: .4byte 0x0000061E +_0804F9C4: .4byte 0x00000519 + + thumb_func_start sub_0804F9C8 +sub_0804F9C8: @ 0x0804F9C8 + push {lr} + ldr r0, _0804F9EC @ =0x00000421 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F9F0 @ =0x00000565 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F9F4 @ =0x0000061D + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0804F9F8 @ =0x000004D9 + movs r1, #1 + bl sub_0807BA8C + pop {pc} + .align 2, 0 +_0804F9EC: .4byte 0x00000421 +_0804F9F0: .4byte 0x00000565 +_0804F9F4: .4byte 0x0000061D +_0804F9F8: .4byte 0x000004D9 + + thumb_func_start sub_0804F9FC +sub_0804F9FC: @ 0x0804F9FC + movs r0, #1 + bx lr + + thumb_func_start sub_0804FA00 +sub_0804FA00: @ 0x0804FA00 + push {lr} + movs r0, #0 + bl sub_0805ADD8 + ldr r0, _0804FA24 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #3 + bls _0804FA20 + movs r0, #0x5c + bl GetProgressFlag + cmp r0, #0 + beq _0804FA20 + ldr r0, _0804FA28 @ =gUnk_080F806C + bl sub_0804ADDC +_0804FA20: + pop {pc} + .align 2, 0 +_0804FA24: .4byte gUnk_02002A40 +_0804FA28: .4byte gUnk_080F806C + + thumb_func_start sub_0804FA2C +sub_0804FA2C: @ 0x0804FA2C + movs r0, #1 + bx lr + + thumb_func_start sub_0804FA30 +sub_0804FA30: @ 0x0804FA30 + push {lr} + movs r0, #0 + bl sub_0805ADD8 + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _0804FA5C + movs r0, #3 + bl sub_0807CA84 + cmp r0, #0 + beq _0804FA5C + movs r0, #0x9c + bl sub_0807CBD0 + cmp r0, #0 + bne _0804FA5C + ldr r0, _0804FA60 @ =gUnk_080F82E0 + bl sub_0804ADDC +_0804FA5C: + pop {pc} + .align 2, 0 +_0804FA60: .4byte gUnk_080F82E0 + + thumb_func_start sub_0804FA64 +sub_0804FA64: @ 0x0804FA64 + movs r0, #1 + bx lr + + thumb_func_start sub_0804FA68 +sub_0804FA68: @ 0x0804FA68 + push {lr} + movs r0, #0 + bl sub_0805ADD8 + movs r0, #0x21 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804FA8E + movs r0, #0x80 + lsls r0, r0, #2 + movs r1, #0x42 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0804FA8E + ldr r0, _0804FA90 @ =gUnk_080F8430 + bl sub_0804ADDC +_0804FA8E: + pop {pc} + .align 2, 0 +_0804FA90: .4byte gUnk_080F8430 + + thumb_func_start sub_0804FA94 +sub_0804FA94: @ 0x0804FA94 + movs r0, #1 + bx lr + + thumb_func_start sub_0804FA98 +sub_0804FA98: @ 0x0804FA98 + push {lr} + movs r0, #0x57 + bl GetProgressFlag + cmp r0, #0 + beq _0804FAB0 + ldr r0, _0804FAAC @ =gUnk_080F85D8 + bl sub_0804ADDC + b _0804FAB6 + .align 2, 0 +_0804FAAC: .4byte gUnk_080F85D8 +_0804FAB0: + ldr r0, _0804FAC8 @ =gUnk_080F85F8 + bl sub_0804ADDC +_0804FAB6: + movs r0, #0xc + bl sub_0807CA84 + cmp r0, #0 + bne _0804FAC6 + movs r0, #8 + bl sub_0807CD34 +_0804FAC6: + pop {pc} + .align 2, 0 +_0804FAC8: .4byte gUnk_080F85F8 + + thumb_func_start sub_0804FACC +sub_0804FACC: @ 0x0804FACC + movs r0, #1 + bx lr + + thumb_func_start nullsub_412 +nullsub_412: @ 0x0804FAD0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FAD4 +sub_0804FAD4: @ 0x0804FAD4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_413 +nullsub_413: @ 0x0804FAD8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FADC +sub_0804FADC: @ 0x0804FADC + movs r0, #1 + bx lr + + thumb_func_start nullsub_414 +nullsub_414: @ 0x0804FAE0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FAE4 +sub_0804FAE4: @ 0x0804FAE4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_415 +nullsub_415: @ 0x0804FAE8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FAEC +sub_0804FAEC: @ 0x0804FAEC + movs r0, #1 + bx lr + + thumb_func_start nullsub_416 +nullsub_416: @ 0x0804FAF0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FAF4 +sub_0804FAF4: @ 0x0804FAF4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_417 +nullsub_417: @ 0x0804FAF8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FAFC +sub_0804FAFC: @ 0x0804FAFC + movs r0, #1 + bx lr + + thumb_func_start nullsub_418 +nullsub_418: @ 0x0804FB00 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB04 +sub_0804FB04: @ 0x0804FB04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_419 +nullsub_419: @ 0x0804FB08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB0C +sub_0804FB0C: @ 0x0804FB0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_420 +nullsub_420: @ 0x0804FB10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB14 +sub_0804FB14: @ 0x0804FB14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_421 +nullsub_421: @ 0x0804FB18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB1C +sub_0804FB1C: @ 0x0804FB1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_422 +nullsub_422: @ 0x0804FB20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB24 +sub_0804FB24: @ 0x0804FB24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_423 +nullsub_423: @ 0x0804FB28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB2C +sub_0804FB2C: @ 0x0804FB2C + movs r0, #1 + bx lr + + thumb_func_start sub_0804FB30 +sub_0804FB30: @ 0x0804FB30 + push {lr} + movs r0, #0x11 + bl sub_0807CBD0 + cmp r0, #0 + beq _0804FB64 + movs r0, #0 + bl sub_0807CD10 + movs r0, #1 + bl sub_0807CD10 + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_0805308C + movs r0, #0x12 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804FB64 + movs r0, #0x73 + movs r1, #0xcb + movs r2, #1 + bl sub_0807B314 +_0804FB64: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804FB68 +sub_0804FB68: @ 0x0804FB68 + movs r0, #1 + bx lr + + thumb_func_start nullsub_089 +nullsub_089: @ 0x0804FB6C + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB70 +sub_0804FB70: @ 0x0804FB70 + movs r0, #1 + bx lr + + thumb_func_start nullsub_90 +nullsub_90: @ 0x0804FB74 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB78 +sub_0804FB78: @ 0x0804FB78 + movs r0, #1 + bx lr + + thumb_func_start nullsub_91 +nullsub_91: @ 0x0804FB7C + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB80 +sub_0804FB80: @ 0x0804FB80 + movs r0, #1 + bx lr + + thumb_func_start nullsub_92 +nullsub_92: @ 0x0804FB84 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB88 +sub_0804FB88: @ 0x0804FB88 + movs r0, #1 + bx lr + + thumb_func_start nullsub_93 +nullsub_93: @ 0x0804FB8C + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB90 +sub_0804FB90: @ 0x0804FB90 + movs r0, #1 + bx lr + + thumb_func_start nullsub_94 +nullsub_94: @ 0x0804FB94 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FB98 +sub_0804FB98: @ 0x0804FB98 + movs r0, #1 + bx lr + + thumb_func_start nullsub_95 +nullsub_95: @ 0x0804FB9C + bx lr + .align 2, 0 + + thumb_func_start sub_0804FBA0 +sub_0804FBA0: @ 0x0804FBA0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_96 +nullsub_96: @ 0x0804FBA4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FBA8 +sub_0804FBA8: @ 0x0804FBA8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_97 +nullsub_97: @ 0x0804FBAC + bx lr + .align 2, 0 + + thumb_func_start sub_0804FBB0 +sub_0804FBB0: @ 0x0804FBB0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_98 +nullsub_98: @ 0x0804FBB4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FBB8 +sub_0804FBB8: @ 0x0804FBB8 + movs r0, #1 + bx lr + + thumb_func_start sub_0804FBBC +sub_0804FBBC: @ 0x0804FBBC + push {lr} + ldr r0, _0804FBD4 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + bne _0804FBD2 + ldr r0, _0804FBD8 @ =gUnk_080F9304 + bl sub_0804ADDC +_0804FBD2: + pop {pc} + .align 2, 0 +_0804FBD4: .4byte gUnk_02002A40 +_0804FBD8: .4byte gUnk_080F9304 + + thumb_func_start sub_0804FBDC +sub_0804FBDC: @ 0x0804FBDC + push {lr} + ldr r0, _0804FBF4 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + bne _0804FBF2 + ldr r0, _0804FBF8 @ =gUnk_080F9304 + bl sub_0804ADDC +_0804FBF2: + pop {pc} + .align 2, 0 +_0804FBF4: .4byte gUnk_02002A40 +_0804FBF8: .4byte gUnk_080F9304 + + thumb_func_start sub_0804FBFC +sub_0804FBFC: @ 0x0804FBFC + movs r0, #1 + bx lr + + thumb_func_start nullsub_424 +nullsub_424: @ 0x0804FC00 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC04 +sub_0804FC04: @ 0x0804FC04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_425 +nullsub_425: @ 0x0804FC08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC0C +sub_0804FC0C: @ 0x0804FC0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_426 +nullsub_426: @ 0x0804FC10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC14 +sub_0804FC14: @ 0x0804FC14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_427 +nullsub_427: @ 0x0804FC18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC1C +sub_0804FC1C: @ 0x0804FC1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_428 +nullsub_428: @ 0x0804FC20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC24 +sub_0804FC24: @ 0x0804FC24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_429 +nullsub_429: @ 0x0804FC28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC2C +sub_0804FC2C: @ 0x0804FC2C + movs r0, #1 + bx lr + + thumb_func_start nullsub_430 +nullsub_430: @ 0x0804FC30 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC34 +sub_0804FC34: @ 0x0804FC34 + movs r0, #1 + bx lr + + thumb_func_start nullsub_431 +nullsub_431: @ 0x0804FC38 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC3C +sub_0804FC3C: @ 0x0804FC3C + movs r0, #1 + bx lr + + thumb_func_start nullsub_432 +nullsub_432: @ 0x0804FC40 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC44 +sub_0804FC44: @ 0x0804FC44 + movs r0, #1 + bx lr + + thumb_func_start nullsub_433 +nullsub_433: @ 0x0804FC48 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC4C +sub_0804FC4C: @ 0x0804FC4C + push {lr} + movs r0, #0xe + bl sub_0801E7F4 + cmp r0, #0 + bne _0804FC5E + ldr r1, _0804FC64 @ =gUnk_02034350 + ldr r0, _0804FC68 @ =gUnk_080F9BF8 + str r0, [r1, #0x6c] +_0804FC5E: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804FC64: .4byte gUnk_02034350 +_0804FC68: .4byte gUnk_080F9BF8 + + thumb_func_start sub_0804FC6C +sub_0804FC6C: @ 0x0804FC6C + push {lr} + movs r0, #2 + bl sub_0805B4D0 + movs r0, #0 + bl sub_0806D0B0 + pop {pc} + + thumb_func_start sub_0804FC7C +sub_0804FC7C: @ 0x0804FC7C + movs r0, #1 + bx lr + + thumb_func_start nullsub_99 +nullsub_99: @ 0x0804FC80 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC84 +sub_0804FC84: @ 0x0804FC84 + movs r0, #1 + bx lr + + thumb_func_start nullsub_100 +nullsub_100: @ 0x0804FC88 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC8C +sub_0804FC8C: @ 0x0804FC8C + movs r0, #1 + bx lr + + thumb_func_start nullsub_101 +nullsub_101: @ 0x0804FC90 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC94 +sub_0804FC94: @ 0x0804FC94 + movs r0, #1 + bx lr + + thumb_func_start nullsub_102 +nullsub_102: @ 0x0804FC98 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FC9C +sub_0804FC9C: @ 0x0804FC9C + movs r0, #1 + bx lr + + thumb_func_start nullsub_103 +nullsub_103: @ 0x0804FCA0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FCA4 +sub_0804FCA4: @ 0x0804FCA4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804FCA8 +sub_0804FCA8: @ 0x0804FCA8 + push {lr} + movs r0, #0x14 + bl sub_0801E7F4 + cmp r0, #0 + beq _0804FCBA + ldr r0, _0804FCCC @ =gUnk_080F9FA8 + bl sub_0804ADDC +_0804FCBA: + movs r0, #0x38 + bl sub_0807CA84 + cmp r0, #0 + bne _0804FCCA + ldr r0, _0804FCD0 @ =gUnk_080F9F88 + bl sub_0804ADDC +_0804FCCA: + pop {pc} + .align 2, 0 +_0804FCCC: .4byte gUnk_080F9FA8 +_0804FCD0: .4byte gUnk_080F9F88 + + thumb_func_start sub_0804FCD4 +sub_0804FCD4: @ 0x0804FCD4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_434 +nullsub_434: @ 0x0804FCD8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FCDC +sub_0804FCDC: @ 0x0804FCDC + movs r0, #1 + bx lr + + thumb_func_start nullsub_435 +nullsub_435: @ 0x0804FCE0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FCE4 +sub_0804FCE4: @ 0x0804FCE4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_436 +nullsub_436: @ 0x0804FCE8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FCEC +sub_0804FCEC: @ 0x0804FCEC + movs r0, #1 + bx lr + + thumb_func_start nullsub_437 +nullsub_437: @ 0x0804FCF0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FCF4 +sub_0804FCF4: @ 0x0804FCF4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_438 +nullsub_438: @ 0x0804FCF8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FCFC +sub_0804FCFC: @ 0x0804FCFC + movs r0, #1 + bx lr + + thumb_func_start nullsub_439 +nullsub_439: @ 0x0804FD00 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD04 +sub_0804FD04: @ 0x0804FD04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_440 +nullsub_440: @ 0x0804FD08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD0C +sub_0804FD0C: @ 0x0804FD0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_441 +nullsub_441: @ 0x0804FD10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD14 +sub_0804FD14: @ 0x0804FD14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_442 +nullsub_442: @ 0x0804FD18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD1C +sub_0804FD1C: @ 0x0804FD1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_443 +nullsub_443: @ 0x0804FD20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD24 +sub_0804FD24: @ 0x0804FD24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_444 +nullsub_444: @ 0x0804FD28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD2C +sub_0804FD2C: @ 0x0804FD2C + movs r0, #1 + bx lr + + thumb_func_start nullsub_445 +nullsub_445: @ 0x0804FD30 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD34 +sub_0804FD34: @ 0x0804FD34 + movs r0, #1 + bx lr + + thumb_func_start nullsub_446 +nullsub_446: @ 0x0804FD38 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD3C +sub_0804FD3C: @ 0x0804FD3C + movs r0, #1 + bx lr + + thumb_func_start nullsub_447 +nullsub_447: @ 0x0804FD40 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD44 +sub_0804FD44: @ 0x0804FD44 + movs r0, #1 + bx lr + + thumb_func_start nullsub_448 +nullsub_448: @ 0x0804FD48 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD4C +sub_0804FD4C: @ 0x0804FD4C + movs r0, #1 + bx lr + + thumb_func_start nullsub_449 +nullsub_449: @ 0x0804FD50 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD54 +sub_0804FD54: @ 0x0804FD54 + movs r0, #1 + bx lr + + thumb_func_start sub_0804FD58 +sub_0804FD58: @ 0x0804FD58 + push {lr} + movs r0, #0x21 + bl sub_0801E7F4 + cmp r0, #0 + bne _0804FD6A + ldr r0, _0804FD6C @ =gUnk_080FA5D0 + bl sub_0804ADDC +_0804FD6A: + pop {pc} + .align 2, 0 +_0804FD6C: .4byte gUnk_080FA5D0 + + thumb_func_start sub_0804FD70 +sub_0804FD70: @ 0x0804FD70 + movs r0, #1 + bx lr + + thumb_func_start nullsub_450 +nullsub_450: @ 0x0804FD74 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD78 +sub_0804FD78: @ 0x0804FD78 + movs r0, #1 + bx lr + + thumb_func_start nullsub_451 +nullsub_451: @ 0x0804FD7C + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD80 +sub_0804FD80: @ 0x0804FD80 + movs r0, #1 + bx lr + + thumb_func_start nullsub_452 +nullsub_452: @ 0x0804FD84 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD88 +sub_0804FD88: @ 0x0804FD88 + movs r0, #1 + bx lr + + thumb_func_start nullsub_453 +nullsub_453: @ 0x0804FD8C + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD90 +sub_0804FD90: @ 0x0804FD90 + movs r0, #1 + bx lr + + thumb_func_start nullsub_454 +nullsub_454: @ 0x0804FD94 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FD98 +sub_0804FD98: @ 0x0804FD98 + movs r0, #1 + bx lr + + thumb_func_start nullsub_455 +nullsub_455: @ 0x0804FD9C + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDA0 +sub_0804FDA0: @ 0x0804FDA0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_456 +nullsub_456: @ 0x0804FDA4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDA8 +sub_0804FDA8: @ 0x0804FDA8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_457 +nullsub_457: @ 0x0804FDAC + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDB0 +sub_0804FDB0: @ 0x0804FDB0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_458 +nullsub_458: @ 0x0804FDB4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDB8 +sub_0804FDB8: @ 0x0804FDB8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_459 +nullsub_459: @ 0x0804FDBC + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDC0 +sub_0804FDC0: @ 0x0804FDC0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_460 +nullsub_460: @ 0x0804FDC4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDC8 +sub_0804FDC8: @ 0x0804FDC8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_461 +nullsub_461: @ 0x0804FDCC + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDD0 +sub_0804FDD0: @ 0x0804FDD0 + movs r0, #1 + bx lr + + thumb_func_start nullsub_462 +nullsub_462: @ 0x0804FDD4 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDD8 +sub_0804FDD8: @ 0x0804FDD8 + movs r0, #1 + bx lr + + thumb_func_start nullsub_463 +nullsub_463: @ 0x0804FDDC + bx lr + .align 2, 0 + + thumb_func_start sub_0804FDE0 +sub_0804FDE0: @ 0x0804FDE0 + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804FDF6 + ldr r0, _0804FDFC @ =gUnk_02034350 + ldr r1, _0804FE00 @ =gUnk_080FAD48 + str r1, [r0, #0x6c] + movs r1, #0 + str r1, [r0, #0x74] +_0804FDF6: + movs r0, #1 + pop {pc} + .align 2, 0 +_0804FDFC: .4byte gUnk_02034350 +_0804FE00: .4byte gUnk_080FAD48 + + thumb_func_start sub_0804FE04 +sub_0804FE04: @ 0x0804FE04 + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _0804FE28 + ldr r0, _0804FE20 @ =gUnk_02033A90 + ldr r2, _0804FE24 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + b _0804FE2E + .align 2, 0 +_0804FE20: .4byte gUnk_02033A90 +_0804FE24: .4byte 0x00000864 +_0804FE28: + ldr r0, _0804FE3C @ =gUnk_080FACB8 + bl sub_0804ADDC +_0804FE2E: + movs r0, #0 + bl sub_0805B4D0 + bl sub_08059994 + pop {pc} + .align 2, 0 +_0804FE3C: .4byte gUnk_080FACB8 + + thumb_func_start sub_0804FE40 +sub_0804FE40: @ 0x0804FE40 + push {lr} + movs r0, #0 + bl sub_0805B4D0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0804FE4C +sub_0804FE4C: @ 0x0804FE4C + movs r0, #1 + bx lr + + thumb_func_start nullsub_104 +nullsub_104: @ 0x0804FE50 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FE54 +sub_0804FE54: @ 0x0804FE54 + movs r0, #1 + bx lr + + thumb_func_start sub_0804FE58 +sub_0804FE58: @ 0x0804FE58 + push {lr} + movs r0, #1 + bl sub_0805B4D0 + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _0804FE7A + movs r0, #2 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804FE7A + ldr r0, _0804FEA0 @ =gUnk_080FAFE4 + bl sub_0804ADDC +_0804FE7A: + ldr r0, _0804FEA4 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _0804FE8E + ldr r0, _0804FEA8 @ =gUnk_080FB004 + bl sub_0804ADDC +_0804FE8E: + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _0804FE9E + movs r0, #0x56 + bl sub_0807CD04 +_0804FE9E: + pop {pc} + .align 2, 0 +_0804FEA0: .4byte gUnk_080FAFE4 +_0804FEA4: .4byte gUnk_02002A40 +_0804FEA8: .4byte gUnk_080FB004 + + thumb_func_start sub_0804FEAC +sub_0804FEAC: @ 0x0804FEAC + push {lr} + ldr r0, _0804FEC4 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _0804FEC2 + ldr r0, _0804FEC8 @ =gUnk_080FB004 + bl sub_0804ADDC +_0804FEC2: + pop {pc} + .align 2, 0 +_0804FEC4: .4byte gUnk_02002A40 +_0804FEC8: .4byte gUnk_080FB004 + + thumb_func_start sub_0804FECC +sub_0804FECC: @ 0x0804FECC + movs r0, #1 + bx lr + + thumb_func_start nullsub_464 +nullsub_464: @ 0x0804FED0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FED4 +sub_0804FED4: @ 0x0804FED4 + movs r0, #1 + bx lr + + thumb_func_start sub_0804FED8 +sub_0804FED8: @ 0x0804FED8 + push {lr} + movs r0, #0xbb + lsls r0, r0, #1 + ldr r1, _0804FEE8 @ =0x0000066F + movs r2, #1 + bl sub_0807B314 + pop {pc} + .align 2, 0 +_0804FEE8: .4byte 0x0000066F + + thumb_func_start sub_0804FEEC +sub_0804FEEC: @ 0x0804FEEC + movs r0, #1 + bx lr + + thumb_func_start nullsub_465 +nullsub_465: @ 0x0804FEF0 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FEF4 +sub_0804FEF4: @ 0x0804FEF4 + movs r0, #1 + bx lr + + thumb_func_start nullsub_466 +nullsub_466: @ 0x0804FEF8 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FEFC +sub_0804FEFC: @ 0x0804FEFC + movs r0, #1 + bx lr + + thumb_func_start nullsub_467 +nullsub_467: @ 0x0804FF00 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF04 +sub_0804FF04: @ 0x0804FF04 + movs r0, #1 + bx lr + + thumb_func_start nullsub_468 +nullsub_468: @ 0x0804FF08 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF0C +sub_0804FF0C: @ 0x0804FF0C + movs r0, #1 + bx lr + + thumb_func_start nullsub_469 +nullsub_469: @ 0x0804FF10 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF14 +sub_0804FF14: @ 0x0804FF14 + movs r0, #1 + bx lr + + thumb_func_start nullsub_470 +nullsub_470: @ 0x0804FF18 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF1C +sub_0804FF1C: @ 0x0804FF1C + movs r0, #1 + bx lr + + thumb_func_start nullsub_471 +nullsub_471: @ 0x0804FF20 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF24 +sub_0804FF24: @ 0x0804FF24 + movs r0, #1 + bx lr + + thumb_func_start nullsub_472 +nullsub_472: @ 0x0804FF28 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF2C +sub_0804FF2C: @ 0x0804FF2C + movs r0, #1 + bx lr + + thumb_func_start nullsub_473 +nullsub_473: @ 0x0804FF30 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF34 +sub_0804FF34: @ 0x0804FF34 + movs r0, #1 + bx lr + + thumb_func_start nullsub_474 +nullsub_474: @ 0x0804FF38 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF3C +sub_0804FF3C: @ 0x0804FF3C + movs r0, #1 + bx lr + + thumb_func_start nullsub_475 +nullsub_475: @ 0x0804FF40 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF44 +sub_0804FF44: @ 0x0804FF44 + movs r0, #1 + bx lr + + thumb_func_start nullsub_476 +nullsub_476: @ 0x0804FF48 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF4C +sub_0804FF4C: @ 0x0804FF4C + movs r0, #1 + bx lr + + thumb_func_start nullsub_477 +nullsub_477: @ 0x0804FF50 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF54 +sub_0804FF54: @ 0x0804FF54 + movs r0, #1 + bx lr + + thumb_func_start nullsub_478 +nullsub_478: @ 0x0804FF58 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF5C +sub_0804FF5C: @ 0x0804FF5C + movs r0, #1 + bx lr + + thumb_func_start sub_0804FF60 +sub_0804FF60: @ 0x0804FF60 + push {lr} + movs r0, #0x70 + bl sub_0807CBD0 + cmp r0, #0 + bne _0804FF72 + movs r0, #0x70 + bl sub_0807CCB4 +_0804FF72: + pop {pc} + + thumb_func_start sub_0804FF74 +sub_0804FF74: @ 0x0804FF74 + movs r0, #1 + bx lr + + thumb_func_start nullsub_105 +nullsub_105: @ 0x0804FF78 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF7C +sub_0804FF7C: @ 0x0804FF7C + movs r0, #1 + bx lr + + thumb_func_start nullsub_106 +nullsub_106: @ 0x0804FF80 + bx lr + .align 2, 0 + + thumb_func_start sub_0804FF84 +sub_0804FF84: @ 0x0804FF84 + movs r1, #0x80 + lsls r1, r1, #0x12 + strb r0, [r1, #6] + ldr r1, _0804FF94 @ =gUnk_0200B644 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] + bx lr + .align 2, 0 +_0804FF94: .4byte gUnk_0200B644 + + thumb_func_start sub_0804FF98 +sub_0804FF98: @ 0x0804FF98 + push {r4, r5, r6, r7, lr} + ldr r6, _0804FFD4 @ =gUnk_020354C0 + ldr r1, _0804FFD8 @ =gUnk_0200B644 + ldr r4, [r1] + movs r0, #0 + str r0, [r1] + movs r5, #0 + cmp r4, #0 + beq _0804FFD0 + ldr r7, _0804FFDC @ =gUnk_03005E98 +_0804FFAC: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _0804FFC6 + ldr r0, _0804FFE0 @ =gUnk_020176A0 + adds r0, r5, r0 + movs r2, #0xa0 + lsls r2, r2, #0x13 + adds r1, r5, r2 + ldrh r2, [r6, #2] + ldrb r3, [r6, #1] + bl _call_via_r7 +_0804FFC6: + adds r5, #0x20 + adds r6, #4 + lsrs r4, r4, #1 + cmp r4, #0 + bne _0804FFAC +_0804FFD0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0804FFD4: .4byte gUnk_020354C0 +_0804FFD8: .4byte gUnk_0200B644 +_0804FFDC: .4byte gUnk_03005E98 +_0804FFE0: .4byte gUnk_020176A0 + + thumb_func_start sub_0804FFE4 +sub_0804FFE4: @ 0x0804FFE4 + push {r4, lr} + ldr r4, _08050000 @ =gUnk_03000FD0 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_0801D630 + ldr r0, _08050004 @ =gUnk_020354C0 + movs r1, #0x80 + bl sub_0801D630 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 +_08050000: .4byte gUnk_03000FD0 +_08050004: .4byte gUnk_020354C0 + + thumb_func_start sub_08050008 +sub_08050008: @ 0x08050008 + push {lr} + ldr r0, _0805001C @ =gUnk_020354C0 + movs r1, #0x80 + bl sub_0801D630 + ldr r1, _08050020 @ =gUnk_03000FD0 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1, #4] + pop {pc} + .align 2, 0 +_0805001C: .4byte gUnk_020354C0 +_08050020: .4byte gUnk_03000FD0 + + thumb_func_start sub_08050024 +sub_08050024: @ 0x08050024 + push {lr} + bl sub_0801E104 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08050038 +sub_08050038: @ 0x08050038 + push {lr} + adds r3, r0, #0 + ldr r2, _0805004C @ =gUnk_03000FD0 + ldrh r1, [r2, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08050050 + strh r3, [r2, #0xe] + b _08050052 + .align 2, 0 +_0805004C: .4byte gUnk_03000FD0 +_08050050: + strh r3, [r2, #0xc] +_08050052: + pop {pc} + + thumb_func_start sub_08050054 +sub_08050054: @ 0x08050054 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r2, _08050078 @ =gUnk_03000FD0 + movs r3, #0 + strh r1, [r2, #0xa] + strh r5, [r2, #8] + movs r0, #1 + strb r0, [r2] + adds r0, #0xff + strh r0, [r2, #0xc] + strh r3, [r2, #0xe] + movs r0, #2 + ands r0, r5 + adds r4, r2, #0 + cmp r0, #0 + beq _0805007C + movs r0, #0xf8 + b _0805007E + .align 2, 0 +_08050078: .4byte gUnk_03000FD0 +_0805007C: + movs r0, #0 +_0805007E: + strb r0, [r4, #2] + movs r0, #8 + ands r0, r5 + cmp r0, #0 + beq _080500A4 + ldr r1, _080500E4 @ =gUnk_03000000 + movs r0, #1 + strb r0, [r1, #2] + ldr r2, _080500E8 @ =gUnk_03000F50 + ldrh r0, [r2, #0x14] + movs r1, #0x40 + orrs r0, r1 + strh r0, [r2, #0x14] + ldrh r0, [r2, #0x20] + orrs r0, r1 + strh r0, [r2, #0x20] + ldrh r0, [r2, #0x2c] + orrs r1, r0 + strh r1, [r2, #0x2c] +_080500A4: + movs r0, #0x10 + ands r0, r5 + cmp r0, #0 + beq _080500E0 + ldrh r0, [r4, #0x16] + ldrh r1, [r4, #0x18] + bl sub_0801E1B8 + movs r1, #0x12 + ldrsh r0, [r4, r1] + movs r2, #0x14 + ldrsh r1, [r4, r2] + movs r3, #0x10 + ldrsh r2, [r4, r3] + bl sub_0801E1EC + movs r0, #1 + ands r0, r5 + cmp r0, #0 + bne _080500E0 + ldrh r1, [r4, #8] + ldr r0, _080500EC @ =0x0000FFFB + ands r0, r1 + strh r0, [r4, #8] + bl sub_08050008 + ldr r1, _080500F0 @ =gUnk_0200B644 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] +_080500E0: + pop {r4, r5, pc} + .align 2, 0 +_080500E4: .4byte gUnk_03000000 +_080500E8: .4byte gUnk_03000F50 +_080500EC: .4byte 0x0000FFFB +_080500F0: .4byte gUnk_0200B644 + + thumb_func_start sub_080500F4 +sub_080500F4: @ 0x080500F4 + ldr r1, _0805010C @ =gUnk_03000FD0 + strh r0, [r1, #0xa] + ldrh r0, [r1, #8] + movs r2, #1 + eors r0, r2 + strh r0, [r1, #8] + strb r2, [r1] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #0xc] + bx lr + .align 2, 0 +_0805010C: .4byte gUnk_03000FD0 + + thumb_func_start sub_08050110 +sub_08050110: @ 0x08050110 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + movs r1, #1 + ands r1, r4 + cmp r1, #0 + beq _08050130 + ldr r1, _0805012C @ =gUnk_03000FD0 + movs r0, #0x96 + strh r0, [r1, #0x10] + adds r2, r1, #0 + b _08050136 + .align 2, 0 +_0805012C: .4byte gUnk_03000FD0 +_08050130: + ldr r0, _0805014C @ =gUnk_03000FD0 + strh r1, [r0, #0x10] + adds r2, r0, #0 +_08050136: + movs r1, #0 + strh r5, [r2, #0x12] + strh r6, [r2, #0x14] + ldr r0, _08050150 @ =0x00003F3F + strh r0, [r2, #0x16] + strh r1, [r2, #0x18] + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_08050054 + pop {r4, r5, r6, pc} + .align 2, 0 +_0805014C: .4byte gUnk_03000FD0 +_08050150: .4byte 0x00003F3F + + thumb_func_start sub_08050154 +sub_08050154: @ 0x08050154 + push {r4, r5, r6, lr} + ldr r4, _08050180 @ =gUnk_03000FD0 + ldrh r0, [r4, #8] + movs r5, #0x1c + ands r5, r0 + movs r6, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _080501BE + ldrh r0, [r4, #0xc] + ldrh r1, [r4, #0xa] + subs r0, r0, r1 + strh r0, [r4, #0xc] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrh r2, [r4, #0xe] + movs r3, #0xe + ldrsh r1, [r4, r3] + cmp r0, r1 + bgt _080501B8 + strh r2, [r4, #0xc] + b _080501B8 + .align 2, 0 +_08050180: .4byte gUnk_03000FD0 +_08050184: + mvns r0, r5 + adds r0, #1 + ands r0, r5 + eors r5, r0 + cmp r0, #8 + beq _080501A8 + cmp r0, #8 + bhi _0805019A + cmp r0, #4 + beq _080501A0 + b _080501B8 +_0805019A: + cmp r0, #0x10 + beq _080501B0 + b _080501B8 +_080501A0: + adds r0, r4, #0 + bl sub_080501C0 + b _080501B6 +_080501A8: + adds r0, r4, #0 + bl sub_08050230 + b _080501B6 +_080501B0: + adds r0, r4, #0 + bl sub_080502A4 +_080501B6: + orrs r6, r0 +_080501B8: + cmp r5, #0 + bne _08050184 + strb r6, [r4] +_080501BE: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080501C0 +sub_080501C0: @ 0x080501C0 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + ldrh r1, [r3, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080501DA + movs r0, #0xc + ldrsh r1, [r3, r0] + movs r0, #0x80 + lsls r0, r0, #1 + subs r5, r0, r1 + b _080501DE +_080501DA: + movs r2, #0xc + ldrsh r5, [r3, r2] +_080501DE: + ldr r0, _080501F8 @ =gUnk_03000FD0 + ldr r2, [r0, #4] + ldr r1, _080501FC @ =gUnk_020354C0 + movs r4, #0 + ldr r7, _08050200 @ =gUnk_0200B644 + movs r6, #1 +_080501EA: + adds r0, r2, #0 + ands r0, r6 + cmp r0, #0 + beq _08050204 + strb r6, [r1] + strh r5, [r1, #2] + b _08050208 + .align 2, 0 +_080501F8: .4byte gUnk_03000FD0 +_080501FC: .4byte gUnk_020354C0 +_08050200: .4byte gUnk_0200B644 +_08050204: + strb r0, [r1] + strh r0, [r1, #2] +_08050208: + ldrb r0, [r3, #2] + strb r0, [r1, #1] + lsrs r2, r2, #1 + adds r4, #1 + adds r1, #4 + cmp r4, #0x1f + bls _080501EA + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r7] + movs r0, #0xe + ldrsh r1, [r3, r0] + movs r2, #0xc + ldrsh r0, [r3, r2] + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08050230 +sub_08050230: @ 0x08050230 + push {r4, r5, lr} + ldrh r4, [r0, #8] + ldrh r0, [r0, #0xc] + lsls r5, r0, #0x10 + asrs r2, r5, #0x14 + movs r0, #0xf + ands r2, r0 + movs r0, #1 + ands r4, r0 + cmp r4, #0 + beq _0805024A + movs r0, #0xf + subs r2, r0, r2 +_0805024A: + ldr r3, _08050264 @ =gUnk_03000F50 + ldr r1, _08050268 @ =gUnk_080FC3C4 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r3, #0 + adds r0, #0x64 + strh r1, [r0] + cmp r5, #0 + beq _0805026C + movs r0, #1 + b _08050298 + .align 2, 0 +_08050264: .4byte gUnk_03000F50 +_08050268: .4byte gUnk_080FC3C4 +_0805026C: + ldr r1, _0805029C @ =gUnk_03000000 + movs r0, #0 + strb r0, [r1, #2] + cmp r4, #0 + bne _08050296 + ldrh r2, [r3, #8] + ldr r1, _080502A0 @ =0x0000FFBF + adds r0, r1, #0 + ands r0, r2 + strh r0, [r3, #8] + ldrh r2, [r3, #0x14] + adds r0, r1, #0 + ands r0, r2 + strh r0, [r3, #0x14] + ldrh r2, [r3, #0x20] + adds r0, r1, #0 + ands r0, r2 + strh r0, [r3, #0x20] + ldrh r0, [r3, #0x2c] + ands r1, r0 + strh r1, [r3, #0x2c] +_08050296: + movs r0, #0 +_08050298: + pop {r4, r5, pc} + .align 2, 0 +_0805029C: .4byte gUnk_03000000 +_080502A0: .4byte 0x0000FFBF + + thumb_func_start sub_080502A4 +sub_080502A4: @ 0x080502A4 + push {r4, lr} + ldrh r1, [r0, #8] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080502E4 + ldr r4, _080502E0 @ =gUnk_03000FD0 + ldrh r0, [r4, #0x10] + ldrh r1, [r4, #0xa] + subs r0, r0, r1 + strh r0, [r4, #0x10] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080502C4 + movs r0, #0 + strh r0, [r4, #0x10] +_080502C4: + movs r1, #0x12 + ldrsh r0, [r4, r1] + movs r2, #0x14 + ldrsh r1, [r4, r2] + movs r3, #0x10 + ldrsh r2, [r4, r3] + bl sub_0801E1EC + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08050314 + movs r0, #0 + b _08050316 + .align 2, 0 +_080502E0: .4byte gUnk_03000FD0 +_080502E4: + ldr r4, _08050310 @ =gUnk_03000FD0 + ldrh r0, [r4, #0xa] + ldrh r2, [r4, #0x10] + adds r0, r0, r2 + strh r0, [r4, #0x10] + movs r3, #0x12 + ldrsh r0, [r4, r3] + movs r2, #0x14 + ldrsh r1, [r4, r2] + movs r3, #0x10 + ldrsh r2, [r4, r3] + bl sub_0801E1EC + movs r1, #0x10 + ldrsh r0, [r4, r1] + cmp r0, #0x96 + ble _08050314 + bl sub_0801E104 + movs r0, #0 + b _08050316 + .align 2, 0 +_08050310: .4byte gUnk_03000FD0 +_08050314: + movs r0, #1 +_08050316: + pop {r4, pc} + + thumb_func_start sub_08050318 +sub_08050318: @ 0x08050318 + push {r4, r5, r6, lr} + sub sp, #0x18 + adds r6, r0, #0 + adds r4, r1, #0 + bl sub_08050384 + ldr r0, _08050374 @ =gUnk_080FC844 + mov r1, sp + movs r2, #0x18 + bl sub_0801D66C + ldr r1, _08050378 @ =gUnk_020227E8 + adds r0, r4, #0 + bl sub_08056FEC + mov r2, sp + mov r1, sp + ldr r5, _0805037C @ =gUnk_080FC85C + lsls r4, r6, #1 + adds r4, r4, r6 + lsls r4, r4, #1 + adds r0, r4, r5 + ldrh r0, [r0] + lsls r0, r0, #0xc + ldrh r1, [r1, #0x10] + orrs r0, r1 + strh r0, [r2, #0x10] + adds r0, r5, #2 + adds r0, r4, r0 + ldrh r0, [r0] + mov r1, sp + bl sub_0805F46C + adds r5, #4 + adds r4, r4, r5 + ldrh r0, [r4] + cmp r0, #0 + beq _08050368 + bl sub_080A3268 +_08050368: + ldr r1, _08050380 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_08050374: .4byte gUnk_080FC844 +_08050378: .4byte gUnk_020227E8 +_0805037C: .4byte gUnk_080FC85C +_08050380: .4byte gUnk_03000F50 + + thumb_func_start sub_08050384 +sub_08050384: @ 0x08050384 + push {lr} + movs r0, #0 + movs r1, #0 + bl sub_0801C4A0 + ldr r0, _080503A0 @ =gUnk_02034CB0 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r1, _080503A4 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] + pop {pc} + .align 2, 0 +_080503A0: .4byte gUnk_02034CB0 +_080503A4: .4byte gUnk_03000F50 + + thumb_func_start sub_080503A8 +sub_080503A8: @ 0x080503A8 + push {lr} + bl sub_0801D7EC + ldr r1, _080503B8 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0x1a] + strh r0, [r1, #0x26] + pop {pc} + .align 2, 0 +_080503B8: .4byte gUnk_03000F50 + + thumb_func_start sub_080503BC +sub_080503BC: @ 0x080503BC + push {r4, lr} + ldr r1, _080503D8 @ =gUnk_02032EC0 + strb r0, [r1, #4] + ldr r0, _080503DC @ =gUnk_02034CB0 + movs r4, #0x80 + lsls r4, r4, #4 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _080503E0 @ =gUnk_02021F30 + adds r1, r4, #0 + bl sub_0801D630 + pop {r4, pc} + .align 2, 0 +_080503D8: .4byte gUnk_02032EC0 +_080503DC: .4byte gUnk_02034CB0 +_080503E0: .4byte gUnk_02021F30 + + thumb_func_start sub_080503E4 +sub_080503E4: @ 0x080503E4 + push {lr} + adds r1, r0, #0 + cmp r1, #2 + bls _080503F2 + movs r2, #1 + movs r1, #1 + b _080503FE +_080503F2: + ldr r0, _08050410 @ =0x000004B4 + muls r0, r1, r0 + ldr r1, _08050414 @ =gUnk_02019EEC + adds r0, r0, r1 + ldrb r2, [r0, #2] + ldrb r1, [r0, #3] +_080503FE: + movs r0, #0x80 + lsls r0, r0, #0x12 + strb r2, [r0, #5] + strb r1, [r0, #6] + ldr r1, _08050418 @ =gUnk_0200B644 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] + pop {pc} + .align 2, 0 +_08050410: .4byte 0x000004B4 +_08050414: .4byte gUnk_02019EEC +_08050418: .4byte gUnk_0200B644 + + thumb_func_start sub_0805041C +sub_0805041C: @ 0x0805041C + push {r4, lr} + adds r4, r0, #0 + cmp r4, #2 + bhi _0805043A + movs r0, #0x80 + lsls r0, r0, #0x12 + strb r4, [r0, #4] + ldr r2, _08050444 @ =0x000004B4 + adds r0, r4, #0 + muls r0, r2, r0 + ldr r1, _08050448 @ =gUnk_02019EEC + adds r0, r0, r1 + ldr r1, _0805044C @ =gUnk_02002A40 + bl sub_0801D66C +_0805043A: + adds r0, r4, #0 + bl sub_080503E4 + pop {r4, pc} + .align 2, 0 +_08050444: .4byte 0x000004B4 +_08050448: .4byte gUnk_02019EEC +_0805044C: .4byte gUnk_02002A40 + + thumb_func_start sub_08050450 +sub_08050450: @ 0x08050450 + push {r4, lr} + bl sub_080AD90C + ldr r1, _080504D8 @ =gUnk_080FC8A4 + ldr r0, _080504DC @ =gUnk_03001000 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r4, _080504E0 @ =gUnk_02032EC0 + ldrb r1, [r4, #4] + ldrb r0, [r4, #2] + cmp r0, r1 + beq _0805048A + movs r0, #0 + strb r1, [r4, #2] + ldr r1, _080504E4 @ =gUnk_03000F50 + strh r0, [r1, #0xa] + strh r0, [r1, #0xc] + strh r0, [r1, #0x16] + strh r0, [r1, #0x18] + strh r0, [r1, #0x22] + strh r0, [r1, #0x24] + ldr r0, _080504E8 @ =gUnk_02000080 + movs r1, #0x30 + bl sub_0801D630 +_0805048A: + bl sub_080507FC + ldr r1, _080504EC @ =gUnk_080FC8B0 + ldrb r0, [r4, #2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r4, _080504F0 @ =gUnk_02019EE0 + movs r0, #0 + strb r0, [r4] + bl sub_0805E5C0 + bl sub_0805066C + bl sub_0801C1D4 + bl sub_0801C208 + bl sub_080AD9B0 + bl sub_080AD918 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r1, [r0, #7] + ldrb r0, [r4, #3] + cmp r0, r1 + beq _080504D4 + strb r1, [r4, #3] + movs r0, #6 + bl sub_080503A8 + movs r0, #0xf + bl sub_080503A8 +_080504D4: + pop {r4, pc} + .align 2, 0 +_080504D8: .4byte gUnk_080FC8A4 +_080504DC: .4byte gUnk_03001000 +_080504E0: .4byte gUnk_02032EC0 +_080504E4: .4byte gUnk_03000F50 +_080504E8: .4byte gUnk_02000080 +_080504EC: .4byte gUnk_080FC8B0 +_080504F0: .4byte gUnk_02019EE0 + + thumb_func_start sub_080504F4 +sub_080504F4: @ 0x080504F4 + push {r4, lr} + movs r0, #1 + bl sub_0801DA90 + bl sub_080A3210 + movs r0, #0xc0 + lsls r0, r0, #0x13 + movs r1, #0x80 + bl sub_0801D630 + bl sub_08056418 + bl sub_0805E60C + bl sub_08080668 + bl sub_080ADD30 + movs r0, #0 + bl sub_0801CFA8 + ldr r0, _080505DC @ =gUnk_0200AF00 + movs r1, #0xcd + lsls r1, r1, #2 + bl sub_0801D630 + ldr r4, _080505E0 @ =gUnk_02019EE0 + ldr r1, _080505E4 @ =0x00000E28 + adds r0, r4, #0 + bl sub_0801D630 + movs r0, #7 + strb r0, [r4, #3] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #0 + cmp r0, #1 + bls _08050546 + movs r1, #3 +_08050546: + strb r1, [r4, #6] + ldr r4, _080505E8 @ =gUnk_02032EC0 + movs r1, #0xed + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_0801D630 + movs r0, #8 + strb r0, [r4, #2] + movs r0, #0 + bl sub_080503BC + bl sub_0805616C + movs r0, #0 + bl sub_08050624 + movs r0, #1 + bl sub_08050624 + movs r0, #2 + bl sub_08050624 + bl sub_08056208 + movs r0, #5 + bl sub_080503A8 + movs r0, #9 + bl sub_0801D714 + movs r4, #0 +_08050586: + movs r0, #0x48 + adds r1, r4, #0 + movs r2, #0 + bl sub_080A2960 + adds r4, #1 + cmp r4, #0x19 + bls _08050586 + ldr r0, _080505EC @ =gUnk_080FC8D0 + bl sub_080A70AC + bl sub_080507FC + ldr r1, _080505F0 @ =gUnk_03000F50 + ldrh r2, [r1] + movs r3, #0xf8 + lsls r3, r3, #5 + adds r0, r3, #0 + orrs r0, r2 + strh r0, [r1] + ldr r0, _080505F4 @ =0x00001E0B + strh r0, [r1, #0x2c] + adds r2, r1, #0 + adds r2, #0x66 + ldr r0, _080505F8 @ =0x00000844 + strh r0, [r2] + adds r1, #0x68 + ldr r0, _080505FC @ =0x00000A0F + strh r0, [r1] + ldr r0, _08050600 @ =gUnk_02024490 + movs r1, #1 + strb r1, [r0] + ldr r0, _08050604 @ =gUnk_03001000 + strb r1, [r0, #3] + movs r0, #7 + bl sub_080A3268 + movs r0, #4 + movs r1, #8 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080505DC: .4byte gUnk_0200AF00 +_080505E0: .4byte gUnk_02019EE0 +_080505E4: .4byte 0x00000E28 +_080505E8: .4byte gUnk_02032EC0 +_080505EC: .4byte gUnk_080FC8D0 +_080505F0: .4byte gUnk_03000F50 +_080505F4: .4byte 0x00001E0B +_080505F8: .4byte 0x00000844 +_080505FC: .4byte 0x00000A0F +_08050600: .4byte gUnk_02024490 +_08050604: .4byte gUnk_03001000 + + thumb_func_start nullsub_479 +nullsub_479: @ 0x08050608 + bx lr + .align 2, 0 + + thumb_func_start sub_0805060C +sub_0805060C: @ 0x0805060C + push {lr} + ldr r0, _08050620 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805061C + movs r0, #2 + bl sub_08056010 +_0805061C: + pop {pc} + .align 2, 0 +_08050620: .4byte gUnk_03000FD0 + + thumb_func_start sub_08050624 +sub_08050624: @ 0x08050624 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08050648 @ =0x000004B4 + adds r1, r4, #0 + muls r1, r0, r1 + ldr r0, _0805064C @ =gUnk_02019EEC + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0807CF28 + adds r5, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r5, r0 + beq _08050650 + cmp r5, #0 + beq _08050656 + b _0805065C + .align 2, 0 +_08050648: .4byte 0x000004B4 +_0805064C: .4byte gUnk_02019EEC +_08050650: + adds r0, r4, #0 + bl sub_0807CF48 +_08050656: + adds r0, r4, #0 + bl sub_0805194C +_0805065C: + ldr r0, _08050668 @ =gUnk_02019EE0 + adds r0, #8 + adds r0, r4, r0 + strb r5, [r0] + pop {r4, r5, pc} + .align 2, 0 +_08050668: .4byte gUnk_02019EE0 + + thumb_func_start sub_0805066C +sub_0805066C: @ 0x0805066C + push {r4, lr} + movs r1, #0 + ldr r4, _080506F0 @ =gUnk_02019EE0 + ldrb r0, [r4, #1] + subs r0, #1 + strb r0, [r4, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08050690 + movs r0, #0x10 + strb r0, [r4, #1] + ldrb r0, [r4, #2] + adds r0, #1 + movs r1, #0xf + bl __modsi3 + strb r0, [r4, #2] + movs r1, #1 +_08050690: + ldrb r0, [r4, #2] + cmp r0, #0 + bne _080506AA + movs r0, #1 + strb r0, [r4, #2] + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #4 + adds r1, #8 + strb r1, [r4, #1] + movs r1, #1 +_080506AA: + cmp r1, #0 + beq _080506EE + ldr r1, _080506F4 @ =gUnk_080FC8DE + ldrb r0, [r4, #2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + ldr r0, _080506F8 @ =gUnk_085A2E80 + adds r4, r4, r0 + ldr r1, _080506FC @ =0x00011AA0 + adds r0, r4, r1 + movs r1, #0xb + movs r2, #1 + bl sub_0801D754 + ldr r1, _08050700 @ =0x00011BA0 + adds r0, r4, r1 + movs r1, #0xc + movs r2, #1 + bl sub_0801D754 + ldr r1, _08050704 @ =0x00011CA0 + adds r0, r4, r1 + movs r1, #0xd + movs r2, #1 + bl sub_0801D754 + ldr r0, _08050708 @ =0x00011DA0 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0xe + movs r2, #1 + bl sub_0801D754 +_080506EE: + pop {r4, pc} + .align 2, 0 +_080506F0: .4byte gUnk_02019EE0 +_080506F4: .4byte gUnk_080FC8DE +_080506F8: .4byte gUnk_085A2E80 +_080506FC: .4byte 0x00011AA0 +_08050700: .4byte 0x00011BA0 +_08050704: .4byte 0x00011CA0 +_08050708: .4byte 0x00011DA0 + + thumb_func_start sub_0805070C +sub_0805070C: @ 0x0805070C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_0805F2C8 + adds r5, r0, #0 + cmp r5, #0 + beq _0805077A + movs r0, #0 + strb r0, [r5, #2] + movs r0, #5 + strb r0, [r5, #3] + movs r0, #1 + strb r0, [r5, #1] + movs r0, #0x30 + strh r0, [r5, #4] + ldr r0, _08050780 @ =gUnk_02000D00 + str r0, [r5, #8] + movs r6, #0 +_08050732: + movs r0, #0 + strh r0, [r5, #6] + ldr r0, [r5, #8] + movs r1, #0x80 + lsls r1, r1, #2 + bl sub_0801D630 + ldr r0, _08050784 @ =0x000004B4 + adds r1, r6, #0 + muls r1, r0, r1 + ldr r0, _08050788 @ =gUnk_02019F6C + adds r7, r1, r0 + movs r4, #0 + lsls r0, r6, #9 + mov r8, r0 + adds r6, #1 +_08050752: + adds r0, r7, r4 + ldrb r0, [r0] + adds r1, r5, #0 + bl sub_0805F7DC + adds r4, #1 + cmp r4, #5 + ble _08050752 + ldr r0, [r5, #8] + ldr r1, _0805078C @ =0x06014000 + add r1, r8 + movs r2, #0x80 + lsls r2, r2, #2 + bl sub_0801D66C + cmp r6, #2 + bls _08050732 + adds r0, r5, #0 + bl sub_0805F300 +_0805077A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08050780: .4byte gUnk_02000D00 +_08050784: .4byte 0x000004B4 +_08050788: .4byte gUnk_02019F6C +_0805078C: .4byte 0x06014000 + + thumb_func_start sub_08050790 +sub_08050790: @ 0x08050790 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_0805F2C8 + adds r6, r0, #0 + cmp r6, #0 + beq _080507F0 + movs r0, #0 + strb r0, [r6, #2] + movs r0, #5 + strb r0, [r6, #3] + movs r0, #1 + strb r0, [r6, #1] + movs r0, #0x80 + strh r0, [r6, #4] + ldr r0, _080507F8 @ =gUnk_02000D00 + str r0, [r6, #8] + movs r1, #0 +_080507B6: + movs r0, #0 + strh r0, [r6, #6] + lsls r4, r1, #4 + movs r5, #0 + lsls r7, r1, #0xa + adds r1, #1 + mov r8, r1 +_080507C4: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0805F7DC + adds r4, #1 + adds r5, #1 + cmp r5, #0xf + bls _080507C4 + movs r0, #0xc0 + lsls r0, r0, #0x13 + adds r1, r7, r0 + ldr r0, _080507F8 @ =gUnk_02000D00 + movs r2, #0x80 + lsls r2, r2, #3 + bl sub_0801D66C + mov r1, r8 + cmp r1, #0xf + bls _080507B6 + adds r0, r6, #0 + bl sub_0805F300 +_080507F0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080507F8: .4byte gUnk_02000D00 + + thumb_func_start sub_080507FC +sub_080507FC: @ 0x080507FC + ldr r0, _0805080C @ =gUnk_0200AF00 + movs r1, #0xa0 + lsls r1, r1, #1 + strh r1, [r0, #0x1a] + movs r1, #0x24 + strh r1, [r0, #0x20] + bx lr + .align 2, 0 +_0805080C: .4byte gUnk_0200AF00 + + thumb_func_start sub_08050810 +sub_08050810: @ 0x08050810 + ldr r0, _0805081C @ =gUnk_0200AF00 + movs r1, #0xd0 + strh r1, [r0, #0x1a] + movs r1, #0x24 + strh r1, [r0, #0x20] + bx lr + .align 2, 0 +_0805081C: .4byte gUnk_0200AF00 + + thumb_func_start sub_08050820 +sub_08050820: @ 0x08050820 + push {lr} + ldr r1, _0805083C @ =gUnk_080FC8FC + ldr r0, _08050840 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08050844 @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_08050A64 + pop {pc} + .align 2, 0 +_0805083C: .4byte gUnk_080FC8FC +_08050840: .4byte gUnk_02000080 +_08050844: .4byte gUnk_02019EE0 + + thumb_func_start sub_08050848 +sub_08050848: @ 0x08050848 + push {lr} + movs r0, #7 + bl sub_080503A8 + bl sub_0805070C + ldr r0, _08050868 @ =gUnk_02019EE0 + movs r1, #0 + strb r1, [r0, #7] + ldrb r0, [r0, #6] + bl sub_08050AFC + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_08050868: .4byte gUnk_02019EE0 + + thumb_func_start sub_0805086C +sub_0805086C: @ 0x0805086C + push {lr} + ldr r1, _08050880 @ =gUnk_080FC908 + ldr r0, _08050884 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08050880: .4byte gUnk_080FC908 +_08050884: .4byte gUnk_02000080 + + thumb_func_start sub_08050888 +sub_08050888: @ 0x08050888 + push {r4, lr} + ldr r0, _080508C4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080508DC + ldr r4, _080508C8 @ =gUnk_02019EE0 + ldrb r1, [r4, #7] + adds r0, r4, #0 + adds r0, #8 + adds r0, r1, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080508D0 + cmp r0, #1 + beq _080508D6 + adds r0, r1, #0 + bl sub_0805194C + ldrb r1, [r4, #7] + adds r1, #1 + movs r0, #0 + bl sub_08050318 + ldr r1, _080508CC @ =gUnk_02000080 + movs r0, #0x1e + strh r0, [r1, #8] + movs r0, #1 + b _080508DA + .align 2, 0 +_080508C4: .4byte gUnk_03000FD0 +_080508C8: .4byte gUnk_02019EE0 +_080508CC: .4byte gUnk_02000080 +_080508D0: + adds r0, r1, #0 + bl sub_0805194C +_080508D6: + ldr r1, _080508E0 @ =gUnk_02000080 + movs r0, #2 +_080508DA: + strb r0, [r1, #6] +_080508DC: + pop {r4, pc} + .align 2, 0 +_080508E0: .4byte gUnk_02000080 + + thumb_func_start sub_080508E4 +sub_080508E4: @ 0x080508E4 + push {lr} + ldr r2, _08050900 @ =gUnk_02000080 + ldrh r0, [r2, #8] + cmp r0, #0 + bne _08050908 + ldr r0, _08050904 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #9 + ands r0, r1 + cmp r0, #0 + beq _0805090C + movs r0, #2 + strb r0, [r2, #6] + b _0805090C + .align 2, 0 +_08050900: .4byte gUnk_02000080 +_08050904: .4byte gUnk_03000FF0 +_08050908: + subs r0, #1 + strh r0, [r2, #8] +_0805090C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08050910 +sub_08050910: @ 0x08050910 + push {lr} + bl sub_08050384 + ldr r1, _08050930 @ =gUnk_02019EE0 + ldrb r0, [r1, #7] + adds r0, #1 + strb r0, [r1, #7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bls _08050934 + movs r0, #2 + bl sub_080A7114 + b _0805093A + .align 2, 0 +_08050930: .4byte gUnk_02019EE0 +_08050934: + ldr r1, _0805093C @ =gUnk_02000080 + movs r0, #0 + strb r0, [r1, #6] +_0805093A: + pop {pc} + .align 2, 0 +_0805093C: .4byte gUnk_02000080 + + thumb_func_start sub_08050940 +sub_08050940: @ 0x08050940 + push {r4, r5, r6, lr} + ldr r3, _0805099C @ =gUnk_02019EE0 + ldrb r0, [r3] + cmp r0, #0 + beq _0805094C + b _08050A58 +_0805094C: + ldrb r4, [r3, #6] + ldr r0, _080509A0 @ =gUnk_03000FF0 + ldrh r2, [r0, #2] + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08050974 + adds r0, r3, #0 + adds r0, #8 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _08050974 + movs r0, #0xc1 + rsbs r0, r0, #0 + ands r2, r0 +_08050974: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r6, #3 + cmp r0, #1 + bls _08050982 + movs r6, #4 +_08050982: + ldr r0, _080509A4 @ =gUnk_02032EC0 + ldrb r5, [r0, #2] + adds r1, r0, #0 + cmp r2, #0x40 + beq _080509B6 + cmp r2, #0x40 + bhi _080509A8 + cmp r2, #1 + beq _080509E0 + cmp r2, #8 + beq _080509E0 + b _08050A10 + .align 2, 0 +_0805099C: .4byte gUnk_02019EE0 +_080509A0: .4byte gUnk_03000FF0 +_080509A4: .4byte gUnk_02032EC0 +_080509A8: + cmp r2, #0x80 + beq _080509BE + movs r0, #0x80 + lsls r0, r0, #1 + cmp r2, r0 + beq _080509C8 + b _08050A10 +_080509B6: + cmp r4, #0 + ble _08050A10 + subs r4, #1 + b _08050A10 +_080509BE: + subs r0, r6, #1 + cmp r0, r4 + ble _08050A10 + adds r4, #1 + b _08050A10 +_080509C8: + ldr r0, _080509DC @ =gUnk_02019EE0 + adds r0, #8 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _08050A10 + movs r5, #3 + b _08050A10 + .align 2, 0 +_080509DC: .4byte gUnk_02019EE0 +_080509E0: + adds r0, r4, #0 + bl sub_0805041C + cmp r4, #3 + bne _080509EE + movs r5, #2 + b _08050A0E +_080509EE: + ldr r0, _08050A04 @ =gUnk_02019EE0 + adds r0, #8 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08050A08 + cmp r0, #1 + beq _08050A0C + b _08050A0E + .align 2, 0 +_08050A04: .4byte gUnk_02019EE0 +_08050A08: + movs r5, #1 + b _08050A0E +_08050A0C: + movs r5, #4 +_08050A0E: + ldr r1, _08050A5C @ =gUnk_02032EC0 +_08050A10: + ldrb r0, [r1, #2] + cmp r0, r5 + beq _08050A22 + adds r0, r5, #0 + bl sub_080503BC + movs r0, #0x6a + bl sub_080A3268 +_08050A22: + adds r0, r4, r6 + adds r1, r6, #0 + bl __modsi3 + adds r4, r0, #0 + ldr r5, _08050A60 @ =gUnk_02019EE0 + ldrb r0, [r5, #6] + cmp r0, r4 + beq _08050A42 + strb r4, [r5, #6] + adds r0, r4, #0 + bl sub_08050AFC + movs r0, #0x69 + bl sub_080A3268 +_08050A42: + adds r0, r5, #0 + adds r0, #8 + ldrb r5, [r5, #6] + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _08050A58 + bl sub_08050810 +_08050A58: + pop {r4, r5, r6, pc} + .align 2, 0 +_08050A5C: .4byte gUnk_02032EC0 +_08050A60: .4byte gUnk_02019EE0 + + thumb_func_start sub_08050A64 +sub_08050A64: @ 0x08050A64 + push {r4, lr} + ldr r1, _08050AF0 @ =gUnk_02019EE0 + adds r1, #8 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _08050AEC + ldr r4, _08050AF4 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #8] + movs r0, #0x40 + bl sub_0807CA84 + cmp r0, #0 + beq _08050A9E + movs r0, #0xa2 + strh r0, [r4] + movs r0, #0x36 + strh r0, [r4, #2] + ldr r0, _08050AF8 @ =0x00000145 + movs r1, #0x24 + bl sub_080ADA14 +_08050A9E: + movs r0, #0x41 + bl sub_0807CA84 + cmp r0, #0 + beq _08050AB8 + movs r0, #0x96 + strh r0, [r4] + movs r0, #0x3d + strh r0, [r4, #2] + ldr r0, _08050AF8 @ =0x00000145 + movs r1, #0x22 + bl sub_080ADA14 +_08050AB8: + movs r0, #0x42 + bl sub_0807CA84 + cmp r0, #0 + beq _08050AD2 + movs r0, #0xae + strh r0, [r4] + movs r0, #0x3d + strh r0, [r4, #2] + ldr r0, _08050AF8 @ =0x00000145 + movs r1, #0x23 + bl sub_080ADA14 +_08050AD2: + movs r0, #0x43 + bl sub_0807CA84 + cmp r0, #0 + beq _08050AEC + movs r0, #0xa2 + strh r0, [r4] + movs r0, #0x44 + strh r0, [r4, #2] + ldr r0, _08050AF8 @ =0x00000145 + movs r1, #0x21 + bl sub_080ADA14 +_08050AEC: + pop {r4, pc} + .align 2, 0 +_08050AF0: .4byte gUnk_02019EE0 +_08050AF4: .4byte gUnk_03001010 +_08050AF8: .4byte 0x00000145 + + thumb_func_start sub_08050AFC +sub_08050AFC: @ 0x08050AFC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0805041C + ldr r5, _08050B30 @ =gUnk_02021F30 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r5, #0 + bl sub_0801D630 + ldr r0, _08050B34 @ =gUnk_02019EE0 + adds r0, #8 + adds r4, r4, r0 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #1 + bne _08050B28 + movs r1, #0xa7 + lsls r1, r1, #2 + adds r0, r5, r1 + bl sub_08050B3C +_08050B28: + ldr r1, _08050B38 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0x1a] + pop {r4, r5, pc} + .align 2, 0 +_08050B30: .4byte gUnk_02021F30 +_08050B34: .4byte gUnk_02019EE0 +_08050B38: .4byte gUnk_03000F50 + + thumb_func_start sub_08050B3C +sub_08050B3C: @ 0x08050B3C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r0, [sp] + ldr r1, _08050C18 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xaa + ldrb r0, [r0] + lsrs r2, r0, #1 + cmp r2, #0 + bne _08050B5A + movs r2, #1 +_08050B5A: + adds r0, r1, #0 + adds r0, #0xab + ldrb r0, [r0] + lsrs r3, r0, #1 + cmp r3, #0 + beq _08050C0A + cmp r2, r3 + ble _08050B6C + adds r2, r3, #0 +_08050B6C: + movs r0, #3 + ands r0, r2 + str r0, [sp, #4] + adds r0, r2, #0 + asrs r5, r0, #2 + mov ip, r5 + cmp r5, #0xa + ble _08050B80 + movs r2, #0xa + mov ip, r2 +_08050B80: + adds r6, r5, #0 + subs r6, #0xa + mov sb, r6 + cmp r6, #0 + bge _08050B8E + movs r7, #0 + mov sb, r7 +_08050B8E: + adds r0, r3, #0 + asrs r3, r0, #2 + adds r0, r3, #0 + cmp r3, #0xa + ble _08050B9A + movs r3, #0xa +_08050B9A: + adds r4, r0, #0 + subs r4, #0xa + ldr r2, [sp] + ldr r0, _08050C1C @ =0x0000F24C + mov sl, r0 + strh r0, [r2] + ldr r1, _08050C20 @ =0x040000D4 + movs r7, #0xa + mov r8, r7 + mov r0, r8 + mov r7, ip + subs r0, r0, r7 + lsls r0, r0, #1 + ldr r7, _08050C24 @ =gUnk_080FC914 + mov ip, r7 + add r0, ip + str r0, [r1] + adds r0, r2, #2 + str r0, [r1, #4] + movs r0, #0x80 + lsls r0, r0, #0x18 + orrs r3, r0 + str r3, [r1, #8] + ldr r0, [r1, #8] + cmp r4, #0 + ble _08050BEE + adds r2, #0x40 + mov r3, sl + strh r3, [r2] + mov r7, r8 + mov r3, sb + subs r0, r7, r3 + lsls r0, r0, #1 + add r0, ip + str r0, [r1] + adds r0, r2, #2 + str r0, [r1, #4] + movs r7, #0x80 + lsls r7, r7, #0x18 + orrs r4, r7 + str r4, [r1, #8] + ldr r0, [r1, #8] +_08050BEE: + ldr r0, [sp, #4] + cmp r0, #0 + beq _08050C0A + ldr r2, [sp] + cmp r5, #9 + ble _08050BFE + adds r5, r6, #0 + adds r2, #0x40 +_08050BFE: + lsls r0, r5, #1 + adds r0, r0, r2 + ldr r2, [sp, #4] + ldr r3, _08050C28 @ =0xFFFFF24D + adds r1, r2, r3 + strh r1, [r0, #2] +_08050C0A: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08050C18: .4byte gUnk_02002A40 +_08050C1C: .4byte 0x0000F24C +_08050C20: .4byte 0x040000D4 +_08050C24: .4byte gUnk_080FC914 +_08050C28: .4byte 0xFFFFF24D + + thumb_func_start sub_08050C2C +sub_08050C2C: @ 0x08050C2C + push {lr} + ldr r1, _08050C48 @ =gUnk_080FC93C + ldr r0, _08050C4C @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08050C50 @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_08050A64 + pop {pc} + .align 2, 0 +_08050C48: .4byte gUnk_080FC93C +_08050C4C: .4byte gUnk_02000080 +_08050C50: .4byte gUnk_02019EE0 + + thumb_func_start sub_08050C54 +sub_08050C54: @ 0x08050C54 + push {r4, lr} + ldr r0, _08050C78 @ =gUnk_02019EE0 + ldrb r0, [r0] + cmp r0, #0 + beq _08050C60 + b _08050D60 +_08050C60: + ldr r0, _08050C7C @ =gUnk_02000080 + ldrb r4, [r0, #1] + ldr r0, _08050C80 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + subs r0, #1 + cmp r0, #0x1f + bhi _08050D44 + lsls r0, r0, #2 + ldr r1, _08050C84 @ =_08050C88 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08050C78: .4byte gUnk_02019EE0 +_08050C7C: .4byte gUnk_02000080 +_08050C80: .4byte gUnk_03000FF0 +_08050C84: .4byte _08050C88 +_08050C88: @ jump table + .4byte _08050D08 @ case 0 + .4byte _08050D30 @ case 1 + .4byte _08050D44 @ case 2 + .4byte _08050D44 @ case 3 + .4byte _08050D44 @ case 4 + .4byte _08050D44 @ case 5 + .4byte _08050D44 @ case 6 + .4byte _08050D08 @ case 7 + .4byte _08050D44 @ case 8 + .4byte _08050D44 @ case 9 + .4byte _08050D44 @ case 10 + .4byte _08050D44 @ case 11 + .4byte _08050D44 @ case 12 + .4byte _08050D44 @ case 13 + .4byte _08050D44 @ case 14 + .4byte _08050D42 @ case 15 + .4byte _08050D44 @ case 16 + .4byte _08050D44 @ case 17 + .4byte _08050D44 @ case 18 + .4byte _08050D44 @ case 19 + .4byte _08050D44 @ case 20 + .4byte _08050D44 @ case 21 + .4byte _08050D44 @ case 22 + .4byte _08050D44 @ case 23 + .4byte _08050D44 @ case 24 + .4byte _08050D44 @ case 25 + .4byte _08050D44 @ case 26 + .4byte _08050D44 @ case 27 + .4byte _08050D44 @ case 28 + .4byte _08050D44 @ case 29 + .4byte _08050D44 @ case 30 + .4byte _08050D3E @ case 31 +_08050D08: + cmp r4, #0 + bne _08050D12 + ldr r0, _08050D28 @ =0x80080000 + bl sub_080A3268 +_08050D12: + ldr r1, _08050D2C @ =gUnk_02000080 + movs r0, #0xf + strh r0, [r1, #8] + movs r0, #1 + bl sub_080A7114 + movs r0, #0x6a + bl sub_080A3268 + b _08050D44 + .align 2, 0 +_08050D28: .4byte 0x80080000 +_08050D2C: .4byte gUnk_02000080 +_08050D30: + movs r0, #0x6c + bl sub_080A3268 + movs r0, #0 + bl sub_080503BC + b _08050D44 +_08050D3E: + subs r4, #1 + b _08050D44 +_08050D42: + adds r4, #1 +_08050D44: + cmp r4, #0 + bge _08050D4A + movs r4, #0 +_08050D4A: + cmp r4, #2 + ble _08050D50 + movs r4, #2 +_08050D50: + ldr r1, _08050D64 @ =gUnk_02000080 + ldrb r0, [r1, #1] + cmp r0, r4 + beq _08050D60 + strb r4, [r1, #1] + movs r0, #0x69 + bl sub_080A3268 +_08050D60: + pop {r4, pc} + .align 2, 0 +_08050D64: .4byte gUnk_02000080 + + thumb_func_start sub_08050D68 +sub_08050D68: @ 0x08050D68 + push {lr} + ldr r1, _08050D84 @ =gUnk_02000080 + ldrh r0, [r1, #8] + cmp r0, #0 + bne _08050D94 + ldrb r0, [r1, #1] + cmp r0, #1 + beq _08050D88 + cmp r0, #1 + ble _08050D80 + cmp r0, #2 + beq _08050D8C +_08050D80: + movs r0, #7 + b _08050D8E + .align 2, 0 +_08050D84: .4byte gUnk_02000080 +_08050D88: + movs r0, #5 + b _08050D8E +_08050D8C: + movs r0, #6 +_08050D8E: + bl sub_080503BC + b _08050D98 +_08050D94: + subs r0, #1 + strh r0, [r1, #8] +_08050D98: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08050D9C +sub_08050D9C: @ 0x08050D9C + push {lr} + ldr r1, _08050DB0 @ =gUnk_080FC944 + ldr r0, _08050DB4 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08050DB0: .4byte gUnk_080FC944 +_08050DB4: .4byte gUnk_02000080 + + thumb_func_start sub_08050DB8 +sub_08050DB8: @ 0x08050DB8 + push {lr} + ldr r0, _08050DDC @ =gUnk_020344B0 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + movs r0, #0xc + bl sub_080503A8 + ldr r1, _08050DE0 @ =gUnk_02000080 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + strb r0, [r1, #4] + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_08050DDC: .4byte gUnk_020344B0 +_08050DE0: .4byte gUnk_02000080 + + thumb_func_start sub_08050DE4 +sub_08050DE4: @ 0x08050DE4 + push {r4, lr} + ldr r0, _08050E0C @ =gUnk_02019EE0 + ldrb r0, [r0] + cmp r0, #0 + bne _08050E80 + movs r1, #0x80 + lsls r1, r1, #0x12 + ldrb r4, [r1, #7] + ldr r0, _08050E10 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #8 + beq _08050E26 + cmp r0, #8 + bgt _08050E14 + cmp r0, #1 + beq _08050E26 + cmp r0, #2 + beq _08050E50 + b _08050E62 + .align 2, 0 +_08050E0C: .4byte gUnk_02019EE0 +_08050E10: .4byte gUnk_03000FF0 +_08050E14: + cmp r0, #0x40 + beq _08050E1E + cmp r0, #0x80 + beq _08050E22 + b _08050E62 +_08050E1E: + subs r4, #1 + b _08050E62 +_08050E22: + adds r4, #1 + b _08050E62 +_08050E26: + movs r0, #0x6a + bl sub_080A3268 + ldr r0, _08050E44 @ =gUnk_02000080 + ldrb r0, [r0, #4] + cmp r0, r4 + beq _08050E48 + movs r0, #2 + bl sub_080A7114 + movs r0, #8 + movs r1, #0 + bl sub_08050318 + b _08050E62 + .align 2, 0 +_08050E44: .4byte gUnk_02000080 +_08050E48: + movs r0, #0 + bl sub_080503BC + b _08050E62 +_08050E50: + ldr r0, _08050E84 @ =gUnk_02000080 + ldrb r4, [r0, #4] + strb r4, [r1, #7] + movs r0, #0x6c + bl sub_080A3268 + movs r0, #0 + bl sub_080503BC +_08050E62: + cmp r4, #1 + bgt _08050E68 + movs r4, #2 +_08050E68: + cmp r4, #6 + ble _08050E6E + movs r4, #6 +_08050E6E: + movs r1, #0x80 + lsls r1, r1, #0x12 + ldrb r0, [r1, #7] + cmp r0, r4 + beq _08050E80 + strb r4, [r1, #7] + movs r0, #0x69 + bl sub_080A3268 +_08050E80: + pop {r4, pc} + .align 2, 0 +_08050E84: .4byte gUnk_02000080 + + thumb_func_start sub_08050E88 +sub_08050E88: @ 0x08050E88 + push {lr} + movs r0, #2 + bl sub_0807CDA4 + cmp r0, #0 + beq _08050E9A + movs r0, #0 + bl sub_080503BC +_08050E9A: + pop {pc} + + thumb_func_start sub_08050E9C +sub_08050E9C: @ 0x08050E9C + push {lr} + ldr r1, _08050EB0 @ =gUnk_080FC950 + ldr r0, _08050EB4 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08050EB0: .4byte gUnk_080FC950 +_08050EB4: .4byte gUnk_02000080 + + thumb_func_start sub_08050EB8 +sub_08050EB8: @ 0x08050EB8 + push {lr} + movs r0, #0xe + bl sub_080503A8 + ldr r2, _08050EE8 @ =gUnk_02019EE0 + ldrb r1, [r2, #6] + ldr r0, _08050EEC @ =0x000004B4 + muls r1, r0, r1 + adds r0, r2, #0 + adds r0, #0xc + adds r1, r1, r0 + ldrb r0, [r1, #2] + movs r3, #0 + strb r0, [r2, #4] + ldrb r0, [r1, #3] + strb r0, [r2, #5] + ldr r1, _08050EF0 @ =gUnk_02000080 + strb r3, [r1, #1] + movs r0, #0xff + strh r0, [r1, #8] + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_08050EE8: .4byte gUnk_02019EE0 +_08050EEC: .4byte 0x000004B4 +_08050EF0: .4byte gUnk_02000080 + + thumb_func_start sub_08050EF4 +sub_08050EF4: @ 0x08050EF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _08050F40 @ =gUnk_02019EE0 + ldrb r1, [r0] + adds r6, r0, #0 + cmp r1, #0 + bne _08050FF4 + ldrb r1, [r6, #6] + ldr r0, _08050F44 @ =0x000004B4 + muls r1, r0, r1 + adds r0, r6, #0 + adds r0, #0xc + adds r1, r1, r0 + ldr r0, _08050F48 @ =gUnk_02000080 + ldrb r3, [r0, #1] + adds r4, r1, #3 + mov ip, r0 + cmp r3, #0 + bne _08050F1E + adds r4, r1, #2 +_08050F1E: + ldrb r2, [r4] + movs r5, #0 + ldr r0, _08050F4C @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + mov r8, r2 + cmp r0, #0x10 + beq _08050F7A + cmp r0, #0x10 + bgt _08050F56 + cmp r0, #2 + beq _08050F8C + cmp r0, #2 + bgt _08050F50 + cmp r0, #1 + beq _08050F82 + b _08050F8E + .align 2, 0 +_08050F40: .4byte gUnk_02019EE0 +_08050F44: .4byte 0x000004B4 +_08050F48: .4byte gUnk_02000080 +_08050F4C: .4byte gUnk_03000FF0 +_08050F50: + cmp r0, #8 + beq _08050F82 + b _08050F8E +_08050F56: + cmp r0, #0x40 + beq _08050F6A + cmp r0, #0x40 + bgt _08050F64 + cmp r0, #0x20 + beq _08050F72 + b _08050F8E +_08050F64: + cmp r0, #0x80 + beq _08050F6E + b _08050F8E +_08050F6A: + movs r3, #0 + b _08050F8E +_08050F6E: + movs r3, #1 + b _08050F8E +_08050F72: + cmp r2, #0 + beq _08050F8E + subs r2, #1 + b _08050F8E +_08050F7A: + cmp r2, #1 + bhi _08050F8E + adds r2, #1 + b _08050F8E +_08050F82: + ldrh r0, [r6, #4] + movs r5, #2 + ldrh r7, [r1, #2] + cmp r0, r7 + bne _08050F8E +_08050F8C: + movs r5, #3 +_08050F8E: + cmp r5, #0 + beq _08050FD0 + cmp r5, #2 + beq _08050F9C + cmp r5, #3 + beq _08050FAC + b _08050FBA +_08050F9C: + movs r0, #8 + movs r1, #0 + bl sub_08050318 + movs r0, #0x6a + bl sub_080A3268 + b _08050FBA +_08050FAC: + ldrb r0, [r6, #4] + strb r0, [r1, #2] + ldrb r0, [r6, #5] + strb r0, [r1, #3] + movs r0, #0x6c + bl sub_080A3268 +_08050FBA: + adds r0, r5, #0 + bl sub_080A7114 + ldr r0, _08050FCC @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_0805041C + b _08050FF4 + .align 2, 0 +_08050FCC: .4byte gUnk_02019EE0 +_08050FD0: + mov r1, ip + ldrb r0, [r1, #1] + cmp r0, r3 + beq _08050FE2 + strb r3, [r1, #1] + movs r0, #0x69 + bl sub_080A3268 + b _08050FF4 +_08050FE2: + cmp r2, r8 + beq _08050FF4 + strb r2, [r4] + ldrb r0, [r6, #6] + bl sub_080503E4 + movs r0, #0x69 + bl sub_080A3268 +_08050FF4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08050FFC +sub_08050FFC: @ 0x08050FFC + push {lr} + movs r0, #0 + bl sub_0807CDA4 + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08051014 + cmp r1, #1 + beq _0805102A + b _08051030 +_08051014: + ldr r1, _08051034 @ =gUnk_02000080 + movs r0, #0x1e + strh r0, [r1, #8] + ldr r0, _08051038 @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_0805194C + movs r0, #9 + movs r1, #0 + bl sub_08050318 +_0805102A: + movs r0, #3 + bl sub_080A7114 +_08051030: + pop {pc} + .align 2, 0 +_08051034: .4byte gUnk_02000080 +_08051038: .4byte gUnk_02019EE0 + + thumb_func_start sub_0805103C +sub_0805103C: @ 0x0805103C + push {lr} + ldr r0, _08051050 @ =gUnk_02000080 + ldrb r1, [r0, #8] + adds r2, r0, #0 + cmp r1, #0 + beq _08051054 + cmp r1, #0xff + beq _0805106C + b _08051060 + .align 2, 0 +_08051050: .4byte gUnk_02000080 +_08051054: + ldr r0, _08051068 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #9 + ands r0, r1 + cmp r0, #0 + beq _08051072 +_08051060: + ldrh r0, [r2, #8] + subs r0, #1 + strh r0, [r2, #8] + b _08051072 + .align 2, 0 +_08051068: .4byte gUnk_03000FF0 +_0805106C: + movs r0, #0 + bl sub_080503BC +_08051072: + pop {pc} + + thumb_func_start sub_08051074 +sub_08051074: @ 0x08051074 + push {lr} + ldr r1, _08051088 @ =gUnk_080FC960 + ldr r0, _0805108C @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08051088: .4byte gUnk_080FC960 +_0805108C: .4byte gUnk_02000080 + + thumb_func_start sub_08051090 +sub_08051090: @ 0x08051090 + push {lr} + movs r0, #8 + bl sub_080503A8 + bl sub_08050790 + bl sub_0805070C + bl sub_08051458 + ldr r1, _080510B4 @ =gUnk_03000F50 + movs r0, #0xff + strh r0, [r1, #0x18] + strh r0, [r1, #0x24] + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_080510B4: .4byte gUnk_03000F50 + + thumb_func_start sub_080510B8 +sub_080510B8: @ 0x080510B8 + push {r4, r5, r6, r7, lr} + ldr r0, _080510E4 @ =gUnk_02019EE0 + ldrb r0, [r0] + cmp r0, #0 + beq _080510C4 + b _0805134C +_080510C4: + movs r7, #0 + ldr r0, _080510E8 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + adds r2, r0, #0 + cmp r1, #8 + bne _080510D2 + b _080511C8 +_080510D2: + cmp r1, #8 + bgt _080510EC + cmp r1, #1 + bne _080510DC + b _080511F2 +_080510DC: + cmp r1, #2 + beq _080511B8 + b _08051100 + .align 2, 0 +_080510E4: .4byte gUnk_02019EE0 +_080510E8: .4byte gUnk_03000FF0 +_080510EC: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bne _080510F6 + b _0805122C +_080510F6: + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + bne _08051100 + b _0805121C +_08051100: + movs r6, #0 + movs r5, #0 + ldrh r0, [r2, #4] + cmp r0, #0x20 + beq _08051128 + cmp r0, #0x20 + bgt _08051114 + cmp r0, #0x10 + beq _0805112E + b _08051130 +_08051114: + cmp r0, #0x40 + beq _0805111E + cmp r0, #0x80 + beq _08051124 + b _08051130 +_0805111E: + movs r5, #1 + rsbs r5, r5, #0 + b _08051130 +_08051124: + movs r5, #1 + b _08051130 +_08051128: + movs r6, #1 + rsbs r6, r6, #0 + b _08051130 +_0805112E: + movs r6, #1 +_08051130: + ldr r4, _0805117C @ =gUnk_02000080 + ldrb r0, [r4, #0x11] + adds r0, r0, r5 + adds r0, #6 + movs r1, #6 + bl __modsi3 + strb r0, [r4, #0x11] + orrs r5, r6 + cmp r5, #0 + beq _0805114C + movs r0, #0x67 + bl sub_080A3268 +_0805114C: + cmp r6, #0 + beq _0805123A + ldrb r0, [r4, #0x11] + cmp r0, #5 + beq _08051184 + ldrb r0, [r4, #0x10] + adds r0, r0, r6 + adds r0, #0xd + movs r1, #0xd + bl __modsi3 + strb r0, [r4, #0x10] + ldr r1, _08051180 @ =gUnk_080FC980 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _08051172 + adds r1, #0x10 +_08051172: + ldrb r0, [r4, #0x10] + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r4, #0x12] + b _0805123A + .align 2, 0 +_0805117C: .4byte gUnk_02000080 +_08051180: .4byte gUnk_080FC980 +_08051184: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + adds r5, r0, #0 + movs r1, #4 + cmp r5, #0 + bne _08051194 + movs r1, #5 +_08051194: + ldrb r0, [r4, #0x12] + adds r0, r0, r6 + adds r0, r0, r1 + bl __modsi3 + strb r0, [r4, #0x12] + ldr r1, _080511B4 @ =gUnk_080FC9A0 + cmp r5, #0 + beq _080511A8 + adds r1, #8 +_080511A8: + ldrb r0, [r4, #0x12] + adds r0, r1, r0 + ldrb r0, [r0] + strb r0, [r4, #0x10] + b _0805123A + .align 2, 0 +_080511B4: .4byte gUnk_080FC9A0 +_080511B8: + ldr r0, _080511C4 @ =gUnk_02000080 + ldrb r0, [r0, #0x13] + cmp r0, #0 + beq _080511EC + movs r7, #5 + b _0805123A + .align 2, 0 +_080511C4: .4byte gUnk_02000080 +_080511C8: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #3 + cmp r0, #0 + bne _080511D6 + movs r1, #4 +_080511D6: + ldr r2, _080511E8 @ =gUnk_02000080 + ldrb r0, [r2, #0x11] + cmp r0, #5 + bne _080511EC + ldrb r2, [r2, #0x12] + cmp r1, r2 + bne _080511EC + movs r7, #8 + b _0805123A + .align 2, 0 +_080511E8: .4byte gUnk_02000080 +_080511EC: + bl sub_08051358 + b _0805123A +_080511F2: + ldr r1, _08051210 @ =gUnk_02000080 + ldrb r0, [r1, #0x11] + cmp r0, #5 + bne _08051218 + ldr r2, _08051214 @ =gUnk_080FC970 + ldrb r1, [r1, #0x12] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _0805120A + adds r1, #8 +_0805120A: + adds r0, r1, r2 + ldrb r7, [r0] + b _0805123A + .align 2, 0 +_08051210: .4byte gUnk_02000080 +_08051214: .4byte gUnk_080FC970 +_08051218: + movs r7, #6 + b _0805123A +_0805121C: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r7, #1 + cmp r0, #0 + bne _0805123A + movs r7, #4 + b _0805123A +_0805122C: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r7, #2 + cmp r0, #0 + bne _0805123A + movs r7, #7 +_0805123A: + ldr r0, _08051250 @ =gUnk_02000080 + ldrb r4, [r0, #1] + subs r0, r7, #1 + cmp r0, #7 + bhi _08051322 + lsls r0, r0, #2 + ldr r1, _08051254 @ =_08051258 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08051250: .4byte gUnk_02000080 +_08051254: .4byte _08051258 +_08051258: @ jump table + .4byte _08051278 @ case 0 + .4byte _0805127C @ case 1 + .4byte _08051280 @ case 2 + .4byte _08051284 @ case 3 + .4byte _08051288 @ case 4 + .4byte _080512C0 @ case 5 + .4byte _080512B8 @ case 6 + .4byte _080512EC @ case 7 +_08051278: + movs r4, #0 + b _08051322 +_0805127C: + movs r4, #1 + b _08051322 +_08051280: + movs r4, #2 + b _08051322 +_08051284: + adds r4, #1 + b _08051322 +_08051288: + ldr r3, _080512B0 @ =gUnk_02000080 + ldrb r0, [r3, #0x13] + cmp r0, #0 + beq _08051322 + subs r0, #1 + movs r2, #0 + strb r0, [r3, #0x13] + ldr r1, _080512B4 @ =gUnk_02002A40 + ldrb r0, [r3, #0x13] + adds r1, #0x80 + adds r0, r0, r1 + strb r2, [r0] + ldrb r0, [r3, #0x13] + adds r0, #1 + adds r0, r0, r1 + strb r2, [r0] + movs r0, #0x6c + bl sub_08051574 + b _08051322 + .align 2, 0 +_080512B0: .4byte gUnk_02000080 +_080512B4: .4byte gUnk_02002A40 +_080512B8: + movs r0, #0 + bl sub_08051480 + b _08051322 +_080512C0: + ldr r2, _080512E4 @ =gUnk_02001A40 + ldr r0, _080512E8 @ =gUnk_02000080 + ldrb r1, [r0, #0x10] + lsls r1, r1, #1 + ldrb r0, [r0, #0x11] + lsls r0, r0, #6 + adds r0, #0xc3 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + lsrs r0, r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_08051480 + b _08051322 + .align 2, 0 +_080512E4: .4byte gUnk_02001A40 +_080512E8: .4byte gUnk_02000080 +_080512EC: + movs r3, #5 + ldr r0, _08051350 @ =gUnk_02002A40 + adds r6, r0, #0 + adds r6, #0x80 + movs r5, #0 +_080512F6: + adds r2, r3, r6 + ldrb r1, [r2] + cmp r1, #0 + beq _08051302 + cmp r1, #0x20 + bne _0805130A +_08051302: + strb r5, [r2] + subs r3, #1 + cmp r3, #0 + bge _080512F6 +_0805130A: + adds r0, #0x80 + ldrb r0, [r0] + movs r7, #3 + cmp r0, #0 + beq _08051316 + movs r7, #2 +_08051316: + movs r0, #0x6a + bl sub_08051574 + adds r0, r7, #0 + bl sub_080A7114 +_08051322: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #2 + cmp r0, #0 + bne _08051330 + movs r1, #3 +_08051330: + adds r0, r4, r1 + bl __modsi3 + adds r4, r0, #0 + ldr r1, _08051354 @ =gUnk_02000080 + ldrb r0, [r1, #1] + cmp r0, r4 + beq _0805134C + strb r4, [r1, #1] + bl sub_08051458 + movs r0, #0x68 + bl sub_080A3268 +_0805134C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08051350: .4byte gUnk_02002A40 +_08051354: .4byte gUnk_02000080 + + thumb_func_start sub_08051358 +sub_08051358: @ 0x08051358 + push {lr} + ldr r2, _08051384 @ =gUnk_02000080 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #3 + cmp r0, #0 + bne _0805136A + movs r1, #4 +_0805136A: + strb r1, [r2, #0x12] + ldrh r1, [r2, #0x10] + ldr r0, _08051388 @ =0x0000050B + cmp r1, r0 + beq _08051382 + movs r0, #5 + strb r0, [r2, #0x11] + movs r0, #0xb + strb r0, [r2, #0x10] + movs r0, #0x67 + bl sub_080A3268 +_08051382: + pop {pc} + .align 2, 0 +_08051384: .4byte gUnk_02000080 +_08051388: .4byte 0x0000050B + + thumb_func_start sub_0805138C +sub_0805138C: @ 0x0805138C + push {lr} + ldr r1, _080513A0 @ =gUnk_080FC9B0 + ldr r0, _080513A4 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080513A0: .4byte gUnk_080FC9B0 +_080513A4: .4byte gUnk_02000080 + + thumb_func_start sub_080513A8 +sub_080513A8: @ 0x080513A8 + push {lr} + movs r0, #5 + movs r1, #0 + bl sub_08050318 + ldr r1, _080513BC @ =gUnk_02000080 + movs r0, #1 + strb r0, [r1, #6] + pop {pc} + .align 2, 0 +_080513BC: .4byte gUnk_02000080 + + thumb_func_start sub_080513C0 +sub_080513C0: @ 0x080513C0 + push {lr} + movs r0, #0 + bl sub_0807CDA4 + adds r2, r0, #0 + cmp r2, #0 + beq _08051412 + cmp r2, #0 + bgt _080513DC + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _080513F8 + b _08051412 +_080513DC: + cmp r2, #1 + bne _08051412 + ldr r1, _080513F4 @ =gUnk_02019EE0 + adds r0, r1, #0 + adds r0, #8 + ldrb r1, [r1, #6] + adds r0, r0, r1 + strb r2, [r0] + movs r0, #3 + bl sub_080A7114 + b _08051412 + .align 2, 0 +_080513F4: .4byte gUnk_02019EE0 +_080513F8: + ldr r0, _08051414 @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_0805194C + movs r0, #6 + movs r1, #0 + bl sub_08050318 + ldr r1, _08051418 @ =gUnk_02000080 + movs r0, #0x1e + strh r0, [r1, #8] + movs r0, #2 + strb r0, [r1, #6] +_08051412: + pop {pc} + .align 2, 0 +_08051414: .4byte gUnk_02019EE0 +_08051418: .4byte gUnk_02000080 + + thumb_func_start sub_0805141C +sub_0805141C: @ 0x0805141C + push {lr} + ldr r1, _0805143C @ =gUnk_02000080 + ldrh r0, [r1, #8] + cmp r0, #0 + bne _08051444 + ldr r0, _08051440 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #9 + ands r0, r1 + cmp r0, #0 + beq _08051448 + movs r0, #3 + bl sub_080A7114 + b _08051448 + .align 2, 0 +_0805143C: .4byte gUnk_02000080 +_08051440: .4byte gUnk_03000FF0 +_08051444: + subs r0, #1 + strh r0, [r1, #8] +_08051448: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805144C +sub_0805144C: @ 0x0805144C + push {lr} + movs r0, #0 + bl sub_080503BC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08051458 +sub_08051458: @ 0x08051458 + push {lr} + ldr r0, _08051474 @ =gUnk_02000080 + ldrb r0, [r0, #1] + adds r0, #9 + bl sub_080503A8 + ldr r0, _08051478 @ =gUnk_02001B40 + ldr r1, _0805147C @ =gUnk_02022030 + movs r2, #0x80 + lsls r2, r2, #3 + bl sub_0801D66C + pop {pc} + .align 2, 0 +_08051474: .4byte gUnk_02000080 +_08051478: .4byte gUnk_02001B40 +_0805147C: .4byte gUnk_02022030 + + thumb_func_start sub_08051480 +sub_08051480: @ 0x08051480 + push {r4, lr} + adds r4, r0, #0 + bl sub_080514BC + ldr r2, _080514B4 @ =gUnk_02000080 + ldrb r1, [r2, #0x13] + cmp r0, #0 + beq _080514B0 + cmp r0, #1 + beq _08051498 + adds r4, r0, #0 + subs r1, #1 +_08051498: + cmp r1, #5 + bls _0805149E + movs r1, #5 +_0805149E: + adds r0, r1, #1 + strb r0, [r2, #0x13] + ldr r0, _080514B8 @ =gUnk_02002A40 + adds r0, #0x80 + adds r0, r1, r0 + strb r4, [r0] + movs r0, #0x6b + bl sub_08051574 +_080514B0: + pop {r4, pc} + .align 2, 0 +_080514B4: .4byte gUnk_02000080 +_080514B8: .4byte gUnk_02002A40 + + thumb_func_start sub_080514BC +sub_080514BC: @ 0x080514BC + push {lr} + adds r2, r0, #0 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _080514D6 + cmp r2, #0 + beq _080514DA + cmp r2, #0xf + bhi _080514D6 + cmp r2, #0xe + bhs _080514DA +_080514D6: + movs r0, #1 + b _08051572 +_080514DA: + ldr r0, _08051500 @ =gUnk_02000080 + ldrb r1, [r0, #0x13] + cmp r1, #0 + beq _08051570 + ldr r0, _08051504 @ =gUnk_02002A40 + adds r0, r0, r1 + adds r0, #0x7f + ldrb r1, [r0] + adds r0, r1, #0 + subs r0, #0xa4 + cmp r0, #0x28 + bhi _08051522 + cmp r2, #0xe + beq _0805153C + cmp r2, #0xe + bhi _08051508 + cmp r2, #0 + beq _0805150E + b _0805153C + .align 2, 0 +_08051500: .4byte gUnk_02000080 +_08051504: .4byte gUnk_02002A40 +_08051508: + cmp r2, #0xf + beq _08051518 + b _0805153C +_0805150E: + cmp r1, #0xc2 + bhi _0805151C + adds r0, r1, #0 + adds r0, #0x33 + b _08051572 +_08051518: + cmp r1, #0xc2 + bls _08051570 +_0805151C: + adds r0, r1, #0 + adds r0, #0xa + b _08051572 +_08051522: + adds r0, r1, #0 + subs r0, #0xcd + cmp r0, #9 + bhi _0805154C + cmp r2, #0xe + beq _08051546 + cmp r2, #0xe + bhi _08051538 + cmp r2, #0 + beq _08051540 + b _0805154C +_08051538: + cmp r2, #0xf + bne _0805154C +_0805153C: + adds r0, r1, #0 + b _08051572 +_08051540: + adds r0, r1, #0 + adds r0, #0x29 + b _08051572 +_08051546: + adds r0, r1, #0 + subs r0, #0xa + b _08051572 +_0805154C: + adds r0, r1, #0 + subs r0, #0xd7 + cmp r0, #0x28 + bhi _08051570 + cmp r2, #0xe + beq _08051560 + cmp r2, #0xe + bls _08051560 + cmp r2, #0xf + beq _08051566 +_08051560: + adds r0, r1, #0 + subs r0, #0x33 + b _08051572 +_08051566: + cmp r1, #0xf5 + bls _08051570 + adds r0, r1, #0 + subs r0, #0x29 + b _08051572 +_08051570: + movs r0, #0 +_08051572: + pop {pc} + + thumb_func_start sub_08051574 +sub_08051574: @ 0x08051574 + push {lr} + bl sub_080A3268 + ldr r0, _08051594 @ =gUnk_02002A40 + ldr r3, _08051598 @ =gUnk_02019EE0 + ldrb r1, [r3, #6] + ldr r2, _0805159C @ =0x000004B4 + muls r1, r2, r1 + adds r3, #0xc + adds r1, r1, r3 + bl sub_0801D66C + bl sub_0805070C + pop {pc} + .align 2, 0 +_08051594: .4byte gUnk_02002A40 +_08051598: .4byte gUnk_02019EE0 +_0805159C: .4byte 0x000004B4 + + thumb_func_start sub_080515A0 +sub_080515A0: @ 0x080515A0 + push {lr} + ldr r1, _080515BC @ =gUnk_080FC9BC + ldr r0, _080515C0 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _080515C4 @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_08050A64 + pop {pc} + .align 2, 0 +_080515BC: .4byte gUnk_080FC9BC +_080515C0: .4byte gUnk_02000080 +_080515C4: .4byte gUnk_02019EE0 + + thumb_func_start sub_080515C8 +sub_080515C8: @ 0x080515C8 + push {lr} + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080515D4 +sub_080515D4: @ 0x080515D4 + push {r4, lr} + ldr r0, _080515FC @ =gUnk_02019EE0 + ldrb r0, [r0] + cmp r0, #0 + beq _080515E0 + b _080516D8 +_080515E0: + ldr r1, _08051600 @ =gUnk_02000080 + movs r0, #4 + strh r0, [r1, #8] + ldrb r4, [r1, #1] + ldr r0, _08051604 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + subs r0, #1 + cmp r0, #0x1f + bhi _080516C8 + lsls r0, r0, #2 + ldr r1, _08051608 @ =_0805160C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080515FC: .4byte gUnk_02019EE0 +_08051600: .4byte gUnk_02000080 +_08051604: .4byte gUnk_03000FF0 +_08051608: .4byte _0805160C +_0805160C: @ jump table + .4byte _08051694 @ case 0 + .4byte _0805168C @ case 1 + .4byte _080516C8 @ case 2 + .4byte _080516C8 @ case 3 + .4byte _080516C8 @ case 4 + .4byte _080516C8 @ case 5 + .4byte _080516C8 @ case 6 + .4byte _08051694 @ case 7 + .4byte _080516C8 @ case 8 + .4byte _080516C8 @ case 9 + .4byte _080516C8 @ case 10 + .4byte _080516C8 @ case 11 + .4byte _080516C8 @ case 12 + .4byte _080516C8 @ case 13 + .4byte _080516C8 @ case 14 + .4byte _080516C6 @ case 15 + .4byte _080516C8 @ case 16 + .4byte _080516C8 @ case 17 + .4byte _080516C8 @ case 18 + .4byte _080516C8 @ case 19 + .4byte _080516C8 @ case 20 + .4byte _080516C8 @ case 21 + .4byte _080516C8 @ case 22 + .4byte _080516C8 @ case 23 + .4byte _080516C8 @ case 24 + .4byte _080516C8 @ case 25 + .4byte _080516C8 @ case 26 + .4byte _080516C8 @ case 27 + .4byte _080516C8 @ case 28 + .4byte _080516C8 @ case 29 + .4byte _080516C8 @ case 30 + .4byte _080516C2 @ case 31 +_0805168C: + ldr r1, _080516B0 @ =gUnk_02000080 + movs r0, #0 + strb r0, [r1, #1] + movs r4, #0 +_08051694: + cmp r4, #1 + bne _080516B4 + movs r0, #4 + movs r1, #0 + bl sub_08050318 + movs r0, #2 + bl sub_080A7114 + movs r0, #0x6a + bl sub_080A3268 + b _080516C8 + .align 2, 0 +_080516B0: .4byte gUnk_02000080 +_080516B4: + movs r0, #0 + bl sub_080503BC + movs r0, #0x6c + bl sub_080A3268 + b _080516C8 +_080516C2: + movs r4, #0 + b _080516C8 +_080516C6: + movs r4, #1 +_080516C8: + ldr r1, _080516DC @ =gUnk_02000080 + ldrb r0, [r1, #1] + cmp r0, r4 + beq _080516D8 + strb r4, [r1, #1] + movs r0, #0x69 + bl sub_080A3268 +_080516D8: + pop {r4, pc} + .align 2, 0 +_080516DC: .4byte gUnk_02000080 + + thumb_func_start sub_080516E0 +sub_080516E0: @ 0x080516E0 + push {r4, lr} + movs r0, #1 + bl sub_0807CDA4 + cmp r0, #0 + beq _08051706 + ldr r4, _08051708 @ =gUnk_02019EE0 + ldrb r0, [r4, #6] + bl sub_0805194C + ldrb r0, [r4, #6] + bl sub_08050AFC + ldr r1, _0805170C @ =gUnk_02000080 + movs r0, #2 + strh r0, [r1, #8] + movs r0, #0 + bl sub_080503BC +_08051706: + pop {r4, pc} + .align 2, 0 +_08051708: .4byte gUnk_02019EE0 +_0805170C: .4byte gUnk_02000080 + + thumb_func_start sub_08051710 +sub_08051710: @ 0x08051710 + push {lr} + ldr r1, _0805172C @ =gUnk_080FC9C8 + ldr r0, _08051730 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldr r0, _08051734 @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_08050A64 + pop {pc} + .align 2, 0 +_0805172C: .4byte gUnk_080FC9C8 +_08051730: .4byte gUnk_02000080 +_08051734: .4byte gUnk_02019EE0 + + thumb_func_start sub_08051738 +sub_08051738: @ 0x08051738 + push {r4, r5, r6, r7, lr} + ldr r1, _08051768 @ =gUnk_02019EE0 + movs r0, #4 + strb r0, [r1, #7] + movs r4, #0 + movs r3, #0 + adds r5, r1, #0 + adds r7, r5, #0 + adds r7, #8 + ldr r6, _0805176C @ =gUnk_02000090 +_0805174C: + adds r0, r3, r7 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #1 + bne _08051770 + ldrb r1, [r5, #6] + movs r2, #4 + eors r1, r3 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r0, r0, #0x1f + ands r2, r0 + b _08051774 + .align 2, 0 +_08051768: .4byte gUnk_02019EE0 +_0805176C: .4byte gUnk_02000090 +_08051770: + adds r4, #1 + adds r2, r4, #0 +_08051774: + adds r0, r3, r6 + strb r2, [r0] + adds r3, #1 + cmp r3, #2 + bls _0805174C + cmp r4, #0 + bne _0805179C + ldr r1, _08051798 @ =gUnk_02000080 + movs r0, #0x3c + strh r0, [r1, #8] + movs r0, #1 + movs r1, #0 + bl sub_08050318 + movs r0, #3 + bl sub_080A7114 + b _080517A2 + .align 2, 0 +_08051798: .4byte gUnk_02000080 +_0805179C: + movs r0, #1 + bl sub_080A7114 +_080517A2: + adds r4, #1 + ldr r0, _080517B0 @ =gUnk_02000080 + strb r4, [r0, #0x16] + movs r1, #4 + strb r1, [r0, #0x13] + strb r4, [r0, #0x14] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080517B0: .4byte gUnk_02000080 + + thumb_func_start sub_080517B4 +sub_080517B4: @ 0x080517B4 + push {r4, lr} + adds r2, r0, #0 + ldr r0, _080517E4 @ =gUnk_02019EE0 + ldrb r1, [r0, #7] + adds r4, r0, #0 + cmp r2, #0 + beq _080517DE + adds r1, r1, r2 + cmp r1, #4 + bhi _080517DC + ldr r3, _080517E8 @ =gUnk_02000090 +_080517CA: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _080517D6 + cmp r0, #4 + bne _080517DE +_080517D6: + adds r1, r1, r2 + cmp r1, #4 + bls _080517CA +_080517DC: + ldrb r1, [r4, #7] +_080517DE: + adds r0, r1, #0 + pop {r4, pc} + .align 2, 0 +_080517E4: .4byte gUnk_02019EE0 +_080517E8: .4byte gUnk_02000090 + + thumb_func_start sub_080517EC +sub_080517EC: @ 0x080517EC + push {r4, lr} + ldr r0, _08051810 @ =gUnk_02019EE0 + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #0 + bne _0805186E + movs r4, #0 + ldr r0, _08051814 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #8 + beq _0805182C + cmp r0, #8 + bgt _08051818 + cmp r0, #1 + beq _0805182C + cmp r0, #2 + beq _08051848 + b _08051858 + .align 2, 0 +_08051810: .4byte gUnk_02019EE0 +_08051814: .4byte gUnk_03000FF0 +_08051818: + cmp r0, #0x40 + beq _08051822 + cmp r0, #0x80 + beq _08051828 + b _08051858 +_08051822: + movs r4, #1 + rsbs r4, r4, #0 + b _08051858 +_08051828: + movs r4, #1 + b _08051858 +_0805182C: + ldrb r0, [r2, #7] + cmp r0, #2 + bhi _08051848 + movs r0, #2 + movs r1, #0 + bl sub_08050318 + movs r0, #2 + bl sub_080A7114 + movs r0, #0x6a + bl sub_080A3268 + b _08051858 +_08051848: + movs r0, #4 + strb r0, [r2, #7] + movs r0, #0x6c + bl sub_080A3268 + movs r0, #0 + bl sub_080503BC +_08051858: + adds r0, r4, #0 + bl sub_080517B4 + ldr r1, _08051870 @ =gUnk_02019EE0 + ldrb r2, [r1, #7] + cmp r0, r2 + beq _0805186E + strb r0, [r1, #7] + movs r0, #0x69 + bl sub_080A3268 +_0805186E: + pop {r4, pc} + .align 2, 0 +_08051870: .4byte gUnk_02019EE0 + + thumb_func_start sub_08051874 +sub_08051874: @ 0x08051874 + push {r4, lr} + movs r1, #0x80 + lsls r1, r1, #0x12 + ldr r4, _080518B8 @ =gUnk_02019EE0 + ldrb r0, [r4, #7] + strb r0, [r1, #4] + movs r0, #0 + bl sub_0807CDA4 + adds r1, r0, #0 + adds r0, r4, #0 + adds r0, #8 + ldrb r2, [r4, #7] + adds r0, r0, r2 + strb r1, [r0] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080518C4 + cmp r1, #1 + bne _080518DE + ldr r0, _080518BC @ =gUnk_02002A40 + ldrb r1, [r4, #7] + ldr r2, _080518C0 @ =0x000004B4 + muls r1, r2, r1 + adds r3, r4, #0 + adds r3, #0xc + adds r1, r1, r3 + bl sub_0801D66C + movs r0, #0 + bl sub_080503BC + b _080518DE + .align 2, 0 +_080518B8: .4byte gUnk_02019EE0 +_080518BC: .4byte gUnk_02002A40 +_080518C0: .4byte 0x000004B4 +_080518C4: + ldrb r0, [r4, #7] + bl sub_0805194C + movs r0, #3 + movs r1, #0 + bl sub_08050318 + ldr r1, _080518E0 @ =gUnk_02000080 + movs r0, #0x1e + strh r0, [r1, #8] + movs r0, #3 + bl sub_080A7114 +_080518DE: + pop {r4, pc} + .align 2, 0 +_080518E0: .4byte gUnk_02000080 + + thumb_func_start sub_080518E4 +sub_080518E4: @ 0x080518E4 + push {lr} + ldr r1, _08051904 @ =gUnk_02000080 + ldrh r0, [r1, #8] + cmp r0, #0 + bne _0805190C + ldr r0, _08051908 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #9 + ands r0, r1 + cmp r0, #0 + beq _08051910 + movs r0, #0 + bl sub_080503BC + b _08051910 + .align 2, 0 +_08051904: .4byte gUnk_02000080 +_08051908: .4byte gUnk_03000FF0 +_0805190C: + subs r0, #1 + strh r0, [r1, #8] +_08051910: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08051914 +sub_08051914: @ 0x08051914 + push {lr} + ldr r1, _08051940 @ =gUnk_02000080 + ldrb r0, [r1, #5] + cmp r0, #0 + bne _0805193E + movs r0, #1 + strb r0, [r1, #5] + movs r2, #0x80 + lsls r2, r2, #0x12 + ldr r1, _08051944 @ =gUnk_02002A40 + ldrb r0, [r1, #2] + strb r0, [r2, #5] + ldrb r0, [r1, #3] + strb r0, [r2, #6] + ldr r1, _08051948 @ =gUnk_03001000 + movs r0, #2 + strb r0, [r1, #3] + movs r0, #5 + movs r1, #8 + bl sub_08050054 +_0805193E: + pop {pc} + .align 2, 0 +_08051940: .4byte gUnk_02000080 +_08051944: .4byte gUnk_02002A40 +_08051948: .4byte gUnk_03001000 + + thumb_func_start sub_0805194C +sub_0805194C: @ 0x0805194C + push {r4, lr} + ldr r3, _08051980 @ =gUnk_02019EE0 + adds r1, r3, #0 + adds r1, #8 + adds r1, r0, r1 + movs r2, #0 + strb r2, [r1] + ldr r1, _08051984 @ =0x000004B4 + adds r4, r0, #0 + muls r4, r1, r4 + adds r3, #0xc + adds r4, r4, r3 + adds r0, r4, #0 + bl sub_0801D630 + movs r0, #1 + strb r0, [r4, #2] + strb r0, [r4, #3] + adds r1, r4, #0 + adds r1, #0xaa + movs r0, #0x18 + strb r0, [r1] + adds r4, #0xab + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08051980: .4byte gUnk_02019EE0 +_08051984: .4byte 0x000004B4 + + thumb_func_start sub_08051988 +sub_08051988: @ 0x08051988 + push {lr} + ldr r1, _080519A4 @ =gUnk_030010A0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r1, _080519A8 @ =gUnk_080FC9D8 + ldr r0, _080519AC @ =gUnk_03001000 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080519A4: .4byte gUnk_030010A0 +_080519A8: .4byte gUnk_080FC9D8 +_080519AC: .4byte gUnk_03001000 + + thumb_func_start sub_080519B0 +sub_080519B0: @ 0x080519B0 + push {r4, r5, lr} + ldr r0, _08051A04 @ =gUnk_03000FD0 + ldrb r5, [r0] + cmp r5, #0 + bne _08051A02 + movs r0, #1 + bl sub_0801DA90 + bl sub_080A3210 + bl sub_0801DA7C + bl sub_080A7124 + bl sub_0807059C + ldr r4, _08051A08 @ =gUnk_030010A0 + adds r0, r4, #0 + movs r1, #0xb0 + bl sub_0801D630 + bl sub_08049CD4 + bl sub_080300AC + bl sub_0807CA18 + ldr r0, _08051A0C @ =gUnk_02002AC8 + adds r1, r4, #0 + adds r1, #0xc + movs r2, #0x20 + bl sub_0801D66C + movs r0, #4 + strb r0, [r4, #9] + bl sub_08053518 + ldr r1, _08051A10 @ =gUnk_03001000 + movs r0, #1 + strb r0, [r1, #3] + strb r5, [r1, #4] +_08051A02: + pop {r4, r5, pc} + .align 2, 0 +_08051A04: .4byte gUnk_03000FD0 +_08051A08: .4byte gUnk_030010A0 +_08051A0C: .4byte gUnk_02002AC8 +_08051A10: .4byte gUnk_03001000 + + thumb_func_start sub_08051A14 +sub_08051A14: @ 0x08051A14 + push {lr} + movs r0, #1 + bl sub_0801DA90 + ldr r1, _08051A70 @ =gUnk_03000FD0 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1, #4] + ldr r0, _08051A74 @ =gUnk_03000000 + ldr r1, _08051A78 @ =0x00000B74 + bl sub_0801D630 + ldr r0, _08051A7C @ =gUnk_02032EC0 + movs r1, #0xed + lsls r1, r1, #2 + bl sub_0801D630 + bl sub_0805E60C + bl sub_080197AC + bl sub_08080668 + bl sub_080ADD30 + movs r0, #1 + bl sub_0801CFA8 + bl sub_0806FD8C + ldr r2, _08051A80 @ =gUnk_03000BF0 + ldr r1, _08051A84 @ =gUnk_030010A0 + ldrb r0, [r1, #0xc] + strb r0, [r2, #4] + ldrb r0, [r1, #0xd] + strb r0, [r2, #5] + bl sub_08053320 + ldr r1, _08051A88 @ =gUnk_02024490 + movs r0, #1 + strb r0, [r1] + ldr r1, _08051A8C @ =gUnk_03001000 + movs r0, #2 + strb r0, [r1, #3] + pop {pc} + .align 2, 0 +_08051A70: .4byte gUnk_03000FD0 +_08051A74: .4byte gUnk_03000000 +_08051A78: .4byte 0x00000B74 +_08051A7C: .4byte gUnk_02032EC0 +_08051A80: .4byte gUnk_03000BF0 +_08051A84: .4byte gUnk_030010A0 +_08051A88: .4byte gUnk_02024490 +_08051A8C: .4byte gUnk_03001000 + + thumb_func_start sub_08051A90 +sub_08051A90: @ 0x08051A90 + push {lr} + ldr r1, _08051AA4 @ =gUnk_080FC9E8 + ldr r0, _08051AA8 @ =gUnk_03001000 + ldrb r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08051AA4: .4byte gUnk_080FC9E8 +_08051AA8: .4byte gUnk_03001000 + + thumb_func_start sub_08051AAC +sub_08051AAC: @ 0x08051AAC + push {lr} + bl sub_0805E5A8 + ldr r1, _08051AE4 @ =gUnk_03000F50 + movs r2, #0 + movs r0, #0xba + lsls r0, r0, #5 + strh r0, [r1] + ldr r1, _08051AE8 @ =gUnk_03001000 + movs r0, #1 + strb r0, [r1, #4] + ldr r0, _08051AEC @ =gUnk_030010A0 + strb r2, [r0, #8] + strb r2, [r0, #4] + strb r2, [r0, #5] + bl sub_08056418 + bl sub_08052CFC + movs r0, #0 + bl sub_0801C370 + bl sub_08051D40 + bl sub_0801855C + pop {pc} + .align 2, 0 +_08051AE4: .4byte gUnk_03000F50 +_08051AE8: .4byte gUnk_03001000 +_08051AEC: .4byte gUnk_030010A0 + + thumb_func_start sub_08051AF0 +sub_08051AF0: @ 0x08051AF0 + push {r4, r5, lr} + bl sub_0805E5C0 + bl sub_0805BBBC + cmp r0, #0 + bne _08051B02 + bl sub_0807FC40 +_08051B02: + bl sub_0801B060 + bl sub_08000108 + bl sub_0801C344 + bl sub_0805E5F8 + bl sub_080AD90C + bl sub_0801C208 + bl sub_08078CB4 + bl sub_080AD9B0 + bl sub_080AD918 + ldr r0, _08051BB0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08051BAE + ldr r0, _08051BB4 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #0 + bne _08051BAE + bl sub_08052F1C + ldr r5, _08051BB8 @ =gUnk_02033A90 + movs r0, #0x86 + lsls r0, r0, #4 + adds r3, r5, r0 + ldr r1, _08051BBC @ =0x00000864 + adds r0, r5, r1 + ldr r1, [r3] + ldr r2, [r0] + cmp r1, r2 + beq _08051B5A + str r2, [r3] + ldr r0, _08051BC0 @ =0x800B0000 + orrs r2, r0 + adds r0, r2, #0 + bl sub_080A3268 +_08051B5A: + bl sub_0805E9F4 + bl sub_0805BC04 + adds r4, r0, #0 + cmp r4, #0 + bne _08051BAE + bl sub_08052C5C + bl sub_0805E5B4 + bl sub_08051E04 + bl sub_080300C4 + ldr r1, _08051BC4 @ =gUnk_03001000 + movs r0, #2 + strb r0, [r1, #4] + movs r0, #0 + bl sub_08078A90 + ldr r0, _08051BC8 @ =gUnk_02034490 + strb r4, [r0] + adds r0, r5, #0 + adds r0, #0x28 + ldrb r0, [r0] + cmp r0, #0xff + beq _08051B96 + bl sub_0801855C +_08051B96: + bl sub_08052BF8 + bl sub_08053178 + ldr r0, _08051BCC @ =gUnk_02034350 + ldrb r0, [r0] + cmp r0, #0 + bne _08051BAE + movs r0, #0 + movs r1, #1 + bl sub_0805E4E0 +_08051BAE: + pop {r4, r5, pc} + .align 2, 0 +_08051BB0: .4byte gUnk_03000FD0 +_08051BB4: .4byte gUnk_03000BF0 +_08051BB8: .4byte gUnk_02033A90 +_08051BBC: .4byte 0x00000864 +_08051BC0: .4byte 0x800B0000 +_08051BC4: .4byte gUnk_03001000 +_08051BC8: .4byte gUnk_02034490 +_08051BCC: .4byte gUnk_02034350 + + thumb_func_start sub_08051BD0 +sub_08051BD0: @ 0x08051BD0 + push {lr} + bl sub_080705AC + cmp r0, #0 + bne _08051C9C + bl sub_0804AA84 + cmp r0, #0 + bne _08051C9C + bl sub_0805340C + ldr r0, _08051C5C @ =gUnk_03001000 + ldrb r0, [r0, #4] + cmp r0, #2 + bne _08051C9C + ldr r0, _08051C60 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08051C02 + ldr r0, _08051C64 @ =gUnk_03003DC0 + ldrh r0, [r0, #8] + cmp r0, #0 + beq _08051C06 +_08051C02: + bl sub_08078B48 +_08051C06: + bl sub_080AD90C + bl sub_0805E5C0 + bl sub_08080A40 + bl sub_080175F4 + bl sub_0807FC40 + bl sub_0801B060 + bl sub_08000108 + bl sub_08052C3C + bl sub_0801C344 + bl sub_0805E5F8 + bl sub_0801C208 + bl sub_08078CB4 + bl sub_080AD9B0 + bl sub_0805291C + bl sub_08052C5C + bl sub_080528B4 + bl sub_080185F8 + bl sub_080AD918 + ldr r0, _08051C68 @ =gUnk_03000BF0 + ldrh r2, [r0] + cmp r2, #1 + beq _08051C6C + cmp r2, #2 + beq _08051C88 + b _08051C9C + .align 2, 0 +_08051C5C: .4byte gUnk_03001000 +_08051C60: .4byte gUnk_02000050 +_08051C64: .4byte gUnk_03003DC0 +_08051C68: .4byte gUnk_03000BF0 +_08051C6C: + ldr r0, _08051C80 @ =gUnk_03003F80 + movs r1, #0x17 + strb r1, [r0, #0xc] + ldr r0, _08051C84 @ =gUnk_03001000 + strb r2, [r0, #4] + bl sub_0805E59C + bl sub_08051D98 + b _08051C9C + .align 2, 0 +_08051C80: .4byte gUnk_03003F80 +_08051C84: .4byte gUnk_03001000 +_08051C88: + ldr r1, _08051CA0 @ =gUnk_03003F80 + movs r0, #0x17 + strb r0, [r1, #0xc] + ldr r1, _08051CA4 @ =gUnk_03001000 + movs r0, #1 + strb r0, [r1, #4] + bl sub_0805E59C + bl sub_08051DCC +_08051C9C: + pop {pc} + .align 2, 0 +_08051CA0: .4byte gUnk_03003F80 +_08051CA4: .4byte gUnk_03001000 + + thumb_func_start sub_08051CA8 +sub_08051CA8: @ 0x08051CA8 + push {lr} + bl sub_080705AC + cmp r0, #0 + bne _08051CEA + bl sub_0805E5C0 + bl sub_080175F4 + bl sub_0801C344 + bl sub_0805E5F8 + bl sub_080AD90C + bl sub_0801C208 + bl sub_08078CB4 + bl sub_080AD9B0 + bl sub_0805291C + bl sub_080528B4 + bl sub_080AD918 + ldr r0, _08051CEC @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08051CEA + bl sub_0805E5B4 +_08051CEA: + pop {pc} + .align 2, 0 +_08051CEC: .4byte gUnk_03000FD0 + + thumb_func_start sub_08051CF0 +sub_08051CF0: @ 0x08051CF0 + push {r4, r5, r6, lr} + bl sub_080AD90C + bl sub_0801C208 + bl sub_080AD9B0 + ldr r5, _08051D20 @ =gUnk_03001000 + movs r6, #1 + strb r6, [r5, #0xb] + bl sub_080AD918 + ldr r0, _08051D24 @ =gUnk_03000FD0 + ldrb r4, [r0] + cmp r4, #0 + bne _08051D1E + movs r0, #1 + bl sub_0801DA90 + strb r6, [r5, #3] + strb r4, [r5, #4] + ldr r0, _08051D28 @ =gUnk_030010A0 + strb r6, [r0, #8] +_08051D1E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08051D20: .4byte gUnk_03001000 +_08051D24: .4byte gUnk_03000FD0 +_08051D28: .4byte gUnk_030010A0 + + thumb_func_start sub_08051D2C +sub_08051D2C: @ 0x08051D2C + push {lr} + movs r0, #7 + movs r1, #8 + bl sub_08050054 + movs r0, #3 + bl sub_08056010 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08051D40 +sub_08051D40: @ 0x08051D40 + push {lr} + bl sub_08052EA0 + bl sub_0804AF90 + bl sub_0804AFDC + bl InitializeLink + ldr r1, _08051D90 @ =gUnk_03004030 + movs r0, #0 + str r0, [r1] + bl sub_0807C740 + ldr r1, _08051D94 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + bl sub_0805283C + movs r0, #0 + movs r1, #0 + bl sub_0801D79C + bl LoadRoom + bl sub_080609AC + bl sub_0804AFF4 + bl sub_0805329C + bl sub_08000108 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_0805BB74 + bl sub_080531F8 + pop {pc} + .align 2, 0 +_08051D90: .4byte gUnk_03004030 +_08051D94: .4byte gUnk_02000070 + + thumb_func_start sub_08051D98 +sub_08051D98: @ 0x08051D98 + push {lr} + bl sub_08052EA0 + ldr r1, _08051DC8 @ =gUnk_02034350 + movs r0, #1 + strb r0, [r1] + bl sub_0805E9A8 + bl sub_0804AF90 + bl sub_0804AFDC + bl sub_0807C0DC + bl sub_0805283C + bl LoadRoom + bl sub_0804AFF4 + movs r0, #1 + bl sub_08078A90 + pop {pc} + .align 2, 0 +_08051DC8: .4byte gUnk_02034350 + + thumb_func_start sub_08051DCC +sub_08051DCC: @ 0x08051DCC + push {r4, lr} + ldr r1, _08051DFC @ =gUnk_03000BF0 + ldr r4, _08051E00 @ =gUnk_030010A0 + ldrb r0, [r4, #0xc] + strb r0, [r1, #4] + ldrb r0, [r4, #0xd] + strb r0, [r1, #5] + bl sub_080528F0 + movs r0, #3 + strb r0, [r4, #9] + bl sub_08052CFC + bl sub_08052EA0 + bl sub_0805E9A8 + bl sub_0804AF90 + bl sub_0804AFDC + bl sub_0805283C + pop {r4, pc} + .align 2, 0 +_08051DFC: .4byte gUnk_03000BF0 +_08051E00: .4byte gUnk_030010A0 + + thumb_func_start sub_08051E04 +sub_08051E04: @ 0x08051E04 + push {lr} + bl sub_08052620 + cmp r0, #0 + beq _08051E60 + ldr r1, _08051E2C @ =gLinkEntity + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + bge _08051E1A + adds r0, #0xf +_08051E1A: + asrs r2, r0, #4 + movs r3, #0x32 + ldrsh r0, [r1, r3] + cmp r0, #0 + bge _08051E26 + adds r0, #0xf +_08051E26: + asrs r1, r0, #4 + ldr r3, _08051E30 @ =gUnk_08127F94 + b _08051E36 + .align 2, 0 +_08051E2C: .4byte gLinkEntity +_08051E30: .4byte gUnk_08127F94 +_08051E34: + adds r3, #8 +_08051E36: + ldrb r0, [r3] + cmp r0, #0xff + beq _08051E60 + cmp r0, r2 + bhi _08051E34 + ldrb r0, [r3, #2] + cmp r0, r2 + blo _08051E34 + ldrb r0, [r3, #1] + cmp r0, r1 + bhi _08051E34 + ldrb r0, [r3, #3] + cmp r0, r1 + blo _08051E34 + ldr r2, _08051E64 @ =gUnk_02002A40 + movs r1, #1 + ldrb r3, [r3, #4] + lsls r1, r3 + ldr r0, [r2, #0x40] + orrs r0, r1 + str r0, [r2, #0x40] +_08051E60: + pop {pc} + .align 2, 0 +_08051E64: .4byte gUnk_02002A40 + + thumb_func_start sub_08051E68 +sub_08051E68: @ 0x08051E68 + push {lr} + ldr r1, _08051E7C @ =gUnk_080FCA08 + ldr r0, _08051E80 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08051E7C: .4byte gUnk_080FCA08 +_08051E80: .4byte gUnk_02000080 + + thumb_func_start sub_08051E84 +sub_08051E84: @ 0x08051E84 + push {r4, r5, r6, lr} + ldr r0, _08051EF0 @ =gUnk_02032EC0 + ldrb r4, [r0, #3] + lsls r4, r4, #3 + ldr r0, _08051EF4 @ =gUnk_080FCA20 + adds r4, r4, r0 + ldr r5, _08051EF8 @ =gUnk_03000BF0 + ldrb r0, [r4] + strb r0, [r5, #4] + ldrb r0, [r4, #1] + strb r0, [r5, #5] + bl sub_08053320 + ldrb r0, [r5, #4] + bl sub_08052D58 + ldr r1, _08051EFC @ =gUnk_02033A90 + movs r6, #0 + strh r0, [r1, #4] + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl sub_0804B0C0 + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl sub_08052FD8 + ldrh r0, [r4, #4] + ldrh r1, [r5, #6] + adds r0, r0, r1 + strh r0, [r5, #0xa] + ldrh r0, [r4, #6] + ldrh r1, [r5, #8] + adds r0, r0, r1 + strh r0, [r5, #0xc] + ldr r1, _08051F00 @ =gUnk_02000080 + ldrb r0, [r4, #2] + strb r0, [r1] + ldrb r2, [r4, #3] + movs r0, #0xf + ands r0, r2 + strb r0, [r1, #3] + str r4, [r1, #0xc] + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] + strb r6, [r1, #6] + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1, #8] + bl sub_08051F04 + pop {r4, r5, r6, pc} + .align 2, 0 +_08051EF0: .4byte gUnk_02032EC0 +_08051EF4: .4byte gUnk_080FCA20 +_08051EF8: .4byte gUnk_03000BF0 +_08051EFC: .4byte gUnk_02033A90 +_08051F00: .4byte gUnk_02000080 + + thumb_func_start sub_08051F04 +sub_08051F04: @ 0x08051F04 + push {lr} + ldr r1, _08051F38 @ =gUnk_080FCA14 + ldr r0, _08051F3C @ =gUnk_02000080 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080AD90C + bl sub_0805E5C0 + bl sub_080AD9B0 + bl sub_080AD918 + bl sub_0807FC40 + bl sub_0801B060 + bl sub_0805E5F8 + bl sub_08000108 + pop {pc} + .align 2, 0 +_08051F38: .4byte gUnk_080FCA14 +_08051F3C: .4byte gUnk_02000080 + + thumb_func_start sub_08051F40 +sub_08051F40: @ 0x08051F40 + push {lr} + ldr r0, _08051F60 @ =gUnk_080FCA20 + ldr r2, _08051F64 @ =gUnk_02032EC0 + ldrb r1, [r2, #3] + lsls r1, r1, #3 + adds r1, r1, r0 + ldrb r1, [r1, #3] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _08051F68 + lsrs r1, r1, #4 + movs r0, #2 + bl sub_080A7138 + b _08051F76 + .align 2, 0 +_08051F60: .4byte gUnk_080FCA20 +_08051F64: .4byte gUnk_02032EC0 +_08051F68: + movs r0, #3 + strb r0, [r2] + movs r0, #0x10 + bl sub_080500F4 + bl sub_08056418 +_08051F76: + pop {pc} + + thumb_func_start sub_08051F78 +sub_08051F78: @ 0x08051F78 + push {lr} + ldr r0, _08051F94 @ =gUnk_02032EC0 + ldrb r3, [r0, #3] + lsls r3, r3, #3 + ldr r0, _08051F98 @ =gUnk_080FCA20 + adds r3, r3, r0 + ldrb r0, [r3] + ldrb r1, [r3, #1] + ldrh r2, [r3, #4] + ldrh r3, [r3, #6] + bl sub_08051F9C + pop {pc} + .align 2, 0 +_08051F94: .4byte gUnk_02032EC0 +_08051F98: .4byte gUnk_080FCA20 + + thumb_func_start sub_08051F9C +sub_08051F9C: @ 0x08051F9C + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r6, r2, #0 + mov r8, r3 + ldr r5, _08051FE0 @ =gUnk_03000F50 + ldrh r2, [r5] + movs r4, #0xc0 + lsls r4, r4, #7 + ands r4, r2 + bl sub_08052FF4 + ldr r1, _08051FE4 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, r0, r6 + movs r6, #0 + strh r0, [r1, #0xa] + ldrh r0, [r1, #8] + add r0, r8 + strh r0, [r1, #0xc] + bl sub_0807C740 + ldr r1, _08051FE8 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + ldr r0, _08051FEC @ =gUnk_0200B644 + str r6, [r0] + ldrh r0, [r5] + orrs r4, r0 + strh r4, [r5] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_08051FE0: .4byte gUnk_03000F50 +_08051FE4: .4byte gUnk_03000BF0 +_08051FE8: .4byte gUnk_02000070 +_08051FEC: .4byte gUnk_0200B644 + + thumb_func_start sub_08051FF0 +sub_08051FF0: @ 0x08051FF0 + push {lr} + ldr r0, _08052000 @ =gUnk_02000080 + ldr r1, [r0, #0xc] + ldrb r0, [r1] + ldrb r1, [r1, #1] + bl sub_0804B0B0 + pop {pc} + .align 2, 0 +_08052000: .4byte gUnk_02000080 + + thumb_func_start sub_08052004 +sub_08052004: @ 0x08052004 + ldr r1, _0805200C @ =gUnk_02000080 + movs r0, #2 + strb r0, [r1, #5] + bx lr + .align 2, 0 +_0805200C: .4byte gUnk_02000080 + + thumb_func_start sub_08052010 +sub_08052010: @ 0x08052010 + push {r4, lr} + bl sub_080A3210 + bl sub_08056418 + movs r0, #1 + bl sub_0801DA90 + ldr r0, _0805207C @ =gUnk_02021F30 + movs r4, #0x80 + lsls r4, r4, #4 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _08052080 @ =gUnk_020344B0 + adds r1, r4, #0 + bl sub_0801D630 + bl sub_080A4D34 + movs r0, #0xa + bl sub_0801D714 + movs r0, #0 + movs r1, #0 + bl sub_0801D79C + movs r0, #4 + bl sub_0801D7EC + movs r0, #0xc0 + lsls r0, r0, #0x13 + movs r1, #0x20 + bl sub_0801D630 + ldr r0, _08052084 @ =gUnk_02000080 + movs r1, #0x30 + bl sub_0801D630 + ldr r1, _08052088 @ =gUnk_03000F50 + ldrh r2, [r1] + movs r3, #0x80 + lsls r3, r3, #5 + adds r0, r3, #0 + orrs r0, r2 + strh r0, [r1] + ldr r0, _0805208C @ =0x00001C01 + strh r0, [r1, #0x14] + ldr r0, _08052090 @ =0x00001D05 + strh r0, [r1, #0x20] + movs r0, #1 + strh r0, [r1, #0x1a] + strh r0, [r1, #0x26] + pop {r4, pc} + .align 2, 0 +_0805207C: .4byte gUnk_02021F30 +_08052080: .4byte gUnk_020344B0 +_08052084: .4byte gUnk_02000080 +_08052088: .4byte gUnk_03000F50 +_0805208C: .4byte 0x00001C01 +_08052090: .4byte 0x00001D05 + + thumb_func_start sub_08052094 +sub_08052094: @ 0x08052094 + push {r4, lr} + ldr r1, _080520BC @ =gUnk_080FCA70 + ldr r4, _080520C0 @ =gUnk_03001000 + ldrb r0, [r4, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldrb r0, [r4, #3] + cmp r0, #0 + beq _080520B8 + bl sub_080AD90C + bl sub_080523D4 + bl sub_080AD918 +_080520B8: + pop {r4, pc} + .align 2, 0 +_080520BC: .4byte gUnk_080FCA70 +_080520C0: .4byte gUnk_03001000 + + thumb_func_start sub_080520C4 +sub_080520C4: @ 0x080520C4 + push {lr} + ldr r1, _080520D4 @ =gUnk_03001000 + strb r0, [r1, #3] + movs r0, #0 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_080520D4: .4byte gUnk_03001000 + + thumb_func_start sub_080520D8 +sub_080520D8: @ 0x080520D8 + push {r4, lr} + ldr r4, _08052118 @ =gUnk_03000FD0 + ldrb r0, [r4] + cmp r0, #0 + bne _08052114 + bl sub_08052010 + ldr r1, _0805211C @ =gUnk_02000080 + movs r0, #0x50 + strb r0, [r1, #0x10] + movs r2, #0x3c + movs r0, #0x3c + strh r0, [r1, #8] + ldr r0, _08052120 @ =gUnk_02002A40 + adds r0, #0xaa + movs r1, #0x18 + strb r1, [r0] + ldr r0, _08052124 @ =gUnk_03001000 + strb r2, [r0, #5] + movs r0, #0xa + bl sub_080A3268 + movs r0, #4 + bl sub_080500F4 + ldr r0, _08052128 @ =0xFFFF0001 + str r0, [r4, #4] + movs r0, #1 + bl sub_080520C4 +_08052114: + pop {r4, pc} + .align 2, 0 +_08052118: .4byte gUnk_03000FD0 +_0805211C: .4byte gUnk_02000080 +_08052120: .4byte gUnk_02002A40 +_08052124: .4byte gUnk_03001000 +_08052128: .4byte 0xFFFF0001 + + thumb_func_start sub_0805212C +sub_0805212C: @ 0x0805212C + push {r4, lr} + ldr r4, _0805214C @ =gUnk_03000FD0 + ldrb r0, [r4] + cmp r0, #0 + bne _0805219C + ldr r1, _08052150 @ =gUnk_03001000 + ldrb r0, [r1, #5] + cmp r0, #0 + bne _08052198 + ldr r1, _08052154 @ =gUnk_02000080 + ldrb r0, [r1, #0x10] + cmp r0, #0x25 + bls _08052158 + subs r0, #1 + strb r0, [r1, #0x10] + b _0805219C + .align 2, 0 +_0805214C: .4byte gUnk_03000FD0 +_08052150: .4byte gUnk_03001000 +_08052154: .4byte gUnk_02000080 +_08052158: + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805219C + movs r0, #2 + bl sub_080520C4 + movs r0, #0 + movs r1, #0 + bl sub_08052418 + ldr r2, _08052190 @ =gUnk_03000F50 + ldrh r0, [r2] + movs r3, #0xc0 + lsls r3, r3, #3 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r0, _08052194 @ =0x0000FFFF + str r0, [r4, #4] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + b _0805219C + .align 2, 0 +_08052190: .4byte gUnk_03000F50 +_08052194: .4byte 0x0000FFFF +_08052198: + subs r0, #1 + strb r0, [r1, #5] +_0805219C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080521A0 +sub_080521A0: @ 0x080521A0 + push {r4, lr} + ldr r0, _080521C4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + beq _080521AC + b _080522E8 +_080521AC: + ldr r0, _080521C8 @ =gUnk_02000080 + ldrb r1, [r0, #5] + adds r2, r0, #0 + cmp r1, #4 + bls _080521B8 + b _080522D4 +_080521B8: + lsls r0, r1, #2 + ldr r1, _080521CC @ =_080521D0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080521C4: .4byte gUnk_03000FD0 +_080521C8: .4byte gUnk_02000080 +_080521CC: .4byte _080521D0 +_080521D0: @ jump table + .4byte _080521E4 @ case 0 + .4byte _08052208 @ case 1 + .4byte _08052278 @ case 2 + .4byte _080522B0 @ case 3 + .4byte _080522D4 @ case 4 +_080521E4: + movs r1, #0 + movs r0, #0x1e + strh r0, [r2, #8] + strb r1, [r2, #3] + movs r0, #1 + bl sub_080A7114 + movs r0, #0 + movs r1, #0 + bl sub_08052418 + ldr r1, _08052204 @ =gUnk_03000FD0 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1, #4] + b _080522E8 + .align 2, 0 +_08052204: .4byte gUnk_03000FD0 +_08052208: + ldrh r0, [r2, #8] + cmp r0, #0 + bne _080522B6 + ldrb r4, [r2, #3] + ldr r0, _08052224 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #0x40 + beq _0805222E + cmp r0, #0x40 + bgt _08052228 + cmp r0, #1 + beq _08052236 + b _0805225A + .align 2, 0 +_08052224: .4byte gUnk_03000FF0 +_08052228: + cmp r0, #0x80 + beq _08052232 + b _0805225A +_0805222E: + movs r4, #0 + b _0805225A +_08052232: + movs r4, #1 + b _0805225A +_08052236: + cmp r4, #0 + beq _0805223E + movs r2, #4 + b _08052248 +_0805223E: + movs r0, #8 + movs r1, #0 + bl sub_08050318 + movs r2, #2 +_08052248: + ldr r1, _08052274 @ =gUnk_02000080 + movs r0, #0x3c + strh r0, [r1, #8] + adds r0, r2, #0 + bl sub_080A7114 + movs r0, #0x6a + bl sub_080A3268 +_0805225A: + ldr r1, _08052274 @ =gUnk_02000080 + ldrb r0, [r1, #3] + cmp r0, r4 + beq _080522E8 + strb r4, [r1, #3] + movs r0, #0 + adds r1, r4, #0 + bl sub_08052418 + movs r0, #0x69 + bl sub_080A3268 + b _080522E8 + .align 2, 0 +_08052274: .4byte gUnk_02000080 +_08052278: + movs r0, #0 + bl sub_0807CDA4 + adds r1, r0, #0 + ldr r2, _08052298 @ =gUnk_02000080 + strb r1, [r2] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0805229C + cmp r1, #1 + bne _080522E8 + movs r0, #4 + bl sub_080A7114 + b _080522E8 + .align 2, 0 +_08052298: .4byte gUnk_02000080 +_0805229C: + movs r0, #0x3c + strh r0, [r2, #8] + movs r0, #9 + movs r1, #0 + bl sub_08050318 + movs r0, #3 + bl sub_080A7114 + b _080522E8 +_080522B0: + ldrh r0, [r2, #8] + cmp r0, #0 + beq _080522BC +_080522B6: + subs r0, #1 + strh r0, [r2, #8] + b _080522E8 +_080522BC: + ldr r0, _080522D0 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #0xb + ands r0, r1 + cmp r0, #0 + beq _080522E8 + movs r0, #0 + bl sub_080A7114 + b _080522E8 + .align 2, 0 +_080522D0: .4byte gUnk_03000FF0 +_080522D4: + ldr r2, _080522EC @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _080522F0 @ =0x0000FDFF + ands r0, r1 + strh r0, [r2] + bl sub_08050384 + movs r0, #3 + bl sub_080520C4 +_080522E8: + pop {r4, pc} + .align 2, 0 +_080522EC: .4byte gUnk_03000F50 +_080522F0: .4byte 0x0000FDFF + + thumb_func_start sub_080522F4 +sub_080522F4: @ 0x080522F4 + push {r4, lr} + ldr r0, _08052320 @ =gUnk_02000080 + ldrb r1, [r0, #5] + adds r3, r0, #0 + cmp r1, #1 + beq _08052324 + cmp r1, #1 + bgt _080523AC + cmp r1, #0 + bne _080523AC + movs r1, #0 + movs r0, #0x1e + strh r0, [r3, #8] + strb r1, [r3, #3] + movs r0, #1 + bl sub_080A7114 + movs r0, #1 + movs r1, #0 + bl sub_08052418 + b _080523CC + .align 2, 0 +_08052320: .4byte gUnk_02000080 +_08052324: + ldr r2, _08052340 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r4, #0x80 + lsls r4, r4, #2 + adds r0, r4, #0 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r3, #8] + cmp r0, #0 + beq _08052344 + subs r0, #1 + strh r0, [r3, #8] + b _080523CC + .align 2, 0 +_08052340: .4byte gUnk_03000F50 +_08052344: + ldrb r4, [r3, #3] + ldr r0, _08052358 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #0x40 + beq _08052362 + cmp r0, #0x40 + bgt _0805235C + cmp r0, #1 + beq _0805236A + b _0805238C + .align 2, 0 +_08052358: .4byte gUnk_03000FF0 +_0805235C: + cmp r0, #0x80 + beq _08052366 + b _0805238C +_08052362: + movs r4, #0 + b _0805238C +_08052366: + movs r4, #1 + b _0805238C +_0805236A: + movs r0, #2 + bl sub_080A7114 + movs r0, #0x6a + bl sub_080A3268 + cmp r4, #0 + bne _08052384 + movs r0, #5 + movs r1, #8 + bl sub_08050054 + b _0805238C +_08052384: + movs r0, #7 + movs r1, #8 + bl sub_08050054 +_0805238C: + ldr r1, _080523A8 @ =gUnk_02000080 + ldrb r0, [r1, #3] + cmp r0, r4 + beq _080523CC + strb r4, [r1, #3] + movs r0, #1 + adds r1, r4, #0 + bl sub_08052418 + movs r0, #0x69 + bl sub_080A3268 + b _080523CC + .align 2, 0 +_080523A8: .4byte gUnk_02000080 +_080523AC: + ldr r0, _080523C4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080523CC + ldrb r0, [r3, #3] + cmp r0, #0 + bne _080523C8 + movs r0, #2 + bl sub_08056010 + b _080523CC + .align 2, 0 +_080523C4: .4byte gUnk_03000FD0 +_080523C8: + bl sub_080560A8 +_080523CC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_107 +nullsub_107: @ 0x080523D0 + bx lr + .align 2, 0 + + thumb_func_start sub_080523D4 +sub_080523D4: @ 0x080523D4 + push {r4, r5, r6, lr} + ldr r1, _08052408 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + movs r0, #0x86 + lsls r0, r0, #8 + strh r0, [r1, #8] + ldr r0, _0805240C @ =gUnk_02000080 + ldrb r0, [r0, #0x10] + strh r0, [r1, #2] + movs r4, #0 + adds r6, r1, #0 + ldr r5, _08052410 @ =gUnk_080FCA84 +_080523F0: + adds r0, r4, r5 + ldrb r0, [r0] + strh r0, [r6] + ldr r0, _08052414 @ =0x000001FD + adds r1, r4, #0 + bl sub_080ADA14 + adds r4, #1 + cmp r4, #7 + bls _080523F0 + pop {r4, r5, r6, pc} + .align 2, 0 +_08052408: .4byte gUnk_03001010 +_0805240C: .4byte gUnk_02000080 +_08052410: .4byte gUnk_080FCA84 +_08052414: .4byte 0x000001FD + + thumb_func_start sub_08052418 +sub_08052418: @ 0x08052418 + push {r4, r5, r6, lr} + sub sp, #0x18 + adds r6, r0, #0 + adds r4, r1, #0 + ldr r0, _08052494 @ =gUnk_02021F30 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r0, _08052498 @ =gUnk_020227E8 + movs r1, #0xf + str r1, [r0] + str r1, [r0, #8] + str r1, [r0, #0x10] + str r1, [r0, #0x18] + lsls r4, r4, #3 + adds r0, #1 + adds r4, r4, r0 + movs r5, #1 + strb r5, [r4] + ldr r4, _0805249C @ =gUnk_080FCA8C + adds r0, r4, #0 + mov r1, sp + movs r2, #0x18 + bl sub_0801D66C + lsls r2, r6, #1 + adds r2, r2, r6 + lsls r2, r2, #2 + ldr r0, _080524A0 @ =gUnk_080FCAA4 + adds r2, r2, r0 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r1, [r0, #7] + adds r1, r2, r1 + ldrb r0, [r2, #8] + lsls r0, r0, #5 + ldrb r1, [r1] + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, [r4] + adds r1, r1, r0 + str r1, [sp] + mov r4, sp + ldrb r0, [r2, #9] + adds r1, r5, #0 + ands r1, r0 + ldrb r3, [r4, #0x13] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x13] + ldrh r0, [r2, #0xa] + mov r1, sp + bl sub_0805F46C + ldr r0, _080524A4 @ =gUnk_03000F50 + strh r5, [r0, #0x1a] + add sp, #0x18 + pop {r4, r5, r6, pc} + .align 2, 0 +_08052494: .4byte gUnk_02021F30 +_08052498: .4byte gUnk_020227E8 +_0805249C: .4byte gUnk_080FCA8C +_080524A0: .4byte gUnk_080FCAA4 +_080524A4: .4byte gUnk_03000F50 \ No newline at end of file diff --git a/asm/code_08052620.s b/asm/code_08052620.s new file mode 100644 index 00000000..434d62ac --- /dev/null +++ b/asm/code_08052620.s @@ -0,0 +1,7304 @@ + .include "asm/macros.inc" + .text + .syntax unified + + thumb_func_start sub_08052620 +sub_08052620: @ 0x08052620 + push {lr} + movs r1, #0 + ldr r0, _08052634 @ =gUnk_02033A90 + ldrb r0, [r0] + cmp r0, #0x81 + bne _0805262E + movs r1, #1 +_0805262E: + adds r0, r1, #0 + pop {pc} + .align 2, 0 +_08052634: .4byte gUnk_02033A90 + + thumb_func_start sub_08052638 +sub_08052638: @ 0x08052638 + push {lr} + movs r2, #0 + ldr r1, _08052650 @ =gUnk_08127D30 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0x81 + bne _0805264A + movs r2, #1 +_0805264A: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_08052650: .4byte gUnk_08127D30 + + thumb_func_start sub_08052654 +sub_08052654: @ 0x08052654 + ldr r0, _0805265C @ =gUnk_02033A90 + ldrb r0, [r0] + lsrs r0, r0, #7 + bx lr + .align 2, 0 +_0805265C: .4byte gUnk_02033A90 + + thumb_func_start sub_08052660 +sub_08052660: @ 0x08052660 + ldr r0, _0805266C @ =gUnk_02033A90 + ldrb r0, [r0] + lsrs r0, r0, #2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0805266C: .4byte gUnk_02033A90 + + thumb_func_start sub_08052670 +sub_08052670: @ 0x08052670 + ldr r0, _0805267C @ =gUnk_02033A90 + ldrb r0, [r0] + lsrs r0, r0, #4 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0805267C: .4byte gUnk_02033A90 + + thumb_func_start sub_08052680 +sub_08052680: @ 0x08052680 + ldr r0, _0805268C @ =gUnk_02033A90 + ldrb r0, [r0] + lsrs r0, r0, #6 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0805268C: .4byte gUnk_02033A90 + + thumb_func_start sub_08052690 +sub_08052690: @ 0x08052690 + ldr r0, _0805269C @ =gUnk_02033A90 + ldrb r0, [r0] + lsrs r0, r0, #3 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0805269C: .4byte gUnk_02033A90 + + thumb_func_start sub_080526A0 +sub_080526A0: @ 0x080526A0 + push {lr} + ldr r2, _080526C4 @ =gUnk_02002AE8 + ldrb r1, [r2, #2] + adds r1, r1, r0 + cmp r1, #0 + bge _080526AE + movs r1, #0 +_080526AE: + ldrb r0, [r2, #3] + cmp r0, r1 + bge _080526B6 + adds r1, r0, #0 +_080526B6: + strb r1, [r2, #2] + ldr r0, _080526C8 @ =gLinkEntity + adds r0, #0x45 + strb r1, [r0] + adds r0, r1, #0 + pop {pc} + .align 2, 0 +_080526C4: .4byte gUnk_02002AE8 +_080526C8: .4byte gLinkEntity + + thumb_func_start sub_080526CC +sub_080526CC: @ 0x080526CC + push {lr} + ldr r3, _080526DC @ =gUnk_02002AE8 + ldrh r1, [r3, #0x18] + adds r2, r1, r0 + cmp r2, #0 + bge _080526E0 + movs r2, #0 + b _080526F0 + .align 2, 0 +_080526DC: .4byte gUnk_02002AE8 +_080526E0: + ldr r1, _080526F4 @ =gUnk_080FD590 + ldrb r0, [r3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrh r0, [r0] + cmp r2, r0 + ble _080526F0 + adds r2, r0, #0 +_080526F0: + strh r2, [r3, #0x18] + pop {pc} + .align 2, 0 +_080526F4: .4byte gUnk_080FD590 + + thumb_func_start sub_080526F8 +sub_080526F8: @ 0x080526F8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08052724 + cmp r0, #0 + beq _08052718 + ldr r0, _0805271C @ =gUnk_02033A90 + ldrb r1, [r0, #3] + ldr r0, _08052720 @ =gUnk_02002E9C + adds r1, r1, r0 + ldrb r0, [r1] + adds r0, r0, r4 + cmp r0, #0 + bge _08052716 + movs r0, #0 +_08052716: + strb r0, [r1] +_08052718: + pop {r4, pc} + .align 2, 0 +_0805271C: .4byte gUnk_02033A90 +_08052720: .4byte gUnk_02002E9C + + thumb_func_start sub_08052724 +sub_08052724: @ 0x08052724 + ldr r0, _08052730 @ =gUnk_02033A90 + ldrb r0, [r0] + lsrs r0, r0, #1 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_08052730: .4byte gUnk_02033A90 + + thumb_func_start sub_08052734 +sub_08052734: @ 0x08052734 + push {r4, lr} + bl sub_08052724 + cmp r0, #0 + beq _0805274C + ldr r0, _08052758 @ =gUnk_02002A40 + ldr r1, _0805275C @ =gUnk_02033A90 + ldr r2, _08052760 @ =0x0000045C + adds r0, r0, r2 + ldrb r1, [r1, #3] + adds r0, r0, r1 + ldrb r4, [r0] +_0805274C: + adds r0, r4, #0 + cmp r0, #0 + beq _08052754 + movs r0, #1 +_08052754: + pop {r4, pc} + .align 2, 0 +_08052758: .4byte gUnk_02002A40 +_0805275C: .4byte gUnk_02033A90 +_08052760: .4byte 0x0000045C + + thumb_func_start sub_08052764 +sub_08052764: @ 0x08052764 + push {r4, lr} + bl sub_08052724 + cmp r0, #0 + beq _08052784 + ldr r0, _08052790 @ =gUnk_02002A40 + ldr r1, _08052794 @ =gUnk_02033A90 + ldr r2, _08052798 @ =0x0000046C + adds r0, r0, r2 + ldrb r1, [r1, #3] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 +_08052784: + adds r0, r4, #0 + cmp r0, #0 + beq _0805278C + movs r0, #1 +_0805278C: + pop {r4, pc} + .align 2, 0 +_08052790: .4byte gUnk_02002A40 +_08052794: .4byte gUnk_02033A90 +_08052798: .4byte 0x0000046C + + thumb_func_start sub_0805279C +sub_0805279C: @ 0x0805279C + push {lr} + bl sub_08052724 + cmp r0, #0 + beq _080527C8 + ldr r0, _080527BC @ =gUnk_02002A40 + ldr r1, _080527C0 @ =gUnk_02033A90 + ldr r2, _080527C4 @ =0x0000046C + adds r0, r0, r2 + ldrb r1, [r1, #3] + adds r0, r0, r1 + ldrb r0, [r0] + lsrs r0, r0, #1 + movs r1, #1 + ands r0, r1 + b _080527CA + .align 2, 0 +_080527BC: .4byte gUnk_02002A40 +_080527C0: .4byte gUnk_02033A90 +_080527C4: .4byte 0x0000046C +_080527C8: + movs r0, #0 +_080527CA: + pop {pc} + + thumb_func_start sub_080527CC +sub_080527CC: @ 0x080527CC + push {lr} + bl sub_08052724 + cmp r0, #0 + beq _080527F8 + ldr r0, _080527EC @ =gUnk_02002A40 + ldr r1, _080527F0 @ =gUnk_02033A90 + ldr r2, _080527F4 @ =0x0000046C + adds r0, r0, r2 + ldrb r1, [r1, #3] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + b _080527FA + .align 2, 0 +_080527EC: .4byte gUnk_02002A40 +_080527F0: .4byte gUnk_02033A90 +_080527F4: .4byte 0x0000046C +_080527F8: + movs r0, #0 +_080527FA: + pop {pc} + + thumb_func_start sub_080527FC +sub_080527FC: @ 0x080527FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08053320 + bl sub_080AE1D8 + bl sub_080ADE24 + movs r0, #1 + bl sub_0801C370 + adds r0, r4, #0 + bl sub_0801AE44 + ldr r0, _08052830 @ =gUnk_02024090 + ldr r1, _08052834 @ =gUnk_020176A0 + movs r2, #0x80 + lsls r2, r2, #3 + bl sub_0801D66C + ldr r1, _08052838 @ =gUnk_0200B644 + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1] + pop {r4, pc} + .align 2, 0 +_08052830: .4byte gUnk_02024090 +_08052834: .4byte gUnk_020176A0 +_08052838: .4byte gUnk_0200B644 + + thumb_func_start sub_0805283C +sub_0805283C: @ 0x0805283C + push {r4, lr} + ldr r0, _08052868 @ =gUnk_02033A90 + ldr r1, _0805286C @ =0x00000864 + adds r4, r0, r1 + ldr r1, _08052870 @ =gUnk_08127D30 + ldr r0, _08052874 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #3] + str r0, [r4] + movs r0, #0x8c + lsls r0, r0, #4 + movs r1, #0x7c + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08052864 + movs r0, #0x33 + str r0, [r4] +_08052864: + pop {r4, pc} + .align 2, 0 +_08052868: .4byte gUnk_02033A90 +_0805286C: .4byte 0x00000864 +_08052870: .4byte gUnk_08127D30 +_08052874: .4byte gUnk_03000BF0 + + thumb_func_start sub_08052878 +sub_08052878: @ 0x08052878 + push {lr} + ldr r0, _08052894 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + ldr r0, _08052898 @ =0x80010000 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08052894: .4byte gUnk_02033A90 +_08052898: .4byte 0x80010000 + + thumb_func_start sub_0805289C +sub_0805289C: @ 0x0805289C + ldr r0, _080528AC @ =gUnk_02033A90 + ldr r2, _080528B0 @ =0x00000864 + adds r1, r0, r2 + subs r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + bx lr + .align 2, 0 +_080528AC: .4byte gUnk_02033A90 +_080528B0: .4byte 0x00000864 + + thumb_func_start sub_080528B4 +sub_080528B4: @ 0x080528B4 + push {lr} + ldr r0, _080528C4 @ =gUnk_030010A0 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _080528C8 + movs r0, #0 + b _080528E6 + .align 2, 0 +_080528C4: .4byte gUnk_030010A0 +_080528C8: + bl sub_0804FFE4 + ldr r1, _080528E8 @ =gUnk_03001000 + movs r2, #0 + movs r0, #3 + strb r0, [r1, #3] + strb r2, [r1, #4] + movs r0, #5 + movs r1, #8 + bl sub_08050054 + ldr r0, _080528EC @ =0x80100000 + bl sub_080A3268 + movs r0, #1 +_080528E6: + pop {pc} + .align 2, 0 +_080528E8: .4byte gUnk_03001000 +_080528EC: .4byte 0x80100000 + + thumb_func_start sub_080528F0 +sub_080528F0: @ 0x080528F0 + push {lr} + ldr r1, _08052914 @ =gUnk_02033A90 + ldr r2, _08052918 @ =0x00000888 + adds r0, r1, r2 + ldr r2, [r0] + cmp r2, #0 + beq _08052910 + movs r3, #0x89 + lsls r3, r3, #4 + adds r0, r1, r3 + ldr r1, [r0] + cmp r1, #0 + beq _08052910 + adds r0, r2, #0 + bl _call_via_r1 +_08052910: + pop {pc} + .align 2, 0 +_08052914: .4byte gUnk_02033A90 +_08052918: .4byte 0x00000888 + + thumb_func_start sub_0805291C +sub_0805291C: @ 0x0805291C + push {r4, lr} + ldr r4, _08052948 @ =gUnk_030010A0 + ldrb r0, [r4, #8] + cmp r0, #0 + beq _080529F4 + ldr r0, _0805294C @ =gUnk_02002A40 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, #0 + beq _080529F4 + ldr r0, _08052950 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x12 + beq _080529F4 + bl sub_080529F8 + cmp r0, #0 + beq _08052954 + movs r0, #0 + strb r0, [r4, #8] + b _080529F6 + .align 2, 0 +_08052948: .4byte gUnk_030010A0 +_0805294C: .4byte gUnk_02002A40 +_08052950: .4byte gUnk_03003F80 +_08052954: + ldrb r0, [r4, #9] + subs r0, #1 + cmp r0, #8 + bhi _080529D4 + lsls r0, r0, #2 + ldr r1, _08052968 @ =_0805296C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08052968: .4byte _0805296C +_0805296C: @ jump table + .4byte _08052990 @ case 0 + .4byte _080529A4 @ case 1 + .4byte _080529D4 @ case 2 + .4byte _080529A8 @ case 3 + .4byte _080529B2 @ case 4 + .4byte _080529BC @ case 5 + .4byte _080529C8 @ case 6 + .4byte _080529C8 @ case 7 + .4byte _0805299A @ case 8 +_08052990: + movs r0, #0xd + movs r1, #8 + bl sub_08050054 + b _080529DC +_0805299A: + movs r0, #0xd + movs r1, #3 + bl sub_08050054 + b _080529DC +_080529A4: + movs r0, #7 + b _080529AA +_080529A8: + movs r0, #5 +_080529AA: + movs r1, #4 + bl sub_08050054 + b _080529DC +_080529B2: + movs r0, #5 + movs r1, #0x10 + bl sub_08050054 + b _080529DC +_080529BC: + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + b _080529DC +_080529C8: + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #7 + bl sub_08050054 + b _080529DC +_080529D4: + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 +_080529DC: + bl sub_080528F0 + ldr r0, _080529F0 @ =gUnk_03001000 + movs r1, #3 + strb r1, [r0, #4] + movs r1, #1 + strb r1, [r0, #0xb] + movs r0, #1 + b _080529F6 + .align 2, 0 +_080529F0: .4byte gUnk_03001000 +_080529F4: + movs r0, #0 +_080529F6: + pop {r4, pc} + + thumb_func_start sub_080529F8 +sub_080529F8: @ 0x080529F8 + push {r4, r5, r6, lr} + ldr r1, _08052A34 @ =gUnk_030010A0 + ldrh r4, [r1, #0xa] + ldr r2, _08052A38 @ =gUnk_080FCAD6 + ldrh r0, [r2] + cmp r0, #0 + beq _08052A48 + ldr r3, _08052A3C @ =gUnk_03003F80 + movs r6, #0 + movs r0, #0x39 + adds r0, r0, r3 + mov ip, r0 + movs r5, #0x1e +_08052A12: + ldrh r0, [r2] + cmp r4, r0 + bne _08052A40 + strb r5, [r3, #0xc] + adds r0, r3, #0 + adds r0, #0x38 + strb r6, [r0] + ldrh r0, [r2, #2] + mov r3, ip + strb r0, [r3] + ldrb r0, [r1, #0xf] + cmp r0, #0 + bne _08052A30 + ldrh r0, [r2, #2] + strb r0, [r1, #0xf] +_08052A30: + movs r0, #1 + b _08052A4A + .align 2, 0 +_08052A34: .4byte gUnk_030010A0 +_08052A38: .4byte gUnk_080FCAD6 +_08052A3C: .4byte gUnk_03003F80 +_08052A40: + adds r2, #4 + ldrh r0, [r2] + cmp r0, #0 + bne _08052A12 +_08052A48: + movs r0, #0 +_08052A4A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08052A4C +sub_08052A4C: @ 0x08052A4C + push {r4, r5, lr} + ldr r2, _08052A88 @ =gUnk_030010A0 + movs r0, #1 + strb r0, [r2, #8] + ldr r5, _08052A8C @ =gLinkEntity + ldr r3, _08052A90 @ =gUnk_03000BF0 + ldrh r0, [r5, #0x2e] + ldrh r1, [r3, #6] + subs r0, r0, r1 + movs r1, #0xfe + lsls r1, r1, #2 + adds r4, r1, #0 + ands r0, r4 + strh r0, [r2, #0x10] + ldrh r0, [r5, #0x32] + ldrh r1, [r3, #8] + subs r0, r0, r1 + ands r0, r4 + strh r0, [r2, #0x12] + movs r0, #4 + strb r0, [r2, #0xe] + movs r0, #0xa + strb r0, [r2, #0xf] + ldrb r0, [r3, #4] + strb r0, [r2, #0xc] + ldrb r0, [r3, #5] + subs r0, #1 + strb r0, [r2, #0xd] + pop {r4, r5, pc} + .align 2, 0 +_08052A88: .4byte gUnk_030010A0 +_08052A8C: .4byte gLinkEntity +_08052A90: .4byte gUnk_03000BF0 + + thumb_func_start sub_08052A94 +sub_08052A94: @ 0x08052A94 + push {lr} + ldr r0, _08052AAC @ =gUnk_030010A0 + ldrb r0, [r0, #9] + subs r0, #1 + cmp r0, #8 + bhi _08052B1C + lsls r0, r0, #2 + ldr r1, _08052AB0 @ =_08052AB4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08052AAC: .4byte gUnk_030010A0 +_08052AB0: .4byte _08052AB4 +_08052AB4: @ jump table + .4byte _08052AD8 @ case 0 + .4byte _08052AE6 @ case 1 + .4byte _08052B22 @ case 2 + .4byte _08052B1C @ case 3 + .4byte _08052B08 @ case 4 + .4byte _08052AF0 @ case 5 + .4byte _08052AFC @ case 6 + .4byte _08052B12 @ case 7 + .4byte _08052ADC @ case 8 +_08052AD8: + movs r0, #0xc + b _08052B14 +_08052ADC: + movs r0, #0xc + movs r1, #3 + bl sub_08050054 + b _08052B22 +_08052AE6: + movs r0, #6 + movs r1, #4 + bl sub_08050054 + b _08052B22 +_08052AF0: + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + b _08052B22 +_08052AFC: + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #7 + bl sub_08050054 + b _08052B22 +_08052B08: + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + b _08052B22 +_08052B12: + movs r0, #6 +_08052B14: + movs r1, #8 + bl sub_08050054 + b _08052B22 +_08052B1C: + movs r0, #0x10 + bl sub_080500F4 +_08052B22: + pop {pc} + + thumb_func_start sub_08052B24 +sub_08052B24: @ 0x08052B24 + push {lr} + ldr r0, _08052B90 @ =gUnk_03000FF0 + ldrh r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08052B8A + ldr r2, _08052B94 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x8b + ldrb r0, [r0] + cmp r0, #0 + bne _08052B8A + ldr r0, _08052B98 @ =gUnk_02034490 + ldrb r0, [r0] + cmp r0, #0 + bne _08052B8A + ldr r0, _08052B9C @ =gUnk_0200AF00 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _08052B8A + ldr r0, [r2, #0x30] + movs r1, #0x8c + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08052B8A + adds r0, r2, #0 + adds r0, #0xa9 + ldrb r0, [r0] + cmp r0, #1 + bgt _08052B8A + ldr r0, [r2, #0x2c] + cmp r0, #0 + bne _08052B8A + ldr r1, _08052BA0 @ =gLinkEntity + adds r0, r1, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0 + bne _08052B8A + movs r3, #0x36 + ldrsh r0, [r1, r3] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08052BA4 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08052BA4 +_08052B8A: + movs r0, #0 + b _08052BB4 + .align 2, 0 +_08052B90: .4byte gUnk_03000FF0 +_08052B94: .4byte gUnk_03003F80 +_08052B98: .4byte gUnk_02034490 +_08052B9C: .4byte gUnk_0200AF00 +_08052BA0: .4byte gLinkEntity +_08052BA4: + bl sub_0801862C + movs r0, #0x13 + bl sub_08078160 + bl sub_0805E544 + movs r0, #1 +_08052BB4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08052BB8 +sub_08052BB8: @ 0x08052BB8 + push {lr} + ldr r0, _08052BE0 @ =gUnk_030010A0 + adds r2, r0, #0 + adds r2, #0x35 + ldrb r1, [r2] + adds r3, r0, #0 + cmp r1, #0 + bne _08052BEC + ldr r0, _08052BE4 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + ldr r0, _08052BE8 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r0, [r0, r2] + subs r1, r1, r0 + movs r2, #0xd + cmp r1, #0x60 + ble _08052BEE + movs r2, #1 + b _08052BEE + .align 2, 0 +_08052BE0: .4byte gUnk_030010A0 +_08052BE4: .4byte gLinkEntity +_08052BE8: .4byte gUnk_03000BF0 +_08052BEC: + ldrb r2, [r2] +_08052BEE: + ldrh r0, [r3, #0x36] + adds r1, r2, #0 + bl sub_080563C8 + pop {pc} + + thumb_func_start sub_08052BF8 +sub_08052BF8: @ 0x08052BF8 + push {lr} + ldr r2, _08052C34 @ =gUnk_030010A0 + adds r1, r2, #0 + adds r1, #0x31 + ldrb r0, [r1] + cmp r0, #0 + bne _08052C30 + movs r0, #1 + strb r0, [r1] + ldr r0, _08052C38 @ =gUnk_02033A90 + ldrb r1, [r0, #1] + adds r0, r2, #0 + adds r0, #0x2e + strb r1, [r0] + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _08052C30 + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0xf + strb r0, [r1, #9] + strb r0, [r1, #0xa] + adds r0, r1, #0 + movs r1, #0 + bl sub_0805EA2C +_08052C30: + pop {pc} + .align 2, 0 +_08052C34: .4byte gUnk_030010A0 +_08052C38: .4byte gUnk_02033A90 + + thumb_func_start sub_08052C3C +sub_08052C3C: @ 0x08052C3C + push {lr} + ldr r2, _08052C58 @ =gUnk_02033A90 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _08052C48 + strb r0, [r2, #0x1a] +_08052C48: + ldrb r0, [r2, #0x1a] + cmp r0, #0 + beq _08052C56 + subs r0, #1 + movs r1, #0 + strb r0, [r2, #0x1a] + strb r1, [r2, #0x18] +_08052C56: + pop {pc} + .align 2, 0 +_08052C58: .4byte gUnk_02033A90 + + thumb_func_start sub_08052C5C +sub_08052C5C: @ 0x08052C5C + push {lr} + bl sub_08052680 + cmp r0, #0 + bne _08052C98 + bl sub_08052620 + cmp r0, #0 + beq _08052C84 + ldr r2, _08052C7C @ =gUnk_030010A0 + ldr r1, _08052C80 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + strh r0, [r2, #0x20] + ldrh r0, [r1, #0x32] + strh r0, [r2, #0x22] + b _08052C98 + .align 2, 0 +_08052C7C: .4byte gUnk_030010A0 +_08052C80: .4byte gLinkEntity +_08052C84: + bl sub_08052660 + cmp r0, #0 + beq _08052C98 + ldr r2, _08052C9C @ =gUnk_030010A0 + ldr r1, _08052CA0 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + strh r0, [r2, #0x1c] + ldrh r0, [r1, #0x32] + strh r0, [r2, #0x1e] +_08052C98: + pop {pc} + .align 2, 0 +_08052C9C: .4byte gUnk_030010A0 +_08052CA0: .4byte gLinkEntity + + thumb_func_start sub_08052CA4 +sub_08052CA4: @ 0x08052CA4 + push {r4, lr} + ldr r4, _08052CC8 @ =gUnk_0811E214 + lsls r0, r0, #2 + adds r0, r0, r4 + lsls r4, r1, #2 + adds r4, r4, r1 + lsls r4, r4, #1 + ldr r1, [r0] + adds r1, r1, r4 + ldr r4, _08052CCC @ =gUnk_030010A0 + ldrh r0, [r1] + adds r0, r0, r2 + strh r0, [r4, #0x20] + ldrh r0, [r1, #2] + adds r0, r0, r3 + strh r0, [r4, #0x22] + pop {r4, pc} + .align 2, 0 +_08052CC8: .4byte gUnk_0811E214 +_08052CCC: .4byte gUnk_030010A0 + + thumb_func_start sub_08052CD0 +sub_08052CD0: @ 0x08052CD0 + push {r4, lr} + ldr r4, _08052CF4 @ =gUnk_0811E214 + lsls r0, r0, #2 + adds r0, r0, r4 + lsls r4, r1, #2 + adds r4, r4, r1 + lsls r4, r4, #1 + ldr r1, [r0] + adds r1, r1, r4 + ldr r4, _08052CF8 @ =gUnk_030010A0 + ldrh r0, [r1] + adds r0, r0, r2 + strh r0, [r4, #0x1c] + ldrh r0, [r1, #2] + adds r0, r0, r3 + strh r0, [r4, #0x1e] + pop {r4, pc} + .align 2, 0 +_08052CF4: .4byte gUnk_0811E214 +_08052CF8: .4byte gUnk_030010A0 + + thumb_func_start sub_08052CFC +sub_08052CFC: @ 0x08052CFC + push {r4, lr} + ldr r4, _08052D44 @ =gUnk_02033A90 + ldr r1, _08052D48 @ =0x00000894 + adds r0, r4, #0 + bl sub_0801D630 + ldr r0, _08052D4C @ =gUnk_03000BF0 + ldrb r1, [r0, #4] + lsls r1, r1, #2 + ldr r0, _08052D50 @ =gUnk_08127D30 + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r4] + ldrb r0, [r1, #1] + strb r0, [r4, #1] + ldrb r0, [r1, #1] + subs r0, #0x17 + strb r0, [r4, #3] + ldr r2, _08052D54 @ =gUnk_0811E454 + ldrb r0, [r1, #2] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r4, #4] + ldrb r0, [r1, #2] + strb r0, [r4, #6] + movs r0, #0xb4 + strb r0, [r4, #0x1a] + adds r0, #0x4c + strh r0, [r4, #0xa] + bl sub_08052A94 + bl sub_08052DA8 + pop {r4, pc} + .align 2, 0 +_08052D44: .4byte gUnk_02033A90 +_08052D48: .4byte 0x00000894 +_08052D4C: .4byte gUnk_03000BF0 +_08052D50: .4byte gUnk_08127D30 +_08052D54: .4byte gUnk_0811E454 + + thumb_func_start sub_08052D58 +sub_08052D58: @ 0x08052D58 + lsls r0, r0, #2 + ldr r1, _08052D6C @ =gUnk_08127D30 + adds r0, r0, r1 + ldr r1, _08052D70 @ =gUnk_0811E454 + ldrb r0, [r0, #2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08052D6C: .4byte gUnk_08127D30 +_08052D70: .4byte gUnk_0811E454 + + thumb_func_start sub_08052D74 +sub_08052D74: @ 0x08052D74 + push {r4, r5, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldr r0, _08052D98 @ =gUnk_03001000 + ldrb r0, [r0, #4] + cmp r0, #7 + beq _08052D96 + ldr r0, _08052D9C @ =gUnk_02033A90 + ldr r5, _08052DA0 @ =0x00000888 + adds r1, r0, r5 + str r3, [r1] + ldr r3, _08052DA4 @ =0x0000088C + adds r1, r0, r3 + str r4, [r1] + adds r5, #8 + adds r0, r0, r5 + str r2, [r0] +_08052D96: + pop {r4, r5, pc} + .align 2, 0 +_08052D98: .4byte gUnk_03001000 +_08052D9C: .4byte gUnk_02033A90 +_08052DA0: .4byte 0x00000888 +_08052DA4: .4byte 0x0000088C + + thumb_func_start sub_08052DA8 +sub_08052DA8: @ 0x08052DA8 + push {r4, r5, r6, r7, lr} + ldr r1, _08052DF8 @ =gUnk_0811E214 + ldr r0, _08052DFC @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + ldr r7, _08052E00 @ =gUnk_02033ACC + movs r5, #0 + ldrh r0, [r4] + ldr r1, _08052E04 @ =0x0000FFFF + cmp r0, r1 + beq _08052DE8 + adds r6, r1, #0 +_08052DC4: + ldrh r0, [r4, #8] + cmp r0, r6 + beq _08052DD8 + ldr r0, _08052DFC @ =gUnk_03000BF0 + ldrb r2, [r0, #4] + adds r0, r7, #0 + adds r1, r4, #0 + adds r3, r5, #0 + bl sub_08052E10 +_08052DD8: + adds r7, #0x20 + adds r5, #1 + adds r4, #0xa + cmp r5, #0x3f + bhi _08052DE8 + ldrh r0, [r4] + cmp r0, r6 + bne _08052DC4 +_08052DE8: + bl sub_08052E8C + ldr r1, _08052E08 @ =gUnk_02033A90 + ldr r2, _08052E0C @ =0x0000085C + adds r1, r1, r2 + str r0, [r1] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08052DF8: .4byte gUnk_0811E214 +_08052DFC: .4byte gUnk_03000BF0 +_08052E00: .4byte gUnk_02033ACC +_08052E04: .4byte 0x0000FFFF +_08052E08: .4byte gUnk_02033A90 +_08052E0C: .4byte 0x0000085C + + thumb_func_start sub_08052E10 +sub_08052E10: @ 0x08052E10 + push {r4, r5, lr} + adds r5, r0, #0 + ldrh r0, [r1] + strh r0, [r5, #4] + ldrh r0, [r1, #2] + strh r0, [r5, #6] + ldrh r0, [r1, #4] + strh r0, [r5] + ldrh r0, [r1, #6] + strh r0, [r5, #2] + ldr r4, _08052E74 @ =gUnk_0810246C + lsls r2, r2, #2 + adds r4, r2, r4 + ldrh r0, [r1, #8] + ldr r1, [r4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r5, #8] + ldr r0, _08052E78 @ =gUnk_08107988 + adds r0, r2, r0 + ldr r0, [r0] + lsls r3, r3, #2 + adds r0, r3, r0 + ldr r0, [r0] + str r0, [r5, #0xc] + ldr r0, _08052E7C @ =gUnk_0810309C + adds r0, r2, r0 + ldr r0, [r0] + str r0, [r5, #0x10] + ldr r0, _08052E80 @ =gUnk_080B755C + adds r0, r2, r0 + ldr r0, [r0] + str r0, [r5, #0x14] + ldr r0, _08052E84 @ =gUnk_0813A7F0 + adds r0, r2, r0 + ldr r0, [r0] + adds r0, r3, r0 + ldr r0, [r0] + str r0, [r5, #0x18] + ldr r0, _08052E88 @ =gUnk_080D50FC + adds r2, r2, r0 + ldr r0, [r2] + cmp r0, #0 + beq _08052E70 + adds r0, r3, r0 + ldr r0, [r0] + str r0, [r5, #0x1c] +_08052E70: + pop {r4, r5, pc} + .align 2, 0 +_08052E74: .4byte gUnk_0810246C +_08052E78: .4byte gUnk_08107988 +_08052E7C: .4byte gUnk_0810309C +_08052E80: .4byte gUnk_080B755C +_08052E84: .4byte gUnk_0813A7F0 +_08052E88: .4byte gUnk_080D50FC + + thumb_func_start sub_08052E8C +sub_08052E8C: @ 0x08052E8C + ldr r0, _08052E98 @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + lsls r0, r0, #5 + ldr r1, _08052E9C @ =gUnk_02033ACC + adds r0, r0, r1 + bx lr + .align 2, 0 +_08052E98: .4byte gUnk_03000BF0 +_08052E9C: .4byte gUnk_02033ACC + + thumb_func_start sub_08052EA0 +sub_08052EA0: @ 0x08052EA0 + push {r4, lr} + ldr r4, _08052EE4 @ =gUnk_02034350 + adds r0, r4, #0 + movs r1, #0xcc + bl sub_0801D630 + movs r0, #0xff + strb r0, [r4, #0x10] + strb r0, [r4, #0x11] + strb r0, [r4, #0x12] + strb r0, [r4, #0x13] + adds r0, #1 + strh r0, [r4, #0xc] + ldr r2, _08052EE8 @ =gUnk_02033A90 + ldr r1, _08052EEC @ =gUnk_08127D30 + ldr r0, _08052EF0 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + strb r0, [r2, #1] + bl sub_08049D30 + bl sub_0807DA70 + bl sub_08054524 + bl sub_080186D4 + bl sub_0806F364 + bl sub_080530C8 + pop {r4, pc} + .align 2, 0 +_08052EE4: .4byte gUnk_02034350 +_08052EE8: .4byte gUnk_02033A90 +_08052EEC: .4byte gUnk_08127D30 +_08052EF0: .4byte gUnk_03000BF0 + + thumb_func_start sub_08052EF4 +sub_08052EF4: @ 0x08052EF4 + push {lr} + cmp r0, #0 + bge _08052EFE + ldr r0, _08052F10 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] +_08052EFE: + lsls r0, r0, #2 + ldr r1, _08052F14 @ =gUnk_08127D30 + adds r0, r0, r1 + ldr r1, _08052F18 @ =gUnk_0811E454 + ldrb r0, [r0, #2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + pop {pc} + .align 2, 0 +_08052F10: .4byte gUnk_03000BF0 +_08052F14: .4byte gUnk_08127D30 +_08052F18: .4byte gUnk_0811E454 + + thumb_func_start sub_08052F1C +sub_08052F1C: @ 0x08052F1C + push {r4, r5, r6, lr} + ldr r2, _08052F4C @ =gUnk_02033A90 + ldrb r1, [r2, #0xd] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08052FCC + ldr r0, _08052F50 @ =gUnk_02034350 + ldrb r0, [r0] + cmp r0, #0 + beq _08052FCC + movs r5, #0 + movs r4, #0 + ldr r0, _08052F54 @ =gUnk_03000BF0 + ldrb r1, [r0, #0x10] + adds r3, r0, #0 + cmp r1, #1 + beq _08052F62 + cmp r1, #1 + bgt _08052F58 + cmp r1, #0 + beq _08052F62 + b _08052F72 + .align 2, 0 +_08052F4C: .4byte gUnk_02033A90 +_08052F50: .4byte gUnk_02034350 +_08052F54: .4byte gUnk_03000BF0 +_08052F58: + cmp r1, #2 + beq _08052F62 + cmp r1, #3 + beq _08052F6A + b _08052F72 +_08052F62: + ldr r1, _08052FD0 @ =0x0000085C + adds r0, r2, r1 + ldr r0, [r0] + ldrh r5, [r0, #2] +_08052F6A: + ldr r1, _08052FD0 @ =0x0000085C + adds r0, r2, r1 + ldr r0, [r0] + ldrh r4, [r0] +_08052F72: + ldr r0, _08052FD0 @ =0x0000085C + adds r2, r2, r0 + ldr r1, [r2] + ldrh r0, [r1, #4] + adds r0, r0, r4 + strh r0, [r1, #4] + ldr r1, [r2] + ldrh r0, [r1, #6] + adds r0, r0, r5 + strh r0, [r1, #6] + ldrh r0, [r3, #6] + adds r0, r0, r4 + strh r0, [r3, #6] + ldrh r0, [r3, #8] + adds r0, r0, r5 + strh r0, [r3, #8] + ldrh r0, [r3, #0xa] + adds r0, r0, r4 + strh r0, [r3, #0xa] + ldrh r0, [r3, #0xc] + adds r0, r0, r5 + strh r0, [r3, #0xc] + ldr r2, _08052FD4 @ =gUnk_03003D70 + adds r6, r2, #0 + adds r6, #0x48 +_08052FA4: + ldr r1, [r2, #4] + adds r3, r2, #0 + adds r3, #8 + cmp r1, r2 + beq _08052FC6 +_08052FAE: + ldrb r0, [r1, #8] + cmp r0, #9 + beq _08052FC0 + ldrh r0, [r1, #0x2e] + adds r0, r0, r4 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + adds r0, r0, r5 + strh r0, [r1, #0x32] +_08052FC0: + ldr r1, [r1, #4] + cmp r1, r2 + bne _08052FAE +_08052FC6: + adds r2, r3, #0 + cmp r2, r6 + blo _08052FA4 +_08052FCC: + pop {r4, r5, r6, pc} + .align 2, 0 +_08052FD0: .4byte 0x0000085C +_08052FD4: .4byte gUnk_03003D70 + + thumb_func_start sub_08052FD8 +sub_08052FD8: @ 0x08052FD8 + push {lr} + bl sub_08052FF4 + ldr r1, _08052FF0 @ =gUnk_03000BF0 + movs r0, #0 + str r0, [r1, #0x30] + bl sub_0807C860 + bl sub_0807C740 + pop {pc} + .align 2, 0 +_08052FF0: .4byte gUnk_03000BF0 + + thumb_func_start sub_08052FF4 +sub_08052FF4: @ 0x08052FF4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + bl sub_08080668 + bl sub_080197AC + ldr r0, _0805306C @ =gUnk_03000BF0 + strb r6, [r0, #4] + strb r4, [r0, #5] + ldr r1, _08053070 @ =gUnk_03000F50 + movs r0, #0xba + lsls r0, r0, #5 + strh r0, [r1] + ldr r5, _08053074 @ =gUnk_020342CC + adds r0, r5, #0 + movs r1, #0x20 + bl sub_0801D630 + str r5, [r5, #0x20] + ldr r0, _08053078 @ =gUnk_0811E214 + lsls r6, r6, #2 + adds r0, r6, r0 + lsls r2, r4, #2 + adds r4, r2, r4 + lsls r4, r4, #1 + ldr r0, [r0] + adds r0, r0, r4 + ldrh r1, [r0] + strh r1, [r5, #4] + ldrh r1, [r0, #2] + strh r1, [r5, #6] + ldrh r1, [r0, #4] + strh r1, [r5] + ldrh r1, [r0, #6] + strh r1, [r5, #2] + ldr r1, _0805307C @ =gUnk_0810246C + adds r1, r6, r1 + ldrh r0, [r0, #8] + ldr r1, [r1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r5, #8] + ldr r0, _08053080 @ =gUnk_08107988 + adds r0, r6, r0 + ldr r0, [r0] + adds r2, r2, r0 + ldr r0, [r2] + str r0, [r5, #0xc] + ldr r0, _08053084 @ =gUnk_0810309C + adds r0, r6, r0 + ldr r0, [r0] + str r0, [r5, #0x10] + ldr r0, _08053088 @ =gUnk_080B755C + adds r6, r6, r0 + ldr r0, [r6] + str r0, [r5, #0x14] + pop {r4, r5, r6, pc} + .align 2, 0 +_0805306C: .4byte gUnk_03000BF0 +_08053070: .4byte gUnk_03000F50 +_08053074: .4byte gUnk_020342CC +_08053078: .4byte gUnk_0811E214 +_0805307C: .4byte gUnk_0810246C +_08053080: .4byte gUnk_08107988 +_08053084: .4byte gUnk_0810309C +_08053088: .4byte gUnk_080B755C + + thumb_func_start sub_0805308C +sub_0805308C: @ 0x0805308C + push {lr} + adds r1, r0, #0 + ldr r2, _080530AC @ =gUnk_02034350 + movs r3, #0xc + ldrsh r0, [r2, r3] + adds r1, r1, r0 + cmp r1, #0 + bge _0805309E + movs r1, #0 +_0805309E: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + ble _080530A8 + adds r1, r0, #0 +_080530A8: + strh r1, [r2, #0xc] + pop {pc} + .align 2, 0 +_080530AC: .4byte gUnk_02034350 + + thumb_func_start sub_080530B0 +sub_080530B0: @ 0x080530B0 + push {lr} + ldr r0, _080530C0 @ =gUnk_080FCAF8 + ldr r1, _080530C4 @ =gUnk_030010EC + movs r2, #0x20 + bl sub_0801D66C + pop {pc} + .align 2, 0 +_080530C0: .4byte gUnk_080FCAF8 +_080530C4: .4byte gUnk_030010EC + + thumb_func_start sub_080530C8 +sub_080530C8: @ 0x080530C8 + push {r4, r5, lr} + movs r4, #1 + movs r5, #0xc0 + lsls r5, r5, #2 + adds r0, r5, #0 + movs r1, #0x78 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _080530E0 + movs r4, #9 + b _08053138 +_080530E0: + movs r0, #6 + bl GetProgressFlag + cmp r0, #0 + beq _080530EE + movs r4, #8 + b _08053138 +_080530EE: + adds r0, r5, #0 + movs r1, #0x32 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _080530FE + movs r4, #7 + b _08053138 +_080530FE: + movs r0, #5 + bl GetProgressFlag + cmp r0, #0 + beq _0805310C + movs r4, #6 + b _08053138 +_0805310C: + movs r0, #4 + bl GetProgressFlag + cmp r0, #0 + beq _0805311A + movs r4, #5 + b _08053138 +_0805311A: + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #0x9c + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _0805312C + movs r4, #4 + b _08053138 +_0805312C: + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + beq _08053138 + movs r4, #2 +_08053138: + ldr r0, _08053140 @ =gUnk_02002A40 + strb r4, [r0, #8] + pop {r4, r5, pc} + .align 2, 0 +_08053140: .4byte gUnk_02002A40 + + thumb_func_start sub_08053144 +sub_08053144: @ 0x08053144 + push {lr} + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + beq _08053154 + movs r0, #0 + b _0805316E +_08053154: + movs r1, #0 + ldr r0, _08053170 @ =gUnk_02033A90 + ldrb r2, [r0, #1] + cmp r2, #0 + beq _0805316C + ldr r0, _08053174 @ =gUnk_030010A0 + adds r0, #0x2e + ldrb r1, [r0] + eors r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r1, r0, #0x1f +_0805316C: + adds r0, r1, #0 +_0805316E: + pop {pc} + .align 2, 0 +_08053170: .4byte gUnk_02033A90 +_08053174: .4byte gUnk_030010A0 + + thumb_func_start sub_08053178 +sub_08053178: @ 0x08053178 + push {r4, r5, lr} + bl sub_08053144 + cmp r0, #0 + beq _080531E6 + ldr r0, _080531E8 @ =gUnk_030010A0 + ldr r5, _080531EC @ =gUnk_02033A90 + ldrb r1, [r5, #1] + adds r0, #0x2e + strb r1, [r0] + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + beq _080531E6 + movs r0, #0x51 + bl GetProgressFlag + cmp r0, #0 + bne _080531DC + bl sub_0805E8D4 + adds r4, r0, #0 + cmp r4, #0 + beq _080531DC + movs r0, #9 + strb r0, [r4, #8] + movs r0, #0x39 + strb r0, [r4, #9] + adds r0, r4, #0 + movs r1, #8 + bl sub_0805EA2C + ldr r0, _080531F0 @ =gUnk_02034350 + ldrb r0, [r0] + cmp r0, #0 + bne _080531DC + ldr r0, _080531F4 @ =gUnk_02002AA0 + ldrb r1, [r5, #1] + bl sub_0801D5A8 + cmp r0, #0 + bne _080531DC + movs r0, #1 + strb r0, [r4, #0xb] + movs r0, #3 + bl sub_08078A90 + bl sub_0805E5A8 +_080531DC: + ldr r0, _080531F4 @ =gUnk_02002AA0 + ldr r1, _080531EC @ =gUnk_02033A90 + ldrb r1, [r1, #1] + bl sub_0801D5BC +_080531E6: + pop {r4, r5, pc} + .align 2, 0 +_080531E8: .4byte gUnk_030010A0 +_080531EC: .4byte gUnk_02033A90 +_080531F0: .4byte gUnk_02034350 +_080531F4: .4byte gUnk_02002AA0 + + thumb_func_start sub_080531F8 +sub_080531F8: @ 0x080531F8 + push {r4, r5, lr} + ldr r1, _0805323C @ =gUnk_03003F80 + ldr r4, _08053240 @ =gLinkEntity + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x16] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x18] + bl sub_08053144 + cmp r0, #0 + beq _08053238 + ldr r5, _08053244 @ =gUnk_030010AC + ldr r1, _08053248 @ =gUnk_02002AC8 + adds r0, r5, #0 + movs r2, #0x20 + bl sub_0801D66C + bl sub_08052660 + cmp r0, #0 + beq _08053238 + adds r1, r5, #0 + subs r1, #0xc + ldr r2, _0805324C @ =gUnk_03000BF0 + ldrb r0, [r2, #4] + strb r0, [r1, #0x16] + ldrb r0, [r2, #5] + strb r0, [r1, #0x17] + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x18] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x1a] +_08053238: + pop {r4, r5, pc} + .align 2, 0 +_0805323C: .4byte gUnk_03003F80 +_08053240: .4byte gLinkEntity +_08053244: .4byte gUnk_030010AC +_08053248: .4byte gUnk_02002AC8 +_0805324C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08053250 +sub_08053250: @ 0x08053250 + push {r4, lr} + ldr r0, _0805328C @ =gUnk_030010A0 + movs r1, #0 + strb r1, [r0, #0xf] + ldr r3, _08053290 @ =gLinkEntity + ldr r4, _08053294 @ =gUnk_03000BF0 + ldrh r1, [r3, #0x2e] + ldrh r2, [r4, #6] + subs r1, r1, r2 + strh r1, [r0, #0x10] + ldrh r1, [r3, #0x32] + ldrh r2, [r4, #8] + subs r1, r1, r2 + strh r1, [r0, #0x12] + ldrb r1, [r3, #0x14] + strb r1, [r0, #0xe] + adds r3, #0x38 + ldrb r1, [r3] + strb r1, [r0, #0x14] + ldrb r1, [r4, #4] + strb r1, [r0, #0xc] + ldrb r1, [r4, #5] + strb r1, [r0, #0xd] + adds r0, #0xc + ldr r1, _08053298 @ =gUnk_02002AC8 + movs r2, #0x20 + bl sub_0801D66C + pop {r4, pc} + .align 2, 0 +_0805328C: .4byte gUnk_030010A0 +_08053290: .4byte gLinkEntity +_08053294: .4byte gUnk_03000BF0 +_08053298: .4byte gUnk_02002AC8 + + thumb_func_start sub_0805329C +sub_0805329C: @ 0x0805329C + push {lr} + bl sub_08053144 + cmp r0, #0 + beq _080532E0 + ldr r0, _080532B8 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0x48 + beq _080532C2 + cmp r0, #0x48 + bgt _080532BC + cmp r0, #0x18 + beq _080532D6 + b _080532DC + .align 2, 0 +_080532B8: .4byte gUnk_03000BF0 +_080532BC: + cmp r0, #0x50 + beq _080532D0 + b _080532DC +_080532C2: + ldr r1, _080532CC @ =gUnk_02002A40 + movs r0, #0 + strb r0, [r1, #7] + b _080532E0 + .align 2, 0 +_080532CC: .4byte gUnk_02002A40 +_080532D0: + bl sub_080530B0 + b _080532E0 +_080532D6: + bl sub_080532E4 + b _080532E0 +_080532DC: + bl sub_08053460 +_080532E0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080532E4 +sub_080532E4: @ 0x080532E4 + ldr r0, _08053318 @ =gUnk_0811E214 + movs r1, #0xb0 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + movs r3, #0xa5 + lsls r3, r3, #1 + adds r2, r0, r3 + ldr r1, _0805331C @ =gUnk_030010A0 + movs r0, #0x58 + strb r0, [r1, #0x16] + movs r0, #0x21 + strb r0, [r1, #0x17] + ldrh r0, [r2, #4] + lsrs r0, r0, #1 + ldrh r3, [r2] + adds r0, r0, r3 + strh r0, [r1, #0x18] + strh r0, [r1, #0x1c] + ldrh r0, [r2, #6] + ldrh r2, [r2, #2] + adds r0, r0, r2 + adds r0, #0xa0 + strh r0, [r1, #0x1a] + strh r0, [r1, #0x1e] + bx lr + .align 2, 0 +_08053318: .4byte gUnk_0811E214 +_0805331C: .4byte gUnk_030010A0 + + thumb_func_start sub_08053320 +sub_08053320: @ 0x08053320 + push {r4, lr} + ldr r0, _0805337C @ =gUnk_02034CB0 + movs r4, #0x80 + lsls r4, r4, #4 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _08053380 @ =gUnk_02021F30 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _08053384 @ =gUnk_020344B0 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _08053388 @ =gUnk_02001A40 + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0801D630 + movs r0, #0x10 + bl sub_0801D7EC + movs r0, #0x17 + bl sub_0801D7EC + ldr r0, _0805338C @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #4 + bne _08053362 + movs r0, #0x1a + bl sub_0801D7EC +_08053362: + bl sub_08053390 + movs r0, #0xb + bl sub_0801D714 + movs r0, #0xc + bl sub_0801D714 + movs r0, #0 + movs r1, #0 + bl sub_0801D79C + pop {r4, pc} + .align 2, 0 +_0805337C: .4byte gUnk_02034CB0 +_08053380: .4byte gUnk_02021F30 +_08053384: .4byte gUnk_020344B0 +_08053388: .4byte gUnk_02001A40 +_0805338C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08053390 +sub_08053390: @ 0x08053390 + push {lr} + movs r0, #8 + bl sub_0807CA84 + movs r1, #0x19 + cmp r0, #0 + beq _080533A0 + movs r1, #0x18 +_080533A0: + adds r0, r1, #0 + bl sub_0801D7EC + movs r0, #0xa + bl sub_0807CA84 + cmp r0, #0 + beq _080533B6 + movs r0, #0x1d + bl sub_0801D7EC +_080533B6: + movs r0, #0xc + bl sub_0807CA84 + movs r1, #0x1b + cmp r0, #0 + beq _080533C4 + movs r1, #0x1c +_080533C4: + adds r0, r1, #0 + bl sub_0801D7EC + pop {pc} + + thumb_func_start sub_080533CC +sub_080533CC: @ 0x080533CC + ldr r0, _08053400 @ =gUnk_020178E0 + ldr r2, _08053404 @ =0xFFFFFE00 + adds r1, r0, r2 + ldrh r2, [r0] + strh r2, [r1] + adds r0, #2 + adds r1, #2 + ldrh r2, [r0] + strh r2, [r1] + adds r0, #2 + adds r1, #2 + ldrh r2, [r0] + strh r2, [r1] + adds r0, #2 + adds r1, #2 + ldrh r2, [r0] + strh r2, [r1] + ldrh r0, [r0, #2] + strh r0, [r1, #2] + ldr r2, _08053408 @ =gUnk_0200B644 + ldr r0, [r2] + movs r1, #8 + orrs r0, r1 + str r0, [r2] + bx lr + .align 2, 0 +_08053400: .4byte gUnk_020178E0 +_08053404: .4byte 0xFFFFFE00 +_08053408: .4byte gUnk_0200B644 + + thumb_func_start sub_0805340C +sub_0805340C: @ 0x0805340C + push {r4, r5, r6, lr} + ldr r5, _08053428 @ =gUnk_02002ECC + movs r4, #0 + ldr r6, _0805342C @ =gUnk_080FCB18 +_08053414: + ldm r6!, {r1} + adds r0, r5, #0 + bl _call_via_r1 + adds r4, #1 + adds r5, #4 + cmp r4, #7 + bls _08053414 + pop {r4, r5, r6, pc} + .align 2, 0 +_08053428: .4byte gUnk_02002ECC +_0805342C: .4byte gUnk_080FCB18 + + thumb_func_start nullsub_480 +nullsub_480: @ 0x08053430 + bx lr + .align 2, 0 + + thumb_func_start sub_08053434 +sub_08053434: @ 0x08053434 + push {lr} + adds r1, r0, #0 + ldr r0, _0805345C @ =gUnk_02033A90 + ldrb r0, [r0, #1] + cmp r0, #0x1d + bne _0805345A + ldr r0, [r1] + cmp r0, #0 + beq _0805345A + subs r0, #1 + str r0, [r1] + cmp r0, #0 + bne _0805345A + bl sub_08053460 + movs r0, #5 + movs r1, #6 + bl sub_080A7138 +_0805345A: + pop {pc} + .align 2, 0 +_0805345C: .4byte gUnk_02033A90 + + thumb_func_start sub_08053460 +sub_08053460: @ 0x08053460 + push {lr} + ldr r0, _08053488 @ =gUnk_02002A40 + ldr r1, _0805348C @ =0x0000048C + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + movs r0, #0x8c + lsls r0, r0, #4 + movs r1, #0x79 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08053480 + movs r0, #0x1c + bl sub_0807CD80 +_08053480: + ldr r0, _08053490 @ =gUnk_080FCB38 + bl sub_0805356C + pop {pc} + .align 2, 0 +_08053488: .4byte gUnk_02002A40 +_0805348C: .4byte 0x0000048C +_08053490: .4byte gUnk_080FCB38 + + thumb_func_start sub_08053494 +sub_08053494: @ 0x08053494 + ldr r0, _080534A0 @ =gUnk_02002A40 + ldr r1, _080534A4 @ =0x0000048C + adds r0, r0, r1 + ldr r1, _080534A8 @ =0x00002A30 + str r1, [r0] + bx lr + .align 2, 0 +_080534A0: .4byte gUnk_02002A40 +_080534A4: .4byte 0x0000048C +_080534A8: .4byte 0x00002A30 + + thumb_func_start sub_080534AC +sub_080534AC: @ 0x080534AC + push {r4, lr} + movs r4, #0x8c + lsls r4, r4, #4 + adds r0, r4, #0 + movs r1, #0x7c + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _080534D6 + adds r0, r4, #0 + movs r1, #0x7c + bl sub_0807CD20 + ldr r0, _080534D8 @ =gUnk_02002A40 + ldr r1, _080534DC @ =0x0000048C + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + ldr r0, _080534E0 @ =0x80100000 + bl sub_080A3268 +_080534D6: + pop {r4, pc} + .align 2, 0 +_080534D8: .4byte gUnk_02002A40 +_080534DC: .4byte 0x0000048C +_080534E0: .4byte 0x80100000 + + thumb_func_start sub_080534E4 +sub_080534E4: @ 0x080534E4 + push {lr} + adds r1, r0, #0 + ldr r0, _080534FC @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0x1a + beq _080534FA + ldr r0, [r1] + cmp r0, #0 + beq _080534FA + subs r0, #1 + str r0, [r1] +_080534FA: + pop {pc} + .align 2, 0 +_080534FC: .4byte gUnk_03000BF0 + + thumb_func_start sub_08053500 +sub_08053500: @ 0x08053500 + ldr r0, _0805350C @ =gUnk_02002A40 + ldr r1, _08053510 @ =0x00000494 + adds r0, r0, r1 + ldr r1, _08053514 @ =0x00008CA0 + str r1, [r0] + bx lr + .align 2, 0 +_0805350C: .4byte gUnk_02002A40 +_08053510: .4byte 0x00000494 +_08053514: .4byte 0x00008CA0 + + thumb_func_start sub_08053518 +sub_08053518: @ 0x08053518 + push {lr} + bl sub_08053460 + ldr r0, _08053568 @ =gUnk_080FCB62 + bl sub_0805356C + movs r0, #0x1b + bl GetProgressFlag + cmp r0, #0 + bne _08053534 + movs r0, #0x1a + bl sub_0807CD80 +_08053534: + movs r0, #0x40 + bl sub_0807CA84 + cmp r0, #0 + bne _08053544 + movs r0, #2 + bl sub_0807CD80 +_08053544: + movs r0, #0x41 + bl sub_0807CA84 + cmp r0, #0 + bne _08053554 + movs r0, #3 + bl sub_0807CD80 +_08053554: + movs r0, #0x42 + bl sub_0807CA84 + cmp r0, #0 + bne _08053564 + movs r0, #5 + bl sub_0807CD80 +_08053564: + pop {pc} + .align 2, 0 +_08053568: .4byte gUnk_080FCB62 + + thumb_func_start sub_0805356C +sub_0805356C: @ 0x0805356C + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4] + ldr r1, _0805358C @ =0x0000FFFF + cmp r0, r1 + beq _0805358A + adds r5, r1, #0 +_0805357A: + ldrh r0, [r4] + ldrh r1, [r4, #2] + bl sub_0807CD20 + adds r4, #4 + ldrh r0, [r4] + cmp r0, r5 + bne _0805357A +_0805358A: + pop {r4, r5, pc} + .align 2, 0 +_0805358C: .4byte 0x0000FFFF + + thumb_func_start sub_08053590 +sub_08053590: @ 0x08053590 + push {lr} + ldr r1, _080535A4 @ =gUnk_080FCBB4 + ldr r0, _080535A8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080535A4: .4byte gUnk_080FCBB4 +_080535A8: .4byte gUnk_02000080 + + thumb_func_start sub_080535AC +sub_080535AC: @ 0x080535AC + push {lr} + ldr r2, _080535DC @ =gUnk_02000080 + movs r1, #1 + strb r1, [r2, #6] + movs r0, #0x78 + strh r0, [r2, #8] + ldr r0, _080535E0 @ =gUnk_02032EC0 + strb r1, [r0, #6] + ldr r0, _080535E4 @ =gUnk_02000070 + strb r1, [r0] + ldr r2, _080535E8 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _080535EC @ =0x0000FEFF + ands r0, r1 + strh r0, [r2] + ldr r0, _080535F0 @ =gUnk_080FCB94 + bl sub_0804ADDC + movs r0, #6 + movs r1, #8 + bl sub_08050054 + pop {pc} + .align 2, 0 +_080535DC: .4byte gUnk_02000080 +_080535E0: .4byte gUnk_02032EC0 +_080535E4: .4byte gUnk_02000070 +_080535E8: .4byte gUnk_03000F50 +_080535EC: .4byte 0x0000FEFF +_080535F0: .4byte gUnk_080FCB94 + + thumb_func_start sub_080535F4 +sub_080535F4: @ 0x080535F4 + push {lr} + ldr r0, _0805360C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053608 + bl sub_0805E5B4 + ldr r1, _08053610 @ =gUnk_02000080 + movs r0, #2 + strb r0, [r1, #6] +_08053608: + pop {pc} + .align 2, 0 +_0805360C: .4byte gUnk_03000FD0 +_08053610: .4byte gUnk_02000080 + + thumb_func_start nullsub_481 +nullsub_481: @ 0x08053614 + bx lr + .align 2, 0 + + thumb_func_start sub_08053618 +sub_08053618: @ 0x08053618 + push {lr} + ldr r1, _08053630 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805362C + bl sub_08052004 +_0805362C: + pop {pc} + .align 2, 0 +_08053630: .4byte gUnk_02000080 + + thumb_func_start sub_08053634 +sub_08053634: @ 0x08053634 + push {lr} + ldr r1, _08053644 @ =gUnk_02032EC0 + movs r0, #3 + strb r0, [r1] + bl sub_08056418 + pop {pc} + .align 2, 0 +_08053644: .4byte gUnk_02032EC0 + + thumb_func_start sub_08053648 +sub_08053648: @ 0x08053648 + push {lr} + movs r0, #0x2d + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08053674 + ldr r0, _08053678 @ =gUnk_03000BF0 + movs r3, #0xb4 + lsls r3, r3, #2 + adds r1, r3, #0 + ldrh r3, [r0, #6] + adds r1, r1, r3 + strh r1, [r2, #0x2e] + movs r3, #0xa4 + lsls r3, r3, #1 + adds r1, r3, #0 + ldrh r0, [r0, #8] + adds r1, r1, r0 + strh r1, [r2, #0x32] +_08053674: + pop {pc} + .align 2, 0 +_08053678: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805367C +sub_0805367C: @ 0x0805367C + ldr r1, _08053688 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + bx lr + .align 2, 0 +_08053688: .4byte gUnk_02000080 + + thumb_func_start sub_0805368C +sub_0805368C: @ 0x0805368C + push {lr} + movs r0, #6 + movs r1, #0x5d + movs r2, #6 + bl sub_0805EB00 + cmp r0, #0 + beq _080536A6 + bl sub_0805E7BC + movs r0, #0xf0 + bl sub_080A3268 +_080536A6: + pop {pc} + + thumb_func_start sub_080536A8 +sub_080536A8: @ 0x080536A8 + push {lr} + movs r0, #5 + movs r1, #5 + movs r2, #4 + movs r3, #0x10 + bl sub_080A71C4 + pop {pc} + + thumb_func_start sub_080536B8 +sub_080536B8: @ 0x080536B8 + push {lr} + movs r0, #5 + movs r1, #3 + movs r2, #4 + movs r3, #4 + bl sub_080A71C4 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080536D4 +sub_080536D4: @ 0x080536D4 + push {lr} + ldr r1, _080536E8 @ =gUnk_080FCCFC + ldr r0, _080536EC @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080536E8: .4byte gUnk_080FCCFC +_080536EC: .4byte gUnk_02000080 + + thumb_func_start sub_080536F0 +sub_080536F0: @ 0x080536F0 + push {lr} + ldr r1, _08053704 @ =gUnk_080FCD38 + ldr r0, _08053708 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053704: .4byte gUnk_080FCD38 +_08053708: .4byte gUnk_02000080 + + thumb_func_start sub_0805370C +sub_0805370C: @ 0x0805370C + push {lr} + ldr r1, _08053730 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + ldr r1, _08053734 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + bl sub_08051FF0 + ldr r0, _08053738 @ =gUnk_080FCC54 + bl sub_0804ADDC + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {pc} + .align 2, 0 +_08053730: .4byte gUnk_02000080 +_08053734: .4byte gUnk_02000070 +_08053738: .4byte gUnk_080FCC54 + + thumb_func_start sub_0805373C +sub_0805373C: @ 0x0805373C + push {lr} + ldr r1, _08053750 @ =gUnk_080FCD40 + ldr r0, _08053754 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053750: .4byte gUnk_080FCD40 +_08053754: .4byte gUnk_02000080 + + thumb_func_start sub_08053758 +sub_08053758: @ 0x08053758 + push {r4, lr} + ldr r1, _080537DC @ =gUnk_02000080 + movs r2, #0 + movs r3, #1 + strb r3, [r1, #6] + movs r4, #0 + movs r0, #0x78 + strh r0, [r1, #8] + movs r0, #0x1e + strh r0, [r1, #0xa] + strb r4, [r1, #0x10] + ldr r0, _080537E0 @ =gUnk_02032EC0 + strb r3, [r0, #6] + ldr r0, _080537E4 @ =gUnk_02025EB0 + str r2, [r0] + ldr r0, _080537E8 @ =gUnk_0200B650 + str r2, [r0] + ldr r0, _080537EC @ =gUnk_03000BF0 + str r2, [r0, #0x30] + strh r2, [r0, #0xc] + strh r2, [r0, #0xa] + bl sub_0801B170 + movs r0, #0 + bl sub_0801DA90 + ldr r2, _080537F0 @ =gUnk_03000F50 + movs r0, #0x99 + lsls r0, r0, #6 + strh r0, [r2] + adds r1, r2, #0 + adds r1, #0x66 + ldr r0, _080537F4 @ =0x00002244 + strh r0, [r1] + adds r1, #2 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + subs r1, #8 + movs r0, #0x1f + strh r0, [r1] + adds r1, #2 + movs r0, #0x3f + strh r0, [r1] + subs r1, #0xa + movs r0, #0xf0 + strh r0, [r1] + adds r1, #4 + movs r0, #0x60 + strh r0, [r1] + ldr r0, _080537F8 @ =0x00001C4E + strh r0, [r2, #0x14] + ldr r0, _080537FC @ =0x00001DC1 + strh r0, [r2, #0x20] + movs r0, #0xf + bl sub_080A3268 + bl sub_0805E5B4 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080537DC: .4byte gUnk_02000080 +_080537E0: .4byte gUnk_02032EC0 +_080537E4: .4byte gUnk_02025EB0 +_080537E8: .4byte gUnk_0200B650 +_080537EC: .4byte gUnk_03000BF0 +_080537F0: .4byte gUnk_03000F50 +_080537F4: .4byte 0x00002244 +_080537F8: .4byte 0x00001C4E +_080537FC: .4byte 0x00001DC1 + + thumb_func_start sub_08053800 +sub_08053800: @ 0x08053800 + push {r4, r5, lr} + ldr r0, _0805387C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805387A + ldr r1, _08053880 @ =gUnk_02000080 + ldrb r5, [r1, #0x10] + lsls r4, r5, #1 + adds r4, r4, r5 + lsls r4, r4, #2 + ldr r0, _08053884 @ =gUnk_080FCCB4 + adds r4, r4, r0 + ldrh r0, [r4, #8] + movs r2, #0 + strh r0, [r1, #8] + movs r0, #0x1e + strh r0, [r1, #0xa] + ldrb r0, [r1, #0x10] + adds r0, #1 + strb r0, [r1, #0x10] + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + strb r2, [r1, #7] + adds r0, r5, #0 + adds r0, #0x8a + bl sub_0801D714 + adds r0, r5, #0 + adds r0, #0x3a + bl sub_0801D7EC + ldr r0, _08053888 @ =gUnk_02021F30 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r0, _0805388C @ =0x00000F01 + adds r5, r5, r0 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_0805F46C + ldr r2, _08053890 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r2, #0x1a] + adds r1, r2, #0 + adds r1, #0x68 + movs r0, #0x10 + strh r0, [r1] + ldrh r1, [r4, #4] + adds r0, r2, #0 + adds r0, #0x58 + strh r1, [r0] + ldrh r1, [r4, #6] + adds r0, #4 + strh r1, [r0] + ldrh r1, [r4, #0xa] + movs r0, #4 + bl sub_08050054 +_0805387A: + pop {r4, r5, pc} + .align 2, 0 +_0805387C: .4byte gUnk_03000FD0 +_08053880: .4byte gUnk_02000080 +_08053884: .4byte gUnk_080FCCB4 +_08053888: .4byte gUnk_02021F30 +_0805388C: .4byte 0x00000F01 +_08053890: .4byte gUnk_03000F50 + + thumb_func_start sub_08053894 +sub_08053894: @ 0x08053894 + push {r4, lr} + ldr r0, _080538B4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080538F8 + ldr r1, _080538B8 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + ldrh r0, [r1, #0xa] + adds r4, r1, #0 + cmp r0, #0 + beq _080538BC + subs r0, #1 + strh r0, [r4, #0xa] + b _080538E4 + .align 2, 0 +_080538B4: .4byte gUnk_03000FD0 +_080538B8: .4byte gUnk_02000080 +_080538BC: + ldr r0, _080538FC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080538E4 + ldrb r1, [r4, #7] + cmp r1, #0xf + bhi _080538E4 + adds r1, #1 + strb r1, [r4, #7] + lsls r1, r1, #0x18 + ldr r3, _08053900 @ =gUnk_03000F50 + lsrs r2, r1, #0x10 + lsrs r1, r1, #0x19 + movs r0, #0x10 + subs r0, r0, r1 + orrs r2, r0 + adds r3, #0x68 + strh r2, [r3] +_080538E4: + ldrh r0, [r4, #8] + cmp r0, #0 + bne _080538F8 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #5 + movs r1, #8 + bl sub_08050054 +_080538F8: + pop {r4, pc} + .align 2, 0 +_080538FC: .4byte gUnk_030010A0 +_08053900: .4byte gUnk_03000F50 + + thumb_func_start sub_08053904 +sub_08053904: @ 0x08053904 + push {r4, lr} + ldr r0, _08053924 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053968 + ldr r1, _08053928 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + ldrh r0, [r1, #0xa] + adds r4, r1, #0 + cmp r0, #0 + beq _0805392C + subs r0, #1 + strh r0, [r4, #0xa] + b _08053954 + .align 2, 0 +_08053924: .4byte gUnk_03000FD0 +_08053928: .4byte gUnk_02000080 +_0805392C: + ldr r0, _0805396C @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08053954 + ldrb r1, [r4, #7] + cmp r1, #0xf + bhi _08053954 + adds r1, #1 + strb r1, [r4, #7] + lsls r1, r1, #0x18 + ldr r3, _08053970 @ =gUnk_03000F50 + lsrs r2, r1, #0x10 + lsrs r1, r1, #0x19 + movs r0, #0x10 + subs r0, r0, r1 + orrs r2, r0 + adds r3, #0x68 + strh r2, [r3] +_08053954: + ldrh r0, [r4, #8] + cmp r0, #0 + bne _08053968 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #5 + movs r1, #1 + bl sub_08050054 +_08053968: + pop {r4, pc} + .align 2, 0 +_0805396C: .4byte gUnk_030010A0 +_08053970: .4byte gUnk_03000F50 + + thumb_func_start sub_08053974 +sub_08053974: @ 0x08053974 + push {lr} + ldr r0, _080539AC @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080539A8 + bl sub_0804FFE4 + movs r0, #1 + bl sub_0801DA90 + bl sub_080197AC + bl sub_08051F78 + ldr r0, _080539B0 @ =gUnk_080FCBC4 + bl sub_0804ADDC + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + ldr r1, _080539B4 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_080539A8: + pop {pc} + .align 2, 0 +_080539AC: .4byte gUnk_03000FD0 +_080539B0: .4byte gUnk_080FCBC4 +_080539B4: .4byte gUnk_02000080 + + thumb_func_start nullsub_482 +nullsub_482: @ 0x080539B8 + bx lr + .align 2, 0 + + thumb_func_start sub_080539BC +sub_080539BC: @ 0x080539BC + push {lr} + bl sub_080197AC + bl sub_0805E89C + movs r0, #0x22 + movs r1, #0x11 + movs r2, #0 + movs r3, #0 + bl sub_08051F9C + movs r0, #0x22 + movs r1, #0x11 + bl sub_0804B0B0 + ldr r0, _080539EC @ =gUnk_080FCC14 + bl sub_0804ADDC + ldr r1, _080539F0 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + pop {pc} + .align 2, 0 +_080539EC: .4byte gUnk_080FCC14 +_080539F0: .4byte gUnk_02000080 + + thumb_func_start sub_080539F4 +sub_080539F4: @ 0x080539F4 + push {lr} + ldr r0, _08053A14 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053A10 + movs r0, #1 + bl sub_0801DA90 + ldr r0, _08053A18 @ =gUnk_02000080 + ldrb r1, [r0, #6] + adds r1, #1 + strb r1, [r0, #6] + movs r1, #0x3c + strh r1, [r0, #8] +_08053A10: + pop {pc} + .align 2, 0 +_08053A14: .4byte gUnk_03000FD0 +_08053A18: .4byte gUnk_02000080 + + thumb_func_start sub_08053A1C +sub_08053A1C: @ 0x08053A1C + push {r4, lr} + ldr r1, _08053A50 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08053A4E + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r4, #8 + movs r0, #8 + strh r0, [r1, #8] + ldr r0, _08053A54 @ =0x00000F07 + bl sub_08056378 + ldr r1, _08053A58 @ =gUnk_02000050 + movs r0, #1 + strb r0, [r1, #6] + strb r4, [r1, #7] + movs r0, #4 + movs r1, #8 + bl sub_08050054 +_08053A4E: + pop {r4, pc} + .align 2, 0 +_08053A50: .4byte gUnk_02000080 +_08053A54: .4byte 0x00000F07 +_08053A58: .4byte gUnk_02000050 + + thumb_func_start sub_08053A5C +sub_08053A5C: @ 0x08053A5C + push {lr} + ldr r0, _08053A88 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08053A86 + ldr r1, _08053A8C @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08053A86 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #5 + movs r1, #8 + bl sub_08050054 +_08053A86: + pop {pc} + .align 2, 0 +_08053A88: .4byte gUnk_02000050 +_08053A8C: .4byte gUnk_02000080 + + thumb_func_start sub_08053A90 +sub_08053A90: @ 0x08053A90 + push {lr} + ldr r0, _08053AA8 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053AA4 + ldr r1, _08053AAC @ =gUnk_02032EC0 + movs r0, #3 + strb r0, [r1] + bl sub_080197AC +_08053AA4: + pop {pc} + .align 2, 0 +_08053AA8: .4byte gUnk_03000FD0 +_08053AAC: .4byte gUnk_02032EC0 + + thumb_func_start sub_08053AB0 +sub_08053AB0: @ 0x08053AB0 + push {lr} + ldr r1, _08053AC4 @ =gUnk_080FCDD4 + ldr r0, _08053AC8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053AC4: .4byte gUnk_080FCDD4 +_08053AC8: .4byte gUnk_02000080 + + thumb_func_start sub_08053ACC +sub_08053ACC: @ 0x08053ACC + push {lr} + ldr r1, _08053AF4 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + ldr r1, _08053AF8 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + bl sub_08051FF0 + ldr r0, _08053AFC @ =gUnk_080FCD84 + bl sub_0804ADDC + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + pop {pc} + .align 2, 0 +_08053AF4: .4byte gUnk_02000080 +_08053AF8: .4byte gUnk_02000070 +_08053AFC: .4byte gUnk_080FCD84 + + thumb_func_start sub_08053B00 +sub_08053B00: @ 0x08053B00 + ldr r1, _08053B0C @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + bx lr + .align 2, 0 +_08053B0C: .4byte gUnk_02000080 + + thumb_func_start sub_08053B10 +sub_08053B10: @ 0x08053B10 + push {lr} + movs r0, #1 + bl sub_0807CC3C + cmp r0, #0 + beq _08053B34 + ldr r0, _08053B38 @ =gUnk_02000080 + ldrb r1, [r0, #5] + adds r1, #1 + strb r1, [r0, #5] + movs r0, #1 + bl sub_0801DA90 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #4 + bl sub_08050054 +_08053B34: + pop {pc} + .align 2, 0 +_08053B38: .4byte gUnk_02000080 + + thumb_func_start sub_08053B3C +sub_08053B3C: @ 0x08053B3C + push {r4, lr} + movs r4, #0x80 + lsls r4, r4, #1 + movs r0, #5 + movs r1, #4 + movs r2, #5 + adds r3, r4, #0 + bl sub_080A71C4 + movs r0, #5 + adds r1, r4, #0 + bl sub_08050054 + pop {r4, pc} + + thumb_func_start sub_08053B58 +sub_08053B58: @ 0x08053B58 + push {lr} + ldr r1, _08053B6C @ =gUnk_080FCEB0 + ldr r0, _08053B70 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053B6C: .4byte gUnk_080FCEB0 +_08053B70: .4byte gUnk_02000080 + + thumb_func_start sub_08053B74 +sub_08053B74: @ 0x08053B74 + push {lr} + ldr r1, _08053BA0 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + ldr r1, _08053BA4 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + ldr r0, _08053BA8 @ =gUnk_080FCDE0 + bl sub_0804ADDC + bl sub_0805E5B4 + bl sub_0805E470 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + pop {pc} + .align 2, 0 +_08053BA0: .4byte gUnk_02000080 +_08053BA4: .4byte gUnk_02000070 +_08053BA8: .4byte gUnk_080FCDE0 + + thumb_func_start sub_08053BAC +sub_08053BAC: @ 0x08053BAC + ldr r1, _08053BB8 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + bx lr + .align 2, 0 +_08053BB8: .4byte gUnk_02000080 + + thumb_func_start sub_08053BBC +sub_08053BBC: @ 0x08053BBC + push {lr} + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + beq _08053BE0 + ldr r0, _08053BE4 @ =gUnk_02000080 + ldrb r1, [r0, #5] + adds r1, #1 + strb r1, [r0, #5] + movs r0, #1 + bl sub_0801DA90 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #4 + bl sub_08050054 +_08053BE0: + pop {pc} + .align 2, 0 +_08053BE4: .4byte gUnk_02000080 + + thumb_func_start sub_08053BE8 +sub_08053BE8: @ 0x08053BE8 + push {r4, lr} + movs r4, #0x80 + lsls r4, r4, #1 + movs r0, #5 + movs r1, #2 + movs r2, #5 + adds r3, r4, #0 + bl sub_080A71C4 + movs r0, #5 + adds r1, r4, #0 + bl sub_08050054 + pop {r4, pc} + + thumb_func_start sub_08053C04 +sub_08053C04: @ 0x08053C04 + push {lr} + ldr r1, _08053C18 @ =gUnk_080FCEEC + ldr r0, _08053C1C @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053C18: .4byte gUnk_080FCEEC +_08053C1C: .4byte gUnk_02000080 + + thumb_func_start sub_08053C20 +sub_08053C20: @ 0x08053C20 + push {lr} + ldr r1, _08053C50 @ =gUnk_02000080 + movs r2, #1 + strb r2, [r1, #6] + movs r0, #0x78 + strh r0, [r1, #8] + ldr r0, _08053C54 @ =gUnk_02000070 + strb r2, [r0] + bl sub_08051FF0 + movs r0, #4 + bl sub_0805B4D0 + ldr r0, _08053C58 @ =gUnk_080FCEBC + bl sub_0804ADDC + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0x33 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08053C50: .4byte gUnk_02000080 +_08053C54: .4byte gUnk_02000070 +_08053C58: .4byte gUnk_080FCEBC + + thumb_func_start nullsub_483 +nullsub_483: @ 0x08053C5C + bx lr + .align 2, 0 + + thumb_func_start sub_08053C60 +sub_08053C60: @ 0x08053C60 + push {lr} + movs r0, #5 + movs r1, #2 + bl sub_08050054 + movs r0, #0xf4 + bl sub_080A3268 + ldr r0, _08053C80 @ =0x80100000 + bl sub_080A3268 + movs r0, #3 + bl sub_08056010 + pop {pc} + .align 2, 0 +_08053C80: .4byte 0x80100000 + + thumb_func_start sub_08053C84 +sub_08053C84: @ 0x08053C84 + ldr r1, _08053C8C @ =gUnk_02000080 + movs r0, #2 + strb r0, [r1, #6] + bx lr + .align 2, 0 +_08053C8C: .4byte gUnk_02000080 + + thumb_func_start sub_08053C90 +sub_08053C90: @ 0x08053C90 + push {lr} + ldr r1, _08053CA4 @ =gUnk_080FCEF8 + ldr r0, _08053CA8 @ =gUnk_02000080 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053CA4: .4byte gUnk_080FCEF8 +_08053CA8: .4byte gUnk_02000080 + + thumb_func_start sub_08053CAC +sub_08053CAC: @ 0x08053CAC + push {lr} + ldr r1, _08053CC0 @ =gUnk_080FCFA4 + ldr r0, _08053CC4 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053CC0: .4byte gUnk_080FCFA4 +_08053CC4: .4byte gUnk_02000080 + + thumb_func_start sub_08053CC8 +sub_08053CC8: @ 0x08053CC8 + push {r4, r5, r6, lr} + ldr r6, _08053D20 @ =gUnk_02000080 + ldrb r4, [r6, #3] + lsls r4, r4, #4 + ldr r0, _08053D24 @ =gUnk_080FCF04 + adds r4, r4, r0 + adds r0, r4, #0 + adds r0, #8 + str r0, [r6, #0xc] + ldr r0, [r4] + bl sub_0804ADDC + ldrb r0, [r4, #4] + ldrb r1, [r4, #5] + movs r2, #1 + bl sub_0804B0FC + bl sub_0804ADDC + ldrb r0, [r4, #4] + ldrb r1, [r4, #5] + movs r2, #2 + bl sub_0804B0FC + bl sub_0804ADDC + movs r5, #1 + strb r5, [r6, #6] + ldr r2, _08053D28 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _08053D2C @ =0x0000FEFF + ands r0, r1 + strh r0, [r2] + ldr r0, _08053D30 @ =gUnk_02000070 + strb r5, [r0] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + ldrb r0, [r4, #5] + cmp r0, #0x1d + bne _08053D1E + strh r5, [r6, #0xa] +_08053D1E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08053D20: .4byte gUnk_02000080 +_08053D24: .4byte gUnk_080FCF04 +_08053D28: .4byte gUnk_03000F50 +_08053D2C: .4byte 0x0000FEFF +_08053D30: .4byte gUnk_02000070 + + thumb_func_start sub_08053D34 +sub_08053D34: @ 0x08053D34 + push {r4, lr} + ldr r1, _08053D88 @ =gUnk_02000080 + ldrh r0, [r1, #0xa] + cmp r0, #0 + beq _08053D72 + movs r0, #0 + strh r0, [r1, #0xa] + movs r4, #0xd0 + lsls r4, r4, #3 + adds r0, r4, #0 + movs r1, #0x3d + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08053D5C + movs r0, #0x74 + movs r1, #0xc4 + movs r2, #1 + bl sub_0807B314 +_08053D5C: + adds r0, r4, #0 + movs r1, #0x3e + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08053D72 + movs r0, #0x74 + movs r1, #0xcc + movs r2, #1 + bl sub_0807B314 +_08053D72: + ldr r0, _08053D8C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053D86 + ldr r1, _08053D88 @ =gUnk_02000080 + movs r0, #0x78 + strh r0, [r1, #8] + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_08053D86: + pop {r4, pc} + .align 2, 0 +_08053D88: .4byte gUnk_02000080 +_08053D8C: .4byte gUnk_03000FD0 + + thumb_func_start sub_08053D90 +sub_08053D90: @ 0x08053D90 + push {lr} + ldr r1, _08053DB0 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08053DAC + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #0x10 + bl sub_080500F4 +_08053DAC: + pop {pc} + .align 2, 0 +_08053DB0: .4byte gUnk_02000080 + + thumb_func_start sub_08053DB4 +sub_08053DB4: @ 0x08053DB4 + push {r4, r5, lr} + ldr r0, _08053E20 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053E1C + ldr r5, _08053E24 @ =gUnk_02000080 + ldr r4, [r5, #0xc] + ldrb r0, [r4, #4] + ldrb r1, [r4, #5] + bl sub_08052FF4 + bl sub_0807C740 + ldr r1, _08053E28 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + ldr r1, _08053E2C @ =gUnk_03000BF0 + movs r0, #6 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0xa] + adds r0, r0, r2 + strh r0, [r1, #0xa] + movs r0, #7 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0xc] + adds r0, r0, r2 + strh r0, [r1, #0xc] + ldr r0, [r4] + bl sub_0804ADDC + ldrb r0, [r4, #4] + ldrb r1, [r4, #5] + movs r2, #1 + bl sub_0804B0FC + bl sub_0804ADDC + ldrb r0, [r4, #4] + ldrb r1, [r4, #5] + movs r2, #2 + bl sub_0804B0FC + bl sub_0804ADDC + movs r0, #0x78 + strh r0, [r5, #8] + ldrb r0, [r5, #6] + adds r0, #1 + strb r0, [r5, #6] + movs r0, #0x10 + bl sub_080500F4 +_08053E1C: + pop {r4, r5, pc} + .align 2, 0 +_08053E20: .4byte gUnk_03000FD0 +_08053E24: .4byte gUnk_02000080 +_08053E28: .4byte gUnk_02000070 +_08053E2C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08053E30 +sub_08053E30: @ 0x08053E30 + push {lr} + ldr r0, _08053E50 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053E4E + ldr r1, _08053E54 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08053E4E + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08053E4E: + pop {pc} + .align 2, 0 +_08053E50: .4byte gUnk_03000FD0 +_08053E54: .4byte gUnk_02000080 + + thumb_func_start sub_08053E58 +sub_08053E58: @ 0x08053E58 + push {lr} + ldr r1, _08053E6C @ =gUnk_080FD108 + ldr r0, _08053E70 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053E6C: .4byte gUnk_080FD108 +_08053E70: .4byte gUnk_02000080 + + thumb_func_start sub_08053E74 +sub_08053E74: @ 0x08053E74 + push {r4, lr} + ldr r0, _08053EB0 @ =gUnk_080FCFB8 + ldr r4, _08053EB4 @ =gUnk_02000080 + str r0, [r4, #0xc] + ldr r0, [r0] + bl sub_0804ADDC + movs r0, #0x78 + strh r0, [r4, #8] + movs r0, #0x3c + strh r0, [r4, #0xa] + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r2, _08053EB8 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _08053EBC @ =0x0000FEFF + ands r0, r1 + strh r0, [r2] + ldr r1, _08053EC0 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #1 + bl sub_0805E450 + movs r0, #4 + movs r1, #8 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08053EB0: .4byte gUnk_080FCFB8 +_08053EB4: .4byte gUnk_02000080 +_08053EB8: .4byte gUnk_03000F50 +_08053EBC: .4byte 0x0000FEFF +_08053EC0: .4byte gUnk_02000070 + + thumb_func_start sub_08053EC4 +sub_08053EC4: @ 0x08053EC4 + push {r4, lr} + ldr r0, _08053EF4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053EF0 + ldr r4, _08053EF8 @ =gUnk_02000080 + ldrh r0, [r4, #0xa] + subs r0, #1 + strh r0, [r4, #0xa] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08053EF0 + ldr r1, [r4, #0xc] + adds r0, r1, #0 + adds r0, #0xc + str r0, [r4, #0xc] + ldr r0, [r1, #4] + bl sub_0804ADDC + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] +_08053EF0: + pop {r4, pc} + .align 2, 0 +_08053EF4: .4byte gUnk_03000FD0 +_08053EF8: .4byte gUnk_02000080 + + thumb_func_start sub_08053EFC +sub_08053EFC: @ 0x08053EFC + push {lr} + ldr r1, _08053F1C @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08053F18 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #8 + bl sub_080500F4 +_08053F18: + pop {pc} + .align 2, 0 +_08053F1C: .4byte gUnk_02000080 + + thumb_func_start sub_08053F20 +sub_08053F20: @ 0x08053F20 + push {r4, r5, lr} + ldr r0, _08053F78 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053F74 + bl sub_0805E89C + ldr r5, _08053F7C @ =gUnk_02000080 + ldr r4, [r5, #0xc] + ldrb r0, [r4, #8] + ldrb r1, [r4, #9] + bl sub_08052FF4 + bl sub_0807C740 + ldr r1, _08053F80 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + ldr r1, _08053F84 @ =gUnk_03000BF0 + movs r0, #0xa + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0xa] + adds r0, r0, r2 + strh r0, [r1, #0xa] + movs r0, #0xb + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0xc] + adds r0, r0, r2 + strh r0, [r1, #0xc] + ldr r0, [r4] + bl sub_0804ADDC + movs r0, #0x78 + strh r0, [r5, #8] + movs r0, #0x3c + strh r0, [r5, #0xa] + ldrb r0, [r5, #6] + adds r0, #1 + strb r0, [r5, #6] + movs r0, #8 + bl sub_080500F4 +_08053F74: + pop {r4, r5, pc} + .align 2, 0 +_08053F78: .4byte gUnk_03000FD0 +_08053F7C: .4byte gUnk_02000080 +_08053F80: .4byte gUnk_02000070 +_08053F84: .4byte gUnk_03000BF0 + + thumb_func_start sub_08053F88 +sub_08053F88: @ 0x08053F88 + push {lr} + ldr r0, _08053FAC @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08053FAA + ldr r1, _08053FB0 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08053FAA + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] + bl sub_0805E470 +_08053FAA: + pop {pc} + .align 2, 0 +_08053FAC: .4byte gUnk_03000FD0 +_08053FB0: .4byte gUnk_02000080 + + thumb_func_start sub_08053FB4 +sub_08053FB4: @ 0x08053FB4 + push {lr} + ldr r1, _08053FC8 @ =gUnk_080FD138 + ldr r0, _08053FCC @ =gUnk_02000080 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08053FC8: .4byte gUnk_080FD138 +_08053FCC: .4byte gUnk_02000080 + + thumb_func_start sub_08053FD0 +sub_08053FD0: @ 0x08053FD0 + lsls r0, r0, #3 + ldr r1, _08053FDC @ =gUnk_080FD964 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bx lr + .align 2, 0 +_08053FDC: .4byte gUnk_080FD964 + + thumb_func_start sub_08053FE0 +sub_08053FE0: @ 0x08053FE0 + lsls r0, r0, #3 + ldr r1, _08053FEC @ =gUnk_080FD964 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_08053FEC: .4byte gUnk_080FD964 + + thumb_func_start sub_08053FF0 +sub_08053FF0: @ 0x08053FF0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r7, r1, #0 + bl sub_0807CA84 + adds r5, r0, #0 + lsls r1, r6, #3 + ldr r0, _08054010 @ =gUnk_080FD5B4 + adds r4, r1, r0 + cmp r5, #0 + bne _08054014 + ldrh r0, [r4, #4] + mov r8, r0 + b _08054018 + .align 2, 0 +_08054010: .4byte gUnk_080FD5B4 +_08054014: + ldrh r2, [r4, #6] + mov r8, r2 +_08054018: + adds r0, r6, #0 + bl sub_080544C8 + cmp r0, #0 + bne _08054034 + adds r0, r6, #0 + bl sub_08054398 + cmp r5, #0 + bne _08054034 + adds r0, r6, #0 + movs r1, #1 + bl sub_0807CAA0 +_08054034: + ldrb r0, [r4, #1] + cmp r0, #0x12 + bls _0805403C + b _0805427C +_0805403C: + lsls r0, r0, #2 + ldr r1, _08054048 @ =_0805404C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08054048: .4byte _0805404C +_0805404C: @ jump table + .4byte _0805427C @ case 0 + .4byte _08054098 @ case 1 + .4byte _080540A6 @ case 2 + .4byte _080540C0 @ case 3 + .4byte _08054104 @ case 4 + .4byte _0805414C @ case 5 + .4byte _08054154 @ case 6 + .4byte _08054194 @ case 7 + .4byte _080541B6 @ case 8 + .4byte _080541F0 @ case 9 + .4byte _08054212 @ case 10 + .4byte _080541F8 @ case 11 + .4byte _08054238 @ case 12 + .4byte _08054174 @ case 13 + .4byte _08054240 @ case 14 + .4byte _0805425C @ case 15 + .4byte _08054264 @ case 16 + .4byte _080541B0 @ case 17 + .4byte _0805417C @ case 18 +_08054098: + ldrb r0, [r4, #2] + bl sub_080526A0 + movs r0, #0x71 + bl sub_080A3268 + b _0805427C +_080540A6: + ldr r0, _080540BC @ =gUnk_080FD5A8 + ldrb r1, [r4, #2] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + bl sub_080526CC + movs r0, #0x6f + bl sub_080A3268 + b _0805427C + .align 2, 0 +_080540BC: .4byte gUnk_080FD5A8 +_080540C0: + movs r5, #0 + movs r4, #0x1c + b _080540CA +_080540C6: + adds r4, r1, #1 + adds r5, #1 +_080540CA: + cmp r5, #3 + bls _080540D0 + b _0805427C +_080540D0: + adds r0, r4, #0 + bl sub_0807CA84 + adds r1, r4, #0 + cmp r0, #0 + bne _080540C6 + adds r6, r4, #0 + ldr r0, _08054100 @ =gUnk_02002A40 + adds r0, #0xb6 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _080540EE + movs r0, #0x20 + strb r0, [r1] +_080540EE: + adds r0, r6, #0 + movs r1, #1 + bl sub_0807CAA0 + adds r0, r6, #0 + bl sub_08054398 + b _0805427C + .align 2, 0 +_08054100: .4byte gUnk_02002A40 +_08054104: + movs r5, #0 + ldr r0, _08054144 @ =gUnk_02002A40 + adds r2, r0, #0 + adds r2, #0xb6 + ldrb r1, [r2] + adds r3, r0, #0 + cmp r1, #0x20 + beq _08054126 + adds r1, r2, #0 +_08054116: + adds r5, #1 + cmp r5, #3 + bls _0805411E + b _0805427C +_0805411E: + adds r0, r5, r1 + ldrb r0, [r0] + cmp r0, #0x20 + bne _08054116 +_08054126: + cmp r5, #3 + bls _0805412C + b _0805427C +_0805412C: + adds r0, r3, #0 + adds r0, #0xb6 + adds r0, r5, r0 + strb r6, [r0] + adds r0, r6, #0 + movs r1, #1 + bl sub_0807CAA0 + ldr r0, _08054148 @ =0x00000109 + bl sub_080A3268 + b _0805427C + .align 2, 0 +_08054144: .4byte gUnk_02002A40 +_08054148: .4byte 0x00000109 +_0805414C: + movs r0, #1 + bl sub_080526F8 + b _0805424E +_08054154: + ldr r1, _08054168 @ =gUnk_02002A40 + ldr r0, _0805416C @ =gUnk_02033A90 + ldr r2, _08054170 @ =0x0000046C + adds r1, r1, r2 + ldrb r0, [r0, #3] + adds r1, r1, r0 + ldrb r0, [r1] + ldrb r2, [r4, #2] + orrs r0, r2 + b _0805427A + .align 2, 0 +_08054168: .4byte gUnk_02002A40 +_0805416C: .4byte gUnk_02033A90 +_08054170: .4byte 0x0000046C +_08054174: + movs r0, #0x72 + bl sub_0801E738 + b _0805427C +_0805417C: + cmp r6, #0xb + bne _0805418A + movs r0, #0xc + movs r1, #0 + bl sub_0807CAA0 + b _080541B0 +_0805418A: + movs r0, #0xb + movs r1, #0 + bl sub_0807CAA0 + b _080541B0 +_08054194: + cmp r6, #7 + bne _080541A2 + movs r0, #8 + movs r1, #0 + bl sub_0807CAA0 + b _080541AA +_080541A2: + movs r0, #7 + movs r1, #0 + bl sub_0807CAA0 +_080541AA: + movs r0, #0x63 + bl sub_080542F4 +_080541B0: + bl sub_08053390 + b _0805427C +_080541B6: + cmp r5, #0 + bne _080541CA + movs r0, #7 + movs r1, #1 + bl sub_0807CAA0 + movs r0, #7 + bl sub_08054398 + b _080541E2 +_080541CA: + ldr r0, _080541EC @ =gUnk_02002A40 + adds r1, r0, #0 + adds r1, #0xae + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _080541E2 + movs r0, #3 + strb r0, [r1] +_080541E2: + movs r0, #0x63 + bl sub_080542F4 + b _0805427C + .align 2, 0 +_080541EC: .4byte gUnk_02002A40 +_080541F0: + ldrb r0, [r4, #2] + bl sub_080542F4 + b _0805424E +_080541F8: + movs r0, #0x66 + bl sub_0807CA84 + cmp r0, #0 + bne _0805420A + movs r0, #0x66 + movs r1, #1 + bl sub_0807CAA0 +_0805420A: + movs r0, #0x63 + bl sub_08054330 + b _080541B0 +_08054212: + ldr r0, _08054234 @ =gUnk_02002A40 + adds r1, r0, #0 + adds r1, #0xaf + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0805422A + movs r0, #3 + strb r0, [r1] +_0805422A: + movs r0, #0x63 + bl sub_08054330 + b _0805427C + .align 2, 0 +_08054234: .4byte gUnk_02002A40 +_08054238: + ldrb r0, [r4, #2] + bl sub_08054330 + b _0805424E +_08054240: + movs r0, #0x3f + movs r1, #1 + bl sub_0807CAA0 + adds r0, r7, #0 + bl sub_080542C0 +_0805424E: + ldr r0, _08054258 @ =0x00000103 + bl sub_080A3268 + b _0805427C + .align 2, 0 +_08054258: .4byte 0x00000103 +_0805425C: + adds r0, r7, #0 + bl sub_0801E738 + b _0805427C +_08054264: + ldr r0, _08054284 @ =gUnk_02002A40 + adds r1, r0, #0 + adds r1, #0xa8 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _0805427C + movs r0, #3 +_0805427A: + strb r0, [r1] +_0805427C: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08054284: .4byte gUnk_02002A40 + + thumb_func_start sub_08054288 +sub_08054288: @ 0x08054288 + push {lr} + ldr r1, _08054298 @ =gUnk_080FD5B4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #6] + bl sub_08056378 + pop {pc} + .align 2, 0 +_08054298: .4byte gUnk_080FD5B4 + + thumb_func_start sub_0805429C +sub_0805429C: @ 0x0805429C + ldr r1, _080542A8 @ =gUnk_080FD5B4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r0, [r0, #4] + bx lr + .align 2, 0 +_080542A8: .4byte gUnk_080FD5B4 + + thumb_func_start sub_080542AC +sub_080542AC: @ 0x080542AC + ldr r1, _080542BC @ =gUnk_080FD5B4 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #3] + movs r0, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080542BC: .4byte gUnk_080FD5B4 + + thumb_func_start sub_080542C0 +sub_080542C0: @ 0x080542C0 + push {lr} + adds r2, r0, #0 + cmp r2, #0 + bne _080542CA + movs r2, #1 +_080542CA: + ldr r1, _080542DC @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xc2 + ldrh r0, [r0] + adds r2, r2, r0 + cmp r2, #0 + bge _080542E0 + movs r2, #0 + b _080542E8 + .align 2, 0 +_080542DC: .4byte gUnk_02002A40 +_080542E0: + ldr r3, _080542F0 @ =0x000003E7 + cmp r2, r3 + ble _080542E8 + adds r2, r3, #0 +_080542E8: + adds r0, r1, #0 + adds r0, #0xc2 + strh r2, [r0] + pop {pc} + .align 2, 0 +_080542F0: .4byte 0x000003E7 + + thumb_func_start sub_080542F4 +sub_080542F4: @ 0x080542F4 + push {lr} + adds r3, r0, #0 + ldr r1, _08054318 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xac + ldrb r0, [r0] + adds r3, r3, r0 + ldr r2, _0805431C @ =gUnk_080FD5A0 + adds r0, r1, #0 + adds r0, #0xae + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + cmp r3, #0 + bge _08054320 + movs r3, #0 + b _08054326 + .align 2, 0 +_08054318: .4byte gUnk_02002A40 +_0805431C: .4byte gUnk_080FD5A0 +_08054320: + cmp r2, r3 + bge _08054326 + adds r3, r2, #0 +_08054326: + adds r0, r1, #0 + adds r0, #0xac + strb r3, [r0] + pop {pc} + .align 2, 0 + + thumb_func_start sub_08054330 +sub_08054330: @ 0x08054330 + push {lr} + adds r3, r0, #0 + ldr r1, _08054354 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xad + ldrb r0, [r0] + adds r3, r3, r0 + ldr r2, _08054358 @ =gUnk_080FD5A4 + adds r0, r1, #0 + adds r0, #0xaf + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r2, [r0] + cmp r3, #0 + bge _0805435C + movs r3, #0 + b _08054362 + .align 2, 0 +_08054354: .4byte gUnk_02002A40 +_08054358: .4byte gUnk_080FD5A4 +_0805435C: + cmp r2, r3 + bge _08054362 + adds r3, r2, #0 +_08054362: + adds r0, r1, #0 + adds r0, #0xad + strb r3, [r0] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805436C +sub_0805436C: @ 0x0805436C + push {lr} + adds r2, r0, #0 + ldr r1, _08054380 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xb4 + ldrb r0, [r0] + cmp r2, r0 + bne _08054384 + movs r1, #0 + b _08054392 + .align 2, 0 +_08054380: .4byte gUnk_02002A40 +_08054384: + adds r0, r1, #0 + adds r0, #0xb5 + movs r1, #2 + ldrb r0, [r0] + cmp r2, r0 + bne _08054392 + movs r1, #1 +_08054392: + adds r0, r1, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08054398 +sub_08054398: @ 0x08054398 + push {r4, r5, lr} + adds r5, r0, #0 + cmp r5, #0x46 + bhi _080543A8 + movs r0, #0 + movs r1, #1 + bl sub_0807CAA0 +_080543A8: + subs r0, r5, #1 + cmp r0, #0x1e + bhi _08054410 + movs r1, #2 + ldr r2, _080543C0 @ =gUnk_02002A40 + adds r0, r2, #0 + adds r0, #0xb4 + ldrb r0, [r0] + cmp r0, #0 + bne _080543C4 + movs r1, #0 + b _080543D0 + .align 2, 0 +_080543C0: .4byte gUnk_02002A40 +_080543C4: + adds r0, r2, #0 + adds r0, #0xb5 + ldrb r0, [r0] + cmp r0, #0 + bne _080543D0 + movs r1, #1 +_080543D0: + cmp r1, #2 + bne _0805440A + ldr r3, _080543F0 @ =gUnk_080FD5B4 + lsls r0, r5, #3 + adds r0, r0, r3 + ldrb r4, [r0] + adds r0, r2, #0 + adds r0, #0xb4 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r4, r0 + bne _080543F4 + movs r1, #0 + b _08054406 + .align 2, 0 +_080543F0: .4byte gUnk_080FD5B4 +_080543F4: + adds r0, r2, #0 + adds r0, #0xb5 + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r4, r0 + bne _08054406 + movs r1, #1 +_08054406: + cmp r1, #2 + beq _08054410 +_0805440A: + adds r0, r5, #0 + bl sub_08054414 +_08054410: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08054414 +sub_08054414: @ 0x08054414 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + subs r0, r4, #1 + cmp r0, #0x1e + bhi _08054456 + cmp r1, #1 + bhi _08054456 + movs r2, #0 + cmp r1, #0 + bne _0805442A + movs r2, #1 +_0805442A: + ldr r0, _08054458 @ =gUnk_02002A40 + adds r0, #0xb4 + adds r6, r1, r0 + ldrb r7, [r6] + adds r5, r2, r0 + ldrb r3, [r5] + ldr r2, _0805445C @ =gUnk_080FD5B4 + lsls r1, r3, #3 + adds r1, r1, r2 + lsls r0, r4, #3 + adds r0, r0, r2 + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _0805444A + adds r3, r7, #0 +_0805444A: + strb r4, [r6] + strb r3, [r5] + ldr r1, _08054460 @ =gUnk_0200AF00 + movs r0, #0x7f + strb r0, [r1, #0x13] + strb r0, [r1, #0x14] +_08054456: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08054458: .4byte gUnk_02002A40 +_0805445C: .4byte gUnk_080FD5B4 +_08054460: .4byte gUnk_0200AF00 + + thumb_func_start sub_08054464 +sub_08054464: @ 0x08054464 + push {r4, lr} + adds r4, r0, #0 + ldr r3, _08054498 @ =gUnk_02002A40 + cmp r1, #3 + bls _0805448C + movs r1, #0 + adds r2, r3, #0 + adds r2, #0xb6 + ldrb r0, [r2] + cmp r0, #0x20 + beq _08054488 +_0805447A: + adds r1, #1 + cmp r1, #3 + bhi _08054494 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0x20 + bne _0805447A +_08054488: + cmp r1, #3 + bhi _08054494 +_0805448C: + adds r0, r3, #0 + adds r0, #0xb6 + adds r0, r1, r0 + strb r4, [r0] +_08054494: + adds r0, r1, #0 + pop {r4, pc} + .align 2, 0 +_08054498: .4byte gUnk_02002A40 + + thumb_func_start sub_0805449C +sub_0805449C: @ 0x0805449C + push {lr} + cmp r0, #1 + blo _080544AE + cmp r0, #4 + bls _080544AA + cmp r0, #6 + bne _080544AE +_080544AA: + movs r0, #1 + b _080544B0 +_080544AE: + movs r0, #0 +_080544B0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080544B4 +sub_080544B4: @ 0x080544B4 + push {lr} + cmp r0, #0xe + bhi _080544C2 + cmp r0, #0xd + blo _080544C2 + movs r0, #1 + b _080544C4 +_080544C2: + movs r0, #0 +_080544C4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080544C8 +sub_080544C8: @ 0x080544C8 + push {lr} + cmp r0, #0x1f + bhi _080544D6 + cmp r0, #0x1c + blo _080544D6 + movs r0, #1 + b _080544D8 +_080544D6: + movs r0, #0 +_080544D8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080544DC +sub_080544DC: @ 0x080544DC + push {lr} + adds r2, r0, #0 + ldr r1, _080544F0 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xb6 + ldrb r0, [r0] + cmp r2, r0 + bne _080544F4 + movs r0, #1 + b _08054520 + .align 2, 0 +_080544F0: .4byte gUnk_02002A40 +_080544F4: + adds r0, r1, #0 + adds r0, #0xb7 + ldrb r0, [r0] + cmp r2, r0 + bne _08054502 + movs r0, #2 + b _08054520 +_08054502: + adds r0, r1, #0 + adds r0, #0xb8 + ldrb r0, [r0] + cmp r2, r0 + bne _08054510 + movs r0, #3 + b _08054520 +_08054510: + adds r0, r1, #0 + adds r0, #0xb9 + ldrb r0, [r0] + cmp r2, r0 + beq _0805451E + movs r0, #0 + b _08054520 +_0805451E: + movs r0, #4 +_08054520: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08054524 +sub_08054524: @ 0x08054524 + push {lr} + ldr r0, _08054550 @ =gUnk_02033A90 + ldrb r1, [r0, #1] + cmp r1, #0 + bne _08054534 + ldr r0, _08054554 @ =gUnk_030010A0 + adds r0, #0x2e + ldrb r1, [r0] +_08054534: + cmp r1, #0x16 + bls _0805453A + movs r1, #0 +_0805453A: + ldr r0, _08054558 @ =gUnk_080FE1C6 + adds r0, r1, r0 + ldrb r1, [r0] + lsls r0, r1, #5 + ldr r1, _0805455C @ =gUnk_080015BC + adds r0, r0, r1 + ldr r1, _08054560 @ =gUnk_02034398 + movs r2, #0x20 + bl sub_0801D66C + pop {pc} + .align 2, 0 +_08054550: .4byte gUnk_02033A90 +_08054554: .4byte gUnk_030010A0 +_08054558: .4byte gUnk_080FE1C6 +_0805455C: .4byte gUnk_080015BC +_08054560: .4byte gUnk_02034398 + + thumb_func_start sub_08054564 +sub_08054564: @ 0x08054564 + ldr r1, _0805456C @ =gUnk_02034350 + movs r0, #1 + strb r0, [r1, #2] + bx lr + .align 2, 0 +_0805456C: .4byte gUnk_02034350 + + thumb_func_start sub_08054570 +sub_08054570: @ 0x08054570 + ldr r1, _08054578 @ =gUnk_02034350 + movs r0, #0 + strb r0, [r1, #2] + bx lr + .align 2, 0 +_08054578: .4byte gUnk_02034350 + + thumb_func_start sub_0805457C +sub_0805457C: @ 0x0805457C + push {r4, r5, r6, r7, lr} + sub sp, #0x20 + adds r6, r0, #0 + adds r3, r1, #0 + ldr r0, _080545A4 @ =gUnk_02034350 + ldrb r1, [r0, #2] + adds r5, r0, #0 + cmp r1, #1 + bne _08054590 + b _0805474C +_08054590: + ldr r2, _080545A8 @ =gUnk_08001A1C + movs r4, #0 + cmp r3, #0x19 + bhi _0805463C + lsls r0, r3, #2 + ldr r1, _080545AC @ =_080545B0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080545A4: .4byte gUnk_02034350 +_080545A8: .4byte gUnk_08001A1C +_080545AC: .4byte _080545B0 +_080545B0: @ jump table + .4byte _0805463C @ case 0 + .4byte _08054618 @ case 1 + .4byte _08054618 @ case 2 + .4byte _08054618 @ case 3 + .4byte _08054618 @ case 4 + .4byte _08054618 @ case 5 + .4byte _08054618 @ case 6 + .4byte _08054618 @ case 7 + .4byte _08054618 @ case 8 + .4byte _08054618 @ case 9 + .4byte _08054618 @ case 10 + .4byte _08054618 @ case 11 + .4byte _08054618 @ case 12 + .4byte _0805463C @ case 13 + .4byte _0805463C @ case 14 + .4byte _0805463A @ case 15 + .4byte _08054634 @ case 16 + .4byte _08054634 @ case 17 + .4byte _08054634 @ case 18 + .4byte _08054634 @ case 19 + .4byte _08054634 @ case 20 + .4byte _08054634 @ case 21 + .4byte _08054634 @ case 22 + .4byte _08054634 @ case 23 + .4byte _08054624 @ case 24 + .4byte _08054624 @ case 25 +_08054618: + lsls r1, r3, #5 + ldr r0, _08054620 @ =gUnk_0800137C + adds r4, r1, r0 + b _0805463C + .align 2, 0 +_08054620: .4byte gUnk_0800137C +_08054624: + ldrb r0, [r5, #0xa] + ldr r4, _08054630 @ =gUnk_0800191C + cmp r0, #0 + beq _0805463C + adds r4, #0x20 + b _0805463C + .align 2, 0 +_08054630: .4byte gUnk_0800191C +_08054634: + lsls r1, r3, #5 + ldr r0, _08054650 @ =gUnk_0800161C + adds r2, r1, r0 +_0805463A: + ldr r4, _08054654 @ =gUnk_02034398 +_0805463C: + cmp r4, #0 + bne _08054642 + b _0805474C +_08054642: + ldr r0, _08054658 @ =gUnk_02002A40 + adds r0, #0xb3 + ldrb r1, [r0] + cmp r1, #0 + bne _08054660 + ldr r3, _0805465C @ =gUnk_08001A1C + b _08054666 + .align 2, 0 +_08054650: .4byte gUnk_0800161C +_08054654: .4byte gUnk_02034398 +_08054658: .4byte gUnk_02002A40 +_0805465C: .4byte gUnk_08001A1C +_08054660: + lsls r1, r1, #5 + ldr r0, _0805473C @ =gUnk_0800143C + adds r3, r1, r0 +_08054666: + mov r0, sp + adds r1, r4, #0 + bl sub_08000F14 + ldr r4, _08054740 @ =gUnk_02002A40 + adds r0, r4, #0 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, #8 + bhi _08054684 + mov r1, sp + mov r0, sp + ldrh r0, [r0, #8] + adds r0, #5 + strh r0, [r1, #8] +_08054684: + adds r0, r4, #0 + adds r0, #0xac + ldrb r0, [r0] + cmp r0, #0 + bne _08054698 + mov r1, sp + mov r0, sp + ldrh r0, [r0, #0xc] + adds r0, #3 + strh r0, [r1, #0xc] +_08054698: + adds r0, r4, #0 + adds r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + bne _080546AC + mov r1, sp + mov r0, sp + ldrh r0, [r0, #0xe] + adds r0, #3 + strh r0, [r1, #0xe] +_080546AC: + adds r0, r4, #0 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r0, #0xa + bhi _080546C0 + mov r1, sp + mov r0, sp + ldrh r0, [r0, #4] + adds r0, #1 + strh r0, [r1, #4] +_080546C0: + ldr r2, _08054744 @ =gUnk_08001A1C + adds r0, r4, #0 + adds r0, #0xbb + ldrb r0, [r0] + adds r3, r2, #0 + cmp r0, #0 + beq _080546D0 + adds r2, #0x20 +_080546D0: + movs r1, #0x8b + lsls r1, r1, #1 + adds r0, r4, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _080546DE + adds r3, #0x40 +_080546DE: + mov r0, sp + mov r1, sp + bl sub_08000F2C + adds r4, r0, #0 + bl sub_08000E50 + adds r2, r0, #0 + asrs r5, r2, #0x18 + movs r0, #0xf + ands r5, r0 + adds r0, r2, #0 + adds r1, r4, #0 + bl __modsi3 + adds r2, r0, #0 + movs r3, #0 + lsls r0, r5, #1 + add r0, sp + movs r4, #0 + ldrsh r1, [r0, r4] + cmp r1, r2 + bgt _08054726 + movs r4, #0xf +_0805470E: + adds r3, #1 + adds r5, #1 + ands r5, r4 + cmp r3, #0xf + bhi _08054726 + lsls r0, r5, #1 + add r0, sp + movs r7, #0 + ldrsh r0, [r0, r7] + adds r1, r1, r0 + cmp r1, r2 + ble _0805470E +_08054726: + ldr r0, _08054748 @ =gUnk_080FE1B4 + adds r0, r5, r0 + ldrb r1, [r0] + cmp r1, #0 + beq _0805474C + adds r0, r6, #0 + movs r2, #0 + bl sub_08054754 + b _0805474E + .align 2, 0 +_0805473C: .4byte gUnk_0800143C +_08054740: .4byte gUnk_02002A40 +_08054744: .4byte gUnk_08001A1C +_08054748: .4byte gUnk_080FE1B4 +_0805474C: + movs r0, #0 +_0805474E: + add sp, #0x20 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08054754 +sub_08054754: @ 0x08054754 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + cmp r4, #0x5e + beq _08054786 + cmp r4, #0x5e + bhi _08054772 + cmp r4, #0x5c + beq _080547A6 + cmp r4, #0x5c + bhi _08054782 + cmp r4, #0x3f + beq _08054794 + b _080547DA +_08054772: + cmp r4, #0xfc + blo _080547DA + cmp r4, #0xfe + bls _080547A6 + cmp r4, #0xff + bne _080547DA + movs r0, #1 + b _08054788 +_08054782: + movs r0, #0x65 + b _08054788 +_08054786: + movs r0, #9 +_08054788: + bl sub_0807CA84 + cmp r0, #0 + bne _080547DA +_08054790: + movs r0, #0 + b _0805486C +_08054794: + movs r0, #0x40 + bl sub_0807CA84 + cmp r0, #0 + beq _08054790 + cmp r5, #0 + bne _080547DA + movs r5, #1 + b _080547DA +_080547A6: + movs r0, #0x67 + bl sub_0807CA84 + cmp r0, #0 + beq _08054790 + ldr r0, _080547FC @ =gUnk_02034350 + ldrb r0, [r0, #5] + cmp r0, #3 + bhi _08054790 + cmp r4, #0x5c + beq _080547DA + adds r5, r4, #0 + subs r5, #0xfc + bl sub_08000E50 + movs r1, #0x3f + ands r1, r0 + ldr r2, _08054800 @ =gUnk_080FE1DD + lsls r0, r5, #6 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r5, [r1] + movs r4, #0x5c + cmp r5, #0 + bne _080547DA + movs r4, #0 +_080547DA: + cmp r4, #0 + beq _0805486A + cmp r4, #0xff + beq _08054842 + movs r0, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805486A + ldr r0, _08054804 @ =gLinkEntity + cmp r6, r0 + bne _08054808 + movs r0, #1 + b _0805480A + .align 2, 0 +_080547FC: .4byte gUnk_02034350 +_08054800: .4byte gUnk_080FE1DD +_08054804: .4byte gLinkEntity +_08054808: + movs r0, #0 +_0805480A: + strb r0, [r2, #0xe] + ldrb r0, [r6, #8] + cmp r0, #6 + bne _08054838 + ldrb r0, [r6, #9] + cmp r0, #0x63 + bne _0805481C + str r2, [r6, #0x54] + b _08054838 +_0805481C: + cmp r0, #0x1e + bne _08054838 + ldrb r0, [r6, #0x14] + lsls r0, r0, #3 + movs r3, #0x80 + rsbs r3, r3, #0 + adds r1, r3, #0 + orrs r0, r1 + strb r0, [r2, #0x15] + movs r0, #0xc0 + strh r0, [r2, #0x24] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r2, #0x20] +_08054838: + adds r0, r6, #0 + adds r1, r2, #0 + bl sub_0806FA24 + b _0805486A +_08054842: + movs r0, #7 + movs r1, #0 + bl sub_0804AA60 + adds r2, r0, #0 + cmp r2, #0 + beq _0805486A + ldrh r0, [r6, #0x2e] + strh r0, [r2, #0x2e] + ldrh r0, [r6, #0x32] + strh r0, [r2, #0x32] + adds r0, r6, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r2, #0 + bl sub_08016A04 +_0805486A: + adds r0, r4, #0 +_0805486C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08054870 +sub_08054870: @ 0x08054870 + push {lr} + ldr r1, _08054884 @ =gUnk_080FE2A0 + ldr r0, _08054888 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08054884: .4byte gUnk_080FE2A0 +_08054888: .4byte gUnk_02000080 + + thumb_func_start sub_0805488C +sub_0805488C: @ 0x0805488C + push {r4, lr} + ldr r4, _080548DC @ =gUnk_02032EC0 + ldrb r1, [r4, #3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080548E0 @ =gUnk_080FE320 + adds r0, r0, r1 + ldr r2, _080548E4 @ =gUnk_02000080 + ldrb r1, [r0] + movs r3, #0 + strb r1, [r2] + ldrb r1, [r0, #1] + strb r1, [r2, #3] + ldrb r1, [r4, #3] + strb r1, [r2, #4] + str r0, [r2, #0xc] + ldrb r0, [r2, #5] + adds r0, #1 + strb r0, [r2, #5] + strb r3, [r2, #6] + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r2, #8] + movs r0, #0 + bl sub_0801DA90 + ldrb r0, [r4, #3] + movs r1, #1 + bl sub_08054974 + bl sub_0806F364 + movs r0, #0xff + bl sub_0807CD8C + bl sub_080548E8 + pop {r4, pc} + .align 2, 0 +_080548DC: .4byte gUnk_02032EC0 +_080548E0: .4byte gUnk_080FE320 +_080548E4: .4byte gUnk_02000080 + + thumb_func_start sub_080548E8 +sub_080548E8: @ 0x080548E8 + push {lr} + ldr r1, _08054918 @ =gUnk_080FE2AC + ldr r0, _0805491C @ =gUnk_02000080 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080AD90C + bl sub_0805E5C0 + bl sub_080AD9B0 + bl sub_080AD918 + bl sub_0807FC40 + bl sub_0801B060 + bl sub_08000108 + pop {pc} + .align 2, 0 +_08054918: .4byte gUnk_080FE2AC +_0805491C: .4byte gUnk_02000080 + + thumb_func_start sub_08054920 +sub_08054920: @ 0x08054920 + push {lr} + bl sub_08056418 + bl sub_0806F38C + ldr r1, _08054948 @ =gUnk_080C9CBC + ldr r0, _0805494C @ =gUnk_02022740 + ldrb r0, [r0, #3] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _08054954 + ldr r0, _08054950 @ =gUnk_02032EC0 + ldrb r1, [r0, #3] + movs r0, #0xa + bl sub_080A7138 + b _08054962 + .align 2, 0 +_08054948: .4byte gUnk_080C9CBC +_0805494C: .4byte gUnk_02022740 +_08054950: .4byte gUnk_02032EC0 +_08054954: + ldr r1, _08054964 @ =gUnk_02032EC0 + movs r0, #3 + strb r0, [r1] + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 +_08054962: + pop {pc} + .align 2, 0 +_08054964: .4byte gUnk_02032EC0 + + thumb_func_start sub_08054968 +sub_08054968: @ 0x08054968 + ldr r1, _08054970 @ =gUnk_02000080 + movs r0, #2 + strb r0, [r1, #5] + bx lr + .align 2, 0 +_08054970: .4byte gUnk_02000080 + + thumb_func_start sub_08054974 +sub_08054974: @ 0x08054974 + push {r4, r5, r6, lr} + adds r5, r1, #0 + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080549B0 @ =gUnk_080FE320 + adds r6, r1, r0 + ldrb r0, [r6, #2] + ldrb r1, [r6, #3] + bl sub_0804B0C0 + ldr r4, _080549B4 @ =gUnk_03000BF0 + ldrb r0, [r6, #2] + strb r0, [r4, #4] + ldrb r0, [r6, #3] + strb r0, [r4, #5] + bl sub_08053320 + ldrb r0, [r4, #4] + bl sub_08052D58 + ldr r1, _080549B8 @ =gUnk_02033A90 + strh r0, [r1, #4] + cmp r5, #0 + beq _080549BC + ldrb r0, [r6, #2] + ldrb r1, [r6, #3] + bl sub_08052FD8 + b _080549CE + .align 2, 0 +_080549B0: .4byte gUnk_080FE320 +_080549B4: .4byte gUnk_03000BF0 +_080549B8: .4byte gUnk_02033A90 +_080549BC: + ldrb r0, [r6, #2] + ldrb r1, [r6, #3] + bl sub_08052FF4 + bl sub_0807C740 + ldr r1, _08054A00 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] +_080549CE: + ldr r2, _08054A04 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _08054A08 @ =0x00001FFF + ands r0, r1 + strh r0, [r2] + ldr r1, _08054A0C @ =gUnk_03000BF0 + ldrh r0, [r6, #4] + ldrh r2, [r1, #6] + adds r0, r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r6, #6] + ldrh r2, [r1, #8] + adds r0, r0, r2 + strh r0, [r1, #0xc] + ldrb r0, [r6, #2] + cmp r0, #2 + bne _080549F4 + bl sub_08059D18 +_080549F4: + ldr r0, _08054A10 @ =gUnk_02032EC0 + ldrb r0, [r0, #3] + bl sub_08018710 + pop {r4, r5, r6, pc} + .align 2, 0 +_08054A00: .4byte gUnk_02000070 +_08054A04: .4byte gUnk_03000F50 +_08054A08: .4byte 0x00001FFF +_08054A0C: .4byte gUnk_03000BF0 +_08054A10: .4byte gUnk_02032EC0 + + thumb_func_start sub_08054A14 +sub_08054A14: @ 0x08054A14 + push {lr} + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08054A38 @ =gUnk_080FE320 + adds r2, r1, r0 + ldrb r0, [r2, #0x11] + cmp r0, #0xd + bhi _08054A34 + ldr r1, _08054A3C @ =gUnk_0811E454 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r2, #0x12] + bl sub_0807CC9C +_08054A34: + pop {pc} + .align 2, 0 +_08054A38: .4byte gUnk_080FE320 +_08054A3C: .4byte gUnk_0811E454 + + thumb_func_start sub_08054A40 +sub_08054A40: @ 0x08054A40 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08054A5C @ =gUnk_080FEEA8 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r4, #0x41 + movs r0, #0 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08054A5C: .4byte gUnk_080FEEA8 + + thumb_func_start sub_08054A60 +sub_08054A60: @ 0x08054A60 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0xa0 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + subs r1, #1 + movs r0, #0x80 + strb r0, [r1] + ldr r0, _08054AC4 @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r0, #0xe + ands r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0806FBD8 + cmp r0, #0 + bne _08054AAC + bl sub_0805E780 +_08054AAC: + adds r0, r4, #0 + bl sub_0801766C + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_08054AC8 + pop {r4, pc} + .align 2, 0 +_08054AC4: .4byte gLinkEntity + + thumb_func_start sub_08054AC8 +sub_08054AC8: @ 0x08054AC8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r5, _08054B14 @ =gLinkEntity + ldrb r1, [r5, #0x14] + movs r0, #0xe + ands r0, r1 + strb r0, [r4, #0x14] + ldr r1, [r4, #0x48] + ldr r2, _08054B18 @ =gUnk_080FEEB0 + ldrb r0, [r4, #0x14] + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, [r4, #0x48] + ldrb r0, [r4, #0x14] + adds r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1, #1] + ldr r0, [r4, #0x48] + movs r1, #4 + strb r1, [r0, #6] + ldr r0, [r4, #0x48] + strb r1, [r0, #7] + ldrb r7, [r5, #0x1e] + adds r6, r7, #0 + cmp r6, #0x36 + bhi _08054B06 + ldrh r0, [r5, #0x12] + cmp r0, #6 + beq _08054B1C +_08054B06: + movs r0, #0xff + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + b _08054B68 + .align 2, 0 +_08054B14: .4byte gLinkEntity +_08054B18: .4byte gUnk_080FEEB0 +_08054B1C: + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r2, [r5, #0x18] + movs r1, #0x40 + ands r1, r2 + ldrb r3, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + lsrs r2, r2, #7 + lsls r2, r2, #7 + movs r1, #0x7f + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0x1e] + cmp r6, r0 + beq _08054B52 + strb r7, [r4, #0x1e] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_08054B52: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x5a + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x5b + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] +_08054B68: + movs r0, #0x10 + bl sub_0805436C + cmp r0, #1 + bhi _08054BFC + ldrb r0, [r4, #0x1e] + cmp r0, #0xff + beq _08054BE8 + ldr r0, _08054BF4 @ =gLinkEntity + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _08054BE8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08054BE8 + movs r0, #4 + strb r0, [r4, #0xe] + movs r0, #0x45 + movs r1, #0 + movs r2, #0x10 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _08054BE8 + movs r3, #0x80 + lsls r3, r3, #0xa + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r4, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r3, r5, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1d + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldr r1, _08054BF8 @ =gUnk_080FEEB0 + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + adds r2, r5, #0 + adds r2, #0x62 + strb r0, [r2] + ldrb r0, [r4, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x63 + strb r1, [r0] +_08054BE8: + ldr r1, _08054BF4 @ =gLinkEntity + adds r0, r4, #0 + bl sub_08078E84 + b _08054C00 + .align 2, 0 +_08054BF4: .4byte gLinkEntity +_08054BF8: .4byte gUnk_080FEEB0 +_08054BFC: + bl sub_0805E780 +_08054C00: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08054C04 +sub_08054C04: @ 0x08054C04 + push {lr} + ldr r1, _08054C18 @ =gUnk_080FEEB8 + ldr r0, _08054C1C @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08054C18: .4byte gUnk_080FEEB8 +_08054C1C: .4byte gUnk_02000080 + + thumb_func_start sub_08054C20 +sub_08054C20: @ 0x08054C20 + push {r4, lr} + ldr r4, _08054C50 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #4] + movs r1, #0 + bl sub_0801876C + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08054C54 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08054C50: .4byte gUnk_02000080 +_08054C54: .4byte gUnk_02000070 + + thumb_func_start sub_08054C58 +sub_08054C58: @ 0x08054C58 + push {lr} + ldr r0, _08054C80 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08054C7C + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08054C7C + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 + ldr r1, _08054C84 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_08054C7C: + pop {pc} + .align 2, 0 +_08054C80: .4byte gUnk_03000FD0 +_08054C84: .4byte gUnk_02000080 + + thumb_func_start sub_08054C88 +sub_08054C88: @ 0x08054C88 + push {r4, lr} + ldr r0, _08054CB8 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08054CB4 + ldr r4, _08054CBC @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + bl sub_08054974 + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0x73 + bl sub_080A3268 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0x78 + strh r0, [r4, #8] +_08054CB4: + pop {r4, pc} + .align 2, 0 +_08054CB8: .4byte gUnk_03000FD0 +_08054CBC: .4byte gUnk_02000080 + + thumb_func_start sub_08054CC0 +sub_08054CC0: @ 0x08054CC0 + push {lr} + ldr r0, _08054CE0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08054CDE + ldr r1, _08054CE4 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08054CDE + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08054CDE: + pop {pc} + .align 2, 0 +_08054CE0: .4byte gUnk_03000FD0 +_08054CE4: .4byte gUnk_02000080 + + thumb_func_start sub_08054CE8 +sub_08054CE8: @ 0x08054CE8 + push {lr} + ldr r1, _08054CFC @ =gUnk_080FEEC8 + ldr r0, _08054D00 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08054CFC: .4byte gUnk_080FEEC8 +_08054D00: .4byte gUnk_02000080 + + thumb_func_start sub_08054D04 +sub_08054D04: @ 0x08054D04 + push {r4, lr} + ldr r4, _08054D34 @ =gUnk_02000080 + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08054D38 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08054D34: .4byte gUnk_02000080 +_08054D38: .4byte gUnk_02000070 + + thumb_func_start sub_08054D3C +sub_08054D3C: @ 0x08054D3C + push {r4, lr} + ldr r0, _08054D6C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08054D6A + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08054D6A + ldr r4, _08054D70 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #1 + bl sub_0801876C + ldrb r0, [r4, #4] + bl sub_080553E0 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0x78 + strh r0, [r4, #8] +_08054D6A: + pop {r4, pc} + .align 2, 0 +_08054D6C: .4byte gUnk_03000FD0 +_08054D70: .4byte gUnk_02000080 + + thumb_func_start sub_08054D74 +sub_08054D74: @ 0x08054D74 + push {lr} + ldr r1, _08054D8C @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08054D8A + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08054D8A: + pop {pc} + .align 2, 0 +_08054D8C: .4byte gUnk_02000080 + + thumb_func_start sub_08054D90 +sub_08054D90: @ 0x08054D90 + push {lr} + ldr r1, _08054DA4 @ =gUnk_080FEF34 + ldr r0, _08054DA8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08054DA4: .4byte gUnk_080FEF34 +_08054DA8: .4byte gUnk_02000080 + + thumb_func_start sub_08054DAC +sub_08054DAC: @ 0x08054DAC + push {r4, lr} + ldr r4, _08054DF0 @ =gUnk_02000080 + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldr r0, _08054DF4 @ =gUnk_080FEED4 + bl sub_0804ADDC + movs r0, #2 + bl sub_0805B4D0 + movs r0, #0 + bl sub_0806D0B0 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08054DF8 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08054DF0: .4byte gUnk_02000080 +_08054DF4: .4byte gUnk_080FEED4 +_08054DF8: .4byte gUnk_02000070 + + thumb_func_start nullsub_484 +nullsub_484: @ 0x08054DFC + bx lr + .align 2, 0 + + thumb_func_start sub_08054E00 +sub_08054E00: @ 0x08054E00 + push {lr} + ldr r1, _08054E14 @ =gUnk_080FEF3C + ldr r0, _08054E18 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08054E14: .4byte gUnk_080FEF3C +_08054E18: .4byte gUnk_02000080 + + thumb_func_start sub_08054E1C +sub_08054E1C: @ 0x08054E1C + push {r4, r5, lr} + ldr r5, _08054E54 @ =gUnk_02000080 + ldr r4, [r5, #0xc] + ldrb r0, [r4, #2] + ldrb r1, [r4, #3] + bl sub_0804B0B0 + ldrb r0, [r4, #2] + ldrb r1, [r4, #3] + bl sub_0804B0E8 + ldrb r0, [r5, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r5, #6] + adds r0, #1 + strb r0, [r5, #6] + ldr r1, _08054E58 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, r5, pc} + .align 2, 0 +_08054E54: .4byte gUnk_02000080 +_08054E58: .4byte gUnk_02000070 + + thumb_func_start sub_08054E5C +sub_08054E5C: @ 0x08054E5C + push {r4, lr} + ldr r0, _08054E94 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08054E92 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08054E92 + ldr r4, _08054E98 @ =gUnk_02000080 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0xb4 + strh r0, [r4, #8] + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + ldrb r0, [r4, #4] + bl sub_080553E0 + ldrb r0, [r4, #4] + movs r1, #1 + bl sub_0801876C +_08054E92: + pop {r4, pc} + .align 2, 0 +_08054E94: .4byte gUnk_03000FD0 +_08054E98: .4byte gUnk_02000080 + + thumb_func_start sub_08054E9C +sub_08054E9C: @ 0x08054E9C + push {lr} + ldr r1, _08054EB4 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08054EB2 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08054EB2: + pop {pc} + .align 2, 0 +_08054EB4: .4byte gUnk_02000080 + + thumb_func_start sub_08054EB8 +sub_08054EB8: @ 0x08054EB8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805E8D4 + adds r3, r0, #0 + cmp r3, #0 + beq _08054EF6 + movs r0, #9 + strb r0, [r3, #8] + movs r0, #0x24 + strb r0, [r3, #9] + ldr r2, _08054EF8 @ =gUnk_03000BF0 + ldrh r0, [r4, #0x2e] + ldrh r1, [r2, #6] + subs r0, r0, r1 + strh r0, [r3, #0x38] + ldrh r0, [r4, #0x32] + ldrh r1, [r2, #8] + subs r0, r0, r1 + subs r0, #0x10 + strh r0, [r3, #0x3a] + adds r1, r3, #0 + adds r1, #0x35 + movs r0, #1 + strb r0, [r1] + movs r0, #0x79 + strh r0, [r3, #0x3e] + adds r0, r3, #0 + movs r1, #6 + bl sub_0805EA2C +_08054EF6: + pop {r4, pc} + .align 2, 0 +_08054EF8: .4byte gUnk_03000BF0 + + thumb_func_start sub_08054EFC +sub_08054EFC: @ 0x08054EFC + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08054F5C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + subs r1, #0x40 + ldr r0, _08054F60 @ =0x00004074 + movs r2, #1 + bl sub_0800015E + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0x35 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08054F54 + ldrh r0, [r1, #0x32] + subs r0, #0x10 + strh r0, [r1, #0x32] + adds r0, r4, #0 + bl sub_0806FAD8 +_08054F54: + movs r0, #0xfd + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_08054F5C: .4byte gUnk_03000BF0 +_08054F60: .4byte 0x00004074 + + thumb_func_start sub_08054F64 +sub_08054F64: @ 0x08054F64 + push {lr} + ldrb r0, [r0, #0xb] + ldr r3, _08054F7C @ =gUnk_02033280 + ldr r2, [r3] + adds r1, r2, #0 + ands r1, r0 + cmp r1, r0 + beq _08054F80 + movs r0, #0 + strb r0, [r3, #6] + b _08054F8C + .align 2, 0 +_08054F7C: .4byte gUnk_02033280 +_08054F80: + bics r2, r1 + str r2, [r3] + ldrb r1, [r3, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r3, #7] +_08054F8C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08054F90 +sub_08054F90: @ 0x08054F90 + push {lr} + ldr r1, _08054FA4 @ =gUnk_080FF120 + ldr r0, _08054FA8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08054FA4: .4byte gUnk_080FF120 +_08054FA8: .4byte gUnk_02000080 + + thumb_func_start sub_08054FAC +sub_08054FAC: @ 0x08054FAC + push {r4, r5, r6, lr} + ldr r6, _08055008 @ =gUnk_02000080 + ldr r5, [r6, #0xc] + ldr r1, _0805500C @ =gUnk_080FF108 + ldrb r0, [r5, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0804ADDC + ldrb r0, [r5, #1] + movs r1, #0 + cmp r0, #0 + beq _08054FCA + movs r1, #3 +_08054FCA: + ldrb r0, [r6, #4] + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r6, #6] + adds r0, #1 + movs r4, #0 + strb r0, [r6, #6] + ldr r1, _08055010 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + strh r4, [r6, #0xa] + movs r0, #0x80 + lsls r0, r0, #3 + movs r1, #0x77 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08055004 + ldrb r0, [r5, #2] + cmp r0, #0x2f + bne _08055004 + movs r0, #1 + strh r0, [r6, #0xa] +_08055004: + pop {r4, r5, r6, pc} + .align 2, 0 +_08055008: .4byte gUnk_02000080 +_0805500C: .4byte gUnk_080FF108 +_08055010: .4byte gUnk_02000070 + + thumb_func_start sub_08055014 +sub_08055014: @ 0x08055014 + push {lr} + ldr r1, _08055030 @ =gUnk_02000080 + ldrh r0, [r1, #0xa] + cmp r0, #0 + beq _0805502C + movs r0, #0 + strh r0, [r1, #0xa] + ldr r1, _08055034 @ =0x00000407 + movs r0, #0x74 + movs r2, #1 + bl sub_0807B314 +_0805502C: + pop {pc} + .align 2, 0 +_08055030: .4byte gUnk_02000080 +_08055034: .4byte 0x00000407 + + thumb_func_start sub_08055038 +sub_08055038: @ 0x08055038 + push {lr} + ldr r1, _0805504C @ =gUnk_080FF148 + ldr r0, _08055050 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0805504C: .4byte gUnk_080FF148 +_08055050: .4byte gUnk_02000080 + + thumb_func_start sub_08055054 +sub_08055054: @ 0x08055054 + push {r4, lr} + ldr r0, _08055080 @ =gUnk_080FF128 + bl sub_0804ADDC + ldr r4, _08055084 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #2 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055088 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055080: .4byte gUnk_080FF128 +_08055084: .4byte gUnk_02000080 +_08055088: .4byte gUnk_02000070 + + thumb_func_start sub_0805508C +sub_0805508C: @ 0x0805508C + bx lr + .align 2, 0 + + thumb_func_start sub_08055090 +sub_08055090: @ 0x08055090 + bx lr + .align 2, 0 + + thumb_func_start sub_08055094 +sub_08055094: @ 0x08055094 + push {lr} + ldr r1, _080550A8 @ =gUnk_080FF174 + ldr r0, _080550AC @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080550A8: .4byte gUnk_080FF174 +_080550AC: .4byte gUnk_02000080 + + thumb_func_start sub_080550B0 +sub_080550B0: @ 0x080550B0 + push {r4, lr} + ldr r4, _080550E8 @ =gUnk_02000080 + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldr r0, _080550EC @ =gUnk_080FF154 + bl sub_0804ADDC + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _080550F0 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080550E8: .4byte gUnk_02000080 +_080550EC: .4byte gUnk_080FF154 +_080550F0: .4byte gUnk_02000070 + + thumb_func_start nullsub_487 +nullsub_487: @ 0x080550F4 + bx lr + .align 2, 0 + + thumb_func_start sub_080550F8 +sub_080550F8: @ 0x080550F8 + push {lr} + ldr r1, _0805510C @ =gUnk_080FF1CC + ldr r0, _08055110 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0805510C: .4byte gUnk_080FF1CC +_08055110: .4byte gUnk_02000080 + + thumb_func_start sub_08055114 +sub_08055114: @ 0x08055114 + push {r4, lr} + ldr r0, _08055150 @ =gUnk_080FF17C + bl sub_0804ADDC + ldr r0, _08055154 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #9 + beq _0805512A + ldr r0, _08055158 @ =0x00000DB4 + bl sub_08018C58 +_0805512A: + ldr r4, _0805515C @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055160 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055150: .4byte gUnk_080FF17C +_08055154: .4byte gUnk_02002A40 +_08055158: .4byte 0x00000DB4 +_0805515C: .4byte gUnk_02000080 +_08055160: .4byte gUnk_02000070 + + thumb_func_start nullsub_488 +nullsub_488: @ 0x08055164 + bx lr + .align 2, 0 + + thumb_func_start sub_08055168 +sub_08055168: @ 0x08055168 + push {lr} + ldr r1, _0805517C @ =gUnk_080FF1F4 + ldr r0, _08055180 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0805517C: .4byte gUnk_080FF1F4 +_08055180: .4byte gUnk_02000080 + + thumb_func_start sub_08055184 +sub_08055184: @ 0x08055184 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r5, _0805520C @ =gUnk_02000080 + ldr r0, [r5, #0xc] + ldrb r1, [r0, #1] + movs r0, #0xf + ands r0, r1 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #1 + ldr r0, _08055210 @ =gUnk_080FF1D4 + adds r4, r4, r0 + movs r1, #0 + ldrsh r0, [r4, r1] + bl sub_0801D7EC + ldr r2, _08055214 @ =gUnk_03000F50 + ldrh r0, [r4, #2] + movs r6, #0 + movs r3, #0 + mov r8, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r4, #4] + strh r0, [r2, #0x30] + ldr r0, _08055218 @ =0x00001E05 + strh r0, [r2, #0x2c] + adds r1, r2, #0 + adds r1, #0x66 + ldr r0, _0805521C @ =0x00003648 + strh r0, [r1] + adds r1, #2 + movs r0, #0x10 + strh r0, [r1] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldrb r0, [r5, #4] + movs r1, #1 + bl sub_0801876C + ldrb r0, [r5, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r5, #6] + adds r0, #1 + strb r0, [r5, #6] + strb r6, [r5, #7] + movs r0, #0x3c + strh r0, [r5, #8] + mov r0, r8 + strh r0, [r5, #0xa] + ldr r1, _08055220 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_0805520C: .4byte gUnk_02000080 +_08055210: .4byte gUnk_080FF1D4 +_08055214: .4byte gUnk_03000F50 +_08055218: .4byte 0x00001E05 +_0805521C: .4byte 0x00003648 +_08055220: .4byte gUnk_02000070 + + thumb_func_start sub_08055224 +sub_08055224: @ 0x08055224 + push {lr} + ldr r0, _08055244 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055240 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08055240 + ldr r1, _08055248 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_08055240: + pop {pc} + .align 2, 0 +_08055244: .4byte gUnk_03000FD0 +_08055248: .4byte gUnk_02000080 + + thumb_func_start sub_0805524C +sub_0805524C: @ 0x0805524C + push {r4, lr} + ldr r3, _08055270 @ =gUnk_02000080 + ldrb r0, [r3, #7] + cmp r0, #0 + bne _08055274 + ldrh r0, [r3, #8] + subs r0, #1 + strh r0, [r3, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080552D6 + ldrb r0, [r3, #7] + adds r0, #1 + strb r0, [r3, #7] + movs r0, #0xf6 + bl sub_080A3268 + b _080552D6 + .align 2, 0 +_08055270: .4byte gUnk_02000080 +_08055274: + ldr r0, _080552A4 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _080552D6 + ldr r4, _080552A8 @ =gUnk_080FF204 + ldrh r2, [r3, #0xa] + lsls r0, r2, #1 + adds r0, r0, r4 + ldrh r1, [r0] + ldr r0, _080552AC @ =0x0000FFFF + cmp r1, r0 + beq _080552B4 + ldr r1, _080552B0 @ =gUnk_03000F50 + adds r0, r2, #1 + strh r0, [r3, #0xa] + lsls r0, r2, #1 + adds r0, r0, r4 + ldrh r0, [r0] + adds r1, #0x68 + strh r0, [r1] + b _080552D6 + .align 2, 0 +_080552A4: .4byte gUnk_030010A0 +_080552A8: .4byte gUnk_080FF204 +_080552AC: .4byte 0x0000FFFF +_080552B0: .4byte gUnk_03000F50 +_080552B4: + ldr r1, _080552D8 @ =gUnk_03000F50 + ldrh r2, [r1] + ldr r0, _080552DC @ =0x0000F7FF + ands r0, r2 + strh r0, [r1] + adds r1, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + movs r0, #0x78 + strh r0, [r3, #8] + ldrb r0, [r3, #6] + adds r0, #1 + strb r0, [r3, #6] + movs r0, #0x73 + bl sub_080A3268 +_080552D6: + pop {r4, pc} + .align 2, 0 +_080552D8: .4byte gUnk_03000F50 +_080552DC: .4byte 0x0000F7FF + + thumb_func_start sub_080552E0 +sub_080552E0: @ 0x080552E0 + push {lr} + ldr r1, _080552F8 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080552F6 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_080552F6: + pop {pc} + .align 2, 0 +_080552F8: .4byte gUnk_02000080 + + thumb_func_start sub_080552FC +sub_080552FC: @ 0x080552FC + push {lr} + ldr r1, _08055310 @ =gUnk_080FF228 + ldr r0, _08055314 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055310: .4byte gUnk_080FF228 +_08055314: .4byte gUnk_02000080 + + thumb_func_start sub_08055318 +sub_08055318: @ 0x08055318 + push {r4, lr} + ldr r4, _08055348 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #4] + movs r1, #0 + bl sub_0801876C + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _0805534C @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055348: .4byte gUnk_02000080 +_0805534C: .4byte gUnk_02000070 + + thumb_func_start sub_08055350 +sub_08055350: @ 0x08055350 + push {lr} + ldr r0, _08055378 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055374 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08055374 + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 + ldr r1, _0805537C @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_08055374: + pop {pc} + .align 2, 0 +_08055378: .4byte gUnk_03000FD0 +_0805537C: .4byte gUnk_02000080 + + thumb_func_start sub_08055380 +sub_08055380: @ 0x08055380 + push {r4, lr} + ldr r0, _080553B0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080553AC + ldr r4, _080553B4 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + bl sub_08054974 + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0x73 + bl sub_080A3268 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0x78 + strh r0, [r4, #8] +_080553AC: + pop {r4, pc} + .align 2, 0 +_080553B0: .4byte gUnk_03000FD0 +_080553B4: .4byte gUnk_02000080 + + thumb_func_start sub_080553B8 +sub_080553B8: @ 0x080553B8 + push {lr} + ldr r0, _080553D8 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080553D6 + ldr r1, _080553DC @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080553D6 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_080553D6: + pop {pc} + .align 2, 0 +_080553D8: .4byte gUnk_03000FD0 +_080553DC: .4byte gUnk_02000080 + + thumb_func_start sub_080553E0 +sub_080553E0: @ 0x080553E0 + push {r4, lr} + ldr r0, _0805540C @ =gUnk_02000080 + ldr r4, [r0, #0xc] + movs r0, #0xf + movs r1, #0x43 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08055408 + ldr r0, _08055410 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + ldrh r3, [r4, #8] + adds r1, r1, r3 + strh r1, [r2, #0x2e] + ldrh r0, [r0, #8] + ldrh r4, [r4, #0xa] + adds r0, r0, r4 + strh r0, [r2, #0x32] +_08055408: + pop {r4, pc} + .align 2, 0 +_0805540C: .4byte gUnk_02000080 +_08055410: .4byte gUnk_03000BF0 + + thumb_func_start sub_08055414 +sub_08055414: @ 0x08055414 + push {lr} + ldr r1, _08055428 @ =gUnk_080FF238 + ldr r0, _0805542C @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055428: .4byte gUnk_080FF238 +_0805542C: .4byte gUnk_02000080 + + thumb_func_start sub_08055430 +sub_08055430: @ 0x08055430 + push {r4, lr} + ldr r4, _08055460 @ =gUnk_02000080 + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0E8 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055464 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055460: .4byte gUnk_02000080 +_08055464: .4byte gUnk_02000070 + + thumb_func_start sub_08055468 +sub_08055468: @ 0x08055468 + push {lr} + ldr r0, _08055490 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805548C + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _0805548C + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 + ldr r1, _08055494 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_0805548C: + pop {pc} + .align 2, 0 +_08055490: .4byte gUnk_03000FD0 +_08055494: .4byte gUnk_02000080 + + thumb_func_start sub_08055498 +sub_08055498: @ 0x08055498 + push {r4, lr} + ldr r0, _080554CC @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080554CA + ldr r4, _080554D0 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #1 + bl sub_0801876C + ldrb r0, [r4, #4] + bl sub_080553E0 + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0x73 + bl sub_080A3268 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0x78 + strh r0, [r4, #8] +_080554CA: + pop {r4, pc} + .align 2, 0 +_080554CC: .4byte gUnk_03000FD0 +_080554D0: .4byte gUnk_02000080 + + thumb_func_start sub_080554D4 +sub_080554D4: @ 0x080554D4 + push {lr} + ldr r0, _080554F4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080554F2 + ldr r1, _080554F8 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080554F2 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_080554F2: + pop {pc} + .align 2, 0 +_080554F4: .4byte gUnk_03000FD0 +_080554F8: .4byte gUnk_02000080 + + thumb_func_start sub_080554FC +sub_080554FC: @ 0x080554FC + push {lr} + ldr r1, _08055510 @ =gUnk_080FF248 + ldr r0, _08055514 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055510: .4byte gUnk_080FF248 +_08055514: .4byte gUnk_02000080 + + thumb_func_start sub_08055518 +sub_08055518: @ 0x08055518 + push {r4, lr} + ldr r4, _08055540 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055544 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055540: .4byte gUnk_02000080 +_08055544: .4byte gUnk_02000070 + + thumb_func_start sub_08055548 +sub_08055548: @ 0x08055548 + push {r4, lr} + ldr r0, _08055578 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055576 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08055576 + ldr r4, _0805557C @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #1 + bl sub_0801876C + ldrb r0, [r4, #4] + bl sub_080553E0 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0xb4 + strh r0, [r4, #8] +_08055576: + pop {r4, pc} + .align 2, 0 +_08055578: .4byte gUnk_03000FD0 +_0805557C: .4byte gUnk_02000080 + + thumb_func_start sub_08055580 +sub_08055580: @ 0x08055580 + push {lr} + ldr r1, _08055598 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08055596 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08055596: + pop {pc} + .align 2, 0 +_08055598: .4byte gUnk_02000080 + + thumb_func_start sub_0805559C +sub_0805559C: @ 0x0805559C + push {lr} + ldr r1, _080555B0 @ =gUnk_080FF254 + ldr r0, _080555B4 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080555B0: .4byte gUnk_080FF254 +_080555B4: .4byte gUnk_02000080 + + thumb_func_start sub_080555B8 +sub_080555B8: @ 0x080555B8 + push {r4, r5, lr} + ldr r5, _08055600 @ =gUnk_02000080 + ldr r4, [r5, #0xc] + ldr r1, _08055604 @ =gUnk_0811E454 + ldrb r0, [r4, #0x11] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r4, #0x12] + bl sub_0807CC9C + ldrb r0, [r4, #2] + ldrb r1, [r4, #3] + bl sub_0804B0E8 + movs r0, #0x11 + bl sub_0801D7EC + ldrb r0, [r5, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r5, #6] + adds r0, #1 + strb r0, [r5, #6] + ldr r1, _08055608 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, r5, pc} + .align 2, 0 +_08055600: .4byte gUnk_02000080 +_08055604: .4byte gUnk_0811E454 +_08055608: .4byte gUnk_02000070 + + thumb_func_start sub_0805560C +sub_0805560C: @ 0x0805560C + push {lr} + ldr r0, _0805562C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055628 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08055628 + ldr r1, _08055630 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_08055628: + pop {pc} + .align 2, 0 +_0805562C: .4byte gUnk_03000FD0 +_08055630: .4byte gUnk_02000080 + + thumb_func_start sub_08055634 +sub_08055634: @ 0x08055634 + push {r4, r5, lr} + ldr r4, _0805566C @ =gUnk_02000080 + ldr r5, [r4, #0xc] + movs r0, #0x2c + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805565C + ldr r0, _08055670 @ =gUnk_03000BF0 + ldrh r1, [r5, #8] + ldrh r3, [r0, #6] + adds r1, r1, r3 + strh r1, [r2, #0x2e] + ldrh r1, [r5, #0xa] + ldrh r0, [r0, #8] + adds r1, r1, r0 + strh r1, [r2, #0x32] +_0805565C: + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0xc3 + lsls r0, r0, #1 + strh r0, [r4, #8] + pop {r4, r5, pc} + .align 2, 0 +_0805566C: .4byte gUnk_02000080 +_08055670: .4byte gUnk_03000BF0 + + thumb_func_start sub_08055674 +sub_08055674: @ 0x08055674 + push {lr} + ldr r1, _0805568C @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805568A + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_0805568A: + pop {pc} + .align 2, 0 +_0805568C: .4byte gUnk_02000080 + + thumb_func_start sub_08055690 +sub_08055690: @ 0x08055690 + push {lr} + ldr r1, _080556A4 @ =gUnk_080FF284 + ldr r0, _080556A8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080556A4: .4byte gUnk_080FF284 +_080556A8: .4byte gUnk_02000080 + + thumb_func_start sub_080556AC +sub_080556AC: @ 0x080556AC + push {r4, lr} + ldr r4, _080556E4 @ =gUnk_02000080 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _080556E8 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldr r0, _080556EC @ =gUnk_080FF264 + bl sub_0804ADDC + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080556E4: .4byte gUnk_02000080 +_080556E8: .4byte gUnk_02000070 +_080556EC: .4byte gUnk_080FF264 + + thumb_func_start nullsub_489 +nullsub_489: @ 0x080556F0 + bx lr + .align 2, 0 + + thumb_func_start sub_080556F4 +sub_080556F4: @ 0x080556F4 + push {lr} + ldr r1, _08055708 @ =gUnk_080FF28C + ldr r0, _0805570C @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055708: .4byte gUnk_080FF28C +_0805570C: .4byte gUnk_02000080 + + thumb_func_start sub_08055710 +sub_08055710: @ 0x08055710 + push {r4, lr} + ldr r4, _0805575C @ =gUnk_02000080 + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldr r0, _08055760 @ =gUnk_080FEE48 + bl sub_0804ADF8 + adds r1, r0, #0 + cmp r1, #0 + beq _08055734 + movs r0, #2 + strb r0, [r1, #0xb] + adds r1, #0x86 + ldr r0, _08055764 @ =0x000080FF + strh r0, [r1] +_08055734: + ldrb r0, [r4, #4] + bl sub_08054A14 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055768 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_0805575C: .4byte gUnk_02000080 +_08055760: .4byte gUnk_080FEE48 +_08055764: .4byte 0x000080FF +_08055768: .4byte gUnk_02000070 + + thumb_func_start sub_0805576C +sub_0805576C: @ 0x0805576C + push {lr} + ldr r0, _08055790 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805578C + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _0805578C + ldr r0, _08055794 @ =gUnk_02000080 + ldrb r1, [r0, #6] + adds r1, #1 + strb r1, [r0, #6] + movs r1, #0x78 + strh r1, [r0, #8] +_0805578C: + pop {pc} + .align 2, 0 +_08055790: .4byte gUnk_03000FD0 +_08055794: .4byte gUnk_02000080 + + thumb_func_start sub_08055798 +sub_08055798: @ 0x08055798 + push {lr} + ldr r1, _080557B0 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080557AE + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_080557AE: + pop {pc} + .align 2, 0 +_080557B0: .4byte gUnk_02000080 + + thumb_func_start sub_080557B4 +sub_080557B4: @ 0x080557B4 + push {lr} + ldr r1, _080557C8 @ =gUnk_080FF2B8 + ldr r0, _080557CC @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080557C8: .4byte gUnk_080FF2B8 +_080557CC: .4byte gUnk_02000080 + + thumb_func_start sub_080557D0 +sub_080557D0: @ 0x080557D0 + push {r4, lr} + ldr r4, _08055808 @ =gUnk_02000080 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _0805580C @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldr r0, _08055810 @ =gUnk_080FF298 + bl sub_0804ADDC + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055808: .4byte gUnk_02000080 +_0805580C: .4byte gUnk_02000070 +_08055810: .4byte gUnk_080FF298 + + thumb_func_start nullsub_490 +nullsub_490: @ 0x08055814 + bx lr + .align 2, 0 + + thumb_func_start sub_08055818 +sub_08055818: @ 0x08055818 + push {lr} + ldr r1, _0805582C @ =gUnk_080FF300 + ldr r0, _08055830 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0805582C: .4byte gUnk_080FF300 +_08055830: .4byte gUnk_02000080 + + thumb_func_start sub_08055834 +sub_08055834: @ 0x08055834 + push {r4, lr} + ldr r0, _08055870 @ =gUnk_080FF2C0 + bl sub_0804ADDC + ldr r0, _08055874 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #9 + beq _0805584A + ldr r0, _08055878 @ =0x00000DB4 + bl sub_08018C58 +_0805584A: + ldr r4, _0805587C @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #1 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055880 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055870: .4byte gUnk_080FF2C0 +_08055874: .4byte gUnk_02002A40 +_08055878: .4byte 0x00000DB4 +_0805587C: .4byte gUnk_02000080 +_08055880: .4byte gUnk_02000070 + + thumb_func_start nullsub_491 +nullsub_491: @ 0x08055884 + bx lr + .align 2, 0 + + thumb_func_start sub_08055888 +sub_08055888: @ 0x08055888 + push {lr} + ldr r1, _0805589C @ =gUnk_080FF328 + ldr r0, _080558A0 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0805589C: .4byte gUnk_080FF328 +_080558A0: .4byte gUnk_02000080 + + thumb_func_start sub_080558A4 +sub_080558A4: @ 0x080558A4 + push {r4, lr} + ldr r4, _080558DC @ =gUnk_02000080 + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldr r0, _080558E0 @ =gUnk_080FF308 + bl sub_0804ADDC + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _080558E4 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080558DC: .4byte gUnk_02000080 +_080558E0: .4byte gUnk_080FF308 +_080558E4: .4byte gUnk_02000070 + + thumb_func_start nullsub_492 +nullsub_492: @ 0x080558E8 + bx lr + .align 2, 0 + + thumb_func_start sub_080558EC +sub_080558EC: @ 0x080558EC + push {lr} + ldr r1, _08055900 @ =gUnk_080FF330 + ldr r0, _08055904 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055900: .4byte gUnk_080FF330 +_08055904: .4byte gUnk_02000080 + + thumb_func_start sub_08055908 +sub_08055908: @ 0x08055908 + push {r4, r5, lr} + ldr r5, _08055940 @ =gUnk_02000080 + ldr r4, [r5, #0xc] + ldrb r0, [r4, #2] + ldrb r1, [r4, #3] + bl sub_0804B0B0 + ldrb r0, [r4, #2] + ldrb r1, [r4, #3] + bl sub_0804B0E8 + ldrb r0, [r5, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r5, #6] + adds r0, #1 + strb r0, [r5, #6] + ldr r1, _08055944 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, r5, pc} + .align 2, 0 +_08055940: .4byte gUnk_02000080 +_08055944: .4byte gUnk_02000070 + + thumb_func_start sub_08055948 +sub_08055948: @ 0x08055948 + push {lr} + ldr r0, _08055970 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805596C + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _0805596C + bl sub_08055994 + ldr r0, _08055974 @ =gUnk_02000080 + ldrb r1, [r0, #6] + adds r1, #1 + strb r1, [r0, #6] + movs r1, #0x78 + strh r1, [r0, #8] +_0805596C: + pop {pc} + .align 2, 0 +_08055970: .4byte gUnk_03000FD0 +_08055974: .4byte gUnk_02000080 + + thumb_func_start sub_08055978 +sub_08055978: @ 0x08055978 + push {lr} + ldr r1, _08055990 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805598E + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_0805598E: + pop {pc} + .align 2, 0 +_08055990: .4byte gUnk_02000080 + + thumb_func_start sub_08055994 +sub_08055994: @ 0x08055994 + push {r4, lr} + ldr r4, _080559D8 @ =gUnk_02000080 + ldrb r0, [r4, #4] + lsls r0, r0, #3 + ldr r1, _080559DC @ =gUnk_080FEAC8 + adds r0, r0, r1 + ldrb r1, [r0, #6] + movs r0, #1 + ands r0, r1 + movs r3, #1 + cmp r0, #0 + beq _080559AE + movs r3, #2 +_080559AE: + ldr r0, [r4, #0xc] + ldrh r1, [r0, #8] + lsrs r1, r1, #4 + movs r2, #0x3f + ands r1, r2 + ldrh r0, [r0, #0xa] + lsrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + movs r0, #0x73 + adds r2, r3, #0 + bl sub_0807B314 + ldrb r0, [r4, #4] + bl sub_080553E0 + movs r0, #0x73 + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_080559D8: .4byte gUnk_02000080 +_080559DC: .4byte gUnk_080FEAC8 + + thumb_func_start sub_080559E0 +sub_080559E0: @ 0x080559E0 + push {lr} + ldr r1, _080559F4 @ =gUnk_080FF35C + ldr r0, _080559F8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080559F4: .4byte gUnk_080FF35C +_080559F8: .4byte gUnk_02000080 + + thumb_func_start sub_080559FC +sub_080559FC: @ 0x080559FC + push {r4, lr} + ldr r4, _08055A30 @ =gUnk_02000080 + ldr r0, [r4, #0xc] + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08055A0E + ldr r0, _08055A34 @ =gUnk_080FF33C + bl sub_0804ADDC +_08055A0E: + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055A38 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055A30: .4byte gUnk_02000080 +_08055A34: .4byte gUnk_080FF33C +_08055A38: .4byte gUnk_02000070 + + thumb_func_start sub_08055A3C +sub_08055A3C: @ 0x08055A3C + push {lr} + ldr r0, _08055A64 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055A60 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08055A60 + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 + ldr r1, _08055A68 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_08055A60: + pop {pc} + .align 2, 0 +_08055A64: .4byte gUnk_03000FD0 +_08055A68: .4byte gUnk_02000080 + + thumb_func_start sub_08055A6C +sub_08055A6C: @ 0x08055A6C + push {r4, lr} + ldr r0, _08055AA0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055A9E + ldr r4, _08055AA4 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #1 + bl sub_0801876C + ldrb r0, [r4, #4] + bl sub_080553E0 + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0x73 + bl sub_080A3268 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0x78 + strh r0, [r4, #8] +_08055A9E: + pop {r4, pc} + .align 2, 0 +_08055AA0: .4byte gUnk_03000FD0 +_08055AA4: .4byte gUnk_02000080 + + thumb_func_start sub_08055AA8 +sub_08055AA8: @ 0x08055AA8 + push {lr} + ldr r0, _08055AC8 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055AC6 + ldr r1, _08055ACC @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08055AC6 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08055AC6: + pop {pc} + .align 2, 0 +_08055AC8: .4byte gUnk_03000FD0 +_08055ACC: .4byte gUnk_02000080 + + thumb_func_start sub_08055AD0 +sub_08055AD0: @ 0x08055AD0 + push {lr} + ldr r1, _08055AE4 @ =gUnk_080FF36C + ldr r0, _08055AE8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055AE4: .4byte gUnk_080FF36C +_08055AE8: .4byte gUnk_02000080 + + thumb_func_start sub_08055AEC +sub_08055AEC: @ 0x08055AEC + push {r4, lr} + ldr r4, _08055B2C @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldr r0, [r4, #0xc] + ldrb r0, [r0, #1] + lsls r0, r0, #4 + ldr r1, _08055B30 @ =gUnk_080FED18 + adds r0, r0, r1 + bl sub_0804ADF8 + adds r1, r0, #0 + cmp r1, #0 + beq _08055B14 + movs r0, #1 + strb r0, [r1, #0xb] +_08055B14: + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055B34 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055B2C: .4byte gUnk_02000080 +_08055B30: .4byte gUnk_080FED18 +_08055B34: .4byte gUnk_02000070 + + thumb_func_start sub_08055B38 +sub_08055B38: @ 0x08055B38 + push {lr} + ldr r0, _08055B4C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055B48 + ldr r1, _08055B50 @ =gUnk_02000080 + movs r0, #0x78 + strh r0, [r1, #8] +_08055B48: + pop {pc} + .align 2, 0 +_08055B4C: .4byte gUnk_03000FD0 +_08055B50: .4byte gUnk_02000080 + + thumb_func_start sub_08055B54 +sub_08055B54: @ 0x08055B54 + push {lr} + ldr r1, _08055B6C @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08055B6A + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08055B6A: + pop {pc} + .align 2, 0 +_08055B6C: .4byte gUnk_02000080 + + thumb_func_start sub_08055B70 +sub_08055B70: @ 0x08055B70 + push {r4, r5, r6, lr} + adds r0, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + ldr r1, _08055BA4 @ =gUnk_02000080 + ldr r4, [r1, #0xc] + lsls r0, r0, #4 + ldr r1, _08055BA8 @ =gUnk_080FF378 + adds r0, r0, r1 + bl sub_0804ADF8 + adds r3, r0, #0 + cmp r3, #0 + beq _08055BA2 + ldrh r0, [r4, #8] + ldr r1, _08055BAC @ =gUnk_03000BF0 + adds r0, r0, r5 + ldrh r2, [r1, #6] + adds r0, r0, r2 + strh r0, [r3, #0x2e] + ldrh r0, [r4, #0xa] + adds r0, r0, r6 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r3, #0x32] +_08055BA2: + pop {r4, r5, r6, pc} + .align 2, 0 +_08055BA4: .4byte gUnk_02000080 +_08055BA8: .4byte gUnk_080FF378 +_08055BAC: .4byte gUnk_03000BF0 + + thumb_func_start sub_08055BB0 +sub_08055BB0: @ 0x08055BB0 + push {lr} + ldr r1, _08055BC4 @ =gUnk_080FF3C8 + ldr r0, _08055BC8 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055BC4: .4byte gUnk_080FF3C8 +_08055BC8: .4byte gUnk_02000080 + + thumb_func_start sub_08055BCC +sub_08055BCC: @ 0x08055BCC + push {r4, lr} + ldr r4, _08055BFC @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #4] + movs r1, #0 + bl sub_0801876C + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055C00 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055BFC: .4byte gUnk_02000080 +_08055C00: .4byte gUnk_02000070 + + thumb_func_start sub_08055C04 +sub_08055C04: @ 0x08055C04 + push {lr} + ldr r0, _08055C2C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055C28 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08055C28 + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 + ldr r1, _08055C30 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] +_08055C28: + pop {pc} + .align 2, 0 +_08055C2C: .4byte gUnk_03000FD0 +_08055C30: .4byte gUnk_02000080 + + thumb_func_start sub_08055C34 +sub_08055C34: @ 0x08055C34 + push {r4, r5, lr} + sub sp, #4 + ldr r0, _08055C64 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055CA6 + ldr r5, _08055C68 @ =gUnk_02000080 + ldr r4, [r5, #0xc] + ldrb r0, [r5, #4] + bl sub_080553E0 + ldrb r1, [r4, #1] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _08055C6C + ldrb r0, [r5, #4] + movs r1, #0 + bl sub_08054974 + b _08055C8C + .align 2, 0 +_08055C64: .4byte gUnk_03000FD0 +_08055C68: .4byte gUnk_02000080 +_08055C6C: + str r0, [sp] + movs r0, #6 + movs r1, #0x9e + movs r2, #6 + movs r3, #0 + bl sub_0805EB2C + adds r4, r0, #0 + cmp r4, #0 + beq _08055C8C + ldr r0, [r4, #0x54] + bl sub_0805E7BC + adds r0, r4, #0 + bl sub_0805E7BC +_08055C8C: + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0x73 + bl sub_080A3268 + ldr r0, _08055CAC @ =gUnk_02000080 + ldrb r1, [r0, #6] + adds r1, #1 + strb r1, [r0, #6] + movs r1, #0x78 + strh r1, [r0, #8] +_08055CA6: + add sp, #4 + pop {r4, r5, pc} + .align 2, 0 +_08055CAC: .4byte gUnk_02000080 + + thumb_func_start sub_08055CB0 +sub_08055CB0: @ 0x08055CB0 + push {lr} + ldr r0, _08055CD0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055CCE + ldr r1, _08055CD4 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08055CCE + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08055CCE: + pop {pc} + .align 2, 0 +_08055CD0: .4byte gUnk_03000FD0 +_08055CD4: .4byte gUnk_02000080 + + thumb_func_start sub_08055CD8 +sub_08055CD8: @ 0x08055CD8 + push {lr} + ldr r1, _08055CEC @ =gUnk_080FF3E8 + ldr r0, _08055CF0 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055CEC: .4byte gUnk_080FF3E8 +_08055CF0: .4byte gUnk_02000080 + + thumb_func_start sub_08055CF4 +sub_08055CF4: @ 0x08055CF4 + push {r4, lr} + ldr r4, _08055D24 @ =gUnk_02000080 + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055D28 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055D24: .4byte gUnk_02000080 +_08055D28: .4byte gUnk_02000070 + + thumb_func_start sub_08055D2C +sub_08055D2C: @ 0x08055D2C + push {r4, lr} + ldr r0, _08055D5C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055D5A + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _08055D5A + ldr r4, _08055D60 @ =gUnk_02000080 + ldrb r0, [r4, #4] + movs r1, #1 + bl sub_0801876C + ldrb r0, [r4, #4] + bl sub_080553E0 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0x78 + strh r0, [r4, #8] +_08055D5A: + pop {r4, pc} + .align 2, 0 +_08055D5C: .4byte gUnk_03000FD0 +_08055D60: .4byte gUnk_02000080 + + thumb_func_start sub_08055D64 +sub_08055D64: @ 0x08055D64 + push {lr} + ldr r1, _08055D7C @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08055D7A + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08055D7A: + pop {pc} + .align 2, 0 +_08055D7C: .4byte gUnk_02000080 + + thumb_func_start sub_08055D80 +sub_08055D80: @ 0x08055D80 + push {lr} + ldr r1, _08055D94 @ =gUnk_080FF3F4 + ldr r0, _08055D98 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055D94: .4byte gUnk_080FF3F4 +_08055D98: .4byte gUnk_02000080 + + thumb_func_start sub_08055D9C +sub_08055D9C: @ 0x08055D9C + push {lr} + ldr r1, _08055DB8 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + ldr r1, _08055DBC @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {pc} + .align 2, 0 +_08055DB8: .4byte gUnk_02000080 +_08055DBC: .4byte gUnk_02000070 + + thumb_func_start sub_08055DC0 +sub_08055DC0: @ 0x08055DC0 + push {lr} + ldr r0, _08055DE0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08055DDC + ldr r0, _08055DE4 @ =0x00000A01 + bl sub_08056378 + ldr r1, _08055DE8 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #0x78 + strh r0, [r1, #8] +_08055DDC: + pop {pc} + .align 2, 0 +_08055DE0: .4byte gUnk_03000FD0 +_08055DE4: .4byte 0x00000A01 +_08055DE8: .4byte gUnk_02000080 + + thumb_func_start sub_08055DEC +sub_08055DEC: @ 0x08055DEC + push {lr} + ldr r1, _08055E04 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08055E02 + ldrb r0, [r1, #5] + adds r0, #1 + strb r0, [r1, #5] +_08055E02: + pop {pc} + .align 2, 0 +_08055E04: .4byte gUnk_02000080 + + thumb_func_start sub_08055E08 +sub_08055E08: @ 0x08055E08 + push {lr} + ldr r1, _08055E1C @ =gUnk_080FF420 + ldr r0, _08055E20 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_08055E1C: .4byte gUnk_080FF420 +_08055E20: .4byte gUnk_02000080 + + thumb_func_start sub_08055E24 +sub_08055E24: @ 0x08055E24 + push {r4, lr} + ldr r4, _08055E5C @ =gUnk_02000080 + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _08055E60 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + ldr r1, [r4, #0xc] + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + bl sub_0804B0B0 + ldr r0, _08055E64 @ =gUnk_080FF400 + bl sub_0804ADDC + ldrb r0, [r4, #4] + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08055B70 + movs r0, #4 + movs r1, #0x10 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_08055E5C: .4byte gUnk_02000080 +_08055E60: .4byte gUnk_02000070 +_08055E64: .4byte gUnk_080FF400 + + thumb_func_start nullsub_493 +nullsub_493: @ 0x08055E68 + bx lr + .align 2, 0 \ No newline at end of file diff --git a/asm/code_08055FF4.s b/asm/code_08055FF4.s new file mode 100644 index 00000000..4da095fe --- /dev/null +++ b/asm/code_08055FF4.s @@ -0,0 +1,81741 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start sub_08055FF4 +sub_08055FF4: @ 0x08055FF4 + push {lr} + movs r2, #0 + ldr r0, _0805600C @ =gUnk_03000FF0 + ldrh r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xf + bne _08056006 + movs r2, #1 +_08056006: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_0805600C: .4byte gUnk_03000FF0 + + thumb_func_start sub_08056010 +sub_08056010: @ 0x08056010 + ldr r1, _0805601C @ =gUnk_03001000 + movs r2, #0 + strb r0, [r1, #2] + strb r2, [r1, #3] + strb r2, [r1, #4] + bx lr + .align 2, 0 +_0805601C: .4byte gUnk_03001000 + + thumb_func_start sub_08056020 +sub_08056020: @ 0x08056020 + push {r4, lr} + ldr r2, _08056088 @ =0x04000208 + movs r1, #0 + strh r1, [r2] + ldr r0, _0805608C @ =0x04000200 + strh r1, [r0] + ldr r0, _08056090 @ =0x04000004 + strh r1, [r0] + ldr r0, _08056094 @ =0x04000202 + strh r1, [r0] + strh r1, [r2] + ldr r1, _08056098 @ =0x040000B0 + ldrh r2, [r1, #0xa] + ldr r4, _0805609C @ =0x0000C5FF + adds r0, r4, #0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r3, _080560A0 @ =0x00007FFF + adds r0, r3, #0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + adds r1, #0xc + ldrh r2, [r1, #0xa] + adds r0, r4, #0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + adds r0, r3, #0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + adds r1, #0xc + ldrh r2, [r1, #0xa] + adds r0, r4, #0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + adds r0, r3, #0 + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + ldr r0, _080560A4 @ =0x040000D4 + ldrh r1, [r0, #0xa] + ands r4, r1 + strh r4, [r0, #0xa] + ldrh r1, [r0, #0xa] + ands r3, r1 + strh r3, [r0, #0xa] + ldrh r0, [r0, #0xa] + pop {r4, pc} + .align 2, 0 +_08056088: .4byte 0x04000208 +_0805608C: .4byte 0x04000200 +_08056090: .4byte 0x04000004 +_08056094: .4byte 0x04000202 +_08056098: .4byte 0x040000B0 +_0805609C: .4byte 0x0000C5FF +_080560A0: .4byte 0x00007FFF +_080560A4: .4byte 0x040000D4 + + thumb_func_start sub_080560A8 +sub_080560A8: @ 0x080560A8 + push {lr} + bl sub_08056020 + movs r0, #0xde + bl SoftReset + pop {pc} + .align 2, 0 + + thumb_func_start sub_080560B8 +sub_080560B8: @ 0x080560B8 + push {r4, lr} + bl sub_08056134 + cmp r0, #0 + bne _080560F8 + movs r0, #0x80 + lsls r0, r0, #0x12 + bl sub_0807CF30 + adds r1, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + blt _080560E4 + cmp r1, #0 + ble _080560E4 + cmp r1, #1 + bne _080560E4 + bl sub_08056134 + cmp r0, #0 + bne _080560F8 +_080560E4: + ldr r0, _08056128 @ =gUnk_08100CD4 + movs r4, #0x80 + lsls r4, r4, #0x12 + adds r1, r4, #0 + movs r2, #0x10 + bl sub_0801D66C + adds r0, r4, #0 + bl sub_0807CF10 +_080560F8: + ldr r2, _0805612C @ =gUnk_02000010 + ldr r1, [r2] + ldr r0, _08056130 @ =0x4D435A33 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + ldrb r1, [r2, #4] + cmp r1, #0 + beq _08056112 + cmp r1, #0xc1 + beq _08056112 + movs r0, #1 +_08056112: + cmp r0, #0 + beq _08056124 + ldr r4, _0805612C @ =gUnk_02000010 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0801D630 + ldr r0, _08056130 @ =0x4D435A33 + str r0, [r4] +_08056124: + pop {r4, pc} + .align 2, 0 +_08056128: .4byte gUnk_08100CD4 +_0805612C: .4byte gUnk_02000010 +_08056130: .4byte 0x4D435A33 + + thumb_func_start sub_08056134 +sub_08056134: @ 0x08056134 + push {lr} + movs r2, #0x80 + lsls r2, r2, #0x12 + ldr r1, [r2] + ldr r0, _08056164 @ =0x4D435A33 + cmp r1, r0 + bne _08056160 + ldrb r0, [r2, #4] + cmp r0, #2 + bhi _08056160 + ldrb r0, [r2, #5] + cmp r0, #2 + bhi _08056160 + ldrb r0, [r2, #6] + cmp r0, #2 + bhi _08056160 + ldrb r0, [r2, #7] + cmp r0, #1 + bne _08056160 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _08056168 +_08056160: + movs r0, #0 + b _0805616A + .align 2, 0 +_08056164: .4byte 0x4D435A33 +_08056168: + movs r0, #1 +_0805616A: + pop {pc} + + thumb_func_start sub_0805616C +sub_0805616C: @ 0x0805616C + push {lr} + ldr r0, _080561E8 @ =0x80040000 + bl sub_080A3268 + ldr r0, _080561EC @ =gUnk_03000F50 + adds r3, r0, #0 + adds r3, #0x6c + ldrb r2, [r3] + adds r0, #0x6d + movs r1, #0 + strb r2, [r0] + strb r1, [r3] + ldr r1, _080561F0 @ =0x040000B0 + ldrh r2, [r1, #0xa] + ldr r0, _080561F4 @ =0x0000C5FF + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r2, [r1, #0xa] + ldr r0, _080561F8 @ =0x00007FFF + ands r0, r2 + strh r0, [r1, #0xa] + ldrh r0, [r1, #0xa] + ldr r0, [r1, #8] + movs r2, #0x80 + lsls r2, r2, #0x18 + cmp r0, #0 + bge _080561AA +_080561A2: + ldr r0, [r1, #8] + ands r0, r2 + cmp r0, #0 + bne _080561A2 +_080561AA: + ldr r2, _080561FC @ =0x040000BC + ldr r0, [r2, #8] + movs r1, #0x80 + lsls r1, r1, #0x18 + cmp r0, #0 + bge _080561BE +_080561B6: + ldr r0, [r2, #8] + ands r0, r1 + cmp r0, #0 + bne _080561B6 +_080561BE: + ldr r2, _08056200 @ =0x040000C8 + ldr r0, [r2, #8] + movs r1, #0x80 + lsls r1, r1, #0x18 + cmp r0, #0 + bge _080561D2 +_080561CA: + ldr r0, [r2, #8] + ands r0, r1 + cmp r0, #0 + bne _080561CA +_080561D2: + ldr r2, _08056204 @ =0x040000D4 + ldr r0, [r2, #8] + movs r1, #0x80 + lsls r1, r1, #0x18 + cmp r0, #0 + bge _080561E6 +_080561DE: + ldr r0, [r2, #8] + ands r0, r1 + cmp r0, #0 + bne _080561DE +_080561E6: + pop {pc} + .align 2, 0 +_080561E8: .4byte 0x80040000 +_080561EC: .4byte gUnk_03000F50 +_080561F0: .4byte 0x040000B0 +_080561F4: .4byte 0x0000C5FF +_080561F8: .4byte 0x00007FFF +_080561FC: .4byte 0x040000BC +_08056200: .4byte 0x040000C8 +_08056204: .4byte 0x040000D4 + + thumb_func_start sub_08056208 +sub_08056208: @ 0x08056208 + push {lr} + ldr r0, _08056224 @ =0x80060000 + bl sub_080A3268 + ldr r0, _08056228 @ =gUnk_03000F50 + adds r3, r0, #0 + adds r3, #0x6d + ldrb r2, [r3] + adds r0, #0x6c + movs r1, #0 + strb r2, [r0] + strb r1, [r3] + pop {pc} + .align 2, 0 +_08056224: .4byte 0x80060000 +_08056228: .4byte gUnk_03000F50 + + thumb_func_start sub_0805622C +sub_0805622C: @ 0x0805622C + ldr r3, _08056248 @ =gUnk_03000F50 + str r0, [r3, #0x70] + str r1, [r3, #0x74] + str r2, [r3, #0x78] + adds r3, #0x6c + movs r2, #1 + movs r0, #1 + strb r0, [r3] + ldr r1, _0805624C @ =gUnk_03003DE4 + ldrb r0, [r1] + eors r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_08056248: .4byte gUnk_03000F50 +_0805624C: .4byte gUnk_03003DE4 + + thumb_func_start sub_08056250 +sub_08056250: @ 0x08056250 + ldr r0, _0805625C @ =gUnk_03000F50 + adds r0, #0x6c + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_0805625C: .4byte gUnk_03000F50 + + thumb_func_start sub_08056260 +sub_08056260: @ 0x08056260 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + movs r1, #0x80 + lsls r1, r1, #0x13 + movs r0, #0x80 + strh r0, [r1] + ldr r1, _080562B8 @ =0x04000132 + ldr r2, _080562BC @ =0x00008304 + adds r0, r2, #0 + strh r0, [r1] + ldr r6, _080562C0 @ =0x04000208 + movs r0, #0 + mov r8, r0 + strh r0, [r6] + ldr r5, _080562C4 @ =0x04000200 + ldrh r4, [r5] + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r1, #0 + strh r0, [r5] + movs r2, #1 + mov sb, r2 + strh r2, [r6] + bl SoundBiasReset + svc #3 + bl SoundBiasSet + mov r0, r8 + strh r0, [r6] + strh r4, [r5] + mov r1, sb + strh r1, [r6] + ldr r0, _080562C8 @ =gUnk_03001000 + ldrb r1, [r0, #1] + mov r2, r8 + strb r2, [r0, #1] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_080562B8: .4byte 0x04000132 +_080562BC: .4byte 0x00008304 +_080562C0: .4byte 0x04000208 +_080562C4: .4byte 0x04000200 +_080562C8: .4byte gUnk_03001000 + + thumb_func_start sub_080562CC +sub_080562CC: @ 0x080562CC + push {r4, r5, r6, lr} + ldr r6, _080562FC @ =gUnk_03000BF0 + movs r4, #0xa + ldrsh r5, [r6, r4] + ldrh r4, [r6, #6] + subs r5, r5, r4 + subs r5, r5, r0 + adds r5, #0xf0 + movs r4, #0xc + ldrsh r0, [r6, r4] + ldrh r4, [r6, #8] + subs r0, r0, r4 + subs r0, r0, r1 + adds r0, #0xa0 + adds r2, #0xf0 + adds r3, #0xa0 + movs r1, #0 + cmp r5, r2 + bhs _080562F8 + cmp r0, r3 + bhs _080562F8 + movs r1, #1 +_080562F8: + adds r0, r1, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_080562FC: .4byte gUnk_03000BF0 + + thumb_func_start sub_08056300 +sub_08056300: @ 0x08056300 + push {r4, lr} + adds r4, r0, #0 + b _0805631C +_08056306: + ldrh r0, [r4, #2] + ldrh r1, [r4, #4] + ldrh r2, [r4, #6] + ldrh r3, [r4, #8] + bl sub_080562CC + cmp r0, #0 + beq _0805631A + ldrh r0, [r4] + b _08056324 +_0805631A: + adds r4, #0xa +_0805631C: + ldrh r0, [r4] + cmp r0, #0xff + bne _08056306 + movs r0, #0xff +_08056324: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08056328 +sub_08056328: @ 0x08056328 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_08056330 +sub_08056330: @ 0x08056330 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_08056338 +sub_08056338: @ 0x08056338 + push {lr} + movs r2, #1 + rsbs r2, r2, #0 + ldr r0, _08056358 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08056354 + ldr r1, _0805635C @ =gUnk_02000040 + ldrb r0, [r1] + cmp r0, #3 + bne _08056354 + ldrb r2, [r1, #1] +_08056354: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_08056358: .4byte gUnk_02000050 +_0805635C: .4byte gUnk_02000040 + + thumb_func_start sub_08056360 +sub_08056360: @ 0x08056360 + push {lr} + ldr r2, _08056374 @ =gUnk_02000050 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _08056372 + movs r0, #0x88 + strb r0, [r2] +_08056372: + pop {pc} + .align 2, 0 +_08056374: .4byte gUnk_02000050 + + thumb_func_start sub_08056378 +sub_08056378: @ 0x08056378 + push {lr} + adds r2, r0, #0 + ldr r0, _0805638C @ =gUnk_03000BF0 + ldr r1, [r0, #0x30] + cmp r1, #0 + beq _08056390 + adds r0, r2, #0 + bl sub_08056398 + b _08056396 + .align 2, 0 +_0805638C: .4byte gUnk_03000BF0 +_08056390: + adds r0, r2, #0 + bl sub_080563EC +_08056396: + pop {pc} + + thumb_func_start sub_08056398 +sub_08056398: @ 0x08056398 + push {r4, lr} + adds r4, r1, #0 + bl sub_080563EC + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r2, #0x36 + ldrsh r1, [r4, r2] + adds r0, r0, r1 + ldr r1, _080563C0 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r1, [r1, r2] + subs r0, r0, r1 + cmp r0, #0x58 + ble _080563BC + ldr r1, _080563C4 @ =gUnk_02000050 + movs r0, #1 + strb r0, [r1, #7] +_080563BC: + pop {r4, pc} + .align 2, 0 +_080563C0: .4byte gUnk_03000BF0 +_080563C4: .4byte gUnk_02000050 + + thumb_func_start sub_080563C8 +sub_080563C8: @ 0x080563C8 + push {lr} + adds r2, r1, #0 + movs r1, #1 + bl sub_080563D4 + pop {pc} + + thumb_func_start sub_080563D4 +sub_080563D4: @ 0x080563D4 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + bl sub_080563EC + ldr r0, _080563E8 @ =gUnk_02000050 + strb r4, [r0, #6] + strb r5, [r0, #7] + pop {r4, r5, pc} + .align 2, 0 +_080563E8: .4byte gUnk_02000050 + + thumb_func_start sub_080563EC +sub_080563EC: @ 0x080563EC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08056414 @ =gUnk_02000050 + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0801D630 + strh r5, [r4, #8] + movs r0, #0x63 + strb r0, [r4, #2] + movs r0, #0x1a + strb r0, [r4, #4] + movs r0, #4 + strb r0, [r4, #5] + movs r1, #1 + strb r1, [r4, #6] + movs r0, #0xc + strb r0, [r4, #7] + strb r1, [r4] + pop {r4, r5, pc} + .align 2, 0 +_08056414: .4byte gUnk_02000050 + + thumb_func_start sub_08056418 +sub_08056418: @ 0x08056418 + push {lr} + ldr r0, _08056444 @ =gUnk_02000050 + movs r1, #0x20 + bl sub_0801D630 + ldr r0, _08056448 @ =gUnk_02022780 + movs r1, #0xa8 + bl sub_0801D630 + ldr r0, _0805644C @ =gUnk_02036A40 + movs r1, #8 + bl sub_0801D630 + ldr r0, _08056450 @ =gUnk_02036A38 + movs r1, #8 + bl sub_0801D630 + ldr r0, _08056454 @ =gUnk_02000040 + movs r1, #4 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_08056444: .4byte gUnk_02000050 +_08056448: .4byte gUnk_02022780 +_0805644C: .4byte gUnk_02036A40 +_08056450: .4byte gUnk_02036A38 +_08056454: .4byte gUnk_02000040 + + thumb_func_start sub_08056458 +sub_08056458: @ 0x08056458 + push {r4, r5, lr} + ldr r0, _08056484 @ =gUnk_02000050 + ldrb r0, [r0] + cmp r0, #1 + bne _08056470 + ldr r0, _08056488 @ =gUnk_02022780 + movs r1, #0xa8 + bl sub_0801D630 + movs r0, #1 + bl sub_080564C8 +_08056470: + ldr r2, _08056488 @ =gUnk_02022780 + adds r1, r2, #0 + adds r1, #0x8a + ldrb r0, [r1] + cmp r0, #0 + beq _0805648C + subs r0, #1 + strb r0, [r1] + b _080564A2 + .align 2, 0 +_08056484: .4byte gUnk_02000050 +_08056488: .4byte gUnk_02022780 +_0805648C: + ldr r5, _080564C0 @ =gUnk_08107BC8 + adds r4, r2, #0 + adds r4, #0x88 +_08056492: + ldrb r0, [r4] + lsls r0, r0, #2 + adds r0, r0, r5 + ldr r0, [r0] + bl _call_via_r0 + cmp r0, #0 + bne _08056492 +_080564A2: + ldr r0, _080564C4 @ =gUnk_02022780 + adds r1, r0, #0 + adds r1, #0x9d + ldrb r0, [r1] + cmp r0, #0 + beq _080564B6 + movs r0, #0 + strb r0, [r1] + bl sub_08056F70 +_080564B6: + bl sub_08056C68 + bl sub_08056D70 + pop {r4, r5, pc} + .align 2, 0 +_080564C0: .4byte gUnk_08107BC8 +_080564C4: .4byte gUnk_02022780 + + thumb_func_start sub_080564C8 +sub_080564C8: @ 0x080564C8 + ldr r1, _080564D8 @ =gUnk_02022780 + adds r2, r1, #0 + adds r2, #0x88 + movs r3, #0 + strb r0, [r2] + adds r1, #0x89 + strb r3, [r1] + bx lr + .align 2, 0 +_080564D8: .4byte gUnk_02022780 + + thumb_func_start sub_080564DC +sub_080564DC: @ 0x080564DC + ldr r0, _080564E8 @ =gUnk_02022780 + adds r0, #0x99 + movs r1, #0 + strb r1, [r0] + movs r0, #0 + bx lr + .align 2, 0 +_080564E8: .4byte gUnk_02022780 + + thumb_func_start sub_080564EC +sub_080564EC: @ 0x080564EC + push {r4, lr} + ldr r0, _08056598 @ =gUnk_02036A40 + movs r1, #8 + bl sub_0801D630 + ldr r0, _0805659C @ =gUnk_02024030 + movs r1, #0x18 + bl sub_0801D630 + ldr r4, _080565A0 @ =gUnk_02022780 + adds r0, r4, #0 + movs r1, #0xa8 + bl sub_0801D630 + ldr r0, _080565A4 @ =gUnk_02000050 + adds r1, r4, #0 + movs r2, #0x20 + bl sub_0801D66C + ldrb r0, [r4, #2] + cmp r0, #0x63 + bne _08056520 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #5] + strb r0, [r4, #2] +_08056520: + adds r1, r4, #0 + adds r1, #0x9c + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x20 + ldrh r1, [r4, #8] + bl sub_0805EEB4 + adds r3, r4, #0 + adds r3, #0x5c + movs r0, #2 + strb r0, [r3] + movs r0, #0xe + strb r0, [r3, #1] + adds r3, #2 + movs r2, #0 + ldr r0, _080565A8 @ =gUnk_02002A40 + adds r0, #0x80 + ldrb r1, [r0] + cmp r1, #0 + beq _08056560 + adds r4, r0, #0 +_0805654E: + strb r1, [r3] + adds r3, #1 + adds r2, #1 + cmp r2, #5 + bhi _08056560 + adds r0, r2, r4 + ldrb r1, [r0] + cmp r1, #0 + bne _0805654E +_08056560: + movs r0, #2 + strb r0, [r3] + movs r0, #0xf + strb r0, [r3, #1] + movs r0, #0 + strb r0, [r3, #2] + ldr r4, _080565A0 @ =gUnk_02022780 + adds r0, r4, #0 + bl sub_08056FBC + ldr r0, _080565AC @ =gUnk_08107BE0 + str r0, [r4, #0x2c] + ldr r0, _080565B0 @ =gUnk_02000D00 + str r0, [r4, #0x58] + adds r4, #0x54 + movs r0, #0xd0 + strh r0, [r4] + movs r0, #2 + bl sub_08056C54 + movs r0, #0 + bl sub_08056BDC + movs r0, #2 + bl sub_080564C8 + movs r0, #1 + pop {r4, pc} + .align 2, 0 +_08056598: .4byte gUnk_02036A40 +_0805659C: .4byte gUnk_02024030 +_080565A0: .4byte gUnk_02022780 +_080565A4: .4byte gUnk_02000050 +_080565A8: .4byte gUnk_02002A40 +_080565AC: .4byte gUnk_08107BE0 +_080565B0: .4byte gUnk_02000D00 + + thumb_func_start sub_080565B4 +sub_080565B4: @ 0x080565B4 + push {r4, lr} + ldr r4, _080565F4 @ =gUnk_02022780 + adds r1, r4, #0 + adds r1, #0x89 + ldrb r0, [r1] + cmp r0, #0 + bne _080565DA + movs r0, #1 + strb r0, [r1] + adds r1, #0x10 + strb r0, [r1] + ldrb r0, [r4, #3] + subs r1, #0x46 + ldrb r1, [r1] + bl sub_08056F88 + movs r0, #0x65 + bl sub_080A3268 +_080565DA: + movs r0, #1 + bl sub_08056CC0 + cmp r0, #0 + beq _080565F0 + adds r1, r4, #0 + adds r1, #0x99 + movs r0, #2 + strb r0, [r1] + bl sub_080564C8 +_080565F0: + movs r0, #0 + pop {r4, pc} + .align 2, 0 +_080565F4: .4byte gUnk_02022780 + + thumb_func_start sub_080565F8 +sub_080565F8: @ 0x080565F8 + push {r4, lr} + ldr r4, _0805663C @ =gUnk_02022780 + adds r1, r4, #0 + adds r1, #0x89 + ldrb r0, [r1] + cmp r0, #0 + bne _0805661C + movs r0, #1 + strb r0, [r1] + adds r1, #0x10 + movs r0, #3 + strb r0, [r1] + movs r0, #0 + bl sub_08056BDC + movs r0, #0x66 + bl sub_080A3268 +_0805661C: + movs r0, #1 + rsbs r0, r0, #0 + bl sub_08056CC0 + cmp r0, #0 + beq _08056636 + adds r1, r4, #0 + adds r1, #0x99 + movs r0, #0 + strb r0, [r1] + movs r0, #2 + bl sub_080564C8 +_08056636: + movs r0, #0 + pop {r4, pc} + .align 2, 0 +_0805663C: .4byte gUnk_02022780 + + thumb_func_start sub_08056640 +sub_08056640: @ 0x08056640 + push {lr} + movs r0, #0 + bl sub_08056C54 + movs r0, #0 + bl sub_080564C8 + movs r0, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08056654 +sub_08056654: @ 0x08056654 + push {lr} + movs r0, #4 + bl sub_08056C54 + ldr r2, _0805667C @ =gUnk_08107BF4 + ldr r0, _08056680 @ =gUnk_02022780 + adds r1, r0, #0 + adds r1, #0x89 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + movs r0, #0 + bl sub_08056CC0 + movs r0, #0 + pop {pc} + .align 2, 0 +_0805667C: .4byte gUnk_08107BF4 +_08056680: .4byte gUnk_02022780 + + thumb_func_start sub_08056684 +sub_08056684: @ 0x08056684 + push {r4, lr} + adds r2, r0, #0 + ldr r4, _080566AC @ =gUnk_02022780 + adds r0, r4, #0 + adds r0, #0x20 + ldrb r1, [r0] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _080566B0 + adds r0, r4, #0 + adds r0, #0x99 + ldrb r0, [r0] + cmp r0, #0 + bne _080566B6 + movs r0, #5 + bl sub_080564C8 + b _080566B6 + .align 2, 0 +_080566AC: .4byte gUnk_02022780 +_080566B0: + adds r0, r2, #0 + adds r0, #0x89 + strb r3, [r0] +_080566B6: + pop {r4, pc} + + thumb_func_start sub_080566B8 +sub_080566B8: @ 0x080566B8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x95 + ldrb r0, [r1] + cmp r0, #0 + beq _080566CC + subs r0, #1 + strb r0, [r1] + b _0805674E +_080566CC: + ldr r0, _08056740 @ =gUnk_03000FF0 + ldrh r1, [r0] + movs r0, #2 + ands r0, r1 + movs r2, #1 + cmp r0, #0 + beq _080566DC + movs r2, #8 +_080566DC: + adds r1, r4, #0 + adds r1, #0x92 + ldrb r0, [r1] + subs r0, r0, r2 + strb r0, [r1] + lsls r0, r0, #0x18 + adds r7, r1, #0 + cmp r0, #0 + bgt _0805674E + movs r5, #0 + ldr r2, _08056744 @ =gUnk_08107C0C +_080566F2: + adds r5, #1 + ldrb r0, [r4, #2] + adds r0, r0, r2 + ldrb r0, [r0] + ldrb r3, [r1] + adds r0, r0, r3 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + ble _080566F2 + movs r6, #0 +_08056708: + adds r0, r4, #0 + bl sub_08056750 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0 + beq _08056732 + adds r0, r4, #0 + adds r0, #0x95 + ldrb r0, [r0] + cmp r0, #0 + bne _08056732 + adds r0, r4, #0 + adds r0, #0x8a + ldrb r0, [r0] + cmp r0, #0 + bne _08056732 + adds r6, r6, r1 + subs r5, #1 + cmp r5, #0 + bgt _08056708 +_08056732: + cmp r6, #0 + beq _0805674C + ldr r0, _08056748 @ =gUnk_02022780 + adds r0, #0x9d + movs r1, #1 + strb r1, [r0] + b _0805674E + .align 2, 0 +_08056740: .4byte gUnk_03000FF0 +_08056744: .4byte gUnk_08107C0C +_08056748: .4byte gUnk_02022780 +_0805674C: + strb r6, [r7] +_0805674E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08056750 +sub_08056750: @ 0x08056750 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrh r7, [r5, #0x24] + cmp r7, #0 + beq _0805675C + b _0805694C +_0805675C: + adds r4, r5, #0 + adds r4, #0x20 + adds r0, r4, #0 + bl sub_0805EFE8 + adds r7, r0, #0 + cmp r7, #0xe + bls _0805676E + b _08056942 +_0805676E: + lsls r0, r7, #2 + ldr r1, _08056778 @ =_0805677C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08056778: .4byte _0805677C +_0805677C: @ jump table + .4byte _080567B8 @ case 0 + .4byte _080567DE @ case 1 + .4byte _08056802 @ case 2 + .4byte _0805680A @ case 3 + .4byte _08056812 @ case 4 + .4byte _08056838 @ case 5 + .4byte _08056844 @ case 6 + .4byte _08056858 @ case 7 + .4byte _0805688C @ case 8 + .4byte _08056894 @ case 9 + .4byte _080568AC @ case 10 + .4byte _08056942 @ case 11 + .4byte _080568B2 @ case 12 + .4byte _08056914 @ case 13 + .4byte _0805693A @ case 14 +_080567B8: + ldr r0, _080567D4 @ =gUnk_02000040 + ldrb r0, [r0] + cmp r0, #1 + bne _080567D8 + adds r1, r5, #0 + adds r1, #0x89 + movs r0, #5 + strb r0, [r1] + movs r0, #0 + movs r1, #0 + bl sub_08056ABC + b _08056942 + .align 2, 0 +_080567D4: .4byte gUnk_02000040 +_080567D8: + adds r1, r5, #0 + adds r1, #0x89 + b _0805692C +_080567DE: + adds r1, r5, #0 + adds r1, #0x8a + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x98 + ldrb r0, [r0] + cmp r0, #0 + bne _080567F8 + movs r0, #1 + bl sub_08056BDC + b _08056942 +_080567F8: + adds r1, r5, #0 + adds r1, #0x89 + movs r0, #3 + strb r0, [r1] + b _08056942 +_08056802: + movs r0, #3 + bl sub_080564C8 + b _08056942 +_0805680A: + movs r0, #4 + bl sub_080564C8 + b _08056942 +_08056812: + adds r0, r4, #0 + movs r1, #0 + bl sub_0805F324 + adds r3, r0, #0 + adds r4, r5, #0 + adds r4, #0x56 + adds r0, r5, #0 + adds r0, #0x54 + ldrh r0, [r0] + ldrh r2, [r4] + subs r0, r0, r2 + subs r0, r0, r3 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r2, r2, r0 + strh r2, [r4] + b _08056942 +_08056838: + ldr r1, _08056840 @ =gUnk_02000050 + ldrh r0, [r5, #0x22] + strb r0, [r1, #1] + b _08056942 + .align 2, 0 +_08056840: .4byte gUnk_02000050 +_08056844: + ldr r0, _08056854 @ =gUnk_0200005C + ldrh r1, [r5, #0x22] + movs r2, #0x1f + ands r1, r2 + bl sub_0801D5BC + b _08056942 + .align 2, 0 +_08056854: .4byte gUnk_0200005C +_08056858: + ldrh r3, [r5, #0x22] + cmp r3, #0xe + beq _08056864 + cmp r3, #0xf + beq _08056874 + b _0805687A +_08056864: + adds r0, r5, #0 + adds r0, #0x8f + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x91 + strb r0, [r1] + movs r3, #2 + b _0805687A +_08056874: + adds r0, r5, #0 + adds r0, #0x91 + ldrb r3, [r0] +_0805687A: + adds r1, r5, #0 + adds r1, #0x90 + movs r0, #0 + strb r0, [r1] + adds r0, r5, #0 + adds r1, r3, #0 + bl sub_080569C4 + b _08056942 +_0805688C: + ldrh r0, [r5, #0x22] + bl sub_080A3268 + b _08056942 +_08056894: + ldr r1, _080568A8 @ =gUnk_02022780 + ldrh r0, [r5, #0x22] + strb r0, [r1, #3] + ldrh r0, [r5, #0x22] + adds r1, r5, #0 + adds r1, #0x53 + ldrb r1, [r1] + bl sub_08056F88 + b _08056942 + .align 2, 0 +_080568A8: .4byte gUnk_02022780 +_080568AC: + ldrh r0, [r5, #0x22] + strb r0, [r5, #7] + b _08056942 +_080568B2: + ldr r6, _0805690C @ =gUnk_02000040 + ldrb r0, [r6] + cmp r0, #1 + beq _080568D2 + adds r0, r6, #0 + movs r1, #4 + bl sub_0801D630 + ldr r4, _08056910 @ =gUnk_02024030 + adds r0, r4, #0 + movs r1, #0x18 + bl sub_0801D630 + movs r0, #1 + strb r0, [r4] + strb r0, [r6] +_080568D2: + ldr r2, _08056910 @ =gUnk_02024030 + movs r0, #2 + ldrsb r0, [r2, r0] + cmp r0, #3 + bgt _08056942 + lsls r0, r0, #1 + adds r1, r2, #0 + adds r1, #0x10 + adds r0, r0, r1 + ldrh r1, [r5, #0x26] + strh r1, [r0] + movs r0, #2 + ldrsb r0, [r2, r0] + lsls r0, r0, #1 + adds r1, r2, #0 + adds r1, #8 + adds r0, r0, r1 + adds r3, r5, #0 + adds r3, #0x56 + ldrh r1, [r3] + strh r1, [r0] + ldrb r0, [r2, #2] + adds r0, #1 + strb r0, [r2, #2] + ldrh r0, [r3] + adds r0, #8 + strh r0, [r3] + b _08056942 + .align 2, 0 +_0805690C: .4byte gUnk_02000040 +_08056910: .4byte gUnk_02024030 +_08056914: + ldrh r3, [r5, #0x22] + cmp r3, #0xfe + beq _08056928 + cmp r3, #0xff + bne _08056932 + adds r1, r5, #0 + adds r1, #0x8e + movs r0, #1 + strb r0, [r1] + b _08056942 +_08056928: + adds r1, r5, #0 + adds r1, #0x8e +_0805692C: + movs r0, #2 + strb r0, [r1] + b _08056942 +_08056932: + adds r0, r5, #0 + adds r0, #0x95 + strb r3, [r0] + b _08056942 +_0805693A: + ldrh r1, [r5, #0x22] + adds r0, r5, #0 + adds r0, #0x94 + strb r1, [r0] +_08056942: + lsrs r0, r7, #8 + cmp r0, #0 + bne _0805694C + movs r0, #0 + b _080569C2 +_0805694C: + ldr r0, _08056960 @ =gUnk_02022780 + adds r0, #0x99 + ldrb r0, [r0] + cmp r0, #2 + beq _08056964 + movs r0, #3 + bl sub_080564C8 + movs r0, #0 + b _080569C2 + .align 2, 0 +_08056960: .4byte gUnk_02022780 +_08056964: + ldr r1, _08056994 @ =gUnk_02000050 + ldrb r0, [r1, #1] + cmp r0, #0 + bne _08056970 + movs r0, #0x80 + strb r0, [r1, #1] +_08056970: + movs r0, #0 + strh r0, [r5, #0x24] + lsrs r0, r7, #8 + cmp r0, #7 + bne _08056998 + adds r0, r5, #0 + adds r0, #0x8f + ldrb r0, [r0] + movs r1, #0x80 + adds r2, r5, #0 + adds r2, #0x90 + orrs r1, r0 + strb r1, [r2] + adds r0, r5, #0 + movs r1, #0 + bl sub_080569C4 + b _080569B4 + .align 2, 0 +_08056994: .4byte gUnk_02000050 +_08056998: + adds r2, r5, #0 + adds r2, #0x90 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080569B4 + ldrb r3, [r2] + movs r0, #0 + strb r0, [r2] + adds r0, r5, #0 + adds r1, r3, #0 + bl sub_080569C4 +_080569B4: + adds r1, r5, #0 + adds r1, #0x50 + adds r0, r7, #0 + bl sub_0805F7DC + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 +_080569C2: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080569C4 +sub_080569C4: @ 0x080569C4 + movs r2, #7 + ands r2, r1 + adds r1, r0, #0 + adds r1, #0x8f + strb r2, [r1] + adds r0, #0x52 + strb r2, [r0] + bx lr + + thumb_func_start sub_080569D4 +sub_080569D4: @ 0x080569D4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _080569F0 @ =gUnk_02024030 + movs r5, #3 + ldrsb r5, [r0, r5] + ldr r0, _080569F4 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #8 + beq _08056A02 + cmp r0, #8 + bgt _080569F8 + cmp r0, #1 + beq _08056A02 + b _08056A6A + .align 2, 0 +_080569F0: .4byte gUnk_02024030 +_080569F4: .4byte gUnk_03000FF0 +_080569F8: + cmp r0, #0x10 + beq _08056A68 + cmp r0, #0x20 + beq _08056A64 + b _08056A6A +_08056A02: + ldr r0, _08056A18 @ =gUnk_02024030 + lsls r1, r5, #1 + adds r0, #0x10 + adds r1, r1, r0 + ldrh r1, [r1] + cmp r1, #0 + bne _08056A20 + ldr r1, _08056A1C @ =gUnk_08107C14 + adds r0, r6, #0 + adds r0, #0x20 + b _08056A30 + .align 2, 0 +_08056A18: .4byte gUnk_02024030 +_08056A1C: .4byte gUnk_08107C14 +_08056A20: + strh r1, [r6, #8] + adds r4, r6, #0 + adds r4, #0x20 + adds r0, r4, #0 + bl sub_0805EEB4 + ldr r1, _08056A58 @ =gUnk_08107C0F + adds r0, r4, #0 +_08056A30: + bl sub_0805EF40 + ldr r2, _08056A5C @ =gUnk_02000040 + ldr r0, _08056A60 @ =gUnk_02024030 + ldrb r1, [r0, #3] + strb r1, [r2, #1] + movs r1, #3 + strb r1, [r2] + movs r1, #0x18 + bl sub_0801D630 + movs r0, #0x6a + bl sub_080A3268 + adds r1, r6, #0 + adds r1, #0x89 + movs r0, #1 + strb r0, [r1] + b _08056A6A + .align 2, 0 +_08056A58: .4byte gUnk_08107C0F +_08056A5C: .4byte gUnk_02000040 +_08056A60: .4byte gUnk_02024030 +_08056A64: + subs r5, #1 + b _08056A6A +_08056A68: + adds r5, #1 +_08056A6A: + ldr r4, _08056A8C @ =gUnk_02024030 + movs r1, #2 + ldrsb r1, [r4, r1] + adds r0, r5, r1 + bl __modsi3 + adds r5, r0, #0 + movs r6, #3 + ldrsb r6, [r4, r6] + cmp r5, r6 + beq _08056A90 + strb r5, [r4, #3] + movs r0, #0x69 + bl sub_080A3268 + movs r1, #1 + b _08056A92 + .align 2, 0 +_08056A8C: .4byte gUnk_02024030 +_08056A90: + movs r1, #0 +_08056A92: + ldr r2, _08056AB4 @ =gUnk_02000040 + ldrb r0, [r2] + cmp r0, #1 + bne _08056AA4 + ldr r1, _08056AB8 @ =gUnk_02024030 + movs r0, #2 + strb r0, [r2] + strb r0, [r1] + movs r1, #1 +_08056AA4: + cmp r1, #0 + beq _08056AB0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08056ABC +_08056AB0: + pop {r4, r5, r6, pc} + .align 2, 0 +_08056AB4: .4byte gUnk_02000040 +_08056AB8: .4byte gUnk_02024030 + + thumb_func_start sub_08056ABC +sub_08056ABC: @ 0x08056ABC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + ldr r7, _08056B14 @ =gUnk_02022780 + movs r0, #0x56 + adds r0, r0, r7 + mov sb, r0 + ldrh r0, [r0] + mov r8, r0 + ldr r4, _08056B18 @ =gUnk_02024030 + lsls r1, r1, #1 + adds r4, #8 + adds r1, r1, r4 + ldrh r0, [r1] + mov r1, sb + strh r0, [r1] + adds r6, r7, #0 + adds r6, #0x50 + movs r0, #0 + adds r1, r6, #0 + bl sub_0805F8E4 + lsls r5, r5, #1 + adds r5, r5, r4 + ldrh r0, [r5] + mov r1, sb + strh r0, [r1] + movs r0, #1 + adds r1, r6, #0 + bl sub_0805F8E4 + mov r1, r8 + mov r0, sb + strh r1, [r0] + adds r1, r7, #0 + adds r1, #0x9d + movs r0, #1 + strb r0, [r1] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08056B14: .4byte gUnk_02022780 +_08056B18: .4byte gUnk_02024030 + + thumb_func_start sub_08056B1C +sub_08056B1C: @ 0x08056B1C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _08056B44 @ =gUnk_02000050 + movs r0, #0 + strb r0, [r1, #1] + adds r1, r4, #0 + adds r1, #0x94 + ldrb r0, [r1] + adds r5, r0, #0 + cmp r5, #0 + beq _08056B48 + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08056B7A + subs r1, #0xb + movs r0, #4 + b _08056B78 + .align 2, 0 +_08056B44: .4byte gUnk_02000050 +_08056B48: + ldr r0, _08056B68 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + ldr r0, _08056B6C @ =0x000001F3 + ands r0, r1 + cmp r0, #0 + beq _08056B70 + movs r0, #0x68 + bl sub_080A3268 + adds r0, r4, #0 + adds r0, #0x9a + strb r5, [r0] + adds r1, r4, #0 + adds r1, #0x89 + movs r0, #4 + b _08056B78 + .align 2, 0 +_08056B68: .4byte gUnk_03000FF0 +_08056B6C: .4byte 0x000001F3 +_08056B70: + adds r1, r4, #0 + adds r1, #0x9a + ldrb r0, [r1] + adds r0, #1 +_08056B78: + strb r0, [r1] +_08056B7A: + pop {r4, r5, pc} + + thumb_func_start sub_08056B7C +sub_08056B7C: @ 0x08056B7C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_08056BDC + adds r0, r4, #0 + adds r0, #0x8f + ldrb r0, [r0] + movs r1, #0x40 + orrs r1, r0 + adds r0, r4, #0 + bl sub_080569C4 + adds r4, #0x89 + movs r0, #1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08056BA0 +sub_08056BA0: @ 0x08056BA0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08056BD0 @ =gUnk_02000050 + movs r0, #0 + strb r0, [r1, #1] + movs r0, #7 + bl sub_08056C54 + adds r4, #0x8e + ldrb r0, [r4] + cmp r0, #1 + beq _08056BCE + cmp r0, #2 + beq _08056BC8 + ldr r0, _08056BD4 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + ldr r0, _08056BD8 @ =0x000001F3 + ands r0, r1 + cmp r0, #0 + beq _08056BCE +_08056BC8: + movs r0, #4 + bl sub_080564C8 +_08056BCE: + pop {r4, pc} + .align 2, 0 +_08056BD0: .4byte gUnk_02000050 +_08056BD4: .4byte gUnk_03000FF0 +_08056BD8: .4byte 0x000001F3 + + thumb_func_start sub_08056BDC +sub_08056BDC: @ 0x08056BDC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08056C24 @ =gUnk_02022780 + adds r0, r4, #0 + adds r0, #0x98 + strb r5, [r0] + cmp r5, #0 + bne _08056C30 + movs r0, #1 + rsbs r0, r0, #0 + ldr r1, _08056C28 @ =gUnk_02000D00 + movs r2, #0xd0 + lsls r2, r2, #4 + bl sub_0801D610 + bl sub_08056F70 + adds r1, r4, #0 + adds r1, #0x9e + ldr r0, _08056C2C @ =0x0000F082 + strh r0, [r1] + adds r1, #2 + adds r0, #1 + strh r0, [r1] + adds r1, #2 + adds r0, #0x33 + strh r0, [r1] + adds r1, #2 + adds r0, #1 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x56 + strh r5, [r0] + subs r1, #0x50 + movs r0, #0xd0 + b _08056C3C + .align 2, 0 +_08056C24: .4byte gUnk_02022780 +_08056C28: .4byte gUnk_02000D00 +_08056C2C: .4byte 0x0000F082 +_08056C30: + adds r1, r4, #0 + adds r1, #0x56 + movs r0, #0xd0 + strh r0, [r1] + subs r1, #2 + adds r0, #0xd0 +_08056C3C: + strh r0, [r1] + ldr r0, _08056C50 @ =gUnk_02022780 + adds r1, r0, #0 + adds r1, #0x8f + ldrb r2, [r1] + movs r1, #0x40 + orrs r1, r2 + bl sub_080569C4 + pop {r4, r5, pc} + .align 2, 0 +_08056C50: .4byte gUnk_02022780 + + thumb_func_start sub_08056C54 +sub_08056C54: @ 0x08056C54 + ldr r2, _08056C60 @ =gUnk_02000050 + ldr r1, _08056C64 @ =gUnk_02022780 + strb r0, [r1] + strb r0, [r2] + bx lr + .align 2, 0 +_08056C60: .4byte gUnk_02000050 +_08056C64: .4byte gUnk_02022780 + + thumb_func_start sub_08056C68 +sub_08056C68: @ 0x08056C68 + push {r4, r5, r6, lr} + ldr r5, _08056CB8 @ =gUnk_02036A38 + ldrb r0, [r5, #1] + cmp r0, #0 + beq _08056CB4 + movs r0, #0 + strb r0, [r5, #1] + ldrb r0, [r5, #5] + lsls r0, r0, #5 + ldrb r1, [r5, #4] + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _08056CBC @ =gUnk_02034CB0 + adds r1, r0, r1 + ldrb r0, [r5, #7] + adds r0, #2 + movs r6, #0 +_08056C8A: + movs r2, #0 + adds r4, r1, #0 + adds r4, #0x40 + subs r3, r0, #1 +_08056C92: + strh r6, [r1] + adds r1, #2 + adds r2, #1 + ldrb r0, [r5, #6] + adds r0, #2 + cmp r2, r0 + blt _08056C92 + adds r1, r4, #0 + adds r0, r3, #0 + cmp r0, #0 + bgt _08056C8A + ldrb r0, [r5, #5] + ldrb r1, [r5, #7] + bl sub_0801C4A0 + bl sub_0801C494 +_08056CB4: + pop {r4, r5, r6, pc} + .align 2, 0 +_08056CB8: .4byte gUnk_02036A38 +_08056CBC: .4byte gUnk_02034CB0 + + thumb_func_start sub_08056CC0 +sub_08056CC0: @ 0x08056CC0 + push {r4, r5, r6, r7, lr} + movs r7, #0 + ldr r2, _08056CE0 @ =gUnk_02022780 + adds r3, r2, #0 + adds r3, #0x9b + ldrb r1, [r3] + adds r1, r1, r0 + strb r1, [r3] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov ip, r2 + cmp r1, #0 + bgt _08056CE4 + strb r7, [r3] + b _08056CEC + .align 2, 0 +_08056CE0: .4byte gUnk_02022780 +_08056CE4: + cmp r1, #7 + ble _08056CEE + movs r0, #8 + strb r0, [r3] +_08056CEC: + movs r7, #1 +_08056CEE: + ldr r2, _08056D54 @ =gUnk_02036A40 + mov r4, ip + adds r1, r4, #0 + adds r1, #0x9b + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08056D58 + adds r5, r0, #0 + ldrb r0, [r4, #4] + lsls r0, r0, #1 + muls r0, r5, r0 + lsrs r3, r0, #4 + strb r3, [r2, #6] + movs r6, #1 + adds r0, r3, #0 + ands r0, r6 + ldrb r1, [r4, #4] + cmp r0, #0 + beq _08056D1A + adds r0, r3, #1 + strb r0, [r2, #6] +_08056D1A: + lsrs r1, r1, #1 + ldrb r0, [r4, #6] + adds r1, r1, r0 + ldrb r0, [r2, #6] + lsrs r0, r0, #1 + subs r1, r1, r0 + strb r1, [r2, #4] + ldrb r0, [r4, #5] + lsls r0, r0, #1 + muls r0, r5, r0 + lsrs r3, r0, #4 + strb r3, [r2, #7] + adds r0, r3, #0 + ands r0, r6 + ldrb r1, [r4, #5] + cmp r0, #0 + beq _08056D40 + adds r0, r3, #1 + strb r0, [r2, #7] +_08056D40: + lsrs r1, r1, #1 + mov r3, ip + ldrb r3, [r3, #7] + adds r1, r1, r3 + ldrb r0, [r2, #7] + lsrs r0, r0, #1 + subs r1, r1, r0 + strb r1, [r2, #5] + b _08056D66 + .align 2, 0 +_08056D54: .4byte gUnk_02036A40 +_08056D58: + movs r0, #0xff + strb r0, [r2, #5] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r2, #4] + strb r0, [r2, #7] + strb r0, [r2, #6] +_08056D66: + movs r0, #1 + strb r0, [r2, #1] + adds r0, r7, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08056D70 +sub_08056D70: @ 0x08056D70 + push {r4, lr} + ldr r0, _08056DB4 @ =gUnk_02022780 + adds r0, #0x9b + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08056DB0 + ldr r4, _08056DB8 @ =gUnk_02036A40 + ldrb r0, [r4, #5] + lsls r0, r0, #5 + ldrb r1, [r4, #4] + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _08056DBC @ =gUnk_02034CB0 + adds r0, r0, r1 + ldr r3, _08056DC0 @ =0x0000F07B + ldrb r1, [r4, #6] + ldrb r2, [r4, #7] + bl sub_08056DC8 + bl sub_08056EC0 + bl sub_08056F1C + ldr r2, _08056DC4 @ =gUnk_02036A38 + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r2] + str r1, [r2, #4] + bl sub_0801C494 +_08056DB0: + pop {r4, pc} + .align 2, 0 +_08056DB4: .4byte gUnk_02022780 +_08056DB8: .4byte gUnk_02036A40 +_08056DBC: .4byte gUnk_02034CB0 +_08056DC0: .4byte 0x0000F07B +_08056DC4: .4byte gUnk_02036A38 + + thumb_func_start sub_08056DC8 +sub_08056DC8: @ 0x08056DC8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov r8, r3 + adds r3, r7, #0 + lsls r0, r6, #6 + adds r0, #0x40 + adds r2, r3, r0 + mov r0, r8 + strh r0, [r3] + adds r3, #2 + movs r1, #0x80 + lsls r1, r1, #4 + mov sb, r1 + mov r0, r8 + mov r5, sb + orrs r0, r5 + strh r0, [r2] + adds r2, #2 + cmp r4, #0 + ble _08056E4C + mov r0, r8 + adds r0, #1 + strh r0, [r3] + adds r3, #2 + adds r1, r0, #0 + orrs r1, r5 + strh r1, [r2] + adds r2, #2 + subs r4, #2 + adds r1, r4, #0 + subs r4, #1 + mov ip, r0 + cmp r1, #0 + ble _08056E30 + mov r5, r8 + adds r5, #2 + adds r1, r5, #0 + mov r0, sb + orrs r1, r0 +_08056E20: + strh r5, [r3] + adds r3, #2 + strh r1, [r2] + adds r2, #2 + adds r0, r4, #0 + subs r4, #1 + cmp r0, #0 + bgt _08056E20 +_08056E30: + movs r1, #0x80 + lsls r1, r1, #3 + adds r0, r1, #0 + mov r1, ip + orrs r1, r0 + strh r1, [r3] + adds r3, #2 + movs r5, #0xc0 + lsls r5, r5, #4 + adds r0, r5, #0 + mov r1, ip + orrs r1, r0 + strh r1, [r2] + adds r2, #2 +_08056E4C: + movs r0, #0x80 + lsls r0, r0, #3 + adds r5, r0, #0 + mov r0, r8 + orrs r0, r5 + strh r0, [r3] + movs r0, #0xc0 + lsls r0, r0, #4 + adds r1, r0, #0 + mov r0, r8 + orrs r0, r1 + strh r0, [r2] + adds r7, #0x40 + adds r3, #0x40 + cmp r6, #0 + ble _08056EB6 + mov r0, r8 + adds r0, #3 + strh r0, [r7] + adds r1, r0, #0 + orrs r1, r5 + strh r1, [r3] + adds r7, #0x40 + adds r3, #0x40 + subs r6, #2 + adds r1, r6, #0 + subs r6, #1 + adds r2, r0, #0 + cmp r1, #0 + ble _08056EA0 + mov r4, r8 + adds r4, #4 + adds r1, r4, #0 + orrs r1, r5 +_08056E90: + strh r4, [r7] + strh r1, [r3] + adds r7, #0x40 + adds r3, #0x40 + adds r0, r6, #0 + subs r6, #1 + cmp r0, #0 + bgt _08056E90 +_08056EA0: + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r1, #0 + adds r1, r2, #0 + orrs r1, r0 + strh r1, [r7] + movs r5, #0xc0 + lsls r5, r5, #4 + adds r0, r5, #0 + orrs r2, r0 + strh r2, [r3] +_08056EB6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08056EC0 +sub_08056EC0: @ 0x08056EC0 + push {r4, r5, r6, r7, lr} + ldr r6, _08056F10 @ =gUnk_02036A40 + ldrb r0, [r6, #6] + cmp r0, #0 + beq _08056F0E + ldrb r0, [r6, #7] + cmp r0, #0 + beq _08056F0E + adds r4, r0, #0 + ldrb r0, [r6, #5] + lsls r0, r0, #5 + ldrb r1, [r6, #4] + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, _08056F14 @ =gUnk_02034CB2 + adds r5, r0, r1 + movs r0, #4 + subs r0, r0, r4 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r1, r0, #1 + ldr r7, _08056F18 @ =gUnk_0202281E +_08056EEC: + ldrb r3, [r6, #6] + lsls r0, r1, #1 + adds r0, r0, r7 + ldrh r2, [r0] + adds r5, #0x40 + adds r0, r1, #1 + subs r4, #1 + adds r1, r5, #0 +_08056EFC: + strh r2, [r1] + adds r1, #2 + adds r2, #2 + subs r3, #1 + cmp r3, #0 + bgt _08056EFC + adds r1, r0, #0 + cmp r4, #0 + bne _08056EEC +_08056F0E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08056F10: .4byte gUnk_02036A40 +_08056F14: .4byte gUnk_02034CB2 +_08056F18: .4byte gUnk_0202281E + + thumb_func_start sub_08056F1C +sub_08056F1C: @ 0x08056F1C + push {lr} + ldr r0, _08056F58 @ =gUnk_02022780 + adds r0, #0x98 + ldr r0, [r0] + ldr r1, _08056F5C @ =0x0010FF00 + ands r0, r1 + ldr r1, _08056F60 @ =0x00100200 + cmp r0, r1 + bne _08056F54 + ldr r2, _08056F64 @ =gUnk_02036A40 + ldrb r1, [r2, #5] + lsls r1, r1, #5 + ldrb r0, [r2, #4] + adds r1, r1, r0 + lsls r1, r1, #1 + ldr r0, _08056F68 @ =gUnk_02034CB0 + adds r1, r1, r0 + ldrb r0, [r2, #7] + adds r0, #1 + lsls r0, r0, #5 + subs r0, #2 + ldrb r2, [r2, #6] + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r2, _08056F6C @ =0x0000F080 + adds r0, r2, #0 + strh r0, [r1] +_08056F54: + pop {pc} + .align 2, 0 +_08056F58: .4byte gUnk_02022780 +_08056F5C: .4byte 0x0010FF00 +_08056F60: .4byte 0x00100200 +_08056F64: .4byte gUnk_02036A40 +_08056F68: .4byte gUnk_02034CB0 +_08056F6C: .4byte 0x0000F080 + + thumb_func_start sub_08056F70 +sub_08056F70: @ 0x08056F70 + push {lr} + ldr r0, _08056F80 @ =gUnk_02000D00 + ldr r1, _08056F84 @ =0x0600D040 + movs r2, #0xd0 + lsls r2, r2, #4 + bl sub_08000E96 + pop {pc} + .align 2, 0 +_08056F80: .4byte gUnk_02000D00 +_08056F84: .4byte 0x0600D040 + + thumb_func_start sub_08056F88 +sub_08056F88: @ 0x08056F88 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + cmp r3, #0xf + bls _08056F94 + movs r3, #0 +_08056F94: + lsls r2, r3, #4 + orrs r2, r4 + ldr r0, _08056FB4 @ =gUnk_02022780 + adds r1, r0, #0 + adds r1, #0x9c + ldrb r0, [r1] + cmp r0, r2 + beq _08056FB0 + strb r2, [r1] + ldr r2, _08056FB8 @ =0x0600CF60 + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_0805F918 +_08056FB0: + pop {r4, pc} + .align 2, 0 +_08056FB4: .4byte gUnk_02022780 +_08056FB8: .4byte 0x0600CF60 + + thumb_func_start sub_08056FBC +sub_08056FBC: @ 0x08056FBC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x68 + bl sub_08056FEC + ldr r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x70 + bl sub_08056FEC + ldr r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x78 + bl sub_08056FEC + ldr r0, [r4, #0x1c] + adds r1, r4, #0 + adds r1, #0x80 + bl sub_08056FEC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08056FEC +sub_08056FEC: @ 0x08056FEC + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r2, r0, #0 + adds r5, r1, #0 + bl sub_0801D51C + adds r2, r0, #0 + ldr r0, _08057040 @ =0x0FFFFFFF + ands r2, r0 + movs r4, #0 + movs r3, #0xf +_08057002: + mov r0, sp + adds r1, r0, r4 + adds r0, r2, #0 + ands r0, r3 + strb r0, [r1] + adds r4, #1 + lsrs r2, r2, #4 + cmp r2, #0 + bne _08057002 + movs r3, #0 + subs r2, r4, #1 + cmp r2, #0 + blt _08057032 + movs r6, #0x30 +_0805701E: + adds r1, r5, r3 + mov r7, sp + adds r0, r7, r2 + ldrb r0, [r0] + orrs r0, r6 + strb r0, [r1] + adds r3, #1 + subs r2, #1 + cmp r2, #0 + bge _0805701E +_08057032: + adds r1, r5, r3 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + add sp, #8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08057040: .4byte 0x0FFFFFFF + + thumb_func_start sub_08057044 +sub_08057044: @ 0x08057044 + push {r4, r5, lr} + sub sp, #8 + adds r5, r1, #0 + adds r4, r2, #0 + mov r1, sp + bl sub_08056FEC + ldr r2, [sp] + movs r1, #3 + subs r1, r1, r0 + lsls r1, r1, #3 + lsls r2, r1 + orrs r2, r4 + str r2, [r5] + add sp, #8 + pop {r4, r5, pc} + + thumb_func_start sub_08057064 +sub_08057064: @ 0x08057064 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _080570AC @ =gUnk_08107C5C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r1, _080570B0 @ =gUnk_08107C48 + adds r5, r4, #0 + adds r5, #0x21 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r1, _080570B4 @ =gUnk_08107C40 + ldrb r0, [r5] + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #0 + beq _080570AA + adds r2, r4, #0 + adds r2, #0x20 + ldrb r0, [r2] + cmp r0, r1 + beq _080570AA + strb r1, [r2] + adds r0, r1, #0 + bl sub_0801D7EC +_080570AA: + pop {r4, r5, pc} + .align 2, 0 +_080570AC: .4byte gUnk_08107C5C +_080570B0: .4byte gUnk_08107C48 +_080570B4: .4byte gUnk_08107C40 + + thumb_func_start sub_080570B8 +sub_080570B8: @ 0x080570B8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x20 + ldrb r0, [r0] + bl sub_0801D7EC + movs r0, #0 + str r0, [r4, #0x34] + adds r1, r4, #0 + adds r1, #0x21 + ldrb r0, [r1] + cmp r0, #3 + bne _080570E0 + ldr r1, _080570DC @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0x32] + b _080570F0 + .align 2, 0 +_080570DC: .4byte gUnk_03000F50 +_080570E0: + ldr r0, _080570F4 @ =gUnk_08107C48 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_080570F0: + pop {r4, pc} + .align 2, 0 +_080570F4: .4byte gUnk_08107C48 + + thumb_func_start sub_080570F8 +sub_080570F8: @ 0x080570F8 + push {lr} + ldr r1, _08057110 @ =gUnk_03000F50 + ldrh r2, [r1] + ldr r0, _08057114 @ =0x0000F7FF + ands r0, r2 + movs r2, #0 + strh r0, [r1] + adds r1, #0x66 + strh r2, [r1] + bl sub_08056250 + pop {pc} + .align 2, 0 +_08057110: .4byte gUnk_03000F50 +_08057114: .4byte 0x0000F7FF + + thumb_func_start sub_08057118 +sub_08057118: @ 0x08057118 + push {r4, lr} + adds r3, r0, #0 + movs r1, #0 + strb r1, [r3, #0xe] + adds r0, #0x20 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + movs r0, #1 + strb r0, [r3, #0xc] + ldr r1, _08057160 @ =gUnk_03000F50 + ldr r0, _08057164 @ =0x00001E04 + strh r0, [r1, #0x2c] + ldrh r0, [r1] + movs r4, #0x80 + lsls r4, r4, #4 + adds r2, r4, #0 + orrs r0, r2 + strh r0, [r1] + adds r2, r1, #0 + adds r2, #0x66 + ldr r0, _08057168 @ =0x00003648 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + ldr r1, _0805716C @ =sub_080570B8 + ldr r2, _08057170 @ =sub_080570F8 + adds r0, r3, #0 + bl sub_08052D74 + pop {r4, pc} + .align 2, 0 +_08057160: .4byte gUnk_03000F50 +_08057164: .4byte 0x00001E04 +_08057168: .4byte 0x00003648 +_0805716C: .4byte sub_080570B8 +_08057170: .4byte sub_080570F8 + + thumb_func_start sub_08057174 +sub_08057174: @ 0x08057174 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_0804B128 + adds r3, r0, #0 + ldrb r0, [r3] + cmp r0, #0xff + bne _08057188 + b _0805728A +_08057188: + ldr r1, _080571E8 @ =gLinkEntity + movs r2, #0x2e + ldrsh r0, [r1, r2] + cmp r0, #0 + bge _08057194 + adds r0, #0xf +_08057194: + asrs r6, r0, #4 + movs r7, #0x32 + ldrsh r0, [r1, r7] + cmp r0, #0 + bge _080571A0 + adds r0, #0xf +_080571A0: + asrs r5, r0, #4 + movs r0, #0x21 + adds r0, r0, r4 + mov ip, r0 +_080571A8: + ldrb r0, [r3] + mov r1, ip + ldrb r1, [r1] + cmp r0, r1 + beq _08057282 + ldr r1, _080571EC @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + lsrs r0, r0, #4 + ldrb r7, [r3, #1] + adds r2, r0, r7 + ldrh r0, [r1, #8] + lsrs r0, r0, #4 + ldrb r1, [r3, #2] + adds r0, r0, r1 + subs r0, r5, r0 + ldrb r7, [r3, #4] + cmp r0, r7 + bhs _08057282 + subs r0, r6, r2 + ldrb r1, [r3, #3] + cmp r0, r1 + bhs _08057282 + ldrb r0, [r3] + subs r0, #1 + cmp r0, #5 + bhi _08057268 + lsls r0, r0, #2 + ldr r1, _080571F0 @ =_080571F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080571E8: .4byte gLinkEntity +_080571EC: .4byte gUnk_03000BF0 +_080571F0: .4byte _080571F4 +_080571F4: @ jump table + .4byte _0805720C @ case 0 + .4byte _08057220 @ case 1 + .4byte _08057258 @ case 2 + .4byte _08057246 @ case 3 + .4byte _08057216 @ case 4 + .4byte _08057236 @ case 5 +_0805720C: + mov r2, ip + ldrb r0, [r2] + cmp r0, #2 + bne _08057268 + b _08057260 +_08057216: + mov r7, ip + ldrb r0, [r7] + cmp r0, #6 + bne _08057268 + b _08057260 +_08057220: + mov r0, ip + ldrb r1, [r0] + cmp r1, #0 + bne _08057268 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x20 + strb r1, [r0] + b _08057268 +_08057236: + mov r2, ip + ldrb r1, [r2] + cmp r1, #0 + bne _08057268 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + b _08057268 +_08057246: + mov r7, ip + ldrb r1, [r7] + cmp r1, #0 + bne _08057268 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + str r1, [r4, #0x34] + b _08057268 +_08057258: + mov r1, ip + ldrb r0, [r1] + cmp r0, #4 + bne _08057268 +_08057260: + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #9 + strb r0, [r4, #0xe] +_08057268: + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08057282 + movs r0, #8 + strb r0, [r4, #0xf] + ldrb r0, [r3] + mov r2, ip + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #1 + strb r0, [r1] + b _0805728A +_08057282: + adds r3, #5 + ldrb r0, [r3] + cmp r0, #0xff + bne _080571A8 +_0805728A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805728C +sub_0805728C: @ 0x0805728C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080572CA + movs r0, #8 + strb r0, [r4, #0xf] + ldr r2, _080572CC @ =gUnk_03000F50 + ldr r3, _080572D0 @ =gUnk_08107C1C + ldrb r0, [r4, #0xe] + adds r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r3 + ldrh r0, [r0] + adds r2, #0x68 + strh r0, [r2] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0xa + bne _080572CA + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #0 + strb r0, [r1] +_080572CA: + pop {r4, pc} + .align 2, 0 +_080572CC: .4byte gUnk_03000F50 +_080572D0: .4byte gUnk_08107C1C + + thumb_func_start sub_080572D4 +sub_080572D4: @ 0x080572D4 + push {r4, r5, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xf] + subs r0, #1 + strb r0, [r3, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08057320 + movs r0, #8 + strb r0, [r3, #0xf] + ldr r5, _08057324 @ =gUnk_03000F50 + ldr r2, _08057328 @ =gUnk_08107C1C + ldrb r0, [r3, #0xe] + adds r1, r0, #0 + adds r1, #0xff + strb r1, [r3, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r2 + ldrh r2, [r0] + adds r0, r5, #0 + adds r0, #0x68 + movs r4, #0 + strh r2, [r0] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0xff + bne _08057320 + movs r0, #1 + strb r0, [r3, #0xc] + adds r0, r3, #0 + adds r0, #0x22 + strb r4, [r0] + subs r0, #1 + strb r4, [r0] + adds r0, r5, #0 + adds r0, #0x6c + strb r4, [r0] +_08057320: + pop {r4, r5, pc} + .align 2, 0 +_08057324: .4byte gUnk_03000F50 +_08057328: .4byte gUnk_08107C1C + + thumb_func_start sub_0805732C +sub_0805732C: @ 0x0805732C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + adds r5, r1, #0 + ldr r2, _08057390 @ =gUnk_03003DE4 + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _08057394 @ =gUnk_02017AA0 + adds r4, r0, r1 + movs r3, #0 + mov ip, r2 + mov r8, r1 + ldr r0, _08057398 @ =gUnk_080C9160 + mov sb, r0 + movs r2, #0xff + ldr r1, _0805739C @ =gUnk_03000F50 +_08057354: + adds r0, r5, r3 + ands r0, r2 + lsls r0, r0, #1 + add r0, sb + movs r7, #0 + ldrsh r0, [r0, r7] + muls r0, r6, r0 + lsrs r0, r0, #8 + ldrh r7, [r1, #0x2e] + adds r0, r0, r7 + strh r0, [r4] + adds r4, #2 + adds r3, #1 + cmp r3, #0x9f + bls _08057354 + mov r0, ip + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + add r0, r8 + ldr r1, _080573A0 @ =0x0400001C + ldr r2, _080573A4 @ =0xA2600001 + bl sub_0805622C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08057390: .4byte gUnk_03003DE4 +_08057394: .4byte gUnk_02017AA0 +_08057398: .4byte gUnk_080C9160 +_0805739C: .4byte gUnk_03000F50 +_080573A0: .4byte 0x0400001C +_080573A4: .4byte 0xA2600001 + + thumb_func_start nullsub_494 +nullsub_494: @ 0x080573A8 + bx lr + .align 2, 0 + + thumb_func_start sub_080573AC +sub_080573AC: @ 0x080573AC + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r2, _08057434 @ =gUnk_03000BF0 + ldr r0, [r2, #0x28] + ldr r1, _08057438 @ =0xFFFFE000 + adds r0, r0, r1 + str r0, [r2, #0x28] + ldr r0, [r2, #0x2c] + ldr r1, _0805743C @ =0xFFFFF000 + adds r0, r0, r1 + str r0, [r2, #0x2c] + ldr r5, _08057440 @ =gUnk_03000F50 + movs r1, #0xa + ldrsh r0, [r2, r1] + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #1 + ldrh r1, [r2, #0x2a] + adds r0, r0, r1 + strh r0, [r5, #0x2e] + movs r1, #0xc + ldrsh r0, [r2, r1] + ldrh r1, [r2, #8] + subs r0, r0, r1 + asrs r0, r0, #1 + ldrh r2, [r2, #0x2e] + adds r0, r0, r2 + strh r0, [r5, #0x30] + ldr r2, _08057444 @ =gUnk_080C9160 + ldr r4, _08057448 @ =gUnk_030010A0 + ldr r1, [r4] + ldrb r0, [r4] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsh r0, [r0, r2] + asrs r0, r0, #5 + adds r0, #0x10 + bl sub_0805732C + adds r0, r6, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0 + bne _08057430 + ldr r0, [r4] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _08057430 + adds r2, r6, #0 + adds r2, #0x24 + ldrb r0, [r2] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r2] + ldr r1, _0805744C @ =gUnk_08107C30 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r5, #0 + adds r0, #0x68 + strh r1, [r0] +_08057430: + pop {r4, r5, r6, pc} + .align 2, 0 +_08057434: .4byte gUnk_03000BF0 +_08057438: .4byte 0xFFFFE000 +_0805743C: .4byte 0xFFFFF000 +_08057440: .4byte gUnk_03000F50 +_08057444: .4byte gUnk_080C9160 +_08057448: .4byte gUnk_030010A0 +_0805744C: .4byte gUnk_08107C30 + + thumb_func_start sub_08057450 +sub_08057450: @ 0x08057450 + push {r4, r5, r6, lr} + adds r3, r0, #0 + ldr r4, _08057504 @ =gUnk_03000F50 + movs r0, #0x10 + strh r0, [r4, #0x2e] + ldr r0, _08057508 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r1, [r0, r2] + ldrh r0, [r0, #8] + subs r1, r1, r0 + asrs r1, r1, #2 + movs r2, #0x3f + adds r0, r1, #0 + ands r0, r2 + strh r0, [r4, #0x30] + cmp r1, #0 + bge _08057474 + adds r1, #0x3f +_08057474: + asrs r0, r1, #6 + lsls r0, r0, #9 + ldr r1, _0805750C @ =gUnk_02001A40 + adds r1, r0, r1 + str r1, [r4, #0x34] + ldr r0, [r3, #0x34] + cmp r0, r1 + beq _0805748A + str r1, [r3, #0x34] + movs r0, #1 + strh r0, [r4, #0x32] +_0805748A: + adds r0, r3, #0 + adds r0, #0x22 + ldrb r0, [r0] + ldr r5, _08057510 @ =gUnk_030010A0 + cmp r0, #0 + bne _080574BE + ldr r0, [r5] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _080574BE + adds r2, r3, #0 + adds r2, #0x24 + ldrb r0, [r2] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r2] + ldr r1, _08057514 @ =gUnk_08107C30 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] +_080574BE: + ldr r0, [r5] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08057502 + adds r0, r3, #0 + adds r0, #0x23 + ldrb r1, [r0] + lsls r1, r1, #5 + ldr r2, _08057518 @ =gUnk_085B4180 + adds r1, r1, r2 + movs r5, #0 + adds r6, r0, #0 + adds r4, r1, #0 + adds r4, #0xe +_080574DC: + adds r0, r5, #0 + adds r0, #0x87 + ldrh r1, [r4] + bl sub_0801D79C + adds r0, r5, #0 + adds r0, #0x8c + ldrh r1, [r4, #0xa] + bl sub_0801D79C + adds r4, #2 + adds r5, #1 + cmp r5, #3 + bls _080574DC + ldrb r0, [r6] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r6] +_08057502: + pop {r4, r5, r6, pc} + .align 2, 0 +_08057504: .4byte gUnk_03000F50 +_08057508: .4byte gUnk_03000BF0 +_0805750C: .4byte gUnk_02001A40 +_08057510: .4byte gUnk_030010A0 +_08057514: .4byte gUnk_08107C30 +_08057518: .4byte gUnk_085B4180 + + thumb_func_start sub_0805751C +sub_0805751C: @ 0x0805751C + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _0805753A + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _08057544 @ =gUnk_03000F50 + strh r1, [r0, #0x32] + strh r1, [r0, #0x1a] + ldr r1, _08057548 @ =sub_080576A0 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_0805753A: + adds r0, r4, #0 + bl sub_0805754C + pop {r4, pc} + .align 2, 0 +_08057544: .4byte gUnk_03000F50 +_08057548: .4byte sub_080576A0 + + thumb_func_start sub_0805754C +sub_0805754C: @ 0x0805754C + push {r4, r5, r6, lr} + adds r2, r0, #0 + ldr r3, _080575BC @ =gUnk_03000BF0 + movs r0, #0xc + ldrsh r1, [r3, r0] + ldrh r0, [r3, #8] + subs r1, r1, r0 + asrs r0, r1, #3 + adds r1, r1, r0 + ldr r4, _080575C0 @ =gUnk_03000F50 + movs r6, #0x3f + adds r0, r1, #0 + ands r0, r6 + strh r0, [r4, #0x30] + adds r0, r1, #0 + cmp r1, #0 + bge _08057570 + adds r0, #0x3f +_08057570: + asrs r0, r0, #6 + lsls r0, r0, #9 + ldr r5, _080575C4 @ =gUnk_02002F00 + adds r1, r0, r5 + str r1, [r4, #0x34] + ldr r0, [r2, #0x38] + cmp r0, r1 + beq _08057586 + str r1, [r2, #0x38] + movs r0, #1 + strh r0, [r4, #0x32] +_08057586: + movs r0, #0xc + ldrsh r1, [r3, r0] + ldrh r0, [r3, #8] + subs r1, r1, r0 + asrs r0, r1, #2 + adds r1, r1, r0 + adds r0, r1, #0 + ands r0, r6 + strh r0, [r4, #0x18] + adds r0, r1, #0 + cmp r0, #0 + bge _080575A0 + adds r0, #0x3f +_080575A0: + asrs r0, r0, #6 + lsls r0, r0, #9 + movs r3, #0x80 + lsls r3, r3, #6 + adds r1, r5, r3 + adds r1, r0, r1 + str r1, [r4, #0x1c] + ldr r0, [r2, #0x3c] + cmp r0, r1 + beq _080575BA + str r1, [r2, #0x3c] + movs r0, #1 + strh r0, [r4, #0x1a] +_080575BA: + pop {r4, r5, r6, pc} + .align 2, 0 +_080575BC: .4byte gUnk_03000BF0 +_080575C0: .4byte gUnk_03000F50 +_080575C4: .4byte gUnk_02002F00 + + thumb_func_start sub_080575C8 +sub_080575C8: @ 0x080575C8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _08057664 @ =gUnk_0200B650 + movs r5, #0 + str r5, [r0] + movs r0, #0x80 + lsls r0, r0, #0x13 + strh r5, [r0] + adds r0, r4, #0 + bl sub_0801D7EC + ldr r0, _08057668 @ =gUnk_02034350 + strb r4, [r0, #0x10] + ldr r3, _0805766C @ =gUnk_03000BF0 + movs r0, #0xc + ldrsh r1, [r3, r0] + ldrh r0, [r3, #8] + subs r1, r1, r0 + asrs r0, r1, #3 + adds r1, r1, r0 + ldr r2, _08057670 @ =gUnk_03000F50 + movs r7, #0x3f + adds r0, r1, #0 + ands r0, r7 + strh r0, [r2, #0x30] + strh r5, [r2, #0x2e] + adds r0, r1, #0 + cmp r1, #0 + bge _08057604 + adds r0, #0x3f +_08057604: + asrs r0, r0, #6 + lsls r0, r0, #9 + ldr r4, _08057674 @ =gUnk_02002F00 + adds r0, r0, r4 + str r0, [r2, #0x34] + ldr r0, _08057678 @ =0x00001D49 + strh r0, [r2, #0x2c] + movs r6, #1 + strh r6, [r2, #0x32] + movs r0, #0xc + ldrsh r1, [r3, r0] + ldrh r0, [r3, #8] + subs r1, r1, r0 + asrs r0, r1, #2 + adds r1, r1, r0 + adds r0, r1, #0 + ands r0, r7 + strh r0, [r2, #0x18] + strh r5, [r2, #0x16] + adds r0, r1, #0 + cmp r0, #0 + bge _08057632 + adds r0, #0x3f +_08057632: + asrs r0, r0, #6 + lsls r0, r0, #9 + movs r3, #0x80 + lsls r3, r3, #6 + adds r1, r4, r3 + adds r0, r0, r1 + str r0, [r2, #0x1c] + ldr r0, _0805767C @ =0x00001E49 + strh r0, [r2, #0x14] + strh r6, [r2, #0x1a] + adds r1, r2, #0 + adds r1, #0x66 + ldr r0, _08057680 @ =0x00003C48 + strh r0, [r1] + adds r1, #2 + ldr r0, _08057684 @ =0x00000609 + strh r0, [r1] + ldrh r0, [r2] + movs r3, #0xa0 + lsls r3, r3, #4 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08057664: .4byte gUnk_0200B650 +_08057668: .4byte gUnk_02034350 +_0805766C: .4byte gUnk_03000BF0 +_08057670: .4byte gUnk_03000F50 +_08057674: .4byte gUnk_02002F00 +_08057678: .4byte 0x00001D49 +_0805767C: .4byte 0x00001E49 +_08057680: .4byte 0x00003C48 +_08057684: .4byte 0x00000609 + + thumb_func_start sub_08057688 +sub_08057688: @ 0x08057688 + ldr r0, _08057694 @ =gUnk_03000F50 + ldr r1, _08057698 @ =0x00001D48 + strh r1, [r0, #0x2c] + ldr r1, _0805769C @ =0x00001E48 + strh r1, [r0, #0x14] + bx lr + .align 2, 0 +_08057694: .4byte gUnk_03000F50 +_08057698: .4byte 0x00001D48 +_0805769C: .4byte 0x00001E48 + + thumb_func_start sub_080576A0 +sub_080576A0: @ 0x080576A0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080576BC @ =gUnk_02034350 + ldrb r0, [r0, #0x10] + bl sub_0801D7EC + movs r0, #0 + str r0, [r4, #0x38] + str r0, [r4, #0x3c] + adds r0, r4, #0 + bl sub_0805754C + pop {r4, pc} + .align 2, 0 +_080576BC: .4byte gUnk_02034350 + + thumb_func_start sub_080576C0 +sub_080576C0: @ 0x080576C0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080576EC + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x38] + ldr r2, _080576E8 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r0, r0, r1 + subs r0, #0x20 + str r0, [r4, #0x20] + ldrh r0, [r4, #0x3a] + ldrh r1, [r2, #8] + adds r0, r0, r1 + subs r0, #0x20 + str r0, [r4, #0x24] + b _080577AA + .align 2, 0 +_080576E8: .4byte gUnk_03000BF0 +_080576EC: + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x24] + movs r2, #0x40 + movs r3, #0x40 + bl sub_0806FBFC + cmp r0, #0 + beq _080577A8 + ldr r5, _08057738 @ =gUnk_02033A90 + ldr r0, [r4, #0x20] + adds r0, #0x20 + strh r0, [r5, #0x12] + ldr r1, [r4, #0x24] + ldr r2, _0805773C @ =gUnk_08107C6C + ldrb r0, [r4, #0xa] + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #0x20 + adds r1, r1, r0 + strh r1, [r5, #0x14] + adds r0, r4, #0 + adds r0, #0x34 + ldrb r0, [r0] + strb r0, [r5, #0x16] + ldrb r0, [r4, #0xa] + strb r0, [r5, #0x17] + movs r0, #0x14 + bl GetProgressFlag + cmp r0, #0 + bne _08057740 + movs r0, #1 + strb r0, [r5, #0x18] + movs r0, #5 + strb r0, [r5, #0x17] + b _080577AA + .align 2, 0 +_08057738: .4byte gUnk_02033A90 +_0805773C: .4byte gUnk_08107C6C +_08057740: + ldr r2, _08057758 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0805775C + ldrb r0, [r2, #2] + cmp r0, #0 + bne _0805775C + movs r0, #2 + strb r0, [r5, #0x18] + b _0805776A + .align 2, 0 +_08057758: .4byte gUnk_03003F80 +_0805775C: + bl sub_08057810 + cmp r0, #0 + beq _0805776A + ldr r1, _080577A0 @ =gUnk_02033A90 + movs r0, #3 + strb r0, [r1, #0x18] +_0805776A: + ldrh r0, [r4, #0x38] + ldrh r1, [r4, #0x3a] + ldrb r2, [r4, #0xe] + bl sub_080002C0 + cmp r0, #0x3d + bne _080577AA + ldrh r0, [r4, #0x38] + ldr r2, _080577A4 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r0, r0, r1 + ldrh r1, [r4, #0x3a] + ldrh r2, [r2, #8] + adds r1, r1, r2 + ldrb r2, [r4, #0xe] + bl sub_080577AC + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080577AA + movs r0, #1 + strb r0, [r4, #0xf] + movs r0, #0xa9 + lsls r0, r0, #1 + bl sub_080A3268 + b _080577AA + .align 2, 0 +_080577A0: .4byte gUnk_02033A90 +_080577A4: .4byte gUnk_03000BF0 +_080577A8: + strb r0, [r4, #0xf] +_080577AA: + pop {r4, r5, pc} + + thumb_func_start sub_080577AC +sub_080577AC: @ 0x080577AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r7, r1, #0 + mov r8, r2 + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #7 + ands r0, r5 + cmp r0, #0 + bne _08057808 + movs r0, #0xf + movs r1, #0x26 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08057808 + lsrs r3, r5, #8 + movs r0, #0xf + ands r3, r0 + lsrs r2, r5, #0x10 + ands r2, r0 + cmp r2, #4 + ble _080577E6 + rsbs r2, r2, #0 +_080577E6: + lsrs r0, r5, #0x18 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080577F2 + rsbs r3, r3, #0 +_080577F2: + adds r0, r6, r3 + strh r0, [r4, #0x2e] + adds r0, r7, r2 + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x38 + mov r1, r8 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08016A04 +_08057808: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08057810 +sub_08057810: @ 0x08057810 + push {lr} + ldr r2, _08057848 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08057850 + adds r0, r2, #0 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, #0 + bne _08057850 + ldr r0, _0805784C @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + cmp r0, #6 + beq _08057850 + ldrb r0, [r2, #5] + cmp r0, #0 + bne _08057850 + adds r0, r2, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #1 + bgt _08057850 + cmp r0, #0 + blt _08057850 + movs r0, #1 + b _08057852 + .align 2, 0 +_08057848: .4byte gUnk_03003F80 +_0805784C: .4byte gUnk_02033A90 +_08057850: + movs r0, #0 +_08057852: + pop {pc} + + thumb_func_start sub_08057854 +sub_08057854: @ 0x08057854 + push {lr} + ldr r2, _08057868 @ =gUnk_08107C70 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08057868: .4byte gUnk_08107C70 + + thumb_func_start sub_0805786C +sub_0805786C: @ 0x0805786C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + bl sub_080805F8 + ldr r6, _080578D4 @ =gUnk_03004030 + ldrb r0, [r6, #8] + cmp r0, #0 + beq _08057914 + ldr r0, [r6] + cmp r0, #0 + bne _080578C0 + movs r0, #0xff + strb r0, [r6, #0xa] + ldr r0, _080578D8 @ =gUnk_03000BF0 + ldrb r5, [r0, #5] + ldr r7, _080578DC @ =gUnk_08107DC0 + ldrb r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r4, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08057AA8 + adds r4, r0, #0 + cmp r4, #0 + beq _080578C0 + ldrb r5, [r4, #5] + ldrb r0, [r4, #4] + lsls r0, r0, #2 + adds r0, r0, r7 + ldr r4, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08057AA8 + adds r4, r0, #0 + cmp r4, #0 + beq _080578C0 + str r4, [r6] +_080578C0: + ldr r0, _080578D8 @ =gUnk_03000BF0 + ldrb r5, [r0, #5] + ldr r1, _080578DC @ =gUnk_08107DC0 + ldrb r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r6, #0x81 + lsls r6, r6, #7 + b _08057906 + .align 2, 0 +_080578D4: .4byte gUnk_03004030 +_080578D8: .4byte gUnk_03000BF0 +_080578DC: .4byte gUnk_08107DC0 +_080578E0: + ldrh r1, [r4] + adds r1, #0x3f + adds r0, r6, #0 + movs r2, #1 + bl sub_0800015E + ldrh r1, [r4] + adds r1, #0x40 + adds r0, r6, #0 + movs r2, #1 + bl sub_0800015E + ldrh r1, [r4] + adds r1, #0x41 + adds r0, r6, #0 + movs r2, #1 + bl sub_0800015E + adds r4, #8 +_08057906: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08057AA8 + adds r4, r0, #0 + cmp r4, #0 + bne _080578E0 +_08057914: + movs r0, #1 + mov r1, r8 + strb r0, [r1, #0xc] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08057920 +sub_08057920: @ 0x08057920 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _08057934 @ =gUnk_03000BF0 + ldrb r5, [r0, #5] + ldr r1, _08057938 @ =gUnk_08107DC0 + ldrb r0, [r0, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + b _0805793E + .align 2, 0 +_08057934: .4byte gUnk_03000BF0 +_08057938: .4byte gUnk_08107DC0 +_0805793C: + adds r4, #8 +_0805793E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08057AA8 + adds r4, r0, #0 + cmp r4, #0 + beq _08057958 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0805795C + cmp r0, #0 + beq _0805793C +_08057958: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0805795C +sub_0805795C: @ 0x0805795C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + ldr r0, _080579BC @ =gUnk_03004030 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _080579C8 + ldr r1, _080579C0 @ =gLinkEntity + ldr r3, _080579C4 @ =gUnk_03000BF0 + ldrh r2, [r1, #0x2e] + ldrh r0, [r3, #6] + subs r2, r2, r0 + lsls r2, r2, #0x10 + lsrs r2, r2, #0x10 + ldrh r0, [r1, #0x32] + ldrh r1, [r3, #8] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldrh r3, [r6] + movs r1, #0x3f + ands r1, r3 + lsls r1, r1, #4 + adds r1, #8 + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r3 + lsls r0, r0, #0xe + movs r3, #0xc0 + lsls r3, r3, #0xd + adds r0, r0, r3 + lsrs r3, r0, #0x10 + subs r2, r2, r1 + adds r0, r2, #0 + adds r0, #0x18 + cmp r0, #0x30 + bhi _08057A14 + subs r0, r4, r3 + adds r0, #8 + cmp r0, #0x10 + bhi _08057A14 + cmp r4, r3 + bhs _08057A00 + adds r0, r2, #0 + adds r0, #0xc + cmp r0, #0x18 + bls _08057A14 + b _08057A00 + .align 2, 0 +_080579BC: .4byte gUnk_03004030 +_080579C0: .4byte gLinkEntity +_080579C4: .4byte gUnk_03000BF0 +_080579C8: + ldr r3, _08057A0C @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r3, r1] + ldr r2, _08057A10 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r1, #0x3f + ands r4, r1 + movs r0, #0x32 + ldrsh r5, [r3, r0] + ldrh r2, [r2, #8] + subs r0, r5, r2 + asrs r0, r0, #4 + ands r0, r1 + lsls r0, r0, #6 + orrs r4, r0 + ldrh r1, [r6] + cmp r4, r1 + bne _08057A14 + lsrs r0, r4, #6 + lsls r0, r0, #4 + adds r0, r2, r0 + adds r0, #6 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + cmp r5, r3 + bge _08057A14 +_08057A00: + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_08057A18 + movs r0, #1 + b _08057A16 + .align 2, 0 +_08057A0C: .4byte gLinkEntity +_08057A10: .4byte gUnk_03000BF0 +_08057A14: + movs r0, #0 +_08057A16: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08057A18 +sub_08057A18: @ 0x08057A18 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r5, r1, #0 + bl sub_0805E5A8 + ldr r6, _08057A94 @ =gUnk_03004030 + ldrb r0, [r6, #9] + strb r0, [r6, #0xa] + ldr r3, _08057A98 @ =gUnk_03000BF0 + ldrb r0, [r3, #4] + strb r0, [r6, #9] + ldr r1, _08057A9C @ =gUnk_030010A0 + ldrb r0, [r5, #4] + strb r0, [r1, #0xc] + ldrb r0, [r5, #5] + strb r0, [r1, #0xd] + ldrb r0, [r5, #4] + strb r0, [r3, #4] + ldrb r0, [r5, #5] + strb r0, [r3, #5] + str r5, [r6] + ldr r4, _08057AA0 @ =gLinkEntity + ldrh r1, [r4, #0x2e] + ldrh r0, [r3, #6] + subs r1, r1, r0 + ldrh r2, [r5] + movs r0, #0x3f + ands r0, r2 + lsls r0, r0, #4 + subs r1, r1, r0 + strh r1, [r6, #4] + ldrh r1, [r4, #0x32] + ldrh r0, [r3, #8] + subs r1, r1, r0 + ldrh r2, [r5] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r2 + lsrs r0, r0, #2 + subs r1, r1, r0 + strh r1, [r6, #6] + ldrb r1, [r6, #8] + cmp r1, #0 + bne _08057A86 + ldrb r0, [r5, #5] + movs r2, #0x80 + orrs r0, r2 + ldrb r3, [r6, #0xb] + cmp r0, r3 + beq _08057A80 + ldr r0, _08057AA4 @ =gUnk_02034480 + strh r1, [r0] +_08057A80: + ldrb r0, [r5, #5] + orrs r0, r2 + strb r0, [r6, #0xb] +_08057A86: + ldrb r0, [r5, #3] + bl sub_08080930 + adds r0, r7, #0 + bl sub_0805E900 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08057A94: .4byte gUnk_03004030 +_08057A98: .4byte gUnk_03000BF0 +_08057A9C: .4byte gUnk_030010A0 +_08057AA0: .4byte gLinkEntity +_08057AA4: .4byte gUnk_02034480 + + thumb_func_start sub_08057AA8 +sub_08057AA8: @ 0x08057AA8 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2] + ldr r3, _08057AC0 @ =0x0000FFFF + cmp r0, r3 + beq _08057ACC +_08057AB4: + ldrb r0, [r2, #2] + cmp r0, r1 + bne _08057AC4 + adds r0, r2, #0 + b _08057ACE + .align 2, 0 +_08057AC0: .4byte 0x0000FFFF +_08057AC4: + adds r2, #8 + ldrh r0, [r2] + cmp r0, r3 + bne _08057AB4 +_08057ACC: + movs r0, #0 +_08057ACE: + pop {pc} + + thumb_func_start sub_08057AD0 +sub_08057AD0: @ 0x08057AD0 + push {lr} + ldr r2, _08057AE4 @ =gUnk_08108044 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08057AE4: .4byte gUnk_08108044 + + thumb_func_start sub_08057AE8 +sub_08057AE8: @ 0x08057AE8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + ldrb r0, [r5, #0xe] + cmp r0, #1 + bne _08057B04 + ldr r0, _08057B00 @ =0x00000323 + strh r0, [r5, #0x30] + b _08057B12 + .align 2, 0 +_08057B00: .4byte 0x00000323 +_08057B04: + movs r0, #2 + ands r0, r1 + movs r2, #0x36 + cmp r0, #0 + beq _08057B10 + movs r2, #0x37 +_08057B10: + strh r2, [r5, #0x30] +_08057B12: + ldr r2, _08057B9C @ =gUnk_08108024 + lsls r3, r1, #1 + adds r0, r3, r2 + ldrh r0, [r0] + movs r4, #0 + strh r0, [r5, #0x28] + adds r1, #1 + lsls r1, r1, #1 + adds r2, r1, r2 + ldrh r0, [r2] + strh r0, [r5, #0x2a] + ldr r2, _08057BA0 @ =gUnk_08108034 + adds r3, r3, r2 + ldrh r0, [r3] + strh r0, [r5, #0x2c] + adds r1, r1, r2 + ldrh r0, [r1] + strh r0, [r5, #0x2e] + ldrb r2, [r5, #0xb] + lsrs r0, r2, #2 + movs r1, #0xf + ands r0, r1 + adds r0, #1 + strh r0, [r5, #0x32] + movs r0, #0x1c + strb r0, [r5, #0xe] + strb r4, [r5, #0xf] + movs r0, #0x80 + ands r0, r2 + movs r1, #1 + cmp r0, #0 + beq _08057B54 + movs r1, #2 +_08057B54: + strb r1, [r5, #0xc] + cmp r1, #2 + bne _08057B9A + ldrh r0, [r5, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08057B9A + ldrh r0, [r5, #0x32] + cmp r0, #0 + beq _08057B94 +_08057B6A: + ldrh r1, [r5, #0x28] + ldrh r2, [r5, #0x2a] + adds r0, r5, #0 + bl sub_08057CA4 + ldrh r0, [r5, #0x30] + movs r2, #0x38 + ldrsh r1, [r5, r2] + movs r3, #0x3a + ldrsh r2, [r5, r3] + lsls r2, r2, #6 + orrs r1, r2 + ldrh r2, [r5, #0x3c] + bl sub_0807B7D8 + ldrh r0, [r5, #0x32] + subs r0, #1 + strh r0, [r5, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08057B6A +_08057B94: + adds r0, r5, #0 + bl sub_0805E900 +_08057B9A: + pop {r4, r5, pc} + .align 2, 0 +_08057B9C: .4byte gUnk_08108024 +_08057BA0: .4byte gUnk_08108034 + + thumb_func_start sub_08057BA4 +sub_08057BA4: @ 0x08057BA4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08057C24 + movs r0, #8 + strb r0, [r4, #0xe] + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08057BF6 + ldrh r0, [r4, #0x32] + ldrb r1, [r4, #0xf] + cmp r0, r1 + beq _08057C24 + ldrh r1, [r4, #0x28] + ldrh r2, [r4, #0x2a] + adds r0, r4, #0 + bl sub_08057CA4 + ldrh r0, [r4, #0x30] + movs r2, #0x38 + ldrsh r1, [r4, r2] + movs r3, #0x3a + ldrsh r2, [r4, r3] + lsls r2, r2, #6 + orrs r1, r2 + ldrh r2, [r4, #0x3c] + bl sub_0807B7D8 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + movs r0, #0x71 + bl sub_080A3268 + b _08057C24 +_08057BF6: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08057C24 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + lsls r1, r1, #6 + orrs r0, r1 + ldrh r1, [r4, #0x3c] + bl sub_0807BA8C + ldrh r1, [r4, #0x2c] + ldrh r2, [r4, #0x2e] + adds r0, r4, #0 + bl sub_08057CA4 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + movs r0, #0x71 + bl sub_080A3268 +_08057C24: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08057C28 +sub_08057C28: @ 0x08057C28 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _08057C44 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08057C9C + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _08057C9C +_08057C44: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08057C9C + movs r0, #8 + strb r0, [r4, #0xe] + ldrh r0, [r4, #0x32] + ldrb r1, [r4, #0xf] + cmp r0, r1 + beq _08057C88 + ldrh r1, [r4, #0x28] + ldrh r2, [r4, #0x2a] + adds r0, r4, #0 + bl sub_08057CA4 + ldrh r0, [r4, #0x30] + movs r2, #0x38 + ldrsh r1, [r4, r2] + movs r3, #0x3a + ldrsh r2, [r4, r3] + lsls r2, r2, #6 + orrs r1, r2 + ldrh r2, [r4, #0x3c] + bl sub_0807B7D8 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + movs r0, #0x71 + bl sub_080A3268 + b _08057C9C +_08057C88: + ldrh r1, [r4, #0x30] + ldr r0, _08057CA0 @ =0x00000323 + cmp r1, r0 + beq _08057C96 + movs r0, #0x72 + bl sub_080A3268 +_08057C96: + adds r0, r4, #0 + bl sub_0805E900 +_08057C9C: + pop {r4, pc} + .align 2, 0 +_08057CA0: .4byte 0x00000323 + + thumb_func_start sub_08057CA4 +sub_08057CA4: @ 0x08057CA4 + ldrh r3, [r0, #0x38] + adds r3, r3, r1 + strh r3, [r0, #0x38] + ldrh r1, [r0, #0x3a] + adds r1, r1, r2 + strh r1, [r0, #0x3a] + bx lr + .align 2, 0 + + thumb_func_start sub_08057CB4 +sub_08057CB4: @ 0x08057CB4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08057CD6 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + bl sub_0804B128 + str r0, [r4, #0x20] + cmp r0, #0 + bne _08057CD6 + adds r0, r4, #0 + bl sub_0805E900 + b _08057D42 +_08057CD6: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08057CE4 + ldr r0, _08057D44 @ =gUnk_03003F80 + ldrb r0, [r0, #0x12] + cmp r0, #0x1e + bne _08057D42 +_08057CE4: + ldr r4, [r4, #0x20] + ldrh r0, [r4] + ldr r1, _08057D48 @ =0x0000FFFF + cmp r0, r1 + beq _08057D42 + ldr r5, _08057D4C @ =gLinkEntity + adds r6, r1, #0 +_08057CF2: + ldrb r2, [r4, #7] + movs r0, #3 + ands r0, r2 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + ands r0, r1 + cmp r0, #0 + beq _08057D3A + ldr r0, _08057D44 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08057D18 + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _08057D3A +_08057D18: + ldrh r0, [r4] + ldrh r1, [r4, #2] + ldrb r2, [r4, #4] + ldrb r3, [r4, #5] + bl sub_0800293E + cmp r0, #0 + beq _08057D3A + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08057D3A + ldrb r0, [r4, #6] + bl sub_0804B128 + bl sub_08080840 +_08057D3A: + adds r4, #8 + ldrh r0, [r4] + cmp r0, r6 + bne _08057CF2 +_08057D42: + pop {r4, r5, r6, pc} + .align 2, 0 +_08057D44: .4byte gUnk_03003F80 +_08057D48: .4byte 0x0000FFFF +_08057D4C: .4byte gLinkEntity + + thumb_func_start sub_08057D50 +sub_08057D50: @ 0x08057D50 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08057D7C + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x20 + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldr r1, _08057DC0 @ =sub_08057E30 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_08057D7C: + adds r0, r4, #0 + bl sub_08057E40 + cmp r0, #0 + beq _08057D9A + ldr r0, _08057DC4 @ =gUnk_02034350 + ldrb r5, [r0, #0x10] + adds r1, r4, #0 + adds r1, #0x20 + ldrb r0, [r1] + cmp r0, r5 + beq _08057D9A + movs r0, #0 + strb r5, [r1] + strb r0, [r4, #0xe] +_08057D9A: + ldr r0, _08057DC8 @ =gUnk_03000BF0 + ldrh r3, [r0] + cmp r3, #0 + bne _08057E2A + adds r0, r4, #0 + adds r0, #0x20 + ldrb r5, [r0] + lsls r1, r5, #6 + ldr r0, _08057DCC @ =gUnk_081080A4 + adds r2, r1, r0 + ldrb r1, [r4, #0xe] + cmp r1, #7 + bgt _08057DD0 + cmp r1, #1 + bge _08057E04 + cmp r1, #0 + beq _08057DD6 + b _08057E2A + .align 2, 0 +_08057DC0: .4byte sub_08057E30 +_08057DC4: .4byte gUnk_02034350 +_08057DC8: .4byte gUnk_03000BF0 +_08057DCC: .4byte gUnk_081080A4 +_08057DD0: + cmp r1, #8 + beq _08057E20 + b _08057E2A +_08057DD6: + ldr r1, _08057DF8 @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + ldr r0, [r2] + ldr r1, _08057DFC @ =gUnk_085A2E80 + adds r0, r0, r1 + ldr r1, [r2, #4] + movs r2, #0x80 + lsls r2, r2, #5 + bl sub_08000E96 + ldr r0, _08057E00 @ =gUnk_081081E4 + adds r0, r5, r0 + ldrb r0, [r0] + bl sub_0801D714 + b _08057E24 + .align 2, 0 +_08057DF8: .4byte gUnk_02034490 +_08057DFC: .4byte gUnk_085A2E80 +_08057E00: .4byte gUnk_081081E4 +_08057E04: + lsls r1, r1, #3 + adds r1, r1, r2 + ldr r0, [r1] + ldr r2, _08057E1C @ =gUnk_085A2E80 + adds r0, r0, r2 + ldr r1, [r1, #4] + movs r2, #0x80 + lsls r2, r2, #5 + bl sub_08000E96 + b _08057E24 + .align 2, 0 +_08057E1C: .4byte gUnk_085A2E80 +_08057E20: + ldr r0, _08057E2C @ =gUnk_02034490 + strb r3, [r0] +_08057E24: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] +_08057E2A: + pop {r4, r5, pc} + .align 2, 0 +_08057E2C: .4byte gUnk_02034490 + + thumb_func_start sub_08057E30 +sub_08057E30: @ 0x08057E30 + push {lr} + ldr r0, _08057E3C @ =gUnk_02034350 + ldrb r0, [r0, #0x10] + bl sub_08057E7C + pop {pc} + .align 2, 0 +_08057E3C: .4byte gUnk_02034350 + + thumb_func_start sub_08057E40 +sub_08057E40: @ 0x08057E40 + push {lr} + ldr r0, _08057E54 @ =gUnk_08108050 + bl sub_08056300 + adds r1, r0, #0 + cmp r1, #0xff + bne _08057E58 + movs r0, #0 + b _08057E5E + .align 2, 0 +_08057E54: .4byte gUnk_08108050 +_08057E58: + ldr r0, _08057E60 @ =gUnk_02034350 + strb r1, [r0, #0x10] + movs r0, #1 +_08057E5E: + pop {pc} + .align 2, 0 +_08057E60: .4byte gUnk_02034350 + + thumb_func_start sub_08057E64 +sub_08057E64: @ 0x08057E64 + push {lr} + ldr r0, _08057E78 @ =gUnk_08108050 + bl sub_08056300 + cmp r0, #0xff + beq _08057E74 + bl sub_08057E7C +_08057E74: + pop {pc} + .align 2, 0 +_08057E78: .4byte gUnk_08108050 + + thumb_func_start sub_08057E7C +sub_08057E7C: @ 0x08057E7C + push {r4, r5, r6, lr} + adds r4, r0, #0 + cmp r4, #4 + bhi _08057EB6 + ldr r0, _08057EB8 @ =gUnk_081081E4 + adds r0, r4, r0 + ldrb r0, [r0] + bl sub_0801D714 + lsls r1, r4, #6 + ldr r0, _08057EBC @ =gUnk_081080A4 + adds r1, r1, r0 + movs r3, #0 + ldr r2, _08057EC0 @ =0x040000D4 + ldr r6, _08057EC4 @ =gUnk_085A2E80 + ldr r5, _08057EC8 @ =0x84000400 +_08057E9C: + ldr r0, [r1] + adds r0, r0, r6 + str r0, [r2] + ldr r0, [r1, #4] + str r0, [r2, #4] + str r5, [r2, #8] + ldr r0, [r2, #8] + adds r3, #1 + adds r1, #8 + cmp r3, #7 + bls _08057E9C + ldr r0, _08057ECC @ =gUnk_02034350 + strb r4, [r0, #0x10] +_08057EB6: + pop {r4, r5, r6, pc} + .align 2, 0 +_08057EB8: .4byte gUnk_081081E4 +_08057EBC: .4byte gUnk_081080A4 +_08057EC0: .4byte 0x040000D4 +_08057EC4: .4byte gUnk_085A2E80 +_08057EC8: .4byte 0x84000400 +_08057ECC: .4byte gUnk_02034350 + + thumb_func_start sub_08057ED0 +sub_08057ED0: @ 0x08057ED0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08057F20 + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _08057EF2 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _08057EF4 @ =gUnk_03000F50 + strh r1, [r0, #0x1a] + strh r1, [r0, #0x32] + ldr r1, _08057EF8 @ =sub_08057EFC + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_08057EF2: + pop {r4, pc} + .align 2, 0 +_08057EF4: .4byte gUnk_03000F50 +_08057EF8: .4byte sub_08057EFC + + thumb_func_start sub_08057EFC +sub_08057EFC: @ 0x08057EFC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08057F1C @ =gUnk_02034350 + ldrb r0, [r0, #0x10] + bl sub_0801D7EC + bl sub_08058034 + movs r0, #0 + str r0, [r4, #0x3c] + str r0, [r4, #0x38] + adds r0, r4, #0 + bl sub_08057F20 + pop {r4, pc} + .align 2, 0 +_08057F1C: .4byte gUnk_02034350 + + thumb_func_start sub_08057F20 +sub_08057F20: @ 0x08057F20 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldr r5, _08057FF4 @ =gUnk_03000BF0 + movs r0, #0xa + ldrsh r1, [r5, r0] + ldrh r0, [r5, #6] + subs r4, r1, r0 + lsrs r2, r4, #3 + adds r2, r4, r2 + ldrh r0, [r5, #0x1e] + movs r1, #0x80 + lsls r1, r1, #3 + subs r0, r1, r0 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r4, r2, r0 + ldr r6, _08057FF8 @ =gUnk_03000F50 + adds r0, r4, #0 + movs r1, #0xf + ands r0, r1 + strh r0, [r6, #0x2e] + movs r1, #0xc + ldrsh r0, [r5, r1] + ldrh r1, [r5, #8] + subs r0, r0, r1 + movs r1, #0x30 + subs r0, r1, r0 + asrs r0, r0, #2 + mov sl, r1 + mov r1, sl + subs r0, r1, r0 + strh r0, [r6, #0x30] + ldr r0, _08057FFC @ =gUnk_02001A40 + mov r8, r0 + str r0, [r6, #0x34] + ldr r1, _08058000 @ =gUnk_02006F00 + mov sb, r1 + adds r0, r4, #0 + mov r2, r8 + bl sub_08058004 + lsrs r0, r4, #4 + lsls r4, r0, #1 + ldr r0, [r7, #0x38] + cmp r0, r4 + beq _08057F8C + str r4, [r7, #0x38] + movs r0, #1 + strh r0, [r6, #0x32] +_08057F8C: + movs r0, #0xa + ldrsh r1, [r5, r0] + ldrh r0, [r5, #6] + subs r4, r1, r0 + lsrs r2, r4, #2 + adds r2, r4, r2 + ldrh r0, [r5, #0x1e] + movs r1, #0x80 + lsls r1, r1, #3 + subs r0, r1, r0 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r4, r2, r0 + adds r0, r4, #0 + movs r1, #0xf + ands r0, r1 + strh r0, [r6, #0x16] + movs r1, #0xc + ldrsh r0, [r5, r1] + ldrh r1, [r5, #8] + subs r0, r0, r1 + movs r1, #0x30 + subs r0, r1, r0 + asrs r0, r0, #1 + mov r1, sl + subs r0, r1, r0 + strh r0, [r6, #0x18] + movs r2, #0x80 + lsls r2, r2, #4 + add r2, r8 + str r2, [r6, #0x1c] + movs r1, #0x80 + lsls r1, r1, #6 + add r1, sb + adds r0, r4, #0 + bl sub_08058004 + lsrs r0, r4, #4 + lsls r4, r0, #1 + ldr r0, [r7, #0x3c] + cmp r0, r4 + beq _08057FE8 + str r4, [r7, #0x3c] + movs r0, #1 + strh r0, [r6, #0x1a] +_08057FE8: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08057FF4: .4byte gUnk_03000BF0 +_08057FF8: .4byte gUnk_03000F50 +_08057FFC: .4byte gUnk_02001A40 +_08058000: .4byte gUnk_02006F00 + + thumb_func_start sub_08058004 +sub_08058004: @ 0x08058004 + push {r4, r5, r6, lr} + movs r4, #0x20 + lsrs r0, r0, #4 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r3, _0805802C @ =0x040000D4 + ldr r6, _08058030 @ =0x80000020 + movs r5, #0x80 + lsls r5, r5, #1 +_08058016: + str r1, [r3] + str r2, [r3, #4] + str r6, [r3, #8] + ldr r0, [r3, #8] + adds r1, r1, r5 + adds r2, #0x40 + subs r4, #1 + cmp r4, #0 + bne _08058016 + pop {r4, r5, r6, pc} + .align 2, 0 +_0805802C: .4byte 0x040000D4 +_08058030: .4byte 0x80000020 + + thumb_func_start sub_08058034 +sub_08058034: @ 0x08058034 + push {r4, r5, r6, lr} + ldr r6, _08058080 @ =gUnk_02002F00 + movs r0, #0x80 + lsls r0, r0, #7 + adds r5, r6, r0 + movs r4, #0 +_08058040: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08058084 + movs r1, #0x80 + lsls r1, r1, #4 + adds r6, r6, r1 + adds r5, #0x40 + adds r4, #1 + cmp r4, #3 + bls _08058040 + ldr r0, _08058080 @ =gUnk_02002F00 + movs r1, #0x80 + lsls r1, r1, #6 + adds r6, r0, r1 + movs r1, #0xc0 + lsls r1, r1, #7 + adds r5, r0, r1 + movs r4, #0 +_08058066: + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_08058084 + movs r0, #0x80 + lsls r0, r0, #4 + adds r6, r6, r0 + adds r5, #0x40 + adds r4, #1 + cmp r4, #3 + bls _08058066 + pop {r4, r5, r6, pc} + .align 2, 0 +_08058080: .4byte gUnk_02002F00 + + thumb_func_start sub_08058084 +sub_08058084: @ 0x08058084 + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r4, #0 + ldr r2, _080580A8 @ =0x040000D4 + ldr r6, _080580AC @ =0x80000020 + movs r5, #0x80 + lsls r5, r5, #1 +_08058092: + str r3, [r2] + str r1, [r2, #4] + str r6, [r2, #8] + ldr r0, [r2, #8] + adds r4, #1 + adds r3, #0x40 + adds r1, r1, r5 + cmp r4, #0x1f + bls _08058092 + pop {r4, r5, r6, pc} + .align 2, 0 +_080580A8: .4byte 0x040000D4 +_080580AC: .4byte 0x80000020 + + thumb_func_start sub_080580B0 +sub_080580B0: @ 0x080580B0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _080581B0 @ =gUnk_0200B650 + movs r1, #0 + str r1, [r0] + movs r0, #0x80 + lsls r0, r0, #0x13 + strh r1, [r0] + adds r0, r4, #0 + bl sub_0801D7EC + ldr r0, _080581B4 @ =gUnk_02034350 + strb r4, [r0, #0x10] + bl sub_08058034 + ldr r5, _080581B8 @ =gUnk_03000BF0 + movs r0, #0xa + ldrsh r1, [r5, r0] + ldrh r0, [r5, #6] + subs r7, r1, r0 + asrs r2, r7, #3 + adds r2, r7, r2 + ldrh r0, [r5, #0x1e] + movs r4, #0x80 + lsls r4, r4, #3 + subs r0, r4, r0 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r7, r2, r0 + ldr r1, _080581BC @ =gUnk_02006F00 + mov sb, r1 + ldr r2, _080581C0 @ =gUnk_02001A40 + mov r8, r2 + adds r0, r7, #0 + bl sub_08058004 + ldr r0, _080581C4 @ =gUnk_03000F50 + mov sl, r0 + movs r1, #0xf + ands r7, r1 + strh r7, [r0, #0x2e] + movs r2, #0xc + ldrsh r0, [r5, r2] + ldrh r1, [r5, #8] + subs r0, r0, r1 + movs r6, #0x30 + subs r0, r6, r0 + asrs r0, r0, #1 + movs r3, #0x30 + subs r0, r3, r0 + mov r1, sl + strh r0, [r1, #0x30] + ldr r0, _080581C8 @ =0x00001D09 + strh r0, [r1, #0x2c] + mov r2, r8 + str r2, [r1, #0x34] + movs r0, #1 + strh r0, [r1, #0x32] + movs r2, #0xa + ldrsh r1, [r5, r2] + ldrh r0, [r5, #6] + subs r7, r1, r0 + asrs r1, r7, #2 + adds r1, r7, r1 + ldrh r0, [r5, #0x1e] + subs r4, r4, r0 + lsrs r0, r4, #0x1f + adds r4, r4, r0 + asrs r4, r4, #1 + adds r7, r1, r4 + movs r0, #0x80 + lsls r0, r0, #6 + add sb, r0 + movs r1, #0x80 + lsls r1, r1, #4 + add r8, r1 + adds r0, r7, #0 + mov r1, sb + mov r2, r8 + str r3, [sp] + bl sub_08058004 + movs r2, #0xf + ands r7, r2 + mov r0, sl + strh r7, [r0, #0x16] + movs r1, #0xc + ldrsh r0, [r5, r1] + ldrh r1, [r5, #8] + subs r0, r0, r1 + subs r6, r6, r0 + asrs r6, r6, #1 + ldr r3, [sp] + subs r3, r3, r6 + mov r2, sl + strh r3, [r2, #0x18] + ldr r0, _080581CC @ =0x00001E09 + strh r0, [r2, #0x14] + mov r0, r8 + str r0, [r2, #0x1c] + movs r1, #1 + strh r1, [r2, #0x1a] + mov r1, sl + adds r1, #0x66 + ldr r0, _080581D0 @ =0x00003C48 + strh r0, [r1] + adds r1, #2 + ldr r0, _080581D4 @ =0x00000609 + strh r0, [r1] + ldrh r1, [r2] + movs r2, #0xa0 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r0, r1 + mov r1, sl + strh r0, [r1] + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080581B0: .4byte gUnk_0200B650 +_080581B4: .4byte gUnk_02034350 +_080581B8: .4byte gUnk_03000BF0 +_080581BC: .4byte gUnk_02006F00 +_080581C0: .4byte gUnk_02001A40 +_080581C4: .4byte gUnk_03000F50 +_080581C8: .4byte 0x00001D09 +_080581CC: .4byte 0x00001E09 +_080581D0: .4byte 0x00003C48 +_080581D4: .4byte 0x00000609 + + thumb_func_start sub_080581D8 +sub_080581D8: @ 0x080581D8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08058210 + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _080581F8 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080581FC @ =gUnk_03000F50 + strh r1, [r0, #0x1a] + ldr r1, _08058200 @ =sub_08058204 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_080581F8: + pop {r4, pc} + .align 2, 0 +_080581FC: .4byte gUnk_03000F50 +_08058200: .4byte sub_08058204 + + thumb_func_start sub_08058204 +sub_08058204: @ 0x08058204 + push {lr} + ldrb r0, [r0, #0xa] + bl sub_08058324 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08058210 +sub_08058210: @ 0x08058210 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_08058244 + adds r3, r0, #0 + ldr r0, [r4, #0x3c] + cmp r0, r3 + beq _08058234 + str r3, [r4, #0x3c] + ldr r1, _08058238 @ =gUnk_02006F00 + ldr r2, _0805823C @ =gUnk_02001A40 + adds r0, r3, #0 + bl sub_080582A0 + ldr r1, _08058240 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0x1a] +_08058234: + pop {r4, pc} + .align 2, 0 +_08058238: .4byte gUnk_02006F00 +_0805823C: .4byte gUnk_02001A40 +_08058240: .4byte gUnk_03000F50 + + thumb_func_start sub_08058244 +sub_08058244: @ 0x08058244 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r6, r0, #0 + ldr r5, _08058294 @ =gUnk_03000BF0 + movs r1, #0xc + ldrsh r0, [r5, r1] + ldrh r4, [r5, #8] + subs r0, r0, r4 + lsls r0, r0, #5 + ldrh r1, [r5, #0x20] + subs r1, #0xa0 + bl __divsi3 + ldr r2, _08058298 @ =gUnk_03000F50 + mov r8, r2 + adds r4, r4, r0 + strh r4, [r2, #0x18] + movs r0, #0xa + ldrsh r1, [r5, r0] + ldrh r0, [r5, #6] + subs r1, r1, r0 + ldr r0, _0805829C @ =gUnk_081081EC + lsls r6, r6, #1 + adds r6, r6, r0 + ldrh r0, [r6] + muls r0, r1, r0 + ldrh r1, [r5, #0x1e] + subs r1, #0xf0 + bl __divsi3 + movs r2, #0xf + adds r1, r0, #0 + ands r1, r2 + mov r2, r8 + strh r1, [r2, #0x16] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_08058294: .4byte gUnk_03000BF0 +_08058298: .4byte gUnk_03000F50 +_0805829C: .4byte gUnk_081081EC + + thumb_func_start sub_080582A0 +sub_080582A0: @ 0x080582A0 + push {r4, r5, r6, lr} + movs r4, #0x20 + lsrs r0, r0, #4 + lsls r0, r0, #2 + adds r1, r1, r0 + ldr r3, _080582C8 @ =0x040000D4 + ldr r6, _080582CC @ =0x80000020 + movs r5, #0x80 + lsls r5, r5, #1 +_080582B2: + str r1, [r3] + str r2, [r3, #4] + str r6, [r3, #8] + ldr r0, [r3, #8] + adds r1, r1, r5 + adds r2, #0x40 + subs r4, #1 + cmp r4, #0 + bne _080582B2 + pop {r4, r5, r6, pc} + .align 2, 0 +_080582C8: .4byte 0x040000D4 +_080582CC: .4byte 0x80000020 + + thumb_func_start sub_080582D0 +sub_080582D0: @ 0x080582D0 + push {r4, r5, lr} + ldr r4, _080582F4 @ =gUnk_02002F00 + movs r0, #0x80 + lsls r0, r0, #7 + adds r5, r4, r0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080582F8 + movs r0, #0x80 + lsls r0, r0, #4 + adds r4, r4, r0 + adds r5, #0x40 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080582F8 + pop {r4, r5, pc} + .align 2, 0 +_080582F4: .4byte gUnk_02002F00 + + thumb_func_start sub_080582F8 +sub_080582F8: @ 0x080582F8 + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r4, #0 + ldr r2, _0805831C @ =0x040000D4 + ldr r6, _08058320 @ =0x80000020 + movs r5, #0x80 + lsls r5, r5, #1 +_08058306: + str r3, [r2] + str r1, [r2, #4] + str r6, [r2, #8] + ldr r0, [r2, #8] + adds r4, #1 + adds r3, #0x40 + adds r1, r1, r5 + cmp r4, #0x1f + bls _08058306 + pop {r4, r5, r6, pc} + .align 2, 0 +_0805831C: .4byte 0x040000D4 +_08058320: .4byte 0x80000020 + + thumb_func_start sub_08058324 +sub_08058324: @ 0x08058324 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0805836C @ =gUnk_0200B650 + movs r0, #0 + str r0, [r1] + adds r0, r4, #0 + adds r0, #0x86 + bl sub_0801D714 + adds r0, r4, #0 + adds r0, #0x36 + bl sub_0801D7EC + bl sub_080582D0 + adds r0, r4, #0 + bl sub_08058244 + ldr r1, _08058370 @ =gUnk_02006F00 + ldr r4, _08058374 @ =gUnk_02001A40 + adds r2, r4, #0 + bl sub_080582A0 + ldr r1, _08058378 @ =gUnk_03000F50 + ldr r0, _0805837C @ =0x00001D47 + strh r0, [r1, #0x14] + str r4, [r1, #0x1c] + movs r0, #1 + strh r0, [r1, #0x1a] + ldrh r2, [r1] + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + orrs r0, r2 + strh r0, [r1] + pop {r4, pc} + .align 2, 0 +_0805836C: .4byte gUnk_0200B650 +_08058370: .4byte gUnk_02006F00 +_08058374: .4byte gUnk_02001A40 +_08058378: .4byte gUnk_03000F50 +_0805837C: .4byte 0x00001D47 + + thumb_func_start sub_08058380 +sub_08058380: @ 0x08058380 + push {lr} + ldr r2, _08058394 @ =gUnk_081081F4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08058394: .4byte gUnk_081081F4 + + thumb_func_start sub_08058398 +sub_08058398: @ 0x08058398 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _080583AA + bl sub_0805E780 +_080583AA: + adds r0, r4, #0 + adds r0, #0x3a + ldrb r1, [r0] + lsls r1, r1, #3 + strh r1, [r4, #0x24] + adds r0, #1 + ldrb r2, [r0] + lsls r2, r2, #3 + strh r2, [r4, #0x26] + subs r0, #3 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r1, r1, r0 + strh r1, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #4 + adds r2, r2, r0 + strh r2, [r4, #0x22] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldrh r0, [r4, #0x3e] + cmp r0, #0 + bne _080583E4 + movs r0, #2 + b _080583E6 +_080583E4: + movs r0, #1 +_080583E6: + strb r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080583EC +sub_080583EC: @ 0x080583EC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08058404 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08058408 +_08058404: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08058408 +sub_08058408: @ 0x08058408 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _0805843C @ =gUnk_03003F80 + ldr r5, [r6, #0x30] + movs r0, #8 + ands r5, r0 + cmp r5, #0 + bne _08058488 + ldrh r0, [r4, #0x20] + ldrh r1, [r4, #0x22] + ldrh r2, [r4, #0x24] + ldrh r3, [r4, #0x26] + bl sub_0800293E + cmp r0, #0 + beq _08058488 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _08058488 + cmp r0, #1 + ble _08058450 + cmp r0, #2 + beq _08058440 + cmp r0, #3 + beq _0805847C + b _08058450 + .align 2, 0 +_0805843C: .4byte gUnk_03003F80 +_08058440: + adds r0, r4, #0 + bl sub_080585DC + ldr r0, [r6, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08058488 +_08058450: + adds r0, r4, #0 + bl sub_080585DC + adds r0, r4, #0 + bl sub_0805848C + cmp r0, #0 + beq _08058488 + movs r0, #3 + bl sub_08078A90 + bl sub_08078B48 + bl sub_0805E544 + movs r0, #0 + movs r1, #3 + strb r1, [r4, #0xc] + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _08058488 +_0805847C: + movs r0, #4 + strb r0, [r4, #0xc] + strb r5, [r4, #0xd] + ldrh r0, [r4, #0x36] + bl sub_080186C0 +_08058488: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0805848C +sub_0805848C: @ 0x0805848C + push {lr} + ldr r0, _080584A4 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + subs r0, #5 + cmp r0, #0x17 + bhi _08058510 + lsls r0, r0, #2 + ldr r1, _080584A8 @ =_080584AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080584A4: .4byte gUnk_03003F80 +_080584A8: .4byte _080584AC +_080584AC: @ jump table + .4byte _0805850C @ case 0 + .4byte _08058510 @ case 1 + .4byte _0805850C @ case 2 + .4byte _0805850C @ case 3 + .4byte _08058510 @ case 4 + .4byte _0805850C @ case 5 + .4byte _0805850C @ case 6 + .4byte _0805850C @ case 7 + .4byte _0805850C @ case 8 + .4byte _0805850C @ case 9 + .4byte _0805850C @ case 10 + .4byte _0805850C @ case 11 + .4byte _0805850C @ case 12 + .4byte _0805850C @ case 13 + .4byte _0805850C @ case 14 + .4byte _0805850C @ case 15 + .4byte _0805850C @ case 16 + .4byte _0805850C @ case 17 + .4byte _0805850C @ case 18 + .4byte _0805850C @ case 19 + .4byte _08058510 @ case 20 + .4byte _08058510 @ case 21 + .4byte _0805850C @ case 22 + .4byte _0805850C @ case 23 +_0805850C: + movs r0, #0 + b _08058512 +_08058510: + movs r0, #1 +_08058512: + pop {pc} + + thumb_func_start sub_08058514 +sub_08058514: @ 0x08058514 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _08058532 + cmp r0, #1 + bgt _08058528 + cmp r0, #0 + beq _08058570 + b _080585A6 +_08058528: + cmp r0, #2 + beq _08058570 + cmp r0, #3 + beq _08058584 + b _080585A6 +_08058532: + ldr r2, _08058564 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08058568 @ =0x00001235 + ands r0, r1 + cmp r0, #0 + bne _080585A6 + ldr r0, _0805856C @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080585A6 + strb r0, [r2, #2] + ldrh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x35 + ldrb r1, [r1] + bl sub_08078AA8 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _080585A6 + .align 2, 0 +_08058564: .4byte gUnk_03003F80 +_08058568: .4byte 0x00001235 +_0805856C: .4byte gLinkEntity +_08058570: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080585A6 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _080585A6 +_08058584: + ldr r0, _080585A8 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #1 + beq _08058590 + cmp r0, #9 + bne _080585A6 +_08058590: + ldr r0, _080585AC @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + bl sub_0805E564 + ldrh r0, [r4, #0x3c] + bl sub_0807CCC8 + bl sub_0805E780 +_080585A6: + pop {r4, pc} + .align 2, 0 +_080585A8: .4byte gLinkEntity +_080585AC: .4byte gUnk_03003F80 + + thumb_func_start sub_080585B0 +sub_080585B0: @ 0x080585B0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080585D8 @ =gUnk_02033A90 + adds r0, #0x28 + ldrb r0, [r0] + cmp r0, #0xff + beq _080585C2 + bl sub_0805E780 +_080585C2: + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _080585D4 + bl sub_0801855C + bl sub_0805E780 +_080585D4: + pop {r4, pc} + .align 2, 0 +_080585D8: .4byte gUnk_02033A90 + + thumb_func_start sub_080585DC +sub_080585DC: @ 0x080585DC + push {lr} + ldrh r0, [r0, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _080585EC + bl sub_0805E780 +_080585EC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080585F0 +sub_080585F0: @ 0x080585F0 + push {lr} + ldr r2, _08058604 @ =gUnk_08108208 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08058604: .4byte gUnk_08108208 + + thumb_func_start sub_08058608 +sub_08058608: @ 0x08058608 + push {lr} + ldr r2, _0805861C @ =gUnk_08108210 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805861C: .4byte gUnk_08108210 + + thumb_func_start sub_08058620 +sub_08058620: @ 0x08058620 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + bne _08058648 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3c] + cmp r0, #0 + bne _0805863E + adds r0, r4, #0 + bl sub_080586EC +_0805863E: + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + b _0805864C +_08058648: + bl sub_0805E780 +_0805864C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08058650 +sub_08058650: @ 0x08058650 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _08058698 + adds r0, r4, #0 + bl sub_080586EC + adds r0, r4, #0 + adds r0, #0x35 + ldrb r0, [r0] + cmp r0, #0 + bne _08058692 + ldr r1, _0805869C @ =gUnk_02034350 + ldrb r0, [r1, #9] + movs r3, #0x33 + cmp r0, #0 + beq _0805867A + adds r3, r0, #0 +_0805867A: + ldr r0, _080586A0 @ =gUnk_02033A90 + movs r1, #0x86 + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r2, [r0] + adds r1, r4, #0 + adds r1, #0x20 + strb r2, [r1] + str r3, [r0] + adds r0, r3, #0 + bl sub_080A3268 +_08058692: + ldr r0, _080586A4 @ =0x00000B0F + bl sub_080186C0 +_08058698: + pop {r4, pc} + .align 2, 0 +_0805869C: .4byte gUnk_02034350 +_080586A0: .4byte gUnk_02033A90 +_080586A4: .4byte 0x00000B0F + + thumb_func_start sub_080586A8 +sub_080586A8: @ 0x080586A8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080586E4 + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + ldrh r0, [r4, #0x3c] + cmp r0, #0 + beq _080586E0 + adds r0, r4, #0 + adds r0, #0x35 + ldrb r0, [r0] + cmp r0, #0 + bne _080586E0 + ldr r1, _080586E8 @ =gUnk_02033A90 + movs r0, #0x86 + lsls r0, r0, #4 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + str r0, [r1] + bl sub_080A3268 + bl sub_0801855C +_080586E0: + bl sub_0805E780 +_080586E4: + pop {r4, pc} + .align 2, 0 +_080586E8: .4byte gUnk_02033A90 + + thumb_func_start sub_080586EC +sub_080586EC: @ 0x080586EC + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + movs r1, #0 + movs r0, #2 + strb r0, [r7, #0xc] + strb r1, [r7, #0xe] + movs r6, #0 + adds r0, r7, #0 + bl sub_08058760 + adds r5, r0, #0 + cmp r5, #0 + bne _0805870A + bl sub_0805E780 +_0805870A: + ldrb r0, [r7, #0xb] + bl sub_0804B128 + adds r4, r0, #0 + cmp r4, #0 + beq _0805875C + b _08058756 +_08058718: + adds r0, r4, #0 + adds r4, #0x10 + bl sub_0804ADF8 + adds r3, r0, #0 + cmp r3, #0 + beq _08058744 + ldrb r0, [r3, #8] + cmp r0, #3 + bne _08058744 + adds r2, r3, #0 + adds r2, #0x6d + ldrb r0, [r2] + movs r1, #0x40 + orrs r1, r0 + strb r1, [r2] + adds r2, r6, #0 + adds r6, #1 + adds r0, r5, #0 + adds r1, r3, #0 + bl sub_08058798 +_08058744: + cmp r6, #6 + bls _08058756 + movs r6, #0 + adds r0, r7, #0 + bl sub_08058760 + adds r5, r0, #0 + cmp r5, #0 + beq _0805875C +_08058756: + ldrb r0, [r4] + cmp r0, #0xff + bne _08058718 +_0805875C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08058760 +sub_08058760: @ 0x08058760 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0805E8D4 + adds r4, r0, #0 + cmp r4, #0 + beq _08058794 + movs r0, #9 + strb r0, [r4, #8] + movs r0, #0xb + strb r0, [r4, #9] + movs r0, #1 + strb r0, [r4, #0xa] + str r5, [r4, #0x14] + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + adds r0, r4, #0 + adds r0, #0x20 + movs r1, #0x20 + bl sub_0801D630 + adds r0, r4, #0 + movs r1, #8 + bl sub_0805EA2C +_08058794: + adds r0, r4, #0 + pop {r4, r5, pc} + + thumb_func_start sub_08058798 +sub_08058798: @ 0x08058798 + lsls r2, r2, #2 + adds r3, r0, #0 + adds r3, #0x20 + adds r3, r3, r2 + str r1, [r3] + ldrb r1, [r0, #0xe] + adds r1, #1 + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_080587AC +sub_080587AC: @ 0x080587AC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080587C2 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 +_080587C2: + movs r3, #0 + movs r2, #0 + adds r5, r4, #0 + adds r5, #0x20 +_080587CA: + lsls r0, r2, #2 + adds r1, r5, r0 + ldr r0, [r1] + cmp r0, #0 + beq _080587E0 + ldr r0, [r0, #4] + cmp r0, #0 + bne _080587DE + str r0, [r1] + b _080587E0 +_080587DE: + movs r3, #1 +_080587E0: + adds r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #7 + bls _080587CA + cmp r3, #0 + bne _080587FE + ldr r1, [r4, #0x14] + ldrb r0, [r1, #0xe] + cmp r0, #0 + beq _080587FA + subs r0, #1 + strb r0, [r1, #0xe] +_080587FA: + bl sub_0805E780 +_080587FE: + pop {r4, r5, pc} + + thumb_func_start sub_08058800 +sub_08058800: @ 0x08058800 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r6, _08058830 @ =gUnk_03003DB0 + ldr r3, [r6, #4] + cmp r3, r6 + beq _0805884A + ldr r0, _08058834 @ =0x0000FFFF + mov ip, r0 + ldr r7, _08058838 @ =0x00000B09 +_08058814: + ldrh r1, [r3, #8] + mov r0, ip + ands r0, r1 + cmp r0, r7 + bne _08058844 + movs r2, #0 + adds r1, r3, #0 + adds r1, #0x20 +_08058824: + ldr r0, [r1] + cmp r4, r0 + bne _0805883C + str r5, [r1] + b _0805884A + .align 2, 0 +_08058830: .4byte gUnk_03003DB0 +_08058834: .4byte 0x0000FFFF +_08058838: .4byte 0x00000B09 +_0805883C: + adds r1, #4 + adds r2, #1 + cmp r2, #7 + bls _08058824 +_08058844: + ldr r3, [r3, #4] + cmp r3, r6 + bne _08058814 +_0805884A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805884C +sub_0805884C: @ 0x0805884C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08058880 @ =gUnk_0810821C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08058BC8 + ldr r0, _08058884 @ =gUnk_03003DE4 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _08058888 @ =gUnk_02017AA0 + adds r0, r0, r1 + ldr r1, _0805888C @ =0x04000020 + ldr r2, _08058890 @ =0xA2600008 + bl sub_0805622C + pop {r4, pc} + .align 2, 0 +_08058880: .4byte gUnk_0810821C +_08058884: .4byte gUnk_03003DE4 +_08058888: .4byte gUnk_02017AA0 +_0805888C: .4byte 0x04000020 +_08058890: .4byte 0xA2600008 + + thumb_func_start sub_08058894 +sub_08058894: @ 0x08058894 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080588C4 @ =0x00001234 + str r0, [r4, #0x28] + movs r0, #0x15 + movs r1, #2 + bl sub_0807CC60 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + strb r1, [r4, #0xe] + adds r0, r4, #0 + bl sub_08058CB0 + ldr r1, _080588C8 @ =sub_08058D34 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 + pop {r4, pc} + .align 2, 0 +_080588C4: .4byte 0x00001234 +_080588C8: .4byte sub_08058D34 + + thumb_func_start sub_080588CC +sub_080588CC: @ 0x080588CC + push {r4, lr} + adds r4, r0, #0 + bl sub_08058CFC + adds r0, r4, #0 + bl sub_08058A04 + ldr r0, _080588E8 @ =gUnk_030010A0 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _080588EC + movs r0, #2 + strb r0, [r4, #0xc] + b _080588F2 + .align 2, 0 +_080588E8: .4byte gUnk_030010A0 +_080588EC: + adds r0, r4, #0 + bl sub_080588F8 +_080588F2: + pop {r4, pc} + + thumb_func_start nullsub_108 +nullsub_108: @ 0x080588F4 + bx lr + .align 2, 0 + + thumb_func_start sub_080588F8 +sub_080588F8: @ 0x080588F8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08058952 + movs r0, #0x26 + ldrsh r2, [r4, r0] + ldr r0, [r4, #0x28] + subs r1, r0, r2 + cmp r1, #0 + blt _08058914 + cmp r1, #8 + bhi _0805891A + b _08058968 +_08058914: + subs r0, r2, r0 + cmp r0, #8 + bls _08058968 +_0805891A: + ldr r0, _08058934 @ =0x00001234 + str r0, [r4, #0x28] + movs r2, #0x26 + ldrsh r1, [r4, r2] + ldr r0, _08058938 @ =0x0000FFFE + ands r1, r0 + cmp r1, #0xa0 + beq _08058940 + cmp r1, #0xa0 + bgt _0805893C + cmp r1, #0x48 + beq _08058940 + b _08058968 + .align 2, 0 +_08058934: .4byte 0x00001234 +_08058938: .4byte 0x0000FFFE +_0805893C: + cmp r1, #0xf0 + bne _08058968 +_08058940: + movs r3, #0x26 + ldrsh r0, [r4, r3] + str r0, [r4, #0x28] + movs r0, #0x2d + strb r0, [r4, #0xf] + movs r0, #0x8c + bl sub_080A3268 + b _08058968 +_08058952: + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x29 + bls _08058964 + ldr r0, [r4, #0x28] + subs r0, #2 + b _08058966 +_08058964: + ldr r0, [r4, #0x28] +_08058966: + strh r0, [r4, #0x26] +_08058968: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080589DE + ldr r0, _080589A4 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + ldr r0, _080589A8 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + subs r2, r1, r0 + adds r1, r2, #0 + subs r1, #0x50 + cmp r1, #0 + bge _08058986 + movs r1, #0x50 + subs r1, r1, r2 +_08058986: + lsrs r1, r1, #3 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #0xc + movs r3, #0x80 + lsls r3, r3, #7 + adds r1, r0, r3 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080589DE + cmp r2, #0x48 + bgt _080589AC + ldr r0, [r4, #0x24] + subs r0, r0, r1 + b _080589B4 + .align 2, 0 +_080589A4: .4byte gLinkEntity +_080589A8: .4byte gUnk_03000BF0 +_080589AC: + cmp r2, #0x57 + ble _080589B6 + ldr r0, [r4, #0x24] + adds r0, r0, r1 +_080589B4: + str r0, [r4, #0x24] +_080589B6: + ldr r2, [r4, #0x2c] + ldr r0, [r4, #0x24] + subs r1, r2, r0 + adds r3, r0, #0 + cmp r1, #0 + blt _080589CC + movs r0, #0x80 + lsls r0, r0, #0xd + cmp r1, r0 + bhi _080589D6 + b _080589DE +_080589CC: + subs r1, r3, r2 + movs r0, #0x80 + lsls r0, r0, #0xd + cmp r1, r0 + bls _080589DE +_080589D6: + str r3, [r4, #0x2c] + movs r0, #0x8b + bl sub_080A3268 +_080589DE: + movs r0, #0x26 + ldrsh r1, [r4, r0] + str r1, [r4, #0x20] + cmp r1, #0 + bge _080589F0 + ldr r0, _080589EC @ =0x000001FF + b _080589F8 + .align 2, 0 +_080589EC: .4byte 0x000001FF +_080589F0: + ldr r0, _08058A00 @ =0x000001FF + cmp r1, r0 + ble _080589FC + movs r0, #0 +_080589F8: + str r0, [r4, #0x20] + strh r0, [r4, #0x26] +_080589FC: + pop {r4, pc} + .align 2, 0 +_08058A00: .4byte 0x000001FF + + thumb_func_start sub_08058A04 +sub_08058A04: @ 0x08058A04 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r6, _08058A68 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r7, _08058A6C @ =gUnk_03000BF0 + ldrh r0, [r7, #6] + subs r1, r1, r0 + mov r8, r1 + movs r0, #0x32 + ldrsh r1, [r6, r0] + ldrh r0, [r7, #8] + subs r5, r1, r0 + ldr r0, [r4, #0x20] + ldr r1, _08058A70 @ =0xFFFFFEE8 + adds r0, r0, r1 + cmp r0, #0xc + bhi _08058A78 + movs r0, #0x17 + bl GetProgressFlag + cmp r0, #0 + beq _08058A78 + mov r0, r8 + subs r0, #0x6d + cmp r0, #0x16 + bhi _08058A78 + adds r0, r5, #0 + subs r0, #0x45 + cmp r0, #0x16 + bhi _08058A78 + movs r0, #0x36 + ldrsh r2, [r6, r0] + cmp r2, #0 + bne _08058A78 + ldr r0, _08058A74 @ =gUnk_03003F80 + movs r1, #3 + strb r1, [r0, #0xc] + adds r0, #0x38 + strb r2, [r0] + ldrh r0, [r7, #6] + adds r0, #0x78 + strh r0, [r6, #0x2e] + ldrh r0, [r7, #8] + adds r0, #0x50 + strh r0, [r6, #0x32] + b _08058AFC + .align 2, 0 +_08058A68: .4byte gLinkEntity +_08058A6C: .4byte gUnk_03000BF0 +_08058A70: .4byte 0xFFFFFEE8 +_08058A74: .4byte gUnk_03003F80 +_08058A78: + mov r1, r8 + cmp r1, #0x77 + bgt _08058AC0 + cmp r5, #0x4f + bgt _08058AA0 + ldr r3, _08058A9C @ =gUnk_08108228 + adds r0, r4, #0 + movs r1, #0x88 + movs r2, #0xb0 + bl sub_08058B08 + cmp r0, #0 + beq _08058AFC + adds r0, r4, #0 + movs r1, #0 + bl sub_08058B5C + b _08058AFC + .align 2, 0 +_08058A9C: .4byte gUnk_08108228 +_08058AA0: + ldr r3, _08058ABC @ =gUnk_08108258 + adds r0, r4, #0 + movs r1, #0x38 + movs r2, #0x60 + bl sub_08058B08 + cmp r0, #0 + beq _08058AFC + adds r0, r4, #0 + movs r1, #1 + bl sub_08058B5C + b _08058AFC + .align 2, 0 +_08058ABC: .4byte gUnk_08108258 +_08058AC0: + cmp r5, #0x4f + bgt _08058AE4 + movs r2, #0x84 + lsls r2, r2, #1 + ldr r3, _08058AE0 @ =gUnk_08108288 + adds r0, r4, #0 + movs r1, #0xe0 + bl sub_08058B08 + cmp r0, #0 + beq _08058AFC + adds r0, r4, #0 + movs r1, #2 + bl sub_08058B5C + b _08058AFC + .align 2, 0 +_08058AE0: .4byte gUnk_08108288 +_08058AE4: + ldr r3, _08058B04 @ =gUnk_081082B8 + adds r0, r4, #0 + movs r1, #0x90 + movs r2, #0xb8 + bl sub_08058B08 + cmp r0, #0 + beq _08058AFC + adds r0, r4, #0 + movs r1, #3 + bl sub_08058B5C +_08058AFC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08058B04: .4byte gUnk_081082B8 + + thumb_func_start sub_08058B08 +sub_08058B08: @ 0x08058B08 + push {r4, r5, lr} + adds r4, r3, #0 + ldr r0, [r0, #0x20] + cmp r0, r1 + blo _08058B16 + cmp r0, r2 + bls _08058B1A +_08058B16: + movs r0, #0 + b _08058B50 +_08058B1A: + subs r0, r0, r1 + lsrs r0, r0, #3 + lsls r0, r0, #3 + adds r4, r4, r0 + ldr r3, _08058B54 @ =gLinkEntity + movs r0, #0x2e + ldrsh r2, [r3, r0] + ldr r1, _08058B58 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r2, r2, r0 + ldrh r0, [r4] + subs r2, r2, r0 + movs r5, #0x32 + ldrsh r0, [r3, r5] + ldrh r1, [r1, #8] + subs r0, r0, r1 + ldrh r1, [r4, #2] + subs r0, r0, r1 + movs r1, #0 + ldrh r3, [r4, #4] + cmp r2, r3 + bhs _08058B4E + ldrh r4, [r4, #6] + cmp r0, r4 + bhs _08058B4E + movs r1, #1 +_08058B4E: + adds r0, r1, #0 +_08058B50: + pop {r4, r5, pc} + .align 2, 0 +_08058B54: .4byte gLinkEntity +_08058B58: .4byte gUnk_03000BF0 + + thumb_func_start sub_08058B5C +sub_08058B5C: @ 0x08058B5C + push {r4, r5, lr} + ldr r3, _08058BB4 @ =gUnk_030010A0 + movs r0, #0 + movs r4, #1 + strb r4, [r3, #8] + strb r0, [r3, #9] + movs r5, #4 + movs r0, #4 + strb r0, [r3, #0xf] + ldr r0, _08058BB8 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + strb r0, [r3, #0xc] + movs r0, #6 + strb r0, [r3, #0xd] + adds r2, r1, #0 + ands r2, r4 + rsbs r0, r2, #0 + orrs r0, r2 + asrs r0, r0, #0x1f + ands r0, r5 + strb r0, [r3, #0xe] + ldr r4, _08058BBC @ =gUnk_081082E8 + lsls r2, r1, #1 + adds r2, r2, r1 + lsls r0, r2, #1 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r3, #0x10] + adds r0, r2, #1 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r3, #0x12] + ldr r1, _08058BC0 @ =gUnk_02002A40 + adds r2, #2 + lsls r2, r2, #1 + adds r2, r2, r4 + ldrh r0, [r2] + strb r0, [r1, #7] + ldr r0, _08058BC4 @ =0x00000121 + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_08058BB4: .4byte gUnk_030010A0 +_08058BB8: .4byte gUnk_03000BF0 +_08058BBC: .4byte gUnk_081082E8 +_08058BC0: .4byte gUnk_02002A40 +_08058BC4: .4byte 0x00000121 + + thumb_func_start sub_08058BC8 +sub_08058BC8: @ 0x08058BC8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x14 + mov sb, r0 + ldr r0, _08058C9C @ =gUnk_03003DE4 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _08058CA0 @ =gUnk_02017AA0 + adds r4, r0, r1 + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [sp] + mov r1, sp + movs r2, #0 + movs r0, #0x78 + strh r0, [r1, #8] + movs r0, #0x80 + strh r0, [r1, #0xa] + mov r0, sp + strh r2, [r0, #0x10] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r0, #0xe] + strh r1, [r0, #0xc] + movs r5, #0 + mov r6, sp + ldr r0, _08058CA4 @ =gUnk_080C9160 + mov r8, r0 + adds r7, r1, #0 +_08058C0A: + lsls r0, r5, #7 + movs r1, #0xa0 + bl __divsi3 + movs r1, #0xff + ands r0, r1 + lsls r1, r0, #1 + add r1, r8 + movs r3, #0 + ldrsh r2, [r1, r3] + lsls r1, r2, #1 + adds r1, r1, r2 + asrs r1, r1, #2 + adds r1, r1, r7 + strh r1, [r6, #0xc] + lsls r0, r0, #2 + add r0, r8 + movs r1, #0 + ldrsh r0, [r0, r1] + asrs r0, r0, #4 + subs r0, r7, r0 + strh r0, [r6, #0xe] + mov r3, sb + ldr r0, [r3, #0x20] + adds r0, r0, r5 + lsls r0, r0, #8 + str r0, [sp, #4] + mov r0, sp + adds r1, r4, #0 + movs r2, #1 + bl BgAffineSet + adds r4, #0x10 + adds r5, #1 + cmp r5, #0x9f + bls _08058C0A + ldr r0, _08058C9C @ =gUnk_03003DE4 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _08058CA8 @ =gUnk_02017BA0 + adds r4, r0, r1 + ldr r2, _08058CAC @ =gUnk_03000F50 + ldrh r0, [r4] + strh r0, [r2, #0x38] + ldrh r0, [r4, #2] + strh r0, [r2, #0x3a] + ldrh r0, [r4, #4] + strh r0, [r2, #0x3c] + ldrh r0, [r4, #6] + strh r0, [r2, #0x3e] + ldrh r1, [r4, #8] + adds r0, r2, #0 + adds r0, #0x40 + strh r1, [r0] + ldrh r0, [r4, #0xa] + adds r1, r2, #0 + adds r1, #0x42 + strh r0, [r1] + ldrh r1, [r4, #0xc] + adds r0, r2, #0 + adds r0, #0x44 + strh r1, [r0] + ldrh r1, [r4, #0xe] + adds r0, #2 + strh r1, [r0] + add sp, #0x14 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08058C9C: .4byte gUnk_03003DE4 +_08058CA0: .4byte gUnk_02017AA0 +_08058CA4: .4byte gUnk_080C9160 +_08058CA8: .4byte gUnk_02017BA0 +_08058CAC: .4byte gUnk_03000F50 + + thumb_func_start sub_08058CB0 +sub_08058CB0: @ 0x08058CB0 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08058CD8 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r2, r0] + ldr r3, _08058CDC @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + subs r1, r1, r0 + movs r0, #0x32 + ldrsh r2, [r2, r0] + ldrh r0, [r3, #8] + subs r2, r2, r0 + cmp r1, #0x77 + bhi _08058CE0 + movs r1, #1 + cmp r2, #0x4f + bhi _08058CE8 + movs r1, #0 + b _08058CE8 + .align 2, 0 +_08058CD8: .4byte gLinkEntity +_08058CDC: .4byte gUnk_03000BF0 +_08058CE0: + movs r1, #3 + cmp r2, #0x4f + bhi _08058CE8 + movs r1, #2 +_08058CE8: + ldr r0, _08058CF8 @ =gUnk_08108300 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + str r0, [r4, #0x20] + strh r0, [r4, #0x26] + pop {r4, pc} + .align 2, 0 +_08058CF8: .4byte gUnk_08108300 + + thumb_func_start sub_08058CFC +sub_08058CFC: @ 0x08058CFC + push {r4, r5, lr} + ldr r5, _08058D2C @ =gLinkEntity + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldr r1, _08058D30 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r1, [r1, r2] + subs r4, r0, r1 + cmp r4, #0x4b + bhi _08058D1A + adds r0, r5, #0 + movs r1, #0xc0 + movs r2, #0x10 + bl sub_080044AE +_08058D1A: + cmp r4, #0x54 + bls _08058D28 + adds r0, r5, #0 + movs r1, #0xc0 + movs r2, #0 + bl sub_080044AE +_08058D28: + pop {r4, r5, pc} + .align 2, 0 +_08058D2C: .4byte gLinkEntity +_08058D30: .4byte gUnk_03000BF0 + + thumb_func_start sub_08058D34 +sub_08058D34: @ 0x08058D34 + push {r4, lr} + movs r0, #0x28 + bl sub_0801D714 + ldr r0, _08058DAC @ =gUnk_02017700 + movs r2, #0x90 + lsls r2, r2, #2 + adds r1, r0, r2 + movs r2, #0x20 + bl sub_0801D66C + ldr r2, _08058DB0 @ =gUnk_0200B644 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [r2] + movs r0, #0x16 + bl sub_0801D7EC + ldr r1, _08058DB4 @ =gUnk_03000F50 + ldrh r0, [r1] + movs r3, #0 + movs r2, #1 + movs r4, #0 + orrs r0, r2 + strh r0, [r1] + ldr r0, _08058DB8 @ =0x0000BC82 + strh r0, [r1, #0x20] + ldr r0, _08058DBC @ =0x00005E86 + strh r0, [r1, #0x14] + strh r3, [r1, #0x16] + strh r3, [r1, #0x18] + adds r2, r1, #0 + adds r2, #0x66 + ldr r0, _08058DC0 @ =0x00003456 + strh r0, [r2] + adds r1, #0x68 + ldr r0, _08058DC4 @ =0x00000909 + strh r0, [r1] + ldr r0, _08058DC8 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + ldr r0, _08058DCC @ =gUnk_02000070 + strb r4, [r0] + movs r0, #0x17 + bl GetProgressFlag + cmp r0, #0 + beq _08058DA8 + movs r0, #0x4a + bl sub_0801D7EC +_08058DA8: + pop {r4, pc} + .align 2, 0 +_08058DAC: .4byte gUnk_02017700 +_08058DB0: .4byte gUnk_0200B644 +_08058DB4: .4byte gUnk_03000F50 +_08058DB8: .4byte 0x0000BC82 +_08058DBC: .4byte 0x00005E86 +_08058DC0: .4byte 0x00003456 +_08058DC4: .4byte 0x00000909 +_08058DC8: .4byte gUnk_02033A90 +_08058DCC: .4byte gUnk_02000070 + + thumb_func_start sub_08058DD0 +sub_08058DD0: @ 0x08058DD0 + push {lr} + ldr r2, _08058DE4 @ =gUnk_08108308 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08058DE4: .4byte gUnk_08108308 + + thumb_func_start sub_08058DE8 +sub_08058DE8: @ 0x08058DE8 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08058DFC + bl sub_0805E780 + b _08058E14 +_08058DFC: + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3a] + bl sub_0808094C + ldrh r1, [r4, #0x38] + lsls r1, r1, #1 + adds r1, #4 + adds r0, r0, r1 + str r0, [r4, #0x30] + ldrh r0, [r0] + strh r0, [r4, #0x28] +_08058E14: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08058E18 +sub_08058E18: @ 0x08058E18 + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #0x30] + ldrh r0, [r2, #0x28] + ldrh r1, [r1] + cmp r0, r1 + beq _08058E30 + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + movs r0, #0xf + strb r0, [r2, #0xe] +_08058E30: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08058E34 +sub_08058E34: @ 0x08058E34 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08058E5E + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08058E58 + bl sub_0804B128 + bl sub_0804ADDC +_08058E58: + adds r0, r4, #0 + bl sub_0805E900 +_08058E5E: + pop {r4, pc} + + thumb_func_start sub_08058E60 +sub_08058E60: @ 0x08058E60 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08058E80 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08058E80 + adds r0, r4, #0 + bl sub_0805E900 + b _08058EC8 +_08058E80: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08058EC8 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08058E9E + movs r0, #0 + strb r0, [r4, #0xb] + movs r0, #0xff + bl sub_08078A90 + bl sub_08078B48 +_08058E9E: + ldrh r1, [r4, #0x3a] + movs r2, #0x3a + ldrsh r0, [r4, r2] + cmp r0, #0 + bne _08058EC4 + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08058EB4 + bl sub_080A3268 +_08058EB4: + ldrb r0, [r4, #0xa] + bl sub_0804B128 + bl sub_0804ADDC + bl sub_0805E780 + b _08058EC8 +_08058EC4: + subs r0, r1, #1 + strh r0, [r4, #0x3a] +_08058EC8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08058ECC +sub_08058ECC: @ 0x08058ECC + push {lr} + ldr r2, _08058EE0 @ =gUnk_08108314 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08058EE0: .4byte gUnk_08108314 + + thumb_func_start sub_08058EE4 +sub_08058EE4: @ 0x08058EE4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0xc] + cmp r0, #0 + bne _08058EF2 + movs r0, #1 + strb r0, [r6, #0xc] +_08058EF2: + ldrb r0, [r6, #0xb] + bl sub_0807CC3C + cmp r0, #0 + beq _08058F40 + movs r5, #0x94 + lsls r5, r5, #1 + ldrb r2, [r6, #0xb] + adds r2, #1 + adds r0, r5, #0 + movs r1, #0x68 + bl sub_08058F44 + movs r4, #0xac + lsls r4, r4, #1 + ldrb r2, [r6, #0xb] + adds r2, #2 + adds r0, r4, #0 + movs r1, #0x68 + bl sub_08058F44 + ldrb r2, [r6, #0xb] + adds r2, #3 + adds r0, r5, #0 + movs r1, #0x98 + bl sub_08058F44 + ldrb r2, [r6, #0xb] + adds r2, #4 + adds r0, r4, #0 + movs r1, #0x98 + bl sub_08058F44 + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_080A3268 + bl sub_0805E780 +_08058F40: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08058F44 +sub_08058F44: @ 0x08058F44 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, r2, #0 + bl sub_0807CC3C + cmp r0, #0 + bne _08058F80 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_080002A8 + cmp r0, #0x61 + bne _08058F80 + lsrs r1, r4, #4 + movs r2, #0x3f + ands r1, r2 + lsrs r0, r5, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + movs r0, #0x26 + movs r2, #1 + bl sub_0807B314 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08058F84 +_08058F80: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08058F84 +sub_08058F84: @ 0x08058F84 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0x21 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08058FA8 + ldr r0, _08058FAC @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + adds r1, r1, r4 + strh r1, [r2, #0x2e] + ldrh r0, [r0, #8] + adds r0, r0, r5 + strh r0, [r2, #0x32] +_08058FA8: + pop {r4, r5, pc} + .align 2, 0 +_08058FAC: .4byte gUnk_03000BF0 + + thumb_func_start sub_08058FB0 +sub_08058FB0: @ 0x08058FB0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08058FF6 + cmp r0, #1 + bgt _08058FC4 + cmp r0, #0 + beq _08058FCA + b _08059050 +_08058FC4: + cmp r0, #2 + beq _08059018 + b _08059050 +_08058FCA: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _08058FDC + movs r0, #7 + strb r0, [r4, #0xd] + movs r0, #6 + b _08058FE2 +_08058FDC: + movs r0, #8 + strb r0, [r4, #0xd] + movs r0, #2 +_08058FE2: + strb r0, [r4, #0xf] + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08059060 + adds r0, r4, #0 + bl sub_0805E900 + b _08059060 +_08058FF6: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08059060 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0xf0 + bl sub_0805E4E0 + adds r0, r4, #0 + bl sub_08059064 + b _08059060 +_08059018: + ldrb r0, [r4, #0xe] + cmp r0, #0x5a + bne _08059028 + movs r0, #2 + bl sub_08078A90 + bl sub_08077B20 +_08059028: + ldrb r2, [r4, #0xe] + cmp r2, #0x3c + bne _08059034 + ldr r1, _0805904C @ =gLinkEntity + ldrb r0, [r4, #0xf] + strb r0, [r1, #0x14] +_08059034: + subs r0, r2, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08059060 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xd] + movs r0, #5 + bl sub_080A7138 + b _08059060 + .align 2, 0 +_0805904C: .4byte gLinkEntity +_08059050: + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + movs r0, #1 + bl sub_08078A90 + bl sub_0805E780 +_08059060: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08059064 +sub_08059064: @ 0x08059064 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #0x53 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805908E + movs r0, #2 + strb r0, [r2, #0xe] + ldr r1, _08059090 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r4, #0x38] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + ldrh r4, [r4, #0x3a] + adds r0, r0, r4 + strh r0, [r2, #0x32] +_0805908E: + pop {r4, pc} + .align 2, 0 +_08059090: .4byte gUnk_03000BF0 + + thumb_func_start sub_08059094 +sub_08059094: @ 0x08059094 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080590B6 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x60 + bl sub_0807CBD0 + cmp r0, #0 + bne _080590CC + movs r0, #0x5f + bl sub_0807CCB4 + b _080590C8 +_080590B6: + movs r0, #0x60 + bl sub_0807CBD0 + cmp r0, #0 + beq _080590C8 + movs r0, #0x5f + bl sub_0807CD34 + movs r5, #1 +_080590C8: + cmp r5, #0 + beq _080590D8 +_080590CC: + ldr r0, _080590DC @ =gUnk_080F4B88 + bl sub_0804ADDC + adds r0, r4, #0 + bl sub_0805E900 +_080590D8: + pop {r4, r5, pc} + .align 2, 0 +_080590DC: .4byte gUnk_080F4B88 + + thumb_func_start sub_080590E0 +sub_080590E0: @ 0x080590E0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _080590F6 + movs r0, #1 + strb r0, [r1, #0xc] + adds r0, r1, #0 + movs r1, #6 + bl sub_0805E3A0 +_080590F6: + movs r0, #0x6c + bl sub_0807CBD0 + cmp r0, #0 + beq _0805911A + movs r0, #0x4b + bl sub_0807CBD0 + cmp r0, #0 + beq _08059112 + movs r0, #0x4a + bl sub_0807CCB4 + b _08059120 +_08059112: + movs r0, #0x4a + bl sub_0807CD34 + b _08059120 +_0805911A: + movs r0, #0x4a + bl sub_0807CD34 +_08059120: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08059124 +sub_08059124: @ 0x08059124 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08059174 + cmp r0, #1 + beq _080591AC + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080591C8 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + ldrb r2, [r4, #0xb] + bl sub_080A29C8 + ldrh r0, [r4, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + movs r2, #0x3f + ands r0, r2 + ldrh r1, [r4, #0x3a] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + ldrb r1, [r4, #0xb] + bl sub_0807BA8C + movs r0, #0xcd + bl sub_080A3268 + bl sub_0805E780 + b _080591C8 +_08059174: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08059182 + bl sub_0805E780 +_08059182: + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080591A8 @ =0x00000365 + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r3, #0x3f + ands r1, r3 + ldrh r2, [r4, #0x3a] + lsls r2, r2, #0x10 + asrs r2, r2, #0x14 + ands r2, r3 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r4, #0xb] + bl sub_0807B314 + b _080591C8 + .align 2, 0 +_080591A8: .4byte 0x00000365 +_080591AC: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _080591C8 + adds r0, r4, #0 + movs r1, #0x4b + bl sub_0805E4E0 + movs r0, #0x2d + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_080591C8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080591CC +sub_080591CC: @ 0x080591CC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080591F4 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + strb r0, [r4, #0xb] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08059214 + ldr r1, _080591F0 @ =gUnk_02034350 + ldrh r0, [r4, #0x3a] + b _08059218 + .align 2, 0 +_080591F0: .4byte gUnk_02034350 +_080591F4: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + adds r1, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, r1 + beq _0805921A + strb r1, [r4, #0xb] + cmp r1, #0 + beq _08059214 + ldr r1, _08059210 @ =gUnk_02034350 + ldrh r0, [r4, #0x3a] + b _08059218 + .align 2, 0 +_08059210: .4byte gUnk_02034350 +_08059214: + ldr r1, _0805921C @ =gUnk_02034350 + ldrh r0, [r4, #0x38] +_08059218: + strh r0, [r1, #0xc] +_0805921A: + pop {r4, pc} + .align 2, 0 +_0805921C: .4byte gUnk_02034350 + + thumb_func_start sub_08059220 +sub_08059220: @ 0x08059220 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r2, _08059268 @ =gUnk_02034350 + movs r0, #0 + strh r0, [r2, #0xc] + ldr r4, _0805926C @ =gUnk_08108354 + ldrh r0, [r4] + ldr r1, _08059270 @ =0x0000FFFF + cmp r0, r1 + beq _08059254 + adds r7, r2, #0 + adds r6, r1, #0 +_08059238: + ldrh r0, [r4] + ldrh r1, [r4, #2] + ldrh r2, [r4, #4] + ldrh r3, [r4, #6] + bl sub_0800293E + cmp r0, #0 + beq _0805924C + ldrh r0, [r4, #8] + strh r0, [r7, #0xc] +_0805924C: + adds r4, #0xa + ldrh r0, [r4] + cmp r0, r6 + bne _08059238 +_08059254: + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08059266 + movs r0, #1 + strb r0, [r5, #0xc] + ldr r1, _08059274 @ =gUnk_02033A90 + ldr r0, _08059268 @ =gUnk_02034350 + ldrh r0, [r0, #0xc] + strh r0, [r1, #0xa] +_08059266: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08059268: .4byte gUnk_02034350 +_0805926C: .4byte gUnk_08108354 +_08059270: .4byte 0x0000FFFF +_08059274: .4byte gUnk_02033A90 + + thumb_func_start sub_08059278 +sub_08059278: @ 0x08059278 + push {lr} + movs r0, #9 + movs r1, #0xf + movs r2, #6 + bl sub_0805EB00 + cmp r0, #0 + beq _0805928C + bl sub_08058ECC +_0805928C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08059290 +sub_08059290: @ 0x08059290 + movs r1, #1 + strb r1, [r0, #0xc] + ldr r1, _0805929C @ =gUnk_03000BF0 + ldr r0, _080592A0 @ =gLinkEntity + str r0, [r1, #0x30] + bx lr + .align 2, 0 +_0805929C: .4byte gUnk_03000BF0 +_080592A0: .4byte gLinkEntity + + thumb_func_start sub_080592A4 +sub_080592A4: @ 0x080592A4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080592C8 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _080592EA + adds r0, r4, #0 + bl sub_080592EC + bl sub_0805E780 + b _080592EA +_080592C8: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _080592EA + adds r0, r4, #0 + bl sub_080592EC + adds r0, r4, #0 + bl sub_0805930C + movs r0, #0xb7 + lsls r0, r0, #1 + bl sub_080A3268 + bl sub_0805E780 +_080592EA: + pop {r4, pc} + + thumb_func_start sub_080592EC +sub_080592EC: @ 0x080592EC + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x38] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + movs r2, #0x3f + ands r0, r2 + ldrh r1, [r1, #0x3a] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + bl sub_08059340 + pop {pc} + + thumb_func_start sub_0805930C +sub_0805930C: @ 0x0805930C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xf + movs r1, #0x43 + movs r2, #0x40 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805933A + ldr r1, _0805933C @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r4, #0x38] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + ldrh r4, [r4, #0x3a] + adds r0, r0, r4 + strh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] +_0805933A: + pop {r4, pc} + .align 2, 0 +_0805933C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08059340 +sub_08059340: @ 0x08059340 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x1d + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + subs r4, #0x40 + movs r0, #0 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08059368 +sub_08059368: @ 0x08059368 + push {lr} + adds r2, r0, #0 + movs r0, #1 + strb r0, [r2, #0xc] + ldr r1, _08059388 @ =gUnk_02022780 + ldrh r0, [r2, #0x3c] + ldrh r1, [r1, #0x28] + cmp r0, r1 + bne _08059384 + ldrh r0, [r2, #0x3e] + bl sub_0807CCC8 + bl sub_0805E780 +_08059384: + pop {pc} + .align 2, 0 +_08059388: .4byte gUnk_02022780 + + thumb_func_start sub_0805938C +sub_0805938C: @ 0x0805938C + push {r4, lr} + adds r4, r0, #0 + bl sub_080593CC + cmp r0, #0 + beq _080593C8 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _080593CA + movs r1, #0x38 + ldrsh r0, [r4, r1] + ldr r2, _080593C4 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + movs r3, #0x3a + ldrsh r1, [r4, r3] + ldrh r2, [r2, #8] + subs r1, r1, r2 + movs r2, #0xff + movs r3, #0xa + bl sub_080806BC + b _080593CA + .align 2, 0 +_080593C4: .4byte gUnk_03000BF0 +_080593C8: + strb r0, [r4, #0xe] +_080593CA: + pop {r4, pc} + + thumb_func_start sub_080593CC +sub_080593CC: @ 0x080593CC + push {r4, lr} + adds r3, r0, #0 + ldr r2, _08059418 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08059420 + adds r0, r2, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08059420 + ldr r4, _0805941C @ =gLinkEntity + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _08059420 + adds r0, r2, #0 + adds r0, #0x90 + ldrh r1, [r0] + movs r0, #0xf0 + lsls r0, r0, #4 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #3 + cmp r0, r1 + bne _08059420 + movs r0, #0x38 + ldrsh r1, [r3, r0] + movs r0, #0x3a + ldrsh r2, [r3, r0] + adds r2, #0xc + adds r0, r4, #0 + movs r3, #6 + bl sub_0806FCB8 + b _08059422 + .align 2, 0 +_08059418: .4byte gUnk_03003F80 +_0805941C: .4byte gLinkEntity +_08059420: + movs r0, #0 +_08059422: + pop {r4, pc} + + thumb_func_start sub_08059424 +sub_08059424: @ 0x08059424 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _08059436 + bl sub_0805E780 +_08059436: + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _08059476 + movs r0, #0xf + movs r1, #0x35 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08059476 + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldr r1, _08059478 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r4, #0x38] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + ldrh r4, [r4, #0x3a] + adds r0, r0, r4 + strh r0, [r2, #0x32] + movs r0, #0xd8 + lsls r0, r0, #1 + bl sub_08004488 + bl sub_0805E780 +_08059476: + pop {r4, pc} + .align 2, 0 +_08059478: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805947C +sub_0805947C: @ 0x0805947C + push {lr} + ldrh r0, [r0, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + bne _080594CE + movs r0, #3 + bl sub_08078A90 + ldr r1, _080594B0 @ =gUnk_03000BF0 + ldrh r0, [r1] + cmp r0, #0 + bne _080594D2 + ldr r0, _080594B4 @ =gUnk_02034350 + ldrb r0, [r0] + cmp r0, #0 + beq _080594BC + ldr r0, _080594B8 @ =gUnk_08108380 + ldrb r1, [r1, #0x10] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_0807DB2C + b _080594CE + .align 2, 0 +_080594B0: .4byte gUnk_03000BF0 +_080594B4: .4byte gUnk_02034350 +_080594B8: .4byte gUnk_08108380 +_080594BC: + ldr r1, _080594D4 @ =gUnk_08108380 + ldr r0, _080594D8 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_0807DB2C +_080594CE: + bl sub_0805E780 +_080594D2: + pop {pc} + .align 2, 0 +_080594D4: .4byte gUnk_08108380 +_080594D8: .4byte gLinkEntity + + thumb_func_start sub_080594DC +sub_080594DC: @ 0x080594DC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080594F2 + cmp r0, #1 + bgt _0805951C + cmp r0, #0 + bne _0805951C + movs r0, #1 + strb r0, [r4, #0xc] +_080594F2: + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + beq _08059540 + movs r0, #0x8c + lsls r0, r0, #4 + movs r1, #0x85 + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _08059540 + movs r0, #2 + strb r0, [r4, #0xc] + ldr r0, _08059518 @ =0x00000B0F + bl sub_080186C0 + b _08059540 + .align 2, 0 +_08059518: .4byte 0x00000B0F +_0805951C: + ldr r0, _08059544 @ =gUnk_02033A90 + adds r0, #0x28 + ldrb r0, [r0] + cmp r0, #0xff + beq _0805952A + bl sub_0805E780 +_0805952A: + movs r0, #0x8c + lsls r0, r0, #4 + movs r1, #0x85 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08059540 + bl sub_0801855C + bl sub_0805E780 +_08059540: + pop {r4, pc} + .align 2, 0 +_08059544: .4byte gUnk_02033A90 + + thumb_func_start sub_08059548 +sub_08059548: @ 0x08059548 + push {lr} + movs r1, #6 + bl sub_0805E3A0 + ldr r0, _08059568 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0x16 + bne _0805955C + bl sub_0805E780 +_0805955C: + ldr r2, _0805956C @ =gUnk_03000FF0 + ldrh r1, [r2] + movs r0, #4 + orrs r0, r1 + strh r0, [r2] + pop {pc} + .align 2, 0 +_08059568: .4byte gLinkEntity +_0805956C: .4byte gUnk_03000FF0 + + thumb_func_start sub_08059570 +sub_08059570: @ 0x08059570 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + bne _080595C8 + movs r6, #1 + strb r6, [r4, #0xc] + adds r0, #0x21 + strb r5, [r0] + adds r0, #2 + strb r5, [r0] + bl sub_0805986C + cmp r0, #0 + beq _080595A8 + adds r0, r4, #0 + adds r0, #0x20 + strb r6, [r0] + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #2 + strb r0, [r1] + ldr r0, _080595A4 @ =gUnk_0200B650 + str r5, [r0] + b _080595B8 + .align 2, 0 +_080595A4: .4byte gUnk_0200B650 +_080595A8: + adds r0, r4, #0 + adds r0, #0x20 + movs r1, #0x1f + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #5 + strb r0, [r1] +_080595B8: + ldr r0, _080595DC @ =gUnk_02034350 + movs r1, #0xff + strb r1, [r0, #0x10] + ldr r1, _080595E0 @ =sub_080595E4 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_080595C8: + adds r0, r4, #0 + bl sub_08059608 + adds r0, r4, #0 + bl sub_08059690 + adds r0, r4, #0 + bl sub_080596E0 + pop {r4, r5, r6, pc} + .align 2, 0 +_080595DC: .4byte gUnk_02034350 +_080595E0: .4byte sub_080595E4 + + thumb_func_start sub_080595E4 +sub_080595E4: @ 0x080595E4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08059604 @ =gUnk_02034350 + movs r0, #0xff + strb r0, [r1, #0x10] + adds r0, r4, #0 + bl sub_08059690 + adds r0, r4, #0 + bl sub_080596E0 + movs r0, #0 + bl sub_0805B4D0 + pop {r4, pc} + .align 2, 0 +_08059604: .4byte gUnk_02034350 + + thumb_func_start sub_08059608 +sub_08059608: @ 0x08059608 + push {r4, lr} + adds r4, r0, #0 + adds r4, #0x23 + ldrb r0, [r4] + cmp r0, #0 + beq _08059638 + subs r0, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08059682 + ldr r0, _08059634 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + adds r2, #4 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1] + bl sub_080A3268 + b _08059682 + .align 2, 0 +_08059634: .4byte gUnk_02033A90 +_08059638: + bl sub_0805986C + cmp r0, #0 + beq _08059668 + ldr r0, _0805965C @ =gUnk_02033A90 + ldr r2, _08059660 @ =0x00000864 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, #0x1e + beq _08059682 + movs r0, #0x1e + str r0, [r1] + movs r0, #0x78 + strb r0, [r4] + ldr r0, _08059664 @ =0x800D0000 + bl sub_080A3268 + b _08059682 + .align 2, 0 +_0805965C: .4byte gUnk_02033A90 +_08059660: .4byte 0x00000864 +_08059664: .4byte 0x800D0000 +_08059668: + ldr r0, _08059684 @ =gUnk_02033A90 + ldr r2, _08059688 @ =0x00000864 + adds r1, r0, r2 + ldr r0, [r1] + cmp r0, #0x37 + beq _08059682 + movs r0, #0x37 + str r0, [r1] + movs r0, #0x78 + strb r0, [r4] + ldr r0, _0805968C @ =0x800D0000 + bl sub_080A3268 +_08059682: + pop {r4, pc} + .align 2, 0 +_08059684: .4byte gUnk_02033A90 +_08059688: .4byte 0x00000864 +_0805968C: .4byte 0x800D0000 + + thumb_func_start sub_08059690 +sub_08059690: @ 0x08059690 + push {r4, lr} + adds r4, r0, #0 + bl sub_08059844 + cmp r0, #0 + beq _080596BC + adds r4, #0x20 + ldrb r0, [r4] + cmp r0, #0 + beq _080596D8 + ldr r0, _080596B8 @ =gUnk_085A7320 + movs r2, #0xd0 + lsls r2, r2, #1 + adds r1, r0, r2 + ldrb r2, [r4] + bl sub_08059894 + ldrb r0, [r4] + subs r0, #1 + b _080596D6 + .align 2, 0 +_080596B8: .4byte gUnk_085A7320 +_080596BC: + adds r4, #0x20 + ldrb r0, [r4] + cmp r0, #0x1f + bhi _080596D8 + ldr r0, _080596DC @ =gUnk_085A7320 + movs r2, #0xd0 + lsls r2, r2, #1 + adds r1, r0, r2 + ldrb r2, [r4] + bl sub_08059894 + ldrb r0, [r4] + adds r0, #1 +_080596D6: + strb r0, [r4] +_080596D8: + pop {r4, pc} + .align 2, 0 +_080596DC: .4byte gUnk_085A7320 + + thumb_func_start sub_080596E0 +sub_080596E0: @ 0x080596E0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _08059730 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _080596FC + ldr r0, _08059734 @ =gUnk_03000F50 + ldrh r1, [r0, #0x16] + adds r1, #8 + movs r2, #0x1f + ands r1, r2 + strh r1, [r0, #0x16] +_080596FC: + bl sub_0805986C + cmp r0, #0 + beq _08059740 + adds r0, r4, #0 + adds r0, #0x21 + ldrb r1, [r0] + adds r5, r0, #0 + adds r2, r4, #0 + adds r2, #0x22 + cmp r1, #0 + bne _08059764 + ldrb r0, [r2] + cmp r0, #2 + beq _08059764 + movs r0, #1 + strb r0, [r5] + movs r0, #3 + strb r0, [r2] + ldr r0, _08059738 @ =gUnk_08108390 + ldrb r0, [r0, #3] + strb r0, [r4, #0xe] + ldr r0, _0805973C @ =gUnk_0200B650 + str r1, [r0] + b _08059764 + .align 2, 0 +_08059730: .4byte gUnk_030010A0 +_08059734: .4byte gUnk_03000F50 +_08059738: .4byte gUnk_08108390 +_0805973C: .4byte gUnk_0200B650 +_08059740: + adds r0, r4, #0 + adds r0, #0x21 + ldrb r1, [r0] + adds r5, r0, #0 + adds r2, r4, #0 + adds r2, #0x22 + cmp r1, #0 + bne _08059764 + ldrb r0, [r2] + cmp r0, #5 + beq _08059764 + movs r0, #2 + strb r0, [r5] + ldr r1, _08059774 @ =gUnk_08108390 + ldrb r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] +_08059764: + adds r6, r5, #0 + ldrb r0, [r6] + cmp r0, #1 + beq _08059778 + cmp r0, #2 + beq _080597A8 + b _080597D0 + .align 2, 0 +_08059774: .4byte gUnk_08108390 +_08059778: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _080597D0 + ldr r1, _080597A4 @ =gUnk_08108390 + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] + ands r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + ldrb r0, [r2] + cmp r0, #2 + bne _080597D0 + strb r5, [r6] + b _080597D0 + .align 2, 0 +_080597A4: .4byte gUnk_08108390 +_080597A8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080597D0 + ldr r1, _080597EC @ =gUnk_08108390 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ands r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0xe] + ldrb r0, [r2] + cmp r0, #5 + bne _080597D0 + strb r6, [r5] +_080597D0: + ldr r3, _080597F0 @ =gUnk_02034350 + ldrb r1, [r2] + ldrb r0, [r3, #0x10] + cmp r0, r1 + beq _08059838 + strb r1, [r3, #0x10] + ldrb r0, [r2] + cmp r0, #4 + beq _08059800 + cmp r0, #4 + ble _080597F4 + cmp r0, #5 + beq _08059824 + b _08059838 + .align 2, 0 +_080597EC: .4byte gUnk_08108390 +_080597F0: .4byte gUnk_02034350 +_080597F4: + cmp r0, #0 + blt _08059838 + adds r0, #0x2b + bl sub_0801D7EC + b _08059838 +_08059800: + ldr r4, _0805981C @ =gUnk_02001A40 + movs r5, #0x80 + lsls r5, r5, #4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0801D630 + ldr r1, _08059820 @ =0x0600E800 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08000E96 + b _08059838 + .align 2, 0 +_0805981C: .4byte gUnk_02001A40 +_08059820: .4byte 0x0600E800 +_08059824: + ldr r0, _0805983C @ =gUnk_0200B650 + ldr r1, _08059840 @ =gUnk_03000F64 + str r1, [r0] + subs r1, #0x14 + ldrh r2, [r1] + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + orrs r0, r2 + strh r0, [r1] +_08059838: + pop {r4, r5, r6, pc} + .align 2, 0 +_0805983C: .4byte gUnk_0200B650 +_08059840: .4byte gUnk_03000F64 + + thumb_func_start sub_08059844 +sub_08059844: @ 0x08059844 + push {lr} + movs r3, #0 + ldr r0, _08059864 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r2, _08059868 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + ldrh r0, [r2, #0x1e] + lsrs r0, r0, #1 + cmp r1, r0 + ble _0805985E + movs r3, #1 +_0805985E: + adds r0, r3, #0 + pop {pc} + .align 2, 0 +_08059864: .4byte gLinkEntity +_08059868: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805986C +sub_0805986C: @ 0x0805986C + push {lr} + movs r2, #0 + ldr r0, _0805988C @ =gLinkEntity + movs r3, #0x2e + ldrsh r1, [r0, r3] + ldr r0, _08059890 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + subs r1, r1, r0 + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + ble _08059886 + movs r2, #1 +_08059886: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_0805988C: .4byte gLinkEntity +_08059890: .4byte gUnk_03000BF0 + + thumb_func_start sub_08059894 +sub_08059894: @ 0x08059894 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r0, _080598E8 @ =gUnk_020176E0 + mov sb, r0 + movs r6, #0 + lsls r2, r2, #0x18 + mov r8, r2 +_080598AA: + adds r0, r5, #0 + adds r1, r4, #0 + mov r2, sb + mov r7, r8 + lsrs r3, r7, #0x18 + bl sub_08059960 + adds r5, #0x20 + adds r4, #0x20 + movs r0, #0x20 + add sb, r0 + adds r6, #1 + cmp r6, #0xc + bls _080598AA + ldr r0, _080598EC @ =gUnk_02017700 + movs r2, #0x90 + lsls r2, r2, #2 + adds r1, r0, r2 + movs r2, #0x20 + bl sub_0801D66C + ldr r2, _080598F0 @ =gUnk_0200B644 + ldr r0, [r2] + ldr r1, _080598F4 @ =0x00207FFC + orrs r0, r1 + str r0, [r2] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080598E8: .4byte gUnk_020176E0 +_080598EC: .4byte gUnk_02017700 +_080598F0: .4byte gUnk_0200B644 +_080598F4: .4byte 0x00207FFC + + thumb_func_start sub_080598F8 +sub_080598F8: @ 0x080598F8 + push {r4, r5, r6, r7, lr} + movs r4, #0x1f + adds r3, r0, #0 + ands r3, r4 + lsls r6, r3, #8 + adds r3, r6, #0 + muls r3, r2, r3 + lsrs r6, r3, #5 + adds r3, r1, #0 + ands r3, r4 + lsls r3, r3, #8 + movs r4, #0x20 + subs r4, r4, r2 + muls r3, r4, r3 + lsrs r3, r3, #5 + adds r3, r6, r3 + lsrs r6, r3, #8 + movs r5, #0xf8 + lsls r5, r5, #2 + adds r3, r0, #0 + ands r3, r5 + lsls r7, r3, #3 + adds r3, r7, #0 + muls r3, r2, r3 + lsrs r7, r3, #5 + adds r3, r1, #0 + ands r3, r5 + lsls r3, r3, #3 + muls r3, r4, r3 + lsrs r3, r3, #5 + adds r3, r7, r3 + lsrs r7, r3, #8 + movs r3, #0xf8 + lsls r3, r3, #7 + ands r0, r3 + lsrs r5, r0, #2 + adds r0, r5, #0 + muls r0, r2, r0 + lsrs r5, r0, #5 + ands r1, r3 + lsrs r0, r1, #2 + muls r0, r4, r0 + lsrs r0, r0, #5 + adds r0, r5, r0 + lsrs r5, r0, #8 + lsls r0, r7, #5 + orrs r6, r0 + lsls r0, r5, #0xa + orrs r6, r0 + adds r0, r6, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08059960 +sub_08059960: @ 0x08059960 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + mov r8, r3 + movs r7, #0 +_08059974: + ldrh r0, [r6] + adds r6, #2 + ldrh r1, [r5] + adds r5, #2 + mov r2, r8 + bl sub_080598F8 + strh r0, [r4] + adds r4, #2 + adds r7, #1 + cmp r7, #0xf + bls _08059974 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08059994 +sub_08059994: @ 0x08059994 + push {lr} + bl sub_0805986C + cmp r0, #0 + beq _080599AE + movs r0, #0x5b + bl sub_0801D714 + ldr r0, _080599B0 @ =gUnk_02033A90 + ldr r1, _080599B4 @ =0x00000864 + adds r0, r0, r1 + movs r1, #0x1e + str r1, [r0] +_080599AE: + pop {pc} + .align 2, 0 +_080599B0: .4byte gUnk_02033A90 +_080599B4: .4byte 0x00000864 + + thumb_func_start sub_080599B8 +sub_080599B8: @ 0x080599B8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080599D6 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _080599EA + bl sub_0805E780 + b _080599EA +_080599D6: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _080599EA + ldrh r0, [r4, #0x3c] + bl sub_0807CCC8 + bl sub_0805E780 +_080599EA: + pop {r4, pc} + + thumb_func_start sub_080599EC +sub_080599EC: @ 0x080599EC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08059A20 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #0xff + strb r0, [r1] + subs r1, #1 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + ldr r1, _08059A28 @ =sub_08059A2C + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 +_08059A20: + adds r0, r4, #0 + bl sub_08059A58 + pop {r4, pc} + .align 2, 0 +_08059A28: .4byte sub_08059A2C + + thumb_func_start sub_08059A2C +sub_08059A2C: @ 0x08059A2C + push {lr} + adds r2, r0, #0 + ldr r1, _08059A54 @ =gUnk_02034350 + movs r0, #0xff + strb r0, [r1, #0x12] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1, #0x11] + strb r0, [r1, #0x10] + adds r1, r2, #0 + adds r1, #0x22 + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08059A58 + pop {pc} + .align 2, 0 +_08059A54: .4byte gUnk_02034350 + + thumb_func_start sub_08059A58 +sub_08059A58: @ 0x08059A58 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08059AC4 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0x15 + beq _08059AD4 + adds r4, r5, #0 + adds r4, #0x20 + ldr r3, _08059AC8 @ =gUnk_08108398 + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_08059C8C + cmp r0, #0 + beq _08059A80 + ldrb r1, [r4] + movs r0, #0 + bl sub_08059CC0 +_08059A80: + adds r4, r5, #0 + adds r4, #0x21 + ldr r3, _08059ACC @ =gUnk_081083AE + adds r0, r5, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_08059C8C + cmp r0, #0 + beq _08059AA6 + ldrb r1, [r4] + movs r0, #1 + bl sub_08059CC0 + ldrb r0, [r4] + cmp r0, #2 + bne _08059AA6 + bl sub_08059B18 +_08059AA6: + adds r4, r5, #0 + adds r4, #0x22 + ldr r3, _08059AD0 @ =gUnk_081083C4 + adds r0, r5, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_08059C8C + cmp r0, #0 + beq _08059B0C + ldrb r1, [r4] + movs r0, #2 + bl sub_08059CC0 + b _08059B0C + .align 2, 0 +_08059AC4: .4byte gUnk_03000BF0 +_08059AC8: .4byte gUnk_08108398 +_08059ACC: .4byte gUnk_081083AE +_08059AD0: .4byte gUnk_081083C4 +_08059AD4: + adds r4, r5, #0 + adds r4, #0x20 + ldr r3, _08059B10 @ =gUnk_081083DA + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_08059C8C + cmp r0, #0 + beq _08059AF0 + ldrb r1, [r4] + movs r0, #0 + bl sub_08059CC0 +_08059AF0: + adds r4, r5, #0 + adds r4, #0x22 + ldr r3, _08059B14 @ =gUnk_081083F2 + adds r0, r5, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_08059C8C + cmp r0, #0 + beq _08059B0C + ldrb r1, [r4] + movs r0, #2 + bl sub_08059CC0 +_08059B0C: + pop {r4, r5, pc} + .align 2, 0 +_08059B10: .4byte gUnk_081083DA +_08059B14: .4byte gUnk_081083F2 + + thumb_func_start sub_08059B18 +sub_08059B18: @ 0x08059B18 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + movs r0, #0x18 + bl GetProgressFlag + cmp r0, #0 + beq _08059BEC + movs r6, #0 + movs r0, #0x3f + mov sb, r0 + movs r2, #0xc4 + lsls r2, r2, #1 + mov r8, r2 +_08059B38: + movs r5, #0 + lsls r1, r6, #4 + mov r2, r8 + lsrs r0, r2, #4 + mov r2, sb + ands r0, r2 + lsls r3, r0, #6 + movs r7, #0x28 + ldr r0, _08059BD8 @ =0x000004AB + adds r4, r1, r0 +_08059B4C: + lsrs r1, r7, #4 + mov r2, sb + ands r1, r2 + orrs r1, r3 + adds r0, r4, #0 + movs r2, #1 + str r3, [sp] + bl sub_0807B9B8 + adds r7, #0x10 + adds r4, #1 + adds r5, #1 + ldr r3, [sp] + cmp r5, #3 + bls _08059B4C + movs r0, #0x10 + add r8, r0 + adds r6, #1 + cmp r6, #3 + bls _08059B38 + movs r6, #0 + movs r3, #0x3f +_08059B78: + movs r5, #0 + lsls r1, r6, #4 + adds r6, #1 + mov r8, r6 + movs r2, #0xc4 + lsls r2, r2, #1 + adds r0, r1, r2 + lsrs r0, r0, #4 + ands r0, r3 + lsls r7, r0, #6 + movs r6, #0x28 + movs r0, #0x88 + lsls r0, r0, #3 + adds r4, r1, r0 +_08059B94: + lsrs r1, r6, #4 + ands r1, r3 + orrs r1, r7 + adds r0, r4, #0 + movs r2, #2 + str r3, [sp] + bl sub_0807B9B8 + adds r6, #0x10 + adds r4, #1 + adds r5, #1 + ldr r3, [sp] + cmp r5, #3 + bls _08059B94 + mov r6, r8 + cmp r6, #2 + bls _08059B78 + ldr r1, _08059BDC @ =0x000005C2 + movs r0, #0xd6 + movs r2, #2 + bl sub_0807B9B8 + ldr r1, _08059BE0 @ =0x000005C3 + movs r0, #0xd7 + movs r2, #2 + bl sub_0807B9B8 + ldr r0, _08059BE4 @ =gUnk_086E8460 + ldr r1, _08059BE8 @ =0x06001800 + movs r2, #0x80 + lsls r2, r2, #4 + bl sub_08000E96 + b _08059C5E + .align 2, 0 +_08059BD8: .4byte 0x000004AB +_08059BDC: .4byte 0x000005C2 +_08059BE0: .4byte 0x000005C3 +_08059BE4: .4byte gUnk_086E8460 +_08059BE8: .4byte 0x06001800 +_08059BEC: + movs r0, #0x19 + bl GetProgressFlag + cmp r0, #0 + beq _08059C5E + movs r6, #0 + movs r3, #0x3f +_08059BFA: + movs r5, #0 + lsls r1, r6, #4 + adds r6, #1 + mov r8, r6 + movs r2, #0xc4 + lsls r2, r2, #1 + adds r0, r1, r2 + lsrs r0, r0, #4 + ands r0, r3 + lsls r7, r0, #6 + movs r6, #0x28 + ldr r0, _08059C68 @ =0x000004A6 + adds r4, r1, r0 +_08059C14: + lsrs r1, r6, #4 + ands r1, r3 + orrs r1, r7 + adds r0, r4, #0 + movs r2, #1 + str r3, [sp] + bl sub_0807B9B8 + adds r6, #0x10 + adds r4, #1 + adds r5, #1 + ldr r3, [sp] + cmp r5, #3 + bls _08059C14 + mov r6, r8 + cmp r6, #4 + bls _08059BFA + ldr r0, _08059C6C @ =0x00000444 + ldr r1, _08059C70 @ =0x00000602 + movs r2, #2 + bl sub_0807B9B8 + ldr r0, _08059C74 @ =0x00000445 + ldr r1, _08059C78 @ =0x00000605 + movs r2, #2 + bl sub_0807B9B8 + ldr r0, _08059C7C @ =0x00000454 + ldr r1, _08059C80 @ =0x00000642 + movs r2, #2 + bl sub_0807B9B8 + ldr r0, _08059C84 @ =0x00000455 + ldr r1, _08059C88 @ =0x00000645 + movs r2, #2 + bl sub_0807B9B8 +_08059C5E: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08059C68: .4byte 0x000004A6 +_08059C6C: .4byte 0x00000444 +_08059C70: .4byte 0x00000602 +_08059C74: .4byte 0x00000445 +_08059C78: .4byte 0x00000605 +_08059C7C: .4byte 0x00000454 +_08059C80: .4byte 0x00000642 +_08059C84: .4byte 0x00000455 +_08059C88: .4byte 0x00000645 + + thumb_func_start sub_08059C8C +sub_08059C8C: @ 0x08059C8C + push {r4, r5, lr} + adds r5, r1, #0 + adds r4, r2, #0 + adds r0, r3, #0 + bl sub_08056300 + adds r2, r0, #0 + strb r2, [r4] + lsls r0, r2, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0xff + beq _08059CBC + ldr r0, _08059CB8 @ =gUnk_02034350 + adds r0, #0x10 + adds r1, r5, r0 + ldrb r0, [r1] + cmp r0, r3 + beq _08059CBC + strb r2, [r1] + movs r0, #1 + b _08059CBE + .align 2, 0 +_08059CB8: .4byte gUnk_02034350 +_08059CBC: + movs r0, #0 +_08059CBE: + pop {r4, r5, pc} + + thumb_func_start sub_08059CC0 +sub_08059CC0: @ 0x08059CC0 + push {r4, r5, r6, lr} + adds r2, r1, #0 + ldr r1, _08059CDC @ =gUnk_02034350 + adds r1, #0x10 + adds r0, r0, r1 + strb r2, [r0] + ldr r0, _08059CE0 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0x15 + beq _08059CE8 + lsls r1, r2, #4 + ldr r0, _08059CE4 @ =gUnk_08108408 + b _08059CEC + .align 2, 0 +_08059CDC: .4byte gUnk_02034350 +_08059CE0: .4byte gUnk_03000BF0 +_08059CE4: .4byte gUnk_08108408 +_08059CE8: + lsls r1, r2, #4 + ldr r0, _08059D10 @ =gUnk_08108468 +_08059CEC: + adds r6, r1, r0 + ldr r0, [r6] + ldr r4, _08059D14 @ =gUnk_085A2E80 + adds r0, r0, r4 + ldr r1, [r6, #4] + movs r5, #0x80 + lsls r5, r5, #5 + adds r2, r5, #0 + bl sub_08000E96 + ldr r0, [r6, #8] + adds r0, r0, r4 + ldr r1, [r6, #0xc] + adds r2, r5, #0 + bl sub_08000E96 + pop {r4, r5, r6, pc} + .align 2, 0 +_08059D10: .4byte gUnk_08108468 +_08059D14: .4byte gUnk_085A2E80 + + thumb_func_start sub_08059D18 +sub_08059D18: @ 0x08059D18 + push {r4, lr} + ldr r0, _08059D68 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0x15 + beq _08059D78 + ldr r0, _08059D6C @ =gUnk_08108398 + bl sub_08056300 + adds r4, r0, #0 + cmp r4, #0xff + beq _08059D36 + movs r0, #0 + adds r1, r4, #0 + bl sub_08059CC0 +_08059D36: + ldr r0, _08059D70 @ =gUnk_081083AE + bl sub_08056300 + adds r4, r0, #0 + cmp r4, #0xff + beq _08059D52 + movs r0, #1 + adds r1, r4, #0 + bl sub_08059CC0 + cmp r4, #2 + bne _08059D52 + bl sub_08059B18 +_08059D52: + ldr r0, _08059D74 @ =gUnk_081083C4 + bl sub_08056300 + adds r4, r0, #0 + cmp r4, #0xff + beq _08059DA0 + movs r0, #2 + adds r1, r4, #0 + bl sub_08059CC0 + b _08059DA0 + .align 2, 0 +_08059D68: .4byte gUnk_03000BF0 +_08059D6C: .4byte gUnk_08108398 +_08059D70: .4byte gUnk_081083AE +_08059D74: .4byte gUnk_081083C4 +_08059D78: + ldr r0, _08059DA4 @ =gUnk_081083DA + bl sub_08056300 + adds r4, r0, #0 + cmp r4, #0xff + beq _08059D8C + movs r0, #0 + adds r1, r4, #0 + bl sub_08059CC0 +_08059D8C: + ldr r0, _08059DA8 @ =gUnk_081083F2 + bl sub_08056300 + adds r4, r0, #0 + cmp r4, #0xff + beq _08059DA0 + movs r0, #2 + adds r1, r4, #0 + bl sub_08059CC0 +_08059DA0: + pop {r4, pc} + .align 2, 0 +_08059DA4: .4byte gUnk_081083DA +_08059DA8: .4byte gUnk_081083F2 + + thumb_func_start sub_08059DAC +sub_08059DAC: @ 0x08059DAC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08059DBE + movs r0, #1 + strb r0, [r5, #0xc] +_08059DBE: + ldr r1, _08059E4C @ =gUnk_03000BF0 + ldrb r0, [r1, #4] + ldr r4, _08059E50 @ =gUnk_081084C8 + cmp r0, #0x15 + bne _08059DCA + ldr r4, _08059E54 @ =gUnk_08108530 +_08059DCA: + movs r7, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _08059E46 + mov r8, r1 +_08059DD4: + movs r6, #1 + lsls r6, r7 + ldr r0, [r5, #0x20] + ands r0, r6 + cmp r0, #0 + bne _08059E38 + ldrh r0, [r4] + ldrh r1, [r4, #2] + movs r2, #0x10 + movs r3, #0x10 + bl sub_0800290E + cmp r0, #0 + beq _08059E38 + ldrb r1, [r4, #4] + movs r0, #0x1c + adds r2, r7, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08059E38 + ldrb r0, [r4, #5] + strb r0, [r2, #0x1e] + ldrh r0, [r4] + mov r1, r8 + ldrh r1, [r1, #6] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + ldrh r0, [r4, #2] + mov r3, r8 + ldrh r3, [r3, #8] + adds r0, r0, r3 + strh r0, [r2, #0x32] + str r5, [r2, #0x50] + ldrh r1, [r4] + adds r0, r2, #0 + adds r0, #0x80 + strh r1, [r0] + ldrh r0, [r4, #2] + adds r1, r2, #0 + adds r1, #0x82 + strh r0, [r1] + ldrb r1, [r4, #6] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r0, [r5, #0x20] + orrs r0, r6 + str r0, [r5, #0x20] +_08059E38: + adds r4, #8 + adds r7, #1 + ldrh r0, [r4] + cmp r0, #0 + beq _08059E46 + cmp r7, #0x1f + bls _08059DD4 +_08059E46: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08059E4C: .4byte gUnk_03000BF0 +_08059E50: .4byte gUnk_081084C8 +_08059E54: .4byte gUnk_08108530 + + thumb_func_start sub_08059E58 +sub_08059E58: @ 0x08059E58 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x20] + adds r0, #1 + strh r0, [r4, #0x20] + ldr r1, _08059E7C @ =gUnk_081085A4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0805A1D8 + pop {r4, pc} + .align 2, 0 +_08059E7C: .4byte gUnk_081085A4 + + thumb_func_start sub_08059E80 +sub_08059E80: @ 0x08059E80 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0805EABC + cmp r0, #0 + beq _08059E90 + bl sub_0805E780 +_08059E90: + adds r1, r4, #0 + adds r1, #0x22 + movs r2, #0 + movs r0, #1 + strb r0, [r1] + movs r0, #0 + strh r2, [r4, #0x20] + strb r0, [r4, #0xe] + movs r0, #4 + strb r0, [r4, #0xf] + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r3, _08059EE4 @ =gUnk_03000F50 + ldr r0, _08059EE8 @ =0x00001E04 + strh r0, [r3, #0x2c] + ldrh r0, [r3] + movs r5, #0x80 + lsls r5, r5, #4 + adds r1, r5, #0 + orrs r0, r1 + strh r0, [r3] + adds r1, r3, #0 + adds r1, #0x66 + ldr r0, _08059EEC @ =0x00003E48 + strh r0, [r1] + adds r1, #2 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + movs r0, #0x80 + strh r0, [r3, #0x2e] + strh r2, [r3, #0x30] + ldr r1, _08059EF0 @ =nullsub_495 + ldr r2, _08059EF4 @ =sub_0805A25C + adds r0, r4, #0 + bl sub_08052D74 + pop {r4, r5, pc} + .align 2, 0 +_08059EE4: .4byte gUnk_03000F50 +_08059EE8: .4byte 0x00001E04 +_08059EEC: .4byte 0x00003E48 +_08059EF0: .4byte nullsub_495 +_08059EF4: .4byte sub_0805A25C + + thumb_func_start sub_08059EF8 +sub_08059EF8: @ 0x08059EF8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + movs r6, #0xff + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08059F90 + movs r0, #4 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08059F9C + cmp r0, #0 + beq _08059F64 + ldr r2, _08059F50 @ =gUnk_08108588 + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + ldr r0, _08059F54 @ =0x00000808 + cmp r1, r0 + beq _08059F5C + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x24 + strb r5, [r0] + ldr r1, _08059F58 @ =gUnk_03000F50 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + ands r0, r6 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, #0x68 + strh r0, [r1] + b _08059F90 + .align 2, 0 +_08059F50: .4byte gUnk_08108588 +_08059F54: .4byte 0x00000808 +_08059F58: .4byte gUnk_03000F50 +_08059F5C: + adds r0, r4, #0 + adds r0, #0x22 + strb r5, [r0] + b _08059F90 +_08059F64: + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #1 + strb r0, [r1] + ldr r3, _08059F94 @ =gUnk_08108588 + ldrb r2, [r4, #0xe] + lsls r0, r2, #1 + adds r0, r0, r3 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #5 + cmp r1, r0 + beq _08059F90 + ldr r0, _08059F98 @ =gUnk_03000F50 + subs r1, r2, #1 + strb r1, [r4, #0xe] + ands r1, r6 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r1, [r1] + adds r0, #0x68 + strh r1, [r0] +_08059F90: + pop {r4, r5, r6, pc} + .align 2, 0 +_08059F94: .4byte gUnk_08108588 +_08059F98: .4byte gUnk_03000F50 + + thumb_func_start sub_08059F9C +sub_08059F9C: @ 0x08059F9C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08059FB4 @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + cmp r0, #0x17 + bhi _0805A03A + lsls r0, r0, #2 + ldr r1, _08059FB8 @ =_08059FBC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08059FB4: .4byte gUnk_03000BF0 +_08059FB8: .4byte _08059FBC +_08059FBC: @ jump table + .4byte _0805A036 @ case 0 + .4byte _0805A01C @ case 1 + .4byte _0805A03A @ case 2 + .4byte _0805A03A @ case 3 + .4byte _0805A03A @ case 4 + .4byte _0805A03A @ case 5 + .4byte _0805A03A @ case 6 + .4byte _0805A02A @ case 7 + .4byte _0805A036 @ case 8 + .4byte _0805A036 @ case 9 + .4byte _0805A03A @ case 10 + .4byte _0805A03A @ case 11 + .4byte _0805A03A @ case 12 + .4byte _0805A03A @ case 13 + .4byte _0805A03A @ case 14 + .4byte _0805A03A @ case 15 + .4byte _0805A03A @ case 16 + .4byte _0805A03A @ case 17 + .4byte _0805A03A @ case 18 + .4byte _0805A03A @ case 19 + .4byte _0805A03A @ case 20 + .4byte _0805A03A @ case 21 + .4byte _0805A03A @ case 22 + .4byte _0805A036 @ case 23 +_0805A01C: + movs r0, #0x16 + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A02A + movs r0, #0 + b _0805A03C +_0805A02A: + adds r0, r4, #0 + bl sub_0805A25C + bl sub_0805E780 + b _0805A03C +_0805A036: + movs r0, #1 + b _0805A03C +_0805A03A: + movs r0, #0 +_0805A03C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805A040 +sub_0805A040: @ 0x0805A040 + push {lr} + bl sub_0805A098 + pop {pc} + + thumb_func_start sub_0805A048 +sub_0805A048: @ 0x0805A048 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805A086 + movs r0, #4 + strb r0, [r4, #0xf] + ldr r2, _0805A090 @ =gUnk_03000F50 + ldr r3, _0805A094 @ =gUnk_08108588 + ldrb r0, [r4, #0xe] + adds r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r3 + ldrh r0, [r0] + adds r2, #0x68 + strh r0, [r2] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #9 + bne _0805A086 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x22 + movs r0, #0 + strb r0, [r1] +_0805A086: + adds r0, r4, #0 + bl sub_0805A098 + pop {r4, pc} + .align 2, 0 +_0805A090: .4byte gUnk_03000F50 +_0805A094: .4byte gUnk_08108588 + + thumb_func_start sub_0805A098 +sub_0805A098: @ 0x0805A098 + push {lr} + adds r1, r0, #0 + ldr r0, _0805A0B0 @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + cmp r0, #9 + bgt _0805A0B4 + cmp r0, #8 + bge _0805A0BC + cmp r0, #0 + beq _0805A0BC + b _0805A0B8 + .align 2, 0 +_0805A0B0: .4byte gUnk_03000BF0 +_0805A0B4: + cmp r0, #0x17 + beq _0805A0BC +_0805A0B8: + movs r0, #3 + strb r0, [r1, #0xc] +_0805A0BC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805A0C0 +sub_0805A0C0: @ 0x0805A0C0 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xf] + subs r0, #1 + strb r0, [r3, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805A106 + movs r0, #4 + strb r0, [r3, #0xf] + ldr r4, _0805A108 @ =gUnk_03000F50 + ldr r2, _0805A10C @ =gUnk_08108588 + ldrb r0, [r3, #0xe] + adds r1, r0, #0 + adds r1, #0xff + strb r1, [r3, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r2 + ldrh r2, [r0] + adds r0, r4, #0 + adds r0, #0x68 + strh r2, [r0] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0xff + bne _0805A106 + ldrh r1, [r4] + ldr r0, _0805A110 @ =0x0000F7FF + ands r0, r1 + strh r0, [r4] + bl sub_08056250 + bl sub_0805E780 +_0805A106: + pop {r4, pc} + .align 2, 0 +_0805A108: .4byte gUnk_03000F50 +_0805A10C: .4byte gUnk_08108588 +_0805A110: .4byte 0x0000F7FF + + thumb_func_start sub_0805A114 +sub_0805A114: @ 0x0805A114 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r6, r1, #0 + ldr r2, _0805A154 @ =gUnk_03003DE4 + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _0805A158 @ =gUnk_02017AA0 + adds r4, r0, r1 + movs r5, #0 + mov r8, r2 + mov sb, r1 + ldr r2, _0805A15C @ =gUnk_03000F50 + ldr r0, _0805A160 @ =gUnk_080C9160 + mov ip, r0 +_0805A13A: + movs r1, #0x30 + ldrsh r0, [r2, r1] + adds r3, r5, r0 + asrs r1, r3, #3 + movs r0, #7 + ands r1, r0 + cmp r1, #7 + bhi _0805A190 + lsls r0, r1, #2 + ldr r1, _0805A164 @ =_0805A168 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805A154: .4byte gUnk_03003DE4 +_0805A158: .4byte gUnk_02017AA0 +_0805A15C: .4byte gUnk_03000F50 +_0805A160: .4byte gUnk_080C9160 +_0805A164: .4byte _0805A168 +_0805A168: @ jump table + .4byte _0805A190 @ case 0 + .4byte _0805A18C @ case 1 + .4byte _0805A190 @ case 2 + .4byte _0805A190 @ case 3 + .4byte _0805A188 @ case 4 + .4byte _0805A190 @ case 5 + .4byte _0805A190 @ case 6 + .4byte _0805A18C @ case 7 +_0805A188: + subs r3, #8 + b _0805A190 +_0805A18C: + movs r0, #0xf0 + b _0805A192 +_0805A190: + movs r0, #0xf8 +_0805A192: + ands r3, r0 + adds r0, r6, r3 + movs r1, #0xff + ands r0, r1 + lsls r0, r0, #1 + add r0, ip + movs r1, #0 + ldrsh r0, [r0, r1] + muls r0, r7, r0 + lsrs r0, r0, #8 + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r4] + adds r4, #2 + adds r5, #1 + cmp r5, #0x9f + ble _0805A13A + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + add r0, sb + ldr r1, _0805A1D0 @ =0x0400001C + ldr r2, _0805A1D4 @ =0xA2600001 + bl sub_0805622C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805A1D0: .4byte 0x0400001C +_0805A1D4: .4byte 0xA2600001 + + thumb_func_start sub_0805A1D8 +sub_0805A1D8: @ 0x0805A1D8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0805A244 @ =gUnk_03000BF0 + ldr r0, [r1, #0x28] + ldr r2, _0805A248 @ =0xFFFFF000 + adds r0, r0, r2 + str r0, [r1, #0x28] + ldr r5, _0805A24C @ =gUnk_03000F50 + ldrh r0, [r1, #0x2a] + strh r0, [r5, #0x2e] + ldr r0, [r1, #0x2c] + adds r0, r0, r2 + str r0, [r1, #0x2c] + ldrh r0, [r1, #0x2e] + strh r0, [r5, #0x30] + ldrh r1, [r5] + movs r0, #0x80 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0805A240 + ldrh r1, [r4, #0x20] + lsrs r1, r1, #1 + movs r0, #6 + bl sub_0805A114 + adds r0, r4, #0 + adds r0, #0x22 + ldrb r0, [r0] + cmp r0, #0 + bne _0805A240 + ldr r0, _0805A250 @ =gUnk_03001000 + ldrh r1, [r0, #0xc] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0805A240 + adds r2, r4, #0 + adds r2, #0x24 + ldrb r0, [r2] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r2] + ldr r1, _0805A254 @ =gUnk_0810859A + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r5, #0 + adds r0, #0x68 + strh r1, [r0] +_0805A240: + pop {r4, r5, pc} + .align 2, 0 +_0805A244: .4byte gUnk_03000BF0 +_0805A248: .4byte 0xFFFFF000 +_0805A24C: .4byte gUnk_03000F50 +_0805A250: .4byte gUnk_03001000 +_0805A254: .4byte gUnk_0810859A + + thumb_func_start nullsub_495 +nullsub_495: @ 0x0805A258 + bx lr + .align 2, 0 + + thumb_func_start sub_0805A25C +sub_0805A25C: @ 0x0805A25C + push {lr} + ldr r1, _0805A278 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0 + strh r0, [r2] + ldrh r2, [r1] + ldr r0, _0805A27C @ =0x0000F7FF + ands r0, r2 + strh r0, [r1] + bl sub_08056250 + pop {pc} + .align 2, 0 +_0805A278: .4byte gUnk_03000F50 +_0805A27C: .4byte 0x0000F7FF + + thumb_func_start sub_0805A280 +sub_0805A280: @ 0x0805A280 + push {lr} + ldr r2, _0805A294 @ =gUnk_081085D8 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805A294: .4byte gUnk_081085D8 + + thumb_func_start sub_0805A298 +sub_0805A298: @ 0x0805A298 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805A2D6 + adds r0, r4, #0 + bl sub_0805A89C + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + bne _0805A2BA + adds r1, r4, #0 + adds r1, #0x23 + movs r0, #1 + b _0805A2C0 +_0805A2BA: + adds r1, r4, #0 + adds r1, #0x23 + movs r0, #2 +_0805A2C0: + strb r0, [r1] + ldrb r0, [r1] + bl sub_0805AAF0 + ldr r2, _0805A2E0 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x90 + lsls r3, r3, #7 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] +_0805A2D6: + adds r0, r4, #0 + bl sub_0805A8EC + pop {r4, pc} + .align 2, 0 +_0805A2E0: .4byte gUnk_03000F50 + + thumb_func_start sub_0805A2E4 +sub_0805A2E4: @ 0x0805A2E4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805A34C + adds r0, r4, #0 + bl sub_0805A89C + adds r0, r4, #0 + adds r0, #0x23 + movs r5, #1 + strb r5, [r0] + movs r0, #1 + bl sub_0805AAF0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + bne _0805A324 + strb r5, [r4, #0xc] + ldr r2, _0805A31C @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805A320 @ =0x0000B7FF + ands r0, r1 + strh r0, [r2] + b _0805A35C + .align 2, 0 +_0805A31C: .4byte gUnk_03000F50 +_0805A320: .4byte 0x0000B7FF +_0805A324: + movs r0, #0x48 + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A332 + movs r0, #4 + b _0805A334 +_0805A332: + movs r0, #3 +_0805A334: + strb r0, [r4, #0xc] + ldr r2, _0805A348 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x90 + lsls r3, r3, #7 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + b _0805A35C + .align 2, 0 +_0805A348: .4byte gUnk_03000F50 +_0805A34C: + ldr r0, _0805A36C @ =gUnk_081085F8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0805A35C: + ldr r0, [r4, #4] + cmp r0, #0 + beq _0805A368 + adds r0, r4, #0 + bl sub_0805A8EC +_0805A368: + pop {r4, r5, pc} + .align 2, 0 +_0805A36C: .4byte gUnk_081085F8 + + thumb_func_start sub_0805A370 +sub_0805A370: @ 0x0805A370 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0805A38A + ldr r0, _0805A38C @ =gUnk_080E4C08 + bl sub_0804ADDC + movs r0, #3 + strb r0, [r4, #0xc] + ldr r0, _0805A390 @ =0x80100000 + bl sub_080A3268 +_0805A38A: + pop {r4, pc} + .align 2, 0 +_0805A38C: .4byte gUnk_080E4C08 +_0805A390: .4byte 0x80100000 + + thumb_func_start sub_0805A394 +sub_0805A394: @ 0x0805A394 + push {lr} + movs r0, #3 + movs r1, #0x13 + movs r2, #4 + bl sub_0805EB00 + cmp r0, #0 + beq _0805A3AA + ldrb r0, [r0, #0xa] + cmp r0, #4 + bne _0805A3C4 +_0805A3AA: + movs r0, #0x48 + bl sub_0807CCB4 + movs r0, #0 + bl sub_0807CD8C + ldr r2, _0805A3C8 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805A3CC @ =0x0000B7FF + ands r0, r1 + strh r0, [r2] + bl sub_0805E780 +_0805A3C4: + pop {pc} + .align 2, 0 +_0805A3C8: .4byte gUnk_03000F50 +_0805A3CC: .4byte 0x0000B7FF + + thumb_func_start nullsub_496 +nullsub_496: @ 0x0805A3D0 + bx lr + .align 2, 0 + + thumb_func_start sub_0805A3D4 +sub_0805A3D4: @ 0x0805A3D4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805A448 + adds r0, r4, #0 + bl sub_0805A89C + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _0805A3F2 + adds r1, r4, #0 + adds r1, #0x23 + movs r0, #2 + b _0805A3F8 +_0805A3F2: + adds r1, r4, #0 + adds r1, #0x23 + movs r0, #1 +_0805A3F8: + strb r0, [r1] + ldrb r0, [r1] + bl sub_0805AAF0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + bne _0805A428 + ldrh r0, [r4, #0x3c] + bl sub_0807CD48 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _0805A420 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805A424 @ =0x0000B7FF + ands r0, r1 + strh r0, [r2] + b _0805A458 + .align 2, 0 +_0805A420: .4byte gUnk_03000F50 +_0805A424: .4byte 0x0000B7FF +_0805A428: + ldrh r0, [r4, #0x3c] + bl sub_0807CCC8 + movs r0, #3 + strb r0, [r4, #0xc] + ldr r2, _0805A444 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x90 + lsls r3, r3, #7 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + b _0805A458 + .align 2, 0 +_0805A444: .4byte gUnk_03000F50 +_0805A448: + ldr r0, _0805A460 @ =gUnk_0810860C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0805A458: + adds r0, r4, #0 + bl sub_0805A8EC + pop {r4, pc} + .align 2, 0 +_0805A460: .4byte gUnk_0810860C + + thumb_func_start sub_0805A464 +sub_0805A464: @ 0x0805A464 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A47E + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_0805A4CC +_0805A47E: + pop {r4, pc} + + thumb_func_start sub_0805A480 +sub_0805A480: @ 0x0805A480 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _0805A494 + movs r0, #3 + strb r0, [r1, #0xc] + ldrh r0, [r1, #0x3c] + bl sub_0807CCC8 +_0805A494: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805A498 +sub_0805A498: @ 0x0805A498 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + bne _0805A4B2 + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_0805A4CC +_0805A4B2: + pop {r4, pc} + + thumb_func_start sub_0805A4B4 +sub_0805A4B4: @ 0x0805A4B4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _0805A4C8 + movs r0, #1 + strb r0, [r1, #0xc] + ldrh r0, [r1, #0x3c] + bl sub_0807CD48 +_0805A4C8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805A4CC +sub_0805A4CC: @ 0x0805A4CC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x8e + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805A4F8 + ldr r1, _0805A4FC @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r2, [r4, #0x38] + adds r0, r0, r2 + movs r2, #0 + strh r0, [r3, #0x2e] + ldrh r0, [r1, #8] + ldrh r1, [r4, #0x3a] + adds r0, r0, r1 + subs r0, #0x30 + strh r0, [r3, #0x32] + str r4, [r3, #0x50] + strb r2, [r4, #0xd] +_0805A4F8: + pop {r4, pc} + .align 2, 0 +_0805A4FC: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805A500 +sub_0805A500: @ 0x0805A500 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + bne _0805A588 + bl sub_0805A89C + str r5, [r4, #0x28] + movs r0, #0x36 + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A538 + adds r3, r4, #0 + adds r3, #0x23 + movs r0, #3 + strb r0, [r3] + movs r0, #5 + strb r0, [r4, #0xc] + ldr r2, _0805A534 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r5, #0x90 + lsls r5, r5, #7 + adds r0, r5, #0 + orrs r0, r1 + b _0805A574 + .align 2, 0 +_0805A534: .4byte gUnk_03000F50 +_0805A538: + movs r0, #0x34 + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A560 + adds r3, r4, #0 + adds r3, #0x23 + movs r0, #4 + strb r0, [r3] + movs r0, #3 + strb r0, [r4, #0xc] + ldr r2, _0805A55C @ =gUnk_03000F50 + ldrh r1, [r2] + movs r5, #0x90 + lsls r5, r5, #7 + adds r0, r5, #0 + orrs r0, r1 + b _0805A574 + .align 2, 0 +_0805A55C: .4byte gUnk_03000F50 +_0805A560: + adds r3, r4, #0 + adds r3, #0x23 + movs r0, #4 + strb r0, [r3] + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _0805A580 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805A584 @ =0x0000B7FF + ands r0, r1 +_0805A574: + strh r0, [r2] + ldrb r0, [r3] + bl sub_0805AAF0 + b _0805A598 + .align 2, 0 +_0805A580: .4byte gUnk_03000F50 +_0805A584: .4byte 0x0000B7FF +_0805A588: + ldr r0, _0805A5C0 @ =gUnk_08108620 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0805A598: + adds r0, r4, #0 + bl sub_0805AA58 + adds r0, r4, #0 + bl sub_0805A9CC + ldr r1, _0805A5C4 @ =gUnk_03000BF0 + ldrh r3, [r1] + cmp r3, #1 + bne _0805A5CC + ldr r2, _0805A5C8 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r5, #0x80 + lsls r5, r5, #7 + adds r0, r5, #0 + orrs r0, r1 + strh r0, [r2] + strb r3, [r4, #0xd] + b _0805A5F0 + .align 2, 0 +_0805A5C0: .4byte gUnk_08108620 +_0805A5C4: .4byte gUnk_03000BF0 +_0805A5C8: .4byte gUnk_03000F50 +_0805A5CC: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0805A5F0 + movs r0, #0 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + ldrb r1, [r1, #5] + cmp r0, r1 + beq _0805A5F0 + ldr r2, _0805A5F4 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805A5F8 @ =0x0000B7FF + ands r0, r1 + strh r0, [r2] + bl sub_0805E780 +_0805A5F0: + pop {r4, r5, pc} + .align 2, 0 +_0805A5F4: .4byte gUnk_03000F50 +_0805A5F8: .4byte 0x0000B7FF + + thumb_func_start sub_0805A5FC +sub_0805A5FC: @ 0x0805A5FC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x34 + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A616 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805A4CC +_0805A616: + pop {r4, pc} + + thumb_func_start sub_0805A618 +sub_0805A618: @ 0x0805A618 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _0805A626 + movs r0, #3 + strb r0, [r1, #0xc] +_0805A626: + pop {pc} + + thumb_func_start sub_0805A628 +sub_0805A628: @ 0x0805A628 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x36 + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A64A + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x23 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805A4CC +_0805A64A: + pop {r4, pc} + + thumb_func_start sub_0805A64C +sub_0805A64C: @ 0x0805A64C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _0805A65A + movs r0, #5 + strb r0, [r1, #0xc] +_0805A65A: + pop {pc} + + thumb_func_start sub_0805A65C +sub_0805A65C: @ 0x0805A65C + bx lr + .align 2, 0 + + thumb_func_start sub_0805A660 +sub_0805A660: @ 0x0805A660 + bx lr + .align 2, 0 + + thumb_func_start sub_0805A664 +sub_0805A664: @ 0x0805A664 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0805A688 @ =gUnk_08108638 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0805A8EC + adds r0, r4, #0 + bl sub_0805A68C + pop {r4, pc} + .align 2, 0 +_0805A688: .4byte gUnk_08108638 + + thumb_func_start sub_0805A68C +sub_0805A68C: @ 0x0805A68C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x38 + ldrsh r0, [r4, r1] + subs r0, #0x18 + movs r2, #0x3a + ldrsh r1, [r4, r2] + subs r1, #0x18 + movs r2, #0x30 + movs r3, #0x30 + bl sub_0806FBFC + cmp r0, #0 + beq _0805A6CC + ldrh r1, [r4, #0x2c] + ldr r0, _0805A6C4 @ =0x00001007 + cmp r1, r0 + bhi _0805A6E2 + ldr r0, _0805A6C8 @ =gUnk_03000F50 + adds r1, #1 + movs r2, #0 + strh r1, [r4, #0x2c] + adds r0, #0x68 + strh r1, [r0] + adds r0, r4, #0 + adds r0, #0x22 + strb r2, [r0] + b _0805A6E2 + .align 2, 0 +_0805A6C4: .4byte 0x00001007 +_0805A6C8: .4byte gUnk_03000F50 +_0805A6CC: + ldrh r1, [r4, #0x2c] + movs r0, #0x80 + lsls r0, r0, #5 + cmp r1, r0 + bls _0805A6DA + subs r0, r1, #1 + strh r0, [r4, #0x2c] +_0805A6DA: + ldr r0, _0805A6E4 @ =gUnk_03000F50 + ldrh r1, [r4, #0x2c] + adds r0, #0x68 + strh r1, [r0] +_0805A6E2: + pop {r4, pc} + .align 2, 0 +_0805A6E4: .4byte gUnk_03000F50 + + thumb_func_start sub_0805A6E8 +sub_0805A6E8: @ 0x0805A6E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805A89C + adds r1, r4, #0 + adds r1, #0x23 + movs r0, #0 + strb r0, [r1] + bl sub_0805AAF0 + ldr r1, _0805A734 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r2, [r4, #0x38] + adds r0, r0, r2 + strh r0, [r4, #0x38] + ldrh r0, [r1, #8] + ldrh r3, [r4, #0x3a] + adds r0, r0, r3 + strh r0, [r4, #0x3a] + adds r0, r4, #0 + bl sub_0805A73C + cmp r0, #0 + bne _0805A71E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0805A71E: + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r4, #0x2c] + ldr r2, _0805A738 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x90 + lsls r3, r3, #7 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + pop {r4, pc} + .align 2, 0 +_0805A734: .4byte gUnk_03000BF0 +_0805A738: .4byte gUnk_03000F50 + + thumb_func_start sub_0805A73C +sub_0805A73C: @ 0x0805A73C + push {lr} + adds r1, r0, #0 + movs r2, #0x38 + ldrsh r0, [r1, r2] + subs r0, #6 + movs r2, #0x3a + ldrsh r1, [r1, r2] + subs r1, #6 + movs r2, #0xc + movs r3, #0xc + bl sub_0806FBFC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805A758 +sub_0805A758: @ 0x0805A758 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805A73C + cmp r0, #0 + bne _0805A76A + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0805A76A: + pop {r4, pc} + + thumb_func_start sub_0805A76C +sub_0805A76C: @ 0x0805A76C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _0805A7D4 @ =gLinkEntity + adds r0, r5, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _0805A7D0 + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _0805A7D0 + ldr r0, _0805A7D8 @ =gUnk_03003F80 + ldr r6, [r0, #0x2c] + cmp r6, #0 + bne _0805A7D0 + adds r0, #0xa9 + ldrb r0, [r0] + cmp r0, #1 + bgt _0805A7D0 + cmp r0, #0 + blt _0805A7D0 + adds r0, r4, #0 + bl sub_0805A73C + cmp r0, #0 + beq _0805A7D0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r5, #0 + bl sub_08004168 + movs r0, #4 + strb r0, [r5, #0x14] + movs r1, #0x96 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_0805E4E0 + movs r0, #0xff + bl sub_08078A90 + ldr r1, _0805A7DC @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + ldr r0, _0805A7E0 @ =gUnk_03000BF0 + str r6, [r0, #0x30] + bl sub_08077B20 +_0805A7D0: + pop {r4, r5, r6, pc} + .align 2, 0 +_0805A7D4: .4byte gLinkEntity +_0805A7D8: .4byte gUnk_03003F80 +_0805A7DC: .4byte gUnk_02034490 +_0805A7E0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805A7E4 +sub_0805A7E4: @ 0x0805A7E4 + push {lr} + ldr r2, _0805A800 @ =gUnk_03003F80 + ldrb r0, [r2, #0xc] + cmp r0, #0x12 + beq _0805A7FE + movs r1, #0 + movs r0, #0x12 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] +_0805A7FE: + pop {pc} + .align 2, 0 +_0805A800: .4byte gUnk_03003F80 + + thumb_func_start sub_0805A804 +sub_0805A804: @ 0x0805A804 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bhi _0805A896 + lsls r0, r0, #2 + ldr r1, _0805A818 @ =_0805A81C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805A818: .4byte _0805A81C +_0805A81C: @ jump table + .4byte _0805A830 @ case 0 + .4byte _0805A858 @ case 1 + .4byte _0805A866 @ case 2 + .4byte _0805A872 @ case 3 + .4byte _0805A88A @ case 4 +_0805A830: + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A83E + movs r0, #1 + b _0805A840 +_0805A83E: + movs r0, #2 +_0805A840: + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + b _0805A89A +_0805A858: + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + bne _0805A89A + movs r0, #2 + b _0805A87E +_0805A866: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0805A89A + movs r0, #3 + strb r0, [r4, #0xc] + b _0805A89A +_0805A872: + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + beq _0805A89A + movs r0, #4 +_0805A87E: + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #4 + bl sub_0805A4CC + b _0805A89A +_0805A88A: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0805A89A + movs r0, #1 + strb r0, [r4, #0xc] + b _0805A89A +_0805A896: + bl sub_0805E780 +_0805A89A: + pop {r4, pc} + + thumb_func_start sub_0805A89C +sub_0805A89C: @ 0x0805A89C + push {r4, lr} + adds r4, r0, #0 + movs r1, #6 + bl sub_0805E3A0 + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x21 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + ldr r1, _0805A8E4 @ =gUnk_03000BF0 + ldrb r2, [r1, #5] + subs r0, #2 + strb r2, [r0] + ldrh r0, [r1, #6] + strh r0, [r4, #0x24] + ldrh r0, [r1, #8] + strh r0, [r4, #0x26] + ldr r1, _0805A8E8 @ =sub_0805AAC8 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 + pop {r4, pc} + .align 2, 0 +_0805A8E4: .4byte gUnk_03000BF0 +_0805A8E8: .4byte sub_0805AAC8 + + thumb_func_start sub_0805A8EC +sub_0805A8EC: @ 0x0805A8EC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0805AA58 + adds r0, r4, #0 + bl sub_0805A94C + ldr r1, _0805A914 @ =gUnk_03000BF0 + ldrh r3, [r1] + cmp r3, #1 + bne _0805A91C + ldr r2, _0805A918 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r5, #0x80 + lsls r5, r5, #7 + adds r0, r5, #0 + orrs r0, r1 + strh r0, [r2] + strb r3, [r4, #0xd] + b _0805A940 + .align 2, 0 +_0805A914: .4byte gUnk_03000BF0 +_0805A918: .4byte gUnk_03000F50 +_0805A91C: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0805A940 + movs r0, #0 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x20 + ldrb r0, [r0] + ldrb r1, [r1, #5] + cmp r0, r1 + beq _0805A940 + ldr r2, _0805A944 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805A948 @ =0x0000B7FF + ands r0, r1 + strh r0, [r2] + bl sub_0805E780 +_0805A940: + pop {r4, r5, pc} + .align 2, 0 +_0805A944: .4byte gUnk_03000F50 +_0805A948: .4byte 0x0000B7FF + + thumb_func_start sub_0805A94C +sub_0805A94C: @ 0x0805A94C + push {r4, lr} + ldr r4, _0805A9C4 @ =gUnk_03000F50 + ldr r3, _0805A9C8 @ =gUnk_03000BF0 + ldrh r1, [r3, #0xa] + ldrh r2, [r0, #0x24] + subs r1, r1, r2 + ldrh r2, [r0, #0x34] + adds r1, r1, r2 + strh r1, [r4, #0x2e] + ldrh r1, [r3, #0xc] + ldrh r2, [r0, #0x26] + subs r1, r1, r2 + ldrh r0, [r0, #0x36] + adds r1, r1, r0 + strh r1, [r4, #0x30] + movs r1, #0x2e + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r0, r2 + cmp r0, #0 + bge _0805A97C + movs r0, #0 +_0805A97C: + cmp r0, #0xf0 + ble _0805A982 + movs r0, #0xf0 +_0805A982: + cmp r1, #0 + bge _0805A988 + movs r1, #0 +_0805A988: + cmp r1, #0xf0 + ble _0805A98E + movs r1, #0xf0 +_0805A98E: + lsls r0, r0, #8 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x5a + strh r0, [r1] + movs r1, #0x30 + ldrsh r0, [r4, r1] + rsbs r0, r0, #0 + adds r1, r0, r2 + cmp r0, #0 + bge _0805A9A6 + movs r0, #0 +_0805A9A6: + cmp r0, #0xa0 + ble _0805A9AC + movs r0, #0xa0 +_0805A9AC: + cmp r1, #0 + bge _0805A9B2 + movs r1, #0 +_0805A9B2: + cmp r1, #0xa0 + ble _0805A9B8 + movs r1, #0xa0 +_0805A9B8: + lsls r0, r0, #8 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x5e + strh r0, [r1] + pop {r4, pc} + .align 2, 0 +_0805A9C4: .4byte gUnk_03000F50 +_0805A9C8: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805A9CC +sub_0805A9CC: @ 0x0805A9CC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _0805AA4C @ =gUnk_03000F50 + ldr r5, _0805AA50 @ =gUnk_03000BF0 + ldrh r0, [r5, #0xa] + ldrh r1, [r4, #0x24] + subs r0, r0, r1 + ldrh r1, [r4, #0x34] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + movs r2, #0x2e + ldrsh r0, [r3, r2] + rsbs r2, r0, #0 + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r2, r0 + cmp r2, #0 + bge _0805A9F2 + movs r2, #0 +_0805A9F2: + cmp r2, #0xf0 + ble _0805A9F8 + movs r2, #0xf0 +_0805A9F8: + cmp r1, #0 + bge _0805A9FE + movs r1, #0 +_0805A9FE: + cmp r1, #0xf0 + ble _0805AA04 + movs r1, #0xf0 +_0805AA04: + lsls r0, r2, #8 + orrs r0, r1 + adds r1, r3, #0 + adds r1, #0x5a + strh r0, [r1] + movs r1, #0xc + ldrsh r0, [r5, r1] + ldrh r1, [r4, #0x26] + subs r0, r0, r1 + movs r2, #0x36 + ldrsh r1, [r4, r2] + adds r2, r0, r1 + movs r1, #0x3f + adds r0, r2, #0 + ands r0, r1 + strh r0, [r3, #0x30] + adds r0, r2, #0 + cmp r0, #0 + bge _0805AA2C + adds r0, #0x3f +_0805AA2C: + asrs r0, r0, #6 + lsls r0, r0, #9 + ldr r1, _0805AA54 @ =gUnk_02001A40 + adds r1, r0, r1 + str r1, [r3, #0x34] + adds r2, r3, #0 + adds r2, #0x5e + movs r0, #0xa0 + strh r0, [r2] + ldr r0, [r4, #0x28] + cmp r0, r1 + beq _0805AA4A + str r1, [r4, #0x28] + movs r0, #1 + strh r0, [r3, #0x32] +_0805AA4A: + pop {r4, r5, pc} + .align 2, 0 +_0805AA4C: .4byte gUnk_03000F50 +_0805AA50: .4byte gUnk_03000BF0 +_0805AA54: .4byte gUnk_02001A40 + + thumb_func_start sub_0805AA58 +sub_0805AA58: @ 0x0805AA58 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805AA8C + movs r0, #8 + strb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x21 + ldrb r0, [r2] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r2] + lsls r0, r0, #5 + ldr r1, _0805AABC @ =gUnk_085A97A0 + adds r0, r0, r1 + movs r1, #5 + movs r2, #1 + bl sub_0801D754 +_0805AA8C: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _0805AABA + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x22 + ldrb r0, [r2] + adds r0, #1 + movs r1, #0xf + ands r0, r1 + strb r0, [r2] + ldr r1, _0805AAC0 @ =gUnk_03000F50 + ldr r3, _0805AAC4 @ =gUnk_081085B8 + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + adds r1, #0x68 + strh r0, [r1] +_0805AABA: + pop {r4, r5, pc} + .align 2, 0 +_0805AABC: .4byte gUnk_085A97A0 +_0805AAC0: .4byte gUnk_03000F50 +_0805AAC4: .4byte gUnk_081085B8 + + thumb_func_start sub_0805AAC8 +sub_0805AAC8: @ 0x0805AAC8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x23 + ldrb r0, [r0] + bl sub_0805AAF0 + adds r0, r4, #0 + bl sub_0805A280 + pop {r4, pc} + + thumb_func_start sub_0805AADC +sub_0805AADC: @ 0x0805AADC + push {lr} + ldr r1, _0805AAEC @ =gUnk_08108648 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_0801D7EC + pop {pc} + .align 2, 0 +_0805AAEC: .4byte gUnk_08108648 + + thumb_func_start sub_0805AAF0 +sub_0805AAF0: @ 0x0805AAF0 + push {lr} + bl sub_0805AADC + ldr r3, _0805AB34 @ =gUnk_03000F50 + adds r1, r3, #0 + adds r1, #0x66 + movs r2, #0 + ldr r0, _0805AB38 @ =0x00003E48 + strh r0, [r1] + adds r1, #2 + ldr r0, _0805AB3C @ =0x00001008 + strh r0, [r1] + ldr r0, _0805AB40 @ =0x00001E04 + strh r0, [r3, #0x2c] + ldr r0, _0805AB44 @ =gUnk_02001A40 + str r0, [r3, #0x34] + strh r2, [r3, #0x2e] + strh r2, [r3, #0x30] + movs r0, #1 + strh r0, [r3, #0x32] + subs r1, #8 + ldr r0, _0805AB48 @ =0x00003F3F + strh r0, [r1] + adds r1, #2 + movs r0, #0x37 + strh r0, [r1] + subs r1, #8 + movs r0, #0xf0 + strh r0, [r1] + adds r1, #4 + movs r0, #0xa0 + strh r0, [r1] + pop {pc} + .align 2, 0 +_0805AB34: .4byte gUnk_03000F50 +_0805AB38: .4byte 0x00003E48 +_0805AB3C: .4byte 0x00001008 +_0805AB40: .4byte 0x00001E04 +_0805AB44: .4byte gUnk_02001A40 +_0805AB48: .4byte 0x00003F3F + + thumb_func_start sub_0805AB4C +sub_0805AB4C: @ 0x0805AB4C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + ldrb r0, [r6, #0xa] + bl sub_0804B128 + adds r4, r0, #0 + cmp r4, #0 + bne _0805AB68 + bl sub_0805E780 +_0805AB68: + ldrb r0, [r6, #0xc] + movs r1, #0x20 + adds r1, r1, r6 + mov r8, r1 + cmp r0, #0 + bne _0805ABC8 + adds r0, #1 + strb r0, [r6, #0xc] + ldr r0, _0805ABF0 @ =gUnk_02033A90 + ldrb r0, [r0, #8] + strb r0, [r1] + adds r0, r6, #0 + movs r1, #6 + bl sub_0805E3A0 + ldr r2, _0805ABF4 @ =gUnk_02031EC0 + ldrb r0, [r6, #0xb] + mov r3, r8 + ldrb r1, [r3] + adds r0, r0, r1 + lsls r0, r0, #4 + adds r2, r0, r2 + movs r5, #0 + mov sl, r5 + ldrb r0, [r4] + movs r7, #0x21 + adds r7, r7, r6 + mov ip, r7 + cmp r0, #0xff + beq _0805ABBE +_0805ABA4: + adds r1, r2, #0 + adds r0, r4, #0 + ldm r0!, {r3, r5, r7} + stm r1!, {r3, r5, r7} + ldr r0, [r0] + str r0, [r1] + movs r0, #1 + add sl, r0 + adds r4, #0x10 + adds r2, #0x10 + ldrb r0, [r4] + cmp r0, #0xff + bne _0805ABA4 +_0805ABBE: + movs r0, #0xff + strb r0, [r2] + mov r2, sl + mov r1, ip + strb r2, [r1] +_0805ABC8: + ldr r4, _0805ABF4 @ =gUnk_02031EC0 + ldrb r2, [r6, #0xb] + mov r3, r8 + ldrb r1, [r3] + adds r0, r2, r1 + lsls r0, r0, #4 + adds r4, r0, r4 + ldr r0, _0805ABF8 @ =gUnk_02002A40 + movs r5, #1 + mov sl, r5 + mov r7, sl + ldrb r0, [r0, #8] + lsls r7, r0 + mov sl, r7 + adds r0, r1, #7 + asrs r0, r0, #3 + ldr r1, _0805ABFC @ =gUnk_020342F8 + adds r7, r0, r1 + adds r5, r2, #0 + b _0805ACAA + .align 2, 0 +_0805ABF0: .4byte gUnk_02033A90 +_0805ABF4: .4byte gUnk_02031EC0 +_0805ABF8: .4byte gUnk_02002A40 +_0805ABFC: .4byte gUnk_020342F8 +_0805AC00: + ldrh r0, [r4, #4] + ldrh r1, [r4, #6] + movs r2, #0x18 + movs r3, #0x20 + bl sub_0800290E + cmp r0, #0 + bne _0805AC1A + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_0801D5D4 + b _0805ACA6 +_0805AC1A: + ldrh r0, [r4, #0xe] + mov r1, sl + ands r0, r1 + cmp r0, #0 + beq _0805ACA6 + ldr r0, _0805AC5C @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x46 + bhi _0805ACA6 + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_0801D5BC + cmp r0, #0 + bne _0805ACA6 + ldr r0, [r4, #8] + cmp r0, #0 + beq _0805AC48 + bl sub_0807DAA0 + mov sb, r0 + cmp r0, #0 + beq _0805ACA6 +_0805AC48: + ldrb r0, [r6, #0xe] + cmp r0, #0 + bne _0805AC60 + ldrb r0, [r4] + ldrb r1, [r4, #1] + ldrb r2, [r4, #2] + bl sub_0806ED50 + b _0805AC6A + .align 2, 0 +_0805AC5C: .4byte gUnk_03003DBC +_0805AC60: + ldrb r0, [r4] + ldrb r1, [r4, #1] + ldrb r2, [r4, #2] + bl sub_080A2960 +_0805AC6A: + adds r3, r0, #0 + mov r2, r8 + ldrb r0, [r2] + adds r0, #1 + adds r0, r5, r0 + adds r1, r3, #0 + adds r1, #0x45 + strb r0, [r1] + ldrh r0, [r4, #0xc] + strb r0, [r3, #0xe] + ldr r1, _0805ACBC @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r2, [r4, #4] + adds r0, r0, r2 + strh r0, [r3, #0x2e] + ldrh r0, [r1, #8] + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r3, #0x32] + ldrb r1, [r4, #3] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r2, [r4, #8] + cmp r2, #0 + beq _0805ACA6 + adds r0, r3, #0 + mov r1, sb + bl sub_0807DAF0 +_0805ACA6: + adds r4, #0x10 + adds r5, #1 +_0805ACAA: + ldrb r0, [r4] + cmp r0, #0xff + bne _0805AC00 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805ACBC: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805ACC0 +sub_0805ACC0: @ 0x0805ACC0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + bne _0805ACF0 + b _0805AD32 +_0805ACD0: + ldrb r0, [r4, #0xb] + subs r0, r5, r0 + lsls r0, r0, #4 + adds r3, r3, r0 + ldrh r0, [r3, #4] + ldr r2, _0805ACEC @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r0, r0, r1 + lsls r0, r0, #0x10 + ldrh r1, [r3, #6] + orrs r0, r1 + ldrh r2, [r2, #8] + adds r0, r0, r2 + b _0805AD34 + .align 2, 0 +_0805ACEC: .4byte gUnk_03000BF0 +_0805ACF0: + movs r0, #0x7f + ands r0, r1 + subs r5, r0, #1 + ldr r6, _0805AD3C @ =gUnk_03003DA0 + ldr r4, [r6, #4] + cmp r4, r6 + beq _0805AD32 + ldr r0, _0805AD40 @ =0x00001609 + mov r8, r0 + ldr r0, _0805AD44 @ =0x0000FFFF + adds r7, r0, #0 +_0805AD06: + ldrh r0, [r4, #8] + ands r0, r7 + cmp r0, r8 + bne _0805AD2C + ldrb r1, [r4, #0xb] + cmp r1, r5 + bgt _0805AD2C + adds r0, r4, #0 + adds r0, #0x21 + ldrb r0, [r0] + adds r0, r1, r0 + cmp r0, r5 + ble _0805AD2C + ldrb r0, [r4, #0xa] + bl sub_0804B128 + adds r3, r0, #0 + cmp r3, #0 + bne _0805ACD0 +_0805AD2C: + ldr r4, [r4, #4] + cmp r4, r6 + bne _0805AD06 +_0805AD32: + movs r0, #0 +_0805AD34: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805AD3C: .4byte gUnk_03003DA0 +_0805AD40: .4byte 0x00001609 +_0805AD44: .4byte 0x0000FFFF + + thumb_func_start sub_0805AD48 +sub_0805AD48: @ 0x0805AD48 + push {lr} + ldr r2, _0805AD5C @ =gUnk_08108654 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805AD5C: .4byte gUnk_08108654 + + thumb_func_start sub_0805AD60 +sub_0805AD60: @ 0x0805AD60 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805AD76 + bl sub_0805E780 +_0805AD76: + adds r0, r4, #0 + bl sub_0805AD80 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805AD80 +sub_0805AD80: @ 0x0805AD80 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805ADD0 + ldrb r1, [r4, #0xa] + ldrb r2, [r4, #0xb] + movs r0, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805ADCC + adds r0, r4, #0 + adds r0, #0x35 + ldrb r0, [r0] + strb r0, [r2, #0xe] + adds r0, r4, #0 + adds r0, #0x36 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r1, _0805ADD4 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r4, #0x38] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + ldrh r1, [r4, #0x3a] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldrh r1, [r4, #0x3c] + adds r0, r2, #0 + adds r0, #0x86 + strh r1, [r0] +_0805ADCC: + bl sub_0805E780 +_0805ADD0: + pop {r4, pc} + .align 2, 0 +_0805ADD4: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805ADD8 +sub_0805ADD8: @ 0x0805ADD8 + push {r4, lr} + adds r4, r0, #0 + cmp r4, #0 + bne _0805AE04 + ldr r0, _0805ADF8 @ =gUnk_02033A90 + ldr r1, _0805ADFC @ =0x0000088C + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0805AE00 @ =sub_0805AEDC + cmp r0, r1 + beq _0805AEC4 + movs r0, #0 + bl _call_via_r1 + b _0805AEC4 + .align 2, 0 +_0805ADF8: .4byte gUnk_02033A90 +_0805ADFC: .4byte 0x0000088C +_0805AE00: .4byte sub_0805AEDC +_0805AE04: + ldrb r2, [r4, #0xc] + cmp r2, #0 + bne _0805AE5E + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + strb r2, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + ldr r0, _0805AE44 @ =gUnk_0810865C + ldrh r0, [r0] + strh r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldr r0, _0805AE48 @ =gUnk_02033A90 + ldr r2, _0805AE4C @ =0x0000088C + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, #0 + bne _0805AE58 + ldr r1, _0805AE50 @ =sub_0805AEDC + ldr r2, _0805AE54 @ =sub_0805AF3C + adds r0, r4, #0 + bl sub_08052D74 + b _0805AEC4 + .align 2, 0 +_0805AE44: .4byte gUnk_0810865C +_0805AE48: .4byte gUnk_02033A90 +_0805AE4C: .4byte 0x0000088C +_0805AE50: .4byte sub_0805AEDC +_0805AE54: .4byte sub_0805AF3C +_0805AE58: + bl sub_0805E780 + b _0805AEC4 +_0805AE5E: + ldr r2, _0805AEC8 @ =gUnk_0810865C + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldr r3, _0805AECC @ =gUnk_03000F50 + cmp r0, #0 + beq _0805AEA2 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805AEA2 + movs r0, #4 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + cmp r0, #0 + beq _0805AEA2 + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r1, [r0] + strh r1, [r4, #0x20] + adds r0, r3, #0 + adds r0, #0x68 + strh r1, [r0] +_0805AEA2: + ldr r1, _0805AED0 @ =gUnk_03000BF0 + ldr r0, [r1, #0x28] + ldr r2, _0805AED4 @ =0xFFFFE000 + adds r0, r0, r2 + str r0, [r1, #0x28] + ldr r0, [r1, #0x2c] + ldr r2, _0805AED8 @ =0xFFFFF000 + adds r0, r0, r2 + str r0, [r1, #0x2c] + ldrh r0, [r1, #0x2a] + ldrh r2, [r1, #0xa] + adds r0, r0, r2 + strh r0, [r3, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r3, #0x30] +_0805AEC4: + pop {r4, pc} + .align 2, 0 +_0805AEC8: .4byte gUnk_0810865C +_0805AECC: .4byte gUnk_03000F50 +_0805AED0: .4byte gUnk_03000BF0 +_0805AED4: .4byte 0xFFFFE000 +_0805AED8: .4byte 0xFFFFF000 + + thumb_func_start sub_0805AEDC +sub_0805AEDC: @ 0x0805AEDC + push {r4, lr} + adds r3, r0, #0 + ldr r2, _0805AF2C @ =gUnk_03000F50 + ldr r0, _0805AF30 @ =0x00001E05 + strh r0, [r2, #0x2c] + ldrh r0, [r2] + movs r4, #0x80 + lsls r4, r4, #4 + adds r1, r4, #0 + orrs r0, r1 + strh r0, [r2] + adds r1, r2, #0 + adds r1, #0x66 + ldr r0, _0805AF34 @ =0x00003648 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #5 + adds r1, r0, #0 + cmp r3, #0 + beq _0805AF06 + ldrh r1, [r3, #0x20] +_0805AF06: + adds r0, r2, #0 + adds r0, #0x68 + strh r1, [r0] + ldr r1, _0805AF38 @ =gUnk_03000BF0 + ldrh r0, [r1, #0x2a] + ldrh r4, [r1, #0xa] + adds r0, r0, r4 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r2, #0x30] + cmp r3, #0 + beq _0805AF28 + adds r0, r3, #0 + bl sub_0805ADD8 +_0805AF28: + pop {r4, pc} + .align 2, 0 +_0805AF2C: .4byte gUnk_03000F50 +_0805AF30: .4byte 0x00001E05 +_0805AF34: .4byte 0x00003648 +_0805AF38: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805AF3C +sub_0805AF3C: @ 0x0805AF3C + ldrb r2, [r0, #0x10] + movs r1, #0xdf + ands r1, r2 + movs r3, #0 + strb r1, [r0, #0x10] + ldr r1, _0805AF58 @ =gUnk_03000F50 + ldrh r2, [r1] + ldr r0, _0805AF5C @ =0x0000F7FF + ands r0, r2 + strh r0, [r1] + adds r1, #0x66 + strh r3, [r1] + bx lr + .align 2, 0 +_0805AF58: .4byte gUnk_03000F50 +_0805AF5C: .4byte 0x0000F7FF + + thumb_func_start sub_0805AF60 +sub_0805AF60: @ 0x0805AF60 + push {r4, lr} + adds r4, r0, #0 + cmp r4, #0 + bne _0805AF8C + ldr r0, _0805AF80 @ =gUnk_02033A90 + ldr r1, _0805AF84 @ =0x0000088C + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0805AF88 @ =sub_0805AFFC + cmp r0, r1 + beq _0805AFEE + movs r0, #0 + bl _call_via_r1 + b _0805AFEE + .align 2, 0 +_0805AF80: .4byte gUnk_02033A90 +_0805AF84: .4byte 0x0000088C +_0805AF88: .4byte sub_0805AFFC +_0805AF8C: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805AFD2 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldr r0, _0805AFC0 @ =gUnk_02033A90 + ldr r2, _0805AFC4 @ =0x0000088C + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, #0 + bne _0805AFCC + ldr r1, _0805AFC8 @ =sub_0805AFFC + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 + b _0805AFEE + .align 2, 0 +_0805AFC0: .4byte gUnk_02033A90 +_0805AFC4: .4byte 0x0000088C +_0805AFC8: .4byte sub_0805AFFC +_0805AFCC: + bl sub_0805E780 + b _0805AFEE +_0805AFD2: + ldr r1, _0805AFF0 @ =gUnk_03000BF0 + ldr r0, [r1, #0x28] + ldr r3, _0805AFF4 @ =0xFFFFE000 + adds r0, r0, r3 + str r0, [r1, #0x28] + ldr r2, _0805AFF8 @ =gUnk_03000F50 + ldrh r0, [r1, #0x2a] + ldrh r3, [r1, #0xa] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r2, #0x30] +_0805AFEE: + pop {r4, pc} + .align 2, 0 +_0805AFF0: .4byte gUnk_03000BF0 +_0805AFF4: .4byte 0xFFFFE000 +_0805AFF8: .4byte gUnk_03000F50 + + thumb_func_start sub_0805AFFC +sub_0805AFFC: @ 0x0805AFFC + ldr r2, _0805B024 @ =gUnk_03000F50 + ldr r0, _0805B028 @ =0x00001E03 + strh r0, [r2, #0x2c] + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _0805B02C @ =gUnk_03000BF0 + ldrh r0, [r1, #0x2a] + ldrh r3, [r1, #0xa] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r2, #0x30] + bx lr + .align 2, 0 +_0805B024: .4byte gUnk_03000F50 +_0805B028: .4byte 0x00001E03 +_0805B02C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805B030 +sub_0805B030: @ 0x0805B030 + push {lr} + ldr r2, _0805B044 @ =gUnk_08108668 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805B044: .4byte gUnk_08108668 + + thumb_func_start sub_0805B048 +sub_0805B048: @ 0x0805B048 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r4, #0 + adds r0, #0x20 + movs r1, #0x20 + bl sub_0801D630 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _0805B08C @ =gUnk_03000BF0 + ldrb r0, [r2, #5] + adds r1, r4, #0 + adds r1, #0x3f + strb r0, [r1] + ldrb r1, [r4, #0xa] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805B090 @ =gUnk_08108764 + adds r5, r0, r1 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _0805B094 + ldrh r0, [r2, #6] + strh r0, [r4, #0x20] + ldrh r0, [r2, #8] + strh r0, [r4, #0x22] + ldrh r0, [r2, #0x1e] + strh r0, [r4, #0x24] + ldrh r0, [r2, #0x20] + b _0805B0B2 + .align 2, 0 +_0805B08C: .4byte gUnk_03000BF0 +_0805B090: .4byte gUnk_08108764 +_0805B094: + ldrb r0, [r5, #8] + lsls r0, r0, #4 + ldrh r1, [r2, #6] + adds r0, r0, r1 + strh r0, [r4, #0x20] + ldrb r0, [r5, #9] + lsls r0, r0, #4 + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r4, #0x22] + ldrb r0, [r5, #0xa] + lsls r0, r0, #4 + strh r0, [r4, #0x24] + ldrb r0, [r5, #0xb] + lsls r0, r0, #4 +_0805B0B2: + strh r0, [r4, #0x26] + ldr r1, [r5, #0xc] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + strb r0, [r4, #0xb] + cmp r0, #0 + beq _0805B0FC + ldrb r0, [r4, #0x10] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r0, [r5, #0xc] + ldrh r0, [r0, #4] + strh r0, [r4, #0x34] + ldr r0, [r5, #0xc] + ldrh r0, [r0, #6] + strh r0, [r4, #0x36] + ldr r0, [r5, #0xc] + ldrh r0, [r0, #8] + strh r0, [r4, #0x30] + ldr r0, [r5, #0xc] + ldrh r0, [r0, #0xa] + strh r0, [r4, #0x32] + bl sub_0805BC4C + adds r0, r4, #0 + bl sub_0805B2B0 + adds r0, r4, #0 + bl sub_0805B328 + ldr r1, _0805B160 @ =sub_0805B328 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_0805B0FC: + ldr r0, [r5, #0x10] + cmp r0, #0 + beq _0805B15E + ldrb r1, [r0] + ldrb r2, [r0, #1] + movs r0, #0x28 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805B128 + ldr r1, [r5, #0x10] + ldr r2, _0805B164 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r1, [r1, #4] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + ldr r1, [r5, #0x10] + ldrh r0, [r2, #8] + ldrh r1, [r1, #6] + adds r0, r0, r1 + strh r0, [r3, #0x32] +_0805B128: + ldrb r0, [r4, #0xa] + cmp r0, #0xa + bne _0805B15E + movs r0, #0x4b + bl sub_0807CBD0 + cmp r0, #0 + bne _0805B15E + movs r0, #0x28 + movs r1, #3 + movs r2, #3 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805B15E + ldr r1, [r5, #0x10] + ldr r2, _0805B164 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r1, [r1, #4] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + ldr r1, [r5, #0x10] + ldrh r0, [r2, #8] + ldrh r1, [r1, #6] + adds r0, r0, r1 + strh r0, [r3, #0x32] +_0805B15E: + pop {r4, r5, pc} + .align 2, 0 +_0805B160: .4byte sub_0805B328 +_0805B164: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805B168 +sub_0805B168: @ 0x0805B168 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0805B1CC + adds r5, r0, #0 + cmp r5, #0 + beq _0805B182 + adds r0, r4, #0 + bl sub_0805B210 + bl sub_0805E780 + b _0805B1C0 +_0805B182: + adds r0, r4, #0 + bl sub_0805B2B0 + ldr r1, _0805B194 @ =gUnk_03000BF0 + ldrh r0, [r1] + cmp r0, #1 + bne _0805B198 + strb r0, [r4, #0xd] + b _0805B1C0 + .align 2, 0 +_0805B194: .4byte gUnk_03000BF0 +_0805B198: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0805B1C0 + strb r5, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + ldrb r1, [r1, #5] + cmp r0, r1 + beq _0805B1C0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0805B1BC + ldr r2, _0805B1C4 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805B1C8 @ =0x0000F7FF + ands r0, r1 + strh r0, [r2] +_0805B1BC: + bl sub_0805E780 +_0805B1C0: + pop {r4, r5, pc} + .align 2, 0 +_0805B1C4: .4byte gUnk_03000F50 +_0805B1C8: .4byte 0x0000F7FF + + thumb_func_start sub_0805B1CC +sub_0805B1CC: @ 0x0805B1CC + push {r4, r5, lr} + movs r5, #0 + movs r1, #0x20 + ldrsh r4, [r0, r1] + movs r2, #0x22 + ldrsh r1, [r0, r2] + ldrh r2, [r0, #0x24] + ldrh r3, [r0, #0x26] + adds r0, r4, #0 + bl sub_0806FBFC + cmp r0, #0 + beq _0805B20C + ldr r2, _0805B1FC @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + movs r0, #5 + ands r0, r1 + cmp r0, #5 + bne _0805B200 + movs r0, #0x80 + lsls r0, r0, #8 + orrs r1, r0 + str r1, [r2, #0x30] + b _0805B20C + .align 2, 0 +_0805B1FC: .4byte gUnk_03003F80 +_0805B200: + movs r0, #0x80 + lsls r0, r0, #8 + ands r1, r0 + cmp r1, #0 + beq _0805B20C + movs r5, #1 +_0805B20C: + adds r0, r5, #0 + pop {r4, r5, pc} + + thumb_func_start sub_0805B210 +sub_0805B210: @ 0x0805B210 + push {r4, r5, lr} + ldr r2, _0805B248 @ =gUnk_030010A0 + movs r1, #1 + strb r1, [r2, #8] + strb r1, [r2, #9] + movs r1, #4 + strb r1, [r2, #0xe] + ldrb r1, [r0, #0xa] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805B24C @ =gUnk_08108764 + adds r4, r0, r1 + ldrb r0, [r4, #1] + strb r0, [r2, #0xc] + ldrb r0, [r4, #2] + strb r0, [r2, #0xd] + ldrb r0, [r4, #3] + strb r0, [r2, #0x14] + ldr r0, _0805B250 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + adds r5, r2, #0 + cmp r0, #0 + beq _0805B254 + movs r0, #6 + b _0805B256 + .align 2, 0 +_0805B248: .4byte gUnk_030010A0 +_0805B24C: .4byte gUnk_08108764 +_0805B250: .4byte gUnk_03003F80 +_0805B254: + movs r0, #2 +_0805B256: + strb r0, [r5, #0xf] + ldrb r0, [r4] + cmp r0, #1 + beq _0805B278 + cmp r0, #1 + bgt _0805B268 + cmp r0, #0 + beq _0805B26E + b _0805B2AC +_0805B268: + cmp r0, #2 + beq _0805B2A0 + b _0805B2AC +_0805B26E: + ldrh r0, [r4, #4] + strh r0, [r5, #0x10] + ldrh r0, [r4, #6] + strh r0, [r5, #0x12] + b _0805B2AC +_0805B278: + ldr r2, _0805B298 @ =gLinkEntity + ldr r3, _0805B29C @ =gUnk_03000BF0 + ldrh r0, [r2, #0x2e] + ldrh r1, [r3, #6] + subs r0, r0, r1 + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r5, #0x10] + ldrh r0, [r2, #0x32] + ldrh r1, [r3, #8] + subs r0, r0, r1 + ldrh r4, [r4, #6] + adds r0, r0, r4 + strh r0, [r5, #0x12] + b _0805B2AC + .align 2, 0 +_0805B298: .4byte gLinkEntity +_0805B29C: .4byte gUnk_03000BF0 +_0805B2A0: + ldrh r0, [r4, #4] + strh r0, [r5, #0x10] + ldrh r0, [r4, #6] + strh r0, [r5, #0x12] + movs r0, #6 + strb r0, [r5, #0xf] +_0805B2AC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805B2B0 +sub_0805B2B0: @ 0x0805B2B0 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0805B31E + ldrh r1, [r5, #0x30] + ldr r6, _0805B320 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r0, [r6, r2] + subs r1, r1, r0 + cmp r1, #0 + bge _0805B2CA + adds r1, #3 +_0805B2CA: + asrs r4, r1, #2 + ldrh r1, [r5, #0x32] + movs r7, #0xc + ldrsh r0, [r6, r7] + subs r1, r1, r0 + cmp r1, #0 + bge _0805B2DA + adds r1, #3 +_0805B2DA: + asrs r3, r1, #2 + movs r0, #0xc + rsbs r0, r0, #0 + cmp r4, r0 + bge _0805B2E6 + adds r4, r0, #0 +_0805B2E6: + cmp r4, #0xc + ble _0805B2EC + movs r4, #0xc +_0805B2EC: + cmp r3, r0 + bge _0805B2F2 + adds r3, r0, #0 +_0805B2F2: + cmp r3, #0xc + ble _0805B2F8 + movs r3, #0xc +_0805B2F8: + ldr r2, _0805B324 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r7, #0x80 + lsls r7, r7, #4 + adds r0, r7, #0 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r5, #0x34] + ldrh r1, [r6, #0xa] + adds r0, r0, r1 + adds r0, r0, r4 + strh r0, [r6, #0x2a] + strh r0, [r2, #0x2e] + ldrh r0, [r5, #0x36] + ldrh r7, [r6, #0xc] + adds r0, r0, r7 + adds r0, r0, r3 + strh r0, [r6, #0x2e] + strh r0, [r2, #0x30] +_0805B31E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805B320: .4byte gUnk_03000BF0 +_0805B324: .4byte gUnk_03000F50 + + thumb_func_start sub_0805B328 +sub_0805B328: @ 0x0805B328 + push {r4, lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xb] + cmp r0, #0 + beq _0805B372 + ldrb r1, [r1, #0xa] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0805B374 @ =gUnk_08108764 + adds r0, r0, r1 + ldr r0, [r0, #0xc] + ldr r0, [r0] + ldr r1, _0805B378 @ =gUnk_085A2E80 + adds r0, r0, r1 + ldr r1, _0805B37C @ =0x0600F000 + movs r4, #0x80 + lsls r4, r4, #4 + adds r2, r4, #0 + bl sub_08000E96 + ldr r1, _0805B380 @ =gUnk_03000F50 + ldr r0, _0805B384 @ =0x00001E07 + strh r0, [r1, #0x2c] + ldrh r0, [r1] + orrs r4, r0 + strh r4, [r1] + ldr r2, _0805B388 @ =gUnk_03000BF0 + ldrh r0, [r2, #0x2a] + strh r0, [r1, #0x2e] + ldrh r0, [r2, #0x2e] + strh r0, [r1, #0x30] + adds r1, #0x66 + ldrh r2, [r1] + ldr r0, _0805B38C @ =0x0000FFF7 + ands r0, r2 + strh r0, [r1] +_0805B372: + pop {r4, pc} + .align 2, 0 +_0805B374: .4byte gUnk_08108764 +_0805B378: .4byte gUnk_085A2E80 +_0805B37C: .4byte 0x0600F000 +_0805B380: .4byte gUnk_03000F50 +_0805B384: .4byte 0x00001E07 +_0805B388: .4byte gUnk_03000BF0 +_0805B38C: .4byte 0x0000FFF7 + + thumb_func_start sub_0805B390 +sub_0805B390: @ 0x0805B390 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _0805B3B0 + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0x1a + strb r0, [r1, #9] + strb r4, [r1, #0xa] + adds r0, r1, #0 + movs r1, #6 + bl sub_0805EA2C +_0805B3B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805B3B4 +sub_0805B3B4: @ 0x0805B3B4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0805EABC + cmp r0, #0 + beq _0805B3C4 + bl sub_0805E780 +_0805B3C4: + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + ldr r1, _0805B438 @ =gUnk_08108C28 + adds r5, r0, r1 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805B41E + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0805B3F6 + ldr r1, _0805B43C @ =sub_0805B4B4 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 +_0805B3F6: + ldr r0, _0805B440 @ =gUnk_03000BF0 + ldrh r1, [r0, #0x20] + movs r0, #0x80 + lsls r0, r0, #1 + subs r1, r0, r1 + cmp r1, #0 + bge _0805B406 + movs r1, #0 +_0805B406: + movs r0, #2 + ldrsb r0, [r5, r0] + adds r0, r1, r0 + str r0, [r4, #0x20] + ldr r1, _0805B444 @ =gUnk_08108C54 + ldrb r0, [r5, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 +_0805B41E: + ldr r0, _0805B440 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #0 + bne _0805B436 + ldr r0, _0805B444 @ =gUnk_08108C54 + ldrb r1, [r5, #1] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_0805B436: + pop {r4, r5, pc} + .align 2, 0 +_0805B438: .4byte gUnk_08108C28 +_0805B43C: .4byte sub_0805B4B4 +_0805B440: .4byte gUnk_03000BF0 +_0805B444: .4byte gUnk_08108C54 + + thumb_func_start sub_0805B448 +sub_0805B448: @ 0x0805B448 + push {r4, lr} + ldr r4, _0805B46C @ =gUnk_03000F50 + ldr r3, _0805B470 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r1, [r3, r2] + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #2 + strh r1, [r4, #0x2e] + movs r2, #0xc + ldrsh r1, [r3, r2] + ldrh r2, [r3, #8] + subs r1, r1, r2 + asrs r1, r1, #1 + ldr r0, [r0, #0x20] + adds r0, r0, r1 + strh r0, [r4, #0x30] + pop {r4, pc} + .align 2, 0 +_0805B46C: .4byte gUnk_03000F50 +_0805B470: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805B474 +sub_0805B474: @ 0x0805B474 + push {r4, r5, lr} + ldr r5, _0805B4A8 @ =gUnk_03000BF0 + movs r0, #0xc + ldrsh r1, [r5, r0] + ldrh r4, [r5, #8] + subs r1, r1, r4 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #5 + ldrh r1, [r5, #0x20] + subs r1, #0xa0 + bl __divsi3 + ldr r2, _0805B4AC @ =gUnk_03000F50 + adds r4, r4, r0 + strh r4, [r2, #0x30] + ldrh r0, [r5, #0x1e] + ldr r1, _0805B4B0 @ =0xFFFFFF00 + adds r0, r0, r1 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + ldrh r1, [r5, #0xa] + subs r1, r1, r0 + strh r1, [r2, #0x2e] + pop {r4, r5, pc} + .align 2, 0 +_0805B4A8: .4byte gUnk_03000BF0 +_0805B4AC: .4byte gUnk_03000F50 +_0805B4B0: .4byte 0xFFFFFF00 + + thumb_func_start sub_0805B4B4 +sub_0805B4B4: @ 0x0805B4B4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_0805B4D0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bne _0805B4C8 + bl sub_0806D0F8 +_0805B4C8: + adds r0, r4, #0 + bl sub_0805B3B4 + pop {r4, pc} + + thumb_func_start sub_0805B4D0 +sub_0805B4D0: @ 0x0805B4D0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0805B528 @ =gUnk_08108C5C + adds r0, r5, r0 + ldrb r0, [r0] + bl sub_0801D7EC + ldr r4, _0805B52C @ =gUnk_03000F50 + ldr r0, _0805B530 @ =0x00001E07 + strh r0, [r4, #0x2c] + ldrh r1, [r4] + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r2, #0 + orrs r0, r1 + strh r0, [r4] + ldr r2, _0805B534 @ =gUnk_03000BF0 + movs r1, #0xa + ldrsh r0, [r2, r1] + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #2 + strh r0, [r4, #0x2e] + movs r1, #0xc + ldrsh r0, [r2, r1] + ldrh r1, [r2, #8] + subs r0, r0, r1 + asrs r3, r0, #1 + ldrh r1, [r2, #0x20] + movs r0, #0x80 + lsls r0, r0, #1 + subs r2, r0, r1 + cmp r2, #0 + bge _0805B516 + movs r2, #0 +_0805B516: + ldr r0, _0805B538 @ =gUnk_08108C44 + lsls r1, r5, #1 + adds r1, r1, r0 + adds r0, r3, r2 + ldrh r1, [r1] + adds r0, r0, r1 + strh r0, [r4, #0x30] + pop {r4, r5, pc} + .align 2, 0 +_0805B528: .4byte gUnk_08108C5C +_0805B52C: .4byte gUnk_03000F50 +_0805B530: .4byte 0x00001E07 +_0805B534: .4byte gUnk_03000BF0 +_0805B538: .4byte gUnk_08108C44 + + thumb_func_start sub_0805B53C +sub_0805B53C: @ 0x0805B53C + push {lr} + ldr r2, _0805B550 @ =gUnk_08108C64 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805B550: .4byte gUnk_08108C64 + + thumb_func_start sub_0805B554 +sub_0805B554: @ 0x0805B554 + movs r1, #1 + strb r1, [r0, #0xc] + strb r1, [r0, #0xe] + bx lr + + thumb_func_start sub_0805B55C +sub_0805B55C: @ 0x0805B55C + push {r4, r5, lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805B5B4 + movs r0, #0xf + strb r0, [r1, #0xe] + movs r0, #0x19 + movs r1, #0 + bl sub_0804AA60 + adds r5, r0, #0 + cmp r5, #0 + beq _0805B5B4 + bl sub_08000E50 + ldr r4, _0805B5B8 @ =gUnk_03000BF0 + ldr r2, _0805B5BC @ =gUnk_08108C6C + movs r1, #7 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + adds r0, #0x78 + ldrh r1, [r4, #0xa] + adds r0, r0, r1 + strh r0, [r5, #0x2e] + bl sub_08000E50 + ldr r2, _0805B5C0 @ =gUnk_08108C7C + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r0, #0x50 + ldrh r4, [r4, #0xc] + adds r0, r0, r4 + strh r0, [r5, #0x32] + ldr r0, _0805B5C4 @ =0x0000FF38 + strh r0, [r5, #0x36] +_0805B5B4: + pop {r4, r5, pc} + .align 2, 0 +_0805B5B8: .4byte gUnk_03000BF0 +_0805B5BC: .4byte gUnk_08108C6C +_0805B5C0: .4byte gUnk_08108C7C +_0805B5C4: .4byte 0x0000FF38 + + thumb_func_start sub_0805B5C8 +sub_0805B5C8: @ 0x0805B5C8 + push {lr} + ldr r2, _0805B5DC @ =gUnk_08108C80 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805B5DC: .4byte gUnk_08108C80 + + thumb_func_start sub_0805B5E0 +sub_0805B5E0: @ 0x0805B5E0 + push {r4, r5, lr} + movs r4, #0 + movs r1, #1 + strb r1, [r0, #0xc] + ldr r3, _0805B618 @ =gUnk_03000F50 + ldrh r2, [r3] + movs r5, #0x80 + lsls r5, r5, #4 + adds r1, r5, #0 + orrs r1, r2 + strh r1, [r3] + ldr r2, _0805B61C @ =gUnk_08108C88 + ldrb r1, [r0, #0xa] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r1, [r1] + strh r1, [r3, #0x2c] + ldr r1, _0805B620 @ =gUnk_03000BF0 + str r4, [r1, #0x2c] + str r4, [r1, #0x28] + ldrb r0, [r0, #0xa] + cmp r0, #0 + beq _0805B612 + cmp r0, #1 + beq _0805B624 +_0805B612: + strh r4, [r3, #0x30] + strh r4, [r3, #0x2e] + b _0805B634 + .align 2, 0 +_0805B618: .4byte gUnk_03000F50 +_0805B61C: .4byte gUnk_08108C88 +_0805B620: .4byte gUnk_03000BF0 +_0805B624: + ldrh r0, [r1, #0x2a] + ldrh r2, [r1, #0xa] + adds r0, r0, r2 + strh r0, [r3, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r3, #0x30] +_0805B634: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805B638 +sub_0805B638: @ 0x0805B638 + push {lr} + ldrb r0, [r0, #0xa] + cmp r0, #1 + bne _0805B65E + ldr r1, _0805B660 @ =gUnk_03000BF0 + ldr r0, [r1, #0x28] + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r0, r2 + str r0, [r1, #0x28] + ldr r2, _0805B664 @ =gUnk_03000F50 + ldrh r0, [r1, #0x2a] + ldrh r3, [r1, #0xa] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r2, #0x30] +_0805B65E: + pop {pc} + .align 2, 0 +_0805B660: .4byte gUnk_03000BF0 +_0805B664: .4byte gUnk_03000F50 + + thumb_func_start sub_0805B668 +sub_0805B668: @ 0x0805B668 + push {lr} + ldr r2, _0805B67C @ =gUnk_08108C8C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805B67C: .4byte gUnk_08108C8C + + thumb_func_start sub_0805B680 +sub_0805B680: @ 0x0805B680 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r1, [r4, #0x34] + lsrs r1, r1, #1 + strh r1, [r4, #0x34] + ldrh r0, [r4, #0x38] + adds r0, r0, r1 + strh r0, [r4, #0x38] + ldrh r1, [r4, #0x36] + lsrs r1, r1, #1 + strh r1, [r4, #0x36] + ldrh r0, [r4, #0x3a] + adds r0, r0, r1 + strh r0, [r4, #0x3a] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0805B6B8 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805B6B8 + adds r0, r4, #0 + bl sub_0805E900 + b _0805B6BE +_0805B6B8: + adds r0, r4, #0 + bl sub_0805B6C0 +_0805B6BE: + pop {r4, pc} + + thumb_func_start sub_0805B6C0 +sub_0805B6C0: @ 0x0805B6C0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + ldrh r2, [r4, #0x34] + ldrh r3, [r4, #0x36] + bl sub_0800293E + cmp r0, #0 + beq _0805B6EC + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0805B6F2 + adds r0, r4, #0 + bl sub_0805E900 + b _0805B6F2 +_0805B6EC: + ldrh r0, [r4, #0x3e] + bl sub_0807CD48 +_0805B6F2: + pop {r4, pc} + + thumb_func_start sub_0805B6F4 +sub_0805B6F4: @ 0x0805B6F4 + push {lr} + ldr r2, _0805B708 @ =gUnk_08108C94 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805B708: .4byte gUnk_08108C94 + + thumb_func_start sub_0805B70C +sub_0805B70C: @ 0x0805B70C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805B71E + movs r0, #1 + strb r0, [r4, #0xb] +_0805B71E: + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r2, #0x3f + ands r1, r2 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4, #0x38] + adds r0, r4, #0 + bl sub_0805B778 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805B744 +sub_0805B744: @ 0x0805B744 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + adds r1, r0, #0 + cmp r1, #0 + beq _0805B766 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0805B774 + movs r0, #1 + strb r0, [r4, #0xb] + adds r0, r4, #0 + bl sub_0805B778 + b _0805B774 +_0805B766: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0805B774 + strb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_0805B778 +_0805B774: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805B778 +sub_0805B778: @ 0x0805B778 + push {lr} + ldr r2, _0805B79C @ =gUnk_08108C9C + ldrb r1, [r0, #0xa] + lsls r1, r1, #1 + ldrb r3, [r0, #0xb] + adds r1, r1, r3 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r3, [r1] + movs r2, #0x38 + ldrsh r1, [r0, r2] + adds r0, #0x36 + ldrb r2, [r0] + adds r0, r3, #0 + bl sub_0807B314 + pop {pc} + .align 2, 0 +_0805B79C: .4byte gUnk_08108C9C + + thumb_func_start sub_0805B7A0 +sub_0805B7A0: @ 0x0805B7A0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + ldrb r1, [r5, #0xa] + ldrb r2, [r5, #0xb] + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0805B81A + ldrh r0, [r5, #0x3e] + adds r1, r4, #0 + adds r1, #0x86 + strh r0, [r1] + ldrh r0, [r5, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805B7EC + adds r0, r5, #0 + adds r0, #0x36 + ldrb r1, [r0] + adds r0, #1 + ldrb r2, [r0] + movs r0, #0xf + ands r0, r2 + lsls r0, r0, #8 + orrs r1, r0 + strh r1, [r4, #0x2e] + ldrh r1, [r5, #0x3c] + ldr r0, _0805B7E8 @ =0x00000FFF + ands r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r5, #0x3c] + lsrs r0, r0, #0xc + b _0805B7FC + .align 2, 0 +_0805B7E8: .4byte 0x00000FFF +_0805B7EC: + ldrh r0, [r5, #0x38] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x3a] + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r0, #0x37 + ldrb r0, [r0] + lsrs r0, r0, #4 +_0805B7FC: + adds r1, r4, #0 + adds r1, #0x38 + strb r0, [r1] + ldr r0, _0805B81C @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + ldrh r2, [r4, #0x2e] + adds r1, r1, r2 + strh r1, [r4, #0x2e] + ldrh r0, [r0, #8] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r5, #0 + bl sub_0805E900 +_0805B81A: + pop {r4, r5, pc} + .align 2, 0 +_0805B81C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805B820 +sub_0805B820: @ 0x0805B820 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldrb r1, [r5, #0xc] + cmp r1, #0 + bne _0805B834 + movs r0, #1 + strb r0, [r5, #0xc] + str r1, [r5, #0x20] +_0805B834: + ldrb r0, [r5, #0xa] + bl sub_0804B128 + adds r4, r0, #0 + movs r7, #0 + ldrh r0, [r4] + cmp r0, #0 + beq _0805B8C4 + ldr r0, _0805B8A8 @ =gUnk_03000BF0 + mov r8, r0 +_0805B848: + ldrh r0, [r4] + ldrh r1, [r4, #2] + movs r2, #4 + movs r3, #4 + bl sub_0800290E + cmp r0, #0 + beq _0805B8AC + movs r6, #1 + lsls r6, r7 + ldr r0, [r5, #0x20] + ands r0, r6 + cmp r0, #0 + bne _0805B8B6 + ldrh r0, [r4, #4] + bl sub_0805B8CC + cmp r0, #0 + beq _0805B8B6 + movs r0, #0x4e + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0805B8B6 + ldrh r0, [r4, #6] + strb r0, [r1, #0xe] + strb r7, [r1, #0xf] + ldrh r0, [r4] + mov r2, r8 + ldrh r2, [r2, #6] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + ldrh r0, [r4, #2] + mov r3, r8 + ldrh r3, [r3, #8] + adds r0, r0, r3 + strh r0, [r1, #0x32] + str r5, [r1, #0x50] + adds r0, r1, #0 + bl sub_08016A30 + ldr r0, [r5, #0x20] + orrs r0, r6 + b _0805B8B4 + .align 2, 0 +_0805B8A8: .4byte gUnk_03000BF0 +_0805B8AC: + movs r1, #1 + lsls r1, r7 + ldr r0, [r5, #0x20] + bics r0, r1 +_0805B8B4: + str r0, [r5, #0x20] +_0805B8B6: + adds r4, #8 + adds r7, #1 + ldrh r0, [r4] + cmp r0, #0 + beq _0805B8C4 + cmp r7, #0x1f + bls _0805B848 +_0805B8C4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0805B8CC +sub_0805B8CC: @ 0x0805B8CC + push {lr} + cmp r0, #4 + bne _0805B8DA + movs r0, #0x18 + bl GetProgressFlag + b _0805B8E8 +_0805B8DA: + cmp r0, #4 + bls _0805B8E6 + cmp r0, #6 + bhi _0805B8E6 + movs r0, #0 + b _0805B8E8 +_0805B8E6: + movs r0, #1 +_0805B8E8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805B8EC +sub_0805B8EC: @ 0x0805B8EC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _0805B964 @ =gUnk_02033A90 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805B90A + bl sub_0801E104 + ldr r2, _0805B968 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805B96C @ =0x0000D7FF + ands r0, r1 + strh r0, [r2] + bl sub_0805E780 +_0805B90A: + ldrb r2, [r5, #0xc] + cmp r2, #0 + bne _0805B934 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r5, #0x10] + movs r0, #0x11 + strb r0, [r5, #0xe] + str r2, [r5, #0x20] + adds r0, r5, #0 + movs r1, #6 + bl sub_0805E3A0 + bl sub_0801E120 + ldrb r0, [r5, #0xe] + bl sub_0801E154 +_0805B934: + ldr r0, _0805B970 @ =gUnk_03001000 + ldrb r0, [r0, #4] + cmp r0, #2 + bne _0805B952 + ldr r2, _0805B968 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + bl sub_0805BA78 + bl sub_0805BAD4 +_0805B952: + ldrb r0, [r4, #0xc] + cmp r0, #2 + bne _0805B978 + ldr r2, _0805B968 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805B974 @ =0x0000DFFF + ands r0, r1 + strh r0, [r2] + b _0805BA6C + .align 2, 0 +_0805B964: .4byte gUnk_02033A90 +_0805B968: .4byte gUnk_03000F50 +_0805B96C: .4byte 0x0000D7FF +_0805B970: .4byte gUnk_03001000 +_0805B974: .4byte 0x0000DFFF +_0805B978: + ldr r3, _0805B9A8 @ =gLinkEntity + movs r4, #0x2e + ldrsh r0, [r3, r4] + ldr r2, _0805B9AC @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + movs r6, #0x32 + ldrsh r1, [r3, r6] + ldrh r2, [r2, #8] + subs r1, r1, r2 + movs r2, #0 + movs r3, #0 + bl sub_0800290E + cmp r0, #0 + beq _0805B9B4 + ldr r2, _0805B9B0 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #6 + adds r0, r3, #0 + orrs r0, r1 + b _0805B9BC + .align 2, 0 +_0805B9A8: .4byte gLinkEntity +_0805B9AC: .4byte gUnk_03000BF0 +_0805B9B0: .4byte gUnk_03000F50 +_0805B9B4: + ldr r2, _0805B9E8 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805B9EC @ =0x0000DFFF + ands r0, r1 +_0805B9BC: + strh r0, [r2] + ldrb r4, [r5, #0xe] + ldr r0, _0805B9F0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0805BA2C + ldr r0, _0805B9F4 @ =gUnk_02033A90 + ldrb r0, [r0, #0xc] + cmp r0, #0 + beq _0805BA2C + cmp r4, #0x47 + bhi _0805B9F8 + adds r4, #4 + adds r0, r4, #0 + bl sub_0801E154 + movs r0, #0 + str r0, [r5, #0x20] + b _0805BA42 + .align 2, 0 +_0805B9E8: .4byte gUnk_03000F50 +_0805B9EC: .4byte 0x0000DFFF +_0805B9F0: .4byte gUnk_03003F80 +_0805B9F4: .4byte gUnk_02033A90 +_0805B9F8: + ldr r0, _0805BA24 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0805BA42 + ldrb r0, [r5, #0xf] + adds r0, #0x10 + strb r0, [r5, #0xf] + ldr r1, _0805BA28 @ =gUnk_080C9160 + ldrb r0, [r5, #0xf] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r6, #0 + ldrsh r0, [r0, r6] + asrs r0, r0, #7 + str r0, [r5, #0x20] + adds r0, r4, r0 + bl sub_0801E154 + b _0805BA42 + .align 2, 0 +_0805BA24: .4byte gUnk_030010A0 +_0805BA28: .4byte gUnk_080C9160 +_0805BA2C: + movs r0, #0 + str r0, [r5, #0x20] + cmp r4, #0x11 + bls _0805BA42 + subs r4, #4 + cmp r4, #0x10 + bhi _0805BA3C + movs r4, #0x11 +_0805BA3C: + adds r0, r4, #0 + bl sub_0801E154 +_0805BA42: + strb r4, [r5, #0xe] + ldr r3, _0805BA70 @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r3, r1] + ldr r2, _0805BA74 @ =gUnk_03000BF0 + movs r6, #0xa + ldrsh r1, [r2, r6] + subs r0, r0, r1 + movs r6, #0x32 + ldrsh r1, [r3, r6] + movs r6, #0xc + ldrsh r2, [r2, r6] + subs r1, r1, r2 + movs r6, #0x36 + ldrsh r2, [r3, r6] + subs r2, #9 + adds r1, r1, r2 + ldr r2, [r5, #0x20] + adds r2, r4, r2 + bl sub_0801E160 +_0805BA6C: + pop {r4, r5, r6, pc} + .align 2, 0 +_0805BA70: .4byte gLinkEntity +_0805BA74: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805BA78 +sub_0805BA78: @ 0x0805BA78 + push {r4, lr} + ldr r1, _0805BAA8 @ =gUnk_02033A90 + movs r0, #0xa + ldrsh r3, [r1, r0] + ldr r0, _0805BAAC @ =gUnk_02034350 + movs r4, #0xc + ldrsh r2, [r0, r4] + cmp r2, #0 + bge _0805BA8C + movs r2, #0 +_0805BA8C: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r2, r0 + ble _0805BA96 + adds r2, r0, #0 +_0805BA96: + cmp r3, r2 + beq _0805BACE + subs r0, r2, r3 + cmp r0, #0 + blt _0805BAB0 + cmp r0, #4 + bls _0805BAB6 + b _0805BABA + .align 2, 0 +_0805BAA8: .4byte gUnk_02033A90 +_0805BAAC: .4byte gUnk_02034350 +_0805BAB0: + subs r0, r3, r2 + cmp r0, #4 + bhi _0805BABA +_0805BAB6: + adds r3, r2, #0 + b _0805BAC8 +_0805BABA: + cmp r2, r3 + bge _0805BAC2 + subs r3, #4 + b _0805BAC8 +_0805BAC2: + cmp r2, r3 + ble _0805BAC8 + adds r3, #4 +_0805BAC8: + strh r3, [r1, #0xa] + movs r0, #1 + b _0805BAD0 +_0805BACE: + movs r0, #0 +_0805BAD0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BAD4 +sub_0805BAD4: @ 0x0805BAD4 + push {lr} + ldr r3, _0805BAF4 @ =gUnk_02033A90 + ldrb r0, [r3, #0xc] + cmp r0, #0 + beq _0805BAF2 + ldr r1, _0805BAF8 @ =gUnk_03000F50 + ldr r2, _0805BAFC @ =gUnk_08108CA8 + ldrh r0, [r3, #0xa] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, #0x68 + strh r0, [r1] +_0805BAF2: + pop {pc} + .align 2, 0 +_0805BAF4: .4byte gUnk_02033A90 +_0805BAF8: .4byte gUnk_03000F50 +_0805BAFC: .4byte gUnk_08108CA8 + + thumb_func_start sub_0805BB00 +sub_0805BB00: @ 0x0805BB00 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _0805BB50 @ =gUnk_02033A90 + ldrb r0, [r0, #0xc] + cmp r0, #0 + bne _0805BB28 + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _0805BB28 + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0x22 + strb r0, [r1, #9] + adds r0, r1, #0 + movs r1, #0 + bl sub_0805EA2C +_0805BB28: + ldr r1, _0805BB54 @ =0x0600F000 + movs r2, #0x80 + lsls r2, r2, #4 + movs r0, #0xf + bl sub_0801D5EC + ldr r0, _0805BB58 @ =gUnk_03000F50 + ldr r1, _0805BB5C @ =0x00001E0C + strh r1, [r0, #0x2c] + adds r0, #0x66 + ldr r1, _0805BB60 @ =0x00003E48 + strh r1, [r0] + ldr r0, _0805BB64 @ =gUnk_02034350 + strh r4, [r0, #0xc] + cmp r5, #0 + beq _0805BB68 + ldr r1, _0805BB50 @ =gUnk_02033A90 + movs r0, #1 + b _0805BB6C + .align 2, 0 +_0805BB50: .4byte gUnk_02033A90 +_0805BB54: .4byte 0x0600F000 +_0805BB58: .4byte gUnk_03000F50 +_0805BB5C: .4byte 0x00001E0C +_0805BB60: .4byte 0x00003E48 +_0805BB64: .4byte gUnk_02034350 +_0805BB68: + ldr r1, _0805BB70 @ =gUnk_02033A90 + movs r0, #2 +_0805BB6C: + strb r0, [r1, #0xc] + pop {r4, r5, pc} + .align 2, 0 +_0805BB70: .4byte gUnk_02033A90 + + thumb_func_start sub_0805BB74 +sub_0805BB74: @ 0x0805BB74 + push {lr} + adds r1, r0, #0 + ldr r2, _0805BBB0 @ =gUnk_02034350 + cmp r1, #0 + bge _0805BB82 + movs r0, #0xc + ldrsh r1, [r2, r0] +_0805BB82: + ldr r0, _0805BBB4 @ =gUnk_02033A90 + strh r1, [r0, #0xa] + strh r1, [r2, #0xc] + movs r0, #9 + movs r1, #0x22 + bl sub_0805EB9C + cmp r0, #0 + beq _0805BBAE + bl sub_0805B8EC + ldr r0, _0805BBB8 @ =gUnk_03000F50 + ldrh r1, [r0] + movs r3, #0x80 + lsls r3, r3, #4 + adds r2, r3, #0 + orrs r1, r2 + strh r1, [r0] + bl sub_0805BA78 + bl sub_0805BAD4 +_0805BBAE: + pop {pc} + .align 2, 0 +_0805BBB0: .4byte gUnk_02034350 +_0805BBB4: .4byte gUnk_02033A90 +_0805BBB8: .4byte gUnk_03000F50 + + thumb_func_start sub_0805BBBC +sub_0805BBBC: @ 0x0805BBBC + push {r4, lr} + movs r4, #0 + ldr r2, _0805BBF8 @ =gUnk_02033A90 + ldrb r0, [r2, #0xc] + cmp r0, #0 + beq _0805BBF2 + ldr r0, _0805BBFC @ =gUnk_02034350 + movs r3, #0xc + ldrsh r1, [r0, r3] + movs r3, #0xa + ldrsh r0, [r2, r3] + cmp r1, r0 + bge _0805BBF2 + ldr r2, _0805BC00 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + bl sub_0805BA78 + adds r4, r0, #0 + cmp r4, #0 + beq _0805BBF2 + bl sub_0805BAD4 +_0805BBF2: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_0805BBF8: .4byte gUnk_02033A90 +_0805BBFC: .4byte gUnk_02034350 +_0805BC00: .4byte gUnk_03000F50 + + thumb_func_start sub_0805BC04 +sub_0805BC04: @ 0x0805BC04 + push {r4, lr} + movs r4, #0 + ldr r2, _0805BC40 @ =gUnk_02033A90 + ldrb r0, [r2, #0xc] + cmp r0, #0 + beq _0805BC3A + ldr r0, _0805BC44 @ =gUnk_02034350 + movs r3, #0xc + ldrsh r1, [r0, r3] + movs r3, #0xa + ldrsh r0, [r2, r3] + cmp r1, r0 + ble _0805BC3A + ldr r2, _0805BC48 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + bl sub_0805BA78 + adds r4, r0, #0 + cmp r4, #0 + beq _0805BC3A + bl sub_0805BAD4 +_0805BC3A: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_0805BC40: .4byte gUnk_02033A90 +_0805BC44: .4byte gUnk_02034350 +_0805BC48: .4byte gUnk_03000F50 + + thumb_func_start sub_0805BC4C +sub_0805BC4C: @ 0x0805BC4C + push {lr} + ldr r1, _0805BC68 @ =gUnk_02033A90 + ldrb r0, [r1, #0xc] + cmp r0, #0 + beq _0805BC64 + movs r0, #0 + strb r0, [r1, #0xc] + ldr r2, _0805BC6C @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805BC70 @ =0x0000D7FF + ands r0, r1 + strh r0, [r2] +_0805BC64: + pop {pc} + .align 2, 0 +_0805BC68: .4byte gUnk_02033A90 +_0805BC6C: .4byte gUnk_03000F50 +_0805BC70: .4byte 0x0000D7FF + + thumb_func_start sub_0805BC74 +sub_0805BC74: @ 0x0805BC74 + push {lr} + ldr r2, _0805BC88 @ =gUnk_08108CCC + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805BC88: .4byte gUnk_08108CCC + + thumb_func_start sub_0805BC8C +sub_0805BC8C: @ 0x0805BC8C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805BCAE + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xf] + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805BCAE + adds r0, r4, #0 + bl sub_0805BE94 +_0805BCAE: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805BCD0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805BCD0 + adds r0, r4, #0 + bl sub_0805BEC4 + adds r0, r4, #0 + bl sub_0805BE94 +_0805BCD0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BCD4 +sub_0805BCD4: @ 0x0805BCD4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0805BD0E + cmp r0, #1 + bgt _0805BCE8 + cmp r0, #0 + beq _0805BCEE + b _0805BD5A +_0805BCE8: + cmp r0, #2 + beq _0805BD38 + b _0805BD5A +_0805BCEE: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xf] + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805BD5A + adds r0, r4, #0 + movs r1, #0x75 + bl sub_0805BE70 + movs r0, #2 + strb r0, [r4, #0xc] + b _0805BD5A +_0805BD0E: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805BD5A + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805BD5A + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0805BEC4 + adds r0, r4, #0 + movs r1, #0x76 + bl sub_0805BE70 + b _0805BD5A +_0805BD38: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + bne _0805BD5A + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805BD5A + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0x75 + bl sub_0805BE70 +_0805BD5A: + pop {r4, pc} + + thumb_func_start sub_0805BD5C +sub_0805BD5C: @ 0x0805BD5C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805BD94 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805BD76 + adds r0, r4, #0 + bl sub_0805BE94 +_0805BD76: + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r2, #0x3f + ands r1, r2 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4, #0x20] + movs r0, #1 + strb r0, [r4, #0xc] + b _0805BDB0 +_0805BD94: + ldrh r0, [r4, #0x20] + ldrb r1, [r4, #0xb] + bl sub_080002B0 + cmp r0, #0x76 + bne _0805BDB0 + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + ldrb r0, [r4, #0xe] + bl sub_0805308C + bl sub_0805E780 +_0805BDB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BDB4 +sub_0805BDB4: @ 0x0805BDB4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0805BDF4 + cmp r0, #1 + beq _0805BE2C + ldrh r0, [r4, #0x22] + subs r0, #1 + strh r0, [r4, #0x22] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805BE58 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r2, #0x3a + ldrsh r1, [r4, r2] + ldrb r2, [r4, #0xb] + bl sub_080A29C8 + ldrh r0, [r4, #0x3e] + bl sub_0807CD48 + ldrh r0, [r4, #0x20] + ldrb r1, [r4, #0xb] + bl sub_0807BA8C + ldrb r0, [r4, #0xe] + rsbs r0, r0, #0 + bl sub_0805308C + b _0805BE26 +_0805BDF4: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + bne _0805BE08 + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805BE0E +_0805BE08: + adds r0, r4, #0 + bl sub_0805BE94 +_0805BE0E: + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r2, #0x3f + ands r1, r2 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4, #0x20] +_0805BE26: + movs r0, #1 + strb r0, [r4, #0xc] + b _0805BE6C +_0805BE2C: + ldrh r0, [r4, #0x20] + ldrb r1, [r4, #0xb] + bl sub_080002B0 + cmp r0, #0x76 + bne _0805BE6C + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + ldrb r0, [r4, #0xe] + bl sub_0805308C + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x36 + ldrb r1, [r0] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + strh r0, [r4, #0x22] + b _0805BE6C +_0805BE58: + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805BE6C + adds r0, r4, #0 + bl sub_0805BEC4 + bl sub_0805E780 +_0805BE6C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BE70 +sub_0805BE70: @ 0x0805BE70 + push {r4, lr} + adds r4, r1, #0 + ldrh r1, [r0, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r3, #0x3f + ands r1, r3 + ldrh r2, [r0, #0x3a] + lsls r2, r2, #0x10 + asrs r2, r2, #0x14 + ands r2, r3 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r0, #0xb] + adds r0, r4, #0 + bl sub_0807B314 + pop {r4, pc} + + thumb_func_start sub_0805BE94 +sub_0805BE94: @ 0x0805BE94 + push {r4, lr} + adds r4, r0, #0 + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r2, #0x3f + ands r1, r2 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + ldrb r2, [r4, #0xb] + movs r0, #0x76 + bl sub_0807B314 + ldrb r0, [r4, #0xe] + bl sub_0805308C + bl sub_0805E780 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BEC4 +sub_0805BEC4: @ 0x0805BEC4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2a + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805BF10 + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #0x11] + ldr r1, _0805BF14 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r4, #0x38] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + ldrh r1, [r4, #0x3a] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldrb r1, [r4, #0xb] + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] +_0805BF10: + pop {r4, pc} + .align 2, 0 +_0805BF14: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805BF18 +sub_0805BF18: @ 0x0805BF18 + push {lr} + ldr r2, _0805BF2C @ =gUnk_08108CDC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805BF2C: .4byte gUnk_08108CDC + + thumb_func_start sub_0805BF30 +sub_0805BF30: @ 0x0805BF30 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r1, [r4, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r2, #0x3f + ands r1, r2 + ldrh r0, [r4, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4, #0x3c] + ldrh r0, [r4, #0x3c] + adds r1, r4, #0 + adds r1, #0x35 + ldrb r1, [r1] + bl sub_0805BFC4 + strb r0, [r4, #0xa] + ldrh r0, [r4, #0x3e] + bl sub_0807CBD0 + cmp r0, #0 + beq _0805BF74 + adds r0, r4, #0 + bl sub_0805C02C + adds r0, r4, #0 + bl sub_0805E900 +_0805BF74: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BF78 +sub_0805BF78: @ 0x0805BF78 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + adds r1, r4, #0 + adds r1, #0x35 + ldrb r1, [r1] + bl sub_080002C8 + cmp r0, #0x2e + beq _0805BFA0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0805C02C + ldrh r0, [r4, #0x3e] + bl sub_0807CCB4 +_0805BFA0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BFA4 +sub_0805BFA4: @ 0x0805BFA4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805BFC0 + movs r0, #0x72 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_0805E900 +_0805BFC0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805BFC4 +sub_0805BFC4: @ 0x0805BFC4 + push {lr} + bl sub_080002B0 + adds r1, r0, #0 + cmp r1, #0xec + beq _0805C018 + cmp r1, #0xec + bhi _0805BFEC + cmp r1, #0xbf + beq _0805C024 + cmp r1, #0xbf + bhi _0805BFE2 + cmp r1, #0xaf + beq _0805C014 + b _0805C028 +_0805BFE2: + cmp r1, #0xcc + beq _0805C01C + cmp r1, #0xdf + beq _0805C020 + b _0805C028 +_0805BFEC: + movs r0, #0x84 + lsls r0, r0, #1 + cmp r1, r0 + beq _0805C01C + cmp r1, r0 + bhi _0805C004 + cmp r1, #0xff + beq _0805C014 + subs r0, #3 + cmp r1, r0 + beq _0805C024 + b _0805C028 +_0805C004: + movs r0, #0x88 + lsls r0, r0, #1 + cmp r1, r0 + beq _0805C020 + adds r0, #5 + cmp r1, r0 + beq _0805C018 + b _0805C028 +_0805C014: + movs r0, #0 + b _0805C02A +_0805C018: + movs r0, #1 + b _0805C02A +_0805C01C: + movs r0, #2 + b _0805C02A +_0805C020: + movs r0, #3 + b _0805C02A +_0805C024: + movs r0, #4 + b _0805C02A +_0805C028: + movs r0, #0xff +_0805C02A: + pop {pc} + + thumb_func_start sub_0805C02C +sub_0805C02C: @ 0x0805C02C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0xff + beq _0805C04A + ldr r0, _0805C04C @ =gUnk_08108CE8 + ldrb r2, [r1, #0xa] + lsls r2, r2, #2 + adds r2, r2, r0 + ldrh r0, [r1, #0x3c] + adds r1, #0x35 + ldrb r1, [r1] + ldr r2, [r2] + bl _call_via_r2 +_0805C04A: + pop {pc} + .align 2, 0 +_0805C04C: .4byte gUnk_08108CE8 + + thumb_func_start sub_0805C050 +sub_0805C050: @ 0x0805C050 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r1, r5, #0 + subs r1, #0x41 + movs r0, #0xb1 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x40 + movs r0, #0xb2 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x3f + movs r0, #0xb3 + adds r2, r4, #0 + bl sub_0807B314 + subs r1, r5, #1 + movs r0, #0xb4 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #1 + movs r0, #0xb7 + adds r2, r4, #0 + bl sub_0807B314 + cmp r4, #1 + bne _0805C11C + bl sub_08052670 + cmp r0, #0 + beq _0805C0D8 + movs r0, #0x4f + movs r1, #0xe + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805C0E0 + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + ldr r2, _0805C0D0 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r1, r1, r0 + strh r1, [r3, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + ldr r1, _0805C0D4 @ =0x0000FFF8 + adds r0, r0, r1 + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r3, #0x32] + b _0805C0E0 + .align 2, 0 +_0805C0D0: .4byte gUnk_03000BF0 +_0805C0D4: .4byte 0x0000FFF8 +_0805C0D8: + bl sub_08052660 + cmp r0, #0 + beq _0805C0EC +_0805C0E0: + movs r0, #0xb5 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + b _0805C0F6 +_0805C0EC: + movs r0, #0xb6 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 +_0805C0F6: + adds r1, r5, #0 + subs r1, #0x41 + movs r0, #0xb8 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x40 + movs r0, #0xb9 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x3f + movs r0, #0xba + movs r2, #2 + bl sub_0807B314 + b _0805C16E +_0805C11C: + movs r0, #0xb5 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + bl sub_08052660 + cmp r0, #0 + beq _0805C16E + bl sub_0805C608 + adds r1, r0, #0 + movs r0, #0x4f + movs r2, #6 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805C16E + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + ldr r2, _0805C170 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r1, r1, r0 + strh r1, [r3, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + ldr r1, _0805C174 @ =0x0000FFF0 + adds r0, r0, r1 + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r3, #0x32] + adds r1, r3, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] +_0805C16E: + pop {r4, r5, pc} + .align 2, 0 +_0805C170: .4byte gUnk_03000BF0 +_0805C174: .4byte 0x0000FFF0 + + thumb_func_start sub_0805C178 +sub_0805C178: @ 0x0805C178 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r1, r5, #0 + subs r1, #0x40 + movs r0, #0xf1 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x3f + movs r0, #0xf5 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #1 + movs r0, #0xf6 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x40 + movs r0, #0xf4 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x41 + movs r0, #0xf7 + adds r2, r4, #0 + bl sub_0807B314 + cmp r4, #1 + bne _0805C23E + bl sub_08052670 + cmp r0, #0 + beq _0805C1FC + movs r0, #0x4f + movs r1, #0xe + movs r2, #1 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805C204 + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + ldr r1, _0805C1F8 @ =gUnk_03000BF0 + adds r0, #0x18 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + adds r0, #8 + ldrh r1, [r1, #8] + adds r1, r1, r0 + strh r1, [r2, #0x32] + b _0805C204 + .align 2, 0 +_0805C1F8: .4byte gUnk_03000BF0 +_0805C1FC: + bl sub_08052660 + cmp r0, #0 + beq _0805C210 +_0805C204: + movs r0, #0xf2 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + b _0805C21A +_0805C210: + movs r0, #0xf3 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 +_0805C21A: + adds r1, r5, #0 + subs r1, #0x3f + movs r0, #0xf8 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #1 + movs r0, #0xf9 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x41 + movs r0, #0xfa + movs r2, #2 + bl sub_0807B314 + b _0805C28E +_0805C23E: + movs r0, #0xf2 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + bl sub_08052660 + cmp r0, #0 + beq _0805C28E + bl sub_0805C608 + adds r1, r0, #0 + movs r0, #0x4f + movs r2, #7 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805C28E + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + ldr r1, _0805C290 @ =gUnk_03000BF0 + adds r0, #0x20 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + adds r0, #8 + ldrh r1, [r1, #8] + adds r1, r1, r0 + strh r1, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] +_0805C28E: + pop {r4, r5, pc} + .align 2, 0 +_0805C290: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805C294 +sub_0805C294: @ 0x0805C294 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + subs r1, r5, #1 + movs r0, #0xd1 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #1 + movs r0, #0xd4 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xd5 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x40 + movs r0, #0xd6 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x41 + movs r0, #0xd7 + adds r2, r4, #0 + bl sub_0807B314 + cmp r4, #1 + bne _0805C35C + bl sub_08052670 + cmp r0, #0 + beq _0805C318 + movs r0, #0x4f + movs r1, #0xe + movs r2, #2 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805C320 + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + ldr r2, _0805C314 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r1, r1, r0 + strh r1, [r3, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + adds r0, #0x20 + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r3, #0x32] + b _0805C320 + .align 2, 0 +_0805C314: .4byte gUnk_03000BF0 +_0805C318: + bl sub_08052660 + cmp r0, #0 + beq _0805C32C +_0805C320: + movs r0, #0xd2 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + b _0805C336 +_0805C32C: + movs r0, #0xd3 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 +_0805C336: + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xd8 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x40 + movs r0, #0xd9 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x41 + movs r0, #0xda + movs r2, #2 + bl sub_0807B314 + b _0805C3AC +_0805C35C: + movs r0, #0xd2 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + bl sub_08052660 + cmp r0, #0 + beq _0805C3AC + bl sub_0805C608 + adds r1, r0, #0 + movs r0, #0x4f + movs r2, #8 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805C3AC + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + ldr r2, _0805C3B0 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r1, r1, r0 + strh r1, [r3, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + adds r0, #0x20 + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r3, #0x32] + adds r1, r3, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] +_0805C3AC: + pop {r4, r5, pc} + .align 2, 0 +_0805C3B0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805C3B4 +sub_0805C3B4: @ 0x0805C3B4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r1, r5, #0 + subs r1, #0x41 + movs r0, #0xe1 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x40 + movs r0, #0xe4 + adds r2, r4, #0 + bl sub_0807B314 + subs r1, r5, #1 + movs r0, #0xe2 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xe3 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x40 + movs r0, #0xe7 + adds r2, r4, #0 + bl sub_0807B314 + cmp r4, #1 + bne _0805C482 + bl sub_08052670 + cmp r0, #0 + beq _0805C440 + movs r0, #0x4f + movs r1, #0xe + movs r2, #3 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805C448 + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + ldr r1, _0805C438 @ =gUnk_03000BF0 + ldr r3, _0805C43C @ =0x0000FFF0 + adds r0, r0, r3 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + adds r0, #8 + ldrh r1, [r1, #8] + adds r1, r1, r0 + strh r1, [r2, #0x32] + b _0805C448 + .align 2, 0 +_0805C438: .4byte gUnk_03000BF0 +_0805C43C: .4byte 0x0000FFF0 +_0805C440: + bl sub_08052660 + cmp r0, #0 + beq _0805C454 +_0805C448: + movs r0, #0xe5 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + b _0805C45E +_0805C454: + movs r0, #0xe6 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 +_0805C45E: + adds r1, r5, #0 + subs r1, #0x41 + movs r0, #0xe8 + movs r2, #2 + bl sub_0807B314 + subs r1, r5, #1 + movs r0, #0xe9 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xea + movs r2, #2 + bl sub_0807B314 + b _0805C4D4 +_0805C482: + movs r0, #0xe5 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + bl sub_08052660 + cmp r0, #0 + beq _0805C4D4 + bl sub_0805C608 + adds r1, r0, #0 + movs r0, #0x4f + movs r2, #9 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805C4D4 + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + ldr r1, _0805C4D8 @ =gUnk_03000BF0 + ldr r3, _0805C4DC @ =0x0000FFF0 + adds r0, r0, r3 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + adds r0, #8 + ldrh r1, [r1, #8] + adds r1, r1, r0 + strh r1, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] +_0805C4D4: + pop {r4, r5, pc} + .align 2, 0 +_0805C4D8: .4byte gUnk_03000BF0 +_0805C4DC: .4byte 0x0000FFF0 + + thumb_func_start sub_0805C4E0 +sub_0805C4E0: @ 0x0805C4E0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r1, r5, #0 + subs r1, #0x41 + movs r0, #0xc1 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x40 + movs r0, #0xc2 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x3f + movs r0, #0xc3 + adds r2, r4, #0 + bl sub_0807B314 + subs r1, r5, #1 + movs r0, #0xc4 + adds r2, r4, #0 + bl sub_0807B314 + adds r1, r5, #1 + movs r0, #0xc7 + adds r2, r4, #0 + bl sub_0807B314 + cmp r4, #1 + bne _0805C5AC + bl sub_08052670 + cmp r0, #0 + beq _0805C568 + movs r0, #0x4f + movs r1, #0xe + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805C570 + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + ldr r2, _0805C560 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r1, r1, r0 + strh r1, [r3, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + ldr r1, _0805C564 @ =0x0000FFF0 + adds r0, r0, r1 + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r3, #0x32] + b _0805C570 + .align 2, 0 +_0805C560: .4byte gUnk_03000BF0 +_0805C564: .4byte 0x0000FFF0 +_0805C568: + bl sub_08052660 + cmp r0, #0 + beq _0805C57C +_0805C570: + movs r0, #0xc5 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + b _0805C586 +_0805C57C: + movs r0, #0xc6 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 +_0805C586: + adds r1, r5, #0 + subs r1, #0x41 + movs r0, #0xc8 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x40 + movs r0, #0xc9 + movs r2, #2 + bl sub_0807B314 + adds r1, r5, #0 + subs r1, #0x3f + movs r0, #0xca + movs r2, #2 + bl sub_0807B314 + b _0805C5FE +_0805C5AC: + movs r0, #0xc5 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + bl sub_08052660 + cmp r0, #0 + beq _0805C5FE + bl sub_0805C608 + adds r1, r0, #0 + movs r0, #0x4f + movs r2, #6 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _0805C5FE + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + ldr r2, _0805C600 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r1, r1, r0 + strh r1, [r3, #0x2e] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + ldr r1, _0805C604 @ =0x0000FFF0 + adds r0, r0, r1 + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r3, #0x32] + adds r1, r3, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] +_0805C5FE: + pop {r4, r5, pc} + .align 2, 0 +_0805C600: .4byte gUnk_03000BF0 +_0805C604: .4byte 0x0000FFF0 + + thumb_func_start sub_0805C608 +sub_0805C608: @ 0x0805C608 + ldr r1, _0805C614 @ =gUnk_08108CFC + ldr r0, _0805C618 @ =gUnk_02033A90 + ldrb r0, [r0, #3] + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0805C614: .4byte gUnk_08108CFC +_0805C618: .4byte gUnk_02033A90 + + thumb_func_start sub_0805C61C +sub_0805C61C: @ 0x0805C61C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805C674 + movs r0, #0x38 + ldrsh r1, [r4, r0] + ldr r2, _0805C668 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x3a + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4, #0x38] + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #2 + bl sub_080002B0 + cmp r0, #0x75 + bne _0805C670 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0805C66C @ =0x0000406A + movs r2, #0x38 + ldrsh r1, [r4, r2] + movs r2, #1 + bl sub_0800015E + b _0805C674 + .align 2, 0 +_0805C668: .4byte gUnk_03000BF0 +_0805C66C: .4byte 0x0000406A +_0805C670: + bl sub_0805E780 +_0805C674: + movs r5, #0x38 + ldrsh r0, [r4, r5] + movs r1, #1 + bl sub_080002B0 + ldr r5, _0805C6B4 @ =0x0000406B + cmp r0, r5 + bne _0805C694 + movs r0, #0x38 + ldrsh r1, [r4, r0] + movs r0, #0x76 + movs r2, #2 + bl sub_0807B7D8 + bl sub_0805E780 +_0805C694: + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #2 + bl sub_080002B0 + cmp r0, #0x76 + bne _0805C6B2 + movs r2, #0x38 + ldrsh r1, [r4, r2] + adds r0, r5, #0 + movs r2, #1 + bl sub_0800015E + bl sub_0805E780 +_0805C6B2: + pop {r4, r5, pc} + .align 2, 0 +_0805C6B4: .4byte 0x0000406B + + thumb_func_start sub_0805C6B8 +sub_0805C6B8: @ 0x0805C6B8 + push {lr} + ldr r2, _0805C6CC @ =gUnk_08108D04 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805C6CC: .4byte gUnk_08108D04 + + thumb_func_start sub_0805C6D0 +sub_0805C6D0: @ 0x0805C6D0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + bl sub_0804B128 + adds r4, r0, #0 + cmp r4, #0 + bne _0805C6EA + adds r0, r5, #0 + bl sub_0805E900 + b _0805C79A +_0805C6EA: + ldr r3, _0805C784 @ =gUnk_03000BF0 + ldrh r0, [r3, #8] + ldrb r1, [r5, #0xe] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r5, #0x2a] + strb r1, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x28 + strb r1, [r0] + adds r2, r5, #0 + adds r2, #0x29 + strb r1, [r2] + ldrb r0, [r4] + cmp r0, #0xff + beq _0805C778 + ldrb r0, [r5, #0xe] + cmp r0, #0x1f + bhi _0805C778 + adds r7, r3, #0 + movs r3, #1 + adds r6, r2, #0 +_0805C716: + ldrb r1, [r4, #1] + ldrb r2, [r4, #2] + movs r0, #0x4c + str r3, [sp] + bl sub_080A2960 + adds r2, r0, #0 + ldr r3, [sp] + cmp r2, #0 + beq _0805C762 + ldrb r0, [r4, #3] + strb r0, [r2, #0xe] + ldrh r0, [r4, #4] + ldrh r1, [r7, #6] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + ldrh r0, [r4, #6] + ldrh r1, [r7, #8] + adds r0, r0, r1 + strh r0, [r2, #0x32] + str r5, [r2, #0x50] + adds r0, r2, #0 + adds r0, #0x38 + strb r3, [r0] + ldrb r0, [r5, #0xe] + adds r1, r2, #0 + adds r1, #0x83 + strb r0, [r1] + ldrb r1, [r4] + adds r0, r2, #0 + adds r0, #0x82 + strb r1, [r0] + adds r0, r3, #0 + ldrb r1, [r5, #0xe] + lsls r0, r1 + ldrb r1, [r6] + orrs r0, r1 + strb r0, [r6] +_0805C762: + adds r4, #8 + ldrb r0, [r5, #0xe] + adds r1, r0, #1 + strb r1, [r5, #0xe] + ldrb r0, [r4] + cmp r0, #0xff + beq _0805C778 + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1f + bls _0805C716 +_0805C778: + ldrb r0, [r5, #0xb] + cmp r0, #0xff + bne _0805C788 + movs r0, #2 + b _0805C798 + .align 2, 0 +_0805C784: .4byte gUnk_03000BF0 +_0805C788: + ldrb r0, [r5, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + beq _0805C796 + movs r0, #2 + b _0805C798 +_0805C796: + movs r0, #1 +_0805C798: + strb r0, [r5, #0xc] +_0805C79A: + add sp, #4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0805C7A0 +sub_0805C7A0: @ 0x0805C7A0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x28 + adds r1, r4, #0 + adds r1, #0x29 + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bne _0805C7BC + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xb] + bl sub_0807CCB4 +_0805C7BC: + adds r0, r4, #0 + bl sub_0805C7CC + pop {r4, pc} + + thumb_func_start sub_0805C7C4 +sub_0805C7C4: @ 0x0805C7C4 + push {lr} + bl sub_0805C7CC + pop {pc} + + thumb_func_start sub_0805C7CC +sub_0805C7CC: @ 0x0805C7CC + push {lr} + adds r2, r0, #0 + ldr r0, _0805C7F0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0805C7FC + ldr r0, _0805C7F4 @ =gLinkEntity + movs r3, #0x32 + ldrsh r1, [r0, r3] + ldrh r0, [r2, #0x2a] + adds r0, #0x10 + cmp r1, r0 + bge _0805C7F8 + movs r0, #1 + b _0805C816 + .align 2, 0 +_0805C7F0: .4byte gUnk_03003F80 +_0805C7F4: .4byte gLinkEntity +_0805C7F8: + movs r0, #0 + b _0805C816 +_0805C7FC: + ldr r0, _0805C810 @ =gLinkEntity + movs r3, #0x32 + ldrsh r1, [r0, r3] + ldrh r0, [r2, #0x2a] + adds r0, #0x28 + cmp r1, r0 + bge _0805C814 + movs r0, #3 + b _0805C816 + .align 2, 0 +_0805C810: .4byte gLinkEntity +_0805C814: + movs r0, #2 +_0805C816: + strb r0, [r2, #0xd] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805C81C +sub_0805C81C: @ 0x0805C81C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0805C854 @ =gUnk_08108D10 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + movs r0, #0xc0 + lsls r0, r0, #2 + ldrb r1, [r4, #0xa] + adds r1, #0x67 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _0805C85C + ldr r0, _0805C858 @ =gUnk_030010A0 + adds r0, #0xac + movs r1, #1 + ldrb r4, [r4, #0xa] + lsls r1, r4 + ldrh r2, [r0] + orrs r1, r2 + strh r1, [r0] + b _0805C86C + .align 2, 0 +_0805C854: .4byte gUnk_08108D10 +_0805C858: .4byte gUnk_030010A0 +_0805C85C: + ldr r2, _0805C870 @ =gUnk_030010A0 + adds r2, #0xac + movs r1, #1 + ldrb r4, [r4, #0xa] + lsls r1, r4 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] +_0805C86C: + pop {r4, pc} + .align 2, 0 +_0805C870: .4byte gUnk_030010A0 + + thumb_func_start sub_0805C874 +sub_0805C874: @ 0x0805C874 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805C920 + cmp r0, #0 + beq _0805C884 + movs r0, #2 + b _0805C886 +_0805C884: + movs r0, #1 +_0805C886: + strb r0, [r4, #0xc] + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805C894 +sub_0805C894: @ 0x0805C894 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805C920 + cmp r0, #0 + beq _0805C8B0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x8d + lsls r0, r0, #1 + bl sub_080A3268 +_0805C8B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805C8B4 +sub_0805C8B4: @ 0x0805C8B4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0805C8F4 + movs r0, #0x14 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + ands r0, r2 + cmp r0, #5 + bls _0805C8DA + strb r1, [r4, #0xf] +_0805C8DA: + ldr r1, _0805C904 @ =gUnk_08108D20 + ldrb r0, [r4, #0xf] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_0801D714 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0805C8F4 + movs r0, #0x8d + lsls r0, r0, #1 + bl sub_080A3268 +_0805C8F4: + adds r0, r4, #0 + bl sub_0805C920 + cmp r0, #0 + bne _0805C902 + movs r0, #3 + strb r0, [r4, #0xc] +_0805C902: + pop {r4, pc} + .align 2, 0 +_0805C904: .4byte gUnk_08108D20 + + thumb_func_start sub_0805C908 +sub_0805C908: @ 0x0805C908 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xf] + cmp r0, #0 + bne _0805C918 + movs r0, #1 + strb r0, [r1, #0xc] + b _0805C91E +_0805C918: + adds r0, r1, #0 + bl sub_0805C8B4 +_0805C91E: + pop {pc} + + thumb_func_start sub_0805C920 +sub_0805C920: @ 0x0805C920 + push {lr} + movs r2, #0xc0 + lsls r2, r2, #2 + ldrb r1, [r0, #0xa] + adds r1, #0x67 + adds r0, r2, #0 + bl GetProgressFlagWithOffset + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805C934 +sub_0805C934: @ 0x0805C934 + push {lr} + ldr r2, _0805C948 @ =gUnk_08108D28 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805C948: .4byte gUnk_08108D28 + + thumb_func_start sub_0805C94C +sub_0805C94C: @ 0x0805C94C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0805C9B0 + adds r6, r4, #0 + adds r6, #0x20 + adds r1, r6, #0 + movs r2, #0 + adds r0, r4, #0 + adds r0, #0x3c +_0805C962: + str r2, [r0] + subs r0, #4 + cmp r0, r1 + bge _0805C962 + adds r0, r4, #0 + bl sub_0805CA6C + adds r5, r0, #0 + cmp r5, #1 + ble _0805C9A8 + bl sub_0805E8D4 + adds r2, r0, #0 + cmp r2, #0 + beq _0805C9A8 + movs r0, #9 + strb r0, [r2, #8] + movs r0, #0x28 + strb r0, [r2, #9] + movs r0, #1 + strb r0, [r2, #0xa] + strb r5, [r2, #0xe] + adds r1, r2, #0 + adds r1, #0x20 + adds r0, r6, #0 + ldm r0!, {r3, r5, r6} + stm r1!, {r3, r5, r6} + ldm r0!, {r3, r5, r6} + stm r1!, {r3, r5, r6} + ldm r0!, {r3, r5} + stm r1!, {r3, r5} + adds r0, r2, #0 + movs r1, #6 + bl sub_0805EA2C +_0805C9A8: + adds r0, r4, #0 + bl sub_0805E900 + b _0805C9B8 +_0805C9B0: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xf] +_0805C9B8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0805C9BC +sub_0805C9BC: @ 0x0805C9BC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r6, r0, #0 + bl sub_0805CB48 + ldrb r0, [r6, #0xe] + subs r0, #1 + mov sb, r0 + ldrb r1, [r6, #0xf] + adds r0, r1, #1 + strb r0, [r6, #0xf] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805CA22 + movs r2, #0 + cmp r2, sb + bge _0805CA62 + movs r0, #0x20 + adds r0, r0, r6 + mov r8, r0 +_0805C9EC: + lsls r1, r2, #2 + adds r0, r6, #0 + adds r0, #0x20 + adds r0, r0, r1 + ldr r3, [r0] + adds r4, r2, #1 + adds r5, r4, #0 + ldrb r1, [r6, #0xe] + cmp r5, r1 + bge _0805CA1A + lsls r0, r5, #2 + mov r1, r8 + adds r7, r0, r1 +_0805CA06: + ldm r7!, {r1} + adds r0, r3, #0 + str r3, [sp] + bl sub_08004484 + adds r4, #1 + ldr r3, [sp] + ldrb r0, [r6, #0xe] + cmp r4, r0 + blt _0805CA06 +_0805CA1A: + adds r2, r5, #0 + cmp r2, sb + blt _0805C9EC + b _0805CA62 +_0805CA22: + movs r2, #0 + cmp r2, sb + bge _0805CA62 + movs r1, #0x20 + adds r1, r1, r6 + mov r8, r1 +_0805CA2E: + lsls r1, r2, #2 + adds r0, r6, #0 + adds r0, #0x20 + adds r0, r0, r1 + ldr r3, [r0] + adds r4, r2, #1 + adds r5, r4, #0 + ldrb r0, [r6, #0xe] + cmp r5, r0 + bge _0805CA5C + lsls r0, r5, #2 + mov r1, r8 + adds r7, r0, r1 +_0805CA48: + ldm r7!, {r0} + adds r1, r3, #0 + str r3, [sp] + bl sub_08004484 + adds r4, #1 + ldr r3, [sp] + ldrb r0, [r6, #0xe] + cmp r4, r0 + blt _0805CA48 +_0805CA5C: + adds r2, r5, #0 + cmp r2, sb + blt _0805CA2E +_0805CA62: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805CA6C +sub_0805CA6C: @ 0x0805CA6C + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r5, #0 + ldrb r0, [r6, #0xb] + bl sub_0804B128 + adds r4, r0, #0 + cmp r4, #0 + bne _0805CACE + movs r0, #0 + b _0805CAE4 +_0805CA82: + movs r0, #8 + b _0805CAE4 +_0805CA86: + movs r0, #0xf + ands r0, r2 + cmp r0, #3 + bne _0805CACC + adds r0, r4, #0 + bl sub_0805CAF0 + adds r2, r0, #0 + cmp r2, #0 + beq _0805CACC + movs r3, #0 + cmp r3, r5 + bhs _0805CAB8 + ldr r0, [r6, #0x20] + cmp r0, r2 + beq _0805CAB8 + adds r1, r6, #0 + adds r1, #0x20 +_0805CAAA: + adds r1, #4 + adds r3, #1 + cmp r3, r5 + bhs _0805CAB8 + ldr r0, [r1] + cmp r0, r2 + bne _0805CAAA +_0805CAB8: + cmp r3, r5 + bne _0805CACC + lsls r1, r5, #2 + adds r0, r6, #0 + adds r0, #0x20 + adds r0, r0, r1 + str r2, [r0] + adds r5, #1 + cmp r5, #8 + beq _0805CA82 +_0805CACC: + adds r4, #0x10 +_0805CACE: + ldrb r2, [r4] + adds r0, r2, #0 + cmp r0, #0xff + beq _0805CAE2 + ldr r0, [r4] + ldr r1, _0805CAE8 @ =0x00FF000F + ands r0, r1 + ldr r1, _0805CAEC @ =0x00280009 + cmp r0, r1 + bne _0805CA86 +_0805CAE2: + adds r0, r5, #0 +_0805CAE4: + pop {r4, r5, r6, pc} + .align 2, 0 +_0805CAE8: .4byte 0x00FF000F +_0805CAEC: .4byte 0x00280009 + + thumb_func_start sub_0805CAF0 +sub_0805CAF0: @ 0x0805CAF0 + push {r4, r5, r6, lr} + adds r3, r0, #0 + ldrh r1, [r3, #8] + ldr r2, _0805CB34 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + adds r5, r1, r0 + ldrh r1, [r3, #0xa] + ldrh r0, [r2, #8] + adds r4, r1, r0 + ldr r1, _0805CB38 @ =gUnk_03003D90 + ldr r2, [r1, #4] + cmp r2, r1 + beq _0805CB42 +_0805CB0A: + movs r6, #0x2e + ldrsh r0, [r2, r6] + cmp r5, r0 + bne _0805CB3C + movs r6, #0x32 + ldrsh r0, [r2, r6] + cmp r4, r0 + bne _0805CB3C + ldrb r0, [r3, #2] + ldrb r6, [r2, #9] + cmp r0, r6 + bne _0805CB3C + ldrb r0, [r2, #8] + cmp r0, #3 + bne _0805CB3C + ldrb r0, [r3, #3] + ldrb r6, [r2, #0xa] + cmp r0, r6 + bne _0805CB3C + adds r0, r2, #0 + b _0805CB44 + .align 2, 0 +_0805CB34: .4byte gUnk_03000BF0 +_0805CB38: .4byte gUnk_03003D90 +_0805CB3C: + ldr r2, [r2, #4] + cmp r2, r1 + bne _0805CB0A +_0805CB42: + movs r0, #0 +_0805CB44: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0805CB48 +sub_0805CB48: @ 0x0805CB48 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r5, #0 + ldrb r1, [r4, #0xe] + cmp r5, r1 + bge _0805CB84 + adds r3, r4, #0 + adds r3, #0x20 + adds r6, r3, #0 +_0805CB5A: + ldr r0, [r3] + ldr r2, [r0, #4] + cmp r2, #0 + bne _0805CB7A + subs r0, r1, #1 + cmp r0, r5 + bne _0805CB6C + str r2, [r3] + b _0805CB74 +_0805CB6C: + lsls r0, r0, #2 + adds r0, r6, r0 + ldr r0, [r0] + str r0, [r3] +_0805CB74: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] +_0805CB7A: + adds r3, #4 + adds r5, #1 + ldrb r1, [r4, #0xe] + cmp r5, r1 + blt _0805CB5A +_0805CB84: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bhi _0805CB8E + bl sub_0805E780 +_0805CB8E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0805CB90 +sub_0805CB90: @ 0x0805CB90 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805CBB8 + adds r0, r4, #0 + bl sub_0805CBD0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805CBCE + adds r0, r4, #0 + bl sub_0805CC3C + adds r0, r4, #0 + bl sub_0805E900 + b _0805CBCE +_0805CBB8: + adds r0, r4, #0 + bl sub_0805CF80 + cmp r0, #0 + beq _0805CBCE + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + adds r0, r4, #0 + bl sub_0805E900 +_0805CBCE: + pop {r4, pc} + + thumb_func_start sub_0805CBD0 +sub_0805CBD0: @ 0x0805CBD0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + ldrh r1, [r5, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r3, #0x3f + ands r1, r3 + ldrh r0, [r5, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r5, #0x38] + ldrh r2, [r5, #0x3c] + lsrs r2, r2, #4 + ands r2, r3 + adds r0, r5, #0 + adds r0, #0x36 + ldrb r1, [r0] + adds r0, #1 + ldrb r0, [r0] + lsls r0, r0, #8 + adds r1, r1, r0 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r2, r1 + strh r2, [r5, #0x3a] + movs r1, #0x38 + ldrsh r0, [r5, r1] + adds r4, r5, #0 + adds r4, #0x34 + ldrb r1, [r4] + bl sub_080002B0 + strh r0, [r5, #0x3c] + ldrb r0, [r4] + bl sub_0808094C + ldr r2, _0805CC38 @ =0x00005004 + adds r1, r0, r2 + str r1, [r5, #0x28] + movs r2, #0x3a + ldrsh r1, [r5, r2] + lsls r1, r1, #1 + adds r1, #4 + adds r0, r0, r1 + str r0, [r5, #0x2c] + pop {r4, r5, pc} + .align 2, 0 +_0805CC38: .4byte 0x00005004 + + thumb_func_start sub_0805CC3C +sub_0805CC3C: @ 0x0805CC3C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + movs r0, #0x38 + ldrsh r5, [r4, r0] + movs r0, #0x3a + ldrsh r1, [r4, r0] + mov r8, r1 + adds r7, r4, #0 + adds r7, #0x34 + ldrb r0, [r7] + ldr r6, _0805CC6C @ =0x00000322 + cmp r0, #1 + bne _0805CC5C + subs r6, #1 +_0805CC5C: + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _0805CCF4 + cmp r0, #2 + bgt _0805CC70 + cmp r0, #1 + beq _0805CC94 + b _0805CC76 + .align 2, 0 +_0805CC6C: .4byte 0x00000322 +_0805CC70: + cmp r0, #3 + bne _0805CC76 + b _0805CDE4 +_0805CC76: + adds r4, #0x34 + ldrb r2, [r4] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0807B7D8 + ldr r0, _0805CC90 @ =0x00000365 + ldrb r2, [r4] + mov r1, r8 + bl sub_0807B7D8 + b _0805CF68 + .align 2, 0 +_0805CC90: .4byte 0x00000365 +_0805CC94: + ldrb r2, [r7] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0807B7D8 + adds r1, r5, #1 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x40 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x41 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + ldrh r0, [r4, #0x3c] + ldrb r2, [r7] + mov r1, r8 + bl sub_0807B7D8 + ldr r0, _0805CCEC @ =0x0000036F + mov r1, r8 + adds r1, #1 + ldrb r2, [r7] + bl sub_0807B7D8 + movs r0, #0xdc + lsls r0, r0, #2 + mov r1, r8 + adds r1, #0x40 + ldrb r2, [r7] + bl sub_0807B7D8 + ldr r0, _0805CCF0 @ =0x00000371 + mov r1, r8 + adds r1, #0x41 + b _0805CDC2 + .align 2, 0 +_0805CCEC: .4byte 0x0000036F +_0805CCF0: .4byte 0x00000371 +_0805CCF4: + ldrb r2, [r7] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0807B7D8 + adds r1, r5, #1 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #2 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x40 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x41 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x42 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x80 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x81 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x82 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + ldrh r0, [r4, #0x3c] + ldrb r2, [r7] + mov r1, r8 + bl sub_0807B7D8 + ldr r0, _0805CDCC @ =0x00000372 + mov r1, r8 + adds r1, #1 + ldrb r2, [r7] + bl sub_0807B7D8 + ldr r0, _0805CDD0 @ =0x0000036F + mov r1, r8 + adds r1, #2 + ldrb r2, [r7] + bl sub_0807B7D8 + movs r0, #0xdd + lsls r0, r0, #2 + mov r1, r8 + adds r1, #0x40 + ldrb r2, [r7] + bl sub_0807B7D8 + ldr r0, _0805CDD4 @ =0x00000376 + mov r1, r8 + adds r1, #0x41 + ldrb r2, [r7] + bl sub_0807B7D8 + ldr r0, _0805CDD8 @ =0x00000375 + mov r1, r8 + adds r1, #0x42 + ldrb r2, [r7] + bl sub_0807B7D8 + movs r0, #0xdc + lsls r0, r0, #2 + mov r1, r8 + adds r1, #0x80 + ldrb r2, [r7] + bl sub_0807B7D8 + ldr r0, _0805CDDC @ =0x00000373 + mov r1, r8 + adds r1, #0x81 + ldrb r2, [r7] + bl sub_0807B7D8 + ldr r0, _0805CDE0 @ =0x00000371 + mov r1, r8 + adds r1, #0x82 +_0805CDC2: + ldrb r2, [r7] + bl sub_0807B7D8 + b _0805CF68 + .align 2, 0 +_0805CDCC: .4byte 0x00000372 +_0805CDD0: .4byte 0x0000036F +_0805CDD4: .4byte 0x00000376 +_0805CDD8: .4byte 0x00000375 +_0805CDDC: .4byte 0x00000373 +_0805CDE0: .4byte 0x00000371 +_0805CDE4: + ldrb r2, [r7] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0807B7D8 + adds r1, r5, #1 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #2 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #3 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x40 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x41 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x42 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x43 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x80 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x81 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x82 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0x83 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0xc0 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0xc1 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0xc2 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r5, #0 + adds r1, #0xc3 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + ldrh r0, [r4, #0x3c] + ldrb r2, [r7] + mov r1, r8 + bl sub_0807B7D8 + ldr r4, _0805CF70 @ =0x00000372 + mov r1, r8 + adds r1, #1 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + mov r1, r8 + adds r1, #2 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + ldr r0, _0805CF74 @ =0x0000036F + mov r1, r8 + adds r1, #3 + ldrb r2, [r7] + bl sub_0807B7D8 + movs r6, #0xdd + lsls r6, r6, #2 + mov r1, r8 + adds r1, #0x40 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r4, #4 + mov r1, r8 + adds r1, #0x41 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + mov r1, r8 + adds r1, #0x42 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + ldr r5, _0805CF78 @ =0x00000375 + mov r1, r8 + adds r1, #0x43 + ldrb r2, [r7] + adds r0, r5, #0 + bl sub_0807B7D8 + mov r1, r8 + adds r1, #0x80 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0807B7D8 + mov r1, r8 + adds r1, #0x81 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + mov r1, r8 + adds r1, #0x82 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + mov r1, r8 + adds r1, #0x83 + ldrb r2, [r7] + adds r0, r5, #0 + bl sub_0807B7D8 + movs r0, #0xdc + lsls r0, r0, #2 + mov r1, r8 + adds r1, #0xc0 + ldrb r2, [r7] + bl sub_0807B7D8 + subs r4, #3 + mov r1, r8 + adds r1, #0xc1 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + mov r1, r8 + adds r1, #0xc2 + ldrb r2, [r7] + adds r0, r4, #0 + bl sub_0807B7D8 + ldr r0, _0805CF7C @ =0x00000371 + mov r1, r8 + adds r1, #0xc3 + ldrb r2, [r7] + bl sub_0807B7D8 +_0805CF68: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805CF70: .4byte 0x00000372 +_0805CF74: .4byte 0x0000036F +_0805CF78: .4byte 0x00000375 +_0805CF7C: .4byte 0x00000371 + + thumb_func_start sub_0805CF80 +sub_0805CF80: @ 0x0805CF80 + push {lr} + ldr r1, [r0, #0x2c] + ldrh r1, [r1] + ldr r0, [r0, #0x28] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + movs r2, #0 + ldr r0, _0805CFBC @ =0x00000365 + cmp r1, r0 + beq _0805CFB4 + adds r0, #4 + cmp r1, r0 + beq _0805CFB4 + adds r0, #1 + cmp r1, r0 + beq _0805CFB4 + adds r0, #1 + cmp r1, r0 + beq _0805CFB4 + adds r0, #2 + cmp r1, r0 + beq _0805CFB4 + subs r0, #1 + cmp r1, r0 + bne _0805CFB6 +_0805CFB4: + movs r2, #1 +_0805CFB6: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_0805CFBC: .4byte 0x00000365 + + thumb_func_start sub_0805CFC0 +sub_0805CFC0: @ 0x0805CFC0 + push {r4, lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _0805CFCE + adds r0, #1 + strb r0, [r1, #0xc] +_0805CFCE: + movs r0, #3 + bl sub_0804B128 + adds r4, r0, #0 + cmp r4, #0 + beq _0805CFEE + b _0805CFE8 +_0805CFDC: + cmp r0, #0xa + bne _0805CFE6 + adds r0, r4, #0 + bl sub_0805CFF0 +_0805CFE6: + adds r4, #8 +_0805CFE8: + ldrb r0, [r4] + cmp r0, #0 + bne _0805CFDC +_0805CFEE: + pop {r4, pc} + + thumb_func_start sub_0805CFF0 +sub_0805CFF0: @ 0x0805CFF0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #2] + bl sub_0807CBD0 + cmp r0, #0 + bne _0805D012 + ldrh r0, [r4, #4] + ldrb r1, [r4, #1] + bl sub_080002B0 + ldrh r1, [r4, #6] + cmp r1, r0 + bne _0805D012 + ldrh r0, [r4, #2] + bl sub_0807CCB4 +_0805D012: + pop {r4, pc} + + thumb_func_start sub_0805D014 +sub_0805D014: @ 0x0805D014 + push {lr} + ldr r2, _0805D028 @ =gUnk_08108D30 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805D028: .4byte gUnk_08108D30 + + thumb_func_start sub_0805D02C +sub_0805D02C: @ 0x0805D02C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + ldrh r0, [r6, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805D046 + bl sub_0805E780 +_0805D046: + ldr r0, _0805D0BC @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x43 + bhi _0805D0B0 + ldrb r0, [r6, #0xa] + bl sub_0804B128 + adds r5, r0, #0 + movs r7, #0 + movs r0, #0x36 + adds r0, r0, r6 + mov sl, r0 + ldr r1, _0805D0C0 @ =gUnk_03000BF0 + mov r8, r1 + movs r0, #0x20 + adds r0, r0, r6 + mov sb, r0 +_0805D068: + ldrh r1, [r5, #4] + movs r0, #0xa0 + adds r2, r7, #0 + bl sub_080A2960 + adds r4, r0, #0 + mov r1, r8 + ldrh r0, [r1, #6] + ldrh r1, [r5] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + mov r1, r8 + ldrh r0, [r1, #8] + ldrh r1, [r5, #2] + adds r0, r0, r1 + strh r0, [r4, #0x32] + str r6, [r4, #0x50] + adds r0, r4, #0 + bl sub_08016A30 + mov r0, sb + adds r0, #4 + mov sb, r0 + subs r0, #4 + stm r0!, {r4} + adds r7, #1 + adds r5, #6 + cmp r7, #3 + bls _0805D068 + movs r0, #0 + movs r1, #1 + strb r1, [r6, #0xc] + movs r1, #0x3c + strb r1, [r6, #0xf] + mov r1, sl + strb r0, [r1] +_0805D0B0: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805D0BC: .4byte gUnk_03003DBC +_0805D0C0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805D0C4 +sub_0805D0C4: @ 0x0805D0C4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D0D8 + movs r0, #0xb4 + strb r0, [r4, #0xf] +_0805D0D8: + adds r5, r4, #0 + adds r5, #0x36 + ldrb r0, [r5] + cmp r0, #0xf + bne _0805D0F6 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0x72 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_0805D11C +_0805D0F6: + movs r0, #0 + strb r0, [r5] + pop {r4, r5, pc} + + thumb_func_start sub_0805D0FC +sub_0805D0FC: @ 0x0805D0FC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D118 + ldrh r0, [r4, #0x3e] + bl sub_0807CCC8 + adds r0, r4, #0 + bl sub_0805E900 +_0805D118: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805D11C +sub_0805D11C: @ 0x0805D11C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r6, #0 + ldr r1, _0805D170 @ =gUnk_03000BF0 + mov r8, r1 + movs r7, #0x3f + adds r5, r0, #0 + adds r5, #0x20 +_0805D12E: + ldr r4, [r5] + movs r0, #0 + stm r5!, {r0} + movs r2, #0x2e + ldrsh r0, [r4, r2] + mov r3, r8 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r7 + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r3, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r7 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + adds r0, r4, #0 + bl sub_0805E7BC + adds r6, #1 + cmp r6, #3 + bls _0805D12E + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805D170: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805D174 +sub_0805D174: @ 0x0805D174 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xc] + cmp r1, #0 + bne _0805D184 + movs r0, #1 + strb r0, [r5, #0xc] + strh r1, [r5, #0x3a] +_0805D184: + movs r1, #0x38 + ldrsh r0, [r5, r1] + movs r2, #0x3a + ldrsh r1, [r5, r2] + movs r2, #0x14 + movs r3, #0x40 + bl sub_0800293E + cmp r0, #0 + beq _0805D1EE + ldr r0, _0805D1F0 @ =gLinkEntity + movs r4, #0x32 + ldrsh r1, [r0, r4] + ldr r3, _0805D1F4 @ =gUnk_03000BF0 + ldrh r2, [r3, #8] + subs r1, r1, r2 + movs r4, #0x36 + ldrsh r0, [r0, r4] + adds r1, r1, r0 + cmp r1, #0 + bge _0805D1EE + movs r1, #0xc + ldrsh r0, [r3, r1] + cmp r0, r2 + bne _0805D1EE + ldr r4, _0805D1F8 @ =gUnk_030010AC + adds r0, r4, #0 + movs r1, #0x20 + bl sub_0801D630 + subs r4, #0xc + movs r1, #0 + movs r0, #1 + strb r0, [r4, #8] + strb r1, [r4, #9] + movs r0, #0xb + strb r0, [r4, #0xf] + ldrb r0, [r5, #0xb] + strb r0, [r4, #0xc] + ldrb r0, [r5, #0xe] + strb r0, [r4, #0xd] + adds r0, r5, #0 + adds r0, #0x37 + ldrb r0, [r0] + strb r0, [r4, #0xe] + ldrh r0, [r5, #0x3c] + strh r0, [r4, #0x10] + ldrh r0, [r5, #0x3e] + strh r0, [r4, #0x12] + adds r0, r5, #0 + adds r0, #0x36 + ldrb r0, [r0] + strb r0, [r4, #0x14] +_0805D1EE: + pop {r4, r5, pc} + .align 2, 0 +_0805D1F0: .4byte gLinkEntity +_0805D1F4: .4byte gUnk_03000BF0 +_0805D1F8: .4byte gUnk_030010AC + + thumb_func_start sub_0805D1FC +sub_0805D1FC: @ 0x0805D1FC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0805D240 @ =0x00004014 + ldr r1, _0805D244 @ =0x000005C3 + movs r2, #1 + bl sub_0800015E + ldr r3, _0805D248 @ =gUnk_03000BF0 + ldrh r0, [r3, #8] + adds r0, #0xc8 + ldr r2, _0805D24C @ =gLinkEntity + movs r5, #0x32 + ldrsh r1, [r2, r5] + cmp r0, r1 + bge _0805D236 + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldrh r1, [r3, #6] + subs r0, r0, r1 + subs r0, #0x30 + cmp r0, #0x10 + bhi _0805D236 + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08016A04 +_0805D236: + adds r0, r4, #0 + bl sub_0805E900 + pop {r4, r5, pc} + .align 2, 0 +_0805D240: .4byte 0x00004014 +_0805D244: .4byte 0x000005C3 +_0805D248: .4byte gUnk_03000BF0 +_0805D24C: .4byte gLinkEntity + + thumb_func_start sub_0805D250 +sub_0805D250: @ 0x0805D250 + push {lr} + ldr r2, _0805D264 @ =gUnk_08108D3C + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805D264: .4byte gUnk_08108D3C + + thumb_func_start sub_0805D268 +sub_0805D268: @ 0x0805D268 + push {lr} + ldr r2, _0805D27C @ =gUnk_08108D44 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805D27C: .4byte gUnk_08108D44 + + thumb_func_start sub_0805D280 +sub_0805D280: @ 0x0805D280 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805D292 + bl sub_0805E780 +_0805D292: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805D2A6 + ldrh r0, [r4, #0x3c] + bl sub_0807CCC8 + bl sub_0805E780 +_0805D2A6: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0805D2B4 + movs r0, #0x1e + strb r0, [r4, #0xe] +_0805D2B4: + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805D2C0 +sub_0805D2C0: @ 0x0805D2C0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805D2EE + ldr r0, _0805D2F0 @ =gUnk_03003DC0 + ldrh r0, [r0, #8] + cmp r0, #1 + bhi _0805D2EE + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _0805D2E6 + adds r0, r4, #0 + bl sub_0805D2F4 +_0805D2E6: + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + bl sub_0805E4E0 +_0805D2EE: + pop {r4, pc} + .align 2, 0 +_0805D2F0: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805D2F4 +sub_0805D2F4: @ 0x0805D2F4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0805D310 @ =gUnk_03003DC0 + ldrh r0, [r0, #8] + cmp r0, #0 + bne _0805D328 + movs r1, #0x38 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _0805D314 + bl sub_080A3268 + b _0805D31A + .align 2, 0 +_0805D310: .4byte gUnk_03003DC0 +_0805D314: + movs r0, #0x72 + bl sub_080A3268 +_0805D31A: + ldrh r0, [r4, #0x3c] + cmp r0, #0 + beq _0805D324 + bl sub_0807CCC8 +_0805D324: + bl sub_0805E780 +_0805D328: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805D32C +sub_0805D32C: @ 0x0805D32C + push {lr} + ldr r2, _0805D340 @ =gUnk_08108D50 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805D340: .4byte gUnk_08108D50 + + thumb_func_start sub_0805D344 +sub_0805D344: @ 0x0805D344 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0805D35C + movs r0, #0x1e + strb r0, [r4, #0xe] +_0805D35C: + ldrb r0, [r4, #0xe] + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805D36C +sub_0805D36C: @ 0x0805D36C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805D382 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xf] + strb r0, [r4, #0xe] +_0805D382: + pop {r4, pc} + + thumb_func_start sub_0805D384 +sub_0805D384: @ 0x0805D384 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0805D3B2 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D3C6 + movs r1, #0x38 + ldrsh r0, [r4, r1] + movs r1, #0x72 + cmp r0, #0 + beq _0805D3A4 + adds r1, r0, #0 +_0805D3A4: + adds r0, r1, #0 + bl sub_080A3268 + ldrh r0, [r4, #0x3c] + bl sub_0807CCC8 + b _0805D3C6 +_0805D3B2: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + bne _0805D3C6 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3c] + bl sub_0807CD48 +_0805D3C6: + pop {r4, pc} + + thumb_func_start sub_0805D3C8 +sub_0805D3C8: @ 0x0805D3C8 + push {r4, lr} + adds r4, r0, #0 + cmp r4, #0 + bne _0805D3F4 + ldr r0, _0805D3E8 @ =gUnk_02033A90 + ldr r1, _0805D3EC @ =0x0000088C + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0805D3F0 @ =sub_0805D470 + cmp r0, r1 + beq _0805D45E + movs r0, #0 + bl _call_via_r1 + b _0805D45E + .align 2, 0 +_0805D3E8: .4byte gUnk_02033A90 +_0805D3EC: .4byte 0x0000088C +_0805D3F0: .4byte sub_0805D470 +_0805D3F4: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805D43A + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldr r0, _0805D428 @ =gUnk_02033A90 + ldr r2, _0805D42C @ =0x0000088C + adds r0, r0, r2 + ldr r0, [r0] + cmp r0, #0 + bne _0805D434 + ldr r1, _0805D430 @ =sub_0805D470 + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 + b _0805D45E + .align 2, 0 +_0805D428: .4byte gUnk_02033A90 +_0805D42C: .4byte 0x0000088C +_0805D430: .4byte sub_0805D470 +_0805D434: + bl sub_0805E780 + b _0805D45E +_0805D43A: + ldr r1, _0805D460 @ =gUnk_03000BF0 + ldr r0, [r1, #0x28] + ldr r3, _0805D464 @ =0xFFFFC000 + adds r0, r0, r3 + str r0, [r1, #0x28] + ldr r0, [r1, #0x2c] + ldr r2, _0805D468 @ =0xFFFFE000 + adds r0, r0, r2 + str r0, [r1, #0x2c] + ldr r2, _0805D46C @ =gUnk_03000F50 + ldrh r0, [r1, #0x2a] + ldrh r3, [r1, #0xa] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r2, #0x30] +_0805D45E: + pop {r4, pc} + .align 2, 0 +_0805D460: .4byte gUnk_03000BF0 +_0805D464: .4byte 0xFFFFC000 +_0805D468: .4byte 0xFFFFE000 +_0805D46C: .4byte gUnk_03000F50 + + thumb_func_start sub_0805D470 +sub_0805D470: @ 0x0805D470 + push {lr} + movs r0, #0x4c + bl sub_0801D7EC + ldr r2, _0805D4A0 @ =gUnk_03000F50 + ldr r0, _0805D4A4 @ =0x00001E07 + strh r0, [r2, #0x2c] + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _0805D4A8 @ =gUnk_03000BF0 + ldrh r0, [r1, #0x2a] + ldrh r3, [r1, #0xa] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #0x2e] + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r2, #0x30] + pop {pc} + .align 2, 0 +_0805D4A0: .4byte gUnk_03000F50 +_0805D4A4: .4byte 0x00001E07 +_0805D4A8: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805D4AC +sub_0805D4AC: @ 0x0805D4AC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldrb r0, [r6, #0xc] + cmp r0, #1 + beq _0805D520 + cmp r0, #1 + bgt _0805D4C6 + cmp r0, #0 + beq _0805D4D2 + b _0805D628 +_0805D4C6: + cmp r0, #2 + beq _0805D5A4 + cmp r0, #3 + bne _0805D4D0 + b _0805D604 +_0805D4D0: + b _0805D628 +_0805D4D2: + movs r0, #1 + strb r0, [r6, #0xc] + ldrb r0, [r6, #0xe] + strb r0, [r6, #0xf] + ldrh r1, [r6, #0x38] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r3, #0x3f + ands r1, r3 + ldrh r0, [r6, #0x3a] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r6, #0x28] + ldr r4, _0805D518 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0805D51C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r6, #0x2e] + strh r1, [r6, #0x2c] + b _0805D628 + .align 2, 0 +_0805D518: .4byte gLinkEntity +_0805D51C: .4byte gUnk_03000BF0 +_0805D520: + ldr r4, _0805D568 @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r3, _0805D56C @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + strh r5, [r6, #0x2e] + ldrh r2, [r6, #0x2c] + cmp r5, r2 + beq _0805D5A4 + strh r5, [r6, #0x2c] + ldrh r0, [r6, #0x2e] + ldrb r1, [r6, #0xb] + bl sub_080002B0 + adds r1, r0, #0 + ldr r3, _0805D570 @ =0x00000317 + cmp r1, r3 + beq _0805D574 + movs r0, #0xc6 + lsls r0, r0, #2 + cmp r1, r0 + beq _0805D580 + b _0805D5A4 + .align 2, 0 +_0805D568: .4byte gLinkEntity +_0805D56C: .4byte gUnk_03000BF0 +_0805D570: .4byte 0x00000317 +_0805D574: + movs r0, #2 + strb r0, [r6, #0xc] + movs r0, #0x6d + bl sub_080A3268 + b _0805D5A4 +_0805D580: + ldrh r1, [r6, #0x2e] + ldrb r2, [r6, #0xb] + adds r0, r3, #0 + bl sub_0807B7D8 + movs r0, #0x6b + bl sub_080A3268 + ldrb r0, [r6, #0xe] + subs r0, #1 + strb r0, [r6, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D5A4 + movs r0, #3 + strb r0, [r6, #0xc] + movs r0, #0x40 + strb r0, [r6, #0xe] +_0805D5A4: + ldrh r0, [r6, #0x3e] + cmp r0, #0 + beq _0805D628 + bl sub_0807CBE4 + cmp r0, #0 + beq _0805D628 + ldrh r0, [r6, #0x3e] + bl sub_0807CD48 + movs r0, #1 + strb r0, [r6, #0xc] + ldrb r0, [r6, #0xf] + strb r0, [r6, #0xe] + movs r1, #0 + adds r0, r6, #0 + adds r0, #0x37 + mov sb, r0 + ldrb r5, [r0] + cmp r1, r5 + bhs _0805D628 + movs r0, #0x36 + adds r0, r0, r6 + mov r8, r0 +_0805D5D4: + lsls r0, r1, #6 + ldrh r2, [r6, #0x28] + adds r5, r0, r2 + movs r4, #0 + adds r7, r1, #1 + mov r0, r8 + ldrb r0, [r0] + cmp r4, r0 + bhs _0805D5F8 +_0805D5E6: + adds r0, r5, r4 + ldrb r1, [r6, #0xb] + bl sub_0807BA8C + adds r4, #1 + mov r1, r8 + ldrb r1, [r1] + cmp r4, r1 + blo _0805D5E6 +_0805D5F8: + adds r1, r7, #0 + mov r2, sb + ldrb r2, [r2] + cmp r1, r2 + blo _0805D5D4 + b _0805D628 +_0805D604: + ldrb r0, [r6, #0xe] + cmp r0, #0 + beq _0805D628 + subs r0, #1 + strb r0, [r6, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0805D622 + cmp r0, #0x20 + bne _0805D628 + ldrh r0, [r6, #0x3c] + bl sub_0807CCC8 + b _0805D628 +_0805D622: + movs r0, #0x72 + bl sub_080A3268 +_0805D628: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805D630 +sub_0805D630: @ 0x0805D630 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldrb r0, [r6, #0xc] + cmp r0, #0 + beq _0805D642 + b _0805D768 +_0805D642: + adds r0, #1 + strb r0, [r6, #0xc] + movs r0, #0x42 + bl GetProgressFlag + cmp r0, #0 + beq _0805D6E4 + movs r0, #0x43 + bl GetProgressFlag + cmp r0, #0 + beq _0805D6E4 + movs r0, #0x44 + bl GetProgressFlag + cmp r0, #0 + beq _0805D6E4 + movs r0, #0x3e + bl GetProgressFlag + cmp r0, #0 + bne _0805D680 + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + beq _0805D6E4 + movs r0, #0x3e + bl sub_0807CD04 + b _0805D6D2 +_0805D680: + movs r0, #0x3f + bl GetProgressFlag + cmp r0, #0 + bne _0805D69C + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _0805D6E4 + movs r0, #0x3f + bl sub_0807CD04 + b _0805D6D2 +_0805D69C: + movs r0, #0x40 + bl GetProgressFlag + cmp r0, #0 + bne _0805D6B8 + movs r0, #4 + bl GetProgressFlag + cmp r0, #0 + beq _0805D6E4 + movs r0, #0x40 + bl sub_0807CD04 + b _0805D6D2 +_0805D6B8: + movs r0, #0x41 + bl GetProgressFlag + cmp r0, #0 + bne _0805D6E4 + movs r0, #5 + bl GetProgressFlag + cmp r0, #0 + beq _0805D6E4 + movs r0, #0x41 + bl sub_0807CD04 +_0805D6D2: + movs r0, #0x42 + bl sub_0807CD80 + movs r0, #0x43 + bl sub_0807CD80 + movs r0, #0x44 + bl sub_0807CD80 +_0805D6E4: + adds r1, r6, #0 + adds r1, #0x22 + movs r0, #0 + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + ldr r4, _0805D79C @ =gUnk_08108D5C + movs r5, #0 + mov sb, r1 + movs r7, #1 + ldr r0, _0805D7A0 @ =gUnk_03000BF0 + mov r8, r0 +_0805D700: + adds r0, r5, #0 + adds r0, #0x42 + bl GetProgressFlag + cmp r0, #0 + bne _0805D760 + bl sub_08000E50 + ldrh r1, [r4, #2] + bl __modsi3 + adds r2, r0, #0 + ldrh r0, [r4] + adds r2, r2, r0 + movs r0, #2 + movs r1, #0x5c + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805D760 + strb r7, [r2, #0xe] + strb r5, [r2, #0xf] + mov r1, r8 + ldrh r0, [r1, #6] + ldrh r1, [r4, #4] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + mov r1, r8 + ldrh r0, [r1, #8] + ldrh r1, [r4, #6] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldrh r1, [r4, #4] + adds r0, r2, #0 + adds r0, #0x80 + strh r1, [r0] + ldrh r0, [r4, #6] + adds r1, r2, #0 + adds r1, #0x82 + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x38 + strb r7, [r0] + str r6, [r2, #0x50] + mov r1, sb + adds r0, r1, r5 + strb r7, [r0] +_0805D760: + adds r5, #1 + adds r4, #8 + cmp r5, #2 + ble _0805D700 +_0805D768: + movs r5, #0 +_0805D76A: + adds r4, r5, #0 + adds r4, #0x42 + adds r0, r4, #0 + bl GetProgressFlag + cmp r0, #0 + bne _0805D78E + adds r0, r6, #0 + adds r0, #0x20 + adds r0, r0, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _0805D78E + adds r0, r4, #0 + bl sub_0807CD04 +_0805D78E: + adds r5, #1 + cmp r5, #2 + ble _0805D76A + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805D79C: .4byte gUnk_08108D5C +_0805D7A0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805D7A4 +sub_0805D7A4: @ 0x0805D7A4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0805D7D4 @ =gUnk_08108D7C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r0, _0805D7D8 @ =gUnk_030010A0 + ldr r0, [r0] + lsls r0, r0, #4 + str r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0805D9D8 + ldr r0, [r4, #0x20] + ldr r1, [r4, #0x28] + ldr r2, [r4, #0x24] + bl sub_0805DA08 + pop {r4, pc} + .align 2, 0 +_0805D7D4: .4byte gUnk_08108D7C +_0805D7D8: .4byte gUnk_030010A0 + + thumb_func_start sub_0805D7DC +sub_0805D7DC: @ 0x0805D7DC + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + movs r2, #2 + cmp r0, #0 + bne _0805D7EA + movs r2, #1 +_0805D7EA: + movs r0, #0 + strb r2, [r1, #0xc] + str r0, [r1, #0x20] + str r0, [r1, #0x24] + ldr r0, _0805D80C @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0x78 + beq _0805D83C + cmp r0, #0x78 + bgt _0805D816 + cmp r0, #7 + beq _0805D828 + cmp r0, #7 + bgt _0805D810 + cmp r0, #3 + beq _0805D82C + b _0805D828 + .align 2, 0 +_0805D80C: .4byte gUnk_03000BF0 +_0805D810: + cmp r0, #0x38 + beq _0805D840 + b _0805D828 +_0805D816: + cmp r0, #0x81 + beq _0805D830 + cmp r0, #0x81 + bgt _0805D824 + cmp r0, #0x80 + beq _0805D834 + b _0805D828 +_0805D824: + cmp r0, #0x88 + beq _0805D838 +_0805D828: + movs r1, #0 + b _0805D842 +_0805D82C: + movs r1, #1 + b _0805D842 +_0805D830: + movs r1, #2 + b _0805D842 +_0805D834: + movs r1, #3 + b _0805D842 +_0805D838: + movs r1, #4 + b _0805D842 +_0805D83C: + movs r1, #5 + b _0805D842 +_0805D840: + movs r1, #6 +_0805D842: + ldr r0, _0805D854 @ =gUnk_08108D74 + adds r0, r1, r0 + ldrb r0, [r0] + bl sub_0801D7EC + ldr r1, _0805D858 @ =gUnk_03000F50 + ldr r0, _0805D85C @ =0x00001E04 + strh r0, [r1, #0x2c] + pop {pc} + .align 2, 0 +_0805D854: .4byte gUnk_08108D74 +_0805D858: .4byte gUnk_03000F50 +_0805D85C: .4byte 0x00001E04 + + thumb_func_start sub_0805D860 +sub_0805D860: @ 0x0805D860 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xd] + cmp r0, #1 + beq _0805D89C + cmp r0, #1 + bgt _0805D874 + cmp r0, #0 + beq _0805D87E + b _0805D8D6 +_0805D874: + cmp r0, #2 + beq _0805D8B0 + cmp r0, #3 + beq _0805D8C2 + b _0805D8D6 +_0805D87E: + movs r0, #1 + strb r0, [r1, #0xd] + movs r0, #0x80 + str r0, [r1, #0x20] + ldr r2, _0805D898 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + b _0805D8F4 + .align 2, 0 +_0805D898: .4byte gUnk_03000F50 +_0805D89C: + ldr r0, [r1, #0x20] + subs r0, #1 + str r0, [r1, #0x20] + cmp r0, #0x10 + bne _0805D8F4 + movs r0, #2 + strb r0, [r1, #0xd] + movs r0, #0x2d + strb r0, [r1, #0xe] + b _0805D8F4 +_0805D8B0: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D8F4 + movs r0, #3 + strb r0, [r1, #0xd] + b _0805D8F4 +_0805D8C2: + ldr r0, [r1, #0x20] + subs r0, #1 + str r0, [r1, #0x20] + cmp r0, #0 + bne _0805D8F4 + movs r0, #4 + strb r0, [r1, #0xd] + movs r0, #0x3c + strb r0, [r1, #0xe] + b _0805D8F4 +_0805D8D6: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D8F4 + bl sub_0801E104 + ldr r2, _0805D8F8 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805D8FC @ =0x0000F7FF + ands r0, r1 + strh r0, [r2] + bl sub_0805E780 +_0805D8F4: + pop {pc} + .align 2, 0 +_0805D8F8: .4byte gUnk_03000F50 +_0805D8FC: .4byte 0x0000F7FF + + thumb_func_start sub_0805D900 +sub_0805D900: @ 0x0805D900 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xd] + cmp r0, #1 + beq _0805D938 + cmp r0, #1 + bgt _0805D914 + cmp r0, #0 + beq _0805D91A + b _0805D966 +_0805D914: + cmp r0, #2 + beq _0805D94E + b _0805D966 +_0805D91A: + movs r1, #1 + strb r1, [r2, #0xd] + movs r0, #0x2d + strb r0, [r2, #0xe] + str r1, [r2, #0x20] + ldr r2, _0805D934 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + b _0805D982 + .align 2, 0 +_0805D934: .4byte gUnk_03000F50 +_0805D938: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D982 + movs r0, #2 + strb r0, [r2, #0xd] + movs r0, #0x14 + strb r0, [r2, #0xe] + b _0805D982 +_0805D94E: + ldr r0, [r2, #0x20] + adds r0, #1 + str r0, [r2, #0x20] + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805D982 + movs r0, #3 + strb r0, [r2, #0xd] + b _0805D982 +_0805D966: + ldr r0, [r2, #0x20] + adds r0, #4 + str r0, [r2, #0x20] + cmp r0, #0x80 + bls _0805D982 + bl sub_0801E104 + ldr r2, _0805D984 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805D988 @ =0x0000F7FF + ands r0, r1 + strh r0, [r2] + bl sub_0805E780 +_0805D982: + pop {pc} + .align 2, 0 +_0805D984: .4byte gUnk_03000F50 +_0805D988: .4byte 0x0000F7FF + + thumb_func_start sub_0805D98C +sub_0805D98C: @ 0x0805D98C + push {lr} + adds r2, r0, #0 + ldr r3, _0805D9D4 @ =gUnk_03000FF0 + ldrh r1, [r3] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0805D9A2 + ldr r0, [r2, #0x20] + subs r0, #1 + str r0, [r2, #0x20] +_0805D9A2: + ldrh r1, [r3] + movs r0, #0x80 + ands r0, r1 + adds r3, r1, #0 + cmp r0, #0 + beq _0805D9B4 + ldr r0, [r2, #0x20] + adds r0, #1 + str r0, [r2, #0x20] +_0805D9B4: + movs r0, #0x20 + ands r0, r3 + cmp r0, #0 + beq _0805D9C2 + ldr r0, [r2, #0x28] + subs r0, #1 + str r0, [r2, #0x28] +_0805D9C2: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0805D9D0 + ldr r0, [r2, #0x28] + adds r0, #1 + str r0, [r2, #0x28] +_0805D9D0: + pop {pc} + .align 2, 0 +_0805D9D4: .4byte gUnk_03000FF0 + + thumb_func_start sub_0805D9D8 +sub_0805D9D8: @ 0x0805D9D8 + push {r4, lr} + ldr r4, [r0, #0x14] + cmp r4, #0 + beq _0805D9FC + ldr r3, _0805DA00 @ =gUnk_03000F50 + ldr r2, _0805DA04 @ =gUnk_03000BF0 + ldrh r1, [r4, #0x2e] + ldrh r0, [r2, #0xa] + subs r1, r1, r0 + movs r0, #0x80 + subs r0, r0, r1 + strh r0, [r3, #0x2e] + ldrh r1, [r4, #0x32] + ldrh r0, [r2, #0xc] + subs r1, r1, r0 + movs r0, #0x8c + subs r0, r0, r1 + strh r0, [r3, #0x30] +_0805D9FC: + pop {r4, pc} + .align 2, 0 +_0805DA00: .4byte gUnk_03000F50 +_0805DA04: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805DA08 +sub_0805DA08: @ 0x0805DA08 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r2, _0805DA78 @ =gUnk_03003DE4 + ldrb r1, [r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _0805DA7C @ =gUnk_02017AA0 + adds r4, r0, r1 + movs r3, #0 + mov r8, r2 + mov sb, r1 + ldr r0, _0805DA80 @ =gUnk_080C9160 + mov ip, r0 + movs r2, #0xff + ldr r1, _0805DA84 @ =gUnk_03000F50 +_0805DA34: + adds r0, r6, r3 + adds r0, r0, r5 + ands r0, r2 + lsls r0, r0, #1 + add r0, ip + movs r7, #0 + ldrsh r0, [r0, r7] + mov r7, sl + muls r7, r0, r7 + adds r0, r7, #0 + lsrs r0, r0, #8 + ldrh r7, [r1, #0x2e] + adds r0, r0, r7 + strh r0, [r4] + adds r4, #2 + adds r3, #1 + adds r5, #0x17 + cmp r3, #0x9f + bls _0805DA34 + mov r0, r8 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + add r0, sb + ldr r1, _0805DA88 @ =0x0400001C + ldr r2, _0805DA8C @ =0xA2600001 + bl sub_0805622C + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805DA78: .4byte gUnk_03003DE4 +_0805DA7C: .4byte gUnk_02017AA0 +_0805DA80: .4byte gUnk_080C9160 +_0805DA84: .4byte gUnk_03000F50 +_0805DA88: .4byte 0x0400001C +_0805DA8C: .4byte 0xA2600001 + + thumb_func_start sub_0805DA90 +sub_0805DA90: @ 0x0805DA90 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _0805DAB4 + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0x32 + strb r0, [r1, #9] + strb r4, [r1, #0xa] + str r5, [r1, #0x14] + adds r0, r1, #0 + movs r1, #8 + bl sub_0805EA2C +_0805DAB4: + ldr r0, _0805DAD8 @ =gUnk_02033A90 + ldr r1, _0805DADC @ =0x0000088C + adds r4, r0, r1 + ldr r0, [r4] + cmp r0, #0 + beq _0805DAD4 + ldr r2, _0805DAE0 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0805DAE4 @ =0x0000F7FF + ands r0, r1 + strh r0, [r2] + bl sub_080528F0 + ldr r0, [r4] + bl sub_0805E900 +_0805DAD4: + pop {r4, r5, pc} + .align 2, 0 +_0805DAD8: .4byte gUnk_02033A90 +_0805DADC: .4byte 0x0000088C +_0805DAE0: .4byte gUnk_03000F50 +_0805DAE4: .4byte 0x0000F7FF + + thumb_func_start sub_0805DAE8 +sub_0805DAE8: @ 0x0805DAE8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r2, r0, #0 + ldr r5, _0805DB4C @ =gUnk_03000BF0 + ldrh r0, [r5, #6] + movs r1, #0xfc + lsls r1, r1, #1 + mov r8, r1 + add r0, r8 + ldr r3, _0805DB50 @ =gLinkEntity + movs r4, #0x2e + ldrsh r1, [r3, r4] + subs r0, r0, r1 + adds r4, r0, #0 + adds r4, #0x10 + ldrh r0, [r5, #8] + movs r7, #0xa0 + lsls r7, r7, #1 + adds r0, r0, r7 + movs r6, #0x32 + ldrsh r1, [r3, r6] + subs r0, r0, r1 + adds r0, #0x10 + ldrb r6, [r2, #0xc] + cmp r6, #0 + bne _0805DB58 + cmp r4, #0x1f + bhi _0805DB88 + cmp r0, #0x1f + bhi _0805DB88 + movs r0, #0x36 + ldrsh r1, [r3, r0] + movs r0, #0x18 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0805DB88 + ldr r0, _0805DB54 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x14 + bne _0805DB88 + adds r0, r6, #1 + strb r0, [r2, #0xc] + movs r0, #0x5a + strb r0, [r2, #0xe] + adds r0, #0xb0 + bl sub_080A3268 + b _0805DB88 + .align 2, 0 +_0805DB4C: .4byte gUnk_03000BF0 +_0805DB50: .4byte gLinkEntity +_0805DB54: .4byte gUnk_03003F80 +_0805DB58: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DB88 + movs r0, #0x96 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0805DB84 + ldrh r0, [r5, #6] + add r0, r8 + strh r0, [r1, #0x2e] + ldrh r0, [r5, #8] + adds r0, r0, r7 + strh r0, [r1, #0x32] + ldr r0, _0805DB90 @ =0x0000FFE8 + strh r0, [r1, #0x36] +_0805DB84: + bl sub_0805E780 +_0805DB88: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805DB90: .4byte 0x0000FFE8 + + thumb_func_start sub_0805DB94 +sub_0805DB94: @ 0x0805DB94 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0805DBB0 @ =gUnk_08108D8C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0805DBF0 + pop {r4, pc} + .align 2, 0 +_0805DBB0: .4byte gUnk_08108D8C + + thumb_func_start sub_0805DBB4 +sub_0805DBB4: @ 0x0805DBB4 + movs r1, #1 + strb r1, [r0, #0xc] + ldr r1, _0805DBC8 @ =gUnk_030010A0 + adds r1, #0x3d + ldrb r2, [r1] + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #2 + strh r1, [r0, #0x20] + bx lr + .align 2, 0 +_0805DBC8: .4byte gUnk_030010A0 + + thumb_func_start sub_0805DBCC +sub_0805DBCC: @ 0x0805DBCC + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x14] + ldr r0, [r0, #4] + cmp r0, #0 + bne _0805DBE6 + movs r0, #2 + strb r0, [r1, #0xc] + ldrh r0, [r1, #0x20] + ldr r2, _0805DBE8 @ =0x0000012D + cmp r0, r2 + bls _0805DBE6 + strh r2, [r1, #0x20] +_0805DBE6: + pop {pc} + .align 2, 0 +_0805DBE8: .4byte 0x0000012D + + thumb_func_start nullsub_498 +nullsub_498: @ 0x0805DBEC + bx lr + .align 2, 0 + + thumb_func_start sub_0805DBF0 +sub_0805DBF0: @ 0x0805DBF0 + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x20] + subs r1, r0, #1 + strh r1, [r4, #0x20] + lsls r0, r1, #0x10 + cmp r0, #0 + bne _0805DC06 + bl sub_0805DC70 + b _0805DC6C +_0805DC06: + lsls r0, r1, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x78 + bne _0805DC18 + movs r0, #0x78 + movs r1, #2 + bl sub_08080964 + b _0805DC36 +_0805DC18: + cmp r1, #0xd2 + bne _0805DC26 + movs r0, #0x5a + movs r1, #1 + bl sub_08080964 + b _0805DC36 +_0805DC26: + movs r0, #0x96 + lsls r0, r0, #1 + cmp r1, r0 + bne _0805DC36 + movs r0, #0x5a + movs r1, #0 + bl sub_08080964 +_0805DC36: + ldrh r1, [r4, #0x20] + adds r0, r1, #0 + cmp r0, #0x77 + bhi _0805DC42 + movs r0, #0xf + b _0805DC48 +_0805DC42: + cmp r0, #0xd1 + bhi _0805DC58 + movs r0, #0x1f +_0805DC48: + ands r0, r1 + cmp r0, #0 + bne _0805DC6C + movs r0, #0x93 + lsls r0, r0, #1 + bl sub_080A3268 + b _0805DC6C +_0805DC58: + cmp r0, #0xc7 + bhi _0805DC6C + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _0805DC6C + movs r0, #0x93 + lsls r0, r0, #1 + bl sub_080A3268 +_0805DC6C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805DC70 +sub_0805DC70: @ 0x0805DC70 + push {lr} + bl sub_0805E5A8 + ldr r0, _0805DC80 @ =gUnk_0813AC48 + bl sub_08080840 + pop {pc} + .align 2, 0 +_0805DC80: .4byte gUnk_0813AC48 + + thumb_func_start sub_0805DC84 +sub_0805DC84: @ 0x0805DC84 + push {lr} + ldr r2, _0805DC98 @ =gUnk_08108D98 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805DC98: .4byte gUnk_08108D98 + + thumb_func_start sub_0805DC9C +sub_0805DC9C: @ 0x0805DC9C + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3c] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805DCAE + bl sub_0805E780 +_0805DCAE: + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805DCC2 + ldrh r0, [r4, #0x3c] + bl sub_0807CCC8 + bl sub_0805E780 +_0805DCC2: + movs r0, #1 + strb r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start sub_0805DCC8 +sub_0805DCC8: @ 0x0805DCC8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x3e] + bl sub_0807CBE4 + cmp r0, #0 + beq _0805DD1E + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x35 + ldrb r0, [r0] + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DCEC + movs r0, #0x1e + strb r0, [r4, #0xe] +_0805DCEC: + ldr r5, _0805DD20 @ =gUnk_03000BF0 + ldr r0, [r5, #0x30] + str r0, [r4, #0x14] + movs r0, #0x69 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0805DD1E + ldrh r0, [r5, #6] + ldrh r2, [r4, #0x38] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + ldrh r0, [r5, #8] + ldrh r2, [r4, #0x3a] + adds r0, r0, r2 + strh r0, [r1, #0x32] + str r1, [r4, #0x18] + str r1, [r5, #0x30] + adds r0, r1, #0 + movs r1, #0x1e + bl sub_0805E4E0 +_0805DD1E: + pop {r4, r5, pc} + .align 2, 0 +_0805DD20: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805DD24 +sub_0805DD24: @ 0x0805DD24 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #8 + bl sub_0805E4E0 + ldr r0, _0805DD64 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0805DD60 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DD60 + movs r0, #3 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x3c] + bl sub_0807CCC8 + adds r1, r4, #0 + adds r1, #0x36 + ldrb r0, [r1] + cmp r0, #0 + bne _0805DD60 + movs r0, #1 + strb r0, [r1] +_0805DD60: + pop {r4, pc} + .align 2, 0 +_0805DD64: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805DD68 +sub_0805DD68: @ 0x0805DD68 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #8 + bl sub_0805E4E0 + adds r1, r4, #0 + adds r1, #0x36 + ldrb r0, [r1] + cmp r0, #0 + beq _0805DD94 + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DDAE + ldr r1, _0805DD90 @ =gUnk_03000BF0 + ldr r0, [r4, #0x14] + str r0, [r1, #0x30] + b _0805DDAE + .align 2, 0 +_0805DD90: .4byte gUnk_03000BF0 +_0805DD94: + ldr r0, _0805DDB0 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0805DDAE + ldr r0, [r4, #0x18] + cmp r0, #0 + beq _0805DDAA + bl sub_0805E7BC +_0805DDAA: + bl sub_0805E780 +_0805DDAE: + pop {r4, pc} + .align 2, 0 +_0805DDB0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805DDB4 +sub_0805DDB4: @ 0x0805DDB4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + lsls r0, r0, #2 + ldr r1, _0805DDE0 @ =gUnk_08108DA8 + adds r3, r0, r1 + ldrb r0, [r2, #0xc] + adds r1, r0, #0 + cmp r1, #0 + bne _0805DDCE + adds r0, #1 + strb r0, [r2, #0xc] + strb r1, [r2, #0xe] +_0805DDCE: + ldrb r0, [r2, #0xe] + cmp r0, #0 + bne _0805DDE4 + ldrh r0, [r3] + strb r0, [r2, #0xe] + ldrh r0, [r3, #2] + bl sub_080A3268 + b _0805DDE8 + .align 2, 0 +_0805DDE0: .4byte gUnk_08108DA8 +_0805DDE4: + subs r0, #1 + strb r0, [r2, #0xe] +_0805DDE8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805DDEC +sub_0805DDEC: @ 0x0805DDEC + push {r4, r5, lr} + adds r5, r1, #0 + bl sub_0805E8D4 + adds r4, r0, #0 + cmp r4, #0 + beq _0805DE16 + movs r0, #9 + strb r0, [r4, #8] + movs r0, #0x36 + strb r0, [r4, #9] + ldr r0, [r5, #4] + strb r0, [r4, #0xa] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805EA2C + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 +_0805DE16: + pop {r4, r5, pc} + + thumb_func_start sub_0805DE18 +sub_0805DE18: @ 0x0805DE18 + push {lr} + sub sp, #4 + ldr r3, [r1, #4] + movs r0, #0 + str r0, [sp] + movs r0, #9 + movs r1, #0x36 + movs r2, #6 + bl sub_0805EB2C + cmp r0, #0 + beq _0805DE34 + bl sub_0805E79C +_0805DE34: + add sp, #4 + pop {pc} + + thumb_func_start sub_0805DE38 +sub_0805DE38: @ 0x0805DE38 + push {lr} + ldr r2, _0805DE4C @ =gUnk_08108DBC + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805DE4C: .4byte gUnk_08108DBC + + thumb_func_start sub_0805DE50 +sub_0805DE50: @ 0x0805DE50 + push {lr} + ldr r2, _0805DE64 @ =gUnk_08108DC4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805DE64: .4byte gUnk_08108DC4 + + thumb_func_start sub_0805DE68 +sub_0805DE68: @ 0x0805DE68 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x7b + bl sub_0807CBD0 + cmp r0, #0 + bne _0805DE7A + bl sub_0805E780 +_0805DE7A: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _0805DEAC @ =gUnk_030010A0 + adds r0, r2, #0 + adds r0, #0x38 + strb r1, [r0] + adds r1, r2, #0 + adds r1, #0x39 + movs r0, #0xf + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x3a + movs r1, #0x20 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + ldr r0, _0805DEB0 @ =gUnk_02002A40 + movs r1, #0x93 + lsls r1, r1, #3 + adds r0, r0, r1 + ldr r1, _0805DEB4 @ =0x00001194 + str r1, [r0] + pop {r4, pc} + .align 2, 0 +_0805DEAC: .4byte gUnk_030010A0 +_0805DEB0: .4byte gUnk_02002A40 +_0805DEB4: .4byte 0x00001194 + + thumb_func_start sub_0805DEB8 +sub_0805DEB8: @ 0x0805DEB8 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r5, _0805DF44 @ =gLinkEntity + movs r0, #0x2e + ldrsh r2, [r5, r0] + subs r2, #0x88 + ldr r4, _0805DF48 @ =gUnk_03000BF0 + ldrh r0, [r4, #6] + subs r2, r2, r0 + movs r1, #0x32 + ldrsh r0, [r5, r1] + subs r0, #0x40 + ldrh r1, [r4, #8] + subs r0, r0, r1 + adds r1, r2, #0 + muls r1, r2, r1 + adds r2, r0, #0 + muls r2, r0, r2 + adds r0, r2, #0 + adds r1, r1, r0 + movs r0, #0x90 + lsls r0, r0, #4 + cmp r1, r0 + bgt _0805DF42 + movs r0, #0 + movs r1, #2 + strb r1, [r3, #0xc] + strb r0, [r3, #0xd] + movs r0, #0x78 + strb r0, [r3, #0xe] + movs r0, #2 + bl sub_08078A90 + bl sub_08078B48 + movs r0, #0x64 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0805DF1A + ldrh r0, [r4, #6] + adds r0, #0x88 + strh r0, [r2, #0x2e] + ldrh r0, [r4, #8] + adds r0, #0x48 + strh r0, [r2, #0x32] +_0805DF1A: + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #8 + bl sub_080A2CFC + adds r2, r0, #0 + cmp r2, #0 + beq _0805DF3C + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_0805DF3C: + movs r0, #0x32 + bl sub_080A3268 +_0805DF42: + pop {r4, r5, pc} + .align 2, 0 +_0805DF44: .4byte gLinkEntity +_0805DF48: .4byte gUnk_03000BF0 + + thumb_func_start sub_0805DF4C +sub_0805DF4C: @ 0x0805DF4C + push {lr} + adds r1, r0, #0 + ldr r2, _0805DF70 @ =gLinkEntity + movs r0, #0 + strb r0, [r2, #0x14] + movs r3, #0x36 + ldrsh r0, [r2, r3] + cmp r0, #0 + beq _0805DF78 + movs r1, #0x32 + ldrsh r0, [r2, r1] + ldr r1, _0805DF74 @ =gUnk_03000BF0 + ldrh r1, [r1, #8] + adds r1, #0x48 + cmp r0, r1 + bge _0805DF92 + strh r1, [r2, #0x32] + b _0805DF92 + .align 2, 0 +_0805DF70: .4byte gLinkEntity +_0805DF74: .4byte gUnk_03000BF0 +_0805DF78: + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805DF92 + movs r0, #3 + strb r0, [r1, #0xc] + movs r0, #0x1e + strb r0, [r1, #0xe] + ldr r0, _0805DF94 @ =0x0000164F + bl sub_08056378 +_0805DF92: + pop {pc} + .align 2, 0 +_0805DF94: .4byte 0x0000164F + + thumb_func_start sub_0805DF98 +sub_0805DF98: @ 0x0805DF98 + push {lr} + adds r2, r0, #0 + ldr r0, _0805DFB4 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0805DFCA + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _0805DFB8 + subs r0, #1 + strb r0, [r2, #0xe] + b _0805DFCA + .align 2, 0 +_0805DFB4: .4byte gUnk_02000050 +_0805DFB8: + movs r0, #4 + strb r0, [r2, #0xc] + movs r0, #7 + movs r1, #4 + bl sub_08050054 + movs r0, #0xf6 + bl sub_080A3268 +_0805DFCA: + pop {pc} + + thumb_func_start sub_0805DFCC +sub_0805DFCC: @ 0x0805DFCC + push {lr} + ldr r0, _0805DFE4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805DFE0 + movs r0, #0x1c + bl sub_0807CD80 + bl sub_0805E094 +_0805DFE0: + pop {pc} + .align 2, 0 +_0805DFE4: .4byte gUnk_03000FD0 + + thumb_func_start sub_0805DFE8 +sub_0805DFE8: @ 0x0805DFE8 + push {lr} + ldr r2, _0805DFFC @ =gUnk_08108DD8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805DFFC: .4byte gUnk_08108DD8 + + thumb_func_start sub_0805E000 +sub_0805E000: @ 0x0805E000 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0x51 + movs r1, #0 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _0805E062 + ldr r1, _0805E064 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0xb0 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x48 + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x38 + movs r5, #1 + strb r5, [r0] + adds r0, r4, #0 + bl sub_08016A04 + ldr r0, _0805E068 @ =gUnk_030010A0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0805E040 + bl sub_0805E780 +_0805E040: + str r4, [r6, #0x18] + strb r5, [r6, #0xc] + movs r0, #3 + bl sub_08078A90 + ldr r0, _0805E06C @ =gUnk_02033A90 + ldr r1, _0805E070 @ =0x00000864 + adds r0, r0, r1 + ldr r1, _0805E074 @ =0x80010000 + str r1, [r0] + movs r0, #6 + movs r1, #4 + bl sub_08050054 + movs r0, #0xf7 + bl sub_080A3268 +_0805E062: + pop {r4, r5, r6, pc} + .align 2, 0 +_0805E064: .4byte gUnk_03000BF0 +_0805E068: .4byte gUnk_030010A0 +_0805E06C: .4byte gUnk_02033A90 +_0805E070: .4byte 0x00000864 +_0805E074: .4byte 0x80010000 + + thumb_func_start sub_0805E078 +sub_0805E078: @ 0x0805E078 + push {lr} + adds r1, r0, #0 + ldr r0, _0805E090 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805E08E + ldr r1, [r1, #0x18] + movs r0, #1 + strb r0, [r1, #0xd] + bl sub_0805E780 +_0805E08E: + pop {pc} + .align 2, 0 +_0805E090: .4byte gUnk_03000FD0 + + thumb_func_start sub_0805E094 +sub_0805E094: @ 0x0805E094 + push {lr} + bl sub_0805E5A8 + ldr r0, _0805E0A4 @ =gUnk_0813AC34 + movs r1, #7 + bl sub_0808091C + pop {pc} + .align 2, 0 +_0805E0A4: .4byte gUnk_0813AC34 + + thumb_func_start sub_0805E0A8 +sub_0805E0A8: @ 0x0805E0A8 + push {lr} + ldr r2, _0805E0BC @ =gUnk_08108DE0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805E0BC: .4byte gUnk_08108DE0 + + thumb_func_start sub_0805E0C0 +sub_0805E0C0: @ 0x0805E0C0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0 + movs r1, #1 + strb r1, [r5, #0xc] + strb r0, [r5, #0xe] + ldrb r0, [r5, #0xa] + bl sub_0804B128 + adds r4, r0, #0 + cmp r4, #0 + bne _0805E0EC + bl sub_0805E780 + b _0805E0EC +_0805E0DE: + adds r0, r4, #0 + adds r4, #0x10 + bl sub_0804ADF8 + str r5, [r0, #0x50] + movs r1, #0xff + strb r1, [r0, #0xe] +_0805E0EC: + ldrb r0, [r4] + cmp r0, #0xff + bne _0805E0DE + pop {r4, r5, pc} + + thumb_func_start sub_0805E0F4 +sub_0805E0F4: @ 0x0805E0F4 + movs r1, #0 + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_0805E0FC +sub_0805E0FC: @ 0x0805E0FC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0805E134 @ =gUnk_08108E28 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r0, _0805E138 @ =gUnk_03000BF0 + adds r1, r4, #0 + adds r1, #0x20 + ldrb r0, [r0, #5] + ldrb r1, [r1] + cmp r0, r1 + bne _0805E12A + ldr r0, _0805E13C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _0805E130 +_0805E12A: + adds r0, r4, #0 + bl sub_0805E1D8 +_0805E130: + pop {r4, pc} + .align 2, 0 +_0805E134: .4byte gUnk_08108E28 +_0805E138: .4byte gUnk_03000BF0 +_0805E13C: .4byte gUnk_02000050 + + thumb_func_start sub_0805E140 +sub_0805E140: @ 0x0805E140 + push {r4, lr} + ldrb r2, [r0, #0x10] + movs r1, #0x20 + orrs r1, r2 + strb r1, [r0, #0x10] + movs r1, #1 + strb r1, [r0, #0xc] + ldr r1, _0805E180 @ =gUnk_03000BF0 + ldrb r2, [r1, #5] + adds r1, r0, #0 + adds r1, #0x20 + strb r2, [r1] + movs r1, #0x78 + strb r1, [r0, #0xe] + movs r1, #0x3c + strb r1, [r0, #0xf] + movs r1, #7 + bl sub_0805E3A0 + ldr r1, _0805E184 @ =gUnk_08108DE8 + ldr r0, _0805E188 @ =gUnk_02033A90 + ldrb r0, [r0, #1] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + bl sub_08052660 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0805E1F8 + pop {r4, pc} + .align 2, 0 +_0805E180: .4byte gUnk_03000BF0 +_0805E184: .4byte gUnk_08108DE8 +_0805E188: .4byte gUnk_02033A90 + + thumb_func_start sub_0805E18C +sub_0805E18C: @ 0x0805E18C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0805E1D0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _0805E1CC + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0805E1BA + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0805E1BA + strb r0, [r4, #0xb] + ldr r0, _0805E1D4 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + bl sub_0805E5B4 +_0805E1BA: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0805E1CC + adds r0, r4, #0 + bl sub_0805E1D8 +_0805E1CC: + pop {r4, pc} + .align 2, 0 +_0805E1D0: .4byte gUnk_03000FD0 +_0805E1D4: .4byte gUnk_03003F80 + + thumb_func_start sub_0805E1D8 +sub_0805E1D8: @ 0x0805E1D8 + push {lr} + ldr r0, _0805E1F0 @ =gUnk_02034DF0 + movs r1, #0x80 + bl sub_0801D630 + ldr r1, _0805E1F4 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] + bl sub_0805E780 + pop {pc} + .align 2, 0 +_0805E1F0: .4byte gUnk_02034DF0 +_0805E1F4: .4byte gUnk_03000F50 + + thumb_func_start sub_0805E1F8 +sub_0805E1F8: @ 0x0805E1F8 + push {r4, r5, lr} + sub sp, #0xc + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, _0805E234 @ =gUnk_02034DF0 + movs r1, #0x80 + bl sub_0801D630 + ldr r0, _0805E238 @ =gUnk_08108E60 + mov r1, sp + movs r2, #9 + bl sub_0801D66C + mov r1, sp + lsrs r0, r4, #8 + strb r0, [r1, #4] + mov r0, sp + strb r4, [r0, #5] + ldr r1, _0805E23C @ =gUnk_08108E48 + cmp r5, #0 + bne _0805E224 + ldr r1, _0805E240 @ =gUnk_08108E30 +_0805E224: + mov r0, sp + bl sub_0805F46C + ldr r1, _0805E244 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] + add sp, #0xc + pop {r4, r5, pc} + .align 2, 0 +_0805E234: .4byte gUnk_02034DF0 +_0805E238: .4byte gUnk_08108E60 +_0805E23C: .4byte gUnk_08108E48 +_0805E240: .4byte gUnk_08108E30 +_0805E244: .4byte gUnk_03000F50 + + thumb_func_start sub_0805E248 +sub_0805E248: @ 0x0805E248 + push {r4, r5, lr} + ldr r0, _0805E2C8 @ =gUnk_03004030 + ldr r0, [r0] + ldrh r5, [r0, #6] + ldr r0, _0805E2CC @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0xa + beq _0805E25C + cmp r0, #0x16 + bne _0805E2E8 +_0805E25C: + movs r0, #0x9f + lsls r0, r0, #2 + adds r4, r5, #0 + subs r4, #0x41 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0805E2D0 @ =0x00000283 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0805E2D4 @ =0x0000027D + adds r4, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0xa1 + lsls r0, r0, #2 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0805E2D8 @ =0x0000027E + adds r4, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0805E2DC @ =0x00000285 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0805E2E0 @ =0x0000027F + subs r1, r5, #1 + movs r2, #1 + bl sub_0807B314 + movs r0, #0xa0 + lsls r0, r0, #2 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0805E2E4 @ =0x00000282 + adds r1, r5, #1 + movs r2, #1 + bl sub_0807B314 + b _0805E350 + .align 2, 0 +_0805E2C8: .4byte gUnk_03004030 +_0805E2CC: .4byte gUnk_03000BF0 +_0805E2D0: .4byte 0x00000283 +_0805E2D4: .4byte 0x0000027D +_0805E2D8: .4byte 0x0000027E +_0805E2DC: .4byte 0x00000285 +_0805E2E0: .4byte 0x0000027F +_0805E2E4: .4byte 0x00000282 +_0805E2E8: + movs r0, #0x9b + lsls r0, r0, #2 + adds r4, r5, #0 + subs r4, #0x41 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0805E358 @ =0x00000273 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0805E35C @ =0x0000026D + adds r4, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0x9d + lsls r0, r0, #2 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0805E360 @ =0x0000026E + adds r4, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0805E364 @ =0x00000275 + adds r1, r4, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0805E368 @ =0x0000026F + subs r1, r5, #1 + movs r2, #1 + bl sub_0807B314 + movs r0, #0x9c + lsls r0, r0, #2 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0805E36C @ =0x00000272 + adds r1, r5, #1 + movs r2, #1 + bl sub_0807B314 +_0805E350: + ldr r1, _0805E370 @ =gUnk_02000070 + movs r0, #0 + strb r0, [r1] + pop {r4, r5, pc} + .align 2, 0 +_0805E358: .4byte 0x00000273 +_0805E35C: .4byte 0x0000026D +_0805E360: .4byte 0x0000026E +_0805E364: .4byte 0x00000275 +_0805E368: .4byte 0x0000026F +_0805E36C: .4byte 0x00000272 +_0805E370: .4byte gUnk_02000070 + + thumb_func_start sub_0805E374 +sub_0805E374: @ 0x0805E374 + push {lr} + adds r2, r0, #0 + ldr r0, _0805E394 @ =gUnk_030010A0 + adds r0, #0x2c + ldrb r0, [r0] + ldr r1, _0805E398 @ =gUnk_081091F8 + cmp r0, #2 + beq _0805E386 + ldr r1, _0805E39C @ =gUnk_081091EE +_0805E386: + ldrb r0, [r2, #8] + adds r0, r1, r0 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_0805E3A0 + pop {pc} + .align 2, 0 +_0805E394: .4byte gUnk_030010A0 +_0805E398: .4byte gUnk_081091F8 +_0805E39C: .4byte gUnk_081091EE + + thumb_func_start sub_0805E3A0 +sub_0805E3A0: @ 0x0805E3A0 + movs r3, #0xf + adds r2, r1, #0 + ands r2, r3 + lsls r1, r1, #4 + orrs r1, r2 + strb r1, [r0, #0x11] + bx lr + .align 2, 0 + + thumb_func_start sub_0805E3B0 +sub_0805E3B0: @ 0x0805E3B0 + push {lr} + adds r3, r0, #0 + ldrb r1, [r3, #0x10] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0805E3C2 + movs r0, #1 + b _0805E404 +_0805E3C2: + ldrb r0, [r3, #0xc] + cmp r0, #0 + bne _0805E3CC + movs r0, #0 + b _0805E404 +_0805E3CC: + ldr r1, _0805E3DC @ =gUnk_03003DC0 + ldrb r0, [r1] + ldrb r2, [r1, #1] + cmp r0, r2 + bls _0805E3E0 + adds r2, r0, #0 + b _0805E3E2 + .align 2, 0 +_0805E3DC: .4byte gUnk_03003DC0 +_0805E3E0: + ldrb r2, [r1, #1] +_0805E3E2: + ldr r0, _0805E408 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _0805E3F4 + cmp r2, #2 + bhs _0805E3F4 + movs r2, #2 +_0805E3F4: + movs r1, #0 + ldrb r0, [r3, #0x11] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r2, r0 + bls _0805E402 + movs r1, #1 +_0805E402: + adds r0, r1, #0 +_0805E404: + pop {pc} + .align 2, 0 +_0805E408: .4byte gUnk_02000050 + + thumb_func_start sub_0805E40C +sub_0805E40C: @ 0x0805E40C + push {lr} + ldr r1, _0805E424 @ =gUnk_03003DC0 + ldrb r0, [r1] + ldrb r2, [r1, #1] + cmp r0, r2 + bhi _0805E41A + ldrb r0, [r1, #1] +_0805E41A: + cmp r0, #0 + beq _0805E420 + movs r0, #1 +_0805E420: + pop {pc} + .align 2, 0 +_0805E424: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E428 +sub_0805E428: @ 0x0805E428 + push {lr} + bl sub_0805E524 + ldr r2, _0805E440 @ =gUnk_03003DC0 + ldrb r3, [r2, #2] + adds r1, r3, #0 + cmp r1, #0 + beq _0805E444 + movs r0, #0 + strb r3, [r2, #1] + strb r0, [r2, #2] + b _0805E44E + .align 2, 0 +_0805E440: .4byte gUnk_03003DC0 +_0805E444: + ldrb r0, [r2, #3] + cmp r0, #0 + beq _0805E44E + strb r1, [r2, #3] + strb r1, [r2, #1] +_0805E44E: + pop {pc} + + thumb_func_start sub_0805E450 +sub_0805E450: @ 0x0805E450 + push {lr} + ldr r1, _0805E464 @ =gUnk_03003DC0 + ldrb r2, [r1, #2] + cmp r0, r2 + blo _0805E460 + ldrb r2, [r1, #1] + cmp r0, r2 + bhs _0805E468 +_0805E460: + movs r0, #0 + b _0805E46C + .align 2, 0 +_0805E464: .4byte gUnk_03003DC0 +_0805E468: + strb r0, [r1, #2] + movs r0, #1 +_0805E46C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805E470 +sub_0805E470: @ 0x0805E470 + ldr r1, _0805E478 @ =gUnk_03003DC0 + movs r0, #1 + strb r0, [r1, #3] + bx lr + .align 2, 0 +_0805E478: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E47C +sub_0805E47C: @ 0x0805E47C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x11] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x18 + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #0x11] + movs r0, #2 + bl sub_0805E450 + cmp r0, #0 + beq _0805E49A + ldr r0, _0805E49C @ =gUnk_03003DC0 + str r4, [r0, #4] +_0805E49A: + pop {r4, pc} + .align 2, 0 +_0805E49C: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E4A0 +sub_0805E4A0: @ 0x0805E4A0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_08078A90 + ldrb r0, [r4, #0x11] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x18 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + movs r0, #1 + bl sub_0805E450 + cmp r0, #0 + beq _0805E4C4 + ldr r0, _0805E4C8 @ =gUnk_03003DC0 + str r4, [r0, #4] +_0805E4C4: + pop {r4, pc} + .align 2, 0 +_0805E4C8: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E4CC +sub_0805E4CC: @ 0x0805E4CC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_08078A90 + adds r0, r4, #0 + bl sub_0805E584 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805E4E0 +sub_0805E4E0: @ 0x0805E4E0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + cmp r4, #0 + beq _0805E4F6 + ldrb r0, [r4, #0x11] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x18 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] +_0805E4F6: + movs r0, #1 + bl sub_0805E450 + cmp r0, #0 + beq _0805E504 + ldr r0, _0805E50C @ =gUnk_03003DC0 + str r4, [r0, #4] +_0805E504: + adds r0, r5, #0 + bl sub_0805E510 + pop {r4, r5, pc} + .align 2, 0 +_0805E50C: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E510 +sub_0805E510: @ 0x0805E510 + push {lr} + adds r1, r0, #0 + ldr r2, _0805E520 @ =gUnk_03003DC0 + ldrh r0, [r2, #8] + cmp r0, r1 + bhs _0805E51E + strh r1, [r2, #8] +_0805E51E: + pop {pc} + .align 2, 0 +_0805E520: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E524 +sub_0805E524: @ 0x0805E524 + push {lr} + ldr r1, _0805E540 @ =gUnk_03003DC0 + ldrh r0, [r1, #8] + cmp r0, #0 + beq _0805E53C + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805E53C + bl sub_0805E470 +_0805E53C: + pop {pc} + .align 2, 0 +_0805E540: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E544 +sub_0805E544: @ 0x0805E544 + ldr r1, _0805E55C @ =gUnk_03003DC0 + movs r3, #6 + movs r0, #6 + strb r0, [r1] + ldr r2, _0805E560 @ =gLinkEntity + ldrb r1, [r2, #0x11] + subs r0, #0x16 + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #0x11] + bx lr + .align 2, 0 +_0805E55C: .4byte gUnk_03003DC0 +_0805E560: .4byte gLinkEntity + + thumb_func_start sub_0805E564 +sub_0805E564: @ 0x0805E564 + ldr r1, _0805E57C @ =gUnk_03003DC0 + movs r0, #0 + strb r0, [r1] + ldr r2, _0805E580 @ =gLinkEntity + ldrb r1, [r2, #0x11] + subs r0, #0x10 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x11] + bx lr + .align 2, 0 +_0805E57C: .4byte gUnk_03003DC0 +_0805E580: .4byte gLinkEntity + + thumb_func_start sub_0805E584 +sub_0805E584: @ 0x0805E584 + push {lr} + ldrb r2, [r0, #0x11] + lsrs r3, r2, #4 + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x11] + bl sub_0805E470 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805E59C +sub_0805E59C: @ 0x0805E59C + ldr r1, _0805E5A4 @ =gUnk_03003DC0 + movs r0, #6 + strb r0, [r1] + bx lr + .align 2, 0 +_0805E5A4: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E5A8 +sub_0805E5A8: @ 0x0805E5A8 + ldr r1, _0805E5B0 @ =gUnk_03003DC0 + movs r0, #7 + strb r0, [r1] + bx lr + .align 2, 0 +_0805E5B0: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E5B4 +sub_0805E5B4: @ 0x0805E5B4 + ldr r1, _0805E5BC @ =gUnk_03003DC0 + movs r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_0805E5BC: .4byte gUnk_03003DC0 + + thumb_func_start sub_0805E5C0 +sub_0805E5C0: @ 0x0805E5C0 + push {lr} + ldr r0, _0805E5F0 @ =gUnk_02034350 + ldrb r1, [r0, #4] + movs r2, #0 + strb r1, [r0, #5] + strb r2, [r0, #4] + bl sub_0805ED30 + bl sub_0805E428 + bl sub_080175E8 + bl sub_0806F0A4 + ldr r1, _0805E5F4 @ =gUnk_03005F40 + movs r0, #0 + bl _call_via_r1 + bl sub_0805E84C + bl sub_0805EE88 + pop {pc} + .align 2, 0 +_0805E5F0: .4byte gUnk_02034350 +_0805E5F4: .4byte gUnk_03005F40 + + thumb_func_start sub_0805E5F8 +sub_0805E5F8: @ 0x0805E5F8 + push {lr} + ldr r1, _0805E608 @ =gUnk_03005F40 + movs r0, #1 + bl _call_via_r1 + bl sub_0805E84C + pop {pc} + .align 2, 0 +_0805E608: .4byte gUnk_03005F40 + + thumb_func_start sub_0805E60C +sub_0805E60C: @ 0x0805E60C + push {lr} + bl sub_0805E89C + ldr r0, _0805E654 @ =gUnk_03003DC0 + movs r1, #0xc + bl sub_0801D630 + ldr r0, _0805E658 @ =gLinkEntity + movs r1, #0xaa + lsls r1, r1, #6 + bl sub_0801D630 + ldr r0, _0805E65C @ =gUnk_02033290 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + bl sub_0805E98C + ldr r0, _0805E660 @ =gUnk_03003DBC + movs r1, #0 + strb r1, [r0] + ldr r0, _0805E664 @ =gUnk_020354B4 + strb r1, [r0] + ldr r1, _0805E668 @ =gUnk_03000000 + ldr r2, _0805E66C @ =0x00000427 + adds r0, r1, r2 + movs r2, #1 + strb r2, [r0] + ldr r3, _0805E670 @ =0x00000426 + adds r0, r1, r3 + strb r2, [r0] + ldr r0, _0805E674 @ =0x0000042E + adds r1, r1, r0 + strb r2, [r1] + pop {pc} + .align 2, 0 +_0805E654: .4byte gUnk_03003DC0 +_0805E658: .4byte gLinkEntity +_0805E65C: .4byte gUnk_02033290 +_0805E660: .4byte gUnk_03003DBC +_0805E664: .4byte gUnk_020354B4 +_0805E668: .4byte gUnk_03000000 +_0805E66C: .4byte 0x00000427 +_0805E670: .4byte 0x00000426 +_0805E674: .4byte 0x0000042E + + thumb_func_start sub_0805E678 +sub_0805E678: @ 0x0805E678 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r0, _0805E698 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x46 + bhi _0805E6A6 + ldr r4, _0805E69C @ =gUnk_030015A0 + movs r0, #0x99 + lsls r0, r0, #6 + adds r1, r4, r0 +_0805E68E: + ldr r0, [r4] + cmp r0, #0 + bne _0805E6A0 + adds r0, r4, #0 + b _0805E730 + .align 2, 0 +_0805E698: .4byte gUnk_03003DBC +_0805E69C: .4byte gUnk_030015A0 +_0805E6A0: + adds r4, #0x88 + cmp r4, r1 + blo _0805E68E +_0805E6A6: + ldr r4, _0805E6CC @ =gLinkEntity +_0805E6A8: + ldr r0, [r4] + cmp r0, #0 + bge _0805E6D4 + ldrb r1, [r4, #0x10] + movs r0, #0xc + ands r0, r1 + cmp r0, #0 + beq _0805E6D4 + ldr r0, _0805E6D0 @ =gUnk_03003DD0 + ldr r0, [r0, #8] + cmp r4, r0 + beq _0805E6D4 + adds r0, r4, #0 + bl sub_0805E870 + adds r0, r4, #0 + b _0805E730 + .align 2, 0 +_0805E6CC: .4byte gLinkEntity +_0805E6D0: .4byte gUnk_03003DD0 +_0805E6D4: + adds r4, #0x88 + ldr r0, _0805E738 @ =gUnk_03003BE0 + cmp r4, r0 + blo _0805E6A8 + movs r0, #0 + mov ip, r0 + movs r5, #0 + ldr r2, _0805E73C @ =gUnk_03003D70 + movs r0, #0x48 + adds r0, r0, r2 + mov r8, r0 +_0805E6EA: + ldr r4, [r2, #4] + adds r3, r2, #0 + adds r3, #8 + cmp r4, r2 + beq _0805E718 + movs r7, #0x1c + ldr r6, _0805E740 @ =gUnk_03003DD0 +_0805E6F8: + ldrb r0, [r4, #8] + cmp r0, #9 + beq _0805E712 + ldrb r0, [r4, #0x10] + adds r1, r7, #0 + ands r1, r0 + cmp ip, r1 + bhs _0805E712 + ldr r0, [r6, #8] + cmp r0, r4 + beq _0805E712 + mov ip, r1 + adds r5, r4, #0 +_0805E712: + ldr r4, [r4, #4] + cmp r4, r2 + bne _0805E6F8 +_0805E718: + adds r2, r3, #0 + cmp r2, r8 + blo _0805E6EA + cmp r5, #0 + beq _0805E72E + adds r0, r5, #0 + bl sub_0805E7BC + adds r0, r5, #0 + bl sub_0805E870 +_0805E72E: + adds r0, r5, #0 +_0805E730: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805E738: .4byte gUnk_03003BE0 +_0805E73C: .4byte gUnk_03003D70 +_0805E740: .4byte gUnk_03003DD0 + + thumb_func_start sub_0805E744 +sub_0805E744: @ 0x0805E744 + push {lr} + ldr r1, _0805E760 @ =gUnk_030011E8 + movs r0, #0xee + lsls r0, r0, #2 + adds r2, r1, r0 +_0805E74E: + ldr r0, [r1] + cmp r0, #0 + beq _0805E764 + adds r1, #0x88 + cmp r1, r2 + blo _0805E74E + movs r0, #0 + b _0805E766 + .align 2, 0 +_0805E760: .4byte gUnk_030011E8 +_0805E764: + adds r0, r1, #0 +_0805E766: + pop {pc} + + thumb_func_start sub_0805E768 +sub_0805E768: @ 0x0805E768 + push {lr} + ldr r1, _0805E778 @ =sub_0805E678 + cmp r0, #9 + bne _0805E772 + ldr r1, _0805E77C @ =sub_0805E8D4 +_0805E772: + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805E778: .4byte sub_0805E678 +_0805E77C: .4byte sub_0805E8D4 + + thumb_func_start sub_0805E780 +sub_0805E780: @ 0x0805E780 + push {lr} + ldr r0, _0805E794 @ =gUnk_03003DD0 + ldr r0, [r0, #8] + bl sub_0805E79C + ldr r0, _0805E798 @ =gUnk_03005F24 + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0805E794: .4byte gUnk_03003DD0 +_0805E798: .4byte gUnk_03005F24 + + thumb_func_start sub_0805E79C +sub_0805E79C: @ 0x0805E79C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #8] + ldr r2, _0805E7B4 @ =sub_0805E7BC + cmp r0, #9 + bne _0805E7AA + ldr r2, _0805E7B8 @ =sub_0805E900 +_0805E7AA: + adds r0, r1, #0 + bl _call_via_r2 + pop {pc} + .align 2, 0 +_0805E7B4: .4byte sub_0805E7BC +_0805E7B8: .4byte sub_0805E900 + + thumb_func_start sub_0805E7BC +sub_0805E7BC: @ 0x0805E7BC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0805E84A + adds r0, r4, #0 + bl sub_080AE068 + adds r0, r4, #0 + bl sub_0801D230 + adds r0, r4, #0 + bl sub_0806FE84 + adds r0, r4, #0 + bl sub_080788E0 + adds r0, r4, #0 + bl sub_08078954 + adds r0, r4, #0 + bl sub_0805EC60 + adds r0, r4, #0 + bl sub_08017744 + adds r0, r4, #0 + bl sub_0805E92C + adds r0, r4, #0 + bl sub_0807DB08 + adds r0, r4, #0 + bl sub_0806FBEC + ldr r0, [r4, #0x64] + bl sub_0801DA0C + movs r5, #0 + str r5, [r4, #0x64] + ldrb r0, [r4, #8] + cmp r0, #3 + bne _0805E818 + adds r0, r4, #0 + bl sub_0804AA1C +_0805E818: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x3c + strb r5, [r0] + adds r0, #5 + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #3 + strb r5, [r0] + adds r0, r4, #0 + bl sub_0805EA98 + str r5, [r4, #4] + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r4] +_0805E84A: + pop {r4, r5, pc} + + thumb_func_start sub_0805E84C +sub_0805E84C: @ 0x0805E84C + push {r4, r5, lr} + ldr r4, _0805E86C @ =gLinkEntity + movs r0, #0xaa + lsls r0, r0, #6 + adds r5, r4, r0 +_0805E856: + ldr r0, [r4] + cmp r0, #0 + bge _0805E862 + adds r0, r4, #0 + bl sub_0805E870 +_0805E862: + adds r4, #0x88 + cmp r4, r5 + blo _0805E856 + pop {r4, r5, pc} + .align 2, 0 +_0805E86C: .4byte gLinkEntity + + thumb_func_start sub_0805E870 +sub_0805E870: @ 0x0805E870 + sub sp, #4 + movs r1, #0 + str r1, [sp] + ldr r1, _0805E890 @ =0x040000D4 + mov r2, sp + str r2, [r1] + str r0, [r1, #4] + ldr r0, _0805E894 @ =0x85000022 + str r0, [r1, #8] + ldr r0, [r1, #8] + ldr r1, _0805E898 @ =gUnk_03003DBC + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + add sp, #4 + bx lr + .align 2, 0 +_0805E890: .4byte 0x040000D4 +_0805E894: .4byte 0x85000022 +_0805E898: .4byte gUnk_03003DBC + + thumb_func_start sub_0805E89C +sub_0805E89C: @ 0x0805E89C + push {r4, r5, r6, lr} + ldr r5, _0805E8CC @ =gUnk_03003D70 + ldr r0, [r5, #4] + cmp r0, #0 + beq _0805E8C8 +_0805E8A6: + ldr r0, [r5, #4] + adds r6, r5, #0 + adds r6, #8 + cmp r0, r5 + beq _0805E8BC +_0805E8B0: + ldr r4, [r0, #4] + bl sub_0805E79C + adds r0, r4, #0 + cmp r0, r5 + bne _0805E8B0 +_0805E8BC: + adds r5, r6, #0 + ldr r0, _0805E8D0 @ =gUnk_03003DB8 + cmp r5, r0 + blo _0805E8A6 + bl sub_0805E84C +_0805E8C8: + pop {r4, r5, r6, pc} + .align 2, 0 +_0805E8CC: .4byte gUnk_03003D70 +_0805E8D0: .4byte gUnk_03003DB8 + + thumb_func_start sub_0805E8D4 +sub_0805E8D4: @ 0x0805E8D4 + push {lr} + ldr r1, _0805E8F0 @ =gUnk_02033290 + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r1, r2 + cmp r1, r0 + bhs _0805E8FA + adds r2, r0, #0 +_0805E8E4: + ldr r0, [r1] + cmp r0, #0 + bne _0805E8F4 + adds r0, r1, #0 + b _0805E8FC + .align 2, 0 +_0805E8F0: .4byte gUnk_02033290 +_0805E8F4: + adds r1, #0x40 + cmp r1, r2 + blo _0805E8E4 +_0805E8FA: + movs r0, #0 +_0805E8FC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805E900 +sub_0805E900: @ 0x0805E900 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #4] + cmp r0, #0 + beq _0805E926 + adds r0, r4, #0 + bl sub_0805E92C + adds r0, r4, #0 + bl sub_0805EA98 + adds r0, r4, #0 + movs r1, #0x40 + bl sub_0801D630 + ldr r1, _0805E928 @ =gUnk_020354B4 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_0805E926: + pop {r4, pc} + .align 2, 0 +_0805E928: .4byte gUnk_020354B4 + + thumb_func_start sub_0805E92C +sub_0805E92C: @ 0x0805E92C + push {lr} + ldr r2, _0805E94C @ =gUnk_02033A90 + ldr r1, _0805E950 @ =0x00000888 + adds r3, r2, r1 + ldr r1, [r3] + cmp r0, r1 + bne _0805E94A + movs r0, #0 + str r0, [r3] + ldr r3, _0805E954 @ =0x0000088C + adds r1, r2, r3 + str r0, [r1] + adds r3, #4 + adds r1, r2, r3 + str r0, [r1] +_0805E94A: + pop {pc} + .align 2, 0 +_0805E94C: .4byte gUnk_02033A90 +_0805E950: .4byte 0x00000888 +_0805E954: .4byte 0x0000088C + + thumb_func_start sub_0805E958 +sub_0805E958: @ 0x0805E958 + push {lr} + ldr r0, _0805E96C @ =gUnk_03003D70 + ldr r1, _0805E970 @ =gUnk_020369F0 + movs r2, #0x48 + bl sub_0801D66C + bl sub_0805E98C + pop {pc} + .align 2, 0 +_0805E96C: .4byte gUnk_03003D70 +_0805E970: .4byte gUnk_020369F0 + + thumb_func_start sub_0805E974 +sub_0805E974: @ 0x0805E974 + push {lr} + ldr r0, _0805E984 @ =gUnk_020369F0 + ldr r1, _0805E988 @ =gUnk_03003D70 + movs r2, #0x48 + bl sub_0801D66C + pop {pc} + .align 2, 0 +_0805E984: .4byte gUnk_020369F0 +_0805E988: .4byte gUnk_03003D70 + + thumb_func_start sub_0805E98C +sub_0805E98C: @ 0x0805E98C + push {lr} + ldr r0, _0805E9A4 @ =gUnk_03003D70 + adds r1, r0, #0 + adds r1, #0x48 + cmp r0, r1 + bhs _0805E9A2 +_0805E998: + str r0, [r0] + str r0, [r0, #4] + adds r0, #8 + cmp r0, r1 + blo _0805E998 +_0805E9A2: + pop {pc} + .align 2, 0 +_0805E9A4: .4byte gUnk_03003D70 + + thumb_func_start sub_0805E9A8 +sub_0805E9A8: @ 0x0805E9A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r3, _0805E9F0 @ =gUnk_03003D70 + movs r7, #0x10 + movs r0, #0x48 + adds r0, r0, r3 + mov r8, r0 +_0805E9B8: + ldr r2, [r3, #4] + adds r4, r3, #0 + adds r4, #8 + cmp r2, r3 + beq _0805E9E2 + movs r6, #0xfd + movs r5, #0x20 +_0805E9C6: + ldrb r0, [r2, #0x10] + adds r1, r6, #0 + ands r1, r0 + strb r1, [r2, #0x10] + adds r0, r1, #0 + ands r0, r5 + cmp r0, #0 + bne _0805E9DC + adds r0, r1, #0 + orrs r0, r7 + strb r0, [r2, #0x10] +_0805E9DC: + ldr r2, [r2, #4] + cmp r2, r3 + bne _0805E9C6 +_0805E9E2: + adds r3, r4, #0 + cmp r3, r8 + blo _0805E9B8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805E9F0: .4byte gUnk_03003D70 + + thumb_func_start sub_0805E9F4 +sub_0805E9F4: @ 0x0805E9F4 + push {r4, r5, r6, lr} + ldr r5, _0805EA24 @ =gUnk_03003D70 +_0805E9F8: + ldr r2, [r5, #4] + adds r6, r5, #0 + adds r6, #8 + cmp r2, r5 + beq _0805EA1A +_0805EA02: + ldr r4, [r2, #4] + ldrb r1, [r2, #0x10] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0805EA14 + adds r0, r2, #0 + bl sub_0805E79C +_0805EA14: + adds r2, r4, #0 + cmp r2, r5 + bne _0805EA02 +_0805EA1A: + adds r5, r6, #0 + ldr r0, _0805EA28 @ =gUnk_03003DB8 + cmp r5, r0 + blo _0805E9F8 + pop {r4, r5, r6, pc} + .align 2, 0 +_0805EA24: .4byte gUnk_03003D70 +_0805EA28: .4byte gUnk_03003DB8 + + thumb_func_start sub_0805EA2C +sub_0805EA2C: @ 0x0805EA2C + push {lr} + adds r2, r0, #0 + lsls r1, r1, #3 + ldr r0, _0805EA5C @ =gUnk_03003D70 + adds r1, r1, r0 + str r1, [r2, #4] + ldr r0, [r1] + str r0, [r2] + str r2, [r0, #4] + str r2, [r1] + ldrb r0, [r2, #8] + cmp r0, #9 + beq _0805EA64 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + ldr r1, _0805EA60 @ =gUnk_03003DBC + b _0805EA66 + .align 2, 0 +_0805EA5C: .4byte gUnk_03003D70 +_0805EA60: .4byte gUnk_03003DBC +_0805EA64: + ldr r1, _0805EA74 @ =gUnk_020354B4 +_0805EA66: + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r2, #0 + bl sub_0805E374 + pop {pc} + .align 2, 0 +_0805EA74: .4byte gUnk_020354B4 + + thumb_func_start sub_0805EA78 +sub_0805EA78: @ 0x0805EA78 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_0805EA98 + lsls r4, r4, #3 + ldr r0, _0805EA94 @ =gUnk_03003D70 + adds r4, r4, r0 + str r4, [r5] + ldr r0, [r4, #4] + str r0, [r5, #4] + str r5, [r0] + str r5, [r4, #4] + pop {r4, r5, pc} + .align 2, 0 +_0805EA94: .4byte gUnk_03003D70 + + thumb_func_start sub_0805EA98 +sub_0805EA98: @ 0x0805EA98 + push {lr} + adds r2, r0, #0 + ldr r1, _0805EAB8 @ =gUnk_03003DD0 + ldr r0, [r1, #8] + cmp r2, r0 + bne _0805EAA8 + ldr r0, [r2] + str r0, [r1, #8] +_0805EAA8: + ldr r1, [r2] + ldr r0, [r2, #4] + str r0, [r1, #4] + ldr r1, [r2, #4] + ldr r0, [r2] + str r0, [r1] + pop {pc} + .align 2, 0 +_0805EAB8: .4byte gUnk_03003DD0 + + thumb_func_start sub_0805EABC +sub_0805EABC: @ 0x0805EABC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r4, _0805EAE8 @ =gUnk_03003D70 + adds r7, r4, #0 + adds r7, #0x48 +_0805EAC6: + ldr r3, [r4, #4] + cmp r3, r4 + beq _0805EAF6 + ldr r5, _0805EAEC @ =0x0000FFFF +_0805EACE: + cmp r3, r6 + beq _0805EAF0 + ldrh r0, [r3, #8] + ldrh r2, [r6, #8] + adds r1, r5, #0 + ands r1, r0 + adds r0, r5, #0 + ands r0, r2 + cmp r1, r0 + bne _0805EAF0 + movs r0, #1 + b _0805EAFE + .align 2, 0 +_0805EAE8: .4byte gUnk_03003D70 +_0805EAEC: .4byte 0x0000FFFF +_0805EAF0: + ldr r3, [r3, #4] + cmp r3, r4 + bne _0805EACE +_0805EAF6: + adds r4, #8 + cmp r4, r7 + blo _0805EAC6 + movs r0, #0 +_0805EAFE: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805EB00 +sub_0805EB00: @ 0x0805EB00 + push {r4, lr} + adds r3, r0, #0 + lsls r2, r2, #3 + ldr r0, _0805EB28 @ =gUnk_03003D70 + adds r2, r2, r0 + ldr r0, [r2, #4] + cmp r0, r2 + beq _0805EB22 +_0805EB10: + ldrb r4, [r0, #8] + cmp r3, r4 + bne _0805EB1C + ldrb r4, [r0, #9] + cmp r1, r4 + beq _0805EB24 +_0805EB1C: + ldr r0, [r0, #4] + cmp r0, r2 + bne _0805EB10 +_0805EB22: + movs r0, #0 +_0805EB24: + pop {r4, pc} + .align 2, 0 +_0805EB28: .4byte gUnk_03003D70 + + thumb_func_start sub_0805EB2C +sub_0805EB2C: @ 0x0805EB2C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, [sp, #0x10] + lsls r2, r2, #3 + ldr r0, _0805EB60 @ =gUnk_03003D70 + adds r2, r2, r0 + ldr r0, [r2, #4] + cmp r0, r2 + beq _0805EB5C +_0805EB3E: + ldrb r6, [r0, #8] + cmp r4, r6 + bne _0805EB56 + ldrb r6, [r0, #9] + cmp r1, r6 + bne _0805EB56 + ldrb r6, [r0, #0xa] + cmp r3, r6 + bne _0805EB56 + ldrb r6, [r0, #0xb] + cmp r5, r6 + beq _0805EB5E +_0805EB56: + ldr r0, [r0, #4] + cmp r0, r2 + bne _0805EB3E +_0805EB5C: + movs r0, #0 +_0805EB5E: + pop {r4, r5, r6, pc} + .align 2, 0 +_0805EB60: .4byte gUnk_03003D70 + + thumb_func_start sub_0805EB64 +sub_0805EB64: @ 0x0805EB64 + push {r4, r5, lr} + adds r4, r0, #0 + lsls r1, r1, #3 + ldr r0, _0805EB88 @ =gUnk_03003D70 + adds r3, r1, r0 + ldr r2, [r4, #4] + cmp r2, r3 + beq _0805EB96 + ldr r5, _0805EB8C @ =0x0000FFFF + ldrh r4, [r4, #8] +_0805EB78: + ldrh r1, [r2, #8] + adds r0, r5, #0 + ands r0, r1 + cmp r0, r4 + bne _0805EB90 + adds r0, r2, #0 + b _0805EB98 + .align 2, 0 +_0805EB88: .4byte gUnk_03003D70 +_0805EB8C: .4byte 0x0000FFFF +_0805EB90: + ldr r2, [r2, #4] + cmp r2, r3 + bne _0805EB78 +_0805EB96: + movs r0, #0 +_0805EB98: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805EB9C +sub_0805EB9C: @ 0x0805EB9C + push {r4, r5, lr} + adds r3, r0, #0 + ldr r2, _0805EBC8 @ =gUnk_03003D70 + adds r4, r2, #0 + adds r4, #0x48 +_0805EBA6: + ldr r0, [r2, #4] + cmp r0, r2 + beq _0805EBBE +_0805EBAC: + ldrb r5, [r0, #8] + cmp r3, r5 + bne _0805EBB8 + ldrb r5, [r0, #9] + cmp r1, r5 + beq _0805EBC6 +_0805EBB8: + ldr r0, [r0, #4] + cmp r0, r2 + bne _0805EBAC +_0805EBBE: + adds r2, #8 + cmp r2, r4 + blo _0805EBA6 + movs r0, #0 +_0805EBC6: + pop {r4, r5, pc} + .align 2, 0 +_0805EBC8: .4byte gUnk_03003D70 + + thumb_func_start sub_0805EBCC +sub_0805EBCC: @ 0x0805EBCC + push {r4, r5, r6, lr} + ldr r5, _0805EBFC @ =gUnk_03003D70 +_0805EBD0: + ldr r1, [r5, #4] + adds r6, r5, #0 + adds r6, #8 + cmp r1, r5 + beq _0805EBEE +_0805EBDA: + ldr r4, [r1, #4] + ldrb r0, [r1, #8] + cmp r0, #3 + bne _0805EBE8 + adds r0, r1, #0 + bl sub_0805E7BC +_0805EBE8: + adds r1, r4, #0 + cmp r1, r5 + bne _0805EBDA +_0805EBEE: + adds r5, r6, #0 + ldr r0, _0805EC00 @ =gUnk_03003DB8 + cmp r5, r0 + blo _0805EBD0 + bl sub_0805E84C + pop {r4, r5, r6, pc} + .align 2, 0 +_0805EBFC: .4byte gUnk_03003D70 +_0805EC00: .4byte gUnk_03003DB8 + + thumb_func_start sub_0805EC04 +sub_0805EC04: @ 0x0805EC04 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + movs r2, #1 + ldr r0, _0805EC4C @ =gUnk_03000000 + movs r5, #1 + movs r6, #0x3f + rsbs r6, r6, #0 + movs r7, #4 + rsbs r7, r7, #0 + adds r4, r0, #0 + adds r4, #8 +_0805EC1A: + ldr r0, _0805EC50 @ =0x00000426 + adds r1, r4, r0 + ldrb r0, [r1] + cmp r0, #0 + bne _0805EC54 + strb r5, [r1] + movs r0, #0x1f + ands r2, r0 + lsls r2, r2, #1 + ldrb r1, [r3, #0x1b] + adds r0, r6, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x1b] + ldrb r2, [r3, #0x19] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + orrs r1, r5 + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] + movs r0, #1 + b _0805EC5E + .align 2, 0 +_0805EC4C: .4byte gUnk_03000000 +_0805EC50: .4byte 0x00000426 +_0805EC54: + adds r4, #8 + adds r2, #1 + cmp r2, #0x1f + bls _0805EC1A + movs r0, #0 +_0805EC5E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805EC60 +sub_0805EC60: @ 0x0805EC60 + push {lr} + adds r3, r0, #0 + ldrb r1, [r3, #0x19] + lsls r0, r1, #0x1e + cmp r0, #0 + beq _0805EC90 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r3, #0x19] + ldrb r2, [r3, #0x1b] + lsls r1, r2, #0x1a + lsrs r1, r1, #0x1b + movs r0, #0x3f + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3, #0x1b] + ldr r0, _0805EC94 @ =gUnk_03000000 + lsls r1, r1, #3 + adds r1, r1, r0 + ldr r0, _0805EC98 @ =0x00000426 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1] +_0805EC90: + pop {pc} + .align 2, 0 +_0805EC94: .4byte gUnk_03000000 +_0805EC98: .4byte 0x00000426 + + thumb_func_start sub_0805EC9C +sub_0805EC9C: @ 0x0805EC9C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r7, r3, #0 + ldrb r0, [r4, #0x1b] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + cmp r0, #0 + bne _0805ECBE + adds r0, r4, #0 + bl sub_0805EC04 + cmp r0, #0 + bne _0805ECBE + movs r0, #0 + b _0805ECE0 +_0805ECBE: + ldr r1, _0805ECE4 @ =gUnk_03000000 + ldr r0, _0805ECE8 @ =0x00000427 + adds r2, r1, r0 + movs r0, #1 + strb r0, [r2] + ldrb r0, [r4, #0x1b] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1b + lsls r0, r0, #3 + movs r2, #0x84 + lsls r2, r2, #3 + adds r1, r1, r2 + adds r0, r0, r1 + strh r5, [r0] + strh r6, [r0, #2] + strh r7, [r0, #4] + movs r0, #1 +_0805ECE0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805ECE4: .4byte gUnk_03000000 +_0805ECE8: .4byte 0x00000427 + + thumb_func_start sub_0805ECEC +sub_0805ECEC: @ 0x0805ECEC + push {r4, r5, r6, lr} + ldr r5, _0805ED0C @ =gUnk_03000000 + ldr r4, _0805ED10 @ =0x00000427 + adds r6, r5, r4 + movs r4, #1 + strb r4, [r6] + lsls r0, r0, #3 + movs r4, #0x84 + lsls r4, r4, #3 + adds r5, r5, r4 + adds r0, r0, r5 + strh r1, [r0] + strh r2, [r0, #2] + strh r3, [r0, #4] + pop {r4, r5, r6, pc} + .align 2, 0 +_0805ED0C: .4byte gUnk_03000000 +_0805ED10: .4byte 0x00000427 + + thumb_func_start sub_0805ED14 +sub_0805ED14: @ 0x0805ED14 + ldr r2, _0805ED2C @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0x9c + str r0, [r1] + adds r0, r2, #0 + adds r0, #0x98 + movs r1, #0 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + bx lr + .align 2, 0 +_0805ED2C: .4byte gUnk_03003F80 + + thumb_func_start sub_0805ED30 +sub_0805ED30: @ 0x0805ED30 + push {r4, lr} + ldr r2, _0805ED50 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x9c + ldr r0, [r0] + adds r4, r2, #0 + cmp r0, #0 + beq _0805ED88 + adds r1, r4, #0 + adds r1, #0x90 + ldr r2, [r1, #0xc] + ldrh r0, [r1, #8] + cmp r0, #0 + bne _0805ED7E + movs r4, #0 + b _0805ED62 + .align 2, 0 +_0805ED50: .4byte gUnk_03003F80 +_0805ED54: + cmp r0, #2 + beq _0805ED5E + strh r3, [r1, #8] + ldrh r0, [r2, #2] + strh r0, [r1, #0xa] +_0805ED5E: + adds r2, #4 + b _0805ED7C +_0805ED62: + ldrh r3, [r2] + lsrs r0, r3, #0xe + cmp r0, #1 + bne _0805ED72 + movs r3, #2 + ldrsh r0, [r2, r3] + adds r2, r2, r0 + b _0805ED62 +_0805ED72: + cmp r0, #3 + bne _0805ED54 + strh r4, [r1, #8] + strh r4, [r1, #0xa] + movs r2, #0 +_0805ED7C: + str r2, [r1, #0xc] +_0805ED7E: + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + ldrh r1, [r1, #0xa] + b _0805EDCA +_0805ED88: + adds r0, r4, #0 + adds r0, #0x8b + ldrb r0, [r0] + cmp r0, #3 + bgt _0805ED98 + cmp r0, #0 + blt _0805ED98 + movs r1, #0 +_0805ED98: + adds r2, r4, #0 + adds r2, #0x8b + ldrb r0, [r2] + cmp r0, #1 + beq _0805EDB4 + cmp r0, #1 + bgt _0805EDAC + cmp r0, #0 + beq _0805EDC6 + b _0805EDCA +_0805EDAC: + cmp r0, #3 + bgt _0805EDCA + movs r1, #0 + b _0805EDCA +_0805EDB4: + movs r0, #0 + strb r0, [r2] + ldr r0, _0805EDF8 @ =gUnk_03000FF0 + ldrh r0, [r0] + bl sub_0805EE04 + adds r1, r4, #0 + adds r1, #0x90 + strh r0, [r1] +_0805EDC6: + ldr r0, _0805EDF8 @ =gUnk_03000FF0 + ldrh r1, [r0] +_0805EDCA: + adds r0, r1, #0 + bl sub_0805EE04 + ldr r3, _0805EDFC @ =gUnk_03003F80 + adds r1, r3, #0 + adds r1, #0x90 + ldrh r2, [r1] + strh r0, [r1] + adds r1, r0, #0 + bics r1, r2 + adds r2, r3, #0 + adds r2, #0x92 + strh r1, [r2] + ldr r2, _0805EE00 @ =gUnk_08109202 + movs r1, #0xf0 + lsls r1, r1, #4 + ands r1, r0 + lsrs r1, r1, #8 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r3, #0xd] + pop {r4, pc} + .align 2, 0 +_0805EDF8: .4byte gUnk_03000FF0 +_0805EDFC: .4byte gUnk_03003F80 +_0805EE00: .4byte gUnk_08109202 + + thumb_func_start sub_0805EE04 +sub_0805EE04: @ 0x0805EE04 + push {r4, r5, lr} + adds r2, r0, #0 + movs r5, #0x80 + lsls r5, r5, #2 + ands r0, r5 + rsbs r0, r0, #0 + asrs r1, r0, #0x1f + movs r0, #0x80 + lsls r0, r0, #5 + ands r1, r0 + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r2, #0 + ands r0, r4 + cmp r0, #0 + beq _0805EE32 + movs r0, #0x20 + orrs r1, r0 + movs r0, #0x80 + lsls r0, r0, #8 + orrs r1, r0 + movs r0, #0x80 + orrs r1, r0 +_0805EE32: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0805EE42 + movs r0, #8 + orrs r1, r0 + movs r0, #0x41 + orrs r1, r0 +_0805EE42: + movs r3, #2 + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _0805EE52 + movs r0, #0x10 + orrs r1, r0 + orrs r1, r3 +_0805EE52: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _0805EE5C + orrs r1, r4 +_0805EE5C: + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _0805EE66 + orrs r1, r5 +_0805EE66: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _0805EE74 + movs r0, #0x80 + lsls r0, r0, #3 + orrs r1, r0 +_0805EE74: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _0805EE82 + movs r0, #0x80 + lsls r0, r0, #4 + orrs r1, r0 +_0805EE82: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805EE88 +sub_0805EE88: @ 0x0805EE88 + push {lr} + ldr r1, _0805EEB0 @ =gUnk_030010A0 + adds r0, r1, #0 + adds r0, #0x2f + ldrb r0, [r0] + cmp r0, #0 + beq _0805EEAC + ldr r1, [r1] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0805EEAC + movs r0, #0xc + ands r1, r0 + lsrs r0, r1, #2 + adds r0, #0x2f + bl sub_0801D714 +_0805EEAC: + pop {pc} + .align 2, 0 +_0805EEB0: .4byte gUnk_030010A0 + + thumb_func_start sub_0805EEB4 +sub_0805EEB4: @ 0x0805EEB4 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r3, r1, #0 + strh r3, [r7, #8] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r1, [r0, #7] + cmp r1, #1 + bls _0805EED6 + lsrs r0, r3, #8 + cmp r0, #1 + bne _0805EED6 + movs r0, #0x8c + lsls r0, r0, #1 + cmp r3, r0 + bhi _0805EED6 + movs r1, #3 +_0805EED6: + ldr r0, _0805EF14 @ =gUnk_08109214 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + lsrs r0, r3, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r4, [r0] + adds r2, r2, r4 + lsls r0, r3, #0x18 + lsrs r0, r0, #0x16 + adds r0, r0, r2 + ldr r4, [r0] + ldr r0, [r1] + ldr r1, [r0] + lsrs r1, r1, #2 + ldr r0, [r2] + lsrs r6, r0, #2 + movs r5, #0 + ldrh r3, [r7, #8] + lsrs r0, r3, #8 + cmp r0, r1 + bhs _0805EF0E + lsls r0, r3, #0x18 + lsrs r0, r0, #0x18 + cmp r0, r6 + blo _0805EF18 +_0805EF0E: + movs r5, #1 + b _0805EF22 + .align 2, 0 +_0805EF14: .4byte gUnk_08109214 +_0805EF18: + adds r0, r2, r4 + ldrb r0, [r0] + cmp r0, #0 + bne _0805EF22 + movs r5, #2 +_0805EF22: + cmp r5, #2 + bhi _0805EF2E + cmp r5, #1 + blo _0805EF2E + ldr r2, _0805EF3C @ =gUnk_08109244 + movs r4, #0 +_0805EF2E: + adds r2, r2, r4 + adds r0, r7, #0 + adds r1, r2, #0 + bl sub_0805EF40 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805EF3C: .4byte gUnk_08109244 + + thumb_func_start sub_0805EF40 +sub_0805EF40: @ 0x0805EF40 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldrb r2, [r3] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0805EF70 + lsls r1, r2, #0x1b + lsrs r0, r1, #0x1c + cmp r0, #6 + bls _0805EF5C + movs r0, #0 + b _0805EF8A +_0805EF5C: + lsrs r0, r1, #0x1c + adds r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] +_0805EF70: + ldrb r0, [r3] + lsls r0, r0, #0x1b + lsrs r0, r0, #0x1c + lsls r0, r0, #2 + adds r1, r3, #0 + adds r1, #0x10 + adds r1, r1, r0 + str r4, [r1] + ldrb r0, [r3] + movs r1, #1 + orrs r0, r1 + strb r0, [r3] + movs r0, #1 +_0805EF8A: + pop {r4, pc} + + thumb_func_start sub_0805EF8C +sub_0805EF8C: @ 0x0805EF8C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805EFAE + lsls r0, r1, #0x1b + lsrs r0, r0, #0x1c + lsls r0, r0, #2 + adds r2, #0x10 + adds r2, r2, r0 + ldr r1, [r2] + ldrb r0, [r1] + adds r1, #1 + str r1, [r2] + b _0805EFB0 +_0805EFAE: + movs r0, #0 +_0805EFB0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805EFB4 +sub_0805EFB4: @ 0x0805EFB4 + push {r4, lr} + adds r3, r0, #0 + ldrb r2, [r3] + lsls r1, r2, #0x1b + lsrs r4, r1, #0x1c + movs r0, #0x1e + ands r0, r2 + cmp r0, #0 + beq _0805EFDC + adds r0, r4, #0 + subs r0, #1 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + b _0805EFE4 +_0805EFDC: + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] +_0805EFE4: + adds r0, r4, #0 + pop {r4, pc} + + thumb_func_start sub_0805EFE8 +sub_0805EFE8: @ 0x0805EFE8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 +_0805EFEC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + strb r5, [r6, #1] + movs r7, #0 + cmp r5, #0xf + bls _0805EFFE + b _0805F22C +_0805EFFE: + lsls r0, r5, #2 + ldr r1, _0805F008 @ =_0805F00C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F008: .4byte _0805F00C +_0805F00C: @ jump table + .4byte _0805F04C @ case 0 + .4byte _0805F058 @ case 1 + .4byte _0805F06E @ case 2 + .4byte _0805F07A @ case 3 + .4byte _0805F090 @ case 4 + .4byte _0805F130 @ case 5 + .4byte _0805F150 @ case 6 + .4byte _0805F196 @ case 7 + .4byte _0805F1C0 @ case 8 + .4byte _0805F1CC @ case 9 + .4byte _0805F1D8 @ case 10 + .4byte _0805F1DC @ case 11 + .4byte _0805F1EC @ case 12 + .4byte _0805F1FC @ case 13 + .4byte _0805F20C @ case 14 + .4byte _0805F21C @ case 15 +_0805F04C: + adds r0, r6, #0 + bl sub_0805EFB4 + adds r7, r0, #0 + movs r5, #0 + b _0805F232 +_0805F058: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + strh r4, [r6, #2] + movs r5, #6 + cmp r4, #0xa + bls _0805F06A + b _0805F232 +_0805F06A: + movs r5, #5 + b _0805F232 +_0805F06E: + adds r0, r6, #0 + bl sub_0805EF8C + strh r0, [r6, #2] + movs r5, #7 + b _0805F232 +_0805F07A: + adds r0, r6, #0 + bl sub_0805EF8C + lsls r4, r0, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 + strh r4, [r6, #2] + movs r5, #8 + b _0805F232 +_0805F090: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + cmp r4, #0x15 + bhi _0805F12C + lsls r0, r4, #2 + ldr r1, _0805F0A8 @ =_0805F0AC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F0A8: .4byte _0805F0AC +_0805F0AC: @ jump table + .4byte _0805F104 @ case 0 + .4byte _0805F104 @ case 1 + .4byte _0805F104 @ case 2 + .4byte _0805F104 @ case 3 + .4byte _0805F104 @ case 4 + .4byte _0805F104 @ case 5 + .4byte _0805F104 @ case 6 + .4byte _0805F104 @ case 7 + .4byte _0805F104 @ case 8 + .4byte _0805F104 @ case 9 + .4byte _0805F104 @ case 10 + .4byte _0805F104 @ case 11 + .4byte _0805F104 @ case 12 + .4byte _0805F104 @ case 13 + .4byte _0805F104 @ case 14 + .4byte _0805F104 @ case 15 + .4byte _0805F108 @ case 16 + .4byte _0805F114 @ case 17 + .4byte _0805F118 @ case 18 + .4byte _0805F11C @ case 19 + .4byte _0805F120 @ case 20 + .4byte _0805F120 @ case 21 +_0805F104: + movs r5, #9 + b _0805F12C +_0805F108: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + movs r5, #0xa + b _0805F12C +_0805F114: + movs r5, #2 + b _0805F12C +_0805F118: + movs r5, #3 + b _0805F12C +_0805F11C: + movs r5, #4 + b _0805F12C +_0805F120: + movs r5, #0xb + movs r1, #0x14 + eors r1, r4 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r4, r0, #0x1f +_0805F12C: + strh r4, [r6, #2] + b _0805F232 +_0805F130: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + cmp r4, #0xff + bne _0805F140 + movs r4, #0 + b _0805F14A +_0805F140: + lsls r4, r4, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 +_0805F14A: + strh r4, [r6, #6] + movs r5, #0xc + b _0805F232 +_0805F150: + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r0, #0 + cmp r4, #4 + bls _0805F162 + cmp r4, #5 + beq _0805F17C + b _0805EFEC +_0805F162: + ldr r1, [r6, #0xc] + cmp r1, #0 + bne _0805F16A + ldr r1, _0805F178 @ =gUnk_08109230 +_0805F16A: + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r6, #0 + bl sub_0805EF40 + b _0805EFEC + .align 2, 0 +_0805F178: .4byte gUnk_08109230 +_0805F17C: + adds r0, r6, #0 + bl sub_0805EF8C + lsls r4, r0, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0805EEB4 + b _0805EFEC +_0805F196: + adds r0, r6, #0 + bl sub_0805EF8C + lsls r4, r0, #8 + adds r0, r6, #0 + bl sub_0805EF8C + adds r4, r4, r0 + ldrb r1, [r6] + movs r0, #2 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x1f + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r6] + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0805EEB4 + b _0805EFEC +_0805F1C0: + adds r0, r6, #0 + bl sub_0805EF8C + strh r0, [r6, #2] + movs r5, #0xd + b _0805F232 +_0805F1CC: + adds r0, r6, #0 + bl sub_0805EF8C + strh r0, [r6, #2] + movs r5, #0xe + b _0805F232 +_0805F1D8: + movs r5, #1 + b _0805F232 +_0805F1DC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0x80 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F1EC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xe0 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F1FC: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xa0 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F20C: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #3 + orrs r5, r0 + b _0805F232 +_0805F21C: + adds r0, r6, #0 + bl sub_0805EF8C + adds r5, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + orrs r5, r0 + b _0805F232 +_0805F22C: + movs r0, #0x80 + lsls r0, r0, #1 + adds r5, r5, r0 +_0805F232: + cmp r7, #0 + beq _0805F238 + b _0805EFEC +_0805F238: + lsrs r0, r5, #8 + cmp r0, #0 + beq _0805F256 + ldrb r0, [r6] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1e + cmp r0, #0 + beq _0805F254 + cmp r0, #1 + bne _0805F254 + adds r0, r5, #0 + bl sub_0805F9A0 + adds r5, r0, #0 +_0805F254: + strh r5, [r6, #4] +_0805F256: + adds r0, r5, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0805F25C +sub_0805F25C: @ 0x0805F25C + push {lr} + adds r2, r0, #0 + lsrs r3, r2, #8 + movs r0, #0xf + ands r3, r0 + movs r0, #0xff + ands r2, r0 + cmp r3, #8 + bhi _0805F2B6 + lsls r0, r3, #2 + ldr r1, _0805F278 @ =_0805F27C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F278: .4byte _0805F27C +_0805F27C: @ jump table + .4byte _0805F2A0 @ case 0 + .4byte _0805F2A0 @ case 1 + .4byte _0805F2B6 @ case 2 + .4byte _0805F2B6 @ case 3 + .4byte _0805F2B6 @ case 4 + .4byte _0805F2B4 @ case 5 + .4byte _0805F2B4 @ case 6 + .4byte _0805F2B4 @ case 7 + .4byte _0805F2B4 @ case 8 +_0805F2A0: + cmp r2, #0x7f + bls _0805F2B6 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _0805F2B6 + subs r2, #0x80 + movs r3, #2 + b _0805F2B6 +_0805F2B4: + lsls r2, r2, #1 +_0805F2B6: + ldr r1, _0805F2C4 @ =gUnk_08109248 + lsls r0, r3, #2 + adds r0, r0, r1 + lsls r1, r2, #6 + ldr r0, [r0] + adds r0, r0, r1 + pop {pc} + .align 2, 0 +_0805F2C4: .4byte gUnk_08109248 + + thumb_func_start sub_0805F2C8 +sub_0805F2C8: @ 0x0805F2C8 + push {r4, r5, lr} + movs r1, #0 + ldr r4, _0805F2EC @ =gUnk_02036540 + adds r5, r4, #0 +_0805F2D0: + ldrb r0, [r4] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0805F2F0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_0801D630 + ldrb r0, [r4] + movs r1, #1 + orrs r0, r1 + strb r0, [r4] + adds r0, r5, #0 + b _0805F2FC + .align 2, 0 +_0805F2EC: .4byte gUnk_02036540 +_0805F2F0: + adds r4, #0xc + adds r5, #0xc + adds r1, #1 + cmp r1, #3 + bls _0805F2D0 + movs r0, #0 +_0805F2FC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805F300 +sub_0805F300: @ 0x0805F300 + push {lr} + adds r2, r0, #0 + movs r1, #0 + ldr r0, _0805F314 @ =gUnk_02036540 +_0805F308: + cmp r0, r2 + bne _0805F318 + movs r1, #0xc + bl sub_0801D630 + b _0805F320 + .align 2, 0 +_0805F314: .4byte gUnk_02036540 +_0805F318: + adds r0, #0xc + adds r1, #1 + cmp r1, #3 + bls _0805F308 +_0805F320: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805F324 +sub_0805F324: @ 0x0805F324 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + adds r7, r1, #0 + mov r1, sp + movs r2, #0x30 + bl sub_0801D66C + movs r0, #0 + str r0, [sp, #0x34] + movs r1, #0 + str r1, [sp, #0x30] + mov sl, r1 + mov r8, r1 + b _0805F34C +_0805F348: + cmp r6, #0 + beq _0805F41E +_0805F34C: + movs r5, #0 + movs r2, #1 + mov sb, r2 +_0805F352: + mov r0, sp + bl sub_0805EFE8 + adds r6, r0, #0 + cmp r6, #0xe + bhi _0805F3B4 + lsls r0, r6, #2 + ldr r1, _0805F368 @ =_0805F36C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F368: .4byte _0805F36C +_0805F36C: @ jump table + .4byte _0805F402 @ case 0 + .4byte _0805F402 @ case 1 + .4byte _0805F3FC @ case 2 + .4byte _0805F3FC @ case 3 + .4byte _0805F3FC @ case 4 + .4byte _0805F3FC @ case 5 + .4byte _0805F3FC @ case 6 + .4byte _0805F3FC @ case 7 + .4byte _0805F3FC @ case 8 + .4byte _0805F3FC @ case 9 + .4byte _0805F3FC @ case 10 + .4byte _0805F3AC @ case 11 + .4byte _0805F3A8 @ case 12 + .4byte _0805F3FC @ case 13 + .4byte _0805F3FC @ case 14 +_0805F3A8: + adds r5, #8 + b _0805F3FC +_0805F3AC: + mov r0, sp + ldrh r0, [r0, #2] + mov r8, r0 + b _0805F3FC +_0805F3B4: + mov r0, r8 + cmp r0, #0 + bne _0805F3DE + adds r0, r6, #0 + bl sub_0805F25C + adds r4, r0, #0 + lsrs r0, r6, #8 + cmp r0, #4 + bls _0805F3D2 + ldr r0, [r4, #0x40] + bl sub_0805F7A0 + lsrs r0, r0, #8 + adds r5, r5, r0 +_0805F3D2: + ldr r0, [r4] + bl sub_0805F7A0 + lsrs r0, r0, #8 + adds r5, r5, r0 + b _0805F3EA +_0805F3DE: + lsrs r0, r6, #8 + cmp r0, #4 + bls _0805F3E8 + adds r5, #0x10 + b _0805F3EA +_0805F3E8: + adds r5, #8 +_0805F3EA: + mov r0, sp + ldrb r1, [r0] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0x20 + bne _0805F3FC + cmp r5, #1 + bls _0805F3FC + subs r5, #1 +_0805F3FC: + mov r1, sb + cmp r1, #0 + bne _0805F352 +_0805F402: + cmp r5, sl + bls _0805F408 + mov sl, r5 +_0805F408: + cmp r5, #0 + beq _0805F414 + ldr r2, [sp, #0x30] + adds r2, #1 + str r2, [sp, #0x30] + b _0805F41A +_0805F414: + ldr r0, [sp, #0x34] + adds r0, #1 + str r0, [sp, #0x34] +_0805F41A: + cmp r7, #0 + bne _0805F348 +_0805F41E: + cmp r7, #0 + bne _0805F426 + mov r0, sl + b _0805F434 +_0805F426: + ldr r1, [sp, #0x34] + lsls r0, r1, #0x18 + ldr r2, [sp, #0x30] + lsls r1, r2, #0x10 + orrs r0, r1 + mov r1, sl + orrs r0, r1 +_0805F434: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805F440 +sub_0805F440: @ 0x0805F440 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0x30 + bl sub_0801D630 + ldr r0, _0805F45C @ =0x0000FFFF + cmp r5, r0 + bls _0805F460 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805EF40 + b _0805F468 + .align 2, 0 +_0805F45C: .4byte 0x0000FFFF +_0805F460: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805EEB4 +_0805F468: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805F46C +sub_0805F46C: @ 0x0805F46C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #0x48 + adds r6, r0, #0 + adds r5, r1, #0 + bl sub_0805F2C8 + mov r8, r0 + cmp r0, #0 + bne _0805F486 + b _0805F5BC +_0805F486: + add r4, sp, #0x30 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x18 + bl sub_0801D66C + mov r0, sp + adds r1, r6, #0 + bl sub_0805F440 + mov r3, sp + ldrb r0, [r4, #0x17] + movs r1, #3 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r3] + movs r0, #0x61 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r4, #0x17] + lsls r1, r1, #4 + mov r0, r8 + ldrb r2, [r0] + movs r0, #0xf + ands r0, r2 + orrs r0, r1 + mov r1, r8 + strb r0, [r1] + ldrb r0, [r4, #0x12] + strh r0, [r1, #4] + ldr r0, [r4, #8] + str r0, [r1, #8] + ldrb r0, [r4, #0x15] + strb r0, [r1, #2] + ldrb r0, [r4, #0x14] + strb r0, [r1, #3] + ldrb r1, [r4, #0x13] + movs r0, #8 + ands r0, r1 + mov sb, r4 + cmp r0, #0 + beq _0805F59E + lsrs r0, r1, #4 + ldrb r1, [r4, #0x14] + ldr r2, [r4, #4] + bl sub_0805F918 + ldr r0, [r4, #4] + adds r0, #0xe0 + str r0, [r4, #4] + mov r0, sp + movs r1, #1 + bl sub_0805F324 + lsrs r2, r0, #0x18 + ldrb r1, [r4, #0x16] + muls r2, r1, r2 + asrs r1, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x17 + adds r7, r2, r1 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + adds r1, r4, #0 + mov r2, sb + ldrb r3, [r2, #0x12] + cmp r3, r1 + bge _0805F514 + adds r1, r3, #0 +_0805F514: + adds r4, r1, #7 + movs r2, #8 + rsbs r2, r2, #0 + mov r0, sb + ldrb r1, [r0, #0x13] + movs r0, #2 + ands r0, r1 + ands r4, r2 + cmp r0, #0 + bne _0805F52A + adds r4, r3, #0 +_0805F52A: + ldr r5, [sp, #0x30] + adds r0, r5, #0 + adds r0, #0x40 + str r0, [sp, #0x30] + mov r2, sb + ldrb r1, [r2, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F54E + adds r4, #0xf + movs r0, #0x10 + rsbs r0, r0, #0 + ands r4, r0 + lsrs r0, r4, #3 + adds r0, #2 + subs r5, r5, r0 + b _0805F554 +_0805F54E: + adds r0, r5, #0 + adds r0, #0x42 + str r0, [sp, #0x30] +_0805F554: + lsrs r4, r4, #3 + mov r3, sb + ldrh r6, [r3, #0x10] + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + adds r3, r6, #0 + bl sub_08056DC8 + adds r5, #2 + mov r1, sb + ldrh r0, [r1, #0x10] + adds r0, #7 + strh r0, [r1, #0x10] + ldrh r0, [r1, #0x10] + subs r6, r0, #1 + adds r0, r7, #0 + subs r7, #1 + cmp r0, #0 + beq _0805F59E +_0805F57C: + adds r1, r5, #0 + adds r1, #0x40 + adds r5, r1, #0 + subs r2, r4, #1 + subs r3, r7, #1 + cmp r4, #0 + ble _0805F596 +_0805F58A: + strh r6, [r1] + adds r1, #2 + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bgt _0805F58A +_0805F596: + adds r0, r7, #0 + adds r7, r3, #0 + cmp r0, #0 + bne _0805F57C +_0805F59E: + ldr r0, _0805F5C8 @ =gUnk_02034330 + movs r1, #0x18 + bl sub_0801D630 +_0805F5A6: + mov r0, sb + mov r1, sp + mov r2, r8 + bl sub_0805F5CC + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0805F5A6 + mov r0, r8 + bl sub_0805F300 +_0805F5BC: + movs r0, #0 + add sp, #0x48 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805F5C8: .4byte gUnk_02034330 + + thumb_func_start sub_0805F5CC +sub_0805F5CC: @ 0x0805F5CC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + ldrb r0, [r4, #0x14] + bl sub_0805F8F8 + ldr r1, [r4, #8] + ldrb r2, [r4, #0x12] + adds r2, #7 + movs r3, #0xfc + lsls r3, r3, #1 + ands r2, r3 + lsls r2, r2, #3 + bl sub_0801D610 + adds r0, r6, #0 + movs r1, #0 + bl sub_0805F324 + adds r2, r0, #0 + ldrb r1, [r4, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F60E + adds r0, r2, #1 + lsrs r0, r0, #1 + movs r1, #8 + subs r1, r1, r0 + movs r0, #7 + ands r0, r1 + b _0805F610 +_0805F60E: + movs r0, #0 +_0805F610: + strh r0, [r5, #6] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0805F6A4 + adds r2, r0, #0 + cmp r2, #0 + beq _0805F660 + ldrh r1, [r5, #6] + adds r0, r1, #7 + asrs r5, r0, #3 + ldr r2, [r4] + ldrb r1, [r4, #0x13] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805F63A + adds r0, r5, #1 + lsrs r0, r0, #1 + lsls r0, r0, #1 + subs r2, r2, r0 +_0805F63A: + ldrh r1, [r4, #0x10] + adds r0, r2, #0 + adds r2, r5, #0 + bl sub_0805F67C + strh r0, [r4, #0x10] + ldr r0, [r4] + adds r0, #0x80 + str r0, [r4] + lsls r5, r5, #6 + ldr r0, [r4, #8] + ldr r1, [r4, #4] + adds r2, r5, #0 + bl sub_0801D66C + ldr r0, [r4, #4] + adds r0, r0, r5 + str r0, [r4, #4] + b _0805F670 +_0805F660: + ldrb r0, [r6, #1] + cmp r0, #0xa + bne _0805F670 + ldrb r1, [r4, #0x16] + lsls r1, r1, #6 + ldr r0, [r4] + adds r0, r0, r1 + str r0, [r4] +_0805F670: + ldrb r1, [r6, #1] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0805F67C +sub_0805F67C: @ 0x0805F67C + push {r4, lr} + adds r3, r0, #0 + subs r2, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r2, r0 + beq _0805F6A0 + adds r4, r0, #0 +_0805F68C: + strh r1, [r3] + adds r1, #1 + adds r0, r3, #0 + adds r0, #0x40 + strh r1, [r0] + adds r1, #1 + adds r3, #2 + subs r2, #1 + cmp r2, r4 + bne _0805F68C +_0805F6A0: + adds r0, r1, #0 + pop {r4, pc} + + thumb_func_start sub_0805F6A4 +sub_0805F6A4: @ 0x0805F6A4 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r6, #0 +_0805F6AC: + adds r0, r5, #0 + bl sub_0805EFE8 + movs r7, #1 + cmp r0, #0xe + bhi _0805F746 + lsls r0, r0, #2 + ldr r1, _0805F6C4 @ =_0805F6C8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0805F6C4: .4byte _0805F6C8 +_0805F6C8: @ jump table + .4byte _0805F768 @ case 0 + .4byte _0805F768 @ case 1 + .4byte _0805F764 @ case 2 + .4byte _0805F764 @ case 3 + .4byte _0805F764 @ case 4 + .4byte _0805F764 @ case 5 + .4byte _0805F764 @ case 6 + .4byte _0805F704 @ case 7 + .4byte _0805F764 @ case 8 + .4byte _0805F764 @ case 9 + .4byte _0805F764 @ case 10 + .4byte _0805F740 @ case 11 + .4byte _0805F70E @ case 12 + .4byte _0805F764 @ case 13 + .4byte _0805F764 @ case 14 +_0805F704: + ldrh r0, [r5, #2] + cmp r0, #0xd + bhi _0805F764 + strb r0, [r4, #2] + b _0805F764 +_0805F70E: + ldr r3, _0805F73C @ =gUnk_02034330 + movs r2, #2 + ldrsb r2, [r3, r2] + cmp r2, #3 + bhi _0805F732 + adds r0, r2, #1 + strb r0, [r3, #2] + lsls r2, r2, #1 + adds r0, r3, #0 + adds r0, #0x10 + adds r0, r2, r0 + ldrh r1, [r5, #6] + strh r1, [r0] + adds r0, r3, #0 + adds r0, #8 + adds r2, r2, r0 + ldrh r0, [r4, #6] + strh r0, [r2] +_0805F732: + ldrh r0, [r4, #6] + adds r0, #8 + strh r0, [r4, #6] + adds r6, #8 + b _0805F764 + .align 2, 0 +_0805F73C: .4byte gUnk_02034330 +_0805F740: + ldrh r0, [r5, #2] + strb r0, [r4, #1] + b _0805F764 +_0805F746: + adds r1, r4, #0 + bl sub_0805F7DC + adds r6, r6, r0 + ldrb r1, [r5] + movs r0, #0x60 + ands r0, r1 + cmp r0, #0x20 + bne _0805F764 + ldrh r0, [r4, #6] + cmp r0, #1 + bls _0805F764 + subs r6, #1 + subs r0, #1 + strh r0, [r4, #6] +_0805F764: + cmp r7, #0 + bne _0805F6AC +_0805F768: + adds r0, r6, #0 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805F76C +sub_0805F76C: @ 0x0805F76C + push {r4, lr} + sub sp, #0x30 + adds r2, r0, #0 + adds r4, r1, #0 + mov r0, sp + adds r1, r2, #0 + bl sub_0805F440 + mov r3, sp + ldrb r0, [r4] + lsrs r0, r0, #4 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #5 + ldrb r2, [r3] + movs r0, #0x61 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + mov r0, sp + adds r1, r4, #0 + bl sub_0805F6A4 + add sp, #0x30 + pop {r4, pc} + + thumb_func_start sub_0805F7A0 +sub_0805F7A0: @ 0x0805F7A0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xf + movs r2, #0 + b _0805F7B4 +_0805F7AA: + lsls r1, r1, #4 + adds r2, #1 + cmp r2, #7 + bhi _0805F7BA + adds r0, r4, #0 +_0805F7B4: + ands r0, r1 + cmp r1, r0 + beq _0805F7AA +_0805F7BA: + adds r3, r2, #0 + cmp r3, #7 + bhi _0805F7D2 + b _0805F7CA +_0805F7C2: + lsls r1, r1, #4 + adds r2, #1 + cmp r2, #7 + bhi _0805F7D2 +_0805F7CA: + adds r0, r4, #0 + ands r0, r1 + cmp r1, r0 + bne _0805F7C2 +_0805F7D2: + subs r2, r2, r3 + lsls r0, r2, #8 + orrs r0, r3 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805F7DC +sub_0805F7DC: @ 0x0805F7DC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r4, r1, #0 + ldrh r0, [r4, #4] + ldrh r1, [r4, #6] + cmp r0, r1 + bhi _0805F7EE + movs r0, #0 + b _0805F81E +_0805F7EE: + adds r0, r6, #0 + bl sub_0805F25C + adds r5, r0, #0 + ldrh r7, [r4, #6] + lsrs r0, r6, #8 + cmp r0, #4 + bls _0805F808 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805F820 + adds r5, #0x40 +_0805F808: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805F820 + ldrh r1, [r4, #4] + ldrh r0, [r4, #6] + cmp r0, r1 + bls _0805F81A + strh r1, [r4, #6] +_0805F81A: + ldrh r0, [r4, #6] + subs r0, r0, r7 +_0805F81E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805F820 +sub_0805F820: @ 0x0805F820 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + adds r4, r1, #0 + ldrh r0, [r7, #4] + ldrh r1, [r7, #6] + subs r0, r0, r1 + cmp r0, #0 + ble _0805F8DC + ldr r1, _0805F854 @ =gUnk_02036A58 + adds r0, r4, #0 + bl sub_08002724 + ldrb r0, [r7, #1] + cmp r0, #0 + bne _0805F858 + ldr r0, [r4] + bl sub_0805F7A0 + movs r1, #0xf + ands r1, r0 + lsrs r4, r0, #8 + b _0805F85C + .align 2, 0 +_0805F854: .4byte gUnk_02036A58 +_0805F858: + movs r1, #0 + movs r4, #8 +_0805F85C: + ldrh r0, [r7, #4] + ldrh r3, [r7, #6] + subs r0, r0, r3 + cmp r0, #8 + ble _0805F868 + movs r0, #8 +_0805F868: + cmp r0, r4 + bge _0805F86E + adds r4, r0, #0 +_0805F86E: + ldr r0, _0805F8BC @ =gUnk_02036A58 + adds r6, r1, r0 + ldr r0, [r7, #8] + mov sb, r0 + ldrb r0, [r7, #3] + lsls r2, r0, #1 + adds r2, r2, r0 + lsls r2, r2, #6 + ldrb r0, [r7, #2] + lsls r0, r0, #5 + ldr r1, _0805F8C0 @ =gUnk_0810942E + adds r0, r0, r1 + adds r2, r2, r0 + mov r8, r2 + adds r5, r3, #0 + adds r0, r5, r4 + strh r0, [r7, #6] + ldrb r0, [r7] + lsrs r0, r0, #4 + cmp r0, #1 + beq _0805F8D4 + adds r0, r4, #0 + subs r4, #1 + cmp r0, #0 + ble _0805F8DC +_0805F8A0: + adds r0, r6, #0 + mov r1, sb + mov r2, r8 + adds r3, r5, #0 + bl sub_080026C4 + adds r6, #1 + adds r5, #1 + adds r0, r4, #0 + subs r4, #1 + cmp r0, #0 + bgt _0805F8A0 + b _0805F8DC + .align 2, 0 +_0805F8BC: .4byte gUnk_02036A58 +_0805F8C0: .4byte gUnk_0810942E +_0805F8C4: + adds r0, r6, #0 + mov r1, sb + mov r2, r8 + adds r3, r5, #0 + bl sub_080026F2 + adds r6, #1 + adds r5, #1 +_0805F8D4: + adds r0, r4, #0 + subs r4, #1 + cmp r0, #0 + bgt _0805F8C4 +_0805F8DC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0805F8E4 +sub_0805F8E4: @ 0x0805F8E4 + push {r4, r5, lr} + adds r4, r1, #0 + ldrb r5, [r4, #1] + movs r1, #1 + strb r1, [r4, #1] + adds r1, r4, #0 + bl sub_0805F7DC + strb r5, [r4, #1] + pop {r4, r5, pc} + + thumb_func_start sub_0805F8F8 +sub_0805F8F8: @ 0x0805F8F8 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #6 + ldr r0, _0805F910 @ =gUnk_081094CE + adds r1, r1, r0 + ldr r2, _0805F914 @ =gUnk_0810926C + ldrb r0, [r1, #0xa] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + bx lr + .align 2, 0 +_0805F910: .4byte gUnk_081094CE +_0805F914: .4byte gUnk_0810926C + + thumb_func_start sub_0805F918 +sub_0805F918: @ 0x0805F918 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + mov sl, r2 + adds r0, r5, #0 + bl sub_0805F8F8 + ldr r1, _0805F990 @ =gUnk_02036AD8 + movs r2, #0xe0 + bl sub_0801D610 + ldr r0, _0805F994 @ =gUnk_081092AC + lsls r4, r4, #2 + adds r4, r4, r0 + ldr r4, [r4] + mov r8, r4 + lsls r0, r5, #1 + adds r0, r0, r5 + lsls r0, r0, #6 + ldr r1, _0805F998 @ =gUnk_081094CE + adds r0, r0, r1 + mov sb, r0 + movs r7, #0 + movs r6, #0 +_0805F950: + ldr r4, _0805F99C @ =gUnk_02036A58 + mov r0, r8 + adds r1, r4, #0 + bl sub_08002724 + movs r0, #0x40 + add r8, r0 + movs r5, #0 + adds r6, #1 +_0805F962: + adds r0, r4, #0 + ldr r1, _0805F990 @ =gUnk_02036AD8 + mov r2, sb + adds r3, r7, #0 + bl sub_080026C4 + adds r4, #1 + adds r7, #1 + adds r5, #1 + cmp r5, #7 + bls _0805F962 + cmp r6, #2 + bls _0805F950 + ldr r0, _0805F990 @ =gUnk_02036AD8 + mov r1, sl + movs r2, #0xe0 + bl sub_08000E96 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0805F990: .4byte gUnk_02036AD8 +_0805F994: .4byte gUnk_081092AC +_0805F998: .4byte gUnk_081094CE +_0805F99C: .4byte gUnk_02036A58 + + thumb_func_start sub_0805F9A0 +sub_0805F9A0: @ 0x0805F9A0 + push {lr} + adds r2, r0, #0 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _0805F9D0 + ldr r1, _0805F9C4 @ =gUnk_081092D4 + movs r3, #0 +_0805F9B2: + ldrh r0, [r1] + cmp r0, r2 + beq _0805F9C8 + adds r3, #1 + adds r1, #2 + ldrh r0, [r1] + cmp r0, #0 + bne _0805F9B2 + b _0805F9D8 + .align 2, 0 +_0805F9C4: .4byte gUnk_081092D4 +_0805F9C8: + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r3, r1 + b _0805F9E2 +_0805F9D0: + ldr r0, _0805F9E4 @ =0x0000031A + cmp r2, r0 + bne _0805F9D8 + movs r2, #1 +_0805F9D8: + movs r0, #0xff + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r0, r1 +_0805F9E2: + pop {pc} + .align 2, 0 +_0805F9E4: .4byte 0x0000031A + + thumb_func_start sub_0805F9E8 +sub_0805F9E8: @ 0x0805F9E8 + push {lr} + ldr r1, _0805F9FC @ =gUnk_08109A30 + ldr r0, _0805FA00 @ =gUnk_03001000 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_0805F9FC: .4byte gUnk_08109A30 +_0805FA00: .4byte gUnk_03001000 + + thumb_func_start sub_0805FA04 +sub_0805FA04: @ 0x0805FA04 + push {r4, r5, lr} + movs r0, #1 + bl sub_0801DA90 + ldr r0, _0805FA78 @ =gUnk_02034CB0 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r0, _0805FA7C @ =gUnk_02001A40 + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0801D630 + ldr r0, _0805FA80 @ =gUnk_03000F50 + movs r2, #0 + movs r1, #0x94 + lsls r1, r1, #4 + strh r1, [r0] + strh r2, [r0, #0xa] + strh r2, [r0, #0xc] + strh r2, [r0, #0x2e] + strh r2, [r0, #0x30] + ldr r1, _0805FA84 @ =0x00001E0F + strh r1, [r0, #0x2c] + movs r5, #1 + movs r1, #1 + strh r1, [r0, #0x32] + bl sub_08056418 + ldr r0, _0805FA88 @ =gUnk_02032EC0 + movs r1, #0xed + lsls r1, r1, #2 + bl sub_0801D630 + ldr r4, _0805FA8C @ =gUnk_02000080 + adds r0, r4, #0 + movs r1, #0x30 + bl sub_0801D630 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + strb r0, [r4, #0x16] + bl sub_08053320 + ldr r1, _0805FA90 @ =0x00001144 + movs r0, #0 + bl sub_0801D79C + ldr r0, _0805FA94 @ =gUnk_03001000 + strb r5, [r0, #3] + bl sub_080A3210 + bl sub_08050008 + pop {r4, r5, pc} + .align 2, 0 +_0805FA78: .4byte gUnk_02034CB0 +_0805FA7C: .4byte gUnk_02001A40 +_0805FA80: .4byte gUnk_03000F50 +_0805FA84: .4byte 0x00001E0F +_0805FA88: .4byte gUnk_02032EC0 +_0805FA8C: .4byte gUnk_02000080 +_0805FA90: .4byte 0x00001144 +_0805FA94: .4byte gUnk_03001000 + + thumb_func_start sub_0805FA98 +sub_0805FA98: @ 0x0805FA98 + push {r4, lr} + ldr r0, _0805FAB4 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + adds r2, r0, #0 + cmp r1, #0x80 + beq _0805FAD8 + cmp r1, #0x80 + bgt _0805FAB8 + cmp r1, #2 + beq _0805FB44 + cmp r1, #0x40 + beq _0805FACA + b _0805FB4A + .align 2, 0 +_0805FAB4: .4byte gUnk_03000FF0 +_0805FAB8: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _0805FB28 + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + beq _0805FAE8 + b _0805FB4A +_0805FACA: + ldr r1, _0805FAD4 @ =gUnk_02000080 + ldrb r0, [r1, #0x11] + subs r0, #1 + strb r0, [r1, #0x11] + b _0805FBA4 + .align 2, 0 +_0805FAD4: .4byte gUnk_02000080 +_0805FAD8: + ldr r1, _0805FAE4 @ =gUnk_02000080 + ldrb r0, [r1, #0x11] + adds r0, #1 + strb r0, [r1, #0x11] + b _0805FBA4 + .align 2, 0 +_0805FAE4: .4byte gUnk_02000080 +_0805FAE8: + ldr r0, _0805FB04 @ =gUnk_02000080 + ldrb r1, [r0, #0x10] + movs r2, #1 + eors r1, r2 + strb r1, [r0, #0x10] + cmp r1, #0 + bne _0805FB10 + ldr r0, _0805FB08 @ =gUnk_03000F50 + ldr r1, _0805FB0C @ =0x00001F0C + strh r1, [r0, #8] + subs r1, #0xfd + strh r1, [r0, #0x2c] + b _0805FBA4 + .align 2, 0 +_0805FB04: .4byte gUnk_02000080 +_0805FB08: .4byte gUnk_03000F50 +_0805FB0C: .4byte 0x00001F0C +_0805FB10: + ldr r0, _0805FB1C @ =gUnk_03000F50 + ldr r1, _0805FB20 @ =0x00001F0F + strh r1, [r0, #8] + ldr r1, _0805FB24 @ =0x00001E0C + strh r1, [r0, #0x2c] + b _0805FBA4 + .align 2, 0 +_0805FB1C: .4byte gUnk_03000F50 +_0805FB20: .4byte 0x00001F0F +_0805FB24: .4byte 0x00001E0C +_0805FB28: + movs r2, #0x80 + lsls r2, r2, #0x12 + ldr r1, _0805FB40 @ =gUnk_02000080 + ldrb r0, [r1, #0x16] + strb r0, [r2, #7] + ldrb r0, [r1, #0x14] + lsls r0, r0, #8 + ldrb r1, [r1, #0x15] + adds r0, r0, r1 + bl sub_08056378 + b _0805FBA4 + .align 2, 0 +_0805FB40: .4byte gUnk_02000080 +_0805FB44: + bl sub_08056418 + b _0805FBA4 +_0805FB4A: + ldrh r0, [r2, #4] + cmp r0, #0x10 + beq _0805FB5A + cmp r0, #0x20 + bne _0805FB5E + movs r1, #1 + rsbs r1, r1, #0 + b _0805FB60 +_0805FB5A: + movs r1, #1 + b _0805FB60 +_0805FB5E: + movs r1, #0 +_0805FB60: + ldr r4, _0805FB74 @ =gUnk_02000080 + ldrb r0, [r4, #0x11] + cmp r0, #1 + beq _0805FB8E + cmp r0, #1 + bgt _0805FB78 + cmp r0, #0 + beq _0805FB7E + b _0805FBA4 + .align 2, 0 +_0805FB74: .4byte gUnk_02000080 +_0805FB78: + cmp r0, #2 + beq _0805FB96 + b _0805FBA4 +_0805FB7E: + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + adds r0, #0x50 + movs r1, #0x50 + bl __modsi3 + strb r0, [r4, #0x14] + b _0805FBA4 +_0805FB8E: + ldrb r0, [r4, #0x15] + adds r0, r0, r1 + strb r0, [r4, #0x15] + b _0805FBA4 +_0805FB96: + ldrb r0, [r4, #0x16] + adds r0, r0, r1 + adds r0, #7 + movs r1, #7 + bl __modsi3 + strb r0, [r4, #0x16] +_0805FBA4: + ldr r4, _0805FBBC @ =gUnk_02000080 + ldrb r0, [r4, #0x11] + adds r0, #3 + movs r1, #3 + bl __modsi3 + strb r0, [r4, #0x11] + ldr r1, _0805FBC0 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0x32] + pop {r4, pc} + .align 2, 0 +_0805FBBC: .4byte gUnk_02000080 +_0805FBC0: .4byte gUnk_03000F50 + + thumb_func_start sub_0805FBC4 +sub_0805FBC4: @ 0x0805FBC4 + push {lr} + movs r0, #0 + bl sub_08056010 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0805FBD0 +sub_0805FBD0: @ 0x0805FBD0 + push {lr} + ldr r2, _0805FBE4 @ =gUnk_08109AC8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805FBE4: .4byte gUnk_08109AC8 + + thumb_func_start sub_0805FBE8 +sub_0805FBE8: @ 0x0805FBE8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0805FC68 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r4, #0x3c + ldrb r0, [r4] + adds r0, #1 + adds r1, r5, #0 + adds r1, #0x3c + strb r0, [r1] + ldr r0, _0805FC6C @ =gUnk_08109AD0 + str r0, [r5, #0x48] + movs r0, #0xe0 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + ldrb r1, [r5, #0x14] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _0805FC36 + movs r0, #1 + strb r0, [r5, #0xb] +_0805FC36: + ldrb r1, [r5, #0x14] + lsls r0, r1, #2 + strb r0, [r5, #0x15] + movs r0, #0x3c + str r0, [r5, #0x6c] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x19 + adds r1, #0xc + adds r0, r5, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_0801766C + adds r0, r5, #0 + bl sub_0806F69C + adds r0, r5, #0 + bl sub_0805FC74 + ldr r0, _0805FC70 @ =0x0000013F + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_0805FC68: .4byte gLinkEntity +_0805FC6C: .4byte gUnk_08109AD0 +_0805FC70: .4byte 0x0000013F + + thumb_func_start sub_0805FC74 +sub_0805FC74: @ 0x0805FC74 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x6c] + subs r0, #1 + str r0, [r4, #0x6c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0805FD1C + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0805FCA4 + adds r0, r4, #0 + bl sub_0800451C +_0805FCA4: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0805FD10 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _0805FD14 @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + movs r2, #0x80 + bl sub_080002F0 + cmp r0, #0 + bne _0805FCF6 + ldr r1, _0805FD18 @ =gUnk_08003E44 + movs r0, #0x2e + ldrsh r2, [r4, r0] + movs r5, #0x32 + ldrsh r3, [r4, r5] + adds r0, r4, #0 + bl sub_080040D8 + cmp r0, #0 + beq _0805FCF6 + adds r0, r4, #0 + movs r1, #0x19 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_0805FCF6: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0 + beq _0805FD20 + adds r0, r4, #0 + movs r1, #0x19 + movs r2, #0 + bl CreateFX + bl sub_0805E780 + b _0805FD20 + .align 2, 0 +_0805FD10: .4byte gUnk_03000BF0 +_0805FD14: .4byte gLinkEntity +_0805FD18: .4byte gUnk_08003E44 +_0805FD1C: + bl sub_0805E780 +_0805FD20: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0805FD24 +sub_0805FD24: @ 0x0805FD24 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0805FD72 + cmp r0, #1 + bgt _0805FD38 + cmp r0, #0 + beq _0805FD3E + b _0805FDBC +_0805FD38: + cmp r0, #2 + beq _0805FDAE + b _0805FDBC +_0805FD3E: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + bl sub_0807DD50 + b _0805FDBC +_0805FD72: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0805FDA4 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _0805FDA0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _0805FDBC + .align 2, 0 +_0805FDA0: .4byte gLinkEntity +_0805FDA4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _0805FDBC +_0805FDAE: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0805FDBC + movs r0, #1 + strb r0, [r4, #0xc] +_0805FDBC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805FDC0 +sub_0805FDC0: @ 0x0805FDC0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805FDEE + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0xa + bl sub_080042AC + b _0805FDF4 +_0805FDEE: + adds r0, r4, #0 + bl sub_080042B8 +_0805FDF4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805FDF8 +sub_0805FDF8: @ 0x0805FDF8 + push {lr} + ldr r2, _0805FE0C @ =gUnk_08109BBC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0805FE0C: .4byte gUnk_08109BBC + + thumb_func_start sub_0805FE10 +sub_0805FE10: @ 0x0805FE10 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + bl sub_0807DD50 + pop {r4, pc} + + thumb_func_start sub_0805FE48 +sub_0805FE48: @ 0x0805FE48 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0805FE80 + movs r0, #0 + strb r1, [r5, #0xc] + strb r0, [r2] + ldr r1, _0805FE7C @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_080042AC + adds r0, r5, #0 + bl sub_0806F118 + b _0805FF14 + .align 2, 0 +_0805FE7C: .4byte gLinkEntity +_0805FE80: + adds r4, r5, #0 + adds r4, #0x84 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_0807DF74 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_0805FF2C + adds r0, r5, #0 + adds r0, #0x80 + ldrh r3, [r0] + adds r7, r0, #0 + adds r6, r5, #0 + adds r6, #0x82 + cmp r3, #7 + bhi _0805FEC6 + ldrh r1, [r6] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0805FEBA + movs r1, #0xfc + ands r1, r3 + ldrb r0, [r5, #0xf] + lsrs r0, r0, #1 + adds r3, r1, r0 + b _0805FEC6 +_0805FEBA: + movs r0, #0xfc + ands r0, r3 + ldrb r2, [r5, #0x14] + lsrs r1, r2, #1 + adds r3, r0, r1 + strb r2, [r5, #0xf] +_0805FEC6: + adds r4, r5, #0 + adds r4, #0x58 + ldrb r0, [r4] + cmp r3, r0 + beq _0805FED8 + adds r0, r5, #0 + adds r1, r3, #0 + bl sub_080042AC +_0805FED8: + adds r0, r5, #0 + bl sub_080042B8 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0805FF02 + ldrb r0, [r4] + cmp r0, #8 + beq _0805FEFE + cmp r0, #8 + blt _0805FF02 + cmp r0, #0xc + bgt _0805FF02 + cmp r0, #0xa + blt _0805FF02 +_0805FEFE: + movs r0, #0 + strh r0, [r7] +_0805FF02: + ldrh r1, [r6] + mvns r0, r1 + adds r0, #1 + ands r1, r0 + cmp r1, #2 + bne _0805FF14 + adds r0, r5, #0 + bl sub_0806ED78 +_0805FF14: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0805FF18 +sub_0805FF18: @ 0x0805FF18 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0805FF28 + movs r0, #1 + strb r0, [r4, #0xc] +_0805FF28: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805FF2C +sub_0805FF2C: @ 0x0805FF2C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r0, [r5, #8] + ldr r1, _0805FF60 @ =0xFFF00004 + ands r1, r0 + eors r0, r1 + str r0, [r5, #8] + cmp r1, #0 + beq _0805FF94 + movs r6, #0x80 + lsls r6, r6, #0xd + adds r3, r4, #0 + adds r3, #0x80 +_0805FF48: + mvns r0, r1 + adds r2, r0, #1 + ands r2, r1 + eors r1, r2 + cmp r2, r6 + beq _0805FF8C + cmp r2, r6 + bhi _0805FF64 + cmp r2, #4 + beq _0805FF76 + b _0805FF90 + .align 2, 0 +_0805FF60: .4byte 0xFFF00004 +_0805FF64: + movs r0, #0x80 + lsls r0, r0, #0xe + cmp r2, r0 + beq _0805FF7A + movs r0, #0x80 + lsls r0, r0, #0xf + cmp r2, r0 + beq _0805FF7E + b _0805FF90 +_0805FF76: + movs r0, #9 + b _0805FF8E +_0805FF7A: + movs r0, #0xa + b _0805FF8E +_0805FF7E: + ldrb r0, [r4, #0x14] + cmp r0, #2 + bne _0805FF88 + movs r0, #0xb + b _0805FF8E +_0805FF88: + movs r0, #0xc + b _0805FF8E +_0805FF8C: + movs r0, #8 +_0805FF8E: + strh r0, [r3] +_0805FF90: + cmp r1, #0 + bne _0805FF48 +_0805FF94: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807DB98 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0805FFA0 +sub_0805FFA0: @ 0x0805FFA0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0805FFCE + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #8 + bl sub_080042AC + b _0805FFD4 +_0805FFCE: + adds r0, r4, #0 + bl sub_080042B8 +_0805FFD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0805FFD8 +sub_0805FFD8: @ 0x0805FFD8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _08060044 + cmp r5, #1 + bgt _0805FFEC + cmp r5, #0 + beq _0805FFF2 + b _0806008C +_0805FFEC: + cmp r5, #2 + beq _0806007E + b _0806008C +_0805FFF2: + ldr r1, _0806003C @ =gUnk_0810A348 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806008C + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + strb r5, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + ldr r1, _08060040 @ =gUnk_08109D18 + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806008C + .align 2, 0 +_0806003C: .4byte gUnk_0810A348 +_08060040: .4byte gUnk_08109D18 +_08060044: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806005E + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + bl sub_0806F118 + b _0806008C +_0806005E: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + adds r0, #0x59 + ldrb r0, [r0] + cmp r0, #0xf0 + beq _0806008C + adds r0, r4, #0 + bl sub_080600F0 + b _0806008C +_0806007E: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806008C + movs r0, #1 + strb r0, [r4, #0xc] +_0806008C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08060090 +sub_08060090: @ 0x08060090 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_080600A8 +sub_080600A8: @ 0x080600A8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r2, [r0] + cmp r2, #0xff + beq _080600BA + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 +_080600BA: + adds r0, r4, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080600CA + movs r2, #0xff +_080600CA: + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080600F0 +sub_080600F0: @ 0x080600F0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r3, [r0] + cmp r3, #7 + bhi _08060120 + adds r0, #2 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08060114 + movs r1, #0xfc + ands r1, r3 + ldrb r0, [r4, #0xf] + lsrs r0, r0, #1 + adds r3, r1, r0 + b _08060120 +_08060114: + movs r0, #0xfc + ands r0, r3 + ldrb r2, [r4, #0x14] + lsrs r1, r2, #1 + adds r3, r0, r1 + strb r2, [r4, #0xf] +_08060120: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r3, r0 + beq _08060132 + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_080042AC +_08060132: + adds r0, r4, #0 + adds r0, #0x82 + ldrh r1, [r0] + movs r0, #4 + ands r0, r1 + movs r1, #1 + cmp r0, #0 + beq _08060144 + movs r1, #2 +_08060144: + adds r0, r4, #0 + bl sub_080042BA + pop {r4, pc} + + thumb_func_start sub_0806014C +sub_0806014C: @ 0x0806014C + push {lr} + movs r1, #0 + strb r1, [r0, #0xe] + bl sub_08060158 + pop {pc} + + thumb_func_start sub_08060158 +sub_08060158: @ 0x08060158 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r7, r0, #0 + cmp r7, #0 + beq _0806016A + subs r0, #1 + strb r0, [r4, #0xe] + b _080601CC +_0806016A: + movs r0, #2 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806EDD8 + adds r3, r0, #0 + cmp r3, #0 + bge _08060188 + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + strb r0, [r4, #0x14] + lsls r3, r0, #2 +_08060188: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #5 + asrs r1, r3, #1 + lsls r1, r1, #1 + ldr r2, _080601D0 @ =gUnk_08109C98 + adds r1, r1, r2 + adds r0, r0, r1 + ldrb r6, [r0] + ldrb r5, [r0, #1] + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + beq _080601AC + adds r0, r3, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] +_080601AC: + movs r0, #0x7f + ands r5, r0 + adds r0, r4, #0 + adds r0, #0x5a + strb r6, [r0] + strb r5, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x5b + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x58 + strb r7, [r0] + subs r1, #2 + movs r0, #0xf0 + strb r0, [r1] +_080601CC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080601D0: .4byte gUnk_08109C98 + + thumb_func_start sub_080601D4 +sub_080601D4: @ 0x080601D4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + bl GetProgressFlag + cmp r0, #0 + bne _080601E6 + movs r1, #2 + b _080601F2 +_080601E6: + movs r0, #0x17 + bl sub_0801E7F4 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f +_080601F2: + ldr r0, _08060204 @ =gUnk_0810A354 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_08060204: .4byte gUnk_0810A354 + + thumb_func_start sub_08060208 +sub_08060208: @ 0x08060208 + push {lr} + ldrb r1, [r0, #0xb] + lsls r1, r1, #5 + ldr r2, _08060218 @ =gUnk_08109DC8 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_08060218: .4byte gUnk_08109DC8 + + thumb_func_start sub_0806021C +sub_0806021C: @ 0x0806021C + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x5b + bl sub_0807CA84 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + movs r0, #0x40 + bl sub_0807CA84 + cmp r0, #0 + beq _08060238 + movs r4, #2 +_08060238: + movs r0, #0x13 + bl sub_0807CA84 + cmp r0, #0 + beq _08060244 + movs r4, #3 +_08060244: + ldrb r1, [r5, #0xb] + lsls r1, r1, #5 + lsls r0, r4, #3 + ldr r2, _08060258 @ =gUnk_08109DC8 + adds r0, r0, r2 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_0806F1AC + pop {r4, r5, pc} + .align 2, 0 +_08060258: .4byte gUnk_08109DC8 + + thumb_func_start sub_0806025C +sub_0806025C: @ 0x0806025C + push {lr} + ldrb r1, [r0, #0xb] + lsls r1, r1, #5 + ldr r2, _0806026C @ =gUnk_08109DC8 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806026C: .4byte gUnk_08109DC8 + + thumb_func_start sub_08060270 +sub_08060270: @ 0x08060270 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _08060294 + movs r4, #1 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + bne _080602A8 + movs r4, #0 + movs r0, #0x29 + bl sub_0807CD04 + b _080602A8 +_08060294: + movs r4, #3 + movs r0, #0x76 + bl sub_0807CBD0 + cmp r0, #0 + bne _080602A8 + movs r4, #2 + movs r0, #0x76 + bl sub_0807CCB4 +_080602A8: + ldr r0, _080602B8 @ =gUnk_0810A35A + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_080602B8: .4byte gUnk_0810A35A + + thumb_func_start sub_080602BC +sub_080602BC: @ 0x080602BC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x48 + bl sub_0807CA84 + cmp r0, #0 + beq _080602D6 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + adds r2, r1, #2 + b _080602F0 +_080602D6: + ldr r0, _08060300 @ =gUnk_02002A40 + adds r2, r0, #0 + adds r2, #0xac + ldr r1, _08060304 @ =gUnk_080FD5A0 + adds r0, #0xae + ldrb r0, [r0] + adds r0, r0, r1 + ldrb r1, [r2] + movs r2, #0 + ldrb r0, [r0] + cmp r1, r0 + bhs _080602F0 + movs r2, #1 +_080602F0: + ldr r0, _08060308 @ =gUnk_0810A362 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_08060300: .4byte gUnk_02002A40 +_08060304: .4byte gUnk_080FD5A0 +_08060308: .4byte gUnk_0810A362 + + thumb_func_start sub_0806030C +sub_0806030C: @ 0x0806030C + push {lr} + ldr r0, [r1, #4] + bl sub_080542F4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08060318 +sub_08060318: @ 0x08060318 + push {r4, r5, lr} + movs r5, #2 +_0806031C: + movs r0, #8 + movs r1, #2 + movs r2, #2 + bl sub_0805EB00 + adds r4, r0, #0 + cmp r4, #0 + beq _08060336 + bl sub_080A29BC + adds r0, r4, #0 + bl sub_0805E7BC +_08060336: + subs r5, #1 + cmp r5, #0 + bge _0806031C + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08060340 +sub_08060340: @ 0x08060340 + ldr r0, _08060350 @ =gUnk_02002A40 + movs r2, #0x92 + lsls r2, r2, #3 + adds r1, r0, r2 + ldr r0, [r0, #0x50] + str r0, [r1] + bx lr + .align 2, 0 +_08060350: .4byte gUnk_02002A40 + + thumb_func_start sub_08060354 +sub_08060354: @ 0x08060354 + push {r4, lr} + ldr r0, _08060378 @ =gUnk_02002A40 + movs r2, #0x92 + lsls r2, r2, #3 + adds r1, r0, r2 + ldr r2, [r0, #0x50] + ldr r0, [r1] + subs r4, r2, r0 + movs r0, #0x3b + bl GetProgressFlag + cmp r0, #0 + bne _08060380 + cmp r4, #4 + ble _080603B0 + ldr r0, _0806037C @ =0x00008444 + b _080603B2 + .align 2, 0 +_08060378: .4byte gUnk_02002A40 +_0806037C: .4byte 0x00008444 +_08060380: + movs r0, #0x3c + bl GetProgressFlag + cmp r0, #0 + bne _08060398 + cmp r4, #9 + ble _080603B0 + ldr r0, _08060394 @ =0x00008444 + b _080603B2 + .align 2, 0 +_08060394: .4byte 0x00008444 +_08060398: + movs r0, #0x3d + bl GetProgressFlag + cmp r0, #0 + bne _080603B0 + cmp r4, #0xe + ble _080603B0 + ldr r0, _080603AC @ =0x00008444 + b _080603B2 + .align 2, 0 +_080603AC: .4byte 0x00008444 +_080603B0: + movs r0, #0 +_080603B2: + pop {r4, pc} + + thumb_func_start sub_080603B4 +sub_080603B4: @ 0x080603B4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080603F4 + ldr r1, _080603F0 @ =gUnk_0810A348 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _080603FA + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _080603FA + .align 2, 0 +_080603F0: .4byte gUnk_0810A348 +_080603F4: + adds r0, r4, #0 + bl sub_08004274 +_080603FA: + pop {r4, pc} + + thumb_func_start sub_080603FC +sub_080603FC: @ 0x080603FC + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08060412 + adds r0, r2, #0 + bl sub_08060528 + b _08060422 +_08060412: + ldr r0, _08060424 @ =gUnk_0810AA24 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_08060422: + pop {pc} + .align 2, 0 +_08060424: .4byte gUnk_0810AA24 + + thumb_func_start sub_08060428 +sub_08060428: @ 0x08060428 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x5a + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08060444 + bl sub_0804B128 + adds r1, r0, #0 + b _08060446 +_08060444: + movs r1, #0 +_08060446: + adds r0, r4, #0 + movs r2, #0 + bl sub_0806EE04 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #4 + bl sub_080042AC + pop {r4, pc} + + thumb_func_start sub_0806045C +sub_0806045C: @ 0x0806045C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080604DC + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #2 + bgt _08060488 + cmp r0, #1 + blt _08060488 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0 + bl sub_08056378 + b _080604C0 +_08060488: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + ldrb r0, [r4, #0x14] + cmp r1, r0 + beq _0806049E + strb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC +_0806049E: + adds r0, r4, #0 + movs r1, #0x18 + movs r2, #0x18 + bl sub_0806ED9C + movs r1, #0 + cmp r0, #0 + blt _080604B6 + ldrb r2, [r4, #0x14] + cmp r0, r2 + bne _080604B6 + movs r1, #1 +_080604B6: + cmp r1, #0 + bne _080604C0 + adds r0, r4, #0 + bl sub_0806EE20 +_080604C0: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + + thumb_func_start sub_080604C8 +sub_080604C8: @ 0x080604C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080604DC + movs r0, #1 + strb r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start sub_080604DC +sub_080604DC: @ 0x080604DC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1e + lsrs r4, r0, #0x1e + cmp r4, #1 + bne _08060524 + adds r0, r5, #0 + bl sub_080040A8 + cmp r0, #0 + beq _08060524 + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + ands r4, r1 + cmp r4, #0 + beq _08060524 + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r5, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08060524 + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] + adds r0, r1, #0 + movs r1, #3 + bl sub_0805E3A0 +_08060524: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08060528 +sub_08060528: @ 0x08060528 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xc] + cmp r3, #1 + beq _08060582 + cmp r3, #1 + bgt _0806053C + cmp r3, #0 + beq _08060546 + b _080605EC +_0806053C: + cmp r3, #2 + beq _080605F6 + cmp r3, #3 + beq _08060618 + b _080605EC +_08060546: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x68 + strb r3, [r0] + adds r0, #1 + strb r3, [r0] + adds r5, r4, #0 + adds r5, #0x6a + movs r0, #0 + strh r3, [r5] + adds r6, r4, #0 + adds r6, #0x6d + strb r0, [r6] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x6c + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807DD50 + b _08060634 +_08060582: + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #2 + bne _080605B8 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r0, r4, #0 + bl sub_0806F118 + ldr r1, _080605B4 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + b _080605EC + .align 2, 0 +_080605B4: .4byte gLinkEntity +_080605B8: + cmp r0, #0 + beq _080605E4 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r0, r4, #0 + bl sub_080606D8 + ldr r1, _080605E0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + b _080605EC + .align 2, 0 +_080605E0: .4byte gLinkEntity +_080605E4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_080605EC: + adds r5, r4, #0 + adds r5, #0x6a + adds r6, r4, #0 + adds r6, #0x6d + b _08060634 +_080605F6: + adds r0, r4, #0 + bl sub_080042B8 + ldr r0, _08060614 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + adds r5, r4, #0 + adds r5, #0x6a + adds r6, r4, #0 + adds r6, #0x6d + cmp r0, #0 + bne _08060634 + b _08060630 + .align 2, 0 +_08060614: .4byte gUnk_02000050 +_08060618: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F148 + adds r5, r4, #0 + adds r5, #0x6a + adds r6, r4, #0 + adds r6, #0x6d + cmp r0, #0 + beq _08060634 +_08060630: + movs r0, #1 + strb r0, [r4, #0xc] +_08060634: + adds r0, r4, #0 + bl sub_080604DC + adds r1, r5, #0 + ldrh r3, [r1] + movs r0, #0 + ldrsh r2, [r1, r0] + cmp r2, #0 + ble _08060670 + ldr r0, _08060668 @ =0x0000012B + cmp r2, r0 + ble _0806066C + movs r0, #0 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #1 + strb r0, [r6] + adds r0, r4, #0 + bl sub_080788E0 + movs r0, #0x7c + bl sub_08004488 + b _08060670 + .align 2, 0 +_08060668: .4byte 0x0000012B +_0806066C: + subs r0, r3, #1 + strh r0, [r5] +_08060670: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + ldrb r0, [r6] + cmp r0, #0 + beq _08060694 + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _08060694 + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _08060694 + strb r0, [r6] + adds r0, r4, #0 + bl sub_080606C0 +_08060694: + ldr r0, [r4, #0x34] + cmp r0, #0 + blt _080606B4 + ldr r0, _080606BC @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + cmp r1, #0 + beq _080606AE + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, r1 + bne _080606B4 +_080606AE: + adds r0, r4, #0 + bl sub_0806ED78 +_080606B4: + adds r0, r4, #0 + bl sub_0800451C + pop {r4, r5, r6, pc} + .align 2, 0 +_080606BC: .4byte gLinkEntity + + thumb_func_start sub_080606C0 +sub_080606C0: @ 0x080606C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x6c + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_080606D8 +sub_080606D8: @ 0x080606D8 + push {lr} + adds r2, r0, #0 + ldr r0, _080606F8 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _080606E8 + movs r0, #0 +_080606E8: + lsls r1, r0, #3 + ldr r0, _080606FC @ =gUnk_0810AA30 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_080606F8: .4byte gUnk_02002A40 +_080606FC: .4byte gUnk_0810AA30 + + thumb_func_start sub_08060700 +sub_08060700: @ 0x08060700 + push {r4, r5, lr} + ldr r3, _0806074C @ =gUnk_0810A918 + adds r2, r0, #0 + adds r2, #0x68 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + adds r3, r0, #0 + adds r3, #0x69 + ldrb r3, [r3] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + adds r2, r2, r3 + movs r3, #0 + ldrsb r3, [r2, r3] + lsls r3, r3, #2 + ldr r2, _08060750 @ =gUnk_0810A66C + adds r3, r3, r2 + ldr r4, _08060754 @ =gUnk_03000BF0 + movs r5, #0 + ldrsh r2, [r3, r5] + ldrh r5, [r4, #6] + adds r2, r2, r5 + movs r5, #2 + ldrsh r3, [r3, r5] + ldrh r4, [r4, #8] + adds r3, r3, r4 + bl sub_0807DEDC + ldr r2, _08060758 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, pc} + .align 2, 0 +_0806074C: .4byte gUnk_0810A918 +_08060750: .4byte gUnk_0810A66C +_08060754: .4byte gUnk_03000BF0 +_08060758: .4byte gUnk_02033280 + + thumb_func_start sub_0806075C +sub_0806075C: @ 0x0806075C + adds r2, r0, #0 + adds r2, #0x68 + movs r1, #0xb + strb r1, [r2] + adds r0, #0x69 + movs r1, #0xff + strb r1, [r0] + bx lr + + thumb_func_start sub_0806076C +sub_0806076C: @ 0x0806076C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r7, r0, #0 + mov sb, r1 + ldr r0, [r7, #0x34] + cmp r0, #0 + bge _08060790 + ldr r1, _0806078C @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + b _080608D8 + .align 2, 0 +_0806078C: .4byte gUnk_02033280 +_08060790: + adds r4, r7, #0 + adds r4, #0x69 + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + adds r5, r7, #0 + adds r5, #0x38 + movs r0, #1 + strb r0, [r5] + adds r0, r7, #0 + bl sub_080606C0 + ldr r1, _080607DC @ =gUnk_0810A918 + adds r2, r7, #0 + adds r2, #0x68 + movs r0, #0 + ldrsb r0, [r2, r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r6, [r0] + movs r0, #0 + ldrsb r0, [r4, r0] + adds r6, r6, r0 + mov sl, r4 + mov r8, r2 +_080607C2: + ldrb r0, [r6] + adds r0, #5 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #5 + bls _080607D0 + b _080608D8 +_080607D0: + lsls r0, r0, #2 + ldr r1, _080607E0 @ =_080607E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080607DC: .4byte gUnk_0810A918 +_080607E0: .4byte _080607E4 +_080607E4: @ jump table + .4byte _08060846 @ case 0 + .4byte _08060836 @ case 1 + .4byte _08060830 @ case 2 + .4byte _0806082A @ case 3 + .4byte _0806081E @ case 4 + .4byte _080607FC @ case 5 +_080607FC: + adds r6, #1 + movs r5, #0 + ldrsb r5, [r6, r5] + adds r6, #1 + bl sub_08000E50 + adds r1, r5, #0 + bl __modsi3 + adds r0, r6, r0 + ldrb r0, [r0] + movs r1, #0 + mov r2, r8 + strb r0, [r2] + mov r3, sl + strb r1, [r3] + b _080608D8 +_0806081E: + adds r1, r7, #0 + adds r1, #0x6a + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1] + b _080608CC +_0806082A: + movs r0, #1 + strb r0, [r5] + b _080608CC +_08060830: + movs r0, #2 + strb r0, [r5] + b _080608CC +_08060836: + movs r0, #0x1e + mov r4, sb + strh r0, [r4, #0x10] + ldrb r1, [r7, #0x18] + subs r0, #0x22 + ands r0, r1 + strb r0, [r7, #0x18] + b _080608CC +_08060846: + adds r6, #1 + movs r5, #0 + ldrsb r5, [r6, r5] + adds r6, #1 + bl sub_08000E50 + adds r1, r5, #0 + bl __modsi3 + str r0, [sp, #4] + movs r2, #0 + cmp r2, r5 + bhs _080608B8 + ldr r0, _080608C0 @ =gUnk_03000BF0 + mov sb, r0 +_08060864: + ldr r1, [sp, #4] + adds r0, r6, r1 + ldrb r0, [r0] + mov r3, r8 + strb r0, [r3] + movs r0, #0 + ldrsb r0, [r3, r0] + lsls r0, r0, #2 + ldr r4, _080608C4 @ =gUnk_0810A918 + adds r0, r0, r4 + ldr r0, [r0] + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #2 + ldr r0, _080608C8 @ =gUnk_0810A66C + adds r1, r1, r0 + ldrh r0, [r1] + mov r3, sb + ldrh r3, [r3, #6] + adds r0, r0, r3 + strh r0, [r7, #0x2e] + ldrh r0, [r1, #2] + mov r4, sb + ldrh r4, [r4, #8] + adds r0, r0, r4 + strh r0, [r7, #0x32] + adds r0, r7, #0 + str r2, [sp] + bl sub_080040A8 + cmp r0, #0 + beq _080608B8 + ldr r0, [sp, #4] + adds r0, #1 + adds r1, r5, #0 + bl __modsi3 + str r0, [sp, #4] + ldr r2, [sp] + adds r2, #1 + cmp r2, r5 + blo _08060864 +_080608B8: + movs r0, #0 + mov r1, sl + strb r0, [r1] + b _080608D8 + .align 2, 0 +_080608C0: .4byte gUnk_03000BF0 +_080608C4: .4byte gUnk_0810A918 +_080608C8: .4byte gUnk_0810A66C +_080608CC: + mov r2, sl + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + adds r6, #1 + b _080607C2 +_080608D8: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080608E4 +sub_080608E4: @ 0x080608E4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [r5, #0x14] + ldr r0, [r4, #0x34] + cmp r0, #0 + blt _08060970 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + ldr r6, _08060974 @ =gLinkEntity + cmp r1, #1 + bne _0806090A + adds r0, r6, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + beq _08060970 +_0806090A: + cmp r1, #2 + bne _08060918 + adds r0, r6, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + beq _08060970 +_08060918: + ldr r2, [r5, #4] + lsls r2, r2, #4 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + ldr r1, _08060978 @ =gUnk_0810AA70 + adds r0, r0, r1 + adds r2, r2, r0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + movs r7, #0x32 + ldrsh r3, [r4, r7] + movs r0, #1 + ldrsb r0, [r2, r0] + adds r3, r3, r0 + movs r7, #0x2e + ldrsh r0, [r6, r7] + subs r1, r0, r1 + movs r7, #0x32 + ldrsh r0, [r6, r7] + subs r3, r0, r3 + movs r0, #2 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + ldrb r2, [r2, #3] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r3, r3, r2 + lsls r0, r0, #1 + cmp r0, r1 + bls _08060970 + lsls r0, r2, #1 + cmp r0, r3 + bls _08060970 + movs r0, #1 + str r0, [r5, #0x14] + adds r1, r4, #0 + adds r1, #0x6a + ldrh r0, [r1] + adds r0, #2 + strh r0, [r1] +_08060970: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08060974: .4byte gLinkEntity +_08060978: .4byte gUnk_0810AA70 + + thumb_func_start sub_0806097C +sub_0806097C: @ 0x0806097C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _080609A2 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #2 + bl sub_080042AC + b _080609A8 +_080609A2: + adds r0, r2, #0 + bl sub_080042B8 +_080609A8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080609AC +sub_080609AC: @ 0x080609AC + push {r4, lr} + movs r0, #0x1c + bl GetProgressFlag + cmp r0, #0 + beq _080609E0 + movs r0, #0x2e + movs r1, #0 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _080609E0 + ldr r0, _080609E4 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_0806EDC4 + strb r0, [r4, #0x14] +_080609E0: + pop {r4, pc} + .align 2, 0 +_080609E4: .4byte gLinkEntity + + thumb_func_start sub_080609E8 +sub_080609E8: @ 0x080609E8 + push {lr} + ldr r2, _080609FC @ =gUnk_0810AC1C + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080609FC: .4byte gUnk_0810AC1C + + thumb_func_start sub_08060A00 +sub_08060A00: @ 0x08060A00 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08060AD0 @ =gUnk_03003F80 + ldrb r1, [r0, #2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08060A44 + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _08060A52 + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _08060A44 + movs r0, #4 + orrs r0, r1 + strb r0, [r2] + ldr r4, [r5, #0x64] + ldr r3, _08060AD4 @ =gLinkEntity + ldrh r2, [r3, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + adds r0, #8 + strh r0, [r4, #0xa] + ldr r2, [r5, #0x64] + ldrh r0, [r3, #0x32] + ands r1, r0 + adds r1, #8 + strh r1, [r2, #0xc] +_08060A44: + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _08060A52 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _08060A62 +_08060A52: + ldr r0, _08060AD8 @ =gUnk_0810AC2C + ldrb r1, [r5, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r5, #0 + bl _call_via_r1 +_08060A62: + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _08060A76 + ldr r1, [r5, #0x64] + ldr r2, _08060AD4 @ =gLinkEntity + ldrh r0, [r2, #0x2e] + strh r0, [r1, #2] + ldr r1, [r5, #0x64] + ldrh r0, [r2, #0x32] + strh r0, [r1, #4] +_08060A76: + adds r2, r5, #0 + adds r2, #0x74 + ldr r4, _08060ADC @ =gUnk_03000BF0 + ldrb r1, [r4, #5] + ldrh r0, [r2] + cmp r0, r1 + beq _08060ACE + strh r1, [r2] + ldr r0, _08060AD4 @ =gLinkEntity + adds r1, r5, #0 + bl sub_0806FA24 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + movs r0, #0x90 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + ldrb r1, [r4, #0x10] + lsls r0, r1, #1 + strb r0, [r5, #0x14] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x19 + adds r0, r5, #0 + bl sub_080042AC + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x80 + adds r1, r5, #0 + adds r1, #0x59 + strb r0, [r1] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] +_08060ACE: + pop {r4, r5, pc} + .align 2, 0 +_08060AD0: .4byte gUnk_03003F80 +_08060AD4: .4byte gLinkEntity +_08060AD8: .4byte gUnk_0810AC2C +_08060ADC: .4byte gUnk_03000BF0 + + thumb_func_start sub_08060AE0 +sub_08060AE0: @ 0x08060AE0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x14 + bl sub_0801D8E0 + adds r1, r0, #0 + cmp r1, #0 + beq _08060B54 + str r1, [r4, #0x64] + movs r0, #0x20 + strb r0, [r1, #1] + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x14] + movs r2, #3 + adds r0, r2, #0 + ands r0, r1 + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + subs r1, #1 + movs r0, #0x49 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3b + strb r2, [r0] + ldr r0, _08060B58 @ =gUnk_080FD150 + str r0, [r4, #0x48] + ldrb r1, [r4, #0x17] + movs r0, #0xfe + ands r0, r1 + strb r0, [r4, #0x17] + adds r1, r4, #0 + adds r1, #0x6c + movs r0, #0xff + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08060E70 + movs r0, #5 + movs r1, #2 + movs r2, #0 + bl sub_0806ED50 + cmp r0, #0 + beq _08060B54 + str r4, [r0, #0x50] + str r0, [r4, #0x78] +_08060B54: + pop {r4, pc} + .align 2, 0 +_08060B58: .4byte gUnk_080FD150 + + thumb_func_start sub_08060B5C +sub_08060B5C: @ 0x08060B5C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08061230 + cmp r0, #0 + bne _08060B9E + adds r0, r4, #0 + bl sub_08060F80 + adds r5, r0, #0 + cmp r5, #0 + bne _08060B98 + ldr r1, _08060B94 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + ldrb r1, [r4, #0x14] + lsls r1, r1, #2 + subs r0, r0, r1 + adds r0, #4 + movs r1, #0x1f + ands r0, r1 + cmp r0, #8 + bhi _08060B98 + movs r0, #2 + strb r0, [r4, #0xc] + strb r5, [r4, #0xf] + b _08060B9E + .align 2, 0 +_08060B94: .4byte gLinkEntity +_08060B98: + adds r0, r4, #0 + bl sub_08060EDC +_08060B9E: + pop {r4, r5, pc} + + thumb_func_start sub_08060BA0 +sub_08060BA0: @ 0x08060BA0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08061230 + cmp r0, #0 + beq _08060BAE + b _08060D74 +_08060BAE: + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08060C66 + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08060BF6 + movs r0, #0xf0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldrh r1, [r2, #0xe] + ldrh r2, [r2, #0x10] + adds r0, r4, #0 + movs r3, #0xc + bl sub_08061120 + adds r0, r4, #0 + bl sub_08061170 + ldr r0, [r4, #0x64] + ldrh r1, [r0, #0xe] + ldrh r2, [r0, #0x10] + adds r0, r4, #0 + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + bne _08060BEE + b _08060D54 +_08060BEE: + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xf7 + b _08060D36 +_08060BF6: + ldrh r1, [r2, #0xa] + ldrh r2, [r2, #0xc] + adds r0, r4, #0 + bl sub_08060FD0 + cmp r0, #0 + beq _08060C56 + ldr r0, [r4, #0x64] + ldrh r1, [r0, #0xa] + ldrh r2, [r0, #0xc] + adds r0, r4, #0 + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _08060C38 + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r0, [r5, #0x15] + strb r0, [r4, #0x15] + movs r0, #0xb0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #8 + bl sub_08060E70 + b _08060D54 +_08060C38: + movs r0, #0xf0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #0xc + bl sub_08061120 + adds r0, r4, #0 + bl sub_08061170 + b _08060D54 +_08060C56: + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + bl sub_08061464 + b _08060D54 +_08060C66: + ldr r5, _08060C98 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + bl sub_08060FD0 + cmp r0, #0 + beq _08060C9C + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + bl sub_08061090 + adds r0, r4, #0 + bl sub_08061170 + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xf5 + b _08060D36 + .align 2, 0 +_08060C98: .4byte gLinkEntity +_08060C9C: + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08060CDA + movs r0, #0xf0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldrh r1, [r2, #0xe] + ldrh r2, [r2, #0x10] + adds r0, r4, #0 + movs r3, #0xc + bl sub_08061120 + adds r0, r4, #0 + bl sub_08061170 + ldr r0, [r4, #0x64] + ldrh r1, [r0, #0xe] + ldrh r2, [r0, #0x10] + adds r0, r4, #0 + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _08060D54 + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xf7 + b _08060D36 +_08060CDA: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08060CF4 + movs r0, #2 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r4, #0x64] + ldrh r0, [r1, #2] + strh r0, [r1, #6] + ldr r1, [r4, #0x64] + ldrh r0, [r1, #4] + strh r0, [r1, #8] +_08060CF4: + ldr r0, [r4, #0x64] + ldrh r1, [r0, #6] + ldrh r2, [r0, #8] + adds r0, r4, #0 + bl sub_08060FD0 + cmp r0, #0 + beq _08060D3C + movs r0, #0xf0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldr r0, [r4, #0x64] + ldrh r1, [r0, #6] + ldrh r2, [r0, #8] + adds r0, r4, #0 + movs r3, #0xc + bl sub_08061120 + adds r0, r4, #0 + bl sub_08061170 + ldr r0, [r4, #0x64] + ldrh r1, [r0, #6] + ldrh r2, [r0, #8] + adds r0, r4, #0 + movs r3, #4 + bl sub_0806FCB8 + cmp r0, #0 + beq _08060D54 + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xfd +_08060D36: + ands r0, r1 + strb r0, [r2] + b _08060D54 +_08060D3C: + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xfd + ands r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + bl sub_08061464 +_08060D54: + adds r0, r4, #0 + bl sub_08060F80 + cmp r0, #0 + beq _08060D74 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0 + bl sub_08060E70 +_08060D74: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08060D78 +sub_08060D78: @ 0x08060D78 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08061358 + adds r0, r4, #0 + bl sub_08060F80 + cmp r0, #0 + beq _08060DCE + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #0x20 + cmp r0, #0xf + bhi _08060DC2 + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _08060DB2 + adds r1, r4, #0 + adds r1, #0x59 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080042B8 +_08060DB2: + ldrb r1, [r5] + movs r0, #0x18 + ands r0, r1 + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x6c + movs r0, #0xff + strb r0, [r1] +_08060DC2: + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08060E70 +_08060DCE: + pop {r4, r5, pc} + + thumb_func_start sub_08060DD0 +sub_08060DD0: @ 0x08060DD0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08060DF2 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08060E70 +_08060DF2: + pop {r4, pc} + + thumb_func_start sub_08060DF4 +sub_08060DF4: @ 0x08060DF4 + push {lr} + bl sub_08061170 + pop {pc} + + thumb_func_start sub_08060DFC +sub_08060DFC: @ 0x08060DFC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08060E94 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08060E32 + movs r0, #7 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0x1c + bl sub_08060E70 +_08060E32: + pop {r4, pc} + + thumb_func_start sub_08060E34 +sub_08060E34: @ 0x08060E34 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08060E68 + movs r0, #2 + strb r0, [r4, #0xc] + ldr r1, _08060E6C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #8 + bl sub_08060E70 +_08060E68: + pop {r4, pc} + .align 2, 0 +_08060E6C: .4byte gLinkEntity + + thumb_func_start sub_08060E70 +sub_08060E70: @ 0x08060E70 + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + ldrb r0, [r2, #0x14] + lsrs r0, r0, #1 + adds r1, r3, r0 + adds r0, r2, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _08060E92 + adds r0, r2, #0 + adds r0, #0x6c + strb r3, [r0] + adds r0, r2, #0 + bl sub_080042AC +_08060E92: + pop {pc} + + thumb_func_start sub_08060E94 +sub_08060E94: @ 0x08060E94 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x58] + ldr r1, _08060ECC @ =0x0080FF00 + ands r0, r1 + ldr r1, _08060ED0 @ =0x00800100 + cmp r0, r1 + bne _08060ED4 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #3 + bhi _08060ED4 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_080042AC + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x80 + adds r1, r4, #0 + adds r1, #0x59 + strb r0, [r1] + b _08060EDA + .align 2, 0 +_08060ECC: .4byte 0x0080FF00 +_08060ED0: .4byte 0x00800100 +_08060ED4: + adds r0, r4, #0 + bl sub_080042B8 +_08060EDA: + pop {r4, pc} + + thumb_func_start sub_08060EDC +sub_08060EDC: @ 0x08060EDC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #0x20 + cmp r0, #0xf + bhi _08060F00 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08060F00 + adds r0, r4, #0 + bl sub_080042B8 + b _08060F7C +_08060F00: + ldr r1, _08060F30 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + ldrb r2, [r4, #0x14] + lsls r1, r2, #2 + subs r1, r0, r1 + adds r0, r1, #3 + movs r3, #0x1f + ands r0, r3 + cmp r0, #6 + ble _08060F4A + ands r1, r3 + cmp r1, #0xf + bgt _08060F34 + adds r1, r2, #0 + adds r1, #0x20 + adds r0, r4, #0 + bl sub_080042AC + ldrb r0, [r4, #0x14] + adds r0, #1 + b _08060F42 + .align 2, 0 +_08060F30: .4byte gLinkEntity +_08060F34: + adds r1, r2, #0 + adds r1, #0x28 + adds r0, r4, #0 + bl sub_080042AC + ldrb r0, [r4, #0x14] + subs r0, #1 +_08060F42: + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0x14] + b _08060F7C +_08060F4A: + movs r0, #1 + ands r2, r0 + cmp r2, #0 + bne _08060F7C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08060F76 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #0x20 + cmp r0, #0xf + bhi _08060F76 + adds r0, r4, #0 + movs r1, #0 + bl sub_08060E70 + b _08060F7C +_08060F76: + adds r0, r4, #0 + bl sub_08060E94 +_08060F7C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08060F80 +sub_08060F80: @ 0x08060F80 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08060FC8 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r3, #0x32 + ldrsh r2, [r5, r3] + adds r0, r4, #0 + bl sub_08060FD0 + cmp r0, #0 + beq _08060FC2 + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r5, r3] + movs r3, #0x32 + ldrsh r2, [r4, r3] + subs r1, r1, r2 + ldr r2, [r4, #0x64] + ldrb r2, [r2, #1] + bl sub_0806FCD0 + cmp r0, #0 + bne _08060FCC +_08060FC2: + movs r0, #0 + b _08060FCE + .align 2, 0 +_08060FC8: .4byte gLinkEntity +_08060FCC: + movs r0, #1 +_08060FCE: + pop {r4, r5, pc} + + thumb_func_start sub_08060FD0 +sub_08060FD0: @ 0x08060FD0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r4, r0, #0 + mov sb, r1 + mov r8, r2 + movs r0, #0x2e + ldrsh r7, [r4, r0] + movs r1, #0x32 + ldrsh r6, [r4, r1] + mov r2, sb + subs r0, r2, r7 + mov r5, r8 + subs r1, r5, r6 + bl sub_080045DA + lsls r7, r7, #8 + lsls r6, r6, #8 + ldr r3, _08061058 @ =gUnk_080C9160 + lsls r1, r0, #1 + adds r1, r1, r3 + movs r5, #0 + ldrsh r2, [r1, r5] + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #1 + str r1, [sp] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + str r0, [sp, #4] + adds r4, #0x38 + ldrb r0, [r4] + ldr r5, _0806105C @ =gUnk_0200D654 + mov sl, r5 + cmp r0, #2 + beq _0806102E + ldr r0, _08061060 @ =gUnk_02027EB4 + mov sl, r0 +_0806102E: + adds r1, r7, #0 + cmp r7, #0 + bge _08061036 + adds r1, #0xff +_08061036: + asrs r5, r1, #8 + adds r2, r6, #0 + cmp r6, #0 + bge _08061040 + adds r2, #0xff +_08061040: + asrs r4, r2, #8 + mov r0, sl + adds r1, r5, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061064 + movs r0, #0 + b _08061084 + .align 2, 0 +_08061058: .4byte gUnk_080C9160 +_0806105C: .4byte gUnk_0200D654 +_08061060: .4byte gUnk_02027EB4 +_08061064: + mov r1, sb + subs r0, r1, r5 + adds r0, #6 + cmp r0, #0xc + bhi _08061078 + mov r2, r8 + subs r0, r2, r4 + adds r0, #6 + cmp r0, #0xc + bls _08061082 +_08061078: + ldr r5, [sp] + adds r7, r7, r5 + ldr r0, [sp, #4] + subs r6, r6, r0 + b _0806102E +_08061082: + movs r0, #1 +_08061084: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08061090 +sub_08061090: @ 0x08061090 + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r1, _080610C8 @ =gLinkEntity + movs r0, #0x2e + ldrsh r2, [r1, r0] + movs r4, #0x2e + ldrsh r0, [r3, r4] + subs r2, r2, r0 + movs r4, #0x32 + ldrsh r0, [r1, r4] + movs r4, #0x32 + ldrsh r1, [r3, r4] + subs r0, r0, r1 + adds r1, r2, #0 + muls r1, r2, r1 + adds r2, r0, #0 + muls r2, r0, r2 + adds r0, r2, #0 + adds r1, r1, r0 + ldr r0, _080610CC @ =0x000008FF + cmp r1, r0 + bgt _080610D0 + movs r0, #0x90 + lsls r0, r0, #1 + b _080610F0 + .align 2, 0 +_080610C8: .4byte gLinkEntity +_080610CC: .4byte 0x000008FF +_080610D0: + ldr r0, _080610E4 @ =0x000018FF + cmp r1, r0 + bgt _080610EC + ldr r4, _080610E8 @ =0xFFFFF700 + adds r0, r1, r4 + asrs r0, r0, #4 + movs r1, #0x90 + lsls r1, r1, #1 + adds r0, r0, r1 + b _080610F0 + .align 2, 0 +_080610E4: .4byte 0x000018FF +_080610E8: .4byte 0xFFFFF700 +_080610EC: + movs r0, #0x88 + lsls r0, r0, #2 +_080610F0: + strh r0, [r3, #0x24] + movs r2, #0x24 + ldrsh r1, [r3, r2] + movs r0, #0x90 + lsls r0, r0, #1 + cmp r1, r0 + bne _08061102 + movs r4, #4 + b _0806110C +_08061102: + ldr r0, _0806111C @ =0x0000015F + movs r4, #0xc + cmp r1, r0 + bgt _0806110C + movs r4, #8 +_0806110C: + adds r0, r3, #0 + adds r1, r5, #0 + adds r2, r6, #0 + adds r3, r4, #0 + bl sub_08061120 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806111C: .4byte 0x0000015F + + thumb_func_start sub_08061120 +sub_08061120: @ 0x08061120 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + adds r7, r3, #0 + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r2, #0x32 + ldrsh r1, [r6, r2] + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080045D4 + strb r0, [r6, #0x15] + adds r0, r6, #0 + adds r0, #0x6c + ldrb r0, [r0] + cmp r7, r0 + bne _08061158 + ldrb r0, [r6, #0x15] + ldrb r1, [r6, #0x14] + lsls r1, r1, #2 + subs r0, r0, r1 + adds r0, #5 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xa + ble _0806116C +_08061158: + ldrb r0, [r6, #0x15] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + asrs r0, r0, #2 + strb r0, [r6, #0x14] + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08060E70 +_0806116C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08061170 +sub_08061170: @ 0x08061170 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080AF1EC + cmp r0, #0 + bne _080611CA + adds r0, r4, #0 + bl sub_080611D4 + adds r5, r0, #0 + cmp r5, #0xff + beq _080611C6 + movs r0, #6 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08079FD4 + lsls r0, r0, #4 + subs r0, #4 + lsls r0, r0, #0xc + str r0, [r4, #0x20] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r4, #0x24] + strb r5, [r4, #0x15] + lsrs r1, r5, #2 + strb r1, [r4, #0x14] + lsrs r0, r0, #0x10 + cmp r0, #0 + beq _080611BE + adds r0, r4, #0 + movs r1, #0x14 + bl sub_08060E70 + b _080611C6 +_080611BE: + adds r0, r4, #0 + movs r1, #0x18 + bl sub_08060E70 +_080611C6: + movs r0, #0 + b _080611D2 +_080611CA: + adds r0, r4, #0 + bl sub_08016AD2 + movs r0, #1 +_080611D2: + pop {r4, r5, pc} + + thumb_func_start sub_080611D4 +sub_080611D4: @ 0x080611D4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x14] + movs r0, #6 + ands r0, r1 + ldr r1, _08061218 @ =gUnk_0810AC4C + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + movs r2, #1 + ldrsb r2, [r0, r2] + adds r0, r4, #0 + bl sub_080002B4 + adds r3, r0, #0 + ldr r2, _0806121C @ =gUnk_0810AC54 +_080611F4: + ldrb r0, [r2] + cmp r0, r3 + bne _08061220 + ldrb r0, [r2, #1] + ldrb r1, [r4, #0x14] + lsrs r0, r0, #2 + cmp r1, r0 + bne _08061220 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bls _0806122A + ldrb r0, [r2, #1] + b _0806122C + .align 2, 0 +_08061218: .4byte gUnk_0810AC4C +_0806121C: .4byte gUnk_0810AC54 +_08061220: + adds r2, #2 + ldrb r0, [r2] + cmp r0, #0 + bne _080611F4 + strb r0, [r4, #0xf] +_0806122A: + movs r0, #0xff +_0806122C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08061230 +sub_08061230: @ 0x08061230 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08061302 + adds r1, r4, #0 + adds r1, #0x41 + ldrb r3, [r1] + movs r0, #0x80 + ands r0, r3 + adds r2, r1, #0 + cmp r0, #0 + beq _0806133A + movs r0, #0x7f + ands r0, r3 + cmp r0, #0x1f + bhi _080612E8 + lsls r0, r0, #2 + ldr r1, _08061264 @ =_08061268 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08061264: .4byte _08061268 +_08061268: @ jump table + .4byte _0806133A @ case 0 + .4byte _0806133A @ case 1 + .4byte _0806133A @ case 2 + .4byte _0806133A @ case 3 + .4byte _080612E8 @ case 4 + .4byte _080612E8 @ case 5 + .4byte _080612E8 @ case 6 + .4byte _080612E8 @ case 7 + .4byte _080612E8 @ case 8 + .4byte _080612E8 @ case 9 + .4byte _080612E8 @ case 10 + .4byte _080612E8 @ case 11 + .4byte _080612E8 @ case 12 + .4byte _080612E8 @ case 13 + .4byte _080612E8 @ case 14 + .4byte _0806133A @ case 15 + .4byte _080612E8 @ case 16 + .4byte _080612E8 @ case 17 + .4byte _080612E8 @ case 18 + .4byte _0806133A @ case 19 + .4byte _080612E8 @ case 20 + .4byte _080612E8 @ case 21 + .4byte _080612E8 @ case 22 + .4byte _080612E8 @ case 23 + .4byte _080612E8 @ case 24 + .4byte _080612E8 @ case 25 + .4byte _080612E8 @ case 26 + .4byte _0806133A @ case 27 + .4byte _080612E8 @ case 28 + .4byte _080612E8 @ case 29 + .4byte _0806133A @ case 30 + .4byte _0806133A @ case 31 +_080612E8: + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #1 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r1, #0x40 + adds r0, r4, #0 + bl sub_080042AC + movs r0, #1 + b _08061356 +_08061302: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0806131A + movs r0, #1 + b _08061356 +_0806131A: + ldr r2, [r4, #0x64] + ldrb r1, [r2] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x6c + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + ldrb r0, [r0] + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080042AC + adds r2, r4, #0 + adds r2, #0x41 +_0806133A: + ldrb r0, [r2] + movs r1, #0x7f + ands r1, r0 + strb r1, [r2] + adds r1, r4, #0 + adds r1, #0x3d + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08061354 + adds r0, r2, #1 + strb r0, [r1] +_08061354: + movs r0, #0 +_08061356: + pop {r4, pc} + + thumb_func_start sub_08061358 +sub_08061358: @ 0x08061358 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xd] + cmp r5, #1 + beq _0806139C + cmp r5, #1 + bgt _0806136C + cmp r5, #0 + beq _08061376 + b _08061460 +_0806136C: + cmp r5, #2 + beq _080613D0 + cmp r5, #3 + beq _0806141E + b _08061460 +_08061376: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08061460 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xf + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0 + bl sub_08060E70 + b _08061460 +_0806139C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08061460 + bl sub_08000E50 + adds r6, r0, #0 + ands r5, r6 + cmp r5, #0 + beq _080613FA + movs r0, #2 + strb r0, [r4, #0xd] + ldr r3, _080613CC @ =gUnk_0810AC5D + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + lsrs r1, r6, #4 + movs r2, #3 + ands r1, r2 + adds r0, r0, r1 + adds r0, r0, r3 + b _0806143A + .align 2, 0 +_080613CC: .4byte gUnk_0810AC5D +_080613D0: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08061460 + movs r0, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #1 + ands r1, r0 + cmp r1, #0 + beq _08061412 +_080613FA: + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x18 + ands r6, r0 + adds r0, r6, #0 + adds r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #4 + bl sub_08060E70 + b _08061460 +_08061412: + strb r1, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08060E70 + b _08061460 +_0806141E: + adds r0, r4, #0 + bl sub_08061170 + cmp r0, #0 + bne _08061448 + movs r0, #2 + strb r0, [r4, #0xd] + ldr r2, _08061444 @ =gUnk_0810AC5D + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + lsrs r1, r6, #4 + ands r1, r5 + adds r0, r0, r1 + adds r0, r0, r2 +_0806143A: + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC + b _08061460 + .align 2, 0 +_08061444: .4byte gUnk_0810AC5D +_08061448: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08061460 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08060E70 +_08061460: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08061464 +sub_08061464: @ 0x08061464 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + mov r8, r1 + adds r5, r2, #0 + movs r0, #0x2e + ldrsh r7, [r4, r0] + movs r1, #0x32 + ldrsh r6, [r4, r1] + adds r0, r7, #0 + adds r1, r6, #0 + mov r2, r8 + adds r3, r5, #0 + bl sub_080045D4 + adds r0, #2 + movs r1, #0x1c + ands r0, r1 + lsrs r0, r0, #2 + cmp r0, #7 + bls _08061494 + b _08061612 +_08061494: + lsls r0, r0, #2 + ldr r1, _080614A0 @ =_080614A4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080614A0: .4byte _080614A4 +_080614A4: @ jump table + .4byte _080614C4 @ case 0 + .4byte _080614E2 @ case 1 + .4byte _08061514 @ case 2 + .4byte _08061544 @ case 3 + .4byte _08061566 @ case 4 + .4byte _08061584 @ case 5 + .4byte _080615B4 @ case 6 + .4byte _080615E4 @ case 7 +_080614C4: + adds r0, r4, #0 + adds r0, #0x6e + strh r5, [r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, r8 + ble _08061504 + adds r2, r6, #0 + subs r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061630 + b _08061612 +_080614E2: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061720 + cmp r0, #0 + beq _08061500 + b _08061612 +_08061500: + mov r0, sb + strh r5, [r0] +_08061504: + adds r2, r6, #0 + subs r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_080616A8 + b _08061612 +_08061514: + adds r0, r4, #0 + adds r0, #0x6e + mov r1, r8 + strh r1, [r0] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, r5 + ble _08061534 + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061720 + b _08061612 +_08061534: + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061798 + b _08061612 +_08061544: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + adds r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061798 + cmp r0, #0 + bne _08061612 + mov r0, sb + strh r5, [r0] + b _08061574 +_08061566: + adds r0, r4, #0 + adds r0, #0x6e + strh r5, [r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, r8 + bgt _080615A4 +_08061574: + adds r2, r6, #0 + adds r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061888 + b _08061612 +_08061584: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061978 + cmp r0, #0 + bne _08061612 + mov r0, sb + strh r5, [r0] +_080615A4: + adds r2, r6, #0 + adds r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061810 + b _08061612 +_080615B4: + adds r0, r4, #0 + adds r0, #0x6e + mov r1, r8 + strh r1, [r0] + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, r5 + ble _080615D4 + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061900 + b _08061612 +_080615D4: + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061978 + b _08061612 +_080615E4: + movs r0, #0x6e + adds r0, r0, r4 + mov sb, r0 + mov r1, r8 + strh r1, [r0] + adds r1, r7, #0 + subs r1, #8 + adds r0, r4, #0 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08061900 + cmp r0, #0 + bne _08061612 + mov r0, sb + strh r5, [r0] + adds r2, r6, #0 + subs r2, #8 + adds r0, r4, #0 + adds r1, r7, #0 + mov r3, r8 + bl sub_08061630 +_08061612: + ldr r0, [r4, #0x64] + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08061628 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_08061628: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08061630 +sub_08061630: @ 0x08061630 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _08061650 @ =gUnk_02027EB4 + cmp r0, #2 + bne _0806168C + ldr r7, _08061654 @ =gUnk_0200D654 + b _0806168C + .align 2, 0 +_08061650: .4byte gUnk_02027EB4 +_08061654: .4byte gUnk_0200D654 +_08061658: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + mov r3, sb + bl sub_08061A74 + cmp r0, #0 + beq _0806168A + ldr r0, [r5, #0x64] + strh r6, [r0, #0xe] + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + blt _0806168A + movs r0, #1 + b _0806169E +_0806168A: + subs r4, #8 +_0806168C: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061658 + movs r0, #0 +_0806169E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080616A8 +sub_080616A8: @ 0x080616A8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _080616C8 @ =gUnk_02027EB4 + cmp r0, #2 + bne _08061704 + ldr r7, _080616CC @ =gUnk_0200D654 + b _08061704 + .align 2, 0 +_080616C8: .4byte gUnk_02027EB4 +_080616CC: .4byte gUnk_0200D654 +_080616D0: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + mov r3, sb + bl sub_08061A1C + cmp r0, #0 + beq _08061702 + ldr r0, [r5, #0x64] + strh r6, [r0, #0xe] + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + blt _08061702 + movs r0, #1 + b _08061716 +_08061702: + subs r4, #8 +_08061704: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _080616D0 + movs r0, #0 +_08061716: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08061720 +sub_08061720: @ 0x08061720 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _08061740 @ =gUnk_02027EB4 + cmp r0, #2 + bne _0806177C + ldr r7, _08061744 @ =gUnk_0200D654 + b _0806177C + .align 2, 0 +_08061740: .4byte gUnk_02027EB4 +_08061744: .4byte gUnk_0200D654 +_08061748: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + mov r3, sb + bl sub_080619F0 + cmp r0, #0 + beq _0806177A + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0xe] + ldr r0, [r5, #0x64] + strh r6, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + bgt _0806177A + movs r0, #1 + b _0806178E +_0806177A: + adds r4, #8 +_0806177C: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061748 + movs r0, #0 +_0806178E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08061798 +sub_08061798: @ 0x08061798 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _080617B8 @ =gUnk_02027EB4 + cmp r0, #2 + bne _080617F4 + ldr r7, _080617BC @ =gUnk_0200D654 + b _080617F4 + .align 2, 0 +_080617B8: .4byte gUnk_02027EB4 +_080617BC: .4byte gUnk_0200D654 +_080617C0: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + mov r3, sb + bl sub_08061A48 + cmp r0, #0 + beq _080617F2 + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0xe] + ldr r0, [r5, #0x64] + strh r6, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + bgt _080617F2 + movs r0, #1 + b _08061806 +_080617F2: + adds r4, #8 +_080617F4: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _080617C0 + movs r0, #0 +_08061806: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08061810 +sub_08061810: @ 0x08061810 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _08061830 @ =gUnk_02027EB4 + cmp r0, #2 + bne _0806186C + ldr r7, _08061834 @ =gUnk_0200D654 + b _0806186C + .align 2, 0 +_08061830: .4byte gUnk_02027EB4 +_08061834: .4byte gUnk_0200D654 +_08061838: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + mov r3, sb + bl sub_08061A74 + cmp r0, #0 + beq _0806186A + ldr r0, [r5, #0x64] + strh r6, [r0, #0xe] + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + bgt _0806186A + movs r0, #1 + b _0806187E +_0806186A: + adds r4, #8 +_0806186C: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061838 + movs r0, #0 +_0806187E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08061888 +sub_08061888: @ 0x08061888 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _080618A8 @ =gUnk_02027EB4 + cmp r0, #2 + bne _080618E4 + ldr r7, _080618AC @ =gUnk_0200D654 + b _080618E4 + .align 2, 0 +_080618A8: .4byte gUnk_02027EB4 +_080618AC: .4byte gUnk_0200D654 +_080618B0: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + mov r3, sb + bl sub_08061A1C + cmp r0, #0 + beq _080618E2 + ldr r0, [r5, #0x64] + strh r6, [r0, #0xe] + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + bgt _080618E2 + movs r0, #1 + b _080618F6 +_080618E2: + adds r4, #8 +_080618E4: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _080618B0 + movs r0, #0 +_080618F6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08061900 +sub_08061900: @ 0x08061900 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _08061920 @ =gUnk_02027EB4 + cmp r0, #2 + bne _0806195C + ldr r7, _08061924 @ =gUnk_0200D654 + b _0806195C + .align 2, 0 +_08061920: .4byte gUnk_02027EB4 +_08061924: .4byte gUnk_0200D654 +_08061928: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + mov r3, sb + bl sub_080619F0 + cmp r0, #0 + beq _0806195A + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0xe] + ldr r0, [r5, #0x64] + strh r6, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + blt _0806195A + movs r0, #1 + b _0806196E +_0806195A: + subs r4, #8 +_0806195C: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061928 + movs r0, #0 +_0806196E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08061978 +sub_08061978: @ 0x08061978 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + mov sb, r3 + mov r8, r4 + adds r0, #0x38 + ldrb r0, [r0] + ldr r7, _08061998 @ =gUnk_02027EB4 + cmp r0, #2 + bne _080619D4 + ldr r7, _0806199C @ =gUnk_0200D654 + b _080619D4 + .align 2, 0 +_08061998: .4byte gUnk_02027EB4 +_0806199C: .4byte gUnk_0200D654 +_080619A0: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + mov r3, sb + bl sub_08061A48 + cmp r0, #0 + beq _080619D2 + ldr r0, [r5, #0x64] + mov r1, r8 + strh r1, [r0, #0xe] + ldr r0, [r5, #0x64] + strh r6, [r0, #0x10] + ldr r2, [r5, #0x64] + ldrb r1, [r2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r0, r4 + blt _080619D2 + movs r0, #1 + b _080619E6 +_080619D2: + subs r4, #8 +_080619D4: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _080619A0 + movs r0, #0 +_080619E6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080619F0 +sub_080619F0: @ 0x080619F0 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + adds r5, r3, #0 + cmp r5, r4 + bgt _08061A18 +_080619FE: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061A12 + movs r0, #0 + b _08061A1A +_08061A12: + subs r4, #8 + cmp r5, r4 + ble _080619FE +_08061A18: + movs r0, #1 +_08061A1A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08061A1C +sub_08061A1C: @ 0x08061A1C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + adds r5, r3, #0 + cmp r5, r4 + blt _08061A44 +_08061A2A: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061A3E + movs r0, #0 + b _08061A46 +_08061A3E: + adds r4, #8 + cmp r5, r4 + bge _08061A2A +_08061A44: + movs r0, #1 +_08061A46: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08061A48 +sub_08061A48: @ 0x08061A48 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + adds r4, r2, #0 + adds r5, r3, #0 + cmp r5, r4 + blt _08061A70 +_08061A56: + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061A6A + movs r0, #0 + b _08061A72 +_08061A6A: + adds r4, #8 + cmp r5, r4 + bge _08061A56 +_08061A70: + movs r0, #1 +_08061A72: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08061A74 +sub_08061A74: @ 0x08061A74 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + adds r5, r3, #0 + cmp r5, r4 + bgt _08061A9C +_08061A82: + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r6, #0 + movs r3, #6 + bl sub_080AE4CC + cmp r0, #0 + beq _08061A96 + movs r0, #0 + b _08061A9E +_08061A96: + subs r4, #8 + cmp r5, r4 + ble _08061A82 +_08061A9C: + movs r0, #1 +_08061A9E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08061AA0 +sub_08061AA0: @ 0x08061AA0 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_08061AA8 +sub_08061AA8: @ 0x08061AA8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08061AC8 @ =gUnk_0810AC70 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + pop {r4, pc} + .align 2, 0 +_08061AC8: .4byte gUnk_0810AC70 + + thumb_func_start sub_08061ACC +sub_08061ACC: @ 0x08061ACC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0x20 + movs r2, #0 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0xd] + strb r2, [r4, #0xe] + ldrb r1, [r4, #0x17] + movs r0, #0xfe + ands r0, r1 + strb r0, [r4, #0x17] + adds r0, r4, #0 + bl sub_08078778 + adds r0, r4, #0 + bl sub_08061AFC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08061AFC +sub_08061AFC: @ 0x08061AFC + push {lr} + adds r1, r0, #0 + movs r2, #0 + ldrb r0, [r1, #0xd] + cmp r0, #0 + beq _08061B12 + strb r2, [r1, #0xd] + ldr r0, _08061B14 @ =gUnk_0810B660 + ldr r0, [r0] + str r0, [r1, #0x68] + strb r2, [r1, #0xe] +_08061B12: + pop {pc} + .align 2, 0 +_08061B14: .4byte gUnk_0810B660 + + thumb_func_start sub_08061B18 +sub_08061B18: @ 0x08061B18 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08061B54 + cmp r0, #1 + bne _08061B54 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08061AFC + ldr r2, [r4, #0x68] + ldrb r0, [r4, #0xe] + adds r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r2, r2, r0 + ldrh r0, [r2, #2] + cmp r0, #0 + bne _08061B4C + strb r0, [r4, #0xe] +_08061B4C: + ldrh r0, [r2] + adds r1, r4, #0 + bl sub_08056398 +_08061B54: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08061B58 +sub_08061B58: @ 0x08061B58 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08061B6E + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC +_08061B6E: + ldr r0, _08061B88 @ =gUnk_030010A0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #2 + bne _08061B7E + adds r0, r4, #0 + bl sub_080042B8 +_08061B7E: + adds r0, r4, #0 + bl sub_0806FD3C + pop {r4, pc} + .align 2, 0 +_08061B88: .4byte gUnk_030010A0 + + thumb_func_start sub_08061B8C +sub_08061B8C: @ 0x08061B8C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08061BB0 + ldr r0, _08061BAC @ =gUnk_0810B77C + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08061BC0 + .align 2, 0 +_08061BAC: .4byte gUnk_0810B77C +_08061BB0: + ldr r0, _08061BC4 @ =gUnk_0810B774 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_08061BC0: + pop {pc} + .align 2, 0 +_08061BC4: .4byte gUnk_0810B774 + + thumb_func_start sub_08061BC8 +sub_08061BC8: @ 0x08061BC8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08061BFC @ =gUnk_0810B6EC + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08061BF8 + movs r0, #2 + strb r0, [r4, #0x14] + ldrb r0, [r4, #0xa] + adds r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08061CB4 +_08061BF8: + pop {r4, pc} + .align 2, 0 +_08061BFC: .4byte gUnk_0810B6EC + + thumb_func_start sub_08061C00 +sub_08061C00: @ 0x08061C00 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + bge _08061C18 + ldrb r0, [r4, #0x14] + adds r1, r0, #4 + b _08061C32 +_08061C18: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08061C24 + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08061C32 +_08061C24: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + movs r1, #3 + ands r1, r0 +_08061C32: + adds r0, r4, #0 + bl sub_08061CB4 + adds r0, r4, #0 + bl sub_0806ED78 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08061C58 + movs r0, #0 + strb r0, [r1] + ldrb r0, [r4, #0xb] + ldr r1, _08061C5C @ =0x00000A01 + adds r0, r0, r1 + bl sub_08056378 +_08061C58: + pop {r4, pc} + .align 2, 0 +_08061C5C: .4byte 0x00000A01 + + thumb_func_start sub_08061C60 +sub_08061C60: @ 0x08061C60 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + ldr r1, _08061CAC @ =gUnk_0810B78C + adds r0, r0, r1 + ldrb r1, [r0] + ldr r5, _08061CB0 @ =gUnk_0810B680 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r2, [r0] + adds r2, r1, r2 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r0, [r0, #1] + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, r5, pc} + .align 2, 0 +_08061CAC: .4byte gUnk_0810B78C +_08061CB0: .4byte gUnk_0810B680 + + thumb_func_start sub_08061CB4 +sub_08061CB4: @ 0x08061CB4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r1 + beq _08061CC8 + adds r0, r4, #0 + bl sub_08004260 + b _08061CCE +_08061CC8: + adds r0, r4, #0 + bl sub_08004274 +_08061CCE: + adds r2, r4, #0 + adds r2, #0x59 + ldrb r0, [r2] + cmp r0, #0xff + bne _08061CE4 + ldr r0, _08061CE8 @ =gUnk_0810B680 + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #2] + strb r0, [r2] +_08061CE4: + pop {r4, pc} + .align 2, 0 +_08061CE8: .4byte gUnk_0810B680 + + thumb_func_start sub_08061CEC +sub_08061CEC: @ 0x08061CEC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08061D38 @ =gUnk_0810B6EC + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08061D62 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x69 + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r1, r0, #0 + cmp r1, #0 + bne _08061D3C + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x6a + strh r0, [r1] + ldrh r1, [r4, #0x32] + b _08061D44 + .align 2, 0 +_08061D38: .4byte gUnk_0810B6EC +_08061D3C: + lsrs r0, r1, #0x10 + adds r2, r4, #0 + adds r2, #0x6a + strh r0, [r2] +_08061D44: + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + bl sub_08061D64 +_08061D62: + pop {r4, pc} + + thumb_func_start sub_08061D64 +sub_08061D64: @ 0x08061D64 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x39 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #2 + bne _08061DB0 + movs r1, #0 + movs r0, #3 + strb r0, [r5, #0xc] + strb r1, [r4] + adds r0, r5, #0 + bl sub_0806F118 + adds r4, #0x1f + ldrb r0, [r4] + adds r1, r5, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _08061DAC @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5A4 + ldrb r1, [r4] + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_08004260 + b _08061E18 + .align 2, 0 +_08061DAC: .4byte gLinkEntity +_08061DB0: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 + adds r2, r5, #0 + adds r2, #0x59 + ldrb r0, [r2] + cmp r0, #0xff + bne _08061DD4 + ldr r0, _08061E1C @ =gUnk_0810B680 + ldrb r1, [r5, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #2] + strb r0, [r2] +_08061DD4: + adds r0, r5, #0 + bl sub_08004274 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + beq _08061E18 + movs r1, #0 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r4] + adds r0, r5, #0 + bl sub_08062048 + adds r4, r5, #0 + adds r4, #0x58 + ldrb r0, [r4] + adds r1, r5, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _08061E20 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5A4 + ldrb r1, [r4] + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_08004260 +_08061E18: + pop {r4, r5, pc} + .align 2, 0 +_08061E1C: .4byte gUnk_0810B680 +_08061E20: .4byte gLinkEntity + + thumb_func_start sub_08061E24 +sub_08061E24: @ 0x08061E24 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r0, _08061E4C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08061E48 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_08061E48: + pop {r4, pc} + .align 2, 0 +_08061E4C: .4byte gUnk_02000050 + + thumb_func_start sub_08061E50 +sub_08061E50: @ 0x08061E50 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08061E6C + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_08061E6C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08061E70 +sub_08061E70: @ 0x08061E70 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #9] + cmp r0, #6 + bne _08061E88 + adds r0, r2, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_08078784 + b _08061E8E +_08061E88: + adds r0, r2, #0 + bl sub_08078778 +_08061E8E: + pop {pc} + + thumb_func_start sub_08061E90 +sub_08061E90: @ 0x08061E90 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _08061F04 + adds r0, #1 + strb r0, [r5, #0x18] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strh r0, [r5, #0x12] + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _08061ED8 + cmp r0, #8 + bgt _08061EC6 + cmp r0, #0 + beq _08061ED0 + b _08061EEE +_08061EC6: + cmp r0, #0x10 + beq _08061EE0 + cmp r0, #0x18 + beq _08061EE8 + b _08061EEE +_08061ED0: + cmp r1, #0x10 + bne _08061EEE + movs r1, #8 + b _08061EEE +_08061ED8: + cmp r1, #0x18 + bne _08061EEE + movs r1, #0x10 + b _08061EEE +_08061EE0: + cmp r1, #0 + bne _08061EEE + movs r1, #0x18 + b _08061EEE +_08061EE8: + cmp r1, #8 + bne _08061EEE + movs r1, #0 +_08061EEE: + strb r1, [r4, #0x15] + adds r0, r1, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + ldr r1, _08061F8C @ =gUnk_0810B74A + ldrb r0, [r4, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #0x24] +_08061F04: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + adds r1, r0, #4 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _08061F1A + adds r0, r4, #0 + bl sub_08004260 +_08061F1A: + adds r0, r4, #0 + bl sub_080AEF88 + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x6a + movs r3, #0 + ldrsh r0, [r2, r3] + subs r1, r1, r0 + cmp r1, #0x10 + ble _08061F3C + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_08061F3C: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _08061F4E + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_08061F4E: + movs r6, #0x32 + ldrsh r1, [r4, r6] + adds r2, r4, #0 + adds r2, #0x6c + movs r6, #0 + ldrsh r0, [r2, r6] + subs r1, r1, r0 + cmp r1, #0x10 + ble _08061F6A + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08061F6A: + cmp r1, r3 + bge _08061F78 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08061F78: + ldrh r0, [r5, #0x12] + subs r0, #1 + strh r0, [r5, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08061F8A + ldr r1, _08061F90 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_08061F8A: + pop {r4, r5, r6, pc} + .align 2, 0 +_08061F8C: .4byte gUnk_0810B74A +_08061F90: .4byte gUnk_02033280 + + thumb_func_start sub_08061F94 +sub_08061F94: @ 0x08061F94 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x35 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08061FAC + adds r0, r4, #0 + bl sub_0806FAB0 +_08061FAC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08061FB0 +sub_08061FB0: @ 0x08061FB0 + movs r1, #0 + str r1, [r0, #0x48] + bx lr + .align 2, 0 + + thumb_func_start sub_08061FB8 +sub_08061FB8: @ 0x08061FB8 + push {lr} + ldr r2, _08061FD0 @ =gUnk_0810B748 + ldr r3, [r1, #4] + adds r2, r3, r2 + ldrb r2, [r2] + lsls r3, r3, #2 + ldr r1, _08061FD4 @ =gUnk_0810B740 + adds r3, r3, r1 + movs r1, #1 + bl sub_08078850 + pop {pc} + .align 2, 0 +_08061FD0: .4byte gUnk_0810B748 +_08061FD4: .4byte gUnk_0810B740 + + thumb_func_start sub_08061FD8 +sub_08061FD8: @ 0x08061FD8 + push {lr} + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_08061FE4 +sub_08061FE4: @ 0x08061FE4 + push {lr} + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + adds r1, #4 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08061FF4 +sub_08061FF4: @ 0x08061FF4 + push {lr} + adds r1, r0, #0 + ldr r2, _08062008 @ =gUnk_0810B790 + ldrb r0, [r1, #0xa] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08062008: .4byte gUnk_0810B790 + + thumb_func_start sub_0806200C +sub_0806200C: @ 0x0806200C + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _08062034 + movs r0, #0x6b + bl sub_0807CBD0 + cmp r0, #0 + beq _08062034 + movs r0, #0x39 + bl sub_0807CA84 + movs r4, #1 + cmp r0, #2 + bne _08062034 + movs r4, #2 +_08062034: + ldr r0, _08062044 @ =gUnk_0810B7BA + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_08062044: .4byte gUnk_0810B7BA + + thumb_func_start sub_08062048 +sub_08062048: @ 0x08062048 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #9] + cmp r0, #6 + bne _0806207C + ldr r0, _08062074 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _0806205E + movs r0, #0 +_0806205E: + ldrb r1, [r3, #0xa] + lsls r1, r1, #6 + lsls r0, r0, #3 + ldr r2, _08062078 @ =gUnk_0810B7C0 + adds r0, r0, r2 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_0806F1AC + b _08062084 + .align 2, 0 +_08062074: .4byte gUnk_02002A40 +_08062078: .4byte gUnk_0810B7C0 +_0806207C: + movs r0, #0 + adds r1, r3, #0 + bl sub_08056398 +_08062084: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08062088 +sub_08062088: @ 0x08062088 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080620BA + ldr r1, _080620C4 @ =gUnk_0810B6EC + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _080620C2 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_080620BA: + adds r0, r4, #0 + movs r1, #6 + bl sub_08061CB4 +_080620C2: + pop {r4, pc} + .align 2, 0 +_080620C4: .4byte gUnk_0810B6EC + + thumb_func_start sub_080620C8 +sub_080620C8: @ 0x080620C8 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080620DE + adds r0, r2, #0 + bl sub_080621AC + b _080620EE +_080620DE: + ldr r0, _080620F0 @ =gUnk_0810BE0C + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_080620EE: + pop {pc} + .align 2, 0 +_080620F0: .4byte gUnk_0810BE0C + + thumb_func_start sub_080620F4 +sub_080620F4: @ 0x080620F4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806212C @ =gUnk_0810BDC4 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806212A + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x68 + strb r1, [r0] + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08078778 +_0806212A: + pop {r4, pc} + .align 2, 0 +_0806212C: .4byte gUnk_0810BDC4 + + thumb_func_start sub_08062130 +sub_08062130: @ 0x08062130 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08062152 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC +_08062152: + ldrb r0, [r4, #0xf] + adds r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x78 + bls _08062184 + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xe] + adds r1, r0, #1 + movs r0, #7 + ands r1, r0 + strb r1, [r4, #0xe] + ldrb r0, [r4, #0xa] + cmp r0, #6 + bne _0806217A + adds r0, r1, #0 + adds r0, #0x10 + strb r0, [r4, #0xe] +_0806217A: + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + bl sub_080042AC + b _0806218A +_08062184: + adds r0, r4, #0 + bl sub_080042B8 +_0806218A: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08062194 +sub_08062194: @ 0x08062194 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_08056378 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r4, #0x39 + strb r1, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080621AC +sub_080621AC: @ 0x080621AC + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _08062234 + cmp r5, #1 + bgt _080621C0 + cmp r5, #0 + beq _080621CE + b _080622F2 +_080621C0: + cmp r5, #2 + bne _080621C6 + b _080622CC +_080621C6: + cmp r5, #3 + bne _080621CC + b _080622E4 +_080621CC: + b _080622F2 +_080621CE: + ldr r1, _0806221C @ =gUnk_0810BDC4 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + bne _080621E4 + b _080622F2 +_080621E4: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0x14] + strb r5, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x68 + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r1, r4, #0 + adds r1, #0x6b + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r2, r0, #0 + cmp r2, #0 + bne _08062220 + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r1, #2 + strh r0, [r1] + b _0806222C + .align 2, 0 +_0806221C: .4byte gUnk_0810BDC4 +_08062220: + lsrs r1, r2, #0x10 + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + adds r0, #2 + strh r2, [r0] +_0806222C: + adds r0, r4, #0 + bl sub_0807DD50 + b _080622F2 +_08062234: + adds r5, r4, #0 + adds r5, #0x39 + movs r1, #0 + ldrsb r1, [r5, r1] + cmp r1, #2 + bne _08062252 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r5] + adds r0, r4, #0 + bl sub_0806F118 + adds r5, #0x1f + b _0806229A +_08062252: + adds r0, r4, #0 + adds r0, #0x68 + movs r6, #0 + ldrsb r6, [r0, r6] + cmp r6, #0 + beq _08062274 + cmp r1, #0 + beq _0806226C + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r5] + b _0806228A +_0806226C: + adds r0, r4, #0 + bl sub_080622F4 + b _080622F2 +_08062274: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _080622F2 + movs r0, #2 + strb r0, [r4, #0xc] + strb r6, [r5] +_0806228A: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806265C + adds r5, r4, #0 + adds r5, #0x58 +_0806229A: + ldrb r0, [r5] + adds r1, r4, #0 + adds r1, #0x6b + strb r0, [r1] + ldrb r0, [r5] + cmp r0, #7 + bhi _080622F2 + ldr r1, _080622C8 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + ldrb r1, [r5] + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_08004260 + b _080622F2 + .align 2, 0 +_080622C8: .4byte gLinkEntity +_080622CC: + adds r0, r4, #0 + bl sub_08004274 + ldr r0, _080622E0 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080622F2 + b _080622EE + .align 2, 0 +_080622E0: .4byte gUnk_02000050 +_080622E4: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _080622F2 +_080622EE: + movs r0, #1 + strb r0, [r4, #0xc] +_080622F2: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080622F4 +sub_080622F4: @ 0x080622F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + ldr r0, _0806239C @ =gLinkEntity + mov r8, r0 + ldrh r1, [r0, #0x2e] + ldr r3, _080623A0 @ =0xFFFF0000 + adds r0, r3, #0 + ands r0, r5 + orrs r0, r1 + mov r2, r8 + ldrh r1, [r2, #0x32] + lsls r1, r1, #0x10 + ldr r2, _080623A4 @ =0x0000FFFF + ands r0, r2 + adds r5, r0, #0 + orrs r5, r1 + mov r1, r8 + ldrh r0, [r1, #0x36] + ands r3, r6 + orrs r3, r0 + ldr r0, _080623A8 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #0x10 + ldr r2, _080623AC @ =0xFF00FFFF + ands r2, r3 + orrs r2, r0 + ldrb r1, [r1, #0x14] + movs r0, #0x3f + ands r1, r0 + lsls r1, r1, #0x18 + ldr r0, _080623B0 @ =0xC0FFFFFF + ands r0, r2 + orrs r0, r1 + mov r1, r8 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #0x1e + ldr r2, _080623B4 @ =0x3FFFFFFF + ands r0, r2 + adds r6, r0, #0 + orrs r6, r1 + ldr r4, [r7, #0x64] + ldrb r0, [r4, #6] + cmp r0, #0x16 + bne _080623BE + lsrs r0, r6, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x16 + beq _080623BE + movs r2, #0x2e + ldrsh r1, [r7, r2] + mov r3, r8 + movs r2, #0x2e + ldrsh r0, [r3, r2] + subs r2, r1, r0 + movs r0, #0x32 + ldrsh r3, [r7, r0] + mov sb, r3 + mov r1, r8 + movs r3, #0x32 + ldrsh r0, [r1, r3] + mov r3, sb + subs r1, r3, r0 + cmp r2, #0 + bge _08062382 + rsbs r2, r2, #0 +_08062382: + cmp r1, #0 + bge _08062388 + rsbs r1, r1, #0 +_08062388: + cmp r2, #0x78 + bgt _08062390 + cmp r1, #0x50 + ble _080623B8 +_08062390: + adds r1, r7, #0 + adds r1, #0x68 + movs r0, #0 + strb r0, [r1] + b _080624F8 + .align 2, 0 +_0806239C: .4byte gLinkEntity +_080623A0: .4byte 0xFFFF0000 +_080623A4: .4byte 0x0000FFFF +_080623A8: .4byte gUnk_03003F80 +_080623AC: .4byte 0xFF00FFFF +_080623B0: .4byte 0xC0FFFFFF +_080623B4: .4byte 0x3FFFFFFF +_080623B8: + adds r0, r7, #0 + bl sub_0806252C +_080623BE: + movs r0, #0 + mov sb, r0 + ldr r0, [r4] + cmp r5, r0 + bne _080623CE + ldr r0, [r4, #4] + cmp r6, r0 + beq _08062410 +_080623CE: + ldr r4, [r7, #0x64] + adds r4, #0x90 + movs r1, #0x69 + adds r1, r1, r7 + mov r8, r1 + adds r3, r7, #0 + adds r3, #0x38 + movs r2, #0x58 + adds r2, r2, r7 + mov ip, r2 + movs r2, #0x12 +_080623E4: + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r4, #8] + str r1, [r4, #0xc] + subs r4, #8 + subs r2, #1 + cmp r2, #0 + bge _080623E4 + ldr r4, [r7, #0x64] + str r5, [r4] + str r6, [r4, #4] + movs r0, #4 + mov sb, r0 + mov r2, r8 + ldrb r1, [r2] + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + ble _08062484 + subs r0, r1, #1 + strb r0, [r2] + b _08062484 +_08062410: + adds r4, #0x98 + movs r3, #4 + ldrsh r0, [r4, r3] + cmp r0, #0 + bge _08062442 + ldr r4, [r7, #0x64] + adds r4, #0x90 + movs r0, #0x69 + adds r0, r0, r7 + mov r8, r0 + adds r3, r7, #0 + adds r3, #0x38 + movs r1, #0x58 + adds r1, r1, r7 + mov ip, r1 + movs r2, #0x12 +_08062430: + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r4, #8] + str r1, [r4, #0xc] + subs r4, #8 + subs r2, #1 + cmp r2, #0 + bge _08062430 + b _08062480 +_08062442: + ldr r1, _080624E8 @ =gLinkEntity + movs r3, #0x2e + ldrsh r0, [r1, r3] + movs r2, #0x32 + ldrsh r1, [r1, r2] + ldrh r2, [r4] + ldrh r3, [r4, #2] + bl sub_080041E8 + lsrs r0, r0, #4 + movs r3, #0x69 + adds r3, r3, r7 + mov r8, r3 + adds r3, r7, #0 + adds r3, #0x38 + movs r1, #0x58 + adds r1, r1, r7 + mov ip, r1 + cmp r0, #0x18 + ble _08062484 + ldr r4, [r7, #0x64] + adds r4, #0x90 + movs r2, #0x12 +_08062470: + ldr r0, [r4] + ldr r1, [r4, #4] + str r0, [r4, #8] + str r1, [r4, #0xc] + subs r4, #8 + subs r2, #1 + cmp r2, #0 + bge _08062470 +_08062480: + movs r2, #4 + mov sb, r2 +_08062484: + ldr r4, [r7, #0x64] + adds r4, #0x98 + ldrh r0, [r4] + strh r0, [r7, #0x2e] + ldrh r0, [r4, #2] + strh r0, [r7, #0x32] + ldrh r0, [r4, #4] + strh r0, [r7, #0x36] + ldrb r0, [r4, #7] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + strb r0, [r7, #0x14] + ldrb r0, [r4, #7] + lsrs r0, r0, #6 + strb r0, [r3] + mov r1, r8 + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _080624B2 + subs r0, r2, #1 + strb r0, [r1] +_080624B2: + mov r2, sb + ldrb r0, [r7, #0x14] + lsrs r0, r0, #1 + add sb, r0 + ldrb r0, [r7, #0xa] + cmp r0, #6 + bne _080624C4 + movs r3, #0x10 + add sb, r3 +_080624C4: + mov r0, ip + ldrb r0, [r0] + cmp sb, r0 + beq _080624EC + cmp r2, #0 + bne _080624D8 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bgt _080624EC +_080624D8: + adds r0, r7, #0 + mov r1, sb + bl sub_080042AC + movs r0, #0x1e + mov r1, r8 + strb r0, [r1] + b _080624F2 + .align 2, 0 +_080624E8: .4byte gLinkEntity +_080624EC: + adds r0, r7, #0 + bl sub_080042B8 +_080624F2: + adds r0, r7, #0 + bl sub_0800451C +_080624F8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08062500 +sub_08062500: @ 0x08062500 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xa0 + bl sub_0801D8E0 + str r0, [r5, #0x64] + cmp r0, #0 + beq _08062528 + adds r0, r5, #0 + adds r0, #0x68 + movs r4, #0 + movs r1, #1 + strb r1, [r0] + adds r0, r5, #0 + bl sub_080788E0 + str r4, [r5, #0x48] + adds r0, r5, #0 + bl sub_0806252C +_08062528: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806252C +sub_0806252C: @ 0x0806252C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldr r4, _08062618 @ =gLinkEntity + ldrh r1, [r4, #0x2e] + ldr r3, _0806261C @ =0xFFFF0000 + adds r0, r3, #0 + ands r0, r5 + orrs r0, r1 + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + ldr r2, _08062620 @ =0x0000FFFF + ands r0, r2 + adds r5, r0, #0 + orrs r5, r1 + ldrh r0, [r4, #0x36] + ands r3, r6 + orrs r3, r0 + ldr r0, _08062624 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #0x10 + ldr r2, _08062628 @ =0xFF00FFFF + ands r2, r3 + orrs r2, r0 + ldrb r1, [r4, #0x14] + movs r0, #0x3f + ands r1, r0 + lsls r1, r1, #0x18 + ldr r0, _0806262C @ =0xC0FFFFFF + ands r0, r2 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #0x1e + ldr r2, _08062630 @ =0x3FFFFFFF + ands r0, r2 + adds r6, r0, #0 + orrs r6, r1 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov sl, r1 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x32 + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov r8, r1 + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov sl, r0 + mov r2, r8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + ldr r3, [r7, #0x64] + movs r0, #0 + mov sb, r0 + mov ip, r0 + movs r4, #0x13 +_080625C8: + mov r1, ip + asrs r0, r1, #8 + subs r0, r5, r0 + strh r0, [r3] + lsrs r0, r5, #0x10 + mov r2, sb + asrs r1, r2, #8 + subs r0, r0, r1 + strh r0, [r3, #2] + strh r6, [r3, #4] + lsrs r0, r6, #0x10 + strb r0, [r3, #6] + ldrb r0, [r7, #0x14] + movs r1, #0x3f + ands r1, r0 + ldrb r2, [r3, #7] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r1, r7, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #6 + movs r2, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r3, #8 + add sb, r8 + add ip, sl + subs r4, #1 + cmp r4, #0 + bge _080625C8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08062618: .4byte gLinkEntity +_0806261C: .4byte 0xFFFF0000 +_08062620: .4byte 0x0000FFFF +_08062624: .4byte gUnk_03003F80 +_08062628: .4byte 0xFF00FFFF +_0806262C: .4byte 0xC0FFFFFF +_08062630: .4byte 0x3FFFFFFF + + thumb_func_start sub_08062634 +sub_08062634: @ 0x08062634 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xb] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + ldr r0, _08062658 @ =gUnk_0810BDE8 + lsls r1, r1, #1 + lsls r4, r4, #2 + adds r1, r1, r4 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_08062658: .4byte gUnk_0810BDE8 + + thumb_func_start sub_0806265C +sub_0806265C: @ 0x0806265C + push {lr} + adds r2, r0, #0 + ldr r3, _08062674 @ =gUnk_02002A40 + ldrb r0, [r3, #8] + cmp r0, #0 + bne _08062678 + movs r0, #0 + adds r1, r2, #0 + bl sub_08056398 + b _08062690 + .align 2, 0 +_08062674: .4byte gUnk_02002A40 +_08062678: + ldrb r0, [r2, #0xa] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #3 + ldr r0, _08062694 @ =gUnk_0810BE10 + adds r1, r1, r0 + ldrb r0, [r3, #8] + lsls r0, r0, #3 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_0806F1AC +_08062690: + pop {pc} + .align 2, 0 +_08062694: .4byte gUnk_0810BE10 + + thumb_func_start sub_08062698 +sub_08062698: @ 0x08062698 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0xc0 + strh r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080626AC +sub_080626AC: @ 0x080626AC + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x40 + strb r0, [r4, #0xe] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080626C0 +sub_080626C0: @ 0x080626C0 + push {lr} + adds r2, r0, #0 + movs r0, #0 + str r0, [r1, #0x14] + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _080626DC + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080626DC + movs r0, #1 + str r0, [r1, #0x14] +_080626DC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080626E0 +sub_080626E0: @ 0x080626E0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _0806270E + adds r0, #1 + strb r0, [r4, #0x18] + movs r0, #0xa + strb r0, [r4, #0x19] + ldr r0, [r4, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r4, #8] + ldrh r2, [r4, #4] + ldr r1, _08062778 @ =gUnk_03000BF0 + ldrh r0, [r4, #6] + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r4, #0x1e] + ldrh r0, [r1, #8] + adds r0, r0, r2 + strh r0, [r4, #0x22] +_0806270E: + ldrb r0, [r4, #0x19] + subs r0, #1 + strb r0, [r4, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806274A + movs r0, #0xa + strb r0, [r4, #0x19] + movs r1, #0x1e + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r3, #0x22 + ldrsh r1, [r4, r3] + movs r3, #0x32 + ldrsh r2, [r5, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + bl sub_08000E50 + movs r1, #0xb + bl __modsi3 + ldrb r1, [r5, #0x15] + adds r1, r1, r0 + subs r1, #5 + strb r1, [r5, #0x15] +_0806274A: + movs r0, #0x24 + ldrsh r1, [r5, r0] + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + movs r2, #0x2e + ldrsh r1, [r5, r2] + movs r3, #0x1e + ldrsh r0, [r4, r3] + subs r1, r1, r0 + lsls r1, r1, #8 + ldrh r0, [r5, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + adds r1, r1, r0 + movs r2, #0x24 + ldrsh r0, [r5, r2] + cmp r1, r0 + bhi _0806277C + ldrh r0, [r4, #0x1e] + strh r0, [r5, #0x2e] + b _08062782 + .align 2, 0 +_08062778: .4byte gUnk_03000BF0 +_0806277C: + ldr r1, _08062784 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_08062782: + pop {r4, r5, pc} + .align 2, 0 +_08062784: .4byte gUnk_02033280 + + thumb_func_start sub_08062788 +sub_08062788: @ 0x08062788 + push {r4, lr} + ldr r4, _080627CC @ =0x00004072 + ldr r1, _080627D0 @ =0x0000060B + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _080627D4 @ =0x0000060C + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _080627D8 @ =0x0000060D + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _080627DC @ =0x0000064B + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _080627E0 @ =0x0000064C + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _080627E4 @ =0x0000064D + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + pop {r4, pc} + .align 2, 0 +_080627CC: .4byte 0x00004072 +_080627D0: .4byte 0x0000060B +_080627D4: .4byte 0x0000060C +_080627D8: .4byte 0x0000060D +_080627DC: .4byte 0x0000064B +_080627E0: .4byte 0x0000064C +_080627E4: .4byte 0x0000064D + + thumb_func_start sub_080627E8 +sub_080627E8: @ 0x080627E8 + push {lr} + ldr r0, _0806281C @ =0x0000060B + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08062820 @ =0x0000060C + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08062824 @ =0x0000060D + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08062828 @ =0x0000064B + movs r1, #1 + bl sub_0807BA8C + ldr r0, _0806282C @ =0x0000064C + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08062830 @ =0x0000064D + movs r1, #1 + bl sub_0807BA8C + pop {pc} + .align 2, 0 +_0806281C: .4byte 0x0000060B +_08062820: .4byte 0x0000060C +_08062824: .4byte 0x0000060D +_08062828: .4byte 0x0000064B +_0806282C: .4byte 0x0000064C +_08062830: .4byte 0x0000064D + + thumb_func_start sub_08062834 +sub_08062834: @ 0x08062834 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xa] + lsls r0, r4, #2 + mov ip, r0 + ldr r2, _08062868 @ =gUnk_0810C0A0 + add r2, ip + adds r0, r5, #0 + adds r0, #0x5a + ldrb r3, [r0] + movs r1, #0x1f + adds r0, r1, #0 + ands r0, r3 + ldrb r3, [r2] + adds r6, r0, r3 + ldrb r0, [r5, #0x1e] + ands r1, r0 + ldrb r2, [r2, #1] + adds r7, r1, r2 + cmp r4, #8 + bhi _08062946 + ldr r0, _0806286C @ =_08062870 + add r0, ip + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08062868: .4byte gUnk_0810C0A0 +_0806286C: .4byte _08062870 @ jump table +_08062870: + .4byte _08062894 @ case 0 + .4byte _08062894 @ case 1 + .4byte _08062894 @ case 2 + .4byte _08062894 @ case 3 + .4byte _08062894 @ case 4 + .4byte _08062894 @ case 5 + .4byte _080628D8 @ case 6 + .4byte _08062922 @ case 7 + .4byte _08062922 @ case 8 +_08062894: + adds r0, r5, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #0x30 + ands r0, r1 + lsrs r4, r0, #4 + cmp r4, #0 + beq _080628A6 + adds r4, #0x50 +_080628A6: + subs r4, #1 + adds r0, r5, #0 + movs r1, #0 + adds r2, r6, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + adds r2, r7, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r5, #0 + movs r1, #1 + movs r2, #2 + b _08062916 +_080628D8: + adds r0, r5, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r2, #0xf + ands r2, r0 + cmp r2, #0 + beq _080628E8 + adds r2, #0x93 +_080628E8: + subs r2, #1 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #2 + adds r2, r7, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #2 + movs r2, #1 + bl sub_0806FF88 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 +_08062916: + bl sub_0806FFD8 + adds r0, r5, #0 + bl sub_0807000C + b _08062946 +_08062922: + adds r0, r5, #0 + movs r1, #0 + adds r2, r6, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + adds r2, r7, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r5, #0 + bl sub_0807000C +_08062946: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08062948 +sub_08062948: @ 0x08062948 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldrb r0, [r6, #0x18] + cmp r0, #0 + bne _080629B4 + adds r0, #1 + strb r0, [r6, #0x18] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strh r0, [r6, #0x12] + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _08062990 + cmp r0, #8 + bgt _0806297E + cmp r0, #0 + beq _08062988 + b _080629A6 +_0806297E: + cmp r0, #0x10 + beq _08062998 + cmp r0, #0x18 + beq _080629A0 + b _080629A6 +_08062988: + cmp r1, #0x10 + bne _080629A6 + movs r1, #8 + b _080629A6 +_08062990: + cmp r1, #0x18 + bne _080629A6 + movs r1, #0x10 + b _080629A6 +_08062998: + cmp r1, #0 + bne _080629A6 + movs r1, #0x18 + b _080629A6 +_080629A0: + cmp r1, #8 + bne _080629A6 + movs r1, #0 +_080629A6: + strb r1, [r4, #0x15] + adds r0, r1, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + movs r0, #0x80 + strh r0, [r4, #0x24] +_080629B4: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + adds r1, r0, #4 + adds r5, r4, #0 + adds r5, #0x58 + ldrb r0, [r5] + cmp r1, r0 + beq _080629D2 + adds r0, r4, #0 + bl sub_08004260 + ldrb r1, [r5] + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] +_080629D2: + adds r0, r4, #0 + bl sub_080AEF88 + movs r3, #0x2e + ldrsh r1, [r4, r3] + adds r2, r4, #0 + adds r2, #0x6c + movs r5, #0 + ldrsh r0, [r2, r5] + subs r1, r1, r0 + cmp r1, #0x10 + ble _080629F4 + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r6, #0x12] +_080629F4: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _08062A06 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r6, #0x12] +_08062A06: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x6e + movs r5, #0 + ldrsh r0, [r2, r5] + subs r1, r1, r0 + cmp r1, #0x10 + ble _08062A22 + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r6, #0x12] +_08062A22: + cmp r1, r3 + bge _08062A30 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r6, #0x12] +_08062A30: + ldrh r0, [r6, #0x12] + subs r0, #1 + strh r0, [r6, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08062A42 + ldr r1, _08062A44 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_08062A42: + pop {r4, r5, r6, pc} + .align 2, 0 +_08062A44: .4byte gUnk_02033280 + + thumb_func_start sub_08062A48 +sub_08062A48: @ 0x08062A48 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x6a + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_08062A60 +sub_08062A60: @ 0x08062A60 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08062AB0 + ldr r1, _08062AAC @ =gUnk_0810BDC4 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08062AB6 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrh r0, [r4, #0x32] + subs r0, #8 + strh r0, [r4, #0x32] + movs r1, #6 + ldrb r0, [r4, #0xa] + cmp r0, #6 + bne _08062AA2 + movs r1, #0x16 +_08062AA2: + adds r0, r4, #0 + bl sub_08004260 + b _08062AB6 + .align 2, 0 +_08062AAC: .4byte gUnk_0810BDC4 +_08062AB0: + adds r0, r4, #0 + bl sub_08004274 +_08062AB6: + pop {r4, pc} + + thumb_func_start sub_08062AB8 +sub_08062AB8: @ 0x08062AB8 + push {lr} + ldr r2, _08062ACC @ =gUnk_0810C268 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08062ACC: .4byte gUnk_0810C268 + + thumb_func_start sub_08062AD0 +sub_08062AD0: @ 0x08062AD0 + bx lr + .align 2, 0 + + thumb_func_start sub_08062AD4 +sub_08062AD4: @ 0x08062AD4 + bx lr + .align 2, 0 + + thumb_func_start sub_08062AD8 +sub_08062AD8: @ 0x08062AD8 + push {lr} + ldr r2, _08062AEC @ =gUnk_0810C290 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08062AEC: .4byte gUnk_0810C290 + + thumb_func_start sub_08062AF0 +sub_08062AF0: @ 0x08062AF0 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 + pop {r4, pc} + + thumb_func_start sub_08062B14 +sub_08062B14: @ 0x08062B14 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08062B40 + movs r0, #0 + strb r0, [r1] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0805E47C +_08062B40: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + + thumb_func_start sub_08062B48 +sub_08062B48: @ 0x08062B48 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08062B6A + ldr r0, _08062B6C @ =0x00000A01 + bl sub_08056378 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_08062B6A: + pop {r4, pc} + .align 2, 0 +_08062B6C: .4byte 0x00000A01 + + thumb_func_start sub_08062B70 +sub_08062B70: @ 0x08062B70 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08062B94 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08062B92 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0805E584 +_08062B92: + pop {r4, pc} + .align 2, 0 +_08062B94: .4byte gUnk_02000050 + + thumb_func_start sub_08062B98 +sub_08062B98: @ 0x08062B98 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08062BBC + ldr r0, _08062BB8 @ =gUnk_0810C2DC + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08062BCC + .align 2, 0 +_08062BB8: .4byte gUnk_0810C2DC +_08062BBC: + ldr r0, _08062BD0 @ =gUnk_0810C2CC + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_08062BCC: + pop {pc} + .align 2, 0 +_08062BD0: .4byte gUnk_0810C2CC + + thumb_func_start sub_08062BD4 +sub_08062BD4: @ 0x08062BD4 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 + pop {r4, pc} + + thumb_func_start sub_08062BF8 +sub_08062BF8: @ 0x08062BF8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08062C1C + movs r0, #0 + strb r0, [r1] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0805E47C +_08062C1C: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + + thumb_func_start sub_08062C24 +sub_08062C24: @ 0x08062C24 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08062C4E + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + ldr r0, _08062C50 @ =0x00000A01 + bl sub_08056378 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_08062C4E: + pop {r4, pc} + .align 2, 0 +_08062C50: .4byte 0x00000A01 + + thumb_func_start sub_08062C54 +sub_08062C54: @ 0x08062C54 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08062C78 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08062C76 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0805E584 +_08062C76: + pop {r4, pc} + .align 2, 0 +_08062C78: .4byte gUnk_02000050 + + thumb_func_start sub_08062C7C +sub_08062C7C: @ 0x08062C7C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #0x25 + movs r2, #0 + bl CreateFX + adds r0, r4, #0 + bl sub_08062CA4 + pop {r4, pc} + + thumb_func_start sub_08062CA4 +sub_08062CA4: @ 0x08062CA4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08062CBC +sub_08062CBC: @ 0x08062CBC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2c + bl sub_0801E7F4 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + lsls r1, r1, #3 + ldr r0, _08062CDC @ =gUnk_0810C2E4 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806F1AC + pop {r4, pc} + .align 2, 0 +_08062CDC: .4byte gUnk_0810C2E4 + + thumb_func_start sub_08062CE0 +sub_08062CE0: @ 0x08062CE0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _08062CEE + movs r0, #1 + strb r0, [r1, #0xc] +_08062CEE: + pop {pc} + + thumb_func_start sub_08062CF0 +sub_08062CF0: @ 0x08062CF0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08062D0C + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 +_08062D0C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08062D18 +sub_08062D18: @ 0x08062D18 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r4, #0 + movs r0, #0x4f + bl sub_0807CA84 + cmp r0, #0 + beq _08062D36 + movs r0, #0x26 + bl sub_0807CBD0 + cmp r0, #0 + bne _08062D36 + movs r4, #7 +_08062D36: + movs r0, #0x4e + bl sub_0807CA84 + cmp r0, #0 + beq _08062D4C + movs r0, #0x25 + bl sub_0807CBD0 + cmp r0, #0 + bne _08062D4C + movs r4, #6 +_08062D4C: + movs r0, #0x4d + bl sub_0807CA84 + cmp r0, #0 + beq _08062D62 + movs r0, #0x24 + bl sub_0807CBD0 + cmp r0, #0 + bne _08062D62 + movs r4, #5 +_08062D62: + movs r0, #0x4c + bl sub_0807CA84 + cmp r0, #0 + beq _08062D78 + movs r0, #0x23 + bl sub_0807CBD0 + cmp r0, #0 + bne _08062D78 + movs r4, #4 +_08062D78: + movs r0, #0x4b + bl sub_0807CA84 + cmp r0, #0 + beq _08062D8E + movs r0, #0x22 + bl sub_0807CBD0 + cmp r0, #0 + bne _08062D8E + movs r4, #3 +_08062D8E: + movs r0, #0x4a + bl sub_0807CA84 + cmp r0, #0 + beq _08062DA4 + movs r0, #0x21 + bl sub_0807CBD0 + cmp r0, #0 + bne _08062DA4 + movs r4, #2 +_08062DA4: + movs r0, #0x49 + bl sub_0807CA84 + cmp r0, #0 + beq _08062DBA + movs r0, #0x20 + bl sub_0807CBD0 + cmp r0, #0 + bne _08062DBA + movs r4, #1 +_08062DBA: + strb r4, [r5, #0xb] + movs r4, #0 + ldr r0, _08062DCC @ =0x00001C1F + bl sub_0807CBE4 + cmp r0, #0 + beq _08062DD0 + movs r4, #1 + b _08062DF0 + .align 2, 0 +_08062DCC: .4byte 0x00001C1F +_08062DD0: + movs r0, #0x8c + bl sub_0807CBD0 + cmp r0, #0 + beq _08062DE4 + movs r4, #2 + movs r0, #0x8c + bl sub_0807CD34 + b _08062DF0 +_08062DE4: + movs r0, #0x8b + bl sub_0807CBD0 + cmp r0, #0 + beq _08062DF0 + movs r4, #3 +_08062DF0: + ldr r0, _08062E08 @ =gUnk_0810C34C + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + cmp r4, #0 + bne _08062E0C + movs r0, #1 + b _08062E0E + .align 2, 0 +_08062E08: .4byte gUnk_0810C34C +_08062E0C: + movs r0, #0 +_08062E0E: + str r0, [r6, #0x14] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08062E14 +sub_08062E14: @ 0x08062E14 + push {lr} + movs r0, #0x8b + bl sub_0807CCB4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08062E20 +sub_08062E20: @ 0x08062E20 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08062E50 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + ldr r0, _08062E5C @ =gUnk_0810C3C0 + str r0, [r4, #0x48] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xfe + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807DD64 +_08062E50: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + pop {r4, pc} + .align 2, 0 +_08062E5C: .4byte gUnk_0810C3C0 + + thumb_func_start sub_08062E60 +sub_08062E60: @ 0x08062E60 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08062E88 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + ldr r0, _08062EB4 @ =gUnk_0810C428 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_0807DD64 +_08062E88: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08062EB2 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r0, #0x28 + strh r1, [r0] +_08062EB2: + pop {r4, pc} + .align 2, 0 +_08062EB4: .4byte gUnk_0810C428 + + thumb_func_start sub_08062EB8 +sub_08062EB8: @ 0x08062EB8 + push {lr} + movs r0, #0x68 + movs r1, #0 + bl sub_0807CAA0 + movs r0, #0x69 + movs r1, #0 + bl sub_0807CAA0 + movs r0, #0x6a + movs r1, #0 + bl sub_0807CAA0 + movs r0, #0x6b + movs r1, #0 + bl sub_0807CAA0 + pop {pc} + + thumb_func_start sub_08062EDC +sub_08062EDC: @ 0x08062EDC + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r0, #0x68 + bl sub_0807CA84 + cmp r0, #0 + beq _08062EEE + movs r4, #0 +_08062EEE: + movs r0, #0x69 + bl sub_0807CA84 + cmp r0, #0 + beq _08062EFA + movs r4, #1 +_08062EFA: + movs r0, #0x6a + bl sub_0807CA84 + cmp r0, #0 + beq _08062F06 + movs r4, #2 +_08062F06: + movs r0, #0x6b + bl sub_0807CA84 + cmp r0, #0 + beq _08062F12 + movs r4, #3 +_08062F12: + movs r0, #0x5b + bl sub_0807CBD0 + cmp r0, #0 + bne _08062F24 + movs r0, #0x5b + bl sub_0807CCB4 + movs r4, #4 +_08062F24: + bl sub_08000E50 + movs r1, #0xff + ands r1, r0 + ldr r0, _08062F58 @ =gUnk_0810C430 + adds r0, r4, r0 + ldrb r0, [r0] + cmp r1, r0 + bhi _08062F68 + ldr r0, _08062F5C @ =gUnk_0810C435 + bl sub_080028F4 + adds r4, r0, #0 + ldr r0, _08062F60 @ =gUnk_0810C43D + adds r0, r4, r0 + ldrb r1, [r0] + movs r0, #0x5c + movs r2, #1 + bl sub_080A7C18 + ldr r0, _08062F64 @ =0x00003C05 + adds r1, r6, #0 + bl sub_08056398 + movs r0, #1 + b _08062F6A + .align 2, 0 +_08062F58: .4byte gUnk_0810C430 +_08062F5C: .4byte gUnk_0810C435 +_08062F60: .4byte gUnk_0810C43D +_08062F64: .4byte 0x00003C05 +_08062F68: + movs r0, #0 +_08062F6A: + str r0, [r5, #0x14] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08062F70 +sub_08062F70: @ 0x08062F70 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08062FA0 + ldr r1, _08062FE8 @ =gUnk_0810C48C + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08062FE4 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 +_08062FA0: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + adds r4, #0x5b + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08062FCC + movs r0, #0xef + ands r0, r1 + strb r0, [r4] + ldr r0, _08062FEC @ =0x000001CF + bl sub_08004488 +_08062FCC: + ldrb r1, [r4] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08062FE4 + movs r0, #0xdf + ands r0, r1 + strb r0, [r4] + movs r0, #0x88 + lsls r0, r0, #2 + bl sub_08004488 +_08062FE4: + pop {r4, pc} + .align 2, 0 +_08062FE8: .4byte gUnk_0810C48C +_08062FEC: .4byte 0x000001CF + + thumb_func_start sub_08062FF0 +sub_08062FF0: @ 0x08062FF0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08063006 + movs r6, #1 + movs r5, #0 + b _0806300A +_08063006: + movs r6, #0 + movs r5, #1 +_0806300A: + adds r0, r4, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #8 + ands r0, r1 + movs r7, #0x8e + lsls r7, r7, #1 + cmp r0, #0 + beq _0806301E + movs r7, #0x16 +_0806301E: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + subs r2, #1 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FF60 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_0806FF10 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0806305C +sub_0806305C: @ 0x0806305C + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r2, #0x80 + lsls r2, r2, #1 + str r2, [r4, #0x6c] + str r2, [r4, #0x70] + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r4, #0 + movs r1, #0x10 + bl sub_080042AC + adds r4, #0x80 + movs r0, #0x10 + strh r0, [r4] + ldr r0, _080630A0 @ =0x0000016F + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_080630A0: .4byte 0x0000016F + + thumb_func_start sub_080630A4 +sub_080630A4: @ 0x080630A4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x6d + ldrb r0, [r0] + cmp r0, #0 + beq _080630BA + ldr r0, [r4, #0x6c] + adds r0, #0x80 + lsls r0, r0, #0x14 + lsrs r5, r0, #0x17 + b _080630D0 +_080630BA: + adds r0, r4, #0 + adds r0, #0x6c + ldrb r1, [r0] + lsrs r1, r1, #6 + movs r0, #3 + eors r1, r0 + adds r1, #1 + movs r0, #0x10 + bl __divsi3 + asrs r5, r0, #1 +_080630D0: + movs r0, #0x80 + lsls r0, r0, #1 + ldr r2, [r4, #0x70] + cmp r2, r0 + bls _080630E4 + adds r0, r2, #0 + adds r0, #0x80 + lsls r0, r0, #0x14 + lsrs r3, r0, #0x17 + b _080630F4 +_080630E4: + cmp r2, r0 + bne _080630EC + movs r3, #0x10 + b _080630F4 +_080630EC: + ldr r1, _08063110 @ =gUnk_0810C498 + lsrs r0, r2, #5 + adds r0, r0, r1 + ldrb r3, [r0] +_080630F4: + movs r6, #0x80 + lsls r6, r6, #9 + adds r0, r4, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r1, #3 + ands r1, r0 + cmp r1, #2 + beq _08063144 + cmp r1, #2 + bgt _08063114 + cmp r1, #1 + beq _0806311A + b _080631CA + .align 2, 0 +_08063110: .4byte gUnk_0810C498 +_08063114: + cmp r1, #3 + beq _0806317A + b _080631CA +_0806311A: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, [r4, #0x6c] + cmp r0, #0x80 + bls _08063132 + subs r0, r0, r5 + str r0, [r4, #0x6c] +_08063132: + lsls r1, r3, #1 + ldr r0, [r4, #0x70] + adds r0, r0, r1 + str r0, [r4, #0x70] + lsls r1, r6, #1 + ldr r0, [r4, #0x30] + adds r0, r0, r1 + str r0, [r4, #0x30] + b _080631CA +_08063144: + ldr r0, [r4, #0x6c] + adds r0, r0, r5 + str r0, [r4, #0x6c] + ldr r1, [r4, #0x70] + movs r2, #0x80 + lsls r2, r2, #1 + cmp r1, r2 + bls _0806316C + ldr r0, _08063168 @ =0x0000017F + cmp r1, r0 + bhi _0806315C + lsrs r3, r3, #1 +_0806315C: + subs r0, r1, r3 + cmp r0, #0xff + bhi _08063172 + str r2, [r4, #0x70] + b _08063174 + .align 2, 0 +_08063168: .4byte 0x0000017F +_0806316C: + cmp r1, #0x80 + bls _08063174 + subs r0, r1, r3 +_08063172: + str r0, [r4, #0x70] +_08063174: + ldr r0, [r4, #0x34] + subs r0, r0, r6 + b _080631C8 +_0806317A: + ldr r0, [r4, #0x6c] + ldr r1, _080631B4 @ =0x0000033F + cmp r0, r1 + bhi _08063186 + adds r0, r0, r5 + str r0, [r4, #0x6c] +_08063186: + cmp r2, r1 + bls _080631BC + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r4, #0 + movs r1, #0x11 + bl sub_080042AC + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0x11 + strh r0, [r1] + ldr r2, _080631B8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _080631DC + .align 2, 0 +_080631B4: .4byte 0x0000033F +_080631B8: .4byte gUnk_02033280 +_080631BC: + lsls r0, r3, #1 + adds r0, r2, r0 + str r0, [r4, #0x70] + ldr r0, [r4, #0x34] + ldr r1, _080631E0 @ =0xFFFE0000 + adds r0, r0, r1 +_080631C8: + str r0, [r4, #0x34] +_080631CA: + ldr r1, [r4, #0x6c] + ldr r2, [r4, #0x70] + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + ldr r1, _080631E4 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_080631DC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080631E0: .4byte 0xFFFE0000 +_080631E4: .4byte gUnk_02033280 + + thumb_func_start sub_080631E8 +sub_080631E8: @ 0x080631E8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806320C @ =gUnk_0810C804 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _08063208 + adds r0, r4, #0 + bl sub_0806ED78 +_08063208: + pop {r4, pc} + .align 2, 0 +_0806320C: .4byte gUnk_0810C804 + + thumb_func_start sub_08063210 +sub_08063210: @ 0x08063210 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0 + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063220 +sub_08063220: @ 0x08063220 + push {lr} + adds r2, r0, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08063238 + movs r0, #2 + strb r0, [r2, #0xc] + movs r1, #8 + b _0806323A +_08063238: + movs r1, #0 +_0806323A: + adds r0, r2, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r1 + beq _0806324C + adds r0, r2, #0 + bl sub_080042AC + b _08063252 +_0806324C: + adds r0, r2, #0 + bl sub_08063280 +_08063252: + pop {pc} + + thumb_func_start sub_08063254 +sub_08063254: @ 0x08063254 + push {r4, lr} + adds r4, r0, #0 + bl sub_08063280 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08063274 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0 + bl sub_08056378 +_08063274: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08063278 +sub_08063278: @ 0x08063278 + push {lr} + bl sub_08063280 + pop {pc} + + thumb_func_start sub_08063280 +sub_08063280: @ 0x08063280 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r2, [r3] + movs r1, #0x7f + ands r1, r2 + adds r0, r1, #0 + eors r0, r2 + strb r0, [r3] + cmp r1, #2 + bne _080632A6 + adds r0, r4, #0 + movs r1, #0x31 + movs r2, #0 + bl CreateFX +_080632A6: + pop {r4, pc} + + thumb_func_start sub_080632A8 +sub_080632A8: @ 0x080632A8 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080632BE + adds r0, r2, #0 + bl sub_08063410 + b _080632C4 +_080632BE: + adds r0, r2, #0 + bl sub_080632C8 +_080632C4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080632C8 +sub_080632C8: @ 0x080632C8 + push {lr} + ldr r2, _080632DC @ =gUnk_0810C8E0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080632DC: .4byte gUnk_0810C8E0 + + thumb_func_start sub_080632E0 +sub_080632E0: @ 0x080632E0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08063310 @ =gUnk_0810C8D4 + bl sub_0806FDEC + cmp r0, #0 + beq _0806330E + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r4, #0xc] +_0806330E: + pop {r4, pc} + .align 2, 0 +_08063310: .4byte gUnk_0810C8D4 + + thumb_func_start sub_08063314 +sub_08063314: @ 0x08063314 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + movs r1, #0xff + ands r0, r1 + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _08063342 + adds r0, r4, #0 + bl sub_080633C8 + adds r1, r0, #0 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r1 + beq _08063342 + adds r0, r4, #0 + bl sub_08004260 +_08063342: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08063360 + ldrb r0, [r4, #0xe] + ldr r1, _08063368 @ =0x00000A01 + adds r0, r0, r1 + bl sub_08056378 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_08063360: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08063368: .4byte 0x00000A01 + + thumb_func_start sub_0806336C +sub_0806336C: @ 0x0806336C + push {lr} + adds r2, r0, #0 + ldr r0, _0806338C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806338A + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + adds r0, r2, #0 + movs r1, #8 + bl sub_08004260 +_0806338A: + pop {pc} + .align 2, 0 +_0806338C: .4byte gUnk_02000050 + + thumb_func_start sub_08063390 +sub_08063390: @ 0x08063390 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080633BE + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 +_080633BE: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080633C8 +sub_080633C8: @ 0x080633C8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + cmp r0, #0 + bge _080633DE + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] +_080633DE: + pop {r4, pc} + + thumb_func_start sub_080633E0 +sub_080633E0: @ 0x080633E0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x3f + ands r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + + thumb_func_start sub_08063410 +sub_08063410: @ 0x08063410 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + bne _08063442 + ldr r1, _08063464 @ =gUnk_0810C8D4 + bl sub_0806FDEC + cmp r0, #0 + beq _08063462 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08063436 + ldr r0, _08063468 @ =gUnk_0810C894 + str r0, [r4, #0x48] + strb r5, [r4, #0xb] +_08063436: + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + bl sub_08078778 +_08063442: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0806344E + adds r0, r4, #0 + bl sub_0806346C +_0806344E: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 +_08063462: + pop {r4, r5, pc} + .align 2, 0 +_08063464: .4byte gUnk_0810C8D4 +_08063468: .4byte gUnk_0810C894 + + thumb_func_start sub_0806346C +sub_0806346C: @ 0x0806346C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _080634D8 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r6, r0] + movs r2, #0x2e + ldrsh r0, [r5, r2] + subs r4, r1, r0 + movs r0, #0x32 + ldrsh r1, [r6, r0] + movs r2, #0x32 + ldrsh r0, [r5, r2] + subs r3, r1, r0 + adds r4, #0x30 + adds r3, #0x18 + cmp r4, #0 + bge _08063490 + movs r4, #0 +_08063490: + cmp r4, #0x50 + ble _08063496 + movs r4, #0x50 +_08063496: + cmp r3, #0 + bge _0806349C + movs r3, #0 +_0806349C: + cmp r3, #0x40 + ble _080634A2 + movs r3, #0x40 +_080634A2: + asrs r4, r4, #4 + asrs r3, r3, #4 + ldr r2, _080634DC @ =gUnk_0810C8F0 + ldrb r1, [r6, #0x14] + lsrs r1, r1, #1 + lsls r0, r4, #2 + adds r1, r1, r0 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r4, [r1] + ldrb r0, [r5, #0xb] + cmp r4, r0 + beq _080634D6 + lsls r3, r4, #3 + ldr r0, _080634E0 @ =gUnk_0810C89C + adds r3, r3, r0 + movs r2, #4 + ldrsb r2, [r3, r2] + adds r0, r5, #0 + movs r1, #1 + bl sub_08078850 + strb r4, [r5, #0xb] +_080634D6: + pop {r4, r5, r6, pc} + .align 2, 0 +_080634D8: .4byte gLinkEntity +_080634DC: .4byte gUnk_0810C8F0 +_080634E0: .4byte gUnk_0810C89C + + thumb_func_start sub_080634E4 +sub_080634E4: @ 0x080634E4 + ldrb r0, [r0, #0xb] + str r0, [r1, #4] + bx lr + .align 2, 0 + + thumb_func_start sub_080634EC +sub_080634EC: @ 0x080634EC + ldr r2, _080634FC @ =gUnk_02034350 + ldr r1, _08063500 @ =gUnk_0810C88C + ldrb r0, [r0, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r2, #6] + bx lr + .align 2, 0 +_080634FC: .4byte gUnk_02034350 +_08063500: .4byte gUnk_0810C88C + + thumb_func_start sub_08063504 +sub_08063504: @ 0x08063504 + push {r4, lr} + adds r4, r1, #0 + ldr r1, _08063520 @ =gUnk_0810C88C + ldrb r0, [r0, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + bl sub_080544DC + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [r4, #0x14] + pop {r4, pc} + .align 2, 0 +_08063520: .4byte gUnk_0810C88C + + thumb_func_start sub_08063524 +sub_08063524: @ 0x08063524 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806353A + adds r0, r2, #0 + bl sub_0806362C + b _08063540 +_0806353A: + adds r0, r2, #0 + bl sub_08063544 +_08063540: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063544 +sub_08063544: @ 0x08063544 + push {lr} + ldr r2, _08063558 @ =gUnk_0810CAA0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08063558: .4byte gUnk_0810CAA0 + + thumb_func_start sub_0806355C +sub_0806355C: @ 0x0806355C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08078778 + pop {r4, pc} + + thumb_func_start sub_08063584 +sub_08063584: @ 0x08063584 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + cmp r0, #0 + blt _080635B2 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080635B8 + bl sub_08000E50 + movs r1, #0x3f + ands r1, r0 + cmp r1, #0 + bne _080635B2 + movs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_080635B2: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080635D0 +_080635B8: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080635D0 + movs r0, #0 + strb r0, [r4, #0xf] +_080635D0: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080635FC + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + ldrb r0, [r4, #0xe] + ldr r1, _08063604 @ =0x00000A01 + adds r0, r0, r1 + bl sub_08056378 +_080635FC: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08063604: .4byte 0x00000A01 + + thumb_func_start sub_08063608 +sub_08063608: @ 0x08063608 + push {lr} + adds r2, r0, #0 + ldr r0, _08063628 @ =gUnk_02000050 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _08063626 + movs r0, #1 + strb r0, [r2, #0xc] + strb r1, [r2, #0xf] + adds r0, r2, #0 + movs r1, #4 + bl sub_080042AC +_08063626: + pop {pc} + .align 2, 0 +_08063628: .4byte gUnk_02000050 + + thumb_func_start sub_0806362C +sub_0806362C: @ 0x0806362C + push {r4, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xc] + cmp r3, #1 + beq _08063662 + cmp r3, #1 + bgt _08063640 + cmp r3, #0 + beq _08063646 + b _080636D4 +_08063640: + cmp r3, #2 + beq _080636BA + b _080636D4 +_08063646: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x69 + strb r3, [r0] + adds r0, r4, #0 + bl sub_0807DD64 +_08063662: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _080636A4 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _080636A0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _080636D4 + .align 2, 0 +_080636A0: .4byte gLinkEntity +_080636A4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + b _080636D4 +_080636BA: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _080636D4 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_080636D4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080636D8 +sub_080636D8: @ 0x080636D8 + push {lr} + ldr r1, _080636EC @ =gUnk_02002A40 + ldrb r1, [r1, #8] + lsls r1, r1, #3 + ldr r2, _080636F0 @ =gUnk_0810CAAC + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_080636EC: .4byte gUnk_02002A40 +_080636F0: .4byte gUnk_0810CAAC + + thumb_func_start sub_080636F4 +sub_080636F4: @ 0x080636F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806370C +sub_0806370C: @ 0x0806370C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08063738 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + ldrh r0, [r2, #0x32] + subs r0, #4 + strh r0, [r2, #0x32] + adds r0, r2, #0 + movs r1, #2 + bl sub_080042AC + b _0806373E +_08063738: + adds r0, r2, #0 + bl sub_080042B8 +_0806373E: + pop {pc} + + thumb_func_start sub_08063740 +sub_08063740: @ 0x08063740 + push {lr} + ldr r2, _08063754 @ =gUnk_0810CBD8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08063754: .4byte gUnk_0810CBD8 + + thumb_func_start sub_08063758 +sub_08063758: @ 0x08063758 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08063794 @ =gUnk_0810CB78 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _080637B4 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xe] + ands r1, r2 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + subs r0, #0x42 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _08063798 + movs r0, #6 + b _0806379A + .align 2, 0 +_08063794: .4byte gUnk_0810CB78 +_08063798: + movs r0, #2 +_0806379A: + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + movs r1, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x69 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0807DD50 + adds r0, r4, #0 + bl sub_080637B8 +_080637B4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080637B8 +sub_080637B8: @ 0x080637B8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08063804 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _08063800 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _080637F2 + adds r1, #4 +_080637F2: + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0806F118 + b _0806382E + .align 2, 0 +_08063800: .4byte gLinkEntity +_08063804: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r5, r4, #0 + adds r5, #0x59 + ldrb r0, [r5] + cmp r0, #0xfe + bne _08063828 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r5] +_08063828: + adds r0, r4, #0 + bl sub_08004274 +_0806382E: + pop {r4, r5, pc} + + thumb_func_start sub_08063830 +sub_08063830: @ 0x08063830 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806384C + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_0806384C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08063850 +sub_08063850: @ 0x08063850 + push {lr} + ldrb r3, [r0, #0x18] + lsls r3, r3, #0x19 + lsrs r3, r3, #0x1f + rsbs r2, r3, #0 + orrs r2, r3 + asrs r2, r2, #0x1f + movs r3, #4 + ands r2, r3 + ldr r1, [r1, #4] + adds r1, r1, r2 + ldrb r2, [r0, #0x14] + lsrs r2, r2, #1 + adds r1, r1, r2 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063874 +sub_08063874: @ 0x08063874 + ldrb r1, [r0, #0xe] + strb r1, [r0, #0x14] + bx lr + .align 2, 0 + + thumb_func_start sub_0806387C +sub_0806387C: @ 0x0806387C + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r4, #3 + movs r0, #0xda + bl sub_0807CBD0 + cmp r0, #0 + bne _08063896 + movs r4, #0 + movs r0, #0xda + bl sub_0807CCB4 + b _080638D6 +_08063896: + movs r0, #0xd1 + bl sub_0807CBD0 + cmp r0, #0 + bne _080638D6 + movs r5, #0 + movs r4, #1 +_080638A4: + ldr r0, _080638F8 @ =gUnk_02002B0E + adds r1, r4, #0 + bl sub_0801D5A8 + cmp r0, #0 + beq _080638B2 + adds r5, #1 +_080638B2: + adds r4, #1 + cmp r4, #0x82 + ble _080638A4 + movs r4, #1 + cmp r5, #0x81 + ble _080638D6 + movs r4, #2 + movs r0, #0xd1 + bl sub_0807CCB4 + ldr r0, _080638FC @ =0x00000A17 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _08063900 @ =0x00000A57 + movs r1, #1 + bl sub_0807BA8C +_080638D6: + ldr r0, _08063904 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r1, r0, #6 + cmp r1, #0 + bge _080638E2 + movs r1, #0 +_080638E2: + ldr r2, _08063908 @ =gUnk_0810CBE4 + lsls r0, r4, #1 + lsls r1, r1, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r6, #0 + bl sub_08056398 + pop {r4, r5, r6, pc} + .align 2, 0 +_080638F8: .4byte gUnk_02002B0E +_080638FC: .4byte 0x00000A17 +_08063900: .4byte 0x00000A57 +_08063904: .4byte gUnk_02002A40 +_08063908: .4byte gUnk_0810CBE4 + + thumb_func_start sub_0806390C +sub_0806390C: @ 0x0806390C + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #1 + movs r0, #0xd9 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806392E + movs r5, #0 + movs r0, #0xd9 + bl sub_0807CCB4 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #1 + str r0, [r1, #0x14] +_0806392E: + ldr r0, _08063940 @ =gUnk_0810CC04 + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_08063940: .4byte gUnk_0810CC04 + + thumb_func_start sub_08063944 +sub_08063944: @ 0x08063944 + push {lr} + adds r3, r0, #0 + movs r0, #0 + str r0, [r1, #0x14] + ldr r0, _0806396C @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _08063958 + movs r0, #0 +_08063958: + ldrb r1, [r3, #0xb] + lsls r1, r1, #6 + lsls r0, r0, #3 + ldr r2, _08063970 @ =gUnk_0810CC08 + adds r0, r0, r2 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806396C: .4byte gUnk_02002A40 +_08063970: .4byte gUnk_0810CC08 + + thumb_func_start sub_08063974 +sub_08063974: @ 0x08063974 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xa] + lsls r5, r5, #2 + ldr r0, _080639C8 @ =gUnk_0810CBC0 + adds r5, r5, r0 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0xf + ands r2, r0 + ldrb r0, [r5] + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldr r2, _080639CC @ =gUnk_0810CD88 + ldrb r1, [r4, #0x1e] + movs r0, #3 + ands r0, r1 + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r2, [r0] + ldrb r0, [r5, #1] + adds r2, r2, r0 + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, r5, pc} + .align 2, 0 +_080639C8: .4byte gUnk_0810CBC0 +_080639CC: .4byte gUnk_0810CD88 + + thumb_func_start sub_080639D0 +sub_080639D0: @ 0x080639D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_080639E8 +sub_080639E8: @ 0x080639E8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08063A40 + ldrb r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08063A3C @ =gUnk_0810CB78 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08063A5C + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + movs r1, #0x41 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldrh r0, [r4, #0x32] + subs r0, #4 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08096208 + b _08063A5C + .align 2, 0 +_08063A3C: .4byte gUnk_0810CB78 +_08063A40: + adds r5, r4, #0 + adds r5, #0x59 + ldrb r0, [r5] + cmp r0, #0xfe + bne _08063A56 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r5] +_08063A56: + adds r0, r4, #0 + bl sub_08004274 +_08063A5C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08063A60 +sub_08063A60: @ 0x08063A60 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08063A76 + adds r0, r2, #0 + bl sub_08063B68 + b _08063A7C +_08063A76: + adds r0, r2, #0 + bl sub_08063A80 +_08063A7C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063A80 +sub_08063A80: @ 0x08063A80 + push {lr} + ldr r2, _08063A94 @ =gUnk_0810CDF8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08063A94: .4byte gUnk_0810CDF8 + + thumb_func_start sub_08063A98 +sub_08063A98: @ 0x08063A98 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08078778 + pop {r4, pc} + + thumb_func_start sub_08063AC0 +sub_08063AC0: @ 0x08063AC0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + cmp r0, #0 + blt _08063AEE + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08063AF4 + bl sub_08000E50 + movs r1, #0x3f + ands r1, r0 + cmp r1, #0 + bne _08063AEE + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + movs r0, #1 + strb r0, [r4, #0xf] +_08063AEE: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08063B0C +_08063AF4: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08063B0C + movs r0, #0 + strb r0, [r4, #0xf] +_08063B0C: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08063B38 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + ldrb r0, [r4, #0xe] + ldr r1, _08063B40 @ =0x00000A01 + adds r0, r0, r1 + bl sub_08056378 +_08063B38: + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08063B40: .4byte 0x00000A01 + + thumb_func_start sub_08063B44 +sub_08063B44: @ 0x08063B44 + push {lr} + adds r2, r0, #0 + ldr r0, _08063B64 @ =gUnk_02000050 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _08063B62 + movs r0, #1 + strb r0, [r2, #0xc] + strb r1, [r2, #0xf] + adds r0, r2, #0 + movs r1, #4 + bl sub_080042AC +_08063B62: + pop {pc} + .align 2, 0 +_08063B64: .4byte gUnk_02000050 + + thumb_func_start sub_08063B68 +sub_08063B68: @ 0x08063B68 + push {r4, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xc] + cmp r3, #1 + beq _08063B9E + cmp r3, #1 + bgt _08063B7C + cmp r3, #0 + beq _08063B82 + b _08063C10 +_08063B7C: + cmp r3, #2 + beq _08063BF6 + b _08063C10 +_08063B82: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x69 + strb r3, [r0] + adds r0, r4, #0 + bl sub_0807DD64 +_08063B9E: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08063BE0 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _08063BDC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _08063C10 + .align 2, 0 +_08063BDC: .4byte gLinkEntity +_08063BE0: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + b _08063C10 +_08063BF6: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08063C10 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_08063C10: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08063C14 +sub_08063C14: @ 0x08063C14 + push {lr} + movs r0, #7 + movs r1, #0x14 + bl sub_0805EB9C + cmp r0, #0 + beq _08063C28 + movs r1, #8 + bl sub_080042AC +_08063C28: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063C2C +sub_08063C2C: @ 0x08063C2C + push {lr} + movs r0, #7 + movs r1, #0x14 + bl sub_0805EB9C + cmp r0, #0 + beq _08063C40 + movs r1, #4 + bl sub_080042AC +_08063C40: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063C44 +sub_08063C44: @ 0x08063C44 + push {lr} + movs r0, #7 + movs r1, #0x14 + bl sub_0805EB9C + cmp r0, #0 + beq _08063C58 + movs r1, #0 + bl sub_080042AC +_08063C58: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063C5C +sub_08063C5C: @ 0x08063C5C + push {lr} + movs r0, #7 + movs r1, #0x14 + bl sub_0805EB9C + cmp r0, #0 + beq _08063C70 + movs r1, #9 + bl sub_080042AC +_08063C70: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063C74 +sub_08063C74: @ 0x08063C74 + push {lr} + movs r0, #7 + movs r1, #0x14 + bl sub_0805EB9C + cmp r0, #0 + beq _08063C8C + movs r2, #0x18 + rsbs r2, r2, #0 + movs r1, #8 + bl sub_080A2CFC +_08063C8C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063C90 +sub_08063C90: @ 0x08063C90 + push {lr} + ldr r1, _08063CA4 @ =gUnk_02002A40 + ldrb r1, [r1, #8] + lsls r1, r1, #3 + ldr r2, _08063CA8 @ =gUnk_0810CE04 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_08063CA4: .4byte gUnk_02002A40 +_08063CA8: .4byte gUnk_0810CE04 + + thumb_func_start sub_08063CAC +sub_08063CAC: @ 0x08063CAC + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_08063CC4 +sub_08063CC4: @ 0x08063CC4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08063CF0 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + ldrh r0, [r2, #0x32] + subs r0, #4 + strh r0, [r2, #0x32] + adds r0, r2, #0 + movs r1, #2 + bl sub_080042AC + b _08063CF6 +_08063CF0: + adds r0, r2, #0 + bl sub_080042B8 +_08063CF6: + pop {pc} + + thumb_func_start sub_08063CF8 +sub_08063CF8: @ 0x08063CF8 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08063D1C + ldr r0, _08063D18 @ =gUnk_0810F544 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08063D22 + .align 2, 0 +_08063D18: .4byte gUnk_0810F544 +_08063D1C: + adds r0, r2, #0 + bl sub_08063D24 +_08063D22: + pop {pc} + + thumb_func_start sub_08063D24 +sub_08063D24: @ 0x08063D24 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08063D40 @ =gUnk_0810F550 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08063D40: .4byte gUnk_0810F550 + + thumb_func_start sub_08063D44 +sub_08063D44: @ 0x08063D44 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08063DA0 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x46 + bhi _08063DC6 + ldrb r0, [r4, #9] + movs r1, #0x15 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + lsls r1, r1, #4 + ldr r0, _08063DA4 @ =gUnk_0810F524 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08063DC6 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + ldr r0, _08063DA8 @ =gUnk_0810F6BC + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + movs r2, #0 + bl sub_0806EE04 + ldrb r0, [r4, #0xa] + cmp r0, #0 + blt _08063DB6 + cmp r0, #3 + bgt _08063DAC + movs r0, #0xc + bl sub_080A7EE0 + str r4, [r0, #0x50] + movs r1, #0x3c + strb r1, [r0, #0xf] + b _08063DB6 + .align 2, 0 +_08063DA0: .4byte gUnk_03003DBC +_08063DA4: .4byte gUnk_0810F524 +_08063DA8: .4byte gUnk_0810F6BC +_08063DAC: + cmp r0, #5 + bgt _08063DB6 + adds r0, r4, #0 + bl sub_08078778 +_08063DB6: + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + strb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08063DC8 +_08063DC6: + pop {r4, pc} + + thumb_func_start sub_08063DC8 +sub_08063DC8: @ 0x08063DC8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0xff + bne _08063DF8 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldr r1, _08063DF4 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + b _08063E4C + .align 2, 0 +_08063DF4: .4byte gLinkEntity +_08063DF8: + adds r0, r4, #0 + bl sub_0806EE20 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + ldrb r1, [r4, #0x14] + cmp r0, r1 + beq _08063E18 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + b _08063E1E +_08063E18: + adds r0, r4, #0 + bl sub_08004274 +_08063E1E: + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _08063E4C + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r2] + ldr r1, _08063E50 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08064428 +_08063E4C: + pop {r4, pc} + .align 2, 0 +_08063E50: .4byte gLinkEntity + + thumb_func_start sub_08063E54 +sub_08063E54: @ 0x08063E54 + push {lr} + ldrb r1, [r0, #0xe] + subs r1, #1 + strb r1, [r0, #0xe] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _08063E68 + movs r0, #0xf + bl sub_0807CD10 +_08063E68: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08063E6C +sub_08063E6C: @ 0x08063E6C + push {lr} + adds r2, r0, #0 + ldr r0, _08063E8C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08063E8A + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x14] + adds r1, #4 + adds r0, r2, #0 + bl sub_08004260 +_08063E8A: + pop {pc} + .align 2, 0 +_08063E8C: .4byte gUnk_02000050 + + thumb_func_start sub_08063E90 +sub_08063E90: @ 0x08063E90 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #9] + movs r1, #0x15 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + lsls r1, r1, #4 + ldr r0, _08063EC8 @ =gUnk_0810F524 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08063F1E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xe] + cmp r1, #0 + beq _08063ECC + adds r1, r4, #0 + adds r1, #0x70 + movs r0, #8 + strb r0, [r1] + b _08063ED2 + .align 2, 0 +_08063EC8: .4byte gUnk_0810F524 +_08063ECC: + adds r0, r4, #0 + adds r0, #0x70 + strb r1, [r0] +_08063ED2: + movs r0, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r2, r0, #0 + cmp r2, #0 + bne _08063EF2 + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x68 + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r1, #2 + strh r0, [r1] + b _08063EFE +_08063EF2: + lsrs r1, r2, #0x10 + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + adds r0, #2 + strh r2, [r0] +_08063EFE: + adds r1, r4, #0 + adds r1, #0x71 + movs r0, #0 + strb r0, [r1] + subs r1, #0x39 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + bl sub_08063F20 +_08063F1E: + pop {r4, pc} + + thumb_func_start sub_08063F20 +sub_08063F20: @ 0x08063F20 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _08063F72 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + strb r1, [r2] + ldr r1, _08063F74 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + adds r0, #0x70 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08064428 +_08063F72: + pop {r4, pc} + .align 2, 0 +_08063F74: .4byte gLinkEntity + + thumb_func_start sub_08063F78 +sub_08063F78: @ 0x08063F78 + push {lr} + adds r2, r0, #0 + ldr r0, _08063FA8 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08063FA6 + ldrb r0, [r2, #0xc] + subs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x14] + lsrs r1, r1, #1 + adds r0, r2, #0 + adds r0, #0x70 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, #4 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_08004260 +_08063FA6: + pop {pc} + .align 2, 0 +_08063FA8: .4byte gUnk_02000050 + + thumb_func_start sub_08063FAC +sub_08063FAC: @ 0x08063FAC + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x3f + adds r2, r0, #0 + ands r2, r1 + ldrb r3, [r6, #0x1e] + adds r5, r0, #0 + ands r5, r3 + adds r1, r6, #0 + adds r1, #0x5b + ldrb r1, [r1] + adds r4, r0, #0 + ands r4, r1 + ldrb r0, [r6, #9] + cmp r0, #0x15 + bne _08063FEC + movs r0, #0x40 + ands r0, r3 + cmp r0, #0 + beq _08063FE2 + adds r5, #0x21 + movs r2, #1 + rsbs r2, r2, #0 + movs r4, #0 + b _08063FF6 +_08063FE2: + adds r2, #0x19 + cmp r4, #0 + beq _08063FF6 + adds r4, #0x1f + b _08063FF6 +_08063FEC: + adds r2, #0x46 + adds r5, #0x2d + cmp r4, #0 + beq _08063FF6 + adds r4, #0x4c +_08063FF6: + subs r4, #1 + adds r0, r6, #0 + movs r1, #0 + bl sub_0806FF60 + adds r0, r6, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_0806FF60 + adds r0, r6, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806FF60 + adds r0, r6, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r6, #0 + movs r1, #1 + movs r2, #2 + bl sub_0806FFD8 + adds r0, r6, #0 + bl sub_0807000C + pop {r4, r5, r6, pc} + + thumb_func_start sub_08064030 +sub_08064030: @ 0x08064030 + ldr r0, _08064040 @ =gUnk_02034350 + ldr r2, [r0, #0x68] + rsbs r0, r2, #0 + orrs r0, r2 + lsrs r0, r0, #0x1f + str r0, [r1, #0x14] + bx lr + .align 2, 0 +_08064040: .4byte gUnk_02034350 + + thumb_func_start sub_08064044 +sub_08064044: @ 0x08064044 + ldr r1, _0806404C @ =gUnk_030010A0 + movs r0, #1 + strb r0, [r1, #8] + bx lr + .align 2, 0 +_0806404C: .4byte gUnk_030010A0 + + thumb_func_start sub_08064050 +sub_08064050: @ 0x08064050 + push {lr} + adds r2, r1, #0 + movs r1, #0 + str r1, [r2, #4] + ldrb r0, [r0, #0xb] + cmp r0, #0x12 + beq _08064072 + cmp r0, #0x12 + bgt _08064068 + cmp r0, #0x11 + beq _0806406E + b _0806407A +_08064068: + cmp r0, #0x13 + beq _08064076 + b _0806407A +_0806406E: + movs r0, #1 + b _08064078 +_08064072: + movs r0, #2 + b _08064078 +_08064076: + movs r0, #3 +_08064078: + str r0, [r2, #4] +_0806407A: + pop {pc} + + thumb_func_start sub_0806407C +sub_0806407C: @ 0x0806407C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _080640E8 + adds r0, #1 + strb r0, [r5, #0x18] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strh r0, [r5, #0x12] + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _080640C4 + cmp r0, #8 + bgt _080640B2 + cmp r0, #0 + beq _080640BC + b _080640DA +_080640B2: + cmp r0, #0x10 + beq _080640CC + cmp r0, #0x18 + beq _080640D4 + b _080640DA +_080640BC: + cmp r1, #0x10 + bne _080640DA + movs r1, #8 + b _080640DA +_080640C4: + cmp r1, #0x18 + bne _080640DA + movs r1, #0x10 + b _080640DA +_080640CC: + cmp r1, #0 + bne _080640DA + movs r1, #0x18 + b _080640DA +_080640D4: + cmp r1, #8 + bne _080640DA + movs r1, #0 +_080640DA: + strb r1, [r4, #0x15] + adds r0, r1, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + movs r0, #0x80 + strh r0, [r4, #0x24] +_080640E8: + ldrb r0, [r4, #0x14] + lsrs r2, r0, #1 + adds r1, r2, #4 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _0806410A + adds r0, r4, #0 + adds r0, #0x70 + movs r1, #0 + ldrsb r1, [r0, r1] + adds r1, #4 + adds r1, r2, r1 + adds r0, r4, #0 + bl sub_08004260 +_0806410A: + adds r0, r4, #0 + bl sub_080AEF88 + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x68 + movs r3, #0 + ldrsh r0, [r2, r3] + subs r1, r1, r0 + cmp r1, #0x10 + ble _0806412C + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806412C: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _0806413E + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806413E: + movs r6, #0x32 + ldrsh r1, [r4, r6] + adds r2, r4, #0 + adds r2, #0x6a + movs r6, #0 + ldrsh r0, [r2, r6] + subs r1, r1, r0 + cmp r1, #0x10 + ble _0806415A + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_0806415A: + cmp r1, r3 + bge _08064168 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08064168: + ldrh r0, [r5, #0x12] + subs r0, #1 + strh r0, [r5, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0806417A + ldr r1, _0806417C @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0806417A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806417C: .4byte gUnk_02033280 + + thumb_func_start sub_08064180 +sub_08064180: @ 0x08064180 + push {lr} + movs r0, #7 + movs r1, #0x15 + movs r2, #7 + bl sub_0805EB00 + cmp r0, #0 + beq _08064194 + bl sub_0805E7BC +_08064194: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08064198 +sub_08064198: @ 0x08064198 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x71 + ldrb r1, [r4] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + ble _080641AE + subs r0, r1, #1 + strb r0, [r4] +_080641AE: + ldr r0, _080641D8 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r2, #0x32 + ldrsh r0, [r5, r2] + subs r1, r1, r0 + cmp r1, #2 + ble _080641C0 + movs r1, #2 +_080641C0: + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080641CA + adds r1, r0, #0 +_080641CA: + adds r6, r4, #0 + cmp r1, #0 + beq _08064256 + cmp r1, #0 + ble _080641DC + movs r0, #0x10 + b _080641DE + .align 2, 0 +_080641D8: .4byte gLinkEntity +_080641DC: + movs r0, #0 +_080641DE: + strb r0, [r5, #0x15] + cmp r1, #0 + bge _080641E6 + rsbs r1, r1, #0 +_080641E6: + lsls r0, r1, #8 + strh r0, [r5, #0x24] + movs r0, #0x32 + ldrsh r4, [r5, r0] + adds r0, r5, #0 + bl sub_080AEF88 + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r6, r5, #0 + adds r6, #0x71 + cmp r4, r0 + beq _08064256 + ldr r0, _080642B0 @ =gLinkEntity + movs r2, #0x24 + ldrsh r1, [r0, r2] + movs r0, #0xa0 + lsls r0, r0, #1 + cmp r1, r0 + ble _08064222 + ldr r0, _080642B4 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #6 + bl __modsi3 + cmp r0, #0 + bne _08064222 + adds r0, r5, #0 + bl sub_080A29FC +_08064222: + adds r4, r5, #0 + adds r4, #0x71 + movs r0, #0xa + strb r0, [r4] + ldrb r0, [r5, #0x15] + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, #4 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + adds r6, r4, #0 + ldrb r0, [r0] + cmp r1, r0 + beq _08064256 + adds r0, r5, #0 + bl sub_08004260 +_08064256: + movs r0, #0 + ldrsb r0, [r6, r0] + cmp r0, #0 + bne _0806428C + ldr r1, _080642B0 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _0806428C + adds r0, r5, #0 + bl sub_08004260 +_0806428C: + adds r0, r5, #0 + bl sub_0806ED78 + movs r0, #0x36 + ldrsh r4, [r5, r0] + ldr r0, _080642B0 @ =gLinkEntity + ldrh r0, [r0, #0x36] + strh r0, [r5, #0x36] + cmp r4, #0 + bge _080642AC + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080642AC + adds r0, r5, #0 + bl sub_080A29FC +_080642AC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080642B0: .4byte gLinkEntity +_080642B4: .4byte gUnk_030010A0 + + thumb_func_start sub_080642B8 +sub_080642B8: @ 0x080642B8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x71 + ldrb r1, [r4] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + ble _080642CE + subs r0, r1, #1 + strb r0, [r4] +_080642CE: + ldr r0, _080642F8 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r2, #0x2e + ldrsh r0, [r5, r2] + subs r1, r1, r0 + cmp r1, #2 + ble _080642E0 + movs r1, #2 +_080642E0: + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080642EA + adds r1, r0, #0 +_080642EA: + adds r6, r4, #0 + cmp r1, #0 + beq _08064376 + cmp r1, #0 + ble _080642FC + movs r0, #8 + b _080642FE + .align 2, 0 +_080642F8: .4byte gLinkEntity +_080642FC: + movs r0, #0x18 +_080642FE: + strb r0, [r5, #0x15] + cmp r1, #0 + bge _08064306 + rsbs r1, r1, #0 +_08064306: + lsls r0, r1, #8 + strh r0, [r5, #0x24] + movs r0, #0x2e + ldrsh r4, [r5, r0] + adds r0, r5, #0 + bl sub_080AEF88 + movs r1, #0x2e + ldrsh r0, [r5, r1] + adds r6, r5, #0 + adds r6, #0x71 + cmp r4, r0 + beq _08064376 + ldr r0, _080643D0 @ =gLinkEntity + movs r2, #0x24 + ldrsh r1, [r0, r2] + movs r0, #0xa0 + lsls r0, r0, #1 + cmp r1, r0 + ble _08064342 + ldr r0, _080643D4 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #6 + bl __modsi3 + cmp r0, #0 + bne _08064342 + adds r0, r5, #0 + bl sub_080A29FC +_08064342: + adds r4, r5, #0 + adds r4, #0x71 + movs r0, #0xa + strb r0, [r4] + ldrb r0, [r5, #0x15] + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, #4 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + adds r6, r4, #0 + ldrb r0, [r0] + cmp r1, r0 + beq _08064376 + adds r0, r5, #0 + bl sub_08004260 +_08064376: + movs r0, #0 + ldrsb r0, [r6, r0] + cmp r0, #0 + bne _080643AC + ldr r1, _080643D0 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5B0 + strb r0, [r5, #0x14] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r1, r5, #0 + adds r1, #0x70 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _080643AC + adds r0, r5, #0 + bl sub_08004260 +_080643AC: + adds r0, r5, #0 + bl sub_0806ED78 + movs r0, #0x36 + ldrsh r4, [r5, r0] + ldr r0, _080643D0 @ =gLinkEntity + ldrh r0, [r0, #0x36] + strh r0, [r5, #0x36] + cmp r4, #0 + bge _080643CC + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080643CC + adds r0, r5, #0 + bl sub_080A29FC +_080643CC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080643D0: .4byte gLinkEntity +_080643D4: .4byte gUnk_030010A0 + + thumb_func_start sub_080643D8 +sub_080643D8: @ 0x080643D8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + bne _080643EA + movs r3, #0 + b _08064406 +_080643EA: + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + bne _080643F8 + movs r3, #1 + b _08064406 +_080643F8: + movs r0, #3 + bl sub_0807CA84 + movs r3, #3 + cmp r0, #0 + bne _08064406 + movs r3, #2 +_08064406: + ldrb r1, [r4, #0xb] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + ldr r2, _08064424 @ =gUnk_0810F6D4 + lsls r1, r3, #1 + lsls r0, r0, #3 + adds r1, r1, r0 + adds r1, r1, r2 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_08064424: .4byte gUnk_0810F6D4 + + thumb_func_start sub_08064428 +sub_08064428: @ 0x08064428 + push {lr} + adds r3, r0, #0 + ldr r0, _0806444C @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r1, r0, #2 + cmp r1, #0 + bge _08064438 + movs r1, #0 +_08064438: + ldrb r2, [r3, #0xb] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _08064454 + ldrb r0, [r3, #0xb] + lsls r0, r0, #3 + ldr r1, _08064450 @ =gUnk_0810CF4C + b _08064460 + .align 2, 0 +_0806444C: .4byte gUnk_02002A40 +_08064450: .4byte gUnk_0810CF4C +_08064454: + movs r0, #0x7f + ands r0, r2 + lsls r0, r0, #6 + lsls r1, r1, #3 + ldr r2, _0806446C @ =gUnk_0810D0A4 + adds r1, r1, r2 +_08064460: + adds r1, r0, r1 + adds r0, r3, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806446C: .4byte gUnk_0810D0A4 + + thumb_func_start sub_08064470 +sub_08064470: @ 0x08064470 + push {lr} + ldr r0, _08064484 @ =gUnk_03003F80 + adds r0, #0xab + ldrb r0, [r0] + cmp r0, #1 + beq _0806447E + movs r0, #0 +_0806447E: + str r0, [r1, #0x14] + pop {pc} + .align 2, 0 +_08064484: .4byte gUnk_03003F80 + + thumb_func_start sub_08064488 +sub_08064488: @ 0x08064488 + push {lr} + ldr r1, _080644A0 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #2 + beq _0806449C + adds r1, #0xab + movs r0, #0 + strb r0, [r1] +_0806449C: + pop {pc} + .align 2, 0 +_080644A0: .4byte gUnk_03003F80 + + thumb_func_start sub_080644A4 +sub_080644A4: @ 0x080644A4 + ldr r0, _080644B0 @ =gUnk_03003F80 + adds r0, #0xab + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_080644B0: .4byte gUnk_03003F80 + + thumb_func_start sub_080644B4 +sub_080644B4: @ 0x080644B4 + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldrb r1, [r0, #0x14] + ldr r0, [r2, #4] + cmp r1, r0 + bne _080644C4 + movs r3, #1 +_080644C4: + str r3, [r2, #0x14] + pop {pc} + + thumb_func_start sub_080644C8 +sub_080644C8: @ 0x080644C8 + push {r4, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldr r3, _08064500 @ =gUnk_03000BF0 + movs r4, #0xa + ldrsh r1, [r3, r4] + subs r1, r0, r1 + adds r0, r1, #0 + adds r0, #8 + cmp r0, #0 + blt _08064504 + adds r0, r1, #0 + subs r0, #8 + cmp r0, #0xf0 + bgt _08064504 + movs r0, #0x32 + ldrsh r1, [r2, r0] + movs r2, #0xc + ldrsh r0, [r3, r2] + subs r0, r1, r0 + cmp r0, #0 + blt _08064504 + subs r0, #0x18 + cmp r0, #0xa0 + bgt _08064504 + movs r0, #1 + b _08064506 + .align 2, 0 +_08064500: .4byte gUnk_03000BF0 +_08064504: + movs r0, #0 +_08064506: + pop {r4, pc} + + thumb_func_start sub_08064508 +sub_08064508: @ 0x08064508 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806451E + adds r0, r2, #0 + bl sub_08064570 + b _08064522 +_0806451E: + bl sub_0805E780 +_08064522: + pop {pc} + + thumb_func_start sub_08064524 +sub_08064524: @ 0x08064524 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + ldrb r5, [r4, #0x1e] + ldrb r0, [r4, #9] + cmp r0, #0x16 + bne _08064540 + cmp r2, #0 + beq _08064548 + adds r2, #0xa + b _08064548 +_08064540: + cmp r2, #0 + beq _08064546 + adds r2, #0x1a +_08064546: + adds r5, #0x10 +_08064548: + subs r2, #1 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08064570 +sub_08064570: @ 0x08064570 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _080645EA + cmp r5, #1 + bgt _08064584 + cmp r5, #0 + beq _0806458A + b _0806463C +_08064584: + cmp r5, #2 + beq _0806462C + b _0806463C +_0806458A: + ldrb r1, [r4, #9] + movs r0, #0x16 + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080645D0 @ =gUnk_0810F874 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806463C + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r2, r0, #0 + cmp r2, #0 + bne _080645D4 + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r1, #2 + strh r0, [r1] + b _080645E0 + .align 2, 0 +_080645D0: .4byte gUnk_0810F874 +_080645D4: + lsrs r1, r2, #0x10 + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + adds r0, #2 + strh r2, [r0] +_080645E0: + movs r0, #0 + str r0, [r4, #0x68] + adds r0, r4, #0 + bl sub_0807DD50 +_080645EA: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _0806463C + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + strb r1, [r2] + ldr r1, _08064628 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004260 + ldr r0, [r4, #0x68] + cmp r0, #0 + beq _0806463C + bl _call_via_r0 + b _0806463C + .align 2, 0 +_08064628: .4byte gLinkEntity +_0806462C: + ldr r0, _08064640 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806463C + movs r0, #1 + strb r0, [r4, #0xc] +_0806463C: + pop {r4, r5, pc} + .align 2, 0 +_08064640: .4byte gUnk_02000050 + + thumb_func_start sub_08064644 +sub_08064644: @ 0x08064644 + ldr r1, [r1, #4] + str r1, [r0, #0x68] + bx lr + .align 2, 0 + + thumb_func_start sub_0806464C +sub_0806464C: @ 0x0806464C + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + beq _0806465E + movs r4, #2 + b _08064674 +_0806465E: + movs r0, #0xa0 + bl sub_0807CBD0 + cmp r0, #0 + bne _08064672 + movs r4, #0 + movs r0, #0xa0 + bl sub_0807CCB4 + b _08064674 +_08064672: + movs r4, #1 +_08064674: + ldr r0, _08064684 @ =gUnk_0810F88C + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_08064684: .4byte gUnk_0810F88C + + thumb_func_start sub_08064688 +sub_08064688: @ 0x08064688 + push {lr} + ldr r1, _0806469C @ =gUnk_02002A40 + ldrb r1, [r1, #8] + lsls r1, r1, #3 + ldr r2, _080646A0 @ =gUnk_0810F894 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806469C: .4byte gUnk_02002A40 +_080646A0: .4byte gUnk_0810F894 + + thumb_func_start sub_080646A4 +sub_080646A4: @ 0x080646A4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _08064710 + adds r0, #1 + strb r0, [r5, #0x18] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x20 + strh r0, [r5, #0x12] + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #0x18 + ands r1, r0 + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _080646EC + cmp r0, #8 + bgt _080646DA + cmp r0, #0 + beq _080646E4 + b _08064702 +_080646DA: + cmp r0, #0x10 + beq _080646F4 + cmp r0, #0x18 + beq _080646FC + b _08064702 +_080646E4: + cmp r1, #0x10 + bne _08064702 + movs r1, #8 + b _08064702 +_080646EC: + cmp r1, #0x18 + bne _08064702 + movs r1, #0x10 + b _08064702 +_080646F4: + cmp r1, #0 + bne _08064702 + movs r1, #0x18 + b _08064702 +_080646FC: + cmp r1, #8 + bne _08064702 + movs r1, #0 +_08064702: + strb r1, [r4, #0x15] + adds r0, r1, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + movs r0, #0x80 + strh r0, [r4, #0x24] +_08064710: + ldr r0, [r5, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r5, #8] + adds r0, r4, #0 + bl sub_080AEF88 + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x6c + movs r3, #0 + ldrsh r0, [r2, r3] + subs r1, r1, r0 + cmp r1, #0x10 + ble _0806473A + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806473A: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _0806474C + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strh r0, [r5, #0x12] +_0806474C: + movs r6, #0x32 + ldrsh r1, [r4, r6] + adds r2, r4, #0 + adds r2, #0x6e + movs r6, #0 + ldrsh r0, [r2, r6] + subs r1, r1, r0 + cmp r1, #0x10 + ble _08064768 + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08064768: + cmp r1, r3 + bge _08064776 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strh r0, [r5, #0x12] +_08064776: + ldrh r0, [r5, #0x12] + subs r0, #1 + strh r0, [r5, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08064788 + ldr r1, _0806478C @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_08064788: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806478C: .4byte gUnk_02033280 + + thumb_func_start sub_08064790 +sub_08064790: @ 0x08064790 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080647C2 + cmp r0, #1 + bgt _080647A4 + cmp r0, #0 + beq _080647AA + b _08064824 +_080647A4: + cmp r0, #2 + beq _0806480A + b _08064824 +_080647AA: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0807DD50 + b _08064824 +_080647C2: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08064800 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + bl sub_0806F118 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r0, #0x10 + strb r1, [r0] + ldr r1, _080647FC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + b _08064824 + .align 2, 0 +_080647FC: .4byte gLinkEntity +_08064800: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _08064824 +_0806480A: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08064824 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_08064824: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08064828 +sub_08064828: @ 0x08064828 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r5, r0, #0 + ldr r6, _08064858 @ =gUnk_02002A40 + adds r0, r4, #0 + bl sub_08002632 + ldr r2, _0806485C @ =0x00000141 + adds r1, r6, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0806484E + ldrb r0, [r6, #8] + cmp r0, #6 + bhi _0806484E + movs r5, #0 +_0806484E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08078784 + pop {r4, r5, r6, pc} + .align 2, 0 +_08064858: .4byte gUnk_02002A40 +_0806485C: .4byte 0x00000141 + + thumb_func_start sub_08064860 +sub_08064860: @ 0x08064860 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08064886 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #6 + bl sub_080042AC + b _0806488C +_08064886: + adds r0, r2, #0 + bl sub_080042B8 +_0806488C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08064890 +sub_08064890: @ 0x08064890 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080648C2 + cmp r0, #1 + bgt _080648A4 + cmp r0, #0 + beq _080648AA + b _08064924 +_080648A4: + cmp r0, #2 + beq _0806490A + b _08064924 +_080648AA: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0807DD50 + b _08064924 +_080648C2: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08064900 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + bl sub_0806F118 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r0, #0x10 + strb r1, [r0] + ldr r1, _080648FC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + b _08064924 + .align 2, 0 +_080648FC: .4byte gLinkEntity +_08064900: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _08064924 +_0806490A: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08064924 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_08064924: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08064928 +sub_08064928: @ 0x08064928 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r5, r0, #0 + ldr r6, _08064958 @ =gUnk_02002A40 + adds r0, r4, #0 + bl sub_08002632 + ldr r2, _0806495C @ =0x00000141 + adds r1, r6, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _0806494E + ldrb r0, [r6, #8] + cmp r0, #6 + bhi _0806494E + movs r5, #0 +_0806494E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08078784 + pop {r4, r5, r6, pc} + .align 2, 0 +_08064958: .4byte gUnk_02002A40 +_0806495C: .4byte 0x00000141 + + thumb_func_start sub_08064960 +sub_08064960: @ 0x08064960 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08064986 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #6 + bl sub_080042AC + b _0806498C +_08064986: + adds r0, r2, #0 + bl sub_080042B8 +_0806498C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08064990 +sub_08064990: @ 0x08064990 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080649C2 + cmp r0, #1 + bgt _080649A4 + cmp r0, #0 + beq _080649AA + b _08064A24 +_080649A4: + cmp r0, #2 + beq _08064A0A + b _08064A24 +_080649AA: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0807DD50 + b _08064A24 +_080649C2: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08064A00 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + bl sub_0806F118 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r0, #0x10 + strb r1, [r0] + ldr r1, _080649FC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + b _08064A24 + .align 2, 0 +_080649FC: .4byte gLinkEntity +_08064A00: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _08064A24 +_08064A0A: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08064A24 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_08064A24: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08064A28 +sub_08064A28: @ 0x08064A28 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r5, r0, #0 + ldr r6, _08064A58 @ =gUnk_02002A40 + adds r0, r4, #0 + bl sub_08002632 + ldr r2, _08064A5C @ =0x00000141 + adds r1, r6, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08064A4E + ldrb r0, [r6, #8] + cmp r0, #6 + bhi _08064A4E + movs r5, #0 +_08064A4E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08078784 + pop {r4, r5, r6, pc} + .align 2, 0 +_08064A58: .4byte gUnk_02002A40 +_08064A5C: .4byte 0x00000141 + + thumb_func_start sub_08064A60 +sub_08064A60: @ 0x08064A60 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08064A86 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #6 + bl sub_080042AC + b _08064A8C +_08064A86: + adds r0, r2, #0 + bl sub_080042B8 +_08064A8C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08064A90 +sub_08064A90: @ 0x08064A90 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08064ABC + ldr r0, _08064AB8 @ =gUnk_0810FA44 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + b _08064B42 + .align 2, 0 +_08064AB8: .4byte gUnk_0810FA44 +_08064ABC: + ldrb r1, [r4, #0xc] + adds r5, r1, #0 + cmp r5, #0 + bne _08064AE4 + ldr r1, _08064AE0 @ =gUnk_0810FA38 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08064B42 + movs r0, #1 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + adds r0, r4, #0 + bl sub_0807DD50 + b _08064B42 + .align 2, 0 +_08064AE0: .4byte gUnk_0810FA38 +_08064AE4: + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08064B00 + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08064B42 + movs r0, #1 + strb r0, [r4, #0xc] + b _08064B42 +_08064B00: + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #2 + bne _08064B34 + movs r0, #0xff + orrs r0, r1 + strb r0, [r4, #0xc] + strb r3, [r2] + ldr r1, _08064B30 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _08064B42 + .align 2, 0 +_08064B30: .4byte gLinkEntity +_08064B34: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + adds r0, r4, #0 + bl sub_08064C9C +_08064B42: + pop {r4, r5, pc} + + thumb_func_start sub_08064B44 +sub_08064B44: @ 0x08064B44 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08064B80 @ =gUnk_0810FA38 + bl sub_0806FDEC + cmp r0, #0 + beq _08064B7E + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + ldr r1, _08064B84 @ =gUnk_0810FA5A + adds r0, r4, #0 + movs r2, #0 + bl sub_0806EE04 + adds r0, r4, #0 + bl sub_08064CC0 + movs r1, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] +_08064B7E: + pop {r4, pc} + .align 2, 0 +_08064B80: .4byte gUnk_0810FA38 +_08064B84: .4byte gUnk_0810FA5A + + thumb_func_start sub_08064B88 +sub_08064B88: @ 0x08064B88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x39 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #1 + beq _08064BFA + cmp r0, #1 + bgt _08064BA2 + cmp r0, #0 + beq _08064BA8 + b _08064BFA +_08064BA2: + cmp r0, #2 + beq _08064BCE + b _08064BFA +_08064BA8: + adds r0, r4, #0 + bl sub_0806EE20 + adds r2, r0, #0 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r4, #0x14] + cmp r2, #0 + beq _08064BC6 + movs r1, #0x7f + ands r1, r2 + adds r0, r4, #0 + bl sub_08004260 +_08064BC6: + adds r0, r4, #0 + bl sub_08004274 + b _08064C28 +_08064BCE: + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + cmp r1, #0 + bge _08064BE0 + ldrb r1, [r4, #0x14] +_08064BE0: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08004260 + movs r0, #0 + strb r0, [r5] + adds r0, r4, #0 + bl sub_0806F118 + b _08064C28 +_08064BFA: + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + cmp r1, #0 + bge _08064C0C + ldrb r1, [r4, #0x14] +_08064C0C: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_08004260 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08064CD8 +_08064C28: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08064C2C +sub_08064C2C: @ 0x08064C2C + push {lr} + adds r2, r0, #0 + ldr r0, _08064C4C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08064C48 + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0xf] + adds r0, r2, #0 + bl sub_08004260 +_08064C48: + pop {pc} + .align 2, 0 +_08064C4C: .4byte gUnk_02000050 + + thumb_func_start sub_08064C50 +sub_08064C50: @ 0x08064C50 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08064C68 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xf] + adds r0, r4, #0 + bl sub_08004260 +_08064C68: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08064C6C +sub_08064C6C: @ 0x08064C6C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x3f + ands r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + + thumb_func_start sub_08064C9C +sub_08064C9C: @ 0x08064C9C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _08064CB8 + ldr r0, _08064CBC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08064CB8 + adds r0, r2, #0 + bl sub_080A29BC +_08064CB8: + pop {pc} + .align 2, 0 +_08064CBC: .4byte gUnk_030010A0 + + thumb_func_start sub_08064CC0 +sub_08064CC0: @ 0x08064CC0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_08064CD8 +sub_08064CD8: @ 0x08064CD8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #2 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _08064CF4 + movs r0, #0x73 + bl sub_0807CBD0 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f +_08064CF4: + ldr r0, _08064D04 @ =gUnk_0810FA54 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_08064D04: .4byte gUnk_0810FA54 + + thumb_func_start sub_08064D08 +sub_08064D08: @ 0x08064D08 + movs r1, #1 + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_08064D10 +sub_08064D10: @ 0x08064D10 + movs r1, #0 + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_08064D18 +sub_08064D18: @ 0x08064D18 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08064D50 + ldr r1, _08064D4C @ =gUnk_0810FA38 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08064D56 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _08064D56 + .align 2, 0 +_08064D4C: .4byte gUnk_0810FA38 +_08064D50: + adds r0, r4, #0 + bl sub_08004274 +_08064D56: + pop {r4, pc} + + thumb_func_start sub_08064D58 +sub_08064D58: @ 0x08064D58 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08064D6E + adds r0, r2, #0 + bl sub_08064DE4 + b _08064D74 +_08064D6E: + adds r0, r2, #0 + bl sub_08064D78 +_08064D74: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08064D78 +sub_08064D78: @ 0x08064D78 + push {lr} + ldr r2, _08064D8C @ =gUnk_0810FBFC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08064D8C: .4byte gUnk_0810FBFC + + thumb_func_start sub_08064D90 +sub_08064D90: @ 0x08064D90 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_080042AC + movs r0, #1 + strb r0, [r4, #0xf] + pop {r4, pc} + + thumb_func_start sub_08064DA0 +sub_08064DA0: @ 0x08064DA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08064EE8 + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08064DC8 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #6 + bl sub_080042AC + movs r0, #0 + bl sub_08056378 +_08064DC8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08064DCC +sub_08064DCC: @ 0x08064DCC + push {r4, lr} + adds r4, r0, #0 + bl sub_08064EE8 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + movs r0, #1 + strb r0, [r4, #0xc] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08064DE4 +sub_08064DE4: @ 0x08064DE4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08064E1A + cmp r0, #1 + bgt _08064DF8 + cmp r0, #0 + beq _08064DFE + b _08064E6A +_08064DF8: + cmp r0, #2 + beq _08064E56 + b _08064E6A +_08064DFE: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0807DD50 + b _08064E6A +_08064E1A: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08064E4C + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _08064E48 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _08064E6A + .align 2, 0 +_08064E48: .4byte gLinkEntity +_08064E4C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _08064E6A +_08064E56: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08064E6A + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801E99C +_08064E6A: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r5, #0xf + ands r5, r1 + adds r0, r5, #0 + eors r0, r1 + strb r0, [r2] + cmp r5, #0 + beq _08064EA0 + movs r1, #0x29 + cmp r5, #3 + bne _08064E86 + movs r1, #0x2a +_08064E86: + adds r0, r4, #0 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08064EA0 + cmp r5, #2 + bne _08064EA0 + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #0x18] +_08064EA0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08064EA4 +sub_08064EA4: @ 0x08064EA4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r5, r4, #0 + adds r5, #0x68 + strb r0, [r5] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08064EBE + cmp r0, #3 + beq _08064EC2 + b _08064ED8 +_08064EBE: + movs r0, #0x59 + b _08064EC4 +_08064EC2: + movs r0, #0x5a +_08064EC4: + bl sub_0801E7F4 + cmp r0, #0 + beq _08064ED8 + movs r0, #0xc + bl sub_0807CA84 + cmp r0, #0 + bne _08064ED8 + strb r0, [r5] +_08064ED8: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08064EE8 +sub_08064EE8: @ 0x08064EE8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r5, #0xf + ands r5, r1 + adds r0, r5, #0 + eors r0, r1 + strb r0, [r2] + cmp r5, #0 + beq _08064F26 + movs r1, #0x2a + cmp r5, #3 + beq _08064F0C + movs r1, #0x29 +_08064F0C: + adds r0, r4, #0 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08064F26 + cmp r5, #2 + bne _08064F26 + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #0x18] +_08064F26: + pop {r4, r5, pc} + + thumb_func_start sub_08064F28 +sub_08064F28: @ 0x08064F28 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + mov r8, r1 + movs r0, #0 + str r0, [r1, #0x14] + ldr r1, _08064F60 @ =gUnk_0810FC50 + ldrb r0, [r6, #0xa] + adds r0, r0, r1 + ldrb r7, [r0] + adds r0, r7, #0 + bl sub_0807CC3C + cmp r0, #0 + bne _08064F84 + ldr r4, _08064F64 @ =gUnk_02002A40 + adds r0, r6, #0 + bl sub_08002632 + ldr r1, _08064F68 @ =0x00000141 + adds r4, r4, r1 + adds r0, r0, r4 + ldrb r4, [r0] + cmp r4, #1 + bls _08064F6C + movs r5, #3 + b _08064F7E + .align 2, 0 +_08064F60: .4byte gUnk_0810FC50 +_08064F64: .4byte gUnk_02002A40 +_08064F68: .4byte 0x00000141 +_08064F6C: + movs r0, #0xc + bl sub_0807CA84 + movs r5, #2 + cmp r0, #0 + bne _08064F7E + rsbs r0, r4, #0 + orrs r0, r4 + lsrs r5, r0, #0x1f +_08064F7E: + movs r4, #1 + rsbs r4, r4, #0 + b _08064FD2 +_08064F84: + movs r0, #0x3a + bl GetProgressFlag + cmp r0, #0 + bne _08064FCE + ldr r0, _08064FB0 @ =gUnk_02002A40 + ldr r1, _08064FB4 @ =0x00000117 + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0x64 + subs r4, r0, r1 + cmp r4, #0 + bgt _08064FB8 + movs r5, #8 + movs r4, #0 + movs r0, #0x3a + bl sub_0807CD04 + movs r0, #1 + mov r1, r8 + str r0, [r1, #0x14] + b _08064FD2 + .align 2, 0 +_08064FB0: .4byte gUnk_02002A40 +_08064FB4: .4byte 0x00000117 +_08064FB8: + movs r5, #7 + cmp r4, #9 + ble _08064FC0 + movs r5, #6 +_08064FC0: + cmp r4, #0x27 + ble _08064FC6 + movs r5, #5 +_08064FC6: + cmp r4, #0x45 + ble _08064FD2 + movs r5, #4 + b _08064FD2 +_08064FCE: + movs r5, #8 + movs r4, #0 +_08064FD2: + ldr r2, _08065008 @ =gUnk_0810FC08 + ldrb r1, [r6, #0xa] + lsls r0, r1, #3 + adds r0, r0, r1 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r6, #0 + bl sub_08056398 + cmp r4, #0 + ble _08064FF4 + ldr r1, _0806500C @ =gUnk_02000050 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1, #0x10] +_08064FF4: + adds r0, r7, #0 + bl sub_0807CC3C + cmp r0, #0 + bne _08065010 + adds r0, r7, #0 + bl sub_0807CD10 + b _08065016 + .align 2, 0 +_08065008: .4byte gUnk_0810FC08 +_0806500C: .4byte gUnk_02000050 +_08065010: + adds r0, r7, #0 + bl sub_0807CD8C +_08065016: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0806501C +sub_0806501C: @ 0x0806501C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806504A + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + movs r1, #6 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08065042 + movs r1, #0xa +_08065042: + adds r0, r2, #0 + bl sub_080042AC + b _08065050 +_0806504A: + adds r0, r2, #0 + bl sub_08064EE8 +_08065050: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08065054 +sub_08065054: @ 0x08065054 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806507C @ =gUnk_0810FDA4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0807DF74 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_0806507C: .4byte gUnk_0810FDA4 + + thumb_func_start sub_08065080 +sub_08065080: @ 0x08065080 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 + ldr r3, _080650C4 @ =gUnk_0810FDA0 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_08078850 + ldr r1, _080650C8 @ =gUnk_080142B0 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r4, #0x84 + str r0, [r4] + pop {r4, pc} + .align 2, 0 +_080650C4: .4byte gUnk_0810FDA0 +_080650C8: .4byte gUnk_080142B0 + + thumb_func_start sub_080650CC +sub_080650CC: @ 0x080650CC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r6, _080650F8 @ =gUnk_02034350 + ldr r0, [r6, #0x68] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08065100 + movs r1, #0 + movs r0, #4 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, _080650FC @ =gUnk_080143C0 + bl sub_0807DB88 + b _080651A6 + .align 2, 0 +_080650F8: .4byte gUnk_02034350 +_080650FC: .4byte gUnk_080143C0 +_08065100: + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _0806517C + adds r3, r5, #0 + adds r3, #0x39 + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + beq _0806517C + strb r4, [r3] + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + movs r1, #7 + bl sub_08004260 + ldrb r0, [r6, #6] + cmp r0, #0 + bne _0806513C + ldr r7, _08065138 @ =0x00002C01 + b _0806515E + .align 2, 0 +_08065138: .4byte 0x00002C01 +_0806513C: + ldrb r0, [r6, #6] + bl sub_08053FD0 + adds r7, r0, #0 + ldrb r0, [r6, #6] + bl sub_08053FE0 + mov r8, r0 + movs r0, #4 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, _08065174 @ =gUnk_08014384 + bl sub_0807DB88 +_0806515E: + adds r0, r7, #0 + adds r1, r5, #0 + bl sub_08056398 + ldr r1, _08065178 @ =gUnk_02000050 + mov r2, r8 + lsls r0, r2, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1, #0x10] + b _080651A6 + .align 2, 0 +_08065174: .4byte gUnk_08014384 +_08065178: .4byte gUnk_02000050 +_0806517C: + ldrb r1, [r2] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080651A0 + ldr r4, _0806519C @ =gUnk_0810FDB8 + bl sub_08000E50 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r4 + ldrb r1, [r1] + adds r0, r5, #0 + bl sub_08004260 + b _080651A6 + .align 2, 0 +_0806519C: .4byte gUnk_0810FDB8 +_080651A0: + adds r0, r5, #0 + bl sub_08004274 +_080651A6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080651AC +sub_080651AC: @ 0x080651AC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r0, _080651D4 @ =gUnk_02000050 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _080651D2 + adds r0, r4, #0 + adds r0, #0x39 + strb r1, [r0] + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_080651D2: + pop {r4, pc} + .align 2, 0 +_080651D4: .4byte gUnk_02000050 + + thumb_func_start sub_080651D8 +sub_080651D8: @ 0x080651D8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r1, _080651F4 @ =gUnk_0810FDC8 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080651F4: .4byte gUnk_0810FDC8 + + thumb_func_start sub_080651F8 +sub_080651F8: @ 0x080651F8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _0806522A + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + movs r2, #0x18 + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #8 + bl sub_080A2CFC + movs r0, #1 + bl sub_08078A90 +_0806522A: + pop {r4, pc} + + thumb_func_start sub_0806522C +sub_0806522C: @ 0x0806522C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065248 + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + ldr r0, _0806524C @ =0x00002C16 + bl sub_08056398 +_08065248: + pop {pc} + .align 2, 0 +_0806524C: .4byte 0x00002C16 + + thumb_func_start sub_08065250 +sub_08065250: @ 0x08065250 + push {r4, lr} + adds r4, r0, #0 + bl sub_08056338 + adds r1, r0, #0 + cmp r1, #0 + beq _08065264 + cmp r1, #1 + beq _0806527E + b _0806528A +_08065264: + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + movs r2, #0x18 + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #8 + bl sub_080A2CFC + b _0806528A +_0806527E: + movs r0, #0 + movs r1, #7 + strb r1, [r4, #0xd] + strb r0, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xf] +_0806528A: + pop {r4, pc} + + thumb_func_start sub_0806528C +sub_0806528C: @ 0x0806528C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080652A8 + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + ldr r0, _080652AC @ =0x00002C18 + bl sub_08056398 +_080652A8: + pop {pc} + .align 2, 0 +_080652AC: .4byte 0x00002C18 + + thumb_func_start sub_080652B0 +sub_080652B0: @ 0x080652B0 + push {lr} + adds r2, r0, #0 + ldr r0, _080652DC @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080652DA + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + movs r0, #0xa + strb r0, [r2, #0xe] + ldr r1, _080652E0 @ =gUnk_02034350 + ldrb r0, [r2, #0xf] + str r0, [r1, #0x68] + movs r0, #0x36 + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 +_080652DA: + pop {pc} + .align 2, 0 +_080652DC: .4byte gUnk_02000050 +_080652E0: .4byte gUnk_02034350 + + thumb_func_start sub_080652E4 +sub_080652E4: @ 0x080652E4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + cmp r0, #0 + beq _080652F4 + subs r0, #1 + strb r0, [r1, #0xe] + b _08065308 +_080652F4: + ldr r0, _0806530C @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #8 + beq _08065308 + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + ldr r0, _08065310 @ =0x00002C19 + bl sub_08056398 +_08065308: + pop {pc} + .align 2, 0 +_0806530C: .4byte gLinkEntity +_08065310: .4byte 0x00002C19 + + thumb_func_start sub_08065314 +sub_08065314: @ 0x08065314 + push {lr} + adds r2, r0, #0 + ldr r0, _08065334 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08065332 + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + movs r0, #3 + movs r1, #3 + bl sub_080A7138 +_08065332: + pop {pc} + .align 2, 0 +_08065334: .4byte gUnk_02000050 + + thumb_func_start sub_08065338 +sub_08065338: @ 0x08065338 + push {lr} + adds r2, r0, #0 + ldr r0, _08065360 @ =gUnk_02000050 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _0806535C + movs r0, #1 + strb r0, [r2, #0xc] + strb r1, [r2, #0xd] + ldr r1, _08065364 @ =gUnk_02034350 + ldrb r0, [r2, #0xf] + str r0, [r1, #0x68] + adds r0, r2, #0 + movs r1, #4 + bl sub_08004260 +_0806535C: + pop {pc} + .align 2, 0 +_08065360: .4byte gUnk_02000050 +_08065364: .4byte gUnk_02034350 + + thumb_func_start sub_08065368 +sub_08065368: @ 0x08065368 + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_08065370 +sub_08065370: @ 0x08065370 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + mov r8, r1 + movs r6, #1 + ldr r0, _0806539C @ =gUnk_02034350 + ldrb r5, [r0, #6] + movs r0, #0 + mov sb, r0 + cmp r5, #0x66 + beq _0806541A + cmp r5, #0x66 + bhi _080653AA + cmp r5, #0x61 + beq _08065426 + cmp r5, #0x61 + bhi _080653A0 + cmp r5, #0xd + beq _080653D0 + b _0806543C + .align 2, 0 +_0806539C: .4byte gUnk_02034350 +_080653A0: + cmp r5, #0x64 + beq _08065414 + cmp r5, #0x65 + beq _08065420 + b _0806543C +_080653AA: + cmp r5, #0x6c + blo _0806543C + cmp r5, #0x6d + bls _080653EC + cmp r5, #0x6f + bhi _0806543C + ldr r2, _080653C8 @ =gUnk_080FD5A4 + ldr r1, _080653CC @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xaf + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xad + b _080653FA + .align 2, 0 +_080653C8: .4byte gUnk_080FD5A4 +_080653CC: .4byte gUnk_02002A40 +_080653D0: + movs r0, #0xd + bl sub_0807CA84 + cmp r0, #0 + bne _080653E4 + movs r0, #0xe + bl sub_0807CA84 + cmp r0, #0 + beq _0806543C +_080653E4: + ldr r0, _080653E8 @ =0x00002C0B + b _080654C2 + .align 2, 0 +_080653E8: .4byte 0x00002C0B +_080653EC: + ldr r2, _08065408 @ =gUnk_080FD5A0 + ldr r1, _0806540C @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xae + ldrb r0, [r0] + adds r0, r0, r2 + adds r1, #0xac +_080653FA: + ldrb r0, [r0] + ldrb r1, [r1] + cmp r0, r1 + bhi _0806543C + ldr r0, _08065410 @ =0x00002C0E + b _080654C2 + .align 2, 0 +_08065408: .4byte gUnk_080FD5A0 +_0806540C: .4byte gUnk_02002A40 +_08065410: .4byte 0x00002C0E +_08065414: + movs r1, #0x55 + mov sb, r1 + b _0806543C +_0806541A: + movs r0, #0x56 + mov sb, r0 + b _0806543C +_08065420: + movs r1, #0xcd + mov sb, r1 + b _0806543C +_08065426: + ldr r0, _08065494 @ =gUnk_02002A40 + adds r0, #0xc2 + ldrh r1, [r0] + ldr r0, _08065498 @ =0x000003E6 + cmp r1, r0 + bls _0806543C + ldr r0, _0806549C @ =0x00002C0E + adds r1, r4, #0 + bl sub_08056398 + movs r6, #0 +_0806543C: + cmp r6, #0 + beq _080654C8 + adds r0, r5, #0 + bl sub_08053FE0 + adds r6, r0, #0 + ldr r7, _08065494 @ =gUnk_02002A40 + adds r0, r7, #0 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r6, r0 + bhi _080654C0 + rsbs r0, r6, #0 + bl sub_080526CC + ldr r4, _080654A0 @ =gUnk_02034350 + ldrb r1, [r4, #7] + adds r0, r5, #0 + movs r2, #2 + bl sub_080A7C18 + movs r0, #0 + strb r0, [r4, #6] + strb r0, [r4, #7] + movs r0, #1 + mov r1, r8 + str r0, [r1, #0x14] + mov r0, sb + cmp r0, #0 + beq _0806547C + bl sub_0807CCB4 +_0806547C: + ldr r1, [r7, #0x5c] + movs r0, #2 + rsbs r0, r0, #0 + cmp r1, r0 + bhi _0806548A + adds r0, r1, #1 + str r0, [r7, #0x5c] +_0806548A: + ldr r0, [r7, #0x5c] + cmp r0, #9 + bls _080654A8 + ldr r0, _080654A4 @ =0x00002C11 + b _080654B6 + .align 2, 0 +_08065494: .4byte gUnk_02002A40 +_08065498: .4byte 0x000003E6 +_0806549C: .4byte 0x00002C0E +_080654A0: .4byte gUnk_02034350 +_080654A4: .4byte 0x00002C11 +_080654A8: + cmp r6, #0x63 + bls _080654B4 + ldr r0, _080654B0 @ =0x00002C10 + b _080654B6 + .align 2, 0 +_080654B0: .4byte 0x00002C10 +_080654B4: + ldr r0, _080654BC @ =0x00002C0F +_080654B6: + mov r1, r8 + str r0, [r1, #4] + b _080654CE + .align 2, 0 +_080654BC: .4byte 0x00002C0F +_080654C0: + ldr r0, _080654D8 @ =0x00002C0D +_080654C2: + adds r1, r4, #0 + bl sub_08056398 +_080654C8: + movs r0, #0 + mov r1, r8 + str r0, [r1, #0x14] +_080654CE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080654D8: .4byte 0x00002C0D + + thumb_func_start sub_080654DC +sub_080654DC: @ 0x080654DC + push {lr} + movs r2, #0x18 + rsbs r2, r2, #0 + movs r1, #8 + bl sub_080A2D0C + pop {pc} + .align 2, 0 + + thumb_func_start sub_080654EC +sub_080654EC: @ 0x080654EC + push {lr} + movs r2, #0x18 + rsbs r2, r2, #0 + movs r1, #8 + bl sub_080A2CFC + pop {pc} + .align 2, 0 + + thumb_func_start sub_080654FC +sub_080654FC: @ 0x080654FC + push {lr} + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08065518 + ldr r1, _08065514 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + b _08065522 + .align 2, 0 +_08065514: .4byte gUnk_02033280 +_08065518: + ldr r2, _08065524 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] +_08065522: + pop {pc} + .align 2, 0 +_08065524: .4byte gUnk_02033280 + + thumb_func_start sub_08065528 +sub_08065528: @ 0x08065528 + ldr r2, _08065530 @ =gUnk_02034350 + ldr r0, [r1, #4] + str r0, [r2, #0x68] + bx lr + .align 2, 0 +_08065530: .4byte gUnk_02034350 + + thumb_func_start sub_08065534 +sub_08065534: @ 0x08065534 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08065558 + ldr r0, _08065554 @ =gUnk_0810FEC4 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08065568 + .align 2, 0 +_08065554: .4byte gUnk_0810FEC4 +_08065558: + ldr r0, _0806556C @ =gUnk_0810FEBC + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_08065568: + pop {pc} + .align 2, 0 +_0806556C: .4byte gUnk_0810FEBC + + thumb_func_start sub_08065570 +sub_08065570: @ 0x08065570 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08065598 @ =gUnk_0810FEB0 + bl sub_0806FDEC + cmp r0, #0 + beq _08065596 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0xf] + movs r0, #2 + strb r0, [r4, #0x14] +_08065596: + pop {r4, pc} + .align 2, 0 +_08065598: .4byte gUnk_0810FEB0 + + thumb_func_start sub_0806559C +sub_0806559C: @ 0x0806559C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bls _080655D0 + movs r0, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + cmp r0, #0 + bge _080655C6 + ldrb r0, [r4, #0x14] + adds r1, r0, #4 + b _080655CA +_080655C6: + strb r0, [r4, #0x14] + adds r1, r0, #0 +_080655CA: + adds r0, r4, #0 + adds r0, #0x58 + b _080655D6 +_080655D0: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] +_080655D6: + ldrb r0, [r0] + cmp r0, r1 + beq _080655E4 + adds r0, r4, #0 + bl sub_08004260 + b _080655EA +_080655E4: + adds r0, r4, #0 + bl sub_08004274 +_080655EA: + adds r0, r4, #0 + bl sub_0806ED78 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08065604 + movs r0, #0 + strb r0, [r1] + bl sub_080791D0 +_08065604: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08065608 +sub_08065608: @ 0x08065608 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08065644 @ =gUnk_0810FEB0 + bl sub_0806FDEC + cmp r0, #0 + beq _08065640 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + bl sub_0807DD50 +_08065640: + pop {r4, pc} + .align 2, 0 +_08065644: .4byte gUnk_0810FEB0 + + thumb_func_start sub_08065648 +sub_08065648: @ 0x08065648 + push {lr} + adds r2, r0, #0 + movs r0, #0x39 + adds r0, r0, r2 + mov ip, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #2 + bne _08065676 + ldrb r0, [r2, #0xc] + adds r3, r2, #0 + adds r3, #0x69 + movs r1, #0 + strb r0, [r3] + movs r0, #4 + strb r0, [r2, #0xc] + mov r0, ip + strb r1, [r0] + adds r0, r2, #0 + bl sub_0806F118 + b _0806567E +_08065676: + adds r0, r2, #0 + movs r1, #0 + bl sub_0807DD94 +_0806567E: + pop {pc} + + thumb_func_start sub_08065680 +sub_08065680: @ 0x08065680 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _080656A0 + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x6a + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_080656A0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080656A4 +sub_080656A4: @ 0x080656A4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080656D0 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080656C8 + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x6a + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_080656C8: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_080656D0: .4byte gUnk_02000050 + + thumb_func_start sub_080656D4 +sub_080656D4: @ 0x080656D4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x39 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #2 + bne _080656FC + ldrb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x69 + movs r1, #0 + strb r0, [r2] + movs r0, #4 + strb r0, [r4, #0xc] + strb r1, [r5] + adds r0, r4, #0 + bl sub_0806F118 + b _08065738 +_080656FC: + cmp r0, #0 + beq _08065740 + movs r0, #0x37 + bl sub_0807CA84 + adds r2, r0, #0 + cmp r2, #0 + beq _0806571C + ldr r1, _08065718 @ =gUnk_0800B41C + adds r0, r4, #0 + bl sub_0807DAD0 + b _08065740 + .align 2, 0 +_08065718: .4byte gUnk_0800B41C +_0806571C: + ldrb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + movs r0, #3 + strb r0, [r4, #0xc] + strb r2, [r5] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r0, [r0, #4] + adds r1, r4, #0 + bl sub_08056398 +_08065738: + adds r0, r4, #0 + bl sub_0806574C + b _08065748 +_08065740: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_08065748: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806574C +sub_0806574C: @ 0x0806574C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0806577C @ =gLinkEntity + bl sub_080045C4 + bl sub_0806F5A4 + adds r5, r4, #0 + adds r5, #0x58 + ldrb r2, [r5] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + adds r1, r1, r0 + cmp r2, r1 + beq _08065772 + adds r0, r4, #0 + bl sub_080042AC +_08065772: + ldrb r1, [r5] + adds r0, r4, #0 + adds r0, #0x6a + strb r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_0806577C: .4byte gLinkEntity + + thumb_func_start sub_08065780 +sub_08065780: @ 0x08065780 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08000E50 + movs r2, #6 + adds r1, r0, #0 + ands r1, r2 + strb r1, [r4, #0x14] + ldr r2, _080657A4 @ =gUnk_0810FED8 + lsrs r0, r0, #8 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r5, #0x10] + pop {r4, r5, pc} + .align 2, 0 +_080657A4: .4byte gUnk_0810FED8 + + thumb_func_start sub_080657A8 +sub_080657A8: @ 0x080657A8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #7 + ands r2, r0 + adds r2, #0xb + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080657DC +sub_080657DC: @ 0x080657DC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08065814 + ldr r1, _08065810 @ =gUnk_0810FEB0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806581A + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _0806581A + .align 2, 0 +_08065810: .4byte gUnk_0810FEB0 +_08065814: + adds r0, r4, #0 + bl sub_08004274 +_0806581A: + pop {r4, pc} + + thumb_func_start sub_0806581C +sub_0806581C: @ 0x0806581C + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08065840 + ldr r0, _0806583C @ =gUnk_0810FF64 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0806585C + .align 2, 0 +_0806583C: .4byte gUnk_0810FF64 +_08065840: + ldr r1, _08065860 @ =gUnk_0810FF5C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0806585C + adds r0, r4, #0 + bl sub_0806ED78 +_0806585C: + pop {r4, pc} + .align 2, 0 +_08065860: .4byte gUnk_0810FF5C + + thumb_func_start sub_08065864 +sub_08065864: @ 0x08065864 + push {lr} + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + movs r1, #0xc + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08065880 +sub_08065880: @ 0x08065880 + push {lr} + bl sub_080042B8 + pop {pc} + + thumb_func_start sub_08065888 +sub_08065888: @ 0x08065888 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + bl sub_0807DD50 + pop {r4, pc} + + thumb_func_start sub_080658BC +sub_080658BC: @ 0x080658BC + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _080658F4 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _080658F0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _080658FC + .align 2, 0 +_080658F0: .4byte gLinkEntity +_080658F4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_080658FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08065900 +sub_08065900: @ 0x08065900 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08065910 + movs r0, #1 + strb r0, [r4, #0xc] +_08065910: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08065914 +sub_08065914: @ 0x08065914 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #7 + movs r1, #0x1f + movs r2, #7 + bl sub_0805EB00 + adds r4, r0, #0 + cmp r4, #0 + beq _08065938 + movs r2, #0xc0 + lsls r2, r2, #0xd + ldr r3, _0806595C @ =0xFFFF0000 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + str r5, [r4, #0x50] +_08065938: + movs r0, #7 + movs r1, #0x20 + movs r2, #7 + bl sub_0805EB00 + adds r4, r0, #0 + cmp r4, #0 + beq _08065958 + movs r2, #0xa0 + lsls r2, r2, #0xe + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #0 + bl sub_0806FA48 + str r5, [r4, #0x50] +_08065958: + pop {r4, r5, pc} + .align 2, 0 +_0806595C: .4byte 0xFFFF0000 + + thumb_func_start sub_08065960 +sub_08065960: @ 0x08065960 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08065986 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #0xc + bl sub_080042AC + b _0806598C +_08065986: + adds r0, r2, #0 + bl sub_080042B8 +_0806598C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08065990 +sub_08065990: @ 0x08065990 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080659B4 @ =gUnk_0811006C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08065A64 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_080659B4: .4byte gUnk_0811006C + + thumb_func_start sub_080659B8 +sub_080659B8: @ 0x080659B8 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #6 + strb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x69 + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + + thumb_func_start sub_080659F0 +sub_080659F0: @ 0x080659F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08065AA4 + pop {r4, pc} + + thumb_func_start sub_08065A00 +sub_08065A00: @ 0x08065A00 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08065AA4 + pop {r4, pc} + + thumb_func_start sub_08065A10 +sub_08065A10: @ 0x08065A10 + push {lr} + adds r2, r0, #0 + ldr r0, _08065A30 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08065A2E + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x14] + lsrs r1, r1, #1 + adds r0, r2, #0 + bl sub_080042AC +_08065A2E: + pop {pc} + .align 2, 0 +_08065A30: .4byte gUnk_02000050 + + thumb_func_start sub_08065A34 +sub_08065A34: @ 0x08065A34 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08065A4E + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_080042AC +_08065A4E: + pop {r4, pc} + + thumb_func_start sub_08065A50 +sub_08065A50: @ 0x08065A50 + push {lr} + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + ldr r2, _08065A60 @ =gUnk_08110080 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_08065A60: .4byte gUnk_08110080 + + thumb_func_start sub_08065A64 +sub_08065A64: @ 0x08065A64 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08065A8C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + rsbs r0, r0, #0 + lsrs r5, r0, #0x1f + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + cmp r5, r0 + beq _08065A9C + cmp r5, #0 + bne _08065A90 + adds r0, r4, #0 + bl sub_08078778 + b _08065A9C + .align 2, 0 +_08065A8C: .4byte gUnk_03003F80 +_08065A90: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080787A8 +_08065A9C: + adds r0, r4, #0 + adds r0, #0x69 + strb r5, [r0] + pop {r4, r5, pc} + + thumb_func_start sub_08065AA4 +sub_08065AA4: @ 0x08065AA4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + movs r2, #0 + ldrsb r2, [r0, r2] + cmp r2, #0 + beq _08065B18 + ldr r0, _08065AD0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08065B00 + cmp r2, #2 + bne _08065AD4 + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806F118 + b _08065AE6 + .align 2, 0 +_08065AD0: .4byte gUnk_03003F80 +_08065AD4: + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_08065A50 +_08065AE6: + ldr r1, _08065AFC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + b _08065B0A + .align 2, 0 +_08065AFC: .4byte gLinkEntity +_08065B00: + adds r0, r4, #0 + bl sub_08065A50 + bl sub_080791D0 +_08065B0A: + movs r0, #0xd3 + bl sub_080A3268 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] +_08065B18: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08065B1C +sub_08065B1C: @ 0x08065B1C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08065B42 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #7 + bl sub_080042AC + b _08065B48 +_08065B42: + adds r0, r2, #0 + bl sub_080042B8 +_08065B48: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08065B4C +sub_08065B4C: @ 0x08065B4C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08065B68 @ =gUnk_08110118 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08065B68: .4byte gUnk_08110118 + + thumb_func_start sub_08065B6C +sub_08065B6C: @ 0x08065B6C + push {lr} + ldrb r1, [r0, #0xc] + adds r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + ldr r2, _08065B98 @ =0xFFFF8000 + adds r1, r2, #0 + ldrh r2, [r0, #0x30] + adds r1, r1, r2 + strh r1, [r0, #0x30] + movs r1, #6 + strb r1, [r0, #0x14] + movs r1, #3 + bl sub_080042AC + pop {pc} + .align 2, 0 +_08065B98: .4byte 0xFFFF8000 + + thumb_func_start sub_08065B9C +sub_08065B9C: @ 0x08065B9C + push {lr} + bl sub_080042B8 + pop {pc} + + thumb_func_start sub_08065BA4 +sub_08065BA4: @ 0x08065BA4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08065BBA + adds r0, r4, #0 + bl sub_08065C0C + b _08065BEA +_08065BBA: + ldr r1, _08065BEC @ =gUnk_08110164 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bhi _08065BEA + ldr r2, _08065BF0 @ =gUnk_0811015C + ldrb r0, [r4, #0xf] + adds r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x36] +_08065BEA: + pop {r4, pc} + .align 2, 0 +_08065BEC: .4byte gUnk_08110164 +_08065BF0: .4byte gUnk_0811015C + + thumb_func_start sub_08065BF4 +sub_08065BF4: @ 0x08065BF4 + push {lr} + ldr r2, _08065C08 @ =gUnk_0811017C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08065C08: .4byte gUnk_0811017C + + thumb_func_start sub_08065C0C +sub_08065C0C: @ 0x08065C0C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08065C42 + cmp r0, #1 + bgt _08065C20 + cmp r0, #0 + beq _08065C2A + b _08065CCA +_08065C20: + cmp r0, #2 + beq _08065C7E + cmp r0, #3 + beq _08065C8A + b _08065CCA +_08065C2A: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0807DD50 + b _08065CCA +_08065C42: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08065C74 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _08065C70 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _08065CCA + .align 2, 0 +_08065C70: .4byte gLinkEntity +_08065C74: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _08065CCA +_08065C7E: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08065CCA + b _08065CC6 +_08065C8A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065CCA + ldr r1, [r4, #0x6c] + ldrh r2, [r1] + ldr r0, _08065CB4 @ =0x0000FFFF + cmp r2, r0 + beq _08065CBC + ldr r0, _08065CB8 @ =gUnk_03000F50 + adds r0, #0x68 + strh r2, [r0] + adds r1, #2 + ldrh r0, [r1] + strb r0, [r4, #0xe] + adds r1, #2 + str r1, [r4, #0x6c] + b _08065CCA + .align 2, 0 +_08065CB4: .4byte 0x0000FFFF +_08065CB8: .4byte gUnk_03000F50 +_08065CBC: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #0x18] +_08065CC6: + movs r0, #1 + strb r0, [r4, #0xc] +_08065CCA: + pop {r4, pc} + + thumb_func_start sub_08065CCC +sub_08065CCC: @ 0x08065CCC + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #0x1e + strb r1, [r0, #0xe] + ldrb r2, [r0, #0x19] + subs r1, #0x2b + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #0x19] + ldr r1, _08065CF8 @ =gUnk_0811022E + str r1, [r0, #0x6c] + ldr r1, _08065CFC @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xfd + lsls r0, r0, #6 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x10 + strh r0, [r1] + bx lr + .align 2, 0 +_08065CF8: .4byte gUnk_0811022E +_08065CFC: .4byte gUnk_03000F50 + + thumb_func_start sub_08065D00 +sub_08065D00: @ 0x08065D00 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_08065D18 +sub_08065D18: @ 0x08065D18 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldrb r1, [r4, #0x18] + subs r0, #0x22 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x19] + ldr r0, _08065D6C @ =gUnk_08110188 + str r0, [r4, #0x6c] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + ldr r1, _08065D70 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xfd + lsls r0, r0, #6 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + pop {r4, pc} + .align 2, 0 +_08065D6C: .4byte gUnk_08110188 +_08065D70: .4byte gUnk_03000F50 + + thumb_func_start sub_08065D74 +sub_08065D74: @ 0x08065D74 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065DB4 + ldr r2, [r1, #0x6c] + ldrh r3, [r2] + ldr r0, _08065DA0 @ =0x0000FFFF + cmp r3, r0 + beq _08065DA8 + ldr r0, _08065DA4 @ =gUnk_03000F50 + adds r0, #0x68 + strh r3, [r0] + ldrh r0, [r2, #2] + strb r0, [r1, #0xe] + adds r0, r2, #4 + str r0, [r1, #0x6c] + b _08065DB4 + .align 2, 0 +_08065DA0: .4byte 0x0000FFFF +_08065DA4: .4byte gUnk_03000F50 +_08065DA8: + ldrb r0, [r1, #0xc] + adds r0, #1 + strb r0, [r1, #0xc] + movs r0, #0 + bl sub_08056378 +_08065DB4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08065DB8 +sub_08065DB8: @ 0x08065DB8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #4 + bhi _08065E74 + lsls r0, r0, #2 + ldr r1, _08065DCC @ =_08065DD0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08065DCC: .4byte _08065DD0 +_08065DD0: @ jump table + .4byte _08065DE4 @ case 0 + .4byte _08065E08 @ case 1 + .4byte _08065EB0 @ case 2 + .4byte _08065E34 @ case 3 + .4byte _08065E4E @ case 4 +_08065DE4: + ldr r0, _08065E04 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08065EB0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #4 + bl sub_080042AC + b _08065EB0 + .align 2, 0 +_08065E04: .4byte gUnk_02000050 +_08065E08: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065EB0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xb4 + strb r0, [r4, #0xe] + ldr r1, _08065E30 @ =gUnk_02018EB0 + ldrb r0, [r1, #1] + adds r0, #1 + strb r0, [r1, #1] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + b _08065EB0 + .align 2, 0 +_08065E30: .4byte gUnk_02018EB0 +_08065E34: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065EB0 + movs r0, #0 + bl sub_08056378 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _08065EB0 +_08065E4E: + ldr r0, _08065E6C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08065EB0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldr r0, _08065E70 @ =gUnk_0811022E + str r0, [r4, #0x6c] + b _08065EB0 + .align 2, 0 +_08065E6C: .4byte gUnk_02000050 +_08065E70: .4byte gUnk_0811022E +_08065E74: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065EB0 + ldr r1, [r4, #0x6c] + ldrh r2, [r1] + ldr r0, _08065E9C @ =0x0000FFFF + cmp r2, r0 + beq _08065EA4 + ldr r0, _08065EA0 @ =gUnk_03000F50 + adds r0, #0x68 + strh r2, [r0] + ldrh r0, [r1, #2] + strb r0, [r4, #0xe] + adds r0, r1, #4 + str r0, [r4, #0x6c] + b _08065EB0 + .align 2, 0 +_08065E9C: .4byte 0x0000FFFF +_08065EA0: .4byte gUnk_03000F50 +_08065EA4: + ldr r1, _08065EB8 @ =gUnk_02018EB0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + bl sub_0805E780 +_08065EB0: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08065EB8: .4byte gUnk_02018EB0 + + thumb_func_start sub_08065EBC +sub_08065EBC: @ 0x08065EBC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08065ED8 @ =gUnk_08110274 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_08065ED8: .4byte gUnk_08110274 + + thumb_func_start sub_08065EDC +sub_08065EDC: @ 0x08065EDC + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08065F1C + ldr r1, [r2, #0x6c] + ldrh r3, [r1] + ldr r0, _08065F08 @ =0x0000FFFF + cmp r3, r0 + beq _08065F10 + ldr r0, _08065F0C @ =gUnk_03000F50 + adds r0, #0x68 + strh r3, [r0] + adds r1, #2 + ldrh r0, [r1] + strb r0, [r2, #0xe] + adds r1, #2 + str r1, [r2, #0x6c] + b _08065F1C + .align 2, 0 +_08065F08: .4byte 0x0000FFFF +_08065F0C: .4byte gUnk_03000F50 +_08065F10: + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + adds r0, r2, #0 + bl sub_08078778 +_08065F1C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08065F20 +sub_08065F20: @ 0x08065F20 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08065F5E + movs r0, #0 + strb r0, [r1] + bl sub_08056378 + adds r2, r4, #0 + adds r2, #0x58 + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] + ldr r1, _08065F60 @ =gUnk_0811033C + ldrb r0, [r2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, #0 + bne _08065F56 + strb r0, [r2] +_08065F56: + ldrb r1, [r2] + adds r0, r4, #0 + bl sub_080042AC +_08065F5E: + pop {r4, pc} + .align 2, 0 +_08065F60: .4byte gUnk_0811033C + + thumb_func_start sub_08065F64 +sub_08065F64: @ 0x08065F64 + push {lr} + adds r3, r0, #0 + ldr r0, _08065F88 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _08065F74 + movs r0, #0 +_08065F74: + ldrb r1, [r3, #0xa] + lsls r1, r1, #6 + lsls r0, r0, #3 + ldr r2, _08065F8C @ =gUnk_08110280 + adds r0, r0, r2 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_08065F88: .4byte gUnk_02002A40 +_08065F8C: .4byte gUnk_08110280 + + thumb_func_start sub_08065F90 +sub_08065F90: @ 0x08065F90 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08065FB6 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #2 + bl sub_080042AC + b _08065FBC +_08065FB6: + adds r0, r2, #0 + bl sub_080042B8 +_08065FBC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08065FC0 +sub_08065FC0: @ 0x08065FC0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08066028 + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r6, r4, #0 + adds r6, #0x58 + cmp r0, #2 + bne _0806600C + movs r0, #0 + movs r1, #4 + strb r1, [r4, #0xc] + strb r0, [r2] + ldrb r0, [r6] + movs r5, #0 + cmp r0, #0xc + bne _08065FF0 + movs r5, #8 +_08065FF0: + ldr r1, _08066020 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r5, r5, r0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 +_0806600C: + ldr r0, _08066024 @ =gUnk_0811036C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _08066042 + .align 2, 0 +_08066020: .4byte gLinkEntity +_08066024: .4byte gUnk_0811036C +_08066028: + ldr r0, _08066058 @ =gUnk_08110360 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + adds r6, r4, #0 + adds r6, #0x58 +_08066042: + ldrb r0, [r6] + cmp r0, #0xc + bne _0806605C + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + b _0806606E + .align 2, 0 +_08066058: .4byte gUnk_08110360 +_0806605C: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r2] +_0806606E: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080660A0 + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x3d + movs r2, #0x20 + bl CreateFX + ldr r4, _080660A4 @ =gUnk_08110380 + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + bl sub_080A3268 +_080660A0: + pop {r4, r5, r6, pc} + .align 2, 0 +_080660A4: .4byte gUnk_08110380 + + thumb_func_start sub_080660A8 +sub_080660A8: @ 0x080660A8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r4, [r0] + ldrb r2, [r5, #0x1e] + adds r0, r5, #0 + movs r1, #0 + bl sub_0806FF60 + movs r0, #0x40 + ands r4, r0 + cmp r4, #0 + beq _080660CE + adds r0, r5, #0 + movs r1, #1 + movs r2, #0x16 + bl sub_0806FF60 + b _080660D8 +_080660CE: + adds r0, r5, #0 + movs r1, #1 + movs r2, #0xff + bl sub_0806FF60 +_080660D8: + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_0806FF88 + adds r0, r5, #0 + bl sub_0807000C + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080660EC +sub_080660EC: @ 0x080660EC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08066114 @ =gUnk_08110354 + bl sub_0806FDEC + cmp r0, #0 + beq _08066112 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC +_08066112: + pop {r4, pc} + .align 2, 0 +_08066114: .4byte gUnk_08110354 + + thumb_func_start sub_08066118 +sub_08066118: @ 0x08066118 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + bge _0806612E + movs r1, #2 + b _08066144 +_0806612E: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0806613A + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08066144 +_0806613A: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] +_08066144: + adds r0, r4, #0 + bl sub_0806F078 + cmp r0, #0 + bne _08066154 + adds r0, r4, #0 + bl sub_080042B8 +_08066154: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0806616C + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0 + bl sub_08056378 +_0806616C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066170 +sub_08066170: @ 0x08066170 + movs r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_08066178 +sub_08066178: @ 0x08066178 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080661AC @ =gUnk_08110354 + bl sub_0806FDEC + cmp r0, #0 + beq _080661A8 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807DD50 +_080661A8: + pop {r4, pc} + .align 2, 0 +_080661AC: .4byte gUnk_08110354 + + thumb_func_start sub_080661B0 +sub_080661B0: @ 0x080661B0 + push {lr} + movs r1, #0 + bl sub_0807DD94 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080661BC +sub_080661BC: @ 0x080661BC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xc + bne _080661F4 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080661FC + adds r0, r4, #0 + bl sub_0806EDC4 + adds r0, #8 + adds r1, r4, #0 + adds r1, #0x80 + strh r0, [r1] + ldrh r1, [r1] + adds r0, r4, #0 + bl sub_080042AC + b _080661FC +_080661F4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_080661FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066200 +sub_08066200: @ 0x08066200 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_08066218 +sub_08066218: @ 0x08066218 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08066228 + movs r0, #1 + strb r0, [r4, #0xc] +_08066228: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806622C +sub_0806622C: @ 0x0806622C + push {lr} + adds r2, r0, #0 + ldr r0, _0806624C @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _0806623C + movs r0, #0 +_0806623C: + lsls r1, r0, #3 + ldr r0, _08066250 @ =gUnk_08110390 + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806624C: .4byte gUnk_02002A40 +_08066250: .4byte gUnk_08110390 + + thumb_func_start nullsub_501 +nullsub_501: @ 0x08066254 + bx lr + .align 2, 0 + + thumb_func_start sub_08066258 +sub_08066258: @ 0x08066258 + push {r4, lr} + ldr r4, _08066270 @ =gUnk_081103D0 + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_08066270: .4byte gUnk_081103D0 + + thumb_func_start sub_08066274 +sub_08066274: @ 0x08066274 + push {lr} + ldr r3, _08066284 @ =gUnk_081103E0 + movs r1, #1 + movs r2, #0 + bl sub_08078850 + pop {pc} + .align 2, 0 +_08066284: .4byte gUnk_081103E0 + + thumb_func_start sub_08066288 +sub_08066288: @ 0x08066288 + push {lr} + adds r1, r0, #0 + adds r1, #0x68 + ldrb r1, [r1] + bl sub_08078784 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08066298 +sub_08066298: @ 0x08066298 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080662D0 + ldr r1, _080662CC @ =gUnk_08110354 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _080662D6 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_080042AC + b _080662D6 + .align 2, 0 +_080662CC: .4byte gUnk_08110354 +_080662D0: + adds r0, r4, #0 + bl sub_080042B8 +_080662D6: + pop {r4, pc} + + thumb_func_start sub_080662D8 +sub_080662D8: @ 0x080662D8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080662F4 @ =gUnk_081104C8 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_080662F4: .4byte gUnk_081104C8 + + thumb_func_start sub_080662F8 +sub_080662F8: @ 0x080662F8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + lsls r0, r0, #1 + strb r0, [r5, #0x14] + ldrb r1, [r5, #0xa] + adds r0, r5, #0 + bl sub_08004260 + ldrh r0, [r5, #0x2e] + adds r1, r5, #0 + adds r1, #0x7e + strh r0, [r1] + ldrh r1, [r5, #0x32] + adds r0, r5, #0 + adds r0, #0x80 + strh r1, [r0] + adds r0, #6 + strh r4, [r0] + ldrb r0, [r5, #0xe] + adds r1, r5, #0 + adds r1, #0x82 + strh r0, [r1] + ldr r0, _08066354 @ =gLinkEntity + str r0, [r5, #0x50] + adds r0, r5, #0 + adds r0, #0x84 + strh r4, [r0] + ldr r1, [r5, #0x50] + adds r0, r5, #0 + bl sub_08066490 + adds r0, r5, #0 + bl sub_08078778 + pop {r4, r5, pc} + .align 2, 0 +_08066354: .4byte gLinkEntity + + thumb_func_start sub_08066358 +sub_08066358: @ 0x08066358 + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _080663B8 + movs r5, #0 + strb r5, [r1] + movs r0, #0 + bl sub_08056378 + ldrb r1, [r4, #0xb] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080663C0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r5, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x7e + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + cmp r0, #8 + ble _08066396 + movs r0, #8 + b _08066398 +_08066396: + movs r0, #0x18 +_08066398: + strb r0, [r4, #0x15] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x84 + movs r2, #1 + movs r0, #1 + strh r0, [r1] + ldr r0, _080663B4 @ =gUnk_02034490 + strb r2, [r0] + adds r0, r4, #0 + bl sub_080788E0 + b _080663C0 + .align 2, 0 +_080663B4: .4byte gUnk_02034490 +_080663B8: + ldr r1, [r4, #0x50] + adds r0, r4, #0 + bl sub_08066490 +_080663C0: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_08066570 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start nullsub_110 +nullsub_110: @ 0x080663D0 + bx lr + .align 2, 0 + + thumb_func_start sub_080663D4 +sub_080663D4: @ 0x080663D4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r0, r4, #0 + adds r0, #0x7e + ldrh r0, [r0] + subs r0, #8 + cmp r1, r0 + bne _08066410 + ldr r0, _0806640C @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0xf + beq _0806642E + movs r0, #0 + movs r1, #4 + strb r1, [r4, #0xc] + strb r0, [r4, #0x15] + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x84 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0806642E + .align 2, 0 +_0806640C: .4byte gLinkEntity +_08066410: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _08066428 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] +_08066428: + adds r0, r4, #0 + bl sub_080AEF88 +_0806642E: + bl sub_08078B48 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806643C +sub_0806643C: @ 0x0806643C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0806650C + adds r4, r0, #0 + cmp r4, #0 + bne _08066462 + movs r0, #5 + strb r0, [r5, #0xc] + ldr r0, _0806646C @ =gUnk_03000BF0 + str r4, [r0, #0x30] + movs r0, #0x40 + movs r1, #0 + movs r2, #0 + bl sub_08078AC0 + ldr r0, _08066470 @ =gLinkEntity + strb r4, [r0, #0x14] + strb r4, [r0, #0x15] +_08066462: + adds r0, r5, #0 + bl sub_08004274 + pop {r4, r5, pc} + .align 2, 0 +_0806646C: .4byte gUnk_03000BF0 +_08066470: .4byte gLinkEntity + + thumb_func_start sub_08066474 +sub_08066474: @ 0x08066474 + push {lr} + ldr r0, _08066488 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0xf + beq _08066484 + ldr r1, _0806648C @ =gUnk_02034490 + movs r0, #0 + strb r0, [r1] +_08066484: + pop {pc} + .align 2, 0 +_08066488: .4byte gLinkEntity +_0806648C: .4byte gUnk_02034490 + + thumb_func_start sub_08066490 +sub_08066490: @ 0x08066490 + push {r4, r5, r6, lr} + mov ip, r0 + adds r5, r1, #0 + ldrb r1, [r0, #0xb] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0806650A + mov r1, ip + ldrh r0, [r1, #0x2e] + adds r1, #0x86 + strh r0, [r1] + mov r0, ip + adds r0, #0x7e + ldrh r2, [r0] + adds r0, #4 + ldrh r0, [r0] + adds r3, r2, r0 + subs r4, r2, r0 + movs r6, #0x2e + ldrsh r0, [r5, r6] + cmp r0, r3 + bge _080664C6 + cmp r0, r4 + ble _080664C6 + adds r2, r0, #0 + b _080664D2 +_080664C6: + movs r2, #0x2e + ldrsh r0, [r5, r2] + adds r2, r4, #0 + cmp r0, r3 + blt _080664D2 + adds r2, r3, #0 +_080664D2: + ldrh r0, [r1] + cmp r0, r2 + bne _080664F0 + mov r1, ip + adds r1, #0x84 + ldrh r0, [r1] + cmp r0, #1 + bne _0806650A + movs r0, #0 + strh r0, [r1] + mov r0, ip + movs r1, #2 + bl sub_08004260 + b _0806650A +_080664F0: + mov r6, ip + strh r2, [r6, #0x2e] + mov r1, ip + adds r1, #0x84 + ldrh r0, [r1] + cmp r0, #0 + bne _0806650A + movs r0, #1 + strh r0, [r1] + mov r0, ip + movs r1, #6 + bl sub_08004260 +_0806650A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0806650C +sub_0806650C: @ 0x0806650C + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + movs r4, #0 + ldr r1, _0806652C @ =gLinkEntity + ldrh r5, [r1, #0x2e] + adds r7, r5, #0 + ldrh r2, [r1, #0x32] + adds r0, #0x80 + ldrh r0, [r0] + adds r0, #0x10 + adds r6, r1, #0 + cmp r2, r0 + bge _08066530 + movs r4, #4 + b _0806654C + .align 2, 0 +_0806652C: .4byte gLinkEntity +_08066530: + adds r0, r3, #0 + adds r0, #0x7e + ldrh r1, [r0] + adds r0, r1, #2 + cmp r5, r0 + bge _0806653E + movs r4, #2 +_0806653E: + adds r0, r1, #6 + cmp r7, r0 + ble _08066546 + movs r4, #6 +_08066546: + cmp r4, #0 + bne _0806654C + strh r4, [r6, #0x24] +_0806654C: + ldrb r0, [r6, #0xc] + cmp r0, #0xf + beq _0806656A + cmp r4, #0 + bne _0806655A + movs r0, #0 + b _0806656C +_0806655A: + movs r0, #8 + movs r1, #0 + movs r2, #0 + bl sub_08078AC0 + strb r4, [r6, #0x14] + lsls r0, r4, #2 + strb r0, [r6, #0x15] +_0806656A: + movs r0, #1 +_0806656C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08066570 +sub_08066570: @ 0x08066570 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080665DE + ldrb r0, [r5, #0xc] + cmp r0, #3 + beq _080665DE + ldr r4, _080665E0 @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x50 + bl sub_0806FC80 + cmp r0, #0 + beq _080665DE + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080045C4 + adds r3, r0, #0 + movs r6, #1 + movs r1, #0x18 + adds r4, r3, #0 + ands r4, r1 + ldrb r0, [r5, #0x15] + adds r2, r1, #0 + ands r2, r0 + cmp r2, r4 + bne _080665C8 + adds r2, r3, #5 + movs r1, #7 + ands r2, r1 + ldrb r0, [r5, #0x15] + adds r0, #5 + ands r0, r1 + cmp r0, #2 + bhi _080665C8 + cmp r2, #2 + bhi _080665C8 + movs r6, #0 +_080665C8: + cmp r6, #0 + beq _080665DE + strb r3, [r5, #0x15] + adds r3, #4 + movs r0, #0x18 + ands r3, r0 + lsrs r3, r3, #3 + adds r0, r5, #0 + adds r1, r3, #0 + bl sub_08004260 +_080665DE: + pop {r4, r5, r6, pc} + .align 2, 0 +_080665E0: .4byte gLinkEntity + + thumb_func_start sub_080665E4 +sub_080665E4: @ 0x080665E4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08066638 + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806661E + movs r0, #0 + strb r0, [r2] + strb r1, [r4, #0xc] + ldr r1, _08066630 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 +_0806661E: + ldr r0, _08066634 @ =gUnk_081104EC + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0806664E + .align 2, 0 +_08066630: .4byte gLinkEntity +_08066634: .4byte gUnk_081104EC +_08066638: + ldr r0, _08066650 @ =gUnk_081104E0 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 +_0806664E: + pop {r4, pc} + .align 2, 0 +_08066650: .4byte gUnk_081104E0 + + thumb_func_start sub_08066654 +sub_08066654: @ 0x08066654 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066688 +sub_08066688: @ 0x08066688 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + bge _0806669E + movs r1, #2 + b _080666B4 +_0806669E: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080666AA + movs r0, #0x10 + strb r0, [r4, #0xf] + b _080666B4 +_080666AA: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] +_080666B4: + adds r0, r4, #0 + bl sub_0806F078 + cmp r0, #0 + bne _080666C4 + adds r0, r4, #0 + bl sub_080042B8 +_080666C4: + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _080666D8 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r2] +_080666D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080666DC +sub_080666DC: @ 0x080666DC + movs r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_080666E4 +sub_080666E4: @ 0x080666E4 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807DD50 + pop {r4, pc} + + thumb_func_start sub_0806670C +sub_0806670C: @ 0x0806670C + push {lr} + movs r1, #0 + bl sub_0807DD94 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08066718 +sub_08066718: @ 0x08066718 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08066728 + movs r0, #1 + strb r0, [r4, #0xc] +_08066728: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806672C +sub_0806672C: @ 0x0806672C + push {lr} + adds r1, r0, #0 + adds r1, #0x68 + ldrb r1, [r1] + bl sub_08078784 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806673C +sub_0806673C: @ 0x0806673C + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + bne _0806674E + movs r1, #0 + b _0806676A +_0806674E: + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + bne _0806675C + movs r1, #1 + b _0806676A +_0806675C: + movs r0, #3 + bl sub_0807CA84 + movs r1, #3 + cmp r0, #0 + bne _0806676A + movs r1, #2 +_0806676A: + ldr r0, _0806677C @ =gUnk_081104F8 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_0806677C: .4byte gUnk_081104F8 + + thumb_func_start sub_08066780 +sub_08066780: @ 0x08066780 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _080667A6 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #6 + bl sub_080042AC + b _080667AC +_080667A6: + adds r0, r2, #0 + bl sub_080042B8 +_080667AC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080667B0 +sub_080667B0: @ 0x080667B0 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080667C6 + adds r0, r4, #0 + bl sub_08066864 + b _080667DC +_080667C6: + ldr r0, _080667E0 @ =gUnk_08110644 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 +_080667DC: + pop {r4, pc} + .align 2, 0 +_080667E0: .4byte gUnk_08110644 + + thumb_func_start sub_080667E4 +sub_080667E4: @ 0x080667E4 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08078778 + pop {r4, pc} + + thumb_func_start sub_08066808 +sub_08066808: @ 0x08066808 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + bge _0806681E + movs r1, #2 + b _08066834 +_0806681E: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0806682A + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08066834 +_0806682A: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] +_08066834: + adds r0, r4, #0 + bl sub_0806F078 + cmp r0, #0 + bne _08066844 + adds r0, r4, #0 + bl sub_080042B8 +_08066844: + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _08066858 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r2] +_08066858: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806685C +sub_0806685C: @ 0x0806685C + movs r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_08066864 +sub_08066864: @ 0x08066864 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _080668A2 + cmp r0, #1 + bgt _08066878 + cmp r0, #0 + beq _0806687E + b _080668EC +_08066878: + cmp r0, #2 + beq _080668DE + b _080668EC +_0806687E: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807DD50 + b _080668EC +_080668A2: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _080668D4 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _080668D0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _080668EC + .align 2, 0 +_080668D0: .4byte gLinkEntity +_080668D4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _080668EC +_080668DE: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _080668EC + movs r0, #1 + strb r0, [r4, #0xc] +_080668EC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080668F0 +sub_080668F0: @ 0x080668F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066904 +sub_08066904: @ 0x08066904 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + bl GetProgressFlag + cmp r0, #0 + bne _08066916 + movs r1, #0 + b _08066932 +_08066916: + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + bne _08066924 + movs r1, #1 + b _08066932 +_08066924: + movs r0, #3 + bl sub_0807CA84 + movs r1, #3 + cmp r0, #0 + bne _08066932 + movs r1, #2 +_08066932: + ldr r0, _08066944 @ =gUnk_08110650 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_08066944: .4byte gUnk_08110650 + + thumb_func_start sub_08066948 +sub_08066948: @ 0x08066948 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806696E + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #6 + bl sub_080042AC + b _08066974 +_0806696E: + adds r0, r2, #0 + bl sub_080042B8 +_08066974: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08066978 +sub_08066978: @ 0x08066978 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806699C + ldr r0, _08066998 @ =gUnk_081106E0 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _080669B2 + .align 2, 0 +_08066998: .4byte gUnk_081106E0 +_0806699C: + ldr r0, _080669B4 @ =gUnk_081106D4 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 +_080669B2: + pop {r4, pc} + .align 2, 0 +_080669B4: .4byte gUnk_081106D4 + + thumb_func_start sub_080669B8 +sub_080669B8: @ 0x080669B8 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08078778 + pop {r4, pc} + + thumb_func_start sub_080669DC +sub_080669DC: @ 0x080669DC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + bge _080669F2 + movs r1, #2 + b _08066A08 +_080669F2: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080669FE + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08066A08 +_080669FE: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] +_08066A08: + adds r0, r4, #0 + bl sub_0806F078 + cmp r0, #0 + bne _08066A18 + adds r0, r4, #0 + bl sub_080042B8 +_08066A18: + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _08066A2C + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r2] +_08066A2C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066A30 +sub_08066A30: @ 0x08066A30 + movs r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_08066A38 +sub_08066A38: @ 0x08066A38 + push {lr} + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + bl sub_0807DD50 + pop {pc} + + thumb_func_start sub_08066A50 +sub_08066A50: @ 0x08066A50 + push {lr} + movs r1, #0 + bl sub_0807DD94 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08066A5C +sub_08066A5C: @ 0x08066A5C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08066A90 @ =gUnk_08110734 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r3, [r4, #0x1a] + lsrs r1, r3, #4 + adds r0, r4, #0 + adds r0, #0x5b + ldrb r2, [r0] + movs r0, #1 + ands r0, r2 + adds r1, r1, r0 + movs r0, #0xf + ands r1, r0 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x1a] + pop {r4, pc} + .align 2, 0 +_08066A90: .4byte gUnk_08110734 + + thumb_func_start sub_08066A94 +sub_08066A94: @ 0x08066A94 + push {r4, lr} + adds r4, r0, #0 + movs r2, #0 + movs r3, #1 + movs r0, #1 + strb r0, [r4, #0xc] + strb r2, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r3 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x68 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + bl sub_08066ACC + pop {r4, pc} + + thumb_func_start sub_08066ACC +sub_08066ACC: @ 0x08066ACC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _08066B18 @ =sub_08066B74 + bl sub_0807DD94 + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08066AF6 + ldr r0, _08066B1C @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _08066AF6 + adds r0, r4, #0 + bl sub_08095CB0 +_08066AF6: + adds r1, r4, #0 + adds r1, #0x5a + ldrb r2, [r1] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + adds r5, r1, #0 + cmp r2, #0 + beq _08066B6E + cmp r2, #2 + beq _08066B34 + cmp r2, #2 + bhi _08066B20 + cmp r2, #1 + beq _08066B2A + b _08066B66 + .align 2, 0 +_08066B18: .4byte sub_08066B74 +_08066B1C: .4byte gUnk_030010A0 +_08066B20: + cmp r2, #3 + beq _08066B40 + cmp r2, #4 + beq _08066B52 + b _08066B66 +_08066B2A: + movs r0, #0x87 + lsls r0, r0, #2 + bl sub_08004488 + b _08066B66 +_08066B34: + ldr r0, _08066B3C @ =0x0000021E + bl sub_08004488 + b _08066B66 + .align 2, 0 +_08066B3C: .4byte 0x0000021E +_08066B40: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + movs r0, #4 + str r0, [r1, #4] + adds r0, r4, #0 + bl sub_0805DDEC + b _08066B66 +_08066B52: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + str r2, [r1, #4] + adds r0, r4, #0 + bl sub_0805DE18 + ldr r0, _08066B70 @ =0x0000021D + bl sub_08004488 +_08066B66: + ldrb r1, [r5] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5] +_08066B6E: + pop {r4, r5, pc} + .align 2, 0 +_08066B70: .4byte 0x0000021D + + thumb_func_start sub_08066B74 +sub_08066B74: @ 0x08066B74 + push {r4, r5, r6, lr} + mov ip, r0 + ldr r0, [r1, #8] + ldr r4, _08066BCC @ =0xFFF00000 + ands r4, r0 + ldr r2, _08066BD0 @ =0x000FFFFF + ands r0, r2 + str r0, [r1, #8] + cmp r4, #0 + bne _08066B8A + b _08066C86 +_08066B8A: + mov r3, ip + adds r3, #0x80 + mov r5, ip + adds r5, #0x68 + movs r6, #1 +_08066B94: + mvns r0, r4 + adds r1, r0, #1 + ands r1, r4 + eors r4, r1 + mov r2, ip + ldrb r0, [r2, #0x14] + lsrs r2, r0, #1 + movs r0, #0x80 + lsls r0, r0, #0x12 + cmp r1, r0 + beq _08066C4C + cmp r1, r0 + bhi _08066BE6 + movs r0, #0x80 + lsls r0, r0, #0xf + cmp r1, r0 + beq _08066C34 + cmp r1, r0 + bhi _08066BD4 + movs r0, #0x80 + lsls r0, r0, #0xd + cmp r1, r0 + beq _08066C24 + movs r0, #0x80 + lsls r0, r0, #0xe + cmp r1, r0 + beq _08066C2C + b _08066C82 + .align 2, 0 +_08066BCC: .4byte 0xFFF00000 +_08066BD0: .4byte 0x000FFFFF +_08066BD4: + movs r0, #0x80 + lsls r0, r0, #0x10 + cmp r1, r0 + beq _08066C3C + movs r0, #0x80 + lsls r0, r0, #0x11 + cmp r1, r0 + beq _08066C44 + b _08066C82 +_08066BE6: + movs r0, #0x80 + lsls r0, r0, #0x15 + cmp r1, r0 + beq _08066C64 + cmp r1, r0 + bhi _08066C04 + movs r0, #0x80 + lsls r0, r0, #0x13 + cmp r1, r0 + beq _08066C54 + movs r0, #0x80 + lsls r0, r0, #0x14 + cmp r1, r0 + beq _08066C5C + b _08066C82 +_08066C04: + movs r0, #0x80 + lsls r0, r0, #0x17 + cmp r1, r0 + beq _08066C70 + cmp r1, r0 + bhi _08066C1A + movs r0, #0x80 + lsls r0, r0, #0x16 + cmp r1, r0 + beq _08066C6C + b _08066C82 +_08066C1A: + movs r0, #0x80 + lsls r0, r0, #0x18 + cmp r1, r0 + beq _08066C76 + b _08066C82 +_08066C24: + adds r0, r2, #0 + adds r0, #0x10 + strh r0, [r3] + b _08066C82 +_08066C2C: + adds r0, r2, #0 + adds r0, #0x14 + strh r0, [r3] + b _08066C82 +_08066C34: + adds r0, r2, #0 + adds r0, #0x18 + strh r0, [r3] + b _08066C82 +_08066C3C: + adds r0, r2, #0 + adds r0, #0x1c + strh r0, [r3] + b _08066C82 +_08066C44: + adds r0, r2, #0 + adds r0, #0x20 + strh r0, [r3] + b _08066C82 +_08066C4C: + adds r0, r2, #0 + adds r0, #0x24 + strh r0, [r3] + b _08066C82 +_08066C54: + adds r0, r2, #0 + adds r0, #0x28 + strh r0, [r3] + b _08066C82 +_08066C5C: + adds r0, r2, #0 + adds r0, #0x2c + strh r0, [r3] + b _08066C82 +_08066C64: + adds r0, r2, #0 + adds r0, #0x30 + strh r0, [r3] + b _08066C82 +_08066C6C: + strb r6, [r5] + b _08066C82 +_08066C70: + movs r0, #0xff + strb r0, [r5] + b _08066C82 +_08066C76: + mov r2, ip + adds r2, #0x69 + ldrb r1, [r2] + adds r0, r6, #0 + eors r0, r1 + strb r0, [r2] +_08066C82: + cmp r4, #0 + bne _08066B94 +_08066C86: + mov r0, ip + adds r0, #0x84 + ldr r1, [r0] + mov r0, ip + bl sub_0807DB98 + pop {r4, r5, r6, pc} + + thumb_func_start sub_08066C94 +sub_08066C94: @ 0x08066C94 + push {lr} + movs r1, #0 + bl sub_0805DA90 + movs r0, #0xf7 + bl sub_080A3268 + pop {pc} + + thumb_func_start sub_08066CA4 +sub_08066CA4: @ 0x08066CA4 + push {lr} + movs r1, #1 + bl sub_0805DA90 + movs r0, #0xf6 + bl sub_080A3268 + pop {pc} + + thumb_func_start sub_08066CB4 +sub_08066CB4: @ 0x08066CB4 + push {lr} + ldr r2, _08066CC8 @ =gUnk_08110BD8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08066CC8: .4byte gUnk_08110BD8 + + thumb_func_start sub_08066CCC +sub_08066CCC: @ 0x08066CCC + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #7 + bl sub_0805EA78 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + pop {r4, pc} + + thumb_func_start sub_08066CF8 +sub_08066CF8: @ 0x08066CF8 + push {lr} + movs r1, #0 + bl sub_0807DD94 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08066D04 +sub_08066D04: @ 0x08066D04 + push {r4, lr} + adds r4, r0, #0 + movs r0, #7 + movs r1, #0x2e + bl sub_0805EB9C + str r0, [r4, #0x50] + pop {r4, pc} + + thumb_func_start sub_08066D14 +sub_08066D14: @ 0x08066D14 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r2, [r4, #0x50] + cmp r2, #0 + beq _08066D48 + ldrb r0, [r2, #0x14] + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r2, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, [r4, #0x50] + adds r0, r4, #0 + bl sub_08068680 + movs r0, #1 + str r0, [r5, #0x14] + b _08066D4A +_08066D48: + str r2, [r5, #0x14] +_08066D4A: + pop {r4, r5, pc} + + thumb_func_start sub_08066D4C +sub_08066D4C: @ 0x08066D4C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _08066D90 + bl sub_0806FA24 + ldr r3, [r4, #0x50] + ldrb r1, [r3, #0x18] + movs r2, #4 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r3, #0x18] + ldr r1, [r4, #0x50] + ldrb r0, [r4, #0x14] + strb r0, [r1, #0x14] + ldrb r0, [r4, #0x18] + ands r2, r0 + strb r2, [r4, #0x18] + ldrb r1, [r4, #0x17] + movs r0, #0xfe + ands r0, r1 + strb r0, [r4, #0x17] + ldr r1, [r4, #0x50] + adds r0, r4, #0 + bl sub_08068694 + movs r0, #1 + str r0, [r5, #0x14] + b _08066D92 +_08066D90: + str r1, [r5, #0x14] +_08066D92: + pop {r4, r5, pc} + + thumb_func_start sub_08066D94 +sub_08066D94: @ 0x08066D94 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x1c + bl sub_0807CD04 + movs r0, #0x2e + movs r1, #0 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _08066DD6 + ldr r0, _08066DDC @ =gLinkEntity + ldrb r0, [r0, #0x14] + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r5, #0 + bl sub_0806EDC4 + strb r0, [r4, #0x14] + ldr r0, _08066DE0 @ =gUnk_03000BF0 + ldrb r1, [r0, #5] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_08066DD6: + bl sub_0805E780 + pop {r4, r5, pc} + .align 2, 0 +_08066DDC: .4byte gLinkEntity +_08066DE0: .4byte gUnk_03000BF0 + + thumb_func_start sub_08066DE4 +sub_08066DE4: @ 0x08066DE4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #7 + movs r1, #0x2e + bl sub_0805EB9C + adds r4, r0, #0 + cmp r4, #0 + beq _08066E06 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080686C4 +_08066E06: + pop {r4, r5, pc} + + thumb_func_start sub_08066E08 +sub_08066E08: @ 0x08066E08 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x50 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r4, #0x80 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066E20 +sub_08066E20: @ 0x08066E20 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x44 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r4, #0x80 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066E38 +sub_08066E38: @ 0x08066E38 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x48 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r4, #0x80 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066E50 +sub_08066E50: @ 0x08066E50 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x4c + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r4, #0x80 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066E68 +sub_08066E68: @ 0x08066E68 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x54 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r4, #0x80 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066E80 +sub_08066E80: @ 0x08066E80 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #4 + bhi _08066F7C + lsls r0, r0, #2 + ldr r1, _08066E98 @ =_08066E9C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08066E98: .4byte _08066E9C +_08066E9C: @ jump table + .4byte _08066EB0 @ case 0 + .4byte _08066EC0 @ case 1 + .4byte _08066EF0 @ case 2 + .4byte _08066F28 @ case 3 + .4byte _08066F58 @ case 4 +_08066EB0: + ldrb r0, [r5, #0x18] + adds r0, #1 + strb r0, [r5, #0x18] + adds r0, r4, #0 + movs r1, #0x16 + bl sub_080042AC + b _08066F7C +_08066EC0: + adds r0, r4, #0 + bl sub_080042B8 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08066F7C + ldrb r0, [r5, #0x18] + adds r0, #1 + strb r0, [r5, #0x18] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldrb r1, [r2] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + movs r0, #0x7c + bl sub_080A3268 + b _08066F7C +_08066EF0: + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, #0 + movs r2, #0x80 + bl sub_0806F62C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08066F1A + adds r0, r4, #0 + bl sub_080042B8 +_08066F1A: + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _08066F7C + ldrb r0, [r5, #0x18] + adds r0, #1 + strb r0, [r5, #0x18] + b _08066F7C +_08066F28: + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, #0 + movs r2, #0x80 + bl sub_0806F62C + adds r0, r4, #0 + bl sub_080042B8 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08066F7C + ldrb r0, [r5, #0x18] + adds r0, #1 + strb r0, [r5, #0x18] + adds r0, r4, #0 + movs r1, #0x1e + bl sub_080042AC + b _08066F7C +_08066F58: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08066F7C + ldr r2, _08066F78 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _08066F8C + .align 2, 0 +_08066F78: .4byte gUnk_02033280 +_08066F7C: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r0, #0x28 + movs r2, #0 + strh r1, [r0] + ldr r0, _08066F90 @ =gUnk_02033280 + strb r2, [r0, #6] +_08066F8C: + pop {r4, r5, pc} + .align 2, 0 +_08066F90: .4byte gUnk_02033280 + + thumb_func_start sub_08066F94 +sub_08066F94: @ 0x08066F94 + push {r4, lr} + ldr r4, _08066F9C @ =gUnk_08110BE0 + b _08066FAC + .align 2, 0 +_08066F9C: .4byte gUnk_08110BE0 +_08066FA0: + ldrh r1, [r4] + adds r4, #2 + ldr r0, _08066FB4 @ =0x00004072 + movs r2, #1 + bl sub_0807B314 +_08066FAC: + ldrh r0, [r4] + cmp r0, #0 + bne _08066FA0 + pop {r4, pc} + .align 2, 0 +_08066FB4: .4byte 0x00004072 + + thumb_func_start sub_08066FB8 +sub_08066FB8: @ 0x08066FB8 + push {r4, lr} + ldr r4, _08066FC0 @ =gUnk_08110BE0 + b _08066FCE + .align 2, 0 +_08066FC0: .4byte gUnk_08110BE0 +_08066FC4: + ldrh r0, [r4] + adds r4, #2 + movs r1, #1 + bl sub_0807BA8C +_08066FCE: + ldrh r0, [r4] + cmp r0, #0 + bne _08066FC4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08066FD8 +sub_08066FD8: @ 0x08066FD8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _08066FE8 + bl sub_0805E780 +_08066FE8: + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08067030 + cmp r0, #1 + bgt _08066FF8 + cmp r0, #0 + beq _08066FFE + b _0806707C +_08066FF8: + cmp r0, #2 + beq _0806706E + b _0806707C +_08066FFE: + ldr r1, _0806702C @ =gUnk_08110C00 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806707C + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806707C + .align 2, 0 +_0806702C: .4byte gUnk_08110C00 +_08067030: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08067064 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _08067060 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _0806707C + .align 2, 0 +_08067060: .4byte gLinkEntity +_08067064: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _0806707C +_0806706E: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806707C + movs r0, #1 + strb r0, [r4, #0xc] +_0806707C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08067080 +sub_08067080: @ 0x08067080 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080670B4 +sub_080670B4: @ 0x080670B4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #0x11 + bl sub_0807CA84 + cmp r0, #0 + bne _080670D0 + movs r0, #0x15 + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f +_080670D0: + ldr r0, _080670E0 @ =gUnk_08110C0C + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_080670E0: .4byte gUnk_08110C0C + + thumb_func_start sub_080670E4 +sub_080670E4: @ 0x080670E4 + push {lr} + ldr r1, _080670F8 @ =gUnk_02002A40 + ldrb r1, [r1, #8] + lsls r1, r1, #3 + ldr r2, _080670FC @ =gUnk_08110C10 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_080670F8: .4byte gUnk_02002A40 +_080670FC: .4byte gUnk_08110C10 + + thumb_func_start sub_08067100 +sub_08067100: @ 0x08067100 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_08067118 +sub_08067118: @ 0x08067118 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08067150 + ldr r1, _0806714C @ =gUnk_08110C00 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08067156 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _08067156 + .align 2, 0 +_0806714C: .4byte gUnk_08110C00 +_08067150: + adds r0, r4, #0 + bl sub_08004274 +_08067156: + pop {r4, pc} + + thumb_func_start sub_08067158 +sub_08067158: @ 0x08067158 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x84 + ldr r0, [r0] + cmp r0, #0 + bne _08067168 + bl sub_0805E780 +_08067168: + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _080671A8 + cmp r5, #1 + bgt _08067178 + cmp r5, #0 + beq _0806717E + b _08067224 +_08067178: + cmp r5, #2 + beq _0806720A + b _08067224 +_0806717E: + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _080671EC @ =gUnk_08110CA8 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08067224 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + strb r5, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 +_080671A8: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _080671F4 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _080671F0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + ldrb r0, [r4, #0xa] + lsls r0, r0, #3 + adds r0, #4 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0806F118 + b _08067224 + .align 2, 0 +_080671EC: .4byte gUnk_08110CA8 +_080671F0: .4byte gLinkEntity +_080671F4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + b _08067224 +_0806720A: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08067224 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_08067224: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08067228 +sub_08067228: @ 0x08067228 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bhi _0806727E + adds r0, r4, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r2, #0x3f + ands r2, r0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + movs r1, #1 + movs r2, #2 + bl sub_0806FFD8 + adds r0, r4, #0 + bl sub_0807000C + b _080672AC +_0806727E: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C +_080672AC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080672B0 +sub_080672B0: @ 0x080672B0 + push {lr} + ldrb r2, [r0, #0x14] + lsrs r2, r2, #1 + ldr r1, [r1, #4] + adds r1, r1, r2 + ldrb r2, [r0, #0xa] + lsls r2, r2, #3 + adds r1, r1, r2 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080672C8 +sub_080672C8: @ 0x080672C8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #0x11 + bl sub_0807CA84 + cmp r0, #0 + bne _080672E4 + movs r0, #0x15 + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f +_080672E4: + ldr r3, _08067300 @ =gUnk_08110CE8 + lsls r1, r4, #1 + ldrb r2, [r5, #0xa] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r3 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_08067300: .4byte gUnk_08110CE8 + + thumb_func_start sub_08067304 +sub_08067304: @ 0x08067304 + push {lr} + ldr r1, _08067310 @ =gUnk_08110D00 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_08067310: .4byte gUnk_08110D00 + + thumb_func_start sub_08067314 +sub_08067314: @ 0x08067314 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806732C +sub_0806732C: @ 0x0806732C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08067378 + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _08067374 @ =gUnk_08110CA8 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806737E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + ldrb r1, [r4, #0xa] + lsls r1, r1, #3 + adds r1, #2 + adds r0, r4, #0 + bl sub_08004260 + b _0806737E + .align 2, 0 +_08067374: .4byte gUnk_08110CA8 +_08067378: + adds r0, r4, #0 + bl sub_08004274 +_0806737E: + pop {r4, pc} + + thumb_func_start sub_08067380 +sub_08067380: @ 0x08067380 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080673A4 + ldr r0, _080673A0 @ =gUnk_08110E5C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _080673BA + .align 2, 0 +_080673A0: .4byte gUnk_08110E5C +_080673A4: + ldr r0, _080673BC @ =gUnk_08110E4C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 +_080673BA: + pop {r4, pc} + .align 2, 0 +_080673BC: .4byte gUnk_08110E4C + + thumb_func_start sub_080673C0 +sub_080673C0: @ 0x080673C0 + push {lr} + adds r2, r0, #0 + ldr r0, _080673D4 @ =gUnk_030010A0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #0 + beq _080673D8 + movs r0, #3 + b _080673DA + .align 2, 0 +_080673D4: .4byte gUnk_030010A0 +_080673D8: + movs r0, #1 +_080673DA: + strb r0, [r2, #0xc] + ldrb r1, [r2, #0xa] + movs r0, #1 + ands r0, r1 + strb r0, [r2, #0x1e] + cmp r0, #0 + bne _080673EC + ldr r0, _080673F0 @ =gUnk_08110E94 + str r0, [r2, #0x48] +_080673EC: + pop {pc} + .align 2, 0 +_080673F0: .4byte gUnk_08110E94 + + thumb_func_start sub_080673F4 +sub_080673F4: @ 0x080673F4 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x39 + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + beq _0806740C + movs r1, #0 + movs r0, #2 + strb r0, [r2, #0xc] + strb r1, [r3] +_0806740C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08067410 +sub_08067410: @ 0x08067410 + movs r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_08067418 +sub_08067418: @ 0x08067418 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r0, #1 + strb r0, [r6, #0xc] + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _08067488 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r7, r6, #0 + adds r7, #0x74 + strh r1, [r7] + ldrb r0, [r6, #0xa] + cmp r0, #0 + bne _08067494 + ldr r0, _0806748C @ =gUnk_08110E94 + str r0, [r6, #0x48] + ldr r5, _08067490 @ =0x00004022 + ldrh r1, [r7] + subs r1, #1 + adds r4, r6, #0 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrh r1, [r7] + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x3f + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x40 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + b _080674F8 + .align 2, 0 +_08067488: .4byte gUnk_03000BF0 +_0806748C: .4byte gUnk_08110E94 +_08067490: .4byte 0x00004022 +_08067494: + adds r1, r6, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + ldrb r2, [r6, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r6, #0x1b] + ldrb r0, [r6, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r6, #0x19] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x1d + bl sub_0807CBD0 + cmp r0, #0 + bne _080674F8 + ldr r4, _08067500 @ =0x00004022 + ldr r1, _08067504 @ =0x00000E81 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _08067508 @ =0x00000E82 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _0806750C @ =0x00000E83 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r1, _08067510 @ =0x00000EC3 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E +_080674F8: + adds r0, r6, #0 + bl sub_0807DD50 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08067500: .4byte 0x00004022 +_08067504: .4byte 0x00000E81 +_08067508: .4byte 0x00000E82 +_0806750C: .4byte 0x00000E83 +_08067510: .4byte 0x00000EC3 + + thumb_func_start sub_08067514 +sub_08067514: @ 0x08067514 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DD94 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0806752A + adds r0, r4, #0 + bl sub_0806ED78 +_0806752A: + pop {r4, pc} + + thumb_func_start sub_0806752C +sub_0806752C: @ 0x0806752C + push {lr} + bl sub_0806FD3C + pop {pc} + + thumb_func_start sub_08067534 +sub_08067534: @ 0x08067534 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 +_0806753A: + adds r0, r5, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08067560 + ldr r0, _08067578 @ =gUnk_08110E64 + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r1, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + adds r0, #0x1c + strh r0, [r1, #0x32] +_08067560: + adds r4, #1 + cmp r4, #1 + ble _0806753A + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_08004488 + movs r0, #0x28 + movs r1, #4 + bl sub_08080964 + pop {r4, r5, pc} + .align 2, 0 +_08067578: .4byte gUnk_08110E64 + + thumb_func_start sub_0806757C +sub_0806757C: @ 0x0806757C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xd] + cmp r0, #0 + beq _080675CC + cmp r0, #2 + bls _080675BC + ldr r0, _080675AC @ =0x00000E81 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _080675B0 @ =0x00000E82 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _080675B4 @ =0x00000E83 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _080675B8 @ =0x00000EC3 + movs r1, #1 + bl sub_0807BA8C + b _080675CC + .align 2, 0 +_080675AC: .4byte 0x00000E81 +_080675B0: .4byte 0x00000E82 +_080675B4: .4byte 0x00000E83 +_080675B8: .4byte 0x00000EC3 +_080675BC: + ldr r0, _080675D0 @ =gUnk_08110E68 + ldrb r1, [r2, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl sub_080ADF80 +_080675CC: + pop {pc} + .align 2, 0 +_080675D0: .4byte gUnk_08110E68 + + thumb_func_start sub_080675D4 +sub_080675D4: @ 0x080675D4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r5, _080676D0 @ =gUnk_08110E78 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r7, r0, #0 + subs r7, #0xc + movs r0, #0x3f + mov r8, r0 + movs r6, #8 +_080675EC: + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r3, r0, #0 + cmp r3, #0 + beq _08067646 + movs r0, #0 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x2e] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + movs r0, #1 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x32] + adds r0, r0, r1 + strh r0, [r3, #0x32] + strh r7, [r3, #0x36] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r1, [r4, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x1b] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x1b] + ldrb r1, [r4, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x19] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_0806FAB0 +_08067646: + subs r6, #1 + adds r5, #2 + cmp r6, #0 + bge _080675EC + ldr r5, _080676D4 @ =gUnk_08110E8A + movs r0, #0x3f + mov r8, r0 + movs r6, #3 +_08067656: + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + adds r3, r0, #0 + cmp r3, #0 + beq _080676B0 + movs r0, #0 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x2e] + adds r0, r0, r1 + strh r0, [r3, #0x2e] + movs r0, #1 + ldrsb r0, [r5, r0] + ldrh r1, [r3, #0x32] + adds r0, r0, r1 + strh r0, [r3, #0x32] + strh r7, [r3, #0x36] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r1, [r4, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x1b] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x1b] + ldrb r1, [r4, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x19] + mov r0, r8 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_0806FAB0 +_080676B0: + subs r6, #1 + adds r5, #2 + cmp r6, #0 + bge _08067656 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bls _080676C8 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_080676C8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080676D0: .4byte gUnk_08110E78 +_080676D4: .4byte gUnk_08110E8A + + thumb_func_start sub_080676D8 +sub_080676D8: @ 0x080676D8 + ldrb r1, [r0, #0xd] + adds r1, #1 + strb r1, [r0, #0xd] + bx lr + + thumb_func_start sub_080676E0 +sub_080676E0: @ 0x080676E0 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #1 + beq _08067706 + cmp r0, #1 + bgt _080676F6 + cmp r0, #0 + beq _080676FC + b _08067734 +_080676F6: + cmp r0, #2 + beq _08067722 + b _08067734 +_080676FC: + movs r0, #1 + strb r0, [r2, #0x18] + movs r0, #0x20 + strb r0, [r2, #0x19] + b _08067742 +_08067706: + ldrb r1, [r2, #0x19] + lsrs r0, r1, #1 + subs r0, #0x10 + strh r0, [r3, #0x36] + subs r1, #1 + strb r1, [r2, #0x19] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _08067742 + movs r0, #2 + strb r0, [r2, #0x18] + movs r0, #0x24 + strb r0, [r2, #0x19] + b _08067742 +_08067722: + ldrb r0, [r2, #0x19] + subs r0, #1 + strb r0, [r2, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08067742 + movs r0, #3 + strb r0, [r2, #0x18] + b _08067742 +_08067734: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r3, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _08067748 +_08067742: + ldr r1, _0806774C @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_08067748: + pop {pc} + .align 2, 0 +_0806774C: .4byte gUnk_02033280 + + thumb_func_start sub_08067750 +sub_08067750: @ 0x08067750 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08067788 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrh r0, [r4, #0x32] + subs r0, #0x18 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + ldr r1, _08067784 @ =0x0000017B + adds r0, r4, #0 + bl sub_0801D2B4 + b _0806778E + .align 2, 0 +_08067784: .4byte 0x0000017B +_08067788: + adds r0, r4, #0 + bl sub_08004274 +_0806778E: + pop {r4, pc} + + thumb_func_start sub_08067790 +sub_08067790: @ 0x08067790 + push {lr} + ldrb r2, [r0, #0xa] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #4 + ldr r2, _080677AC @ =gUnk_02002A40 + ldrb r2, [r2, #8] + lsls r2, r2, #3 + ldr r3, _080677B0 @ =gUnk_08110EF8 + adds r2, r2, r3 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_080677AC: .4byte gUnk_02002A40 +_080677B0: .4byte gUnk_08110EF8 + + thumb_func_start sub_080677B4 +sub_080677B4: @ 0x080677B4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080677E8 @ =gUnk_081110D8 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08067C44 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080677E4 + ldrb r0, [r4, #0xa] + cmp r0, #5 + beq _080677E4 + adds r0, r4, #0 + bl sub_0806ED78 +_080677E4: + pop {r4, pc} + .align 2, 0 +_080677E8: .4byte gUnk_081110D8 + + thumb_func_start sub_080677EC +sub_080677EC: @ 0x080677EC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #8 + strb r0, [r4, #0x15] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + subs r1, #1 + movs r0, #0xa8 + strb r0, [r1] + subs r1, #4 + movs r0, #1 + strb r0, [r1] + adds r1, #0x2e + movs r0, #0xff + strb r0, [r1] + ldr r0, _0806783C @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r2, #0x2e + ldrsh r0, [r0, r2] + cmp r1, r0 + bge _08067840 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + b _08067848 + .align 2, 0 +_0806783C: .4byte gLinkEntity +_08067840: + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 +_08067848: + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldr r0, _0806786C @ =gUnk_08110EF0 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r2, r0, #0 + cmp r2, #0 + bne _08067870 + movs r0, #0x2e + ldrsh r2, [r4, r0] + b _08067872 + .align 2, 0 +_0806786C: .4byte gUnk_08110EF0 +_08067870: + lsrs r2, r2, #0x10 +_08067872: + adds r0, r4, #0 + adds r0, #0x6c + movs r1, #0 + strh r2, [r0] + ldrb r0, [r4, #0xe] + adds r0, r0, r2 + adds r2, r4, #0 + adds r2, #0x6e + strh r0, [r2] + strb r1, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x75 + strb r1, [r0] + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x1e + adds r1, r4, #0 + adds r1, #0x74 + strb r0, [r1] + subs r1, #0xb + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + bl sub_08067B08 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080678AC +sub_080678AC: @ 0x080678AC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08067D20 + cmp r0, #0 + beq _080678C2 + adds r0, r4, #0 + movs r1, #5 + bl sub_08067B80 + b _08067900 +_080678C2: + adds r2, r4, #0 + adds r2, #0x72 + ldrh r0, [r2] + cmp r0, #0 + beq _080678D0 + subs r0, #1 + strh r0, [r2] +_080678D0: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #1 + bne _080678EA + ldrh r0, [r2] + cmp r0, #0 + bne _080678EA + adds r0, r4, #0 + bl sub_08067AAC + b _08067900 +_080678EA: + adds r0, r4, #0 + bl sub_080042B8 + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08067900 + adds r0, r4, #0 + bl sub_08067B34 +_08067900: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08067904 +sub_08067904: @ 0x08067904 + push {r4, lr} + adds r4, r0, #0 + bl sub_08067D20 + cmp r0, #0 + beq _0806791A + adds r0, r4, #0 + movs r1, #8 + bl sub_08067B80 + b _08067978 +_0806791A: + adds r1, r4, #0 + adds r1, #0x72 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08067932 + adds r0, r4, #0 + bl sub_08067B70 + b _08067978 +_08067932: + ldrb r0, [r4, #0x15] + cmp r0, #8 + bne _08067952 + movs r1, #0x2e + ldrsh r0, [r4, r1] + adds r1, r4, #0 + adds r1, #0x6e + ldrh r1, [r1] + cmp r0, r1 + ble _0806796C + movs r0, #0x18 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x18] + subs r0, #0x59 + ands r0, r1 + b _0806796A +_08067952: + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r0, r4, #0 + adds r0, #0x6c + ldrh r0, [r0] + cmp r1, r0 + bge _0806796C + movs r0, #8 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 +_0806796A: + strb r0, [r4, #0x18] +_0806796C: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080042B8 +_08067978: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806797C +sub_0806797C: @ 0x0806797C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08067998 + adds r0, r4, #0 + bl sub_08067B08 +_08067998: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806799C +sub_0806799C: @ 0x0806799C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r0, _080679C0 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080679BE + adds r0, r4, #0 + bl sub_08067B08 + adds r0, r4, #0 + movs r1, #1 + bl sub_0805E3A0 +_080679BE: + pop {r4, pc} + .align 2, 0 +_080679C0: .4byte gUnk_02000050 + + thumb_func_start sub_080679C4 +sub_080679C4: @ 0x080679C4 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x74 + ldrb r0, [r1] + cmp r0, #0 + beq _080679E6 + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080679E6 + adds r0, r4, #0 + bl sub_08067D20 + cmp r0, #0 + bne _080679EE +_080679E6: + adds r0, r4, #0 + bl sub_08067C24 + b _08067A0A +_080679EE: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08067BD4 + adds r0, r4, #0 + bl sub_08067D74 + cmp r0, #0 + beq _08067A0A + adds r0, r4, #0 + bl sub_08067C18 +_08067A0A: + pop {r4, pc} + + thumb_func_start sub_08067A0C +sub_08067A0C: @ 0x08067A0C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08067A44 + adds r0, r4, #0 + bl sub_08067D20 + cmp r0, #0 + beq _08067A3C + adds r0, r4, #0 + movs r1, #5 + bl sub_08067B80 + ldrb r0, [r4, #0xe] + adds r0, #0x14 + strb r0, [r4, #0xe] + b _08067A76 +_08067A3C: + adds r0, r4, #0 + bl sub_08067C24 + b _08067A76 +_08067A44: + movs r2, #7 + ands r2, r1 + cmp r2, #0 + beq _08067A70 + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r1, _08067A6C @ =gUnk_08111154 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + lsls r0, r0, #2 + subs r0, #1 + adds r0, r2, r0 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x48] + b _08067A76 + .align 2, 0 +_08067A6C: .4byte gUnk_08111154 +_08067A70: + adds r0, r4, #0 + bl sub_08067DDC +_08067A76: + pop {r4, pc} + + thumb_func_start sub_08067A78 +sub_08067A78: @ 0x08067A78 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08067A94 + adds r0, r4, #0 + bl sub_08067AAC +_08067A94: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08067A98 +sub_08067A98: @ 0x08067A98 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08067AAA + adds r0, r4, #0 + bl sub_08067B08 +_08067AAA: + pop {r4, pc} + + thumb_func_start sub_08067AAC +sub_08067AAC: @ 0x08067AAC + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08067AFC @ =gUnk_081110FC + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + ldrb r1, [r4, #0x15] + lsrs r1, r1, #4 + movs r0, #1 + eors r1, r0 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #3 + bl sub_08067DCC + ldr r0, _08067B00 @ =gUnk_0811110C + ldrb r2, [r0, #2] + ldr r3, _08067B04 @ =gUnk_0811110F + adds r0, r4, #0 + movs r1, #0 + bl sub_08078850 + pop {r4, pc} + .align 2, 0 +_08067AFC: .4byte gUnk_081110FC +_08067B00: .4byte gUnk_0811110C +_08067B04: .4byte gUnk_0811110F + + thumb_func_start sub_08067B08 +sub_08067B08: @ 0x08067B08 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _08067B30 @ =gUnk_08111104 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08067B34 + pop {r4, pc} + .align 2, 0 +_08067B30: .4byte gUnk_08111104 + + thumb_func_start sub_08067B34 +sub_08067B34: @ 0x08067B34 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_08067DCC + bl sub_08000E50 + movs r1, #0x30 + ands r0, r1 + adds r0, #0xb4 + adds r1, r4, #0 + adds r1, #0x59 + strb r0, [r1] + ldr r1, _08067B68 @ =gUnk_0811110C + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x1f + adds r0, r0, r1 + ldrb r2, [r0] + ldr r3, _08067B6C @ =gUnk_0811110F + adds r0, r4, #0 + movs r1, #0 + bl sub_08078850 + pop {r4, pc} + .align 2, 0 +_08067B68: .4byte gUnk_0811110C +_08067B6C: .4byte gUnk_0811110F + + thumb_func_start sub_08067B70 +sub_08067B70: @ 0x08067B70 + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #4 + bl sub_08067DCC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08067B80 +sub_08067B80: @ 0x08067B80 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #5 + strb r0, [r5, #0xc] + movs r0, #0x14 + strb r0, [r5, #0xe] + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x1e + adds r1, r5, #0 + adds r1, #0x74 + strb r0, [r1] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080042AC + adds r0, r5, #0 + bl sub_08067DDC + ldr r0, _08067BC4 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r5, r2] + movs r2, #0x2e + ldrsh r0, [r0, r2] + cmp r1, r0 + bge _08067BC8 + ldrb r0, [r5, #0x18] + movs r1, #0x40 + orrs r0, r1 + b _08067BD0 + .align 2, 0 +_08067BC4: .4byte gLinkEntity +_08067BC8: + ldrb r1, [r5, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 +_08067BD0: + strb r0, [r5, #0x18] + pop {r4, r5, pc} + + thumb_func_start sub_08067BD4 +sub_08067BD4: @ 0x08067BD4 + push {r4, lr} + adds r2, r0, #0 + ldrb r3, [r2, #0x18] + lsls r0, r3, #0x19 + cmp r0, #0 + bge _08067BFC + movs r1, #0x2e + ldrsh r0, [r2, r1] + subs r0, #4 + ldr r1, _08067BF8 @ =gLinkEntity + movs r4, #0x2e + ldrsh r1, [r1, r4] + cmp r0, r1 + ble _08067C12 + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r3 + b _08067C10 + .align 2, 0 +_08067BF8: .4byte gLinkEntity +_08067BFC: + movs r1, #0x2e + ldrsh r0, [r2, r1] + adds r0, #4 + ldr r1, _08067C14 @ =gLinkEntity + movs r4, #0x2e + ldrsh r1, [r1, r4] + cmp r0, r1 + bge _08067C12 + movs r0, #0x40 + orrs r0, r3 +_08067C10: + strb r0, [r2, #0x18] +_08067C12: + pop {r4, pc} + .align 2, 0 +_08067C14: .4byte gLinkEntity + + thumb_func_start sub_08067C18 +sub_08067C18: @ 0x08067C18 + push {lr} + movs r1, #6 + strb r1, [r0, #0xc] + bl sub_080042AC + pop {pc} + + thumb_func_start sub_08067C24 +sub_08067C24: @ 0x08067C24 + push {r4, lr} + adds r4, r0, #0 + movs r0, #7 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x75 + movs r0, #0x14 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08067DDC + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC + pop {r4, pc} + + thumb_func_start sub_08067C44 +sub_08067C44: @ 0x08067C44 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08067C6C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + rsbs r0, r0, #0 + lsrs r5, r0, #0x1f + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + cmp r5, r0 + beq _08067C7C + cmp r5, #0 + bne _08067C70 + adds r0, r4, #0 + bl sub_08078778 + b _08067C7C + .align 2, 0 +_08067C6C: .4byte gUnk_03003F80 +_08067C70: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080787A8 +_08067C7C: + adds r0, r4, #0 + adds r0, #0x69 + strb r5, [r0] + subs r0, #0x30 + movs r1, #0 + ldrsb r1, [r0, r1] + adds r5, r0, #0 + cmp r1, #0 + beq _08067D1C + ldr r1, _08067CB4 @ =gLinkEntity + adds r0, r4, #0 + bl sub_0806FCA0 + adds r2, r0, #0 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + beq _08067CA6 + cmp r0, #3 + beq _08067CB8 +_08067CA6: + cmp r2, #2 + bne _08067CDA + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + b _08067CEC + .align 2, 0 +_08067CB4: .4byte gLinkEntity +_08067CB8: + cmp r2, #1 + bne _08067CC4 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + b _08067CD4 +_08067CC4: + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x19 + lsrs r0, r0, #0x1f + cmp r0, #3 + bne _08067CD6 + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 +_08067CD4: + strb r0, [r4, #0x18] +_08067CD6: + cmp r2, #2 + beq _08067CE4 +_08067CDA: + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + b _08067CEC +_08067CE4: + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC +_08067CEC: + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #2 + bne _08067D00 + movs r0, #8 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806F118 + b _08067D12 +_08067D00: + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08067790 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_08067D12: + movs r0, #0 + strb r0, [r5] + movs r0, #0xd2 + bl sub_080A3268 +_08067D1C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08067D20 +sub_08067D20: @ 0x08067D20 + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x75 + ldrb r0, [r1] + cmp r0, #0 + beq _08067D34 + subs r0, #1 + strb r0, [r1] + b _08067D70 +_08067D34: + movs r0, #2 + bl sub_08049DF4 + adds r2, r0, #0 + cmp r2, #0 + beq _08067D70 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + movs r3, #0x28 + cmp r0, #0 + bge _08067D4C + movs r3, #0x10 +_08067D4C: + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r5, #0x2e + ldrsh r0, [r4, r5] + subs r0, r0, r3 + subs r1, r1, r0 + cmp r1, #0x30 + bhi _08067D70 + movs r1, #0x32 + ldrsh r0, [r2, r1] + adds r0, #4 + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + cmp r0, #0x38 + bhi _08067D70 + movs r0, #1 + b _08067D72 +_08067D70: + movs r0, #0 +_08067D72: + pop {r4, r5, pc} + + thumb_func_start sub_08067D74 +sub_08067D74: @ 0x08067D74 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #5 + beq _08067DC8 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08067D88 + subs r0, #1 + strb r0, [r4, #0xe] +_08067D88: + movs r0, #2 + bl sub_08049DF4 + adds r2, r0, #0 + cmp r2, #0 + beq _08067DC8 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + movs r3, #0x18 + cmp r0, #0 + bge _08067DA0 + movs r3, #8 +_08067DA0: + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r5, #0x2e + ldrsh r0, [r4, r5] + subs r0, r0, r3 + subs r1, r1, r0 + cmp r1, #0x1e + bhi _08067DC8 + movs r1, #0x32 + ldrsh r0, [r2, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r0, r0, r1 + cmp r0, #0x16 + bhi _08067DC8 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08067DC8 + movs r0, #1 + b _08067DCA +_08067DC8: + movs r0, #0 +_08067DCA: + pop {r4, r5, pc} + + thumb_func_start sub_08067DCC +sub_08067DCC: @ 0x08067DCC + push {lr} + adds r2, r0, #0 + adds r2, #0x71 + strb r1, [r2] + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08067DDC +sub_08067DDC: @ 0x08067DDC + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + movs r1, #0 + strb r0, [r2, #0x10] + adds r0, r2, #0 + adds r0, #0x41 + strb r1, [r0] + subs r0, #4 + strb r1, [r0] + ldr r0, _08067DF8 @ =gUnk_08110EF0 + str r0, [r2, #0x48] + bx lr + .align 2, 0 +_08067DF8: .4byte gUnk_08110EF0 + + thumb_func_start sub_08067DFC +sub_08067DFC: @ 0x08067DFC + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08067E22 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #5 + bl sub_080042AC + b _08067E28 +_08067E22: + adds r0, r2, #0 + bl sub_080042B8 +_08067E28: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08067E2C +sub_08067E2C: @ 0x08067E2C + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08067E58 + ldr r0, _08067E54 @ =gUnk_08111368 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + b _08067E5E + .align 2, 0 +_08067E54: .4byte gUnk_08111368 +_08067E58: + adds r0, r4, #0 + bl sub_08067EF0 +_08067E5E: + pop {r4, pc} + + thumb_func_start sub_08067E60 +sub_08067E60: @ 0x08067E60 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08067E84 @ =gUnk_08111358 + bl sub_0806FDEC + cmp r0, #0 + beq _08067E80 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08078778 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08067E80: + pop {r4, pc} + .align 2, 0 +_08067E84: .4byte gUnk_08111358 + + thumb_func_start sub_08067E88 +sub_08067E88: @ 0x08067E88 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + bge _08067E9E + movs r1, #2 + b _08067EB4 +_08067E9E: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08067EAA + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08067EB4 +_08067EAA: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] +_08067EB4: + adds r0, r4, #0 + bl sub_0806F078 + cmp r0, #0 + bne _08067EC4 + adds r0, r4, #0 + bl sub_08004274 +_08067EC4: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08067EE4 + movs r0, #0 + strb r0, [r1] + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + movs r1, #0x90 + lsls r1, r1, #5 + adds r0, r0, r1 + bl sub_08056378 +_08067EE4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08067EE8 +sub_08067EE8: @ 0x08067EE8 + movs r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_08067EF0 +sub_08067EF0: @ 0x08067EF0 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xc] + cmp r4, #1 + beq _08067F58 + cmp r4, #1 + bgt _08067F04 + cmp r4, #0 + beq _08067F10 + b _0806801A +_08067F04: + cmp r4, #2 + beq _08067FDC + cmp r4, #3 + bne _08067F0E + b _08068000 +_08067F0E: + b _0806801A +_08067F10: + ldr r1, _08067F50 @ =gUnk_08111358 + adds r0, r5, #0 + bl sub_0806FDEC + cmp r0, #0 + bne _08067F1E + b _080680F0 +_08067F1E: + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + strb r0, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x69 + strb r4, [r0] + adds r0, r5, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r5, #0 + bl sub_0807DD50 + ldr r1, _08067F54 @ =gUnk_08111304 + ldrb r0, [r5, #0xb] + adds r0, r0, r1 + ldrb r1, [r0] + b _08067FF2 + .align 2, 0 +_08067F50: .4byte gUnk_08111358 +_08067F54: .4byte gUnk_08111304 +_08067F58: + adds r4, r5, #0 + adds r4, #0x39 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #2 + bne _08067F98 + movs r1, #0 + movs r0, #3 + strb r0, [r5, #0xc] + strb r1, [r4] + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _08067F94 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_0806F118 + b _0806801A + .align 2, 0 +_08067F94: .4byte gLinkEntity +_08067F98: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 + ldrb r0, [r5, #0xb] + cmp r0, #3 + bne _0806801A + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + beq _0806801A + movs r1, #0 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r4] + ldr r1, _08067FD8 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_08068190 + b _0806801A + .align 2, 0 +_08067FD8: .4byte gLinkEntity +_08067FDC: + ldr r0, _08067FFC @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806801A + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x14] + lsrs r1, r1, #1 + adds r1, #4 +_08067FF2: + adds r0, r5, #0 + bl sub_08004260 + b _0806801A + .align 2, 0 +_08067FFC: .4byte gUnk_02000050 +_08068000: + adds r0, r5, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806801A + movs r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08004260 +_0806801A: + adds r0, r5, #0 + adds r0, #0x59 + ldrb r1, [r0] + adds r7, r0, #0 + cmp r1, #0xff + beq _0806802C + adds r0, r5, #0 + bl sub_08004274 +_0806802C: + adds r1, r5, #0 + adds r1, #0x5b + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + adds r6, r1, #0 + cmp r0, #0 + beq _0806807E + movs r0, #0xfe + ands r0, r2 + strb r0, [r6] + adds r0, r5, #0 + bl sub_080040A8 + cmp r0, #0 + bne _08068068 + ldr r4, _08068064 @ =gUnk_0811137A + bl sub_08000E50 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_080A3268 + b _0806807E + .align 2, 0 +_08068064: .4byte gUnk_0811137A +_08068068: + ldr r4, _080680F4 @ =gUnk_08111374 + bl sub_08000E50 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_08004488 +_0806807E: + ldrb r1, [r6] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080680A8 + movs r0, #0xfd + ands r0, r1 + strb r0, [r6] + adds r0, r5, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080680A8 + ldr r3, _080680F8 @ =0xFFE80000 + adds r0, r5, #0 + movs r2, #0 + bl sub_0806FA48 +_080680A8: + ldrb r1, [r6] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080680D2 + movs r0, #0xfb + ands r0, r1 + strb r0, [r6] + adds r0, r5, #0 + movs r1, #0x3d + movs r2, #0x20 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080680D2 + ldr r2, _080680FC @ =0xFFEC0000 + ldr r3, _08068100 @ =0xFFF60000 + adds r0, r5, #0 + bl sub_0806FA48 +_080680D2: + ldrb r1, [r6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080680F0 + movs r0, #0xf7 + ands r0, r1 + strb r0, [r6] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + ldrb r1, [r7] + adds r0, r0, r1 + strb r0, [r7] +_080680F0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080680F4: .4byte gUnk_08111374 +_080680F8: .4byte 0xFFE80000 +_080680FC: .4byte 0xFFEC0000 +_08068100: .4byte 0xFFF60000 + + thumb_func_start sub_08068104 +sub_08068104: @ 0x08068104 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806811C +sub_0806811C: @ 0x0806811C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r7, r0, #0 + cmp r7, #0 + beq _0806812E + subs r0, #1 + strb r0, [r4, #0xe] + b _0806818A +_0806812E: + movs r0, #2 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806EDD8 + adds r3, r0, #0 + cmp r3, #0 + bge _08068148 + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x14] + lsls r3, r0, #2 +_08068148: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #5 + asrs r1, r3, #1 + lsls r1, r1, #1 + ldr r2, _0806818C @ =gUnk_08111284 + adds r1, r1, r2 + adds r0, r0, r1 + ldrb r6, [r0] + ldrb r5, [r0, #1] + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + beq _0806816C + adds r0, r3, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] +_0806816C: + movs r0, #0x40 + orrs r6, r0 + adds r0, r4, #0 + adds r0, #0x5a + strb r6, [r0] + movs r0, #0x7f + ands r5, r0 + strb r5, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x58 + strb r7, [r0] + adds r1, r4, #0 + adds r1, #0x59 + movs r0, #0xff + strb r0, [r1] +_0806818A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806818C: .4byte gUnk_08111284 + + thumb_func_start sub_08068190 +sub_08068190: @ 0x08068190 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r5, [r6, #0xb] + cmp r5, #8 + bls _0806819C + movs r5, #8 +_0806819C: + movs r0, #0x7e + bl sub_0807CBD0 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + movs r0, #0x41 + bl sub_0807CA84 + cmp r0, #0 + beq _080681B4 + movs r4, #2 +_080681B4: + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _080681C0 + movs r4, #3 +_080681C0: + ldr r2, _080681D4 @ =gUnk_0811130E + lsls r0, r4, #1 + lsls r1, r5, #3 + adds r0, r0, r1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r6, #0 + bl sub_08056398 + pop {r4, r5, r6, pc} + .align 2, 0 +_080681D4: .4byte gUnk_0811130E + + thumb_func_start sub_080681D8 +sub_080681D8: @ 0x080681D8 + ldr r1, [r1, #4] + strb r1, [r0, #0xa] + bx lr + .align 2, 0 + + thumb_func_start sub_080681E0 +sub_080681E0: @ 0x080681E0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r4, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r4, r0 + ldrb r2, [r5, #0x1e] + adds r0, r5, #0 + movs r1, #1 + bl sub_0806FF60 + movs r0, #0x40 + ands r0, r4 + cmp r0, #0 + beq _08068226 + movs r0, #0xe1 + rsbs r0, r0, #0 + ands r4, r0 + adds r2, r4, #4 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #2 + movs r2, #0xff + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + b _08068268 +_08068226: + movs r0, #0x20 + ands r0, r4 + cmp r0, #0 + beq _08068254 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xff + bl sub_0806FF60 + movs r0, #0xe1 + rsbs r0, r0, #0 + ands r4, r0 + adds r0, r5, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + movs r2, #2 + bl sub_0806FF88 + b _08068268 +_08068254: + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xff + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #2 + movs r2, #0xff + bl sub_0806FF60 +_08068268: + adds r0, r5, #0 + bl sub_0807000C + pop {r4, r5, pc} + + thumb_func_start sub_08068270 +sub_08068270: @ 0x08068270 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080682A8 + ldr r1, _080682A4 @ =gUnk_08111358 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _080682AE + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _080682AE + .align 2, 0 +_080682A4: .4byte gUnk_08111358 +_080682A8: + adds r0, r4, #0 + bl sub_08004274 +_080682AE: + pop {r4, pc} + + thumb_func_start sub_080682B0 +sub_080682B0: @ 0x080682B0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r2, r0, #0 + cmp r2, #0 + bne _080682F4 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x68 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + adds r0, r4, #0 + movs r1, #0 + bl sub_0806854C +_080682F4: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0806830A + adds r0, r4, #0 + bl sub_08068318 + b _08068314 +_0806830A: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_08068314: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068318 +sub_08068318: @ 0x08068318 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r0 + ldr r4, _08068414 @ =gLinkEntity + ldrh r1, [r4, #0x2e] + ldr r3, _08068418 @ =0xFFFF0000 + adds r0, r3, #0 + ands r0, r6 + orrs r0, r1 + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + ldr r2, _0806841C @ =0x0000FFFF + ands r0, r2 + adds r6, r0, #0 + orrs r6, r1 + ldrh r0, [r4, #0x36] + ands r3, r7 + orrs r3, r0 + adds r7, r3, #0 + ldr r0, _08068420 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #0x10 + ldr r2, _08068424 @ =0xFF00FFFF + ands r2, r3 + orrs r2, r0 + adds r7, r2, #0 + ldrb r1, [r4, #0x14] + movs r0, #0x3f + ands r1, r0 + lsls r1, r1, #0x18 + ldr r0, _08068428 @ =0xC0FFFFFF + ands r0, r2 + orrs r0, r1 + adds r7, r0, #0 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #0x1e + ldr r2, _0806842C @ =0x3FFFFFFF + ands r0, r2 + adds r7, r0, #0 + orrs r7, r1 + mov r0, r8 + ldr r5, [r0, #0x64] + ldrb r1, [r5, #6] + cmp r1, #0xa + bne _08068386 + lsrs r0, r7, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa + bne _08068394 +_08068386: + cmp r1, #0x16 + bne _080683B4 + lsrs r0, r7, #0x10 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x16 + beq _080683B4 +_08068394: + ldrh r0, [r4, #0x2e] + mov r1, r8 + strh r0, [r1, #0x2e] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] + ldrb r1, [r1, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + mov r2, r8 + strb r0, [r2, #0x18] + mov r0, r8 + bl sub_08068578 +_080683B4: + movs r3, #0 + mov sb, r3 + ldr r0, [r5] + cmp r6, r0 + bne _080683D0 + ldr r0, [r5, #4] + cmp r7, r0 + bne _080683D0 + lsls r1, r7, #8 + lsrs r0, r1, #0x18 + cmp r0, #0x16 + beq _080683D0 + cmp r0, #0xa + bne _08068430 +_080683D0: + mov r0, r8 + ldr r5, [r0, #0x64] + adds r5, #0x90 + mov r4, r8 + adds r4, #0x69 + mov r3, r8 + adds r3, #0x38 + movs r1, #0x58 + add r1, r8 + mov ip, r1 + movs r2, #0x12 +_080683E6: + ldr r0, [r5] + ldr r1, [r5, #4] + str r0, [r5, #8] + str r1, [r5, #0xc] + subs r5, #8 + subs r2, #1 + cmp r2, #0 + bge _080683E6 + mov r2, r8 + ldr r5, [r2, #0x64] + str r6, [r5] + str r7, [r5, #4] + movs r0, #4 + mov sb, r0 + ldrb r1, [r4] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + ble _080684A8 + subs r0, r1, #1 + strb r0, [r4] + b _080684A8 + .align 2, 0 +_08068414: .4byte gLinkEntity +_08068418: .4byte 0xFFFF0000 +_0806841C: .4byte 0x0000FFFF +_08068420: .4byte gUnk_03003F80 +_08068424: .4byte 0xFF00FFFF +_08068428: .4byte 0xC0FFFFFF +_0806842C: .4byte 0x3FFFFFFF +_08068430: + adds r5, #0x98 + movs r1, #4 + ldrsh r0, [r5, r1] + cmp r0, #0 + bge _08068466 + mov r2, r8 + ldr r5, [r2, #0x64] + adds r5, #0x90 + mov r4, r8 + adds r4, #0x69 + mov r3, r8 + adds r3, #0x38 + movs r0, #0x58 + add r0, r8 + mov ip, r0 + movs r2, #0x12 +_08068450: + ldr r0, [r5] + ldr r1, [r5, #4] + str r0, [r5, #8] + str r1, [r5, #0xc] + subs r5, #8 + subs r2, #1 + cmp r2, #0 + bge _08068450 + movs r1, #4 + mov sb, r1 + b _080684A8 +_08068466: + ldr r1, _0806851C @ =gLinkEntity + movs r2, #0x2e + ldrsh r0, [r1, r2] + movs r3, #0x32 + ldrsh r1, [r1, r3] + ldrh r2, [r5] + ldrh r3, [r5, #2] + bl sub_080041E8 + lsrs r0, r0, #4 + mov r4, r8 + adds r4, #0x69 + mov r3, r8 + adds r3, #0x38 + movs r1, #0x58 + add r1, r8 + mov ip, r1 + cmp r0, #0x18 + ble _080684A8 + mov r2, r8 + ldr r5, [r2, #0x64] + adds r5, #0x90 + movs r2, #0x12 +_08068494: + ldr r0, [r5] + ldr r1, [r5, #4] + str r0, [r5, #8] + str r1, [r5, #0xc] + subs r5, #8 + subs r2, #1 + cmp r2, #0 + bge _08068494 + movs r0, #4 + mov sb, r0 +_080684A8: + mov r1, r8 + ldr r5, [r1, #0x64] + adds r5, #0x98 + ldrh r0, [r5] + strh r0, [r1, #0x2e] + ldrh r0, [r5, #2] + strh r0, [r1, #0x32] + ldrh r0, [r5, #4] + strh r0, [r1, #0x36] + ldrb r0, [r5, #7] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + strb r0, [r1, #0x14] + ldrb r0, [r5, #7] + lsrs r0, r0, #6 + strb r0, [r3] + ldrb r0, [r5, #6] + cmp r0, #0x16 + beq _080684D2 + cmp r0, #0xa + bne _080684DE +_080684D2: + mov r2, r8 + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] +_080684DE: + adds r1, r4, #0 + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + ble _080684EE + subs r0, r2, #1 + strb r0, [r1] +_080684EE: + mov r2, sb + mov r3, r8 + ldrb r0, [r3, #0x14] + lsrs r0, r0, #1 + add sb, r0 + mov r0, ip + ldrb r0, [r0] + cmp sb, r0 + beq _08068520 + cmp r2, #0 + bne _0806850C + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bgt _08068520 +_0806850C: + mov r0, r8 + mov r1, sb + bl sub_080042AC + movs r0, #0x1e + strb r0, [r4] + b _08068526 + .align 2, 0 +_0806851C: .4byte gLinkEntity +_08068520: + mov r0, r8 + bl sub_080042B8 +_08068526: + mov r0, r8 + bl sub_0800451C + mov r1, r8 + movs r2, #0x36 + ldrsh r0, [r1, r2] + cmp r0, #0 + bge _08068542 + movs r2, #0xc + rsbs r2, r2, #0 + mov r0, r8 + movs r1, #0 + bl sub_0806F854 +_08068542: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0806854C +sub_0806854C: @ 0x0806854C + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xa0 + bl sub_0801D8E0 + str r0, [r5, #0x64] + cmp r0, #0 + beq _08068574 + adds r0, r5, #0 + adds r0, #0x68 + movs r4, #0 + movs r1, #1 + strb r1, [r0] + adds r0, r5, #0 + bl sub_080788E0 + str r4, [r5, #0x48] + adds r0, r5, #0 + bl sub_08068578 +_08068574: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08068578 +sub_08068578: @ 0x08068578 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldr r4, _08068664 @ =gLinkEntity + ldrh r1, [r4, #0x2e] + ldr r3, _08068668 @ =0xFFFF0000 + adds r0, r3, #0 + ands r0, r5 + orrs r0, r1 + ldrh r1, [r4, #0x32] + lsls r1, r1, #0x10 + ldr r2, _0806866C @ =0x0000FFFF + ands r0, r2 + adds r5, r0, #0 + orrs r5, r1 + ldrh r0, [r4, #0x36] + ands r3, r6 + orrs r3, r0 + ldr r0, _08068670 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + lsls r0, r0, #0x10 + ldr r2, _08068674 @ =0xFF00FFFF + ands r2, r3 + orrs r2, r0 + ldrb r1, [r4, #0x14] + movs r0, #0x3f + ands r1, r0 + lsls r1, r1, #0x18 + ldr r0, _08068678 @ =0xC0FFFFFF + ands r0, r2 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #0x1e + ldr r2, _0806867C @ =0x3FFFFFFF + ands r0, r2 + adds r6, r0, #0 + orrs r6, r1 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov sl, r1 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r2, #0x32 + ldrsh r0, [r7, r2] + subs r1, r1, r0 + mov r8, r1 + mov r1, sl + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov sl, r0 + mov r2, r8 + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x14 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + ldr r3, [r7, #0x64] + movs r0, #0 + mov sb, r0 + mov ip, r0 + movs r4, #0x13 +_08068614: + mov r1, ip + asrs r0, r1, #8 + subs r0, r5, r0 + strh r0, [r3] + lsrs r0, r5, #0x10 + mov r2, sb + asrs r1, r2, #8 + subs r0, r0, r1 + strh r0, [r3, #2] + strh r6, [r3, #4] + lsrs r0, r6, #0x10 + strb r0, [r3, #6] + ldrb r0, [r7, #0x14] + movs r1, #0x3f + ands r1, r0 + ldrb r2, [r3, #7] + movs r0, #0x40 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r1, r7, #0 + adds r1, #0x38 + ldrb r1, [r1] + lsls r1, r1, #6 + movs r2, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #7] + adds r3, #8 + add sb, r8 + add ip, sl + subs r4, #1 + cmp r4, #0 + bge _08068614 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08068664: .4byte gLinkEntity +_08068668: .4byte 0xFFFF0000 +_0806866C: .4byte 0x0000FFFF +_08068670: .4byte gUnk_03003F80 +_08068674: .4byte 0xFF00FFFF +_08068678: .4byte 0xC0FFFFFF +_0806867C: .4byte 0x3FFFFFFF + + thumb_func_start sub_08068680 +sub_08068680: @ 0x08068680 + adds r2, r1, #0 + adds r2, #0x68 + movs r0, #0 + strb r0, [r2] + ldrb r2, [r1, #0x18] + subs r0, #4 + ands r0, r2 + strb r0, [r1, #0x18] + bx lr + .align 2, 0 + + thumb_func_start sub_08068694 +sub_08068694: @ 0x08068694 + push {r4, lr} + adds r4, r1, #0 + adds r2, r4, #0 + adds r2, #0x68 + movs r3, #1 + movs r1, #1 + strb r1, [r2] + ldrb r2, [r4, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r4, #0x18] + ldrb r0, [r0, #0x14] + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08068578 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080686C4 +sub_080686C4: @ 0x080686C4 + push {lr} + adds r0, r1, #0 + ldrh r1, [r0, #0x32] + subs r1, #0x10 + strh r1, [r0, #0x32] + bl sub_08068578 + pop {pc} + + thumb_func_start sub_080686D4 +sub_080686D4: @ 0x080686D4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08068700 + ldr r0, _080686FC @ =gUnk_08111530 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + b _08068706 + .align 2, 0 +_080686FC: .4byte gUnk_08111530 +_08068700: + adds r0, r4, #0 + bl sub_08068780 +_08068706: + pop {r4, pc} + + thumb_func_start sub_08068708 +sub_08068708: @ 0x08068708 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806872C @ =gUnk_08111520 + bl sub_0806FDEC + cmp r0, #0 + beq _08068728 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 +_08068728: + pop {r4, pc} + .align 2, 0 +_0806872C: .4byte gUnk_08111520 + + thumb_func_start sub_08068730 +sub_08068730: @ 0x08068730 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + blt _08068762 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0806875E + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r1 + beq _08068762 + adds r0, r4, #0 + bl sub_08004260 + b _08068762 +_0806875E: + subs r0, #1 + strb r0, [r4, #0xf] +_08068762: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0806877E + movs r0, #0 + strb r0, [r1] + ldrb r0, [r4, #0xe] + movs r1, #0x90 + lsls r1, r1, #5 + adds r0, r0, r1 + bl sub_08056378 +_0806877E: + pop {r4, pc} + + thumb_func_start sub_08068780 +sub_08068780: @ 0x08068780 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #1 + beq _080687D0 + cmp r0, #1 + bgt _08068794 + cmp r0, #0 + beq _0806879A + b _0806880E +_08068794: + cmp r0, #2 + beq _08068800 + b _0806880E +_0806879A: + ldr r1, _080687CC @ =gUnk_08111520 + adds r0, r5, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806887A + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + strb r0, [r5, #0x14] + adds r0, r5, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r5, #0 + bl sub_0807DD50 + b _0806880E + .align 2, 0 +_080687CC: .4byte gUnk_08111520 +_080687D0: + adds r2, r5, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _080687EA + movs r0, #0 + strb r1, [r5, #0xc] + strb r0, [r2] + adds r0, r5, #0 + bl sub_0806F118 + b _0806880E +_080687EA: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 + adds r0, r5, #0 + bl sub_08004274 + b _0806880E +_08068800: + adds r0, r5, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806880E + movs r0, #1 + strb r0, [r5, #0xc] +_0806880E: + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806887A + movs r0, #0xbf + ands r0, r1 + strb r0, [r2] + adds r0, r5, #0 + bl sub_080040A8 + cmp r0, #0 + bne _08068848 + ldr r4, _08068844 @ =gUnk_0811153E + bl sub_08000E50 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_080A3268 + b _0806885E + .align 2, 0 +_08068844: .4byte gUnk_0811153E +_08068848: + ldr r4, _0806887C @ =gUnk_08111538 + bl sub_08000E50 + movs r1, #3 + bl __modsi3 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_08004488 +_0806885E: + adds r0, r5, #0 + movs r1, #0x3d + movs r2, #0x20 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0806887A + movs r2, #0xc0 + lsls r2, r2, #0xd + ldr r3, _08068880 @ =0xFFF60000 + adds r0, r5, #0 + bl sub_0806FA48 +_0806887A: + pop {r4, r5, pc} + .align 2, 0 +_0806887C: .4byte gUnk_08111538 +_08068880: .4byte 0xFFF60000 + + thumb_func_start sub_08068884 +sub_08068884: @ 0x08068884 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806889C +sub_0806889C: @ 0x0806889C + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r4, [r0] + movs r0, #0xc1 + rsbs r0, r0, #0 + ands r4, r0 + ldrb r2, [r5, #0x1e] + adds r0, r5, #0 + movs r1, #1 + bl sub_0806FF60 + movs r0, #0x20 + ands r0, r4 + cmp r0, #0 + beq _080688E2 + movs r0, #0xe1 + rsbs r0, r0, #0 + ands r4, r0 + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #2 + movs r2, #0xff + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + b _08068906 +_080688E2: + adds r0, r5, #0 + movs r1, #0 + movs r2, #0xff + bl sub_0806FF60 + movs r0, #0xe1 + rsbs r0, r0, #0 + ands r4, r0 + adds r0, r5, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + movs r2, #2 + bl sub_0806FFD8 +_08068906: + adds r0, r5, #0 + bl sub_0807000C + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08068910 +sub_08068910: @ 0x08068910 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08068920 + subs r0, #1 + strb r0, [r4, #0xe] + b _08068960 +_08068920: + movs r0, #0x10 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08068960 + adds r0, r4, #0 + movs r1, #0x30 + movs r2, #0x30 + bl sub_0806EDD8 + adds r2, r0, #0 + cmp r2, #0 + bge _08068944 + movs r2, #0x10 +_08068944: + adds r0, r2, #0 + bl sub_0806F5A4 + adds r2, r0, #0 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + movs r0, #4 + rsbs r0, r0, #0 + ands r1, r0 + adds r1, r1, r2 + adds r0, r4, #0 + bl sub_08004260 +_08068960: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068964 +sub_08068964: @ 0x08068964 + push {lr} + movs r0, #0x35 + movs r1, #0 + movs r2, #3 + bl sub_080A7C18 + movs r0, #0x35 + movs r1, #2 + bl sub_0807CAA0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806897C +sub_0806897C: @ 0x0806897C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080689B4 + ldr r1, _080689B0 @ =gUnk_08111520 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _080689BA + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _080689BA + .align 2, 0 +_080689B0: .4byte gUnk_08111520 +_080689B4: + adds r0, r4, #0 + bl sub_08004274 +_080689BA: + pop {r4, pc} + + thumb_func_start nullsub_502 +nullsub_502: @ 0x080689BC + bx lr + .align 2, 0 + + thumb_func_start sub_080689C0 +sub_080689C0: @ 0x080689C0 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080689E4 + ldr r0, _080689E0 @ =gUnk_081115D0 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _080689FA + .align 2, 0 +_080689E0: .4byte gUnk_081115D0 +_080689E4: + ldr r0, _08068A18 @ =gUnk_081115C0 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 +_080689FA: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08068A16 + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0 + bl sub_08068BEC +_08068A16: + pop {r4, pc} + .align 2, 0 +_08068A18: .4byte gUnk_081115C0 + + thumb_func_start sub_08068A1C +sub_08068A1C: @ 0x08068A1C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + strb r0, [r4, #0xb] + ldr r0, _08068A34 @ =gUnk_030010A0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #0 + beq _08068A38 + movs r1, #6 + movs r0, #3 + b _08068A42 + .align 2, 0 +_08068A34: .4byte gUnk_030010A0 +_08068A38: + adds r0, r4, #0 + bl sub_08078778 + movs r1, #2 + movs r0, #1 +_08068A42: + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_08068A4C +sub_08068A4C: @ 0x08068A4C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + bge _08068A62 + movs r1, #2 + b _08068A78 +_08068A62: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08068A6E + movs r0, #0x10 + strb r0, [r4, #0xf] + b _08068A78 +_08068A6E: + subs r0, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] +_08068A78: + adds r0, r4, #0 + bl sub_0806F078 + cmp r0, #0 + bne _08068A88 + adds r0, r4, #0 + bl sub_08004274 +_08068A88: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08068AA2 + movs r0, #0 + strb r0, [r1] + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0 + bl sub_08056378 +_08068AA2: + pop {r4, pc} + + thumb_func_start sub_08068AA4 +sub_08068AA4: @ 0x08068AA4 + push {lr} + adds r2, r0, #0 + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _08068AD4 + ldrb r0, [r2, #0xb] + adds r1, r0, #1 + movs r0, #7 + ands r1, r0 + strb r1, [r2, #0xb] + cmp r1, #0 + bne _08068AC4 + adds r0, r1, #1 + strb r0, [r2, #0xb] +_08068AC4: + ldr r0, _08068AD8 @ =gUnk_081115DC + ldrb r1, [r2, #0xb] + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r1, [r1] + adds r0, r2, #0 + bl sub_0801D2B4 +_08068AD4: + pop {pc} + .align 2, 0 +_08068AD8: .4byte gUnk_081115DC + + thumb_func_start sub_08068ADC +sub_08068ADC: @ 0x08068ADC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08068AF8 @ =gUnk_030010A0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #2 + bne _08068AF0 + adds r0, r4, #0 + bl sub_08004274 +_08068AF0: + adds r0, r4, #0 + bl sub_0806FD3C + pop {r4, pc} + .align 2, 0 +_08068AF8: .4byte gUnk_030010A0 + + thumb_func_start sub_08068AFC +sub_08068AFC: @ 0x08068AFC + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + bl sub_0807DD50 + pop {r4, pc} + + thumb_func_start sub_08068B2C +sub_08068B2C: @ 0x08068B2C + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _08068B64 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _08068B60 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _08068B6C + .align 2, 0 +_08068B60: .4byte gLinkEntity +_08068B64: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_08068B6C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068B70 +sub_08068B70: @ 0x08068B70 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08068B80 + movs r0, #1 + strb r0, [r4, #0xc] +_08068B80: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068B84 +sub_08068B84: @ 0x08068B84 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08068BAC @ =gUnk_08111618 + ldrb r0, [r4, #0xe] + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08068B9A + movs r1, #0 + bl sub_08054414 +_08068B9A: + ldr r0, _08068BB0 @ =gUnk_081115EC + ldrb r1, [r4, #0xe] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl sub_0805ED14 + pop {r4, pc} + .align 2, 0 +_08068BAC: .4byte gUnk_08111618 +_08068BB0: .4byte gUnk_081115EC + + thumb_func_start sub_08068BB4 +sub_08068BB4: @ 0x08068BB4 + ldr r2, _08068BCC @ =gUnk_02002A40 + adds r1, r2, #0 + adds r1, #0xb4 + ldrb r1, [r1] + adds r3, r0, #0 + adds r3, #0x69 + strb r1, [r3] + adds r2, #0xb5 + ldrb r1, [r2] + adds r0, #0x6a + strb r1, [r0] + bx lr + .align 2, 0 +_08068BCC: .4byte gUnk_02002A40 + + thumb_func_start sub_08068BD0 +sub_08068BD0: @ 0x08068BD0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x69 + ldrb r0, [r0] + movs r1, #0 + bl sub_08054414 + adds r4, #0x6a + ldrb r0, [r4] + movs r1, #1 + bl sub_08054414 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068BEC +sub_08068BEC: @ 0x08068BEC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x44 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08068C22 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r3] + ldr r3, _08068C24 @ =0xFFF00000 + adds r0, r4, #0 + adds r1, r2, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #0xfa + bl sub_080A3268 +_08068C22: + pop {r4, pc} + .align 2, 0 +_08068C24: .4byte 0xFFF00000 + + thumb_func_start sub_08068C28 +sub_08068C28: @ 0x08068C28 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08068C54 @ =gUnk_08111623 + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + ldrb r0, [r1] + strb r0, [r4, #0xe] + ldrb r5, [r4, #0xa] + cmp r5, #1 + bne _08068C6A + movs r0, #0x48 + bl sub_0807CA84 + cmp r0, #0 + beq _08068C6A + movs r0, #0x4b + bl sub_0807CA84 + cmp r0, #0 + bne _08068C58 + strb r5, [r4, #0xe] + b _08068C6A + .align 2, 0 +_08068C54: .4byte gUnk_08111623 +_08068C58: + movs r0, #0x4a + bl sub_0807CA84 + cmp r0, #0 + bne _08068C66 + movs r0, #2 + b _08068C68 +_08068C66: + movs r0, #3 +_08068C68: + strb r0, [r4, #0xe] +_08068C6A: + pop {r4, r5, pc} + + thumb_func_start sub_08068C6C +sub_08068C6C: @ 0x08068C6C + push {lr} + ldr r1, _08068C88 @ =gUnk_0811162B + ldrb r0, [r0, #0xe] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x81 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #0 + movs r2, #0 + bl sub_080A7C18 + pop {pc} + .align 2, 0 +_08068C88: .4byte gUnk_0811162B + + thumb_func_start sub_08068C8C +sub_08068C8C: @ 0x08068C8C + ldr r2, _08068C9C @ =gUnk_08111638 + ldrb r0, [r0, #0xe] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + str r0, [r1, #0x14] + bx lr + .align 2, 0 +_08068C9C: .4byte gUnk_08111638 + + thumb_func_start sub_08068CA0 +sub_08068CA0: @ 0x08068CA0 + push {r4, lr} + adds r4, r1, #0 + ldrb r1, [r0, #0xa] + cmp r1, #1 + bne _08068CDC + str r1, [r4, #0x14] + movs r0, #0x48 + bl sub_0807CA84 + cmp r0, #0 + bne _08068CB8 + str r0, [r4, #0x14] +_08068CB8: + movs r0, #0x4b + bl sub_0807CA84 + cmp r0, #0 + bne _08068CC4 + str r0, [r4, #0x14] +_08068CC4: + movs r0, #0x4a + bl sub_0807CA84 + cmp r0, #0 + bne _08068CD0 + str r0, [r4, #0x14] +_08068CD0: + movs r0, #0x4e + bl sub_0807CA84 + cmp r0, #0 + bne _08068CF6 + b _08068CF4 +_08068CDC: + ldr r1, _08068CF8 @ =gUnk_0811162B + ldrb r0, [r0, #0xe] + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0x81 + rsbs r1, r1, #0 + ands r0, r1 + bl sub_0807CA84 + cmp r0, #0 + beq _08068CF4 + movs r0, #1 +_08068CF4: + str r0, [r4, #0x14] +_08068CF6: + pop {r4, pc} + .align 2, 0 +_08068CF8: .4byte gUnk_0811162B + + thumb_func_start sub_08068CFC +sub_08068CFC: @ 0x08068CFC + push {r4, lr} + adds r4, r1, #0 + movs r1, #0 + str r1, [r4, #0x14] + ldrb r0, [r0, #0xe] + cmp r0, #0xa + bhi _08068DB6 + lsls r0, r0, #2 + ldr r1, _08068D14 @ =_08068D18 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08068D14: .4byte _08068D18 +_08068D18: @ jump table + .4byte _08068DB2 @ case 0 + .4byte _08068D44 @ case 1 + .4byte _08068D48 @ case 2 + .4byte _08068D4C @ case 3 + .4byte _08068DB2 @ case 4 + .4byte _08068D50 @ case 5 + .4byte _08068D58 @ case 6 + .4byte _08068D68 @ case 7 + .4byte _08068DB2 @ case 8 + .4byte _08068DB2 @ case 9 + .4byte _08068DA8 @ case 10 +_08068D44: + movs r0, #2 + b _08068DAA +_08068D48: + movs r0, #0x15 + b _08068DAA +_08068D4C: + movs r0, #0x14 + b _08068DAA +_08068D50: + movs r0, #3 + bl sub_0807CBD0 + b _08068DAE +_08068D58: + ldr r0, _08068D64 @ =gUnk_02002A40 + adds r0, #0xab + ldrb r0, [r0] + cmp r0, #0x4f + bls _08068DB6 + b _08068DB2 + .align 2, 0 +_08068D64: .4byte gUnk_02002A40 +_08068D68: + movs r0, #0x48 + bl sub_0807CA84 + cmp r0, #0 + beq _08068DB6 + movs r0, #0x49 + bl sub_0807CA84 + cmp r0, #0 + beq _08068DB6 + movs r0, #0x4a + bl sub_0807CA84 + cmp r0, #0 + beq _08068DB6 + movs r0, #0x4b + bl sub_0807CA84 + cmp r0, #0 + beq _08068DB6 + movs r0, #0x4c + bl sub_0807CA84 + cmp r0, #0 + beq _08068DB6 + movs r0, #0x4e + bl sub_0807CA84 + cmp r0, #0 + beq _08068DB6 + movs r0, #0x4f + b _08068DAA +_08068DA8: + movs r0, #0x4d +_08068DAA: + bl sub_0807CA84 +_08068DAE: + cmp r0, #0 + beq _08068DB6 +_08068DB2: + movs r0, #1 + str r0, [r4, #0x14] +_08068DB6: + pop {r4, pc} + + thumb_func_start sub_08068DB8 +sub_08068DB8: @ 0x08068DB8 + push {lr} + adds r1, r0, #0 + ldr r2, _08068DCC @ =gUnk_08111664 + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068DCC: .4byte gUnk_08111664 + + thumb_func_start sub_08068DD0 +sub_08068DD0: @ 0x08068DD0 + push {lr} + adds r1, r0, #0 + ldr r2, _08068DE4 @ =gUnk_0811167A + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068DE4: .4byte gUnk_0811167A + + thumb_func_start sub_08068DE8 +sub_08068DE8: @ 0x08068DE8 + push {lr} + adds r1, r0, #0 + ldr r2, _08068DFC @ =gUnk_08111690 + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068DFC: .4byte gUnk_08111690 + + thumb_func_start sub_08068E00 +sub_08068E00: @ 0x08068E00 + push {lr} + adds r1, r0, #0 + ldr r2, _08068E14 @ =gUnk_081116A6 + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068E14: .4byte gUnk_081116A6 + + thumb_func_start sub_08068E18 +sub_08068E18: @ 0x08068E18 + push {lr} + adds r1, r0, #0 + ldr r2, _08068E2C @ =gUnk_081116BC + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068E2C: .4byte gUnk_081116BC + + thumb_func_start sub_08068E30 +sub_08068E30: @ 0x08068E30 + push {lr} + adds r1, r0, #0 + ldr r2, _08068E44 @ =gUnk_081116D2 + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068E44: .4byte gUnk_081116D2 + + thumb_func_start sub_08068E48 +sub_08068E48: @ 0x08068E48 + push {lr} + adds r1, r0, #0 + ldr r2, _08068E5C @ =gUnk_081116E8 + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068E5C: .4byte gUnk_081116E8 + + thumb_func_start sub_08068E60 +sub_08068E60: @ 0x08068E60 + push {lr} + adds r1, r0, #0 + ldr r2, _08068E74 @ =gUnk_081116FE + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068E74: .4byte gUnk_081116FE + + thumb_func_start sub_08068E78 +sub_08068E78: @ 0x08068E78 + push {lr} + adds r1, r0, #0 + ldr r2, _08068E8C @ =gUnk_08111714 + ldrb r0, [r1, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + bl sub_08056398 + pop {pc} + .align 2, 0 +_08068E8C: .4byte gUnk_08111714 + + thumb_func_start sub_08068E90 +sub_08068E90: @ 0x08068E90 + ldr r2, _08068EAC @ =gUnk_03003F80 + adds r2, #0xac + ldr r1, _08068EB0 @ =gUnk_08111740 + ldrb r0, [r0, #0xe] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + subs r1, #1 + movs r0, #1 + lsls r0, r1 + ldrh r1, [r2] + orrs r0, r1 + strh r0, [r2] + bx lr + .align 2, 0 +_08068EAC: .4byte gUnk_03003F80 +_08068EB0: .4byte gUnk_08111740 + + thumb_func_start sub_08068EB4 +sub_08068EB4: @ 0x08068EB4 + ldr r0, _08068EC0 @ =gUnk_03003F80 + adds r0, #0xab + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_08068EC0: .4byte gUnk_03003F80 + + thumb_func_start sub_08068EC4 +sub_08068EC4: @ 0x08068EC4 + push {r4, lr} + adds r3, r1, #0 + ldr r2, _08068EEC @ =gUnk_08111740 + ldrb r4, [r0, #0xe] + lsls r1, r4, #2 + adds r1, r1, r2 + ldr r0, _08068EF0 @ =gUnk_03003F80 + adds r0, #0xab + ldr r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _08068EF8 + ldr r1, _08068EF4 @ =gUnk_0811172A + lsls r0, r4, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r3, #0x10] + movs r0, #1 + b _08068EFA + .align 2, 0 +_08068EEC: .4byte gUnk_08111740 +_08068EF0: .4byte gUnk_03003F80 +_08068EF4: .4byte gUnk_0811172A +_08068EF8: + movs r0, #0 +_08068EFA: + str r0, [r3, #0x14] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068F00 +sub_08068F00: @ 0x08068F00 + push {lr} + ldrb r0, [r0, #0xe] + cmp r0, #1 + bne _08068F0E + ldr r0, _08068F10 @ =gUnk_080F3494 + bl sub_0804ADDC +_08068F0E: + pop {pc} + .align 2, 0 +_08068F10: .4byte gUnk_080F3494 + + thumb_func_start sub_08068F14 +sub_08068F14: @ 0x08068F14 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #5 + bne _08068F24 + movs r0, #0xa0 + bl sub_080526A0 +_08068F24: + ldrb r0, [r4, #0xe] + cmp r0, #6 + bne _08068F38 + movs r0, #0xa0 + rsbs r0, r0, #0 + bl sub_080526A0 + movs r0, #2 + bl sub_080526A0 +_08068F38: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068F3C +sub_08068F3C: @ 0x08068F3C + push {lr} + ldrb r0, [r0, #0xe] + cmp r0, #6 + bne _08068F4A + movs r0, #0xa0 + bl sub_080526A0 +_08068F4A: + pop {pc} + + thumb_func_start sub_08068F4C +sub_08068F4C: @ 0x08068F4C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08068F72 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #4 + bl sub_080042AC + b _08068F78 +_08068F72: + adds r0, r4, #0 + bl sub_080042B8 +_08068F78: + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08068F94 + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0 + bl sub_08068BEC +_08068F94: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08068F98 +sub_08068F98: @ 0x08068F98 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08068FBC @ =gUnk_08111914 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + adds r0, r4, #0 + bl sub_0806920C + pop {r4, pc} + .align 2, 0 +_08068FBC: .4byte gUnk_08111914 + + thumb_func_start sub_08068FC0 +sub_08068FC0: @ 0x08068FC0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x14] + movs r0, #0x40 + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x6d + movs r0, #0xff + strb r0, [r1] + adds r0, r4, #0 + bl sub_0805ACC0 + adds r2, r0, #0 + cmp r2, #0 + bne _08068FF4 + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x68 + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r1, #2 + strh r0, [r1] + b _08069000 +_08068FF4: + lsrs r1, r2, #0x10 + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + adds r0, #2 + strh r2, [r0] +_08069000: + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x6c + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + + thumb_func_start sub_08069018 +sub_08069018: @ 0x08069018 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806903A + adds r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x3c + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC +_0806903A: + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0806905E + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08069058 + movs r0, #2 + b _0806905A +_08069058: + movs r0, #3 +_0806905A: + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_0806905E: + adds r0, r4, #0 + bl sub_0806924C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08069068 +sub_08069068: @ 0x08069068 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080690A4 + adds r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r1, #2 + ands r1, r0 + subs r1, #1 + ldrb r0, [r4, #0x14] + adds r1, r1, r0 + movs r0, #3 + ands r1, r0 + strb r1, [r4, #0x14] + lsls r1, r1, #3 + strb r1, [r4, #0x15] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x3c + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC +_080690A4: + adds r0, r4, #0 + bl sub_080AEF88 + adds r0, r4, #0 + bl sub_080042B8 + movs r0, #0x2e + ldrsh r1, [r4, r0] + adds r2, r4, #0 + adds r2, #0x68 + movs r3, #0 + ldrsh r0, [r2, r3] + subs r1, r1, r0 + cmp r1, #0x10 + ble _080690CC + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strb r0, [r4, #0xf] +_080690CC: + movs r3, #0x10 + rsbs r3, r3, #0 + cmp r1, r3 + bge _080690DE + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x2e] + movs r0, #1 + strb r0, [r4, #0xf] +_080690DE: + movs r5, #0x32 + ldrsh r1, [r4, r5] + adds r2, r4, #0 + adds r2, #0x6a + movs r5, #0 + ldrsh r0, [r2, r5] + subs r1, r1, r0 + cmp r1, #0x10 + ble _080690FA + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strb r0, [r4, #0xf] +_080690FA: + cmp r1, r3 + bge _08069108 + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r4, #0x32] + movs r0, #1 + strb r0, [r4, #0xf] +_08069108: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0806911C + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_0806911C: + adds r0, r4, #0 + bl sub_0806924C + pop {r4, r5, pc} + + thumb_func_start sub_08069124 +sub_08069124: @ 0x08069124 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r1, _08069144 @ =gUnk_08111928 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806924C + pop {r4, pc} + .align 2, 0 +_08069144: .4byte gUnk_08111928 + + thumb_func_start sub_08069148 +sub_08069148: @ 0x08069148 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + adds r0, #3 + strb r0, [r4, #0xf] + movs r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x14] + adds r1, #8 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + + thumb_func_start sub_08069168 +sub_08069168: @ 0x08069168 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _08069186 + movs r0, #2 + strb r0, [r2, #0xd] + ldrb r1, [r2, #0x14] + adds r1, #0xc + adds r0, r2, #0 + bl sub_080042AC +_08069186: + pop {pc} + + thumb_func_start sub_08069188 +sub_08069188: @ 0x08069188 + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080691B8 + movs r0, #0 + strb r0, [r3] + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080691B8 + movs r0, #3 + strb r0, [r2, #0xd] + ldrb r1, [r2, #0x14] + adds r1, #0x10 + adds r0, r2, #0 + bl sub_080042AC +_080691B8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080691BC +sub_080691BC: @ 0x080691BC + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bge _080691DE + movs r1, #0 + movs r0, #1 + strb r0, [r2, #0xc] + strb r1, [r2, #0xd] + ldrb r1, [r2, #0x14] + adds r1, #4 + adds r0, r2, #0 + bl sub_080042AC +_080691DE: + pop {pc} + + thumb_func_start sub_080691E0 +sub_080691E0: @ 0x080691E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _080691F4 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_080691F4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080691F8 +sub_080691F8: @ 0x080691F8 + push {lr} + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + ldr r2, _08069208 @ =gUnk_08111938 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_08069208: .4byte gUnk_08111938 + + thumb_func_start sub_0806920C +sub_0806920C: @ 0x0806920C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08069234 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + rsbs r0, r0, #0 + lsrs r5, r0, #0x1f + adds r0, r4, #0 + adds r0, #0x6d + ldrb r0, [r0] + cmp r5, r0 + beq _08069244 + cmp r5, #0 + bne _08069238 + adds r0, r4, #0 + bl sub_08078778 + b _08069244 + .align 2, 0 +_08069234: .4byte gUnk_03003F80 +_08069238: + adds r0, r4, #0 + adds r0, #0x6c + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080787A8 +_08069244: + adds r0, r4, #0 + adds r0, #0x6d + strb r5, [r0] + pop {r4, r5, pc} + + thumb_func_start sub_0806924C +sub_0806924C: @ 0x0806924C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + movs r2, #0 + ldrsb r2, [r0, r2] + cmp r2, #0 + beq _0806929C + ldr r0, _08069278 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08069284 + cmp r2, #2 + bne _0806927C + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806F118 + b _0806928E + .align 2, 0 +_08069278: .4byte gUnk_03003F80 +_0806927C: + adds r0, r4, #0 + bl sub_080691F8 + b _0806928E +_08069284: + adds r0, r4, #0 + bl sub_080691F8 + bl sub_080791D0 +_0806928E: + movs r0, #0xd4 + bl sub_080A3268 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] +_0806929C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080692A0 +sub_080692A0: @ 0x080692A0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _080692C6 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #0xf + bl sub_080042AC + b _080692CC +_080692C6: + adds r0, r2, #0 + bl sub_080042B8 +_080692CC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080692D0 +sub_080692D0: @ 0x080692D0 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080692F4 + ldr r0, _080692F0 @ =gUnk_08111A8C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0806930A + .align 2, 0 +_080692F0: .4byte gUnk_08111A8C +_080692F4: + ldr r0, _0806930C @ =gUnk_08111A80 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 +_0806930A: + pop {r4, pc} + .align 2, 0 +_0806930C: .4byte gUnk_08111A80 + + thumb_func_start sub_08069310 +sub_08069310: @ 0x08069310 + push {r4, lr} + adds r4, r0, #0 + bl sub_08078778 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08069328 +sub_08069328: @ 0x08069328 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bls _0806934E + movs r0, #0 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + cmp r0, #0 + blt _0806934E + strb r0, [r4, #0x14] +_0806934E: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + ldrb r1, [r4, #0x14] + cmp r0, r1 + beq _08069362 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC +_08069362: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0806938E + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0805E47C + adds r0, r4, #0 + movs r1, #8 + bl sub_080042AC + ldrb r0, [r4, #0xe] + movs r1, #0x90 + lsls r1, r1, #5 + adds r0, r0, r1 + bl sub_08056378 +_0806938E: + pop {r4, pc} + + thumb_func_start sub_08069390 +sub_08069390: @ 0x08069390 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r0, _080693C0 @ =gUnk_02000050 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _080693BC + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x39 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0805E584 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC +_080693BC: + pop {r4, pc} + .align 2, 0 +_080693C0: .4byte gUnk_02000050 + + thumb_func_start sub_080693C4 +sub_080693C4: @ 0x080693C4 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + bl sub_0807DD50 + pop {pc} + + thumb_func_start sub_080693D0 +sub_080693D0: @ 0x080693D0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0 + bl sub_0807DD94 + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #8 + bne _08069422 + adds r0, r5, #0 + adds r0, #0x82 + ldrh r0, [r0] + movs r1, #0xf + ands r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r6, r0, #0x1f + adds r4, r5, #0 + adds r4, #0x5a + ldrb r0, [r4] + cmp r0, #1 + bne _0806940C + movs r0, #0 + strb r0, [r4] + ldr r1, _08069424 @ =0xFFF80000 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_08069428 +_0806940C: + ldrb r0, [r4] + cmp r0, #2 + bne _08069422 + movs r0, #0 + strb r0, [r4] + movs r1, #0x80 + lsls r1, r1, #0xc + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_08069428 +_08069422: + pop {r4, r5, r6, pc} + .align 2, 0 +_08069424: .4byte 0xFFF80000 + + thumb_func_start sub_08069428 +sub_08069428: @ 0x08069428 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _08069452 + ldr r3, _0806947C @ =0xFFF00000 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_0806FA48 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_08069452: + cmp r6, #0 + beq _0806947A + adds r0, r5, #0 + movs r1, #0x41 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _0806947A + ldr r3, _0806947C @ =0xFFF00000 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_0806FA48 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_0806947A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806947C: .4byte 0xFFF00000 + + thumb_func_start sub_08069480 +sub_08069480: @ 0x08069480 + push {lr} + bl sub_0801E99C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {pc} + + thumb_func_start sub_0806948C +sub_0806948C: @ 0x0806948C + push {r4, lr} + adds r4, r1, #0 + bl sub_08069480 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0801E7F4 + str r0, [r4, #0x14] + ldr r2, _080694AC @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_080694AC: .4byte gUnk_02033280 + + thumb_func_start sub_080694B0 +sub_080694B0: @ 0x080694B0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08069480 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + adds r0, r5, #0 + bl sub_0801E7F4 + cmp r0, #0 + beq _080694CE + adds r0, r4, #0 + bl sub_08078778 + b _080694D6 +_080694CE: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08078784 +_080694D6: + pop {r4, r5, pc} + + thumb_func_start sub_080694D8 +sub_080694D8: @ 0x080694D8 + push {lr} + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + ldr r2, _080694E8 @ =gUnk_08111A94 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_080694E8: .4byte gUnk_08111A94 + + thumb_func_start sub_080694EC +sub_080694EC: @ 0x080694EC + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #4 + strb r0, [r4, #0x14] + movs r5, #2 + movs r0, #0x2f + bl sub_0801E7F4 + cmp r0, #0 + bne _08069502 + movs r5, #8 +_08069502: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x80 + strh r5, [r0] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08069514 +sub_08069514: @ 0x08069514 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806953A + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #2 + bl sub_080042AC + b _08069540 +_0806953A: + adds r0, r2, #0 + bl sub_080042B8 +_08069540: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08069544 +sub_08069544: @ 0x08069544 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08069568 + ldr r0, _08069564 @ =gUnk_08111B98 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0806957E + .align 2, 0 +_08069564: .4byte gUnk_08111B98 +_08069568: + ldr r0, _08069580 @ =gUnk_08111B88 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 +_0806957E: + pop {r4, pc} + .align 2, 0 +_08069580: .4byte gUnk_08111B88 + + thumb_func_start sub_08069584 +sub_08069584: @ 0x08069584 + push {lr} + adds r1, r0, #0 + ldr r0, _08069598 @ =gUnk_030010A0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #0 + beq _0806959C + movs r0, #3 + b _0806959E + .align 2, 0 +_08069598: .4byte gUnk_030010A0 +_0806959C: + movs r0, #1 +_0806959E: + strb r0, [r1, #0xc] + adds r0, r1, #0 + movs r1, #2 + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_080695AC +sub_080695AC: @ 0x080695AC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bls _080695D2 + movs r0, #0 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #0x28 + movs r2, #0x28 + bl sub_0806ED9C + cmp r0, #0 + blt _080695D2 + strb r0, [r4, #0x14] +_080695D2: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + ldrb r1, [r4, #0x14] + cmp r0, r1 + beq _080695E6 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC +_080695E6: + pop {r4, pc} + + thumb_func_start sub_080695E8 +sub_080695E8: @ 0x080695E8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r0, _08069618 @ =gUnk_02000050 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _08069614 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x39 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0805E584 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC +_08069614: + pop {r4, pc} + .align 2, 0 +_08069618: .4byte gUnk_02000050 + + thumb_func_start sub_0806961C +sub_0806961C: @ 0x0806961C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08069638 @ =gUnk_030010A0 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #2 + bne _08069630 + adds r0, r4, #0 + bl sub_080042B8 +_08069630: + adds r0, r4, #0 + bl sub_0806FD3C + pop {r4, pc} + .align 2, 0 +_08069638: .4byte gUnk_030010A0 + + thumb_func_start sub_0806963C +sub_0806963C: @ 0x0806963C + push {lr} + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + bl sub_0807DD50 + pop {pc} + + thumb_func_start sub_08069654 +sub_08069654: @ 0x08069654 + push {lr} + movs r1, #0 + bl sub_0807DD94 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08069660 +sub_08069660: @ 0x08069660 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0806967C @ =0x00002C1C + adds r1, r4, #0 + bl sub_08056398 + adds r0, r4, #0 + bl sub_080696BC + ldr r1, _08069680 @ =gUnk_02000050 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1, #0x10] + pop {r4, pc} + .align 2, 0 +_0806967C: .4byte 0x00002C1C +_08069680: .4byte gUnk_02000050 + + thumb_func_start sub_08069684 +sub_08069684: @ 0x08069684 + push {lr} + movs r0, #9 + movs r1, #0x31 + movs r2, #8 + bl sub_0805EB00 + cmp r0, #0 + bne _080696AE + bl sub_0805E8D4 + adds r1, r0, #0 + cmp r1, #0 + beq _080696AE + movs r0, #9 + strb r0, [r1, #8] + movs r0, #0x31 + strb r0, [r1, #9] + adds r0, r1, #0 + movs r1, #8 + bl sub_0805EA2C +_080696AE: + pop {pc} + + thumb_func_start sub_080696B0 +sub_080696B0: @ 0x080696B0 + ldr r1, _080696B8 @ =gUnk_02034350 + movs r0, #0 + strb r0, [r1, #6] + bx lr + .align 2, 0 +_080696B8: .4byte gUnk_02034350 + + thumb_func_start sub_080696BC +sub_080696BC: @ 0x080696BC + push {r4, r5, lr} + ldr r0, _08069710 @ =gUnk_02034350 + ldrb r0, [r0, #7] + movs r5, #0 + cmp r0, #0x70 + ble _080696CA + movs r5, #1 +_080696CA: + cmp r0, #0x72 + ble _080696D0 + movs r5, #2 +_080696D0: + movs r0, #0x3e + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + movs r0, #0x3f + bl GetProgressFlag + cmp r0, #0 + beq _080696E8 + movs r4, #2 +_080696E8: + movs r0, #0x40 + bl GetProgressFlag + cmp r0, #0 + beq _080696F4 + movs r4, #3 +_080696F4: + movs r0, #0x41 + bl GetProgressFlag + cmp r0, #0 + beq _08069700 + movs r4, #4 +_08069700: + ldr r0, _08069714 @ =gUnk_08111BA0 + lsls r1, r4, #1 + adds r1, r1, r4 + adds r1, r1, r5 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + pop {r4, r5, pc} + .align 2, 0 +_08069710: .4byte gUnk_02034350 +_08069714: .4byte gUnk_08111BA0 + + thumb_func_start sub_08069718 +sub_08069718: @ 0x08069718 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r7, r1, #0 + bl sub_080696BC + adds r6, r0, #0 + ldr r0, _08069754 @ =gUnk_02002A40 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r6, r0 + bgt _08069764 + ldr r5, _08069758 @ =gUnk_02034350 + ldrb r0, [r5, #7] + bl sub_0801E7D0 + cmp r0, #0x62 + bhi _0806975C + rsbs r0, r6, #0 + bl sub_080526CC + ldrb r1, [r5, #7] + movs r0, #0x5c + movs r2, #0 + bl sub_080A7C18 + movs r0, #0 + strb r0, [r5, #6] + strb r0, [r5, #7] + movs r0, #1 + b _0806976E + .align 2, 0 +_08069754: .4byte gUnk_02002A40 +_08069758: .4byte gUnk_02034350 +_0806975C: + ldr r0, _08069760 @ =0x00002C1F + b _08069766 + .align 2, 0 +_08069760: .4byte 0x00002C1F +_08069764: + ldr r0, _0806977C @ =0x00002C1E +_08069766: + adds r1, r4, #0 + bl sub_08056398 + movs r0, #0 +_0806976E: + str r0, [r7, #0x14] + ldr r2, _08069780 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806977C: .4byte 0x00002C1E +_08069780: .4byte gUnk_02033280 + + thumb_func_start sub_08069784 +sub_08069784: @ 0x08069784 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806979A + adds r0, r2, #0 + bl sub_08069838 + b _080697A0 +_0806979A: + adds r0, r2, #0 + bl sub_080697A4 +_080697A0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080697A4 +sub_080697A4: @ 0x080697A4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080697C0 @ =gUnk_08111C48 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_080697C0: .4byte gUnk_08111C48 + + thumb_func_start sub_080697C4 +sub_080697C4: @ 0x080697C4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080697E8 @ =gUnk_08111C3C + bl sub_0806FDEC + cmp r0, #0 + beq _080697E4 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 +_080697E4: + pop {r4, pc} + .align 2, 0 +_080697E8: .4byte gUnk_08111C3C + + thumb_func_start sub_080697EC +sub_080697EC: @ 0x080697EC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806ED9C + adds r1, r0, #0 + cmp r1, #0 + blt _0806981E + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0806981A + movs r0, #0x10 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, r1 + beq _0806981E + adds r0, r4, #0 + bl sub_08004260 + b _0806981E +_0806981A: + subs r0, #1 + strb r0, [r4, #0xf] +_0806981E: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08069834 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08069888 +_08069834: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08069838 +sub_08069838: @ 0x08069838 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + bne _08069862 + ldr r1, _08069884 @ =gUnk_08111C3C + bl sub_0806FDEC + cmp r0, #0 + beq _08069880 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x68 + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, r4, #0 + bl sub_0807DD64 +_08069862: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08069880 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08069888 +_08069880: + pop {r4, r5, pc} + .align 2, 0 +_08069884: .4byte gUnk_08111C3C + + thumb_func_start sub_08069888 +sub_08069888: @ 0x08069888 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x47 + bl GetProgressFlag + cmp r0, #0 + bne _080698A0 + movs r4, #0 + movs r0, #0x47 + bl sub_0807CD04 + b _08069906 +_080698A0: + movs r0, #0x2b + bl GetProgressFlag + cmp r0, #0 + bne _080698C2 + movs r0, #0x2c + bl GetProgressFlag + cmp r0, #0 + bne _080698C2 + movs r0, #0x2d + bl GetProgressFlag + cmp r0, #0 + bne _080698C2 + movs r4, #1 + b _08069906 +_080698C2: + movs r0, #0x18 + bl GetProgressFlag + cmp r0, #0 + bne _080698D0 + movs r4, #2 + b _08069906 +_080698D0: + movs r0, #0x48 + bl GetProgressFlag + cmp r0, #0 + bne _080698E4 + movs r4, #3 + movs r0, #0x48 + bl sub_0807CD04 + b _08069906 +_080698E4: + movs r0, #0x2e + bl GetProgressFlag + cmp r0, #0 + bne _08069904 + movs r0, #0x2f + bl GetProgressFlag + cmp r0, #0 + bne _08069904 + movs r0, #0x30 + bl GetProgressFlag + movs r4, #4 + cmp r0, #0 + beq _08069906 +_08069904: + movs r4, #5 +_08069906: + ldr r0, _08069918 @ =gUnk_08111C50 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_08069918: .4byte gUnk_08111C50 + + thumb_func_start sub_0806991C +sub_0806991C: @ 0x0806991C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x3c + adds r1, r5, #0 + adds r1, #0x68 + movs r3, #0 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x69 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #2 + ldr r0, _0806999C @ =gUnk_08111C5C + adds r1, r1, r0 + ldr r2, _080699A0 @ =gUnk_03000BF0 + ldrh r0, [r1] + ldrh r6, [r2, #6] + adds r0, r0, r6 + strh r0, [r4, #0x1e] + ldrh r0, [r1, #2] + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r4, #0x22] + movs r0, #8 + strb r0, [r4, #0x19] + ldr r0, [r4, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r4, #8] + str r3, [r4, #0x14] + movs r1, #0x1e + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r3, #0x22 + ldrsh r1, [r4, r3] + movs r6, #0x32 + ldrsh r2, [r5, r6] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + ldrb r2, [r5, #0x14] + movs r1, #0x80 + ands r1, r2 + ldr r2, _080699A4 @ =gUnk_08111C74 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + adds r0, r0, r2 + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r5, #0x14] + ldr r2, _080699A8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, pc} + .align 2, 0 +_0806999C: .4byte gUnk_08111C5C +_080699A0: .4byte gUnk_03000BF0 +_080699A4: .4byte gUnk_08111C74 +_080699A8: .4byte gUnk_02033280 + + thumb_func_start sub_080699AC +sub_080699AC: @ 0x080699AC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x3c + adds r1, r5, #0 + adds r1, #0x68 + movs r3, #0 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x69 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #2 + ldr r0, _08069A2C @ =gUnk_08111C84 + adds r1, r1, r0 + ldr r2, _08069A30 @ =gUnk_03000BF0 + ldrh r0, [r1] + ldrh r6, [r2, #6] + adds r0, r0, r6 + strh r0, [r4, #0x1e] + ldrh r0, [r1, #2] + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r4, #0x22] + movs r0, #8 + strb r0, [r4, #0x19] + ldr r0, [r4, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r4, #8] + str r3, [r4, #0x14] + movs r1, #0x1e + ldrsh r0, [r4, r1] + movs r2, #0x2e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + movs r3, #0x22 + ldrsh r1, [r4, r3] + movs r6, #0x32 + ldrsh r2, [r5, r6] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + ldrb r2, [r5, #0x14] + movs r1, #0x80 + ands r1, r2 + ldr r2, _08069A34 @ =gUnk_08111C8C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + adds r0, r0, r2 + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r5, #0x14] + ldr r2, _08069A38 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, pc} + .align 2, 0 +_08069A2C: .4byte gUnk_08111C84 +_08069A30: .4byte gUnk_03000BF0 +_08069A34: .4byte gUnk_08111C8C +_08069A38: .4byte gUnk_02033280 + + thumb_func_start sub_08069A3C +sub_08069A3C: @ 0x08069A3C + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _08069A5C @ =gUnk_08111C9C + movs r1, #1 + ands r1, r0 + adds r4, #0x69 + movs r0, #0 + ldrsb r0, [r4, r0] + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08069A5C: .4byte gUnk_08111C9C + + thumb_func_start sub_08069A60 +sub_08069A60: @ 0x08069A60 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _08069A80 @ =gUnk_08111CA8 + movs r1, #1 + ands r1, r0 + adds r4, #0x69 + movs r0, #0 + ldrsb r0, [r4, r0] + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08069A80: .4byte gUnk_08111CA8 + + thumb_func_start sub_08069A84 +sub_08069A84: @ 0x08069A84 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _08069AA4 @ =gUnk_08111CB4 + movs r1, #1 + ands r1, r0 + adds r4, #0x69 + movs r0, #0 + ldrsb r0, [r4, r0] + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08069AA4: .4byte gUnk_08111CB4 + + thumb_func_start sub_08069AA8 +sub_08069AA8: @ 0x08069AA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + ldr r2, _08069AC8 @ =gUnk_08111CB8 + movs r1, #1 + ands r1, r0 + adds r4, #0x69 + movs r0, #0 + ldrsb r0, [r4, r0] + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08069AC8: .4byte gUnk_08111CB8 + + thumb_func_start sub_08069ACC +sub_08069ACC: @ 0x08069ACC + push {lr} + adds r2, r1, #0 + adds r0, #0x68 + ldrb r1, [r0] + subs r1, #1 + strb r1, [r0] + lsls r1, r1, #0x18 + cmp r1, #0 + bgt _08069AE2 + movs r0, #1 + b _08069AE4 +_08069AE2: + movs r0, #0 +_08069AE4: + str r0, [r2, #0x14] + pop {pc} + + thumb_func_start sub_08069AE8 +sub_08069AE8: @ 0x08069AE8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #7 + ands r2, r0 + adds r2, #0xf + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08069B1C +sub_08069B1C: @ 0x08069B1C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08069B40 @ =gUnk_08111D88 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + adds r0, r4, #0 + bl sub_08069FE8 + pop {r4, pc} + .align 2, 0 +_08069B40: .4byte gUnk_08111D88 + + thumb_func_start sub_08069B44 +sub_08069B44: @ 0x08069B44 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08069EF0 + cmp r0, #0 + beq _08069C30 + adds r0, r5, #0 + bl sub_0805ACC0 + cmp r0, #0 + bne _08069B64 + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r2, #0x32 + ldrsh r4, [r5, r2] + b _08069B68 +_08069B64: + lsrs r1, r0, #0x10 + adds r4, r0, #0 +_08069B68: + ldrb r0, [r5, #0xe] + movs r3, #0x20 + cmp r0, #0 + beq _08069B72 + adds r3, r0, #0 +_08069B72: + subs r0, r1, r3 + adds r2, r5, #0 + adds r2, #0x6e + strh r0, [r2] + adds r1, r1, r3 + adds r0, r5, #0 + adds r0, #0x6c + strh r1, [r0] + adds r1, r4, #0 + subs r1, #8 + adds r0, #4 + strh r1, [r0] + adds r0, r4, #0 + adds r0, #8 + adds r2, #4 + strh r0, [r2] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + movs r0, #0x1e + strb r0, [r5, #0xe] + movs r4, #2 + strb r4, [r5, #0x14] + adds r1, r5, #0 + adds r1, #0x6a + movs r0, #0xff + strb r0, [r1] + adds r0, r5, #0 + bl sub_0801E99C + adds r1, r5, #0 + adds r1, #0x74 + strb r0, [r1] + adds r0, r5, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r5, #0 + movs r1, #0xa + bl sub_080042AC + ldrb r0, [r5, #0x10] + ands r4, r0 + cmp r4, #0 + beq _08069BD2 + adds r0, r5, #0 + bl sub_0807DD50 +_08069BD2: + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08069BF2 + ldr r0, _08069C34 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08069BF2 + movs r0, #0x36 + bl sub_0807CA84 + cmp r0, #2 + beq _08069BF2 + movs r0, #4 + strb r0, [r5, #0xc] +_08069BF2: + ldrb r0, [r5, #0xa] + cmp r0, #2 + bne _08069C30 + movs r0, #0xcf + bl sub_0807CBD0 + cmp r0, #0 + bne _08069C30 + ldr r0, _08069C38 @ =0x00004072 + movs r6, #0x2e + ldrsh r1, [r5, r6] + ldr r3, _08069C3C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + adds r3, #8 + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_08069C30: + pop {r4, r5, r6, pc} + .align 2, 0 +_08069C34: .4byte gUnk_03003F80 +_08069C38: .4byte 0x00004072 +_08069C3C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08069C40 +sub_08069C40: @ 0x08069C40 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08069F90 + cmp r0, #0 + beq _08069C80 + ldr r0, _08069C68 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08069C6C + adds r0, r4, #0 + bl sub_08069CB8 + b _08069C7A + .align 2, 0 +_08069C68: .4byte gUnk_03003F80 +_08069C6C: + adds r0, r4, #0 + bl sub_0806EDC4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08069D00 +_08069C7A: + movs r0, #0x1e + strb r0, [r4, #0xe] + b _08069CB2 +_08069C80: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08069CB2 + movs r0, #2 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r4, #0xe] + bl sub_08000E50 + ldr r2, _08069CB4 @ =gUnk_08111DA8 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08069F6C +_08069CB2: + pop {r4, pc} + .align 2, 0 +_08069CB4: .4byte gUnk_08111DA8 + + thumb_func_start sub_08069CB8 +sub_08069CB8: @ 0x08069CB8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _08069CF8 @ =gLinkEntity + bl sub_080045C4 + ldr r2, _08069CFC @ =gUnk_08111DB0 + ldrb r1, [r4, #0x14] + lsls r1, r1, #5 + adds r0, r0, r1 + adds r0, r0, r2 + ldrb r1, [r0] + lsrs r0, r1, #6 + strb r0, [r4, #0x14] + movs r0, #0x3f + ands r1, r0 + adds r5, r4, #0 + adds r5, #0x6b + strb r1, [r5] + adds r0, r4, #0 + bl sub_0806A028 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + ldrb r1, [r5] + cmp r0, r1 + beq _08069CF6 + ldrb r1, [r5] + adds r0, r4, #0 + bl sub_080042AC +_08069CF6: + pop {r4, r5, pc} + .align 2, 0 +_08069CF8: .4byte gLinkEntity +_08069CFC: .4byte gUnk_08111DB0 + + thumb_func_start sub_08069D00 +sub_08069D00: @ 0x08069D00 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x6b + movs r7, #8 + strb r7, [r5] + bl sub_0806A028 + adds r6, r4, #0 + adds r6, #0x58 + ldrb r0, [r6] + cmp r0, #0x1f + bls _08069D2A + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08069D4E + strb r7, [r5] +_08069D2A: + bl sub_08000E50 + ldr r1, _08069D50 @ =0x000001FF + ands r1, r0 + cmp r1, #2 + bhi _08069D3C + adds r0, r4, #0 + bl sub_08069FBC +_08069D3C: + ldrb r2, [r6] + ldrb r1, [r5] + ldrb r0, [r4, #0x14] + adds r1, r1, r0 + cmp r2, r1 + beq _08069D4E + adds r0, r4, #0 + bl sub_080042AC +_08069D4E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08069D50: .4byte 0x000001FF + + thumb_func_start sub_08069D54 +sub_08069D54: @ 0x08069D54 + push {r4, lr} + adds r4, r0, #0 + bl sub_08069F90 + cmp r0, #0 + bne _08069DD8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069DD8 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080AEF88 + ldrh r1, [r4, #0x2a] + movs r0, #0x2e + ldrsh r2, [r4, r0] + adds r0, r4, #0 + adds r0, #0x6e + ldrh r0, [r0] + cmp r2, r0 + bge _08069D92 + adds r0, #1 + strh r0, [r4, #0x2e] + movs r1, #0xe0 + lsls r1, r1, #4 + b _08069DA4 +_08069D92: + adds r0, r4, #0 + adds r0, #0x6c + ldrh r0, [r0] + cmp r2, r0 + ble _08069DA4 + subs r0, #1 + strh r0, [r4, #0x2e] + movs r1, #0xe0 + lsls r1, r1, #8 +_08069DA4: + movs r0, #0x32 + ldrsh r2, [r4, r0] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + cmp r2, r0 + bge _08069DBA + adds r0, #1 + strh r0, [r4, #0x32] + movs r1, #0xe + b _08069DCA +_08069DBA: + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + cmp r2, r0 + ble _08069DCA + subs r0, #1 + strh r0, [r4, #0x32] + movs r1, #0xe0 +_08069DCA: + adds r0, r4, #0 + bl sub_0800417E + adds r0, r4, #0 + bl sub_08069F6C + b _08069DF6 +_08069DD8: + adds r0, r4, #0 + bl sub_08069F90 + cmp r0, #0 + beq _08069DE6 + movs r0, #1 + b _08069DE8 +_08069DE6: + movs r0, #3 +_08069DE8: + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r4, #0xe] +_08069DF6: + pop {r4, pc} + + thumb_func_start sub_08069DF8 +sub_08069DF8: @ 0x08069DF8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08069F90 + cmp r0, #0 + beq _08069E0E + movs r0, #1 + b _08069E34 +_08069E0E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08069E22 + adds r0, r4, #0 + bl sub_08069D00 + b _08069E42 +_08069E22: + bl sub_08000E50 + movs r1, #0xff + ands r1, r0 + cmp r1, #0x2f + bhi _08069E32 + movs r0, #2 + b _08069E34 +_08069E32: + movs r0, #3 +_08069E34: + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r4, #0xe] +_08069E42: + pop {r4, pc} + + thumb_func_start sub_08069E44 +sub_08069E44: @ 0x08069E44 + push {lr} + movs r1, #0 + bl sub_0807DD94 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08069E50 +sub_08069E50: @ 0x08069E50 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_0806EDC4 + strb r0, [r4, #0x14] + adds r5, r4, #0 + adds r5, #0x6b + movs r7, #8 + strb r7, [r5] + adds r0, r4, #0 + bl sub_0806A028 + adds r0, r4, #0 + bl sub_080042B8 + adds r6, r4, #0 + adds r6, #0x58 + ldrb r0, [r6] + cmp r0, #0x1f + bls _08069E88 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08069EC8 + strb r7, [r5] +_08069E88: + adds r0, r4, #0 + bl sub_08069FBC + ldrb r2, [r6] + ldrb r1, [r5] + ldrb r0, [r4, #0x14] + adds r1, r1, r0 + cmp r2, r1 + beq _08069EA0 + adds r0, r4, #0 + bl sub_080042AC +_08069EA0: + movs r0, #0x36 + bl sub_0807CA84 + cmp r0, #2 + bne _08069EC8 + movs r0, #7 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x29 + bl sub_080042AC + adds r0, r4, #0 + bl sub_080788E0 + movs r0, #0xd1 + bl sub_08004488 + movs r0, #0xcd + bl sub_08004488 +_08069EC8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08069ECC +sub_08069ECC: @ 0x08069ECC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _08069EDC + movs r0, #1 + strb r0, [r4, #0xc] +_08069EDC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08069EE0 +sub_08069EE0: @ 0x08069EE0 + push {lr} + bl sub_080042B8 + pop {pc} + + thumb_func_start sub_08069EE8 +sub_08069EE8: @ 0x08069EE8 + movs r1, #5 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 + + thumb_func_start sub_08069EF0 +sub_08069EF0: @ 0x08069EF0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _08069F20 @ =gUnk_08111D58 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _08069F28 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r1, _08069F24 @ =gUnk_08111E30 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + movs r0, #1 + b _08069F2A + .align 2, 0 +_08069F20: .4byte gUnk_08111D58 +_08069F24: .4byte gUnk_08111E30 +_08069F28: + movs r0, #0 +_08069F2A: + pop {r4, pc} + + thumb_func_start sub_08069F2C +sub_08069F2C: @ 0x08069F2C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + cmp r2, #0 + beq _08069F46 + adds r0, r4, #0 + adds r0, #0x68 + ldrh r0, [r0] + adds r2, r2, r0 +_08069F46: + subs r2, #1 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + + thumb_func_start sub_08069F6C +sub_08069F6C: @ 0x08069F6C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + bl sub_0806F5A4 + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + adds r1, r0, #4 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _08069F8C + adds r0, r4, #0 + bl sub_080042AC +_08069F8C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08069F90 +sub_08069F90: @ 0x08069F90 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bne _08069FA8 + movs r0, #0xcf + bl sub_0807CBD0 + cmp r0, #0 + bne _08069FA8 + movs r0, #1 + b _08069FB4 +_08069FA8: + ldr r1, _08069FB8 @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0x14 + movs r3, #0x14 + bl sub_080041A0 +_08069FB4: + pop {r4, pc} + .align 2, 0 +_08069FB8: .4byte gLinkEntity + + thumb_func_start sub_08069FBC +sub_08069FBC: @ 0x08069FBC + push {lr} + adds r2, r0, #0 + ldr r0, _08069FE4 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + movs r1, #0x20 + cmp r0, #0 + beq _08069FD0 + movs r1, #0x24 +_08069FD0: + ldrb r0, [r2, #0x14] + cmp r0, #1 + beq _08069FDA + cmp r0, #3 + bne _08069FE0 +_08069FDA: + adds r0, r2, #0 + adds r0, #0x6b + strb r1, [r0] +_08069FE0: + pop {pc} + .align 2, 0 +_08069FE4: .4byte gUnk_03003F80 + + thumb_func_start sub_08069FE8 +sub_08069FE8: @ 0x08069FE8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0806A010 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + rsbs r0, r0, #0 + lsrs r5, r0, #0x1f + adds r0, r4, #0 + adds r0, #0x6a + ldrb r0, [r0] + cmp r5, r0 + beq _0806A020 + cmp r5, #0 + bne _0806A014 + adds r0, r4, #0 + bl sub_08078778 + b _0806A020 + .align 2, 0 +_0806A010: .4byte gUnk_03003F80 +_0806A014: + adds r0, r4, #0 + adds r0, #0x74 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080787A8 +_0806A020: + adds r0, r4, #0 + adds r0, #0x6a + strb r5, [r0] + pop {r4, r5, pc} + + thumb_func_start sub_0806A028 +sub_0806A028: @ 0x0806A028 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + movs r2, #0 + ldrsb r2, [r0, r2] + cmp r2, #0 + beq _0806A07E + ldr r0, _0806A054 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A060 + cmp r2, #2 + bne _0806A058 + movs r0, #6 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806F118 + b _0806A076 + .align 2, 0 +_0806A054: .4byte gUnk_03003F80 +_0806A058: + adds r0, r4, #0 + bl sub_0806A080 + b _0806A076 +_0806A060: + adds r0, r4, #0 + bl sub_08069FBC + adds r0, r4, #0 + bl sub_0806A080 + movs r0, #0xd1 + bl sub_080A3268 + bl sub_080791D0 +_0806A076: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] +_0806A07E: + pop {r4, pc} + + thumb_func_start sub_0806A080 +sub_0806A080: @ 0x0806A080 + push {lr} + ldrb r2, [r0, #0xb] + lsls r1, r2, #2 + adds r1, r1, r2 + lsls r1, r1, #4 + ldr r2, _0806A09C @ =gUnk_02002A40 + ldrb r2, [r2, #8] + lsls r2, r2, #3 + ldr r3, _0806A0A0 @ =gUnk_08111E34 + adds r2, r2, r3 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806A09C: .4byte gUnk_02002A40 +_0806A0A0: .4byte gUnk_08111E34 + + thumb_func_start sub_0806A0A4 +sub_0806A0A4: @ 0x0806A0A4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _0806A0F8 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A100 + movs r5, #4 + movs r0, #0xcf + bl sub_0807CBD0 + cmp r0, #0 + bne _0806A120 + movs r5, #3 + movs r0, #0xcf + bl sub_0807CCB4 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0806A0FC @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r6, #0x32 + ldrsh r1, [r4, r6] + ldrh r2, [r2, #8] + adds r2, #8 + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + b _0806A120 + .align 2, 0 +_0806A0F8: .4byte gUnk_03003F80 +_0806A0FC: .4byte gUnk_03000BF0 +_0806A100: + movs r5, #2 + movs r0, #0xcf + bl sub_0807CBD0 + cmp r0, #0 + bne _0806A120 + movs r5, #1 + movs r0, #0xdb + bl sub_0807CBD0 + cmp r0, #0 + bne _0806A120 + movs r5, #0 + movs r0, #0xdb + bl sub_0807CCB4 +_0806A120: + ldr r2, _0806A13C @ =gUnk_08111F74 + ldr r0, _0806A140 @ =gUnk_02002A40 + ldrb r1, [r0, #8] + lsls r0, r1, #2 + adds r0, r0, r1 + adds r0, r0, r5 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806A13C: .4byte gUnk_08111F74 +_0806A140: .4byte gUnk_02002A40 + + thumb_func_start sub_0806A144 +sub_0806A144: @ 0x0806A144 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #4 + ldr r0, _0806A18C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A17A + movs r4, #3 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0806A17A + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0806A17A + movs r0, #0x85 + bl sub_0807CBD0 + movs r4, #2 + cmp r0, #0 + bne _0806A17A + movs r4, #1 +_0806A17A: + ldr r0, _0806A190 @ =gUnk_08111FD8 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806A18C: .4byte gUnk_03003F80 +_0806A190: .4byte gUnk_08111FD8 + + thumb_func_start sub_0806A194 +sub_0806A194: @ 0x0806A194 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806A1CE + adds r0, r4, #0 + bl sub_08069EF0 + cmp r0, #0 + beq _0806A1D4 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0x23 + bl sub_08004260 + b _0806A1D4 +_0806A1CE: + adds r0, r4, #0 + bl sub_08004274 +_0806A1D4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806A1D8 +sub_0806A1D8: @ 0x0806A1D8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806A1F4 @ =gUnk_081121D4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_0806A1F4: .4byte gUnk_081121D4 + + thumb_func_start sub_0806A1F8 +sub_0806A1F8: @ 0x0806A1F8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + ldr r1, _0806A22C @ =gUnk_081121C4 + cmp r0, #0 + bne _0806A206 + ldr r1, _0806A230 @ =gUnk_081121B4 +_0806A206: + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806A22A + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0806A22A: + pop {r4, pc} + .align 2, 0 +_0806A22C: .4byte gUnk_081121C4 +_0806A230: .4byte gUnk_081121B4 + + thumb_func_start sub_0806A234 +sub_0806A234: @ 0x0806A234 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DD94 + adds r0, r4, #0 + adds r0, #0x82 + ldrh r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0806A266 + ldr r0, _0806A268 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0806A25E + adds r0, r4, #0 + bl sub_0806A26C +_0806A25E: + adds r0, r4, #0 + movs r1, #2 + bl sub_080042BA +_0806A266: + pop {r4, pc} + .align 2, 0 +_0806A268: .4byte gUnk_030010A0 + + thumb_func_start sub_0806A26C +sub_0806A26C: @ 0x0806A26C + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xf + movs r1, #0x2f + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0806A2AE + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA30 + bl sub_08000E50 + adds r5, r0, #0 + ldr r2, _0806A2B0 @ =gUnk_081121DC + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + adds r3, r4, #0 + adds r3, #0x62 + strb r0, [r3] + lsrs r0, r5, #8 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + subs r0, #8 + adds r1, r4, #0 + adds r1, #0x63 + strb r0, [r1] +_0806A2AE: + pop {r4, r5, pc} + .align 2, 0 +_0806A2B0: .4byte gUnk_081121DC + + thumb_func_start sub_0806A2B4 +sub_0806A2B4: @ 0x0806A2B4 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r5, r0, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r1, #1 + mov sb, r1 + mov r2, sb + ands r2, r0 + mov sb, r2 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + lsrs r0, r1, #4 + mov r8, r0 + movs r0, #7 + mov r2, r8 + ands r2, r0 + mov r8, r2 + movs r6, #7 + ands r6, r1 + ldrb r4, [r5, #0x14] + lsrs r4, r4, #1 + ldr r1, _0806A350 @ =gUnk_081121E4 + ldrb r0, [r5, #0x1e] + lsls r0, r0, #2 + adds r0, r4, r0 + adds r0, r0, r1 + ldrb r2, [r0] + adds r2, #0x10 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806FF60 + ldr r0, _0806A354 @ =gUnk_08112204 + adds r4, r4, r0 + ldrb r2, [r4] + adds r0, r5, #0 + movs r1, #0 + bl sub_0806FF48 + adds r0, r5, #0 + movs r1, #1 + mov r2, r8 + bl sub_0806FF60 + adds r6, #0x1c + adds r0, r5, #0 + movs r1, #2 + adds r2, r6, #0 + bl sub_0806FF60 + movs r0, #0x1a + add sb, r0 + adds r0, r5, #0 + movs r1, #3 + mov r2, sb + bl sub_0806FF60 + adds r0, r5, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r5, #0 + movs r1, #1 + movs r2, #3 + bl sub_0806FFD8 + adds r0, r5, #0 + bl sub_0807000C + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806A350: .4byte gUnk_081121E4 +_0806A354: .4byte gUnk_08112204 + + thumb_func_start sub_0806A358 +sub_0806A358: @ 0x0806A358 + push {lr} + ldr r2, _0806A36C @ =gUnk_08112260 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0806A36C: .4byte gUnk_08112260 + + thumb_func_start sub_0806A370 +sub_0806A370: @ 0x0806A370 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806A3D0 @ =gUnk_08112278 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806ED78 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xf + bne _0806A3CC + adds r4, #0x5a + ldrb r0, [r4] + cmp r0, #1 + bne _0806A3BC + movs r0, #0 + strb r0, [r4] + movs r0, #0x86 + lsls r0, r0, #2 + bl sub_080A3268 +_0806A3BC: + ldrb r0, [r4] + cmp r0, #2 + bne _0806A3CC + movs r0, #0 + strb r0, [r4] + ldr r0, _0806A3D4 @ =0x00000219 + bl sub_080A3268 +_0806A3CC: + pop {r4, pc} + .align 2, 0 +_0806A3D0: .4byte gUnk_08112278 +_0806A3D4: .4byte 0x00000219 + + thumb_func_start sub_0806A3D8 +sub_0806A3D8: @ 0x0806A3D8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xb4 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0806A8C8 + ldr r1, _0806A40C @ =gUnk_08012F0C + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + pop {r4, pc} + .align 2, 0 +_0806A40C: .4byte gUnk_08012F0C + + thumb_func_start sub_0806A410 +sub_0806A410: @ 0x0806A410 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xd] + cmp r0, #0 + beq _0806A420 + cmp r0, #1 + beq _0806A43C + b _0806A456 +_0806A420: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806A456 + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + adds r0, r2, #0 + movs r1, #8 + bl sub_08004260 + b _0806A456 +_0806A43C: + adds r0, r2, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A456 + adds r0, r2, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r2, #0 + bl sub_0806A9B0 +_0806A456: + pop {pc} + + thumb_func_start sub_0806A458 +sub_0806A458: @ 0x0806A458 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xd] + cmp r0, #1 + beq _0806A486 + cmp r0, #1 + bgt _0806A46C + cmp r0, #0 + beq _0806A472 + b _0806A4CA +_0806A46C: + cmp r0, #2 + beq _0806A4A8 + b _0806A4CA +_0806A472: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806A4CA + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + b _0806A4CA +_0806A486: + adds r0, r2, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A4CA + movs r0, #2 + strb r0, [r2, #0xd] + adds r0, r2, #0 + movs r1, #0xa + bl sub_08004260 + movs r0, #0x62 + bl sub_0807CD34 + b _0806A4CA +_0806A4A8: + adds r0, r2, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A4CA + movs r0, #0 + movs r1, #1 + strb r1, [r2, #0xc] + strb r0, [r2, #0xd] + movs r0, #0x3c + strb r0, [r2, #0xe] + adds r0, r2, #0 + movs r1, #2 + bl sub_08004260 +_0806A4CA: + pop {pc} + + thumb_func_start sub_0806A4CC +sub_0806A4CC: @ 0x0806A4CC + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xd] + cmp r2, #0 + beq _0806A4E0 + cmp r2, #1 + beq _0806A52C + movs r0, #0xb4 + strb r0, [r4, #0xe] + b _0806A54C +_0806A4E0: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A54C + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0806A512 + movs r0, #1 + strb r0, [r4, #0xd] + adds r1, r4, #0 + adds r1, #0x6a + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0xa + bl sub_08004260 + b _0806A54C +_0806A512: + movs r0, #2 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x6a + strh r2, [r0] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004260 + b _0806A54C +_0806A52C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A54C + movs r0, #2 + strb r0, [r4, #0xd] + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004260 +_0806A54C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806A550 +sub_0806A550: @ 0x0806A550 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806A568 + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0xc + bl sub_08004260 + b _0806A5B0 +_0806A568: + adds r5, r4, #0 + adds r5, #0x5a + ldrb r0, [r5] + cmp r0, #1 + bne _0806A590 + movs r0, #0 + strb r0, [r5] + movs r0, #8 + movs r1, #2 + bl sub_08080964 + ldr r2, _0806A5B4 @ =gUnk_02033280 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #1 + orrs r0, r1 + str r0, [r2] + ldr r0, _0806A5B8 @ =0x0000011B + bl sub_080A3268 +_0806A590: + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A5B0 + movs r1, #0 + movs r0, #5 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0xd + bl sub_08004260 + adds r0, r4, #0 + bl sub_0806A914 +_0806A5B0: + pop {r4, r5, pc} + .align 2, 0 +_0806A5B4: .4byte gUnk_02033280 +_0806A5B8: .4byte 0x0000011B + + thumb_func_start nullsub_503 +nullsub_503: @ 0x0806A5BC + bx lr + .align 2, 0 + + thumb_func_start sub_0806A5C0 +sub_0806A5C0: @ 0x0806A5C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A5E6 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_0806A5E6: + pop {r4, pc} + + thumb_func_start sub_0806A5E8 +sub_0806A5E8: @ 0x0806A5E8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806A60A + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08004260 + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x3c + strb r0, [r4, #0xe] +_0806A60A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806A628 + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #0xcc + bl sub_080A3268 +_0806A628: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_0806A630 +sub_0806A630: @ 0x0806A630 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806A646 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x12 + bl sub_08004260 +_0806A646: + ldr r0, _0806A670 @ =gUnk_02033280 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0806A65A + adds r0, r4, #0 + bl sub_08004274 +_0806A65A: + adds r1, r4, #0 + adds r1, #0x5a + ldrb r0, [r1] + cmp r0, #1 + bne _0806A66E + movs r0, #0 + strb r0, [r1] + movs r0, #0x72 + bl sub_080A3268 +_0806A66E: + pop {r4, pc} + .align 2, 0 +_0806A670: .4byte gUnk_02033280 + + thumb_func_start sub_0806A674 +sub_0806A674: @ 0x0806A674 + push {r4, lr} + sub sp, #8 + adds r4, r0, #0 + ldr r1, _0806A694 @ =gUnk_08112294 + mov r0, sp + movs r2, #8 + bl memcpy + ldrb r3, [r4, #0xc] + cmp r3, #1 + beq _0806A6BE + cmp r3, #1 + bgt _0806A698 + cmp r3, #0 + beq _0806A6A0 + b _0806A82A + .align 2, 0 +_0806A694: .4byte gUnk_08112294 +_0806A698: + cmp r3, #2 + bne _0806A69E + b _0806A824 +_0806A69E: + b _0806A82A +_0806A6A0: + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0x13 + bl sub_08004260 + b _0806A82A +_0806A6BE: + ldr r0, _0806A6E0 @ =gUnk_02033280 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0806A6E4 + movs r0, #0 + movs r1, #2 + strb r1, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x63 + strb r0, [r1] + subs r1, #1 + strb r0, [r1] + b _0806A82A + .align 2, 0 +_0806A6E0: .4byte gUnk_02033280 +_0806A6E4: + ldr r0, [r4, #0x50] + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #9 + bne _0806A7C8 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #3 + orrs r1, r0 + strb r1, [r2] + ldrb r2, [r4, #0xe] + cmp r2, #0 + bne _0806A724 + bl sub_08000E50 + adds r2, r0, #0 + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0xe] + lsrs r0, r2, #8 + movs r1, #7 + ands r0, r1 + add r0, sp + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x68 + strb r1, [r0] + b _0806A75A +_0806A724: + ldr r0, _0806A780 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0806A75A + subs r0, r2, #1 + strb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x62 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r4, #0 + adds r1, #0x68 + cmp r0, #0 + bgt _0806A746 + strb r3, [r1] +_0806A746: + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0xf + ble _0806A752 + movs r0, #0xff + strb r0, [r1] +_0806A752: + ldrb r0, [r1] + ldrb r1, [r2] + adds r0, r0, r1 + strb r0, [r2] +_0806A75A: + ldrb r2, [r4, #0xf] + cmp r2, #0 + bne _0806A784 + bl sub_08000E50 + adds r2, r0, #0 + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0xf] + lsrs r0, r2, #8 + movs r1, #7 + ands r0, r1 + add r0, sp + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x69 + strb r1, [r0] + b _0806A82A + .align 2, 0 +_0806A780: .4byte gUnk_030010A0 +_0806A784: + ldr r0, _0806A7C4 @ =gUnk_030010A0 + ldr r0, [r0] + lsrs r0, r0, #4 + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0806A82A + subs r0, r2, #1 + strb r0, [r4, #0xf] + adds r3, r4, #0 + adds r3, #0x63 + movs r0, #0 + ldrsb r0, [r3, r0] + adds r2, r4, #0 + adds r2, #0x69 + cmp r0, #0 + blt _0806A7AA + movs r0, #0xff + strb r0, [r2] +_0806A7AA: + movs r1, #0 + ldrsb r1, [r3, r1] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + bgt _0806A7BA + movs r0, #1 + strb r0, [r2] +_0806A7BA: + ldrb r0, [r2] + ldrb r1, [r3] + adds r0, r0, r1 + strb r0, [r3] + b _0806A82A + .align 2, 0 +_0806A7C4: .4byte gUnk_030010A0 +_0806A7C8: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #6 + orrs r1, r0 + strb r1, [r2] + adds r1, r4, #0 + adds r1, #0x62 + ldrb r0, [r1] + movs r2, #0 + ldrsb r2, [r1, r2] + cmp r2, #0 + beq _0806A7FE + cmp r2, #0 + ble _0806A7F0 + subs r0, #1 + strb r0, [r1] +_0806A7F0: + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _0806A7FE + adds r0, r2, #1 + strb r0, [r1] +_0806A7FE: + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + movs r2, #0 + ldrsb r2, [r1, r2] + cmp r2, #0 + beq _0806A82A + cmp r2, #0 + ble _0806A814 + subs r0, #1 + strb r0, [r1] +_0806A814: + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _0806A82A + adds r0, r2, #1 + strb r0, [r1] + b _0806A82A +_0806A824: + adds r0, r4, #0 + bl sub_08004274 +_0806A82A: + add sp, #8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806A830 +sub_0806A830: @ 0x0806A830 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806A84E + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x14 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0806A84E: + ldr r0, _0806A88C @ =gUnk_02033280 + ldr r0, [r0] + movs r1, #0x80 + lsls r1, r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0806A860 + bl sub_0805E780 +_0806A860: + adds r0, r4, #0 + bl sub_08004274 + adds r1, r4, #0 + adds r1, #0x5a + ldrb r0, [r1] + cmp r0, #1 + bne _0806A88A + movs r0, #0 + strb r0, [r1] + movs r0, #0x37 + movs r1, #5 + movs r2, #0 + bl sub_0806ED50 + adds r1, r0, #0 + cmp r1, #0 + beq _0806A88A + adds r0, r4, #0 + bl sub_0806FA30 +_0806A88A: + pop {r4, pc} + .align 2, 0 +_0806A88C: .4byte gUnk_02033280 + + thumb_func_start sub_0806A890 +sub_0806A890: @ 0x0806A890 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806A8AE + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x15 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0806A8AE: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806A8C6 + bl sub_0805E780 +_0806A8C6: + pop {r4, pc} + + thumb_func_start sub_0806A8C8 +sub_0806A8C8: @ 0x0806A8C8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x60 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806A8F0 + movs r0, #0x37 + movs r1, #2 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806A8F0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r5, [r4, #0x50] +_0806A8F0: + movs r0, #0x37 + movs r1, #3 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806A910 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + str r5, [r4, #0x50] +_0806A910: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806A914 +sub_0806A914: @ 0x0806A914 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x37 + movs r1, #1 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806A938 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_0806A938: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806A93C +sub_0806A93C: @ 0x0806A93C + push {r4, lr} + adds r4, r0, #0 + bl sub_08078778 + ldr r3, _0806A954 @ =gUnk_0811229C + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_08078850 + pop {r4, pc} + .align 2, 0 +_0806A954: .4byte gUnk_0811229C + + thumb_func_start sub_0806A958 +sub_0806A958: @ 0x0806A958 + push {lr} + ldrb r0, [r0, #0xc] + cmp r0, #5 + beq _0806A966 + ldr r1, _0806A968 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0806A966: + pop {pc} + .align 2, 0 +_0806A968: .4byte gUnk_02033280 + + thumb_func_start sub_0806A96C +sub_0806A96C: @ 0x0806A96C + push {r4, lr} + adds r2, r0, #0 + movs r3, #0 + str r3, [r1, #0x14] + movs r0, #0x39 + adds r0, r0, r2 + mov ip, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0806A9A8 + ldrb r0, [r2, #0xc] + cmp r0, #3 + beq _0806A992 + movs r0, #3 + strb r0, [r2, #0xc] + strb r3, [r2, #0xd] + b _0806A9A8 +_0806A992: + ldrb r0, [r2, #0xd] + cmp r0, #1 + bls _0806A9A8 + mov r4, ip + strb r3, [r4] + movs r0, #1 + str r0, [r1, #0x14] + ldr r2, _0806A9AC @ =gUnk_02033280 + ldrb r1, [r2, #7] + orrs r0, r1 + strb r0, [r2, #7] +_0806A9A8: + pop {r4, pc} + .align 2, 0 +_0806A9AC: .4byte gUnk_02033280 + + thumb_func_start sub_0806A9B0 +sub_0806A9B0: @ 0x0806A9B0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + bl sub_08000E50 + ldr r2, _0806A9E4 @ =gUnk_081122A0 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #9 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #9 + bl sub_08004260 + movs r0, #0x62 + bl sub_0807CCB4 + pop {r4, pc} + .align 2, 0 +_0806A9E4: .4byte gUnk_081122A0 + + thumb_func_start sub_0806A9E8 +sub_0806A9E8: @ 0x0806A9E8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x37 + movs r1, #4 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806AA0C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAD8 +_0806AA0C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806AA10 +sub_0806AA10: @ 0x0806AA10 + push {lr} + bl sub_0806A914 + pop {pc} + + thumb_func_start sub_0806AA18 +sub_0806AA18: @ 0x0806AA18 + push {lr} + adds r2, r0, #0 + adds r0, #0x6a + ldrh r0, [r0] + cmp r0, #0 + beq _0806AA2C + ldr r1, _0806AA28 @ =0x00004408 + b _0806AA3C + .align 2, 0 +_0806AA28: .4byte 0x00004408 +_0806AA2C: + ldr r0, _0806AA48 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + ldr r1, _0806AA4C @ =0x0000440D + cmp r0, #0 + bne _0806AA3C + subs r1, #6 +_0806AA3C: + adds r0, r1, #0 + adds r1, r2, #0 + bl sub_08056398 + pop {pc} + .align 2, 0 +_0806AA48: .4byte gUnk_030010A0 +_0806AA4C: .4byte 0x0000440D + + thumb_func_start sub_0806AA50 +sub_0806AA50: @ 0x0806AA50 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #1 + beq _0806AB38 + cmp r0, #1 + bgt _0806AA6A + cmp r0, #0 + beq _0806AA70 + b _0806AB64 +_0806AA6A: + cmp r0, #2 + beq _0806AB5C + b _0806AB64 +_0806AA70: + str r0, [r5, #0x14] + movs r0, #0x8f + bl sub_0807CBD0 + cmp r0, #0 + bne _0806AA84 + ldr r2, _0806AA80 @ =gUnk_081122A8 + b _0806AA9A + .align 2, 0 +_0806AA80: .4byte gUnk_081122A8 +_0806AA84: + movs r0, #0x15 + bl sub_0807CA84 + cmp r0, #0 + bne _0806AA98 + ldr r2, _0806AA94 @ =gUnk_081122B0 + b _0806AA9A + .align 2, 0 +_0806AA94: .4byte gUnk_081122B0 +_0806AA98: + ldr r2, _0806AAD0 @ =gUnk_081122B8 +_0806AA9A: + ldr r1, _0806AAD4 @ =gUnk_02034350 + ldr r0, [r1, #0x68] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r7, [r0] + mov r8, r1 + mov r4, r8 + ldr r0, [r4, #0x68] + adds r0, #1 + str r0, [r4, #0x68] + cmp r0, #2 + bls _0806AAB6 + movs r0, #0 + str r0, [r4, #0x68] +_0806AAB6: + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_08056398 + ldr r0, [r5, #4] + cmp r0, #1 + beq _0806AAEE + cmp r0, #1 + blo _0806AAD8 + cmp r0, #2 + beq _0806AB02 + b _0806AB1C + .align 2, 0 +_0806AAD0: .4byte gUnk_081122B8 +_0806AAD4: .4byte gUnk_02034350 +_0806AAD8: + adds r0, r4, #0 + adds r0, #0xac + str r6, [r0] + adds r0, r6, #0 + movs r1, #7 + bl sub_0805EA78 + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r6, #0x20] + b _0806AB1C +_0806AAEE: + adds r0, r4, #0 + adds r0, #0xac + ldr r0, [r0] + movs r1, #7 + bl sub_0805EB64 + adds r1, r0, #0 + adds r0, r4, #0 + adds r0, #0xb0 + b _0806AB14 +_0806AB02: + mov r0, r8 + adds r0, #0xb0 + ldr r0, [r0] + movs r1, #7 + bl sub_0805EB64 + adds r1, r0, #0 + mov r0, r8 + adds r0, #0xb4 +_0806AB14: + str r1, [r0] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r1, #0x20] +_0806AB1C: + ldr r0, _0806AB34 @ =0x0000441E + cmp r7, r0 + bne _0806AB2C + movs r0, #0x8f + bl sub_0807CCB4 + movs r0, #1 + str r0, [r5, #0x14] +_0806AB2C: + movs r0, #1 + strb r0, [r5, #0x18] + b _0806AB64 + .align 2, 0 +_0806AB34: .4byte 0x0000441E +_0806AB38: + ldr r0, _0806AB58 @ =gUnk_02034350 + ldr r1, [r5, #4] + lsls r1, r1, #2 + adds r0, #0xac + adds r1, r1, r0 + ldr r1, [r1] + movs r2, #0x36 + ldrsh r0, [r1, r2] + cmp r0, #0 + blt _0806AB64 + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r1, #0x20] + movs r0, #2 + strb r0, [r5, #0x18] + b _0806AB64 + .align 2, 0 +_0806AB58: .4byte gUnk_02034350 +_0806AB5C: + movs r1, #0x36 + ldrsh r0, [r6, r1] + cmp r0, #0 + bge _0806AB6A +_0806AB64: + ldr r1, _0806AB70 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0806AB6A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806AB70: .4byte gUnk_02033280 + + thumb_func_start sub_0806AB74 +sub_0806AB74: @ 0x0806AB74 + push {lr} + adds r2, r0, #0 + ldr r1, _0806AB94 @ =gUnk_02034350 + movs r0, #1 + strb r0, [r1, #3] + movs r1, #0x32 + ldrsh r0, [r2, r1] + ldr r1, _0806AB98 @ =gUnk_03000BF0 + ldrh r1, [r1, #8] + subs r0, r0, r1 + cmp r0, #0xa7 + bgt _0806AB92 + adds r0, r1, #0 + adds r0, #0xa8 + strh r0, [r2, #0x32] +_0806AB92: + pop {pc} + .align 2, 0 +_0806AB94: .4byte gUnk_02034350 +_0806AB98: .4byte gUnk_03000BF0 + + thumb_func_start sub_0806AB9C +sub_0806AB9C: @ 0x0806AB9C + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + movs r0, #7 + movs r1, #0x37 + movs r2, #7 + movs r3, #1 + bl sub_0805EB2C + cmp r0, #0 + beq _0806ABBC + bl sub_0805E7BC +_0806ABBC: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807F950 + add sp, #4 + pop {r4, r5, pc} + + thumb_func_start sub_0806ABC8 +sub_0806ABC8: @ 0x0806ABC8 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0806ABF4 + ldr r0, _0806ABF0 @ =gUnk_081126E8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + b _0806ABFA + .align 2, 0 +_0806ABF0: .4byte gUnk_081126E8 +_0806ABF4: + adds r0, r4, #0 + bl sub_0806ACC4 +_0806ABFA: + pop {r4, pc} + + thumb_func_start sub_0806ABFC +sub_0806ABFC: @ 0x0806ABFC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _0806AC38 @ =gUnk_08112674 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806AC36 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + adds r2, r4, #0 + adds r2, #0x6a + strb r0, [r2] + lsls r0, r0, #1 + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + subs r2, #1 + strb r0, [r2] + strb r1, [r4, #0xe] +_0806AC36: + pop {r4, pc} + .align 2, 0 +_0806AC38: .4byte gUnk_08112674 + + thumb_func_start sub_0806AC3C +sub_0806AC3C: @ 0x0806AC3C + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #3 + bhi _0806ACBA + ldr r4, _0806AC6C @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x18 + movs r3, #0x18 + bl sub_080041A0 + cmp r0, #0 + beq _0806AC70 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080045C4 + adds r2, r0, #0 + movs r0, #0x1e + ands r2, r0 + b _0806AC74 + .align 2, 0 +_0806AC6C: .4byte gLinkEntity +_0806AC70: + ldrb r0, [r5, #0x14] + lsls r2, r0, #2 +_0806AC74: + adds r0, r5, #0 + adds r0, #0x69 + ldrb r3, [r0] + adds r4, r0, #0 + cmp r2, r3 + beq _0806AC9A + subs r0, r2, r3 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xf + bgt _0806AC8E + subs r0, r3, #1 + b _0806AC90 +_0806AC8E: + adds r0, r3, #1 +_0806AC90: + strb r0, [r4] + ldrb r1, [r4] + movs r0, #0x1f + ands r0, r1 + strb r0, [r4] +_0806AC9A: + ldrb r1, [r4] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0806ACBA + ldrb r0, [r4] + bl sub_0806F5B0 + strb r0, [r5, #0x14] + ldrb r1, [r5, #0x14] + lsrs r1, r1, #1 + movs r0, #2 + eors r1, r0 + adds r0, r5, #0 + bl sub_08004260 +_0806ACBA: + adds r0, r5, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806ACC4 +sub_0806ACC4: @ 0x0806ACC4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _0806AD28 + cmp r5, #1 + bgt _0806ACD8 + cmp r5, #0 + beq _0806ACE4 + b _0806ADEA +_0806ACD8: + cmp r5, #2 + beq _0806ADB8 + cmp r5, #3 + bne _0806ACE2 + b _0806ADDC +_0806ACE2: + b _0806ADEA +_0806ACE4: + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _0806AD24 @ =gUnk_08112674 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + bne _0806ACF8 + b _0806ADFA +_0806ACF8: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x6a + strb r0, [r1] + lsls r0, r0, #1 + strb r0, [r4, #0x14] + strb r5, [r4, #0xe] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807DD50 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r1, #8 + b _0806ADCE + .align 2, 0 +_0806AD24: .4byte gUnk_08112674 +_0806AD28: + adds r5, r4, #0 + adds r5, #0x39 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #2 + bne _0806AD44 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r5] + adds r0, r4, #0 + bl sub_0806F118 + b _0806ADEA +_0806AD44: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0806AEA8 + ldrb r0, [r4, #0xb] + cmp r0, #0xa + bne _0806AD8A + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + beq _0806AD8A + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r5] + ldr r1, _0806ADAC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0806AFE8 +_0806AD8A: + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _0806ADEA + ldr r0, _0806ADAC @ =gLinkEntity + ldrb r3, [r0, #0x14] + lsrs r3, r3, #1 + ldr r0, _0806ADB0 @ =gUnk_081126E4 + adds r0, r3, r0 + ldrb r2, [r0] + lsls r3, r3, #2 + ldr r0, _0806ADB4 @ =gUnk_081126D4 + adds r3, r3, r0 + adds r0, r4, #0 + movs r1, #1 + bl sub_08078850 + b _0806ADEA + .align 2, 0 +_0806ADAC: .4byte gLinkEntity +_0806ADB0: .4byte gUnk_081126E4 +_0806ADB4: .4byte gUnk_081126D4 +_0806ADB8: + ldr r0, _0806ADD8 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806ADEA + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r1, #4 +_0806ADCE: + adds r0, r4, #0 + bl sub_08004260 + b _0806ADEA + .align 2, 0 +_0806ADD8: .4byte gUnk_02000050 +_0806ADDC: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806ADEA + movs r0, #1 + strb r0, [r4, #0xc] +_0806ADEA: + adds r0, r4, #0 + adds r0, #0x59 + ldrb r0, [r0] + cmp r0, #0xff + beq _0806ADFA + adds r0, r4, #0 + bl sub_08004274 +_0806ADFA: + pop {r4, r5, pc} + + thumb_func_start sub_0806ADFC +sub_0806ADFC: @ 0x0806ADFC + push {lr} + adds r1, r0, #0 + adds r1, #0x68 + ldrb r1, [r1] + bl sub_08078784 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806AE0C +sub_0806AE0C: @ 0x0806AE0C + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0806AE62 + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + lsrs r2, r0, #1 + adds r0, r4, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0806AE3C + adds r2, #0x1c + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + b _0806AE46 +_0806AE3C: + adds r0, r4, #0 + movs r1, #0 + movs r2, #0xff + bl sub_0806FF60 +_0806AE46: + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + b _0806AEA4 +_0806AE62: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r2, [r0] + cmp r2, #0xff + beq _0806AE72 + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 +_0806AE72: + adds r0, r4, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0806AE82 + movs r2, #0xff +_0806AE82: + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C +_0806AEA4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806AEA8 +sub_0806AEA8: @ 0x0806AEA8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x82 + ldrh r5, [r6] + ldr r0, _0806AED4 @ =0x0000FFDF + ands r0, r5 + strh r0, [r6] + movs r0, #0x20 + ands r0, r5 + cmp r0, #0 + beq _0806AECA + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, #0 + bl sub_08003FC4 +_0806AECA: + adds r0, r4, #0 + bl sub_0807DDE4 + strh r5, [r6] + pop {r4, r5, r6, pc} + .align 2, 0 +_0806AED4: .4byte 0x0000FFDF + + thumb_func_start sub_0806AED8 +sub_0806AED8: @ 0x0806AED8 + push {lr} + movs r1, #0 + strb r1, [r0, #0xe] + bl sub_0806AEE4 + pop {pc} + + thumb_func_start sub_0806AEE4 +sub_0806AEE4: @ 0x0806AEE4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r7, r0, #0 + cmp r7, #0 + beq _0806AEF6 + subs r0, #1 + strb r0, [r4, #0xe] + b _0806AF5A +_0806AEF6: + movs r0, #2 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x20 + movs r2, #0x20 + bl sub_0806EDD8 + adds r3, r0, #0 + cmp r3, #0 + bge _0806AF16 + adds r0, r4, #0 + adds r0, #0x6a + ldrb r1, [r0] + lsls r0, r1, #1 + strb r0, [r4, #0x14] + lsls r3, r1, #3 +_0806AF16: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #5 + asrs r1, r3, #1 + lsls r1, r1, #1 + ldr r2, _0806AF5C @ =gUnk_081125F4 + adds r1, r1, r2 + adds r0, r0, r1 + ldrb r6, [r0] + ldrb r5, [r0, #1] + movs r0, #0x80 + ands r0, r5 + cmp r0, #0 + beq _0806AF3A + adds r0, r3, #0 + bl sub_0806F5B0 + strb r0, [r4, #0x14] +_0806AF3A: + movs r0, #0x7f + ands r5, r0 + adds r0, r4, #0 + adds r0, #0x5a + strb r6, [r0] + strb r5, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x5b + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x58 + strb r7, [r0] + subs r1, #2 + movs r0, #0xff + strb r0, [r1] +_0806AF5A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806AF5C: .4byte gUnk_081125F4 + + thumb_func_start sub_0806AF60 +sub_0806AF60: @ 0x0806AF60 + push {lr} + ldrb r2, [r0, #0x14] + lsrs r2, r2, #1 + ldr r1, [r1, #4] + adds r1, r1, r2 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0806AF70 +sub_0806AF70: @ 0x0806AF70 + movs r1, #0x90 + lsls r1, r1, #0xa + str r1, [r0, #0x20] + bx lr + + thumb_func_start sub_0806AF78 +sub_0806AF78: @ 0x0806AF78 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + ldr r0, [r4, #0x34] + cmp r0, #0 + blt _0806AF9E + ldr r0, [r4, #0x20] + cmp r0, #0 + bgt _0806AF9E + movs r0, #0 + str r0, [r4, #0x34] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806AF70 +_0806AF9E: + pop {r4, r5, pc} + + thumb_func_start sub_0806AFA0 +sub_0806AFA0: @ 0x0806AFA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806ED78 + cmp r0, #0 + beq _0806AFBA + movs r0, #0x24 + ldrsh r1, [r4, r0] + rsbs r1, r1, #0 + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C +_0806AFBA: + pop {r4, pc} + + thumb_func_start sub_0806AFBC +sub_0806AFBC: @ 0x0806AFBC + push {lr} + adds r3, r0, #0 + ldr r0, _0806AFE0 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _0806AFCC + movs r0, #0 +_0806AFCC: + ldrb r1, [r3, #0xb] + lsls r1, r1, #6 + lsls r0, r0, #3 + ldr r2, _0806AFE4 @ =gUnk_081126F0 + adds r0, r0, r2 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806AFE0: .4byte gUnk_02002A40 +_0806AFE4: .4byte gUnk_081126F0 + + thumb_func_start sub_0806AFE8 +sub_0806AFE8: @ 0x0806AFE8 + push {lr} + movs r2, #0 + str r2, [r1, #0x14] + ldr r3, _0806B000 @ =gUnk_08112BF0 + ldrb r2, [r0, #0xb] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_0806B000: .4byte gUnk_08112BF0 + + thumb_func_start sub_0806B004 +sub_0806B004: @ 0x0806B004 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r4, #0 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0806B050 + movs r0, #0x73 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806B048 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0806B044 + movs r4, #3 + movs r0, #0x78 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806B050 + movs r4, #2 + movs r0, #1 + str r0, [r5, #0x14] + movs r0, #0x78 + bl sub_0807CCB4 + b _0806B050 +_0806B044: + movs r4, #4 + b _0806B050 +_0806B048: + movs r4, #1 + movs r0, #0x6a + bl sub_0807CCB4 +_0806B050: + ldr r0, _0806B060 @ =gUnk_08112C40 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r6, #0 + bl sub_08056398 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806B060: .4byte gUnk_08112C40 + + thumb_func_start sub_0806B064 +sub_0806B064: @ 0x0806B064 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0806B082 + movs r4, #1 + movs r0, #0x73 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806B082 + movs r4, #2 +_0806B082: + ldr r0, _0806B094 @ =gUnk_08112C4A + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806B094: .4byte gUnk_08112C4A + + thumb_func_start sub_0806B098 +sub_0806B098: @ 0x0806B098 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #2 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0806B0C0 + movs r4, #1 + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0806B0C0 + movs r0, #0x2a + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f +_0806B0C0: + ldr r2, _0806B0DC @ =gUnk_08112C50 + ldrb r1, [r5, #0xb] + subs r1, #7 + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, r0, r4 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806B0DC: .4byte gUnk_08112C50 + + thumb_func_start sub_0806B0E0 +sub_0806B0E0: @ 0x0806B0E0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + movs r0, #0x38 + movs r1, #0xb8 + movs r2, #1 + bl sub_080002C0 + cmp r0, #0x57 + bne _0806B120 + movs r0, #0x48 + movs r1, #0xb8 + movs r2, #1 + bl sub_080002C0 + cmp r0, #0x57 + bne _0806B120 + movs r0, #0x38 + movs r1, #0xc8 + movs r2, #1 + bl sub_080002C0 + cmp r0, #0x57 + bne _0806B120 + movs r0, #0x48 + movs r1, #0xc8 + movs r2, #1 + bl sub_080002C0 + cmp r0, #0x57 + bne _0806B120 + movs r5, #1 +_0806B120: + ldr r0, _0806B130 @ =gUnk_08112C5C + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806B130: .4byte gUnk_08112C5C + + thumb_func_start sub_0806B134 +sub_0806B134: @ 0x0806B134 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x45 + bl sub_0807CA84 + cmp r0, #0 + beq _0806B158 + movs r4, #2 + movs r0, #0x7b + bl sub_0807CBD0 + cmp r0, #0 + bne _0806B160 + movs r4, #1 + movs r0, #0x7b + bl sub_0807CCB4 + b _0806B160 +_0806B158: + movs r4, #0 + movs r0, #0x4a + bl sub_0807CD04 +_0806B160: + ldr r0, _0806B17C @ =gUnk_02002A40 + ldrb r0, [r0, #8] + cmp r0, #5 + bls _0806B16A + movs r4, #3 +_0806B16A: + ldr r0, _0806B180 @ =gUnk_08112C60 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806B17C: .4byte gUnk_02002A40 +_0806B180: .4byte gUnk_08112C60 + + thumb_func_start sub_0806B184 +sub_0806B184: @ 0x0806B184 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806B1C4 + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _0806B1C0 @ =gUnk_08112674 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806B1CA + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _0806B1CA + .align 2, 0 +_0806B1C0: .4byte gUnk_08112674 +_0806B1C4: + adds r0, r4, #0 + bl sub_08004274 +_0806B1CA: + pop {r4, pc} + + thumb_func_start sub_0806B1CC +sub_0806B1CC: @ 0x0806B1CC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0806B21E + cmp r0, #1 + bgt _0806B1E0 + cmp r0, #0 + beq _0806B1E6 + b _0806B25C +_0806B1E0: + cmp r0, #2 + beq _0806B24E + b _0806B25C +_0806B1E6: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806B25C +_0806B21E: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806B238 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + bl sub_0806F118 + b _0806B25C +_0806B238: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + b _0806B25C +_0806B24E: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806B25C + movs r0, #1 + strb r0, [r4, #0xc] +_0806B25C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806B260 +sub_0806B260: @ 0x0806B260 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [r5, #0x14] + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0806B29E + movs r0, #0x29 + bl GetProgressFlag + cmp r0, #0 + beq _0806B286 + movs r4, #2 + movs r0, #1 + str r0, [r5, #0x14] + b _0806B2A0 +_0806B286: + movs r0, #0x7a + bl sub_0807CBD0 + cmp r0, #0 + bne _0806B29A + movs r4, #0 + movs r0, #0x7a + bl sub_0807CCB4 + b _0806B2A0 +_0806B29A: + movs r4, #1 + b _0806B2A0 +_0806B29E: + movs r4, #3 +_0806B2A0: + ldr r0, _0806B2B0 @ =gUnk_08112D48 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r6, #0 + bl sub_08056398 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806B2B0: .4byte gUnk_08112D48 + + thumb_func_start sub_0806B2B4 +sub_0806B2B4: @ 0x0806B2B4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xb3 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806B314 + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + bne _0806B2D6 + movs r4, #1 + movs r0, #0 + bl sub_0807CD10 + b _0806B316 +_0806B2D6: + movs r0, #1 + bl sub_0807CC3C + cmp r0, #0 + bne _0806B2EA + movs r4, #2 + movs r0, #1 + bl sub_0807CD10 + b _0806B316 +_0806B2EA: + movs r0, #2 + bl sub_0807CC3C + cmp r0, #0 + bne _0806B2FE + movs r4, #3 + movs r0, #2 + bl sub_0807CD10 + b _0806B316 +_0806B2FE: + movs r4, #4 + movs r0, #0 + bl sub_0807CD8C + movs r0, #1 + bl sub_0807CD8C + movs r0, #2 + bl sub_0807CD8C + b _0806B316 +_0806B314: + movs r4, #0 +_0806B316: + ldr r0, _0806B328 @ =gUnk_08112D50 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806B328: .4byte gUnk_08112D50 + + thumb_func_start sub_0806B32C +sub_0806B32C: @ 0x0806B32C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806B352 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #9 + bl sub_080042AC + b _0806B358 +_0806B352: + adds r0, r2, #0 + bl sub_080042B8 +_0806B358: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806B35C +sub_0806B35C: @ 0x0806B35C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r2, #0x3f + ands r2, r0 + adds r2, #0x13 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + adds r2, #0xb + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #2 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #2 + movs r2, #1 + bl sub_0806FF88 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl sub_0806FFD8 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + + thumb_func_start sub_0806B3AC +sub_0806B3AC: @ 0x0806B3AC + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806B3C2 + adds r0, r2, #0 + bl sub_0806B41C + b _0806B3C8 +_0806B3C2: + adds r0, r2, #0 + bl sub_0806B3CC +_0806B3C8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806B3CC +sub_0806B3CC: @ 0x0806B3CC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806B3F4 + ldr r1, _0806B418 @ =gUnk_08112E1C + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806B414 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08078778 +_0806B3F4: + adds r0, r4, #0 + bl sub_08004274 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0806B40E + movs r0, #0 + strb r0, [r1] + bl sub_08056378 +_0806B40E: + adds r0, r4, #0 + bl sub_0806ED78 +_0806B414: + pop {r4, pc} + .align 2, 0 +_0806B418: .4byte gUnk_08112E1C + + thumb_func_start sub_0806B41C +sub_0806B41C: @ 0x0806B41C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0806B470 + cmp r0, #1 + bgt _0806B430 + cmp r0, #0 + beq _0806B436 + b _0806B4EC +_0806B430: + cmp r0, #2 + beq _0806B4DE + b _0806B4EC +_0806B436: + ldr r1, _0806B46C @ =gUnk_08112E1C + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806B4EC + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xb] + cmp r0, #2 + bne _0806B462 + adds r0, r4, #0 + movs r1, #0x25 + movs r2, #0 + bl CreateFX +_0806B462: + adds r0, r4, #0 + bl sub_0807DD50 + b _0806B4EC + .align 2, 0 +_0806B46C: .4byte gUnk_08112E1C +_0806B470: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806B4D4 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _0806B4C8 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08002632 + ldr r1, _0806B4CC @ =gUnk_08001A7C + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r3, [r0] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0x21 + bne _0806B4B2 + adds r3, #6 +_0806B4B2: + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + adds r0, r4, #0 + bl sub_0801DFB4 + ldr r0, _0806B4D0 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + b _0806B4EC + .align 2, 0 +_0806B4C8: .4byte gLinkEntity +_0806B4CC: .4byte gUnk_08001A7C +_0806B4D0: .4byte gUnk_03003F80 +_0806B4D4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _0806B4EC +_0806B4DE: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806B4EC + movs r0, #1 + strb r0, [r4, #0xc] +_0806B4EC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806B4F0 +sub_0806B4F0: @ 0x0806B4F0 + push {lr} + ldrb r1, [r0, #0xb] + lsls r1, r1, #3 + ldr r2, _0806B500 @ =gUnk_08112E2C + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806B500: .4byte gUnk_08112E2C + + thumb_func_start sub_0806B504 +sub_0806B504: @ 0x0806B504 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #1 + movs r0, #0x21 + bl sub_0801E7F4 + cmp r0, #0 + beq _0806B518 + movs r4, #3 + b _0806B52A +_0806B518: + movs r0, #0x86 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806B52A + movs r4, #0 + movs r0, #0x86 + bl sub_0807CCB4 +_0806B52A: + ldr r0, _0806B53C @ =gUnk_08112E54 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806B53C: .4byte gUnk_08112E54 + + thumb_func_start sub_0806B540 +sub_0806B540: @ 0x0806B540 + push {r4, lr} + adds r2, r0, #0 + adds r0, #0x84 + ldr r4, [r0] + ldrb r0, [r4, #0x18] + cmp r0, #1 + beq _0806B588 + cmp r0, #1 + bgt _0806B558 + cmp r0, #0 + beq _0806B562 + b _0806B600 +_0806B558: + cmp r0, #2 + beq _0806B5AC + cmp r0, #3 + beq _0806B5EE + b _0806B600 +_0806B562: + ldr r0, _0806B584 @ =0x00002312 + adds r1, r2, #0 + bl sub_08056398 + movs r0, #0x3f + bl sub_0807CBD0 + cmp r0, #0 + bne _0806B606 + ldrb r0, [r4, #0x18] + adds r0, #1 + strb r0, [r4, #0x18] + movs r0, #0x3f + bl sub_0807CCB4 + b _0806B600 + .align 2, 0 +_0806B584: .4byte 0x00002312 +_0806B588: + ldr r0, _0806B5A4 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806B600 + movs r0, #2 + strb r0, [r4, #0x18] + ldr r0, _0806B5A8 @ =0x00002315 + adds r1, r2, #0 + bl sub_08056398 + b _0806B600 + .align 2, 0 +_0806B5A4: .4byte gUnk_02000050 +_0806B5A8: .4byte 0x00002315 +_0806B5AC: + ldr r0, _0806B5D4 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806B600 + movs r0, #3 + strb r0, [r4, #0x18] + ldr r0, _0806B5D8 @ =gUnk_02002A40 + adds r0, #0xbb + ldrb r0, [r0] + cmp r0, #0 + beq _0806B5DC + movs r0, #0x58 + movs r1, #0 + movs r2, #0 + bl sub_080A7C18 + b _0806B5E6 + .align 2, 0 +_0806B5D4: .4byte gUnk_02000050 +_0806B5D8: .4byte gUnk_02002A40 +_0806B5DC: + movs r0, #0x3f + movs r1, #0x64 + movs r2, #0 + bl sub_080A7C18 +_0806B5E6: + movs r0, #0xf + bl sub_0807CD10 + b _0806B600 +_0806B5EE: + ldr r0, _0806B5FC @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #8 + beq _0806B600 + movs r0, #0x2d + strh r0, [r4, #0x10] + b _0806B606 + .align 2, 0 +_0806B5FC: .4byte gLinkEntity +_0806B600: + ldr r1, _0806B608 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0806B606: + pop {r4, pc} + .align 2, 0 +_0806B608: .4byte gUnk_02033280 + + thumb_func_start sub_0806B60C +sub_0806B60C: @ 0x0806B60C + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806B624 +sub_0806B624: @ 0x0806B624 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806B65C + ldr r1, _0806B658 @ =gUnk_08112E1C + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806B662 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0806B662 + .align 2, 0 +_0806B658: .4byte gUnk_08112E1C +_0806B65C: + adds r0, r4, #0 + bl sub_08004274 +_0806B662: + pop {r4, pc} + + thumb_func_start sub_0806B664 +sub_0806B664: @ 0x0806B664 + push {lr} + ldr r2, _0806B678 @ =gUnk_08112F78 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0806B678: .4byte gUnk_08112F78 + + thumb_func_start sub_0806B67C +sub_0806B67C: @ 0x0806B67C + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r6, #0xc] + strb r1, [r6, #0xd] + strb r1, [r6, #0xe] + ldrb r0, [r6, #0xa] + cmp r0, #5 + bls _0806B692 + b _0806B7B8 +_0806B692: + lsls r0, r0, #2 + ldr r1, _0806B69C @ =_0806B6A0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806B69C: .4byte _0806B6A0 +_0806B6A0: @ jump table + .4byte _0806B6B8 @ case 0 + .4byte _0806B7A6 @ case 1 + .4byte _0806B70C @ case 2 + .4byte _0806B726 @ case 3 + .4byte _0806B7B0 @ case 4 + .4byte _0806B7A6 @ case 5 +_0806B6B8: + ldrh r0, [r6, #0x32] + subs r0, #0xa0 + strh r0, [r6, #0x32] + movs r0, #0xa0 + strb r0, [r6, #0xe] + movs r0, #0x20 + strb r0, [r6, #0xf] + adds r1, r6, #0 + adds r1, #0x63 + strb r0, [r1] + movs r5, #0 +_0806B6CE: + movs r0, #0x3b + movs r1, #2 + adds r2, r5, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806B6E0 + str r6, [r4, #0x50] +_0806B6E0: + adds r5, #1 + cmp r5, #3 + bls _0806B6CE + movs r0, #0x3b + movs r1, #1 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + str r6, [r4, #0x50] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xff + strb r0, [r1] + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + b _0806B7A6 +_0806B70C: + ldrb r1, [r6, #0xb] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806B71E + ldrb r0, [r6, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r6, #0x18] +_0806B71E: + adds r0, r6, #0 + bl sub_0806B96C + b _0806B7A6 +_0806B726: + movs r0, #1 + strb r0, [r6, #0xe] + movs r0, #0x20 + strb r0, [r6, #0xf] + movs r0, #0x3b + movs r1, #4 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806B76C + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r6, [r4, #0x50] + adds r0, r6, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, r4, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #0 + strb r0, [r4, #0x1e] +_0806B76C: + movs r0, #0x3b + movs r1, #5 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806B7A6 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r6, [r4, #0x50] + adds r0, r6, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + adds r1, #1 + adds r3, r4, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_0806B7A6: + adds r0, r6, #0 + movs r1, #0 + bl sub_080042AC + b _0806B7B8 +_0806B7B0: + adds r0, r6, #0 + movs r1, #0 + bl sub_08004260 +_0806B7B8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806B7BC +sub_0806B7BC: @ 0x0806B7BC + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #3 + bl sub_0807CC3C + cmp r0, #0 + bne _0806B7CC + b _0806B968 +_0806B7CC: + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _0806B84C + cmp r0, #1 + bgt _0806B7DC + cmp r0, #0 + beq _0806B7E6 + b _0806B93C +_0806B7DC: + cmp r0, #2 + beq _0806B86C + cmp r0, #3 + beq _0806B874 + b _0806B93C +_0806B7E6: + ldrh r0, [r5, #0x32] + adds r0, #1 + strh r0, [r5, #0x32] + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806B82C + movs r0, #0x3b + movs r1, #3 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + bne _0806B80C + b _0806B968 +_0806B80C: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, _0806B828 @ =0x00001634 + bl sub_08056378 + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + bl sub_0805E780 + b _0806B968 + .align 2, 0 +_0806B828: .4byte 0x00001634 +_0806B82C: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + ands r0, r1 + cmp r0, #0 + beq _0806B83A + b _0806B95A +_0806B83A: + movs r0, #0x20 + strb r0, [r5, #0xf] + ldr r0, _0806B848 @ =0x000001A9 + bl sub_080A3268 + b _0806B95A + .align 2, 0 +_0806B848: .4byte 0x000001A9 +_0806B84C: + adds r0, r5, #0 + bl sub_0806B9BC + adds r4, r0, #0 + cmp r4, #0 + bne _0806B85C + bl sub_0805E780 +_0806B85C: + movs r3, #0x84 + lsls r3, r3, #0xe + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + b _0806B95A +_0806B86C: + adds r0, r5, #0 + bl sub_0806B96C + b _0806B95A +_0806B874: + ldrb r0, [r5, #0xd] + cmp r0, #1 + beq _0806B8A2 + cmp r0, #1 + bgt _0806B884 + cmp r0, #0 + beq _0806B88E + b _0806B91E +_0806B884: + cmp r0, #2 + beq _0806B8C4 + cmp r0, #3 + beq _0806B906 + b _0806B91E +_0806B88E: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806B91E + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + b _0806B91E +_0806B8A2: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806B91E + movs r0, #2 + strb r0, [r5, #0xd] + ldr r1, _0806B8C0 @ =0x0000013F + adds r0, r5, #0 + bl sub_0801D2B4 + b _0806B8FA + .align 2, 0 +_0806B8C0: .4byte 0x0000013F +_0806B8C4: + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0806B91E + movs r0, #0xef + ands r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + beq _0806B91E + cmp r0, #0xa + bne _0806B91E + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + movs r0, #0xf4 + bl sub_08004488 + movs r0, #0 + strb r0, [r5, #0xe] +_0806B8FA: + ldrb r1, [r5, #0xd] + subs r1, #1 + adds r0, r5, #0 + bl sub_080042AC + b _0806B91E +_0806B906: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806B91E + movs r0, #0 + bl sub_0807CD10 + bl sub_0805E780 +_0806B91E: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806B95A + movs r0, #0x20 + strb r0, [r5, #0xf] + ldr r0, _0806B938 @ =0x000001A9 + bl sub_080A3268 + b _0806B95A + .align 2, 0 +_0806B938: .4byte 0x000001A9 +_0806B93C: + adds r0, r5, #0 + bl sub_0806B9BC + adds r4, r0, #0 + cmp r4, #0 + bne _0806B94E + bl sub_0805E780 + b _0806B968 +_0806B94E: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0806B968 + ldrb r0, [r5, #0xa] + cmp r0, #4 + beq _0806B962 +_0806B95A: + adds r0, r5, #0 + bl sub_080042B8 + b _0806B968 +_0806B962: + adds r0, r5, #0 + bl sub_08004274 +_0806B968: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806B96C +sub_0806B96C: @ 0x0806B96C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0806B9BC + adds r5, r0, #0 + cmp r5, #0 + bne _0806B97E + bl sub_0805E780 +_0806B97E: + ldrb r3, [r4, #0xb] + lsls r3, r3, #1 + ldr r0, _0806B9B8 @ =gUnk_08112F80 + adds r3, r3, r0 + ldrb r1, [r5, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r2, #0 + ldrsb r2, [r3, r2] + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + adds r3, #0x21 + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 +_0806B9B8: .4byte gUnk_08112F80 + + thumb_func_start sub_0806B9BC +sub_0806B9BC: @ 0x0806B9BC + push {lr} + ldr r1, [r0, #0x50] + cmp r1, #0 + beq _0806B9CC + ldr r0, [r1, #4] + cmp r0, #0 + bne _0806B9CC + movs r1, #0 +_0806B9CC: + adds r0, r1, #0 + pop {pc} + + thumb_func_start sub_0806B9D0 +sub_0806B9D0: @ 0x0806B9D0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _0806B9E6 + adds r0, #1 + strb r0, [r1, #0xc] + adds r0, r1, #0 + bl sub_0807DD50 + b _0806B9EE +_0806B9E6: + adds r0, r1, #0 + movs r1, #0 + bl sub_0807DD94 +_0806B9EE: + pop {pc} + + thumb_func_start sub_0806B9F0 +sub_0806B9F0: @ 0x0806B9F0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806BA18 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD50 + ldr r1, _0806BA30 @ =gUnk_08114F30 + ldrb r2, [r4, #0x19] + lsrs r0, r2, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] +_0806BA18: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_0806BA30: .4byte gUnk_08114F30 + + thumb_func_start sub_0806BA34 +sub_0806BA34: @ 0x0806BA34 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r4, r1, #0 + ldr r0, _0806BA58 @ =0x00004912 + mov r8, r0 + movs r0, #0 + str r0, [r4, #0x14] + movs r0, #0x73 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806BA60 + ldr r0, _0806BA5C @ =0x00004913 + mov r8, r0 + b _0806BB06 + .align 2, 0 +_0806BA58: .4byte 0x00004912 +_0806BA5C: .4byte 0x00004913 +_0806BA60: + movs r0, #0x39 + bl sub_0807CA84 + adds r7, r0, #0 + movs r0, #0x3a + bl sub_0807CA84 + adds r6, r0, #0 + movs r0, #0x3b + bl sub_0807CA84 + adds r5, r0, #0 + cmp r7, #1 + bne _0806BA88 + ldr r0, _0806BA84 @ =0x00004906 + mov r8, r0 + str r7, [r4, #0x14] + b _0806BAA2 + .align 2, 0 +_0806BA84: .4byte 0x00004906 +_0806BA88: + cmp r6, #1 + bne _0806BA98 + ldr r0, _0806BA94 @ =0x00004907 + mov r8, r0 + str r6, [r4, #0x14] + b _0806BAA2 + .align 2, 0 +_0806BA94: .4byte 0x00004907 +_0806BA98: + cmp r5, #1 + bne _0806BAB4 + ldr r0, _0806BAB0 @ =0x00004908 + mov r8, r0 + str r5, [r4, #0x14] +_0806BAA2: + movs r0, #0x6b + bl sub_0807CCB4 + movs r0, #0x6a + bl sub_0807CCB4 + b _0806BB06 + .align 2, 0 +_0806BAB0: .4byte 0x00004908 +_0806BAB4: + movs r0, #0x6a + bl sub_0807CBD0 + cmp r0, #0 + beq _0806BB06 + movs r0, #0x6b + bl sub_0807CBD0 + cmp r0, #0 + bne _0806BAD0 + ldr r0, _0806BACC @ =0x00004901 + b _0806BAD6 + .align 2, 0 +_0806BACC: .4byte 0x00004901 +_0806BAD0: + cmp r7, #0 + bne _0806BAE4 + ldr r0, _0806BAE0 @ =0x00004902 +_0806BAD6: + mov r8, r0 + movs r0, #0x6b + bl sub_0807CCB4 + b _0806BB06 + .align 2, 0 +_0806BAE0: .4byte 0x00004902 +_0806BAE4: + cmp r6, #0 + bne _0806BAF8 + ldr r0, _0806BAF4 @ =0x00004903 + mov r8, r0 + movs r0, #0x6d + bl sub_0807CCB4 + b _0806BB06 + .align 2, 0 +_0806BAF4: .4byte 0x00004903 +_0806BAF8: + cmp r5, #0 + bne _0806BB06 + ldr r0, _0806BB18 @ =0x00004904 + mov r8, r0 + movs r0, #0x70 + bl sub_0807CCB4 +_0806BB06: + mov r0, r8 + mov r1, sb + bl sub_08056398 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806BB18: .4byte 0x00004904 + + thumb_func_start sub_0806BB1C +sub_0806BB1C: @ 0x0806BB1C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r4, #1 + rsbs r4, r4, #0 + movs r0, #0x39 + bl sub_0807CA84 + cmp r0, #1 + bne _0806BB34 + movs r4, #0x39 + b _0806BB52 +_0806BB34: + movs r0, #0x3a + bl sub_0807CA84 + cmp r0, #1 + bne _0806BB42 + movs r4, #0x3a + b _0806BB52 +_0806BB42: + movs r0, #0x3b + bl sub_0807CA84 + cmp r0, #1 + bne _0806BB4E + movs r4, #0x3b +_0806BB4E: + cmp r4, #0 + ble _0806BB78 +_0806BB52: + ldr r0, [r6, #4] + cmp r0, #0 + bne _0806BB70 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08095BE0 + adds r0, r5, #0 + movs r1, #0xc + bl sub_08004260 + movs r0, #0xcd + bl sub_080A3268 + b _0806BB78 +_0806BB70: + adds r0, r4, #0 + movs r1, #2 + bl sub_0807CAA0 +_0806BB78: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806BB7C +sub_0806BB7C: @ 0x0806BB7C + push {r4, lr} + adds r4, r1, #0 + movs r0, #0 + str r0, [r4, #0x14] + movs r0, #0x39 + bl sub_0807CA84 + cmp r0, #2 + bne _0806BBAC + movs r0, #0x3a + bl sub_0807CA84 + cmp r0, #2 + bne _0806BBAC + movs r0, #0x3b + bl sub_0807CA84 + cmp r0, #2 + bne _0806BBAC + movs r0, #0x73 + bl sub_0807CCB4 + movs r0, #1 + str r0, [r4, #0x14] +_0806BBAC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806BBB0 +sub_0806BBB0: @ 0x0806BBB0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0806BBCC + movs r0, #0x29 + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + b _0806BBCE +_0806BBCC: + movs r1, #2 +_0806BBCE: + ldr r0, _0806BBE0 @ =gUnk_08113078 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_0806BBE0: .4byte gUnk_08113078 + + thumb_func_start sub_0806BBE4 +sub_0806BBE4: @ 0x0806BBE4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806BC40 + ldrb r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0806BC28 @ =gUnk_08113140 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806BC54 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + blt _0806BC2C + movs r0, #6 + b _0806BC2E + .align 2, 0 +_0806BC28: .4byte gUnk_08113140 +_0806BC2C: + movs r0, #2 +_0806BC2E: + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x14] + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0806BC58 + adds r0, r4, #0 + bl sub_0807DD64 +_0806BC40: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 +_0806BC54: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806BC58 +sub_0806BC58: @ 0x0806BC58 + push {lr} + movs r1, #2 + bl sub_0805E3A0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806BC64 +sub_0806BC64: @ 0x0806BC64 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + + thumb_func_start sub_0806BC94 +sub_0806BC94: @ 0x0806BC94 + push {lr} + ldrb r3, [r0, #0x18] + lsls r3, r3, #0x19 + lsrs r3, r3, #0x1f + rsbs r2, r3, #0 + orrs r2, r3 + asrs r2, r2, #0x1f + movs r3, #8 + ands r2, r3 + ldr r1, [r1, #4] + adds r1, r1, r2 + ldrb r2, [r0, #0x14] + lsrs r2, r2, #1 + adds r1, r1, r2 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806BCB8 +sub_0806BCB8: @ 0x0806BCB8 + ldrb r1, [r0, #0xe] + strb r1, [r0, #0x14] + bx lr + .align 2, 0 + + thumb_func_start sub_0806BCC0 +sub_0806BCC0: @ 0x0806BCC0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0806BCD0 + adds r0, r1, #0 + bl sub_0806F188 +_0806BCD0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806BCD4 +sub_0806BCD4: @ 0x0806BCD4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806BCE8 +sub_0806BCE8: @ 0x0806BCE8 + push {lr} + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + ldr r2, _0806BCF8 @ =gUnk_08113158 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806BCF8: .4byte gUnk_08113158 + + thumb_func_start sub_0806BCFC +sub_0806BCFC: @ 0x0806BCFC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806BD4C + ldrb r0, [r4, #0xa] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _0806BD48 @ =gUnk_08113140 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806BD52 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + movs r1, #0x41 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0806BC58 + adds r0, r4, #0 + movs r1, #3 + bl sub_080042AC + b _0806BD52 + .align 2, 0 +_0806BD48: .4byte gUnk_08113140 +_0806BD4C: + adds r0, r4, #0 + bl sub_080042B8 +_0806BD52: + pop {r4, pc} + + thumb_func_start sub_0806BD54 +sub_0806BD54: @ 0x0806BD54 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806BD6A + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD50 + b _0806BD72 +_0806BD6A: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_0806BD72: + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0806BD94 + movs r0, #0xef + ands r0, r1 + strb r0, [r4] + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 + movs r0, #0x10 + movs r1, #0 + bl sub_08080964 +_0806BD94: + ldrb r1, [r4] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0806BDAA + movs r0, #0xdf + ands r0, r1 + strb r0, [r4] + movs r0, #0x7c + bl sub_08004488 +_0806BDAA: + pop {r4, pc} + + thumb_func_start sub_0806BDAC +sub_0806BDAC: @ 0x0806BDAC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0806BDE6 + cmp r0, #1 + bgt _0806BDC0 + cmp r0, #0 + beq _0806BDC6 + b _0806BE3A +_0806BDC0: + cmp r0, #2 + beq _0806BE26 + b _0806BE3A +_0806BDC6: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806BE3A +_0806BDE6: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806BE1C + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _0806BE18 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _0806BE3A + .align 2, 0 +_0806BE18: .4byte gLinkEntity +_0806BE1C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _0806BE3A +_0806BE26: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806BE3A + movs r0, #1 + strb r0, [r4, #0xc] +_0806BE3A: + pop {r4, pc} + + thumb_func_start sub_0806BE3C +sub_0806BE3C: @ 0x0806BE3C + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806BE54 +sub_0806BE54: @ 0x0806BE54 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806BE7A + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #2 + bl sub_080042AC + b _0806BE80 +_0806BE7A: + adds r0, r2, #0 + bl sub_080042B8 +_0806BE80: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806BE84 +sub_0806BE84: @ 0x0806BE84 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + movs r0, #0 + str r0, [r4, #0x14] + movs r5, #1 + movs r0, #0x69 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806BEA6 + movs r5, #0 + movs r0, #0x69 + bl sub_0807CCB4 + movs r0, #1 + str r0, [r4, #0x14] +_0806BEA6: + movs r0, #0x3c + bl sub_0807CA84 + cmp r0, #1 + bls _0806BEB2 + movs r5, #2 +_0806BEB2: + ldr r0, _0806BEC4 @ =gUnk_08113344 + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r6, #0 + bl sub_08056398 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806BEC4: .4byte gUnk_08113344 + + thumb_func_start sub_0806BEC8 +sub_0806BEC8: @ 0x0806BEC8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + movs r4, #0 + str r4, [r5, #0x14] + movs r0, #0x3c + bl sub_0807CA84 + cmp r0, #1 + bne _0806BEE2 + movs r4, #1 + str r4, [r5, #0x14] + b _0806BEE8 +_0806BEE2: + cmp r0, #1 + bls _0806BEE8 + movs r4, #2 +_0806BEE8: + ldr r0, _0806BEF8 @ =gUnk_0811334A + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r6, #0 + bl sub_08056398 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806BEF8: .4byte gUnk_0811334A + + thumb_func_start sub_0806BEFC +sub_0806BEFC: @ 0x0806BEFC + push {lr} + movs r0, #0xbf + lsls r0, r0, #1 + ldr r1, _0806BF2C @ =0x0000058E + movs r2, #1 + bl sub_0807B314 + ldr r0, _0806BF30 @ =0x0000017F + ldr r1, _0806BF34 @ =0x0000058F + movs r2, #1 + bl sub_0807B314 + movs r0, #0xc0 + lsls r0, r0, #1 + ldr r1, _0806BF38 @ =0x000005CE + movs r2, #1 + bl sub_0807B314 + ldr r0, _0806BF3C @ =0x00000181 + ldr r1, _0806BF40 @ =0x000005CF + movs r2, #1 + bl sub_0807B314 + pop {pc} + .align 2, 0 +_0806BF2C: .4byte 0x0000058E +_0806BF30: .4byte 0x0000017F +_0806BF34: .4byte 0x0000058F +_0806BF38: .4byte 0x000005CE +_0806BF3C: .4byte 0x00000181 +_0806BF40: .4byte 0x000005CF + + thumb_func_start sub_0806BF44 +sub_0806BF44: @ 0x0806BF44 + push {r4, r5, lr} + adds r2, r0, #0 + adds r4, r1, #0 + movs r0, #0 + str r0, [r4, #0x14] + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldr r3, _0806BF78 @ =gUnk_03000BF0 + movs r5, #0xa + ldrsh r1, [r3, r5] + subs r0, r0, r1 + adds r0, #0x10 + ldr r1, _0806BF7C @ =0x0000010F + cmp r0, r1 + bhi _0806BF76 + movs r1, #0x32 + ldrsh r0, [r2, r1] + movs r2, #0xc + ldrsh r1, [r3, r2] + subs r0, r0, r1 + adds r0, #0x18 + cmp r0, #0xcf + bhi _0806BF76 + movs r0, #1 + str r0, [r4, #0x14] +_0806BF76: + pop {r4, r5, pc} + .align 2, 0 +_0806BF78: .4byte gUnk_03000BF0 +_0806BF7C: .4byte 0x0000010F + + thumb_func_start sub_0806BF80 +sub_0806BF80: @ 0x0806BF80 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0806BFBE + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806BFA2 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 +_0806BFA2: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806BFD8 + b _0806BFD4 +_0806BFBE: + ldrb r0, [r4, #0xc] + adds r1, r0, #0 + cmp r1, #0 + bne _0806BFD4 + adds r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0x1e] + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAD8 +_0806BFD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806BFD8 +sub_0806BFD8: @ 0x0806BFD8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r5, #3 + adds r1, r5, #0 + ands r1, r0 + cmp r1, #1 + beq _0806BFF0 + cmp r1, #2 + beq _0806C002 + b _0806C00A +_0806BFF0: + bl sub_08000E50 + adds r1, r0, #0 + ands r1, r5 + adds r1, #0xc + adds r0, r4, #0 + bl sub_08004260 + b _0806C00A +_0806C002: + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0806C00A: + pop {r4, r5, pc} + + thumb_func_start sub_0806C00C +sub_0806C00C: @ 0x0806C00C + push {lr} + adds r2, r1, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0806C022 + movs r0, #1 +_0806C022: + str r0, [r2, #0x14] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806C028 +sub_0806C028: @ 0x0806C028 + push {lr} + ldrb r2, [r0, #0x14] + lsrs r2, r2, #1 + ldr r1, [r1, #4] + adds r1, r1, r2 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0806C038 +sub_0806C038: @ 0x0806C038 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0806C074 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r4, r0, #5 + cmp r4, #0 + beq _0806C048 + movs r4, #0 +_0806C048: + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0806C086 + movs r0, #0x3a + bl sub_0807CA84 + cmp r0, #0 + bne _0806C078 + movs r4, #6 + movs r0, #0xaf + bl sub_0807CBD0 + cmp r0, #0 + bne _0806C086 + movs r4, #5 + movs r0, #0xaf + bl sub_0807CCB4 + b _0806C086 + .align 2, 0 +_0806C074: .4byte gUnk_02002A40 +_0806C078: + movs r4, #7 + movs r0, #0x3a + bl sub_0807CA84 + cmp r0, #1 + bls _0806C086 + movs r4, #0 +_0806C086: + ldr r0, _0806C098 @ =gUnk_081133A4 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806C098: .4byte gUnk_081133A4 + + thumb_func_start sub_0806C09C +sub_0806C09C: @ 0x0806C09C + push {lr} + ldr r3, _0806C0AC @ =gUnk_081133B4 + movs r1, #1 + movs r2, #0 + bl sub_08078850 + pop {pc} + .align 2, 0 +_0806C0AC: .4byte gUnk_081133B4 + + thumb_func_start sub_0806C0B0 +sub_0806C0B0: @ 0x0806C0B0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r5, r0, #0 + cmp r5, #0 + bne _0806C104 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + ldr r1, _0806C100 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xfd + lsls r0, r0, #6 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + strh r0, [r4, #0x24] + str r5, [r4, #0x20] + b _0806C134 + .align 2, 0 +_0806C100: .4byte gUnk_03000F50 +_0806C104: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + movs r1, #0x24 + ldrsh r0, [r4, r1] + lsls r3, r0, #8 + ldr r0, [r4, #0x20] + adds r3, r3, r0 + asrs r3, r3, #0x10 + cmp r3, #0x10 + ble _0806C11E + movs r3, #0x10 +_0806C11E: + cmp r3, #3 + bgt _0806C124 + movs r3, #4 +_0806C124: + ldr r2, _0806C138 @ =gUnk_03000F50 + lsls r1, r3, #8 + movs r0, #0x10 + subs r0, r0, r3 + orrs r1, r0 + adds r2, #0x68 + strh r1, [r2] + strh r1, [r4, #0x24] +_0806C134: + pop {r4, r5, pc} + .align 2, 0 +_0806C138: .4byte gUnk_03000F50 + + thumb_func_start sub_0806C13C +sub_0806C13C: @ 0x0806C13C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0806C182 + cmp r0, #1 + bgt _0806C150 + cmp r0, #0 + beq _0806C156 + b _0806C1D2 +_0806C150: + cmp r0, #2 + beq _0806C1BE + b _0806C1D2 +_0806C156: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806C1D2 +_0806C182: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806C1B4 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _0806C1B0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _0806C1D2 + .align 2, 0 +_0806C1B0: .4byte gLinkEntity +_0806C1B4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _0806C1D2 +_0806C1BE: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806C1D2 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x88 + bl sub_0807CCB4 +_0806C1D2: + pop {r4, pc} + + thumb_func_start sub_0806C1D4 +sub_0806C1D4: @ 0x0806C1D4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806C1FA + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #2 + bl sub_080042AC + b _0806C200 +_0806C1FA: + adds r0, r2, #0 + bl sub_080042B8 +_0806C200: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806C204 +sub_0806C204: @ 0x0806C204 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _0806C21A + adds r0, #1 + strb r0, [r1, #0xc] + adds r0, r1, #0 + bl sub_0807DD50 + b _0806C222 +_0806C21A: + adds r0, r1, #0 + movs r1, #0 + bl sub_0807DD94 +_0806C222: + pop {pc} + + thumb_func_start sub_0806C224 +sub_0806C224: @ 0x0806C224 + push {lr} + ldr r0, _0806C234 @ =gUnk_0813AD60 + bl sub_08080840 + ldr r1, _0806C238 @ =gUnk_030010A0 + movs r0, #6 + strb r0, [r1, #9] + pop {pc} + .align 2, 0 +_0806C234: .4byte gUnk_0813AD60 +_0806C238: .4byte gUnk_030010A0 + + thumb_func_start sub_0806C23C +sub_0806C23C: @ 0x0806C23C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0xf + movs r2, #0x43 + movs r3, #0 + bl sub_080A2988 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0806C27C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, #0x38 + ldrb r2, [r4] + movs r0, #0x73 + bl sub_0807B314 + movs r0, #0x73 + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_0806C27C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0806C280 +sub_0806C280: @ 0x0806C280 + push {lr} + movs r0, #0x50 + bl sub_0807CD04 + ldr r0, _0806C298 @ =gUnk_0813AD74 + bl sub_08080840 + ldr r1, _0806C29C @ =gUnk_030010A0 + movs r0, #6 + strb r0, [r1, #9] + pop {pc} + .align 2, 0 +_0806C298: .4byte gUnk_0813AD74 +_0806C29C: .4byte gUnk_030010A0 + + thumb_func_start sub_0806C2A0 +sub_0806C2A0: @ 0x0806C2A0 + push {lr} + ldr r0, [r1, #4] + cmp r0, #0 + beq _0806C2AE + cmp r0, #1 + beq _0806C2B8 + b _0806C2C0 +_0806C2AE: + movs r0, #0xd + movs r1, #4 + bl sub_08050054 + b _0806C2C0 +_0806C2B8: + movs r0, #0xc + movs r1, #4 + bl sub_08050054 +_0806C2C0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806C2C4 +sub_0806C2C4: @ 0x0806C2C4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0806C2FA + cmp r0, #1 + bgt _0806C2D8 + cmp r0, #0 + beq _0806C2DE + b _0806C350 +_0806C2D8: + cmp r0, #2 + beq _0806C342 + b _0806C350 +_0806C2DE: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0807DD50 + b _0806C350 +_0806C2FA: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806C338 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + ldr r1, _0806C334 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r4, #0 + adds r1, #0x58 + ldrb r1, [r1] + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0806F118 + b _0806C350 + .align 2, 0 +_0806C334: .4byte gLinkEntity +_0806C338: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _0806C350 +_0806C342: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806C350 + movs r0, #1 + strb r0, [r4, #0xc] +_0806C350: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806C354 +sub_0806C354: @ 0x0806C354 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806C36C +sub_0806C36C: @ 0x0806C36C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806C392 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #6 + bl sub_080042AC + b _0806C398 +_0806C392: + adds r0, r2, #0 + bl sub_080042B8 +_0806C398: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806C39C +sub_0806C39C: @ 0x0806C39C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _0806C3E2 + cmp r5, #1 + bgt _0806C3B0 + cmp r5, #0 + beq _0806C3B6 + b _0806C450 +_0806C3B0: + cmp r5, #2 + beq _0806C436 + b _0806C450 +_0806C3B6: + adds r0, r4, #0 + bl sub_0806C454 + cmp r0, #0 + beq _0806C450 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x69 + strb r5, [r0] + adds r0, r4, #0 + bl sub_0807DD50 + b _0806C450 +_0806C3E2: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806C420 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _0806C41C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0806F118 + b _0806C450 + .align 2, 0 +_0806C41C: .4byte gLinkEntity +_0806C420: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + b _0806C450 +_0806C436: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806C450 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_0806C450: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806C454 +sub_0806C454: @ 0x0806C454 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806C470 @ =gUnk_08113754 + bl sub_0806FDEC + cmp r0, #0 + beq _0806C474 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + movs r0, #1 + b _0806C476 + .align 2, 0 +_0806C470: .4byte gUnk_08113754 +_0806C474: + movs r0, #0 +_0806C476: + pop {r4, pc} + + thumb_func_start sub_0806C478 +sub_0806C478: @ 0x0806C478 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + + thumb_func_start sub_0806C4A8 +sub_0806C4A8: @ 0x0806C4A8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0806C4D8 + adds r0, r4, #0 + bl sub_0806EDC4 + adds r1, r0, #0 + cmp r1, #0 + bge _0806C4CC + movs r1, #3 +_0806C4CC: + lsls r0, r1, #1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_080042AC + movs r0, #1 +_0806C4D8: + str r0, [r5, #0x14] + pop {r4, r5, pc} + + thumb_func_start sub_0806C4DC +sub_0806C4DC: @ 0x0806C4DC + push {lr} + ldr r1, _0806C4F0 @ =gUnk_02002A40 + ldrb r1, [r1, #8] + lsls r1, r1, #3 + ldr r2, _0806C4F4 @ =gUnk_08113760 + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806C4F0: .4byte gUnk_02002A40 +_0806C4F4: .4byte gUnk_08113760 + + thumb_func_start sub_0806C4F8 +sub_0806C4F8: @ 0x0806C4F8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806C510 +sub_0806C510: @ 0x0806C510 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806C548 + adds r0, r4, #0 + bl sub_0806C454 + cmp r0, #0 + beq _0806C54E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrh r0, [r4, #0x32] + subs r0, #4 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0806C54E +_0806C548: + adds r0, r4, #0 + bl sub_08004274 +_0806C54E: + pop {r4, pc} + + thumb_func_start sub_0806C550 +sub_0806C550: @ 0x0806C550 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806C56E + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806C576 +_0806C56E: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_0806C576: + pop {r4, pc} + + thumb_func_start sub_0806C578 +sub_0806C578: @ 0x0806C578 + push {lr} + ldr r0, _0806C584 @ =gUnk_0813AD10 + bl sub_08080840 + pop {pc} + .align 2, 0 +_0806C584: .4byte gUnk_0813AD10 + + thumb_func_start sub_0806C588 +sub_0806C588: @ 0x0806C588 + push {lr} + ldr r0, _0806C594 @ =gUnk_0813AD24 + bl sub_08080840 + pop {pc} + .align 2, 0 +_0806C594: .4byte gUnk_0813AD24 + + thumb_func_start sub_0806C598 +sub_0806C598: @ 0x0806C598 + push {lr} + ldr r0, _0806C5A4 @ =gUnk_0813AD38 + bl sub_08080840 + pop {pc} + .align 2, 0 +_0806C5A4: .4byte gUnk_0813AD38 + + thumb_func_start sub_0806C5A8 +sub_0806C5A8: @ 0x0806C5A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xc] + cmp r4, #1 + beq _0806C604 + cmp r4, #1 + bgt _0806C5BC + cmp r4, #0 + beq _0806C5C2 + b _0806C670 +_0806C5BC: + cmp r4, #2 + beq _0806C656 + b _0806C670 +_0806C5C2: + ldrb r1, [r5, #0xa] + lsls r1, r1, #4 + ldr r0, _0806C600 @ =gUnk_08113910 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806C670 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xe] + strb r0, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x69 + strb r4, [r0] + adds r0, r5, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r5, #0 + bl sub_0807DD50 + b _0806C670 + .align 2, 0 +_0806C600: .4byte gUnk_08113910 +_0806C604: + adds r2, r5, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806C64C + movs r0, #0 + strb r1, [r5, #0xc] + strb r0, [r2] + adds r4, r5, #0 + adds r4, #0x58 + ldrb r0, [r4] + adds r1, r5, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _0806C648 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5A4 + ldrb r1, [r4] + movs r2, #4 + rsbs r2, r2, #0 + ands r1, r2 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_0806F118 + b _0806C670 + .align 2, 0 +_0806C648: .4byte gLinkEntity +_0806C64C: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DD94 + b _0806C670 +_0806C656: + adds r0, r5, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806C670 + movs r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08004260 +_0806C670: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806C674 +sub_0806C674: @ 0x0806C674 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806C68C +sub_0806C68C: @ 0x0806C68C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + ldrb r6, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r5, #0x3f + ands r5, r0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0806C6D2 + adds r2, #3 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + b _0806C70A +_0806C6D2: + adds r2, #6 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + adds r2, r5, #3 + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #2 + adds r2, r6, #0 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #2 + movs r2, #1 + bl sub_0806FF88 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl sub_0806FFD8 + adds r0, r4, #0 + bl sub_0807000C +_0806C70A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0806C70C +sub_0806C70C: @ 0x0806C70C + push {lr} + adds r3, r0, #0 + ldr r0, _0806C730 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _0806C71C + movs r0, #0 +_0806C71C: + ldrb r1, [r3, #0xa] + lsls r1, r1, #6 + lsls r0, r0, #3 + ldr r2, _0806C734 @ =gUnk_08113930 + adds r0, r0, r2 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806C730: .4byte gUnk_02002A40 +_0806C734: .4byte gUnk_08113930 + + thumb_func_start sub_0806C738 +sub_0806C738: @ 0x0806C738 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806C778 + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _0806C774 @ =gUnk_08113910 + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806C77E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0806C77E + .align 2, 0 +_0806C774: .4byte gUnk_08113910 +_0806C778: + adds r0, r4, #0 + bl sub_08004274 +_0806C77E: + pop {r4, pc} + + thumb_func_start sub_0806C780 +sub_0806C780: @ 0x0806C780 + push {lr} + ldr r2, _0806C794 @ =gUnk_08113A7C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0806C794: .4byte gUnk_08113A7C + + thumb_func_start sub_0806C798 +sub_0806C798: @ 0x0806C798 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _0806C7D0 @ =gUnk_08113A1C + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806C7CE + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_0807DD50 + adds r0, r4, #0 + bl sub_0806C7D4 +_0806C7CE: + pop {r4, pc} + .align 2, 0 +_0806C7D0: .4byte gUnk_08113A1C + + thumb_func_start sub_0806C7D4 +sub_0806C7D4: @ 0x0806C7D4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #2 + bne _0806C7F4 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r2] + adds r0, r4, #0 + bl sub_0806F118 + b _0806C82C +_0806C7F4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + ldrb r0, [r4, #0xb] + cmp r0, #3 + bne _0806C82C + movs r0, #0x58 + bl GetProgressFlag + cmp r0, #0 + bne _0806C82C + movs r0, #0x63 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806C82C + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + beq _0806C82C + movs r0, #7 + strb r0, [r4, #0xb] + ldr r1, _0806C830 @ =gUnk_08014A80 + adds r0, r4, #0 + bl sub_0807DD80 +_0806C82C: + pop {r4, pc} + .align 2, 0 +_0806C830: .4byte gUnk_08014A80 + + thumb_func_start sub_0806C834 +sub_0806C834: @ 0x0806C834 + push {lr} + adds r2, r0, #0 + ldr r0, _0806C858 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0806C856 + ldrb r0, [r2, #0xc] + subs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x14] + lsrs r1, r1, #1 + adds r1, #4 + adds r0, r2, #0 + bl sub_08004260 +_0806C856: + pop {pc} + .align 2, 0 +_0806C858: .4byte gUnk_02000050 + + thumb_func_start sub_0806C85C +sub_0806C85C: @ 0x0806C85C + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806C86C + movs r0, #1 + strb r0, [r4, #0xc] +_0806C86C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806C870 +sub_0806C870: @ 0x0806C870 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806C888 +sub_0806C888: @ 0x0806C888 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r7, #0x3f + ands r7, r1 + ldrb r0, [r4, #0xa] + cmp r0, #4 + bne _0806C8D4 + adds r0, r4, #0 + movs r1, #0 + movs r2, #9 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + adds r2, r7, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #2 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl sub_0806FFD8 + adds r0, r4, #0 + movs r1, #2 + movs r2, #1 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + b _0806C90A +_0806C8D4: + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806C8E2 + movs r6, #1 + movs r5, #0 + b _0806C8E6 +_0806C8E2: + movs r6, #0 + movs r5, #1 +_0806C8E6: + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FF60 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C +_0806C90A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0806C90C +sub_0806C90C: @ 0x0806C90C + push {lr} + movs r2, #0 + str r2, [r1, #0x14] + ldr r3, _0806C924 @ =gUnk_08113A8C + ldrb r2, [r0, #0xb] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_0806C924: .4byte gUnk_08113A8C + + thumb_func_start sub_0806C928 +sub_0806C928: @ 0x0806C928 + push {lr} + ldr r1, _0806C93C @ =gUnk_02002A40 + ldrb r1, [r1, #8] + lsls r1, r1, #3 + ldr r2, _0806C940 @ =gUnk_08113ABC + adds r1, r1, r2 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806C93C: .4byte gUnk_02002A40 +_0806C940: .4byte gUnk_08113ABC + + thumb_func_start sub_0806C944 +sub_0806C944: @ 0x0806C944 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x58 + bl GetProgressFlag + cmp r0, #0 + bne _0806C956 + movs r1, #0 + b _0806C964 +_0806C956: + movs r0, #0x63 + bl sub_0807CBD0 + movs r1, #2 + cmp r0, #0 + beq _0806C964 + movs r1, #1 +_0806C964: + ldr r0, _0806C974 @ =gUnk_08113B0C + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_0806C974: .4byte gUnk_08113B0C + + thumb_func_start sub_0806C978 +sub_0806C978: @ 0x0806C978 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x58 + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + ldr r0, _0806C998 @ =gUnk_08113B12 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_0806C998: .4byte gUnk_08113B12 + + thumb_func_start sub_0806C99C +sub_0806C99C: @ 0x0806C99C + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x58 + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + asrs r4, r1, #0x1f + movs r0, #2 + ands r4, r0 + movs r0, #0x63 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806C9BC + adds r4, #1 +_0806C9BC: + ldr r0, _0806C9CC @ =gUnk_08113B16 + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806C9CC: .4byte gUnk_08113B16 + + thumb_func_start sub_0806C9D0 +sub_0806C9D0: @ 0x0806C9D0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #0x64 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806C9E2 + movs r4, #1 +_0806C9E2: + ldr r0, _0806C9F4 @ =gUnk_08113B1E + lsls r1, r4, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r5, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806C9F4: .4byte gUnk_08113B1E + + thumb_func_start sub_0806C9F8 +sub_0806C9F8: @ 0x0806C9F8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x58 + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + ldr r0, _0806CA18 @ =gUnk_08113B22 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, pc} + .align 2, 0 +_0806CA18: .4byte gUnk_08113B22 + + thumb_func_start sub_0806CA1C +sub_0806CA1C: @ 0x0806CA1C + push {lr} + adds r1, r0, #0 + ldr r0, _0806CA28 @ =0x0000251B + bl sub_08056398 + pop {pc} + .align 2, 0 +_0806CA28: .4byte 0x0000251B + + thumb_func_start sub_0806CA2C +sub_0806CA2C: @ 0x0806CA2C + push {lr} + adds r1, r0, #0 + ldr r0, _0806CA38 @ =0x00002527 + bl sub_08056398 + pop {pc} + .align 2, 0 +_0806CA38: .4byte 0x00002527 + + thumb_func_start sub_0806CA3C +sub_0806CA3C: @ 0x0806CA3C + push {lr} + ldr r1, _0806CA48 @ =gUnk_08113B28 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806CA48: .4byte gUnk_08113B28 + + thumb_func_start sub_0806CA4C +sub_0806CA4C: @ 0x0806CA4C + push {lr} + ldr r1, _0806CA58 @ =gUnk_08113B30 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806CA58: .4byte gUnk_08113B30 + + thumb_func_start sub_0806CA5C +sub_0806CA5C: @ 0x0806CA5C + push {r4, lr} + adds r4, r1, #0 + ldr r3, _0806CA8C @ =gUnk_08113B38 + ldrb r1, [r4, #0x18] + adds r2, r1, #1 + strb r2, [r4, #0x18] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r1, r1, r3 + ldrb r1, [r1] + strh r1, [r4, #0x10] + ldrb r0, [r0, #0xb] + cmp r0, #0xa + bne _0806CA7E + movs r0, #0xe8 + bl sub_08004488 +_0806CA7E: + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _0806CA8A + ldr r1, _0806CA90 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0806CA8A: + pop {r4, pc} + .align 2, 0 +_0806CA8C: .4byte gUnk_08113B38 +_0806CA90: .4byte gUnk_02033280 + + thumb_func_start sub_0806CA94 +sub_0806CA94: @ 0x0806CA94 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806CAD4 + ldrb r1, [r4, #0xa] + lsls r1, r1, #4 + ldr r0, _0806CAD0 @ =gUnk_08113A1C + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806CADA + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _0806CADA + .align 2, 0 +_0806CAD0: .4byte gUnk_08113A1C +_0806CAD4: + adds r0, r4, #0 + bl sub_08004274 +_0806CADA: + pop {r4, pc} + + thumb_func_start sub_0806CADC +sub_0806CADC: @ 0x0806CADC + push {lr} + ldr r2, _0806CAF0 @ =gUnk_08113D8C + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0806CAF0: .4byte gUnk_08113D8C + + thumb_func_start sub_0806CAF4 +sub_0806CAF4: @ 0x0806CAF4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0806CB66 + adds r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + movs r1, #2 + bl sub_0805E3A0 + movs r0, #0x4a + movs r1, #1 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806CB2C + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAD8 +_0806CB2C: + movs r0, #0x4a + movs r1, #2 + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806CB4E + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_0806CB4E: + adds r0, r5, #0 + bl sub_0807DD64 + adds r0, r5, #0 + bl sub_08078778 + ldr r3, _0806CB7C @ =gUnk_08113D84 + ldrb r2, [r3, #4] + adds r0, r5, #0 + movs r1, #1 + bl sub_08078850 +_0806CB66: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 + adds r0, r5, #0 + bl sub_08004274 + pop {r4, r5, pc} + .align 2, 0 +_0806CB7C: .4byte gUnk_08113D84 + + thumb_func_start sub_0806CB80 +sub_0806CB80: @ 0x0806CB80 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r1, r0, #0 + cmp r1, #0 + bne _0806CB9E + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #2 + strb r0, [r4, #0x14] + strb r1, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0806CB9E: + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _0806CBB0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #3 + ands r0, r1 + adds r0, #0x21 + strb r0, [r4, #0x1e] +_0806CBB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806CBB4 +sub_0806CBB4: @ 0x0806CBB4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806CBD6 + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0x11 + bl sub_08004260 +_0806CBD6: + adds r0, r4, #0 + bl sub_08004274 + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _0806CC06 + ldrb r0, [r4, #0x18] + movs r3, #4 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r2, r0 + strb r2, [r4, #0x18] + adds r0, r1, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0806CC06 + adds r0, r2, #0 + ands r0, r3 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_0806CC06: + pop {r4, pc} + + thumb_func_start sub_0806CC08 +sub_0806CC08: @ 0x0806CC08 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0806CC40 + cmp r0, #1 + bgt _0806CC1C + cmp r0, #0 + beq _0806CC22 + b _0806CCB0 +_0806CC1C: + cmp r0, #2 + beq _0806CC96 + b _0806CCB0 +_0806CC22: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 +_0806CC40: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806CC80 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _0806CC7C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #8 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _0806CCB0 + .align 2, 0 +_0806CC7C: .4byte gLinkEntity +_0806CC80: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + b _0806CCB0 +_0806CC96: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806CCB0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_0806CCB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806CCB4 +sub_0806CCB4: @ 0x0806CCB4 + push {lr} + adds r2, r1, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0806CCCA + movs r0, #1 +_0806CCCA: + str r0, [r2, #0x14] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806CCD0 +sub_0806CCD0: @ 0x0806CCD0 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + adds r0, #0x5b + ldrb r0, [r0] + movs r2, #0x3f + ands r2, r0 + cmp r2, #0 + beq _0806CCF4 + ldrb r1, [r3, #0x14] + lsrs r1, r1, #1 + adds r1, r2, r1 + adds r0, r3, #0 + bl sub_08004260 + movs r0, #1 + str r0, [r4, #0x14] + b _0806CCF6 +_0806CCF4: + str r2, [r4, #0x14] +_0806CCF6: + pop {r4, pc} + + thumb_func_start sub_0806CCF8 +sub_0806CCF8: @ 0x0806CCF8 + push {lr} + movs r1, #0x85 + lsls r1, r1, #1 + bl sub_0801D2B4 + pop {pc} + + thumb_func_start sub_0806CD04 +sub_0806CD04: @ 0x0806CD04 + push {lr} + ldr r1, _0806CD10 @ =0x0000010B + bl sub_0801D2B4 + pop {pc} + .align 2, 0 +_0806CD10: .4byte 0x0000010B + + thumb_func_start sub_0806CD14 +sub_0806CD14: @ 0x0806CD14 + push {lr} + movs r1, #0x86 + lsls r1, r1, #1 + bl sub_0801D2B4 + pop {pc} + + thumb_func_start sub_0806CD20 +sub_0806CD20: @ 0x0806CD20 + push {lr} + ldr r1, _0806CD2C @ =0x0000010D + bl sub_0801D2B4 + pop {pc} + .align 2, 0 +_0806CD2C: .4byte 0x0000010D + + thumb_func_start sub_0806CD30 +sub_0806CD30: @ 0x0806CD30 + push {lr} + movs r1, #0x87 + lsls r1, r1, #1 + bl sub_0801D2B4 + pop {pc} + + thumb_func_start sub_0806CD3C +sub_0806CD3C: @ 0x0806CD3C + push {lr} + ldr r1, _0806CD48 @ =0x0000010F + bl sub_0801D2B4 + pop {pc} + .align 2, 0 +_0806CD48: .4byte 0x0000010F + + thumb_func_start sub_0806CD4C +sub_0806CD4C: @ 0x0806CD4C + push {lr} + movs r1, #0x88 + lsls r1, r1, #1 + bl sub_0801D2B4 + pop {pc} + + thumb_func_start sub_0806CD58 +sub_0806CD58: @ 0x0806CD58 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806CD70 +sub_0806CD70: @ 0x0806CD70 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806CD9E + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #6 + bl sub_080042AC + b _0806CDA4 +_0806CD9E: + adds r0, r4, #0 + bl sub_080042B8 +_0806CDA4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806CDA8 +sub_0806CDA8: @ 0x0806CDA8 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #1 + beq _0806CDE8 + cmp r1, #1 + bgt _0806CDBC + cmp r1, #0 + beq _0806CDC2 + b _0806CE58 +_0806CDBC: + cmp r1, #2 + beq _0806CE3E + b _0806CE58 +_0806CDC2: + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806CE58 +_0806CDE8: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806CE28 + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _0806CE24 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0806F118 + b _0806CE58 + .align 2, 0 +_0806CE24: .4byte gLinkEntity +_0806CE28: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + b _0806CE58 +_0806CE3E: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806CE58 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC +_0806CE58: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806CE5C +sub_0806CE5C: @ 0x0806CE5C + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08078784 + ldr r3, _0806CE7C @ =gUnk_08113F44 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_08078850 + pop {r4, pc} + .align 2, 0 +_0806CE7C: .4byte gUnk_08113F44 + + thumb_func_start sub_0806CE80 +sub_0806CE80: @ 0x0806CE80 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0806CEB4 @ =gUnk_02002A40 + ldrb r4, [r0, #8] + cmp r4, #5 + bne _0806CED6 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + bne _0806CEC0 + movs r0, #0x70 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806CEBC + movs r0, #0x71 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806CEB8 + movs r4, #0xb + movs r0, #0x71 + bl sub_0807CCB4 + b _0806CED6 + .align 2, 0 +_0806CEB4: .4byte gUnk_02002A40 +_0806CEB8: + movs r4, #0xc + b _0806CED6 +_0806CEBC: + movs r4, #0xa + b _0806CED6 +_0806CEC0: + movs r0, #0x89 + bl sub_0807CBD0 + cmp r0, #0 + bne _0806CED4 + movs r4, #0xd + movs r0, #0x89 + bl sub_0807CCB4 + b _0806CED6 +_0806CED4: + movs r4, #0xe +_0806CED6: + lsls r1, r4, #3 + ldr r0, _0806CEE4 @ =gUnk_08113F48 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_0806F1AC + pop {r4, r5, pc} + .align 2, 0 +_0806CEE4: .4byte gUnk_08113F48 + + thumb_func_start sub_0806CEE8 +sub_0806CEE8: @ 0x0806CEE8 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806CF0E + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #8 + bl sub_080042AC + b _0806CF14 +_0806CF0E: + adds r0, r2, #0 + bl sub_080042B8 +_0806CF14: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806CF18 +sub_0806CF18: @ 0x0806CF18 + push {lr} + ldr r2, _0806CF2C @ =gUnk_081140D4 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0806CF2C: .4byte gUnk_081140D4 + + thumb_func_start sub_0806CF30 +sub_0806CF30: @ 0x0806CF30 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0806CF5E + movs r0, #1 + strb r0, [r5, #0xc] + strb r0, [r5, #0xd] + ldrh r1, [r5, #0x2e] + adds r0, r5, #0 + adds r0, #0x68 + strh r1, [r0] + adds r0, r5, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r5, #0 + bl sub_0806D0B0 + adds r0, r5, #0 + bl sub_0807DD64 + b _0806CF6C +_0806CF5E: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 +_0806CF6C: + ldrb r0, [r5, #0xd] + cmp r0, #2 + beq _0806CFD4 + cmp r0, #2 + bgt _0806D000 + cmp r0, #0 + blt _0806D000 + ldr r0, _0806CFCC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0806D000 + ldr r0, _0806CFD0 @ =gLinkEntity + movs r1, #0x2e + ldrsh r2, [r0, r1] + ldrh r3, [r5, #0x2e] + movs r4, #0x2e + ldrsh r1, [r5, r4] + adds r4, r0, #0 + cmp r2, r1 + bge _0806CFA8 + adds r0, r5, #0 + adds r0, #0x68 + ldrh r0, [r0] + subs r0, #0x20 + cmp r0, r1 + bge _0806CFA8 + subs r0, r3, #1 + strh r0, [r5, #0x2e] +_0806CFA8: + movs r3, #0x2e + ldrsh r1, [r4, r3] + ldrh r2, [r5, #0x2e] + movs r4, #0x2e + ldrsh r0, [r5, r4] + cmp r1, r0 + ble _0806D000 + adds r0, r5, #0 + adds r0, #0x68 + ldrh r0, [r0] + adds r0, #0x20 + movs r3, #0x2e + ldrsh r1, [r5, r3] + cmp r0, r1 + ble _0806D000 + adds r0, r2, #1 + strh r0, [r5, #0x2e] + b _0806D000 + .align 2, 0 +_0806CFCC: .4byte gUnk_030010A0 +_0806CFD0: .4byte gLinkEntity +_0806CFD4: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D000 + bl sub_08000E50 + adds r4, r0, #0 + ldr r1, _0806D008 @ =gUnk_081140CC + movs r0, #3 + ands r0, r4 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080A3268 + movs r0, #7 + ands r4, r0 + lsls r4, r4, #4 + adds r4, #0x80 + strb r4, [r5, #0xe] +_0806D000: + adds r0, r5, #0 + bl sub_0806D02C + pop {r4, r5, pc} + .align 2, 0 +_0806D008: .4byte gUnk_081140CC + + thumb_func_start sub_0806D00C +sub_0806D00C: @ 0x0806D00C + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + movs r0, #0 + str r0, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #0 + bl sub_0805EB2C + cmp r0, #0 + beq _0806D028 + str r0, [r4, #0x50] +_0806D028: + add sp, #4 + pop {r4, pc} + + thumb_func_start sub_0806D02C +sub_0806D02C: @ 0x0806D02C + push {lr} + bl sub_0806D164 + ldr r2, _0806D0A8 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #7 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + adds r1, r2, #0 + adds r1, #0x60 + ldr r0, _0806D0AC @ =0x00003F3F + strh r0, [r1] + adds r1, #2 + movs r0, #0x3d + strh r0, [r1] + movs r1, #0x16 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r0, r3 + cmp r0, #0 + bge _0806D060 + movs r0, #0 +_0806D060: + cmp r0, #0xf0 + ble _0806D066 + movs r0, #0xf0 +_0806D066: + cmp r1, #0 + bge _0806D06C + movs r1, #0 +_0806D06C: + cmp r1, #0xf0 + ble _0806D072 + movs r1, #0xf0 +_0806D072: + lsls r0, r0, #8 + orrs r0, r1 + adds r1, r2, #0 + adds r1, #0x5a + strh r0, [r1] + movs r1, #0x18 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + adds r1, r0, r3 + cmp r0, #0 + bge _0806D08A + movs r0, #0 +_0806D08A: + cmp r0, #0xa0 + ble _0806D090 + movs r0, #0xa0 +_0806D090: + cmp r1, #0 + bge _0806D096 + movs r1, #0 +_0806D096: + cmp r1, #0xa0 + ble _0806D09C + movs r1, #0xa0 +_0806D09C: + lsls r0, r0, #8 + orrs r0, r1 + adds r1, r2, #0 + adds r1, #0x5e + strh r0, [r1] + pop {pc} + .align 2, 0 +_0806D0A8: .4byte gUnk_03000F50 +_0806D0AC: .4byte 0x00003F3F + + thumb_func_start sub_0806D0B0 +sub_0806D0B0: @ 0x0806D0B0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0806D0E8 @ =gUnk_0200B650 + movs r1, #0 + str r1, [r0] + movs r0, #0x30 + bl sub_0801D7EC + bl sub_0806D110 + ldr r5, _0806D0EC @ =gUnk_02002F00 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_0801D630 + cmp r4, #0 + beq _0806D0DA + adds r0, r4, #0 + bl sub_0806D164 +_0806D0DA: + ldr r0, _0806D0F0 @ =gUnk_03000F50 + ldr r1, _0806D0F4 @ =0x00001D47 + strh r1, [r0, #0x14] + str r5, [r0, #0x1c] + movs r1, #1 + strh r1, [r0, #0x1a] + pop {r4, r5, pc} + .align 2, 0 +_0806D0E8: .4byte gUnk_0200B650 +_0806D0EC: .4byte gUnk_02002F00 +_0806D0F0: .4byte gUnk_03000F50 +_0806D0F4: .4byte 0x00001D47 + + thumb_func_start sub_0806D0F8 +sub_0806D0F8: @ 0x0806D0F8 + push {lr} + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + bl sub_0805EB00 + cmp r0, #0 + beq _0806D10C + bl sub_0806D0B0 +_0806D10C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806D110 +sub_0806D110: @ 0x0806D110 + push {r4, r5, lr} + ldr r4, _0806D134 @ =gUnk_02002F00 + movs r0, #0x80 + lsls r0, r0, #7 + adds r5, r4, r0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806D138 + movs r0, #0x80 + lsls r0, r0, #4 + adds r4, r4, r0 + adds r5, #0x40 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806D138 + pop {r4, r5, pc} + .align 2, 0 +_0806D134: .4byte gUnk_02002F00 + + thumb_func_start sub_0806D138 +sub_0806D138: @ 0x0806D138 + push {r4, r5, r6, lr} + adds r3, r0, #0 + movs r4, #0 + ldr r2, _0806D15C @ =0x040000D4 + ldr r6, _0806D160 @ =0x80000020 + movs r5, #0x80 + lsls r5, r5, #1 +_0806D146: + str r3, [r2] + str r1, [r2, #4] + str r6, [r2, #8] + ldr r0, [r2, #8] + adds r4, #1 + adds r3, #0x40 + adds r1, r1, r5 + cmp r4, #0x1f + bls _0806D146 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806D15C: .4byte 0x040000D4 +_0806D160: .4byte 0x80000020 + + thumb_func_start sub_0806D164 +sub_0806D164: @ 0x0806D164 + push {r4, r5, r6, r7, lr} + ldr r5, _0806D1B8 @ =gUnk_03000BF0 + movs r1, #0xa + ldrsh r2, [r5, r1] + movs r3, #0x2e + ldrsh r1, [r0, r3] + subs r2, r2, r1 + adds r2, #0xa0 + ldr r4, _0806D1BC @ =gUnk_03000F50 + movs r3, #0xf + adds r1, r2, #0 + ands r1, r3 + strh r1, [r4, #0x16] + ldrh r1, [r5, #0xc] + ldrh r0, [r0, #0x32] + subs r1, r1, r0 + adds r1, #0xb0 + strh r1, [r4, #0x18] + ldr r3, _0806D1C0 @ =gUnk_02006F00 + ldr r0, _0806D1C4 @ =0xFFFFC000 + adds r6, r3, r0 + movs r5, #0x20 + lsrs r2, r2, #4 + lsls r2, r2, #2 + adds r3, r2, r3 + adds r7, r4, #0 + ldr r1, _0806D1C8 @ =0x040000D4 + ldr r4, _0806D1CC @ =0x80000020 + movs r2, #0x80 + lsls r2, r2, #1 +_0806D1A0: + str r3, [r1] + str r6, [r1, #4] + str r4, [r1, #8] + ldr r0, [r1, #8] + adds r3, r3, r2 + adds r6, #0x40 + subs r5, #1 + cmp r5, #0 + bne _0806D1A0 + movs r0, #1 + strh r0, [r7, #0x1a] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806D1B8: .4byte gUnk_03000BF0 +_0806D1BC: .4byte gUnk_03000F50 +_0806D1C0: .4byte gUnk_02006F00 +_0806D1C4: .4byte 0xFFFFC000 +_0806D1C8: .4byte 0x040000D4 +_0806D1CC: .4byte 0x80000020 + + thumb_func_start sub_0806D1D0 +sub_0806D1D0: @ 0x0806D1D0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + bne _0806D21A + bl sub_0806D00C + cmp r0, #0 + bne _0806D1E6 + bl sub_0805E780 +_0806D1E6: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r5, [r4, #0x1e] + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0806D21A: + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _0806D25A + cmp r0, #1 + ble _0806D228 + cmp r0, #2 + beq _0806D25E +_0806D228: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D24A + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x30 + strb r0, [r4, #0xe] + movs r0, #8 + strb r0, [r4, #0xf] + movs r0, #1 + strb r0, [r4, #0x1e] +_0806D24A: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0806D268 + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _0806D268 +_0806D25A: + strb r0, [r4, #0x1e] + b _0806D268 +_0806D25E: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0806D268: + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x2e] + strh r1, [r4, #0x2e] + ldrh r0, [r0, #0x32] + strh r0, [r4, #0x32] + pop {r4, r5, pc} + + thumb_func_start sub_0806D274 +sub_0806D274: @ 0x0806D274 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806D2CA + adds r0, r4, #0 + bl sub_0806D00C + cmp r0, #0 + bne _0806D28C + bl sub_0805E780 +_0806D28C: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #2 + strb r0, [r4, #0x1e] + movs r0, #8 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + movs r0, #0x4c + movs r1, #3 + movs r2, #0 + bl sub_0806ED50 + cmp r0, #0 + beq _0806D2CA + str r4, [r0, #0x54] +_0806D2CA: + ldrb r0, [r4, #0xd] + cmp r0, #4 + bhi _0806D2F4 + lsls r0, r0, #2 + ldr r1, _0806D2DC @ =_0806D2E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806D2DC: .4byte _0806D2E0 +_0806D2E0: @ jump table + .4byte _0806D2F4 @ case 0 + .4byte _0806D2F4 @ case 1 + .4byte _0806D31C @ case 2 + .4byte _0806D334 @ case 3 + .4byte _0806D338 @ case 4 +_0806D2F4: + ldr r0, _0806D318 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _0806D338 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D33C + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x1e] + movs r1, #1 + eors r0, r1 + b _0806D33A + .align 2, 0 +_0806D318: .4byte gUnk_02000050 +_0806D31C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D33C + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x1e] + movs r1, #1 + eors r0, r1 + b _0806D33A +_0806D334: + movs r0, #4 + b _0806D33A +_0806D338: + movs r0, #2 +_0806D33A: + strb r0, [r4, #0x1e] +_0806D33C: + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x2e] + strh r1, [r4, #0x2e] + ldrh r0, [r0, #0x32] + strh r0, [r4, #0x32] + pop {r4, pc} + + thumb_func_start sub_0806D348 +sub_0806D348: @ 0x0806D348 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806D39A + adds r0, r4, #0 + bl sub_0806D00C + cmp r0, #0 + bne _0806D360 + bl sub_0805E780 +_0806D360: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #5 + strb r0, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0806D39A: + ldr r0, [r4, #0x54] + ldrb r0, [r0, #0x1e] + cmp r0, #4 + bne _0806D3AA + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + b _0806D3B2 +_0806D3AA: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 +_0806D3B2: + strb r0, [r4, #0x18] + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x2e] + strh r1, [r4, #0x2e] + ldrh r0, [r0, #0x32] + strh r0, [r4, #0x32] + pop {r4, pc} + + thumb_func_start sub_0806D3C0 +sub_0806D3C0: @ 0x0806D3C0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806D3F4 + adds r0, r4, #0 + bl sub_0806D00C + cmp r0, #0 + bne _0806D3D8 + bl sub_0805E780 +_0806D3D8: + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0806D3F0 @ =gUnk_080FD180 + str r0, [r4, #0x48] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 + b _0806D408 + .align 2, 0 +_0806D3F0: .4byte gUnk_080FD180 +_0806D3F4: + ldr r0, [r4, #0x50] + ldrh r0, [r0, #0x2e] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 +_0806D408: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806D40C +sub_0806D40C: @ 0x0806D40C + push {lr} + ldrb r1, [r0, #0x18] + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0, #0x18] + bl sub_0806D41C + pop {pc} + + thumb_func_start sub_0806D41C +sub_0806D41C: @ 0x0806D41C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806D45E + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #6 + strb r0, [r4, #0x1e] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806D4C0 + adds r0, r4, #0 + movs r1, #1 + bl sub_0806D4C0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0806D4C0 + adds r0, r4, #0 + movs r1, #3 + bl sub_0806D4C0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + b _0806D46C +_0806D45E: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 +_0806D46C: + ldr r0, _0806D4A8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0806D4BE + movs r1, #0x2e + ldrsh r0, [r4, r1] + subs r0, #0x20 + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r2, #0x40 + movs r3, #0x40 + bl sub_0806FBFC + cmp r0, #0 + beq _0806D4AC + adds r2, r4, #0 + adds r2, #0x63 + ldrb r3, [r2] + movs r1, #0 + ldrsb r1, [r2, r1] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0806D4BE + subs r0, r3, #1 + strb r0, [r2] + b _0806D4BE + .align 2, 0 +_0806D4A8: .4byte gUnk_030010A0 +_0806D4AC: + adds r1, r4, #0 + adds r1, #0x63 + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bge _0806D4BE + adds r0, r2, #1 + strb r0, [r1] +_0806D4BE: + pop {r4, pc} + + thumb_func_start sub_0806D4C0 +sub_0806D4C0: @ 0x0806D4C0 + push {r4, r5, lr} + adds r5, r0, #0 + adds r1, #6 + movs r0, #0x4c + movs r2, #0 + bl sub_0806ED50 + adds r4, r0, #0 + cmp r4, #0 + beq _0806D4EE + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0806D4EE: + pop {r4, r5, pc} + + thumb_func_start sub_0806D4F0 +sub_0806D4F0: @ 0x0806D4F0 + push {lr} + movs r1, #0 + bl sub_0806D520 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806D4FC +sub_0806D4FC: @ 0x0806D4FC + push {lr} + movs r1, #1 + bl sub_0806D520 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806D508 +sub_0806D508: @ 0x0806D508 + push {lr} + movs r1, #2 + bl sub_0806D520 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806D514 +sub_0806D514: @ 0x0806D514 + push {lr} + movs r1, #3 + bl sub_0806D520 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806D520 +sub_0806D520: @ 0x0806D520 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806D540 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0806D5B0 @ =gUnk_08114100 + adds r0, r3, r0 + ldrb r0, [r0] + adds r0, #6 + strb r0, [r4, #0xf] + strb r0, [r4, #0x1e] + movs r0, #8 + strb r0, [r4, #0xe] +_0806D540: + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x2e] + strh r1, [r4, #0x2e] + ldrh r1, [r0, #0x32] + strh r1, [r4, #0x32] + adds r0, #0x62 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + ldr r0, [r4, #0x50] + adds r0, #0x63 + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] + ldr r0, [r4, #0x50] + ldrb r1, [r0, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806D590 + movs r1, #0x2e + ldrsh r0, [r4, r1] + lsls r1, r3, #4 + subs r0, r0, r1 + adds r0, #0xc + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r2, #0x18 + movs r3, #0x40 + bl sub_0806FBFC + cmp r0, #0 + beq _0806D5B4 +_0806D590: + ldrb r1, [r4, #0x1e] + ldrb r0, [r4, #0xf] + adds r0, #2 + cmp r1, r0 + bge _0806D5D0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D5D0 + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x1e] + adds r0, #1 + b _0806D5CE + .align 2, 0 +_0806D5B0: .4byte gUnk_08114100 +_0806D5B4: + ldrb r1, [r4, #0x1e] + ldrb r0, [r4, #0xf] + cmp r1, r0 + bls _0806D5D0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806D5D0 + movs r0, #8 + strb r0, [r4, #0xe] + subs r0, r1, #1 +_0806D5CE: + strb r0, [r4, #0x1e] +_0806D5D0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806D5D4 +sub_0806D5D4: @ 0x0806D5D4 + push {lr} + bl sub_08053500 + movs r0, #0xd + bl sub_0805436C + adds r1, r0, #0 + cmp r1, #2 + beq _0806D5F0 + ldr r0, _0806D5FC @ =gUnk_02002A40 + adds r0, #0xb4 + adds r0, r1, r0 + movs r1, #0 + strb r1, [r0] +_0806D5F0: + movs r0, #0xd + movs r1, #0 + bl sub_0807CAA0 + pop {pc} + .align 2, 0 +_0806D5FC: .4byte gUnk_02002A40 + + thumb_func_start sub_0806D600 +sub_0806D600: @ 0x0806D600 + push {lr} + movs r2, #0 + ldr r0, _0806D618 @ =gUnk_02002A40 + ldr r3, _0806D61C @ =0x00000494 + adds r0, r0, r3 + ldr r0, [r0] + cmp r0, #0 + bne _0806D612 + movs r2, #1 +_0806D612: + str r2, [r1, #0x14] + pop {pc} + .align 2, 0 +_0806D618: .4byte gUnk_02002A40 +_0806D61C: .4byte 0x00000494 + + thumb_func_start sub_0806D620 +sub_0806D620: @ 0x0806D620 + push {lr} + movs r0, #0xd + movs r1, #0 + bl sub_0807CAA0 + movs r0, #0xe + movs r1, #0 + movs r2, #0 + bl sub_080A7C18 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806D638 +sub_0806D638: @ 0x0806D638 + ldrh r1, [r0, #0x32] + subs r1, #0x20 + strh r1, [r0, #0x32] + bx lr + + thumb_func_start sub_0806D640 +sub_0806D640: @ 0x0806D640 + ldrh r1, [r0, #0x32] + adds r1, #0x20 + movs r2, #0 + strh r1, [r0, #0x32] + adds r0, #0x39 + strb r2, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_0806D650 +sub_0806D650: @ 0x0806D650 + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_0806D658 +sub_0806D658: @ 0x0806D658 + ldr r1, [r1, #4] + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_0806D660 +sub_0806D660: @ 0x0806D660 + ldrb r1, [r0, #0x1b] + movs r2, #0xc0 + orrs r1, r2 + strb r1, [r0, #0x1b] + bx lr + .align 2, 0 + + thumb_func_start sub_0806D66C +sub_0806D66C: @ 0x0806D66C + ldrb r2, [r0, #0x1b] + movs r1, #0x3f + ands r1, r2 + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #0x1b] + bx lr + .align 2, 0 + + thumb_func_start sub_0806D67C +sub_0806D67C: @ 0x0806D67C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _0806D6CC @ =gUnk_08114104 + movs r0, #0 + ldrsb r0, [r4, r0] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0806D6CA + adds r6, r1, #0 +_0806D690: + movs r1, #0 + ldrsb r1, [r4, r1] + adds r0, r5, #0 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0806D6C0 + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + movs r0, #2 + ldrsb r0, [r4, r0] + ldrh r2, [r1, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x32] + ldrb r0, [r4, #3] + strb r0, [r1, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #0x24] +_0806D6C0: + adds r4, #4 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, r6 + bne _0806D690 +_0806D6CA: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806D6CC: .4byte gUnk_08114104 + + thumb_func_start sub_0806D6D0 +sub_0806D6D0: @ 0x0806D6D0 + push {r4, lr} + sub sp, #4 + movs r4, #0 + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #2 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0806D6EE + movs r0, #2 + strb r0, [r1, #0xd] +_0806D6EE: + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #1 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0806D706 + movs r0, #1 + strb r0, [r1, #0xd] +_0806D706: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806D70C +sub_0806D70C: @ 0x0806D70C + push {r4, lr} + sub sp, #4 + movs r4, #0 + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #2 + bl sub_0805EB2C + adds r2, r0, #0 + cmp r2, #0 + beq _0806D728 + strb r4, [r2, #0xd] +_0806D728: + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #1 + bl sub_0805EB2C + adds r2, r0, #0 + cmp r2, #0 + beq _0806D746 + strb r4, [r2, #0xd] + ldrb r0, [r2, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #0x18] +_0806D746: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806D74C +sub_0806D74C: @ 0x0806D74C + push {r4, lr} + sub sp, #4 + movs r4, #0 + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #2 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0806D76A + movs r0, #3 + strb r0, [r1, #0xd] +_0806D76A: + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #1 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0806D782 + movs r0, #2 + strb r0, [r1, #0xd] +_0806D782: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806D788 +sub_0806D788: @ 0x0806D788 + push {r4, lr} + sub sp, #4 + movs r4, #0 + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #2 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0806D7A6 + movs r0, #4 + strb r0, [r1, #0xd] +_0806D7A6: + str r4, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #1 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0806D7BE + movs r0, #1 + strb r0, [r1, #0xd] +_0806D7BE: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806D7C4 +sub_0806D7C4: @ 0x0806D7C4 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _0806D800 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + movs r2, #0 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + subs r0, #0x18 + strh r0, [r4, #0x32] + str r2, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #2 + bl sub_0805EB2C + cmp r0, #0 + beq _0806D7FC + movs r1, #0x2e + ldrsh r2, [r0, r1] + movs r1, #0x32 + ldrsh r3, [r0, r1] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807DEDC +_0806D7FC: + add sp, #4 + pop {r4, r5, pc} + .align 2, 0 +_0806D800: .4byte gLinkEntity + + thumb_func_start sub_0806D804 +sub_0806D804: @ 0x0806D804 + push {r4, r5, lr} + sub sp, #4 + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [sp] + movs r0, #7 + movs r1, #0x4c + movs r2, #7 + movs r3, #2 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0806D83A + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + subs r0, #0x10 + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] +_0806D83A: + ldr r0, _0806D854 @ =gLinkEntity + movs r1, #0x2e + ldrsh r2, [r0, r1] + movs r1, #0x32 + ldrsh r3, [r0, r1] + subs r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807DEDC + add sp, #4 + pop {r4, r5, pc} + .align 2, 0 +_0806D854: .4byte gLinkEntity + + thumb_func_start sub_0806D858 +sub_0806D858: @ 0x0806D858 + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #8 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_0806D86C +sub_0806D86C: @ 0x0806D86C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806D888 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 +_0806D888: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806D8A0 +sub_0806D8A0: @ 0x0806D8A0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r1, #0 + movs r2, #0 + movs r0, #8 + strb r0, [r3, #0x19] + ldr r0, [r3, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r3, #8] + str r2, [r3, #0x14] + movs r2, #0x10 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _0806D8C2 + rsbs r2, r2, #0 +_0806D8C2: + ldr r1, _0806D900 @ =gLinkEntity + movs r5, #0x2e + ldrsh r0, [r1, r5] + adds r2, r2, r0 + movs r0, #0x32 + ldrsh r1, [r1, r0] + adds r1, #2 + strh r2, [r3, #0x1e] + strh r1, [r3, #0x22] + movs r3, #0x2e + ldrsh r0, [r4, r3] + subs r2, r2, r0 + movs r5, #0x32 + ldrsh r0, [r4, r5] + subs r1, r1, r0 + adds r0, r2, #0 + bl sub_080045DA + strb r0, [r4, #0x15] + ldrb r2, [r4, #0x14] + movs r1, #0x80 + ands r1, r2 + ldr r2, _0806D904 @ =gUnk_08114134 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + adds r0, r0, r2 + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r4, #0x14] + pop {r4, r5, pc} + .align 2, 0 +_0806D900: .4byte gLinkEntity +_0806D904: .4byte gUnk_08114134 + + thumb_func_start sub_0806D908 +sub_0806D908: @ 0x0806D908 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldr r3, _0806D93C @ =gLinkEntity + movs r5, #0x2e + ldrsh r2, [r3, r5] + movs r5, #0x32 + ldrsh r3, [r3, r5] + bl sub_080045D4 + strb r0, [r4, #0x15] + ldrb r2, [r4, #0x14] + movs r1, #0x80 + ands r1, r2 + ldr r2, _0806D940 @ =gUnk_08114144 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + adds r0, r0, r2 + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r4, #0x14] + pop {r4, r5, pc} + .align 2, 0 +_0806D93C: .4byte gLinkEntity +_0806D940: .4byte gUnk_08114144 + + thumb_func_start sub_0806D944 +sub_0806D944: @ 0x0806D944 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0x18] + movs r3, #0x41 + rsbs r3, r3, #0 + ands r3, r0 + strb r3, [r2, #0x18] + ldr r0, _0806D968 @ =gLinkEntity + ldr r1, [r2, #0x2c] + ldr r0, [r0, #0x2c] + cmp r1, r0 + bgt _0806D964 + movs r1, #0x40 + adds r0, r3, #0 + orrs r0, r1 + strb r0, [r2, #0x18] +_0806D964: + pop {pc} + .align 2, 0 +_0806D968: .4byte gLinkEntity + + thumb_func_start sub_0806D96C +sub_0806D96C: @ 0x0806D96C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x42 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0806D99C + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r3] + ldr r3, _0806D9A0 @ =0xFFE80000 + adds r0, r4, #0 + adds r1, r2, #0 + movs r2, #0 + bl sub_0806FA48 +_0806D99C: + pop {r4, pc} + .align 2, 0 +_0806D9A0: .4byte 0xFFE80000 + + thumb_func_start sub_0806D9A4 +sub_0806D9A4: @ 0x0806D9A4 + push {lr} + ldr r1, _0806D9BC @ =gLinkEntity + ldr r2, [r0, #0x2c] + ldr r0, [r1, #0x2c] + adds r3, r1, #0 + cmp r2, r0 + bgt _0806D9C0 + ldrb r1, [r3, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _0806D9C6 + .align 2, 0 +_0806D9BC: .4byte gLinkEntity +_0806D9C0: + ldrb r0, [r3, #0x18] + movs r1, #0x40 + orrs r0, r1 +_0806D9C6: + strb r0, [r3, #0x18] + movs r0, #4 + strb r0, [r3, #0x14] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806D9D0 +sub_0806D9D0: @ 0x0806D9D0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806D9F8 + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r2, #0x18] + ldr r0, _0806D9F4 @ =gUnk_080FD170 + str r0, [r2, #0x48] + adds r0, r2, #0 + bl sub_0807DD50 + b _0806DA00 + .align 2, 0 +_0806D9F4: .4byte gUnk_080FD170 +_0806D9F8: + adds r0, r2, #0 + movs r1, #0 + bl sub_0807DD94 +_0806DA00: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806DA04 +sub_0806DA04: @ 0x0806DA04 + push {lr} + ldr r3, [r1, #4] + lsls r3, r3, #3 + ldr r1, _0806DA18 @ =gUnk_0811415C + adds r3, r3, r1 + ldrb r2, [r3, #4] + movs r1, #1 + bl sub_08078850 + pop {pc} + .align 2, 0 +_0806DA18: .4byte gUnk_0811415C + + thumb_func_start sub_0806DA1C +sub_0806DA1C: @ 0x0806DA1C + push {lr} + ldr r3, _0806DA34 @ =gUnk_081141A4 + ldr r2, [r1, #4] + lsls r0, r2, #2 + adds r0, r0, r3 + ldr r0, [r0] + ldr r1, _0806DA38 @ =gUnk_081141E4 + adds r2, r2, r1 + ldrb r1, [r2] + bl sub_0808091C + pop {pc} + .align 2, 0 +_0806DA34: .4byte gUnk_081141A4 +_0806DA38: .4byte gUnk_081141E4 + + thumb_func_start sub_0806DA3C +sub_0806DA3C: @ 0x0806DA3C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + subs r0, #1 + cmp r0, #0xa + bhi _0806DA84 + lsls r0, r0, #2 + ldr r1, _0806DA54 @ =_0806DA58 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806DA54: .4byte _0806DA58 +_0806DA58: @ jump table + .4byte _0806DA88 @ case 0 + .4byte _0806DA8C @ case 1 + .4byte _0806DA90 @ case 2 + .4byte _0806DA94 @ case 3 + .4byte _0806DA98 @ case 4 + .4byte _0806DAA0 @ case 5 + .4byte _0806DAA0 @ case 6 + .4byte _0806DAA0 @ case 7 + .4byte _0806DAA0 @ case 8 + .4byte _0806DAA0 @ case 9 + .4byte _0806DA9C @ case 10 +_0806DA84: + movs r0, #0 + b _0806DAA6 +_0806DA88: + movs r0, #1 + b _0806DAA6 +_0806DA8C: + movs r0, #2 + b _0806DAA6 +_0806DA90: + movs r0, #3 + b _0806DAA6 +_0806DA94: + movs r0, #4 + b _0806DAA6 +_0806DA98: + movs r0, #5 + b _0806DAA6 +_0806DA9C: + movs r0, #9 + b _0806DAA6 +_0806DAA0: + adds r0, r2, #0 + bl sub_0801E99C +_0806DAA6: + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + pop {pc} + + thumb_func_start sub_0806DAAC +sub_0806DAAC: @ 0x0806DAAC + push {r4, lr} + adds r4, r1, #0 + bl sub_0806DA3C + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + bl sub_0801E7F4 + str r0, [r4, #0x14] + ldr r2, _0806DACC @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0806DACC: .4byte gUnk_02033280 + + thumb_func_start sub_0806DAD0 +sub_0806DAD0: @ 0x0806DAD0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806DA3C + adds r1, r0, #0 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_08078790 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806DAE8 +sub_0806DAE8: @ 0x0806DAE8 + push {lr} + ldrb r0, [r0, #0xa] + subs r0, #1 + cmp r0, #4 + bhi _0806DB3A + lsls r0, r0, #2 + ldr r1, _0806DAFC @ =_0806DB00 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806DAFC: .4byte _0806DB00 +_0806DB00: @ jump table + .4byte _0806DB14 @ case 0 + .4byte _0806DB1C @ case 1 + .4byte _0806DB24 @ case 2 + .4byte _0806DB2C @ case 3 + .4byte _0806DB34 @ case 4 +_0806DB14: + movs r0, #0xee + bl sub_0807CCB4 + b _0806DB3A +_0806DB1C: + movs r0, #0xef + bl sub_0807CCB4 + b _0806DB3A +_0806DB24: + movs r0, #0xf0 + bl sub_0807CCB4 + b _0806DB3A +_0806DB2C: + movs r0, #0xf1 + bl sub_0807CCB4 + b _0806DB3A +_0806DB34: + movs r0, #0xf2 + bl sub_0807CCB4 +_0806DB3A: + movs r0, #0xcd + bl sub_080A3268 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806DB44 +sub_0806DB44: @ 0x0806DB44 + push {r4, lr} + adds r4, r1, #0 + movs r0, #0 + str r0, [r4, #0x14] + movs r0, #0xee + bl sub_0807CBD0 + cmp r0, #0 + beq _0806DB82 + movs r0, #0xef + bl sub_0807CBD0 + cmp r0, #0 + beq _0806DB82 + movs r0, #0xf0 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806DB82 + movs r0, #0xf1 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806DB82 + movs r0, #0xf2 + bl sub_0807CBD0 + cmp r0, #0 + beq _0806DB82 + movs r0, #1 + str r0, [r4, #0x14] +_0806DB82: + pop {r4, pc} + + thumb_func_start sub_0806DB84 +sub_0806DB84: @ 0x0806DB84 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0806DBE4 @ =gUnk_08114154 + str r0, [r5, #0x48] + movs r0, #0x3e + movs r1, #4 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0806DBB6 + ldr r2, _0806DBE8 @ =0xFFF80000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #0 + bl sub_0806FA48 + ldr r1, _0806DBEC @ =gUnk_08016030 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_0806DBB6: + movs r0, #0x3e + movs r1, #5 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0806DBE2 + movs r2, #0x80 + lsls r2, r2, #0xc + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #0 + bl sub_0806FA48 + ldr r1, _0806DBF0 @ =gUnk_0801606C + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_0806DBE2: + pop {r4, r5, pc} + .align 2, 0 +_0806DBE4: .4byte gUnk_08114154 +_0806DBE8: .4byte 0xFFF80000 +_0806DBEC: .4byte gUnk_08016030 +_0806DBF0: .4byte gUnk_0801606C + + thumb_func_start sub_0806DBF4 +sub_0806DBF4: @ 0x0806DBF4 + push {r4, lr} + adds r4, r0, #0 + cmp r4, #1 + blo _0806DC36 + cmp r4, #4 + bls _0806DC04 + cmp r4, #6 + bne _0806DC36 +_0806DC04: + movs r4, #1 + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _0806DC12 + movs r4, #2 +_0806DC12: + movs r0, #3 + bl sub_0807CA84 + cmp r0, #0 + beq _0806DC1E + movs r4, #3 +_0806DC1E: + movs r0, #4 + bl sub_0807CA84 + cmp r0, #0 + beq _0806DC2A + movs r4, #4 +_0806DC2A: + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + beq _0806DC36 + movs r4, #6 +_0806DC36: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806DC3C +sub_0806DC3C: @ 0x0806DC3C + ldr r2, _0806DC54 @ =gUnk_02002A40 + adds r1, r2, #0 + adds r1, #0xb4 + ldrb r3, [r1] + adds r1, r0, #0 + adds r1, #0x68 + strb r3, [r1] + adds r2, #0xb5 + ldrb r1, [r2] + adds r0, #0x69 + strb r1, [r0] + bx lr + .align 2, 0 +_0806DC54: .4byte gUnk_02002A40 + + thumb_func_start sub_0806DC58 +sub_0806DC58: @ 0x0806DC58 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x68 + ldrb r0, [r0] + bl sub_0806DBF4 + movs r1, #0 + bl sub_08054414 + adds r4, #0x69 + ldrb r0, [r4] + bl sub_0806DBF4 + movs r1, #1 + bl sub_08054414 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806DC7C +sub_0806DC7C: @ 0x0806DC7C + push {r4, lr} + ldr r4, _0806DC84 @ =gUnk_081141F4 + b _0806DC94 + .align 2, 0 +_0806DC84: .4byte gUnk_081141F4 +_0806DC88: + ldrh r1, [r4] + adds r4, #2 + ldr r0, _0806DC9C @ =0x00004072 + movs r2, #1 + bl sub_0807B314 +_0806DC94: + ldrh r0, [r4] + cmp r0, #0 + bne _0806DC88 + pop {r4, pc} + .align 2, 0 +_0806DC9C: .4byte 0x00004072 + + thumb_func_start sub_0806DCA0 +sub_0806DCA0: @ 0x0806DCA0 + push {r4, lr} + ldr r4, _0806DCA8 @ =gUnk_081141F4 + b _0806DCB6 + .align 2, 0 +_0806DCA8: .4byte gUnk_081141F4 +_0806DCAC: + ldrh r0, [r4] + adds r4, #2 + movs r1, #1 + bl sub_0807BA8C +_0806DCB6: + ldrh r0, [r4] + cmp r0, #0 + bne _0806DCAC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806DCC0 +sub_0806DCC0: @ 0x0806DCC0 + ldr r0, _0806DCD0 @ =gUnk_030010A0 + movs r1, #0xf9 + lsls r1, r1, #3 + strh r1, [r0, #0x20] + movs r1, #0xf8 + strh r1, [r0, #0x22] + bx lr + .align 2, 0 +_0806DCD0: .4byte gUnk_030010A0 + + thumb_func_start sub_0806DCD4 +sub_0806DCD4: @ 0x0806DCD4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806DD40 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + subs r0, #1 + cmp r0, #0xa + bhi _0806DD40 + lsls r0, r0, #2 + ldr r1, _0806DCF4 @ =_0806DCF8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806DCF4: .4byte _0806DCF8 +_0806DCF8: @ jump table + .4byte _0806DD24 @ case 0 + .4byte _0806DD24 @ case 1 + .4byte _0806DD24 @ case 2 + .4byte _0806DD24 @ case 3 + .4byte _0806DD24 @ case 4 + .4byte _0806DD2C @ case 5 + .4byte _0806DD2C @ case 6 + .4byte _0806DD2C @ case 7 + .4byte _0806DD2C @ case 8 + .4byte _0806DD2C @ case 9 + .4byte _0806DD34 @ case 10 +_0806DD24: + adds r0, r4, #0 + bl sub_0809623C + b _0806DD40 +_0806DD2C: + adds r0, r4, #0 + bl sub_08096260 + b _0806DD40 +_0806DD34: + adds r0, r4, #0 + movs r1, #0 + bl sub_0806DB84 + movs r0, #0 + str r0, [r4, #0x48] +_0806DD40: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806DD44 +sub_0806DD44: @ 0x0806DD44 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806DD5A + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_080042AC +_0806DD5A: + adds r0, r4, #0 + bl sub_080042B8 + adds r4, #0x59 + ldrb r0, [r4] + cmp r0, #0xfe + bne _0806DD74 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x14 + strb r0, [r4] +_0806DD74: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806DD78 +sub_0806DD78: @ 0x0806DD78 + push {lr} + ldr r2, _0806DD8C @ =gUnk_0811423C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0806DD8C: .4byte gUnk_0811423C + + thumb_func_start sub_0806DD90 +sub_0806DD90: @ 0x0806DD90 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + movs r0, #1 + strb r0, [r7, #0xc] + movs r0, #0x3b + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + movs r0, #0x3c + bl GetProgressFlag + cmp r0, #0 + beq _0806DDB8 + movs r4, #2 +_0806DDB8: + movs r0, #0x3d + bl GetProgressFlag + cmp r0, #0 + beq _0806DDC4 + movs r4, #3 +_0806DDC4: + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_08004260 + movs r0, #0x2e + ldrsh r5, [r7, r0] + movs r1, #0x32 + ldrsh r4, [r7, r1] + ldr r2, _0806DEC0 @ =0x00004072 + mov sl, r2 + ldr r0, _0806DEC4 @ =gUnk_03000BF0 + mov r8, r0 + ldrh r1, [r0, #6] + adds r1, #0x18 + subs r1, r5, r1 + lsrs r1, r1, #4 + movs r6, #0x3f + ands r1, r6 + ldrh r0, [r0, #8] + adds r0, #0x10 + subs r0, r4, r0 + lsrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + adds r7, #0x38 + mov sb, r7 + mov r0, sb + ldrb r2, [r0] + mov r0, sl + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2, #6] + adds r1, #0x18 + subs r1, r5, r1 + lsrs r1, r1, #4 + ands r1, r6 + ldrh r0, [r2, #8] + subs r0, r4, r0 + lsrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, sb + ldrb r2, [r0] + mov r0, sl + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2, #6] + adds r1, #0x18 + subs r1, r5, r1 + lsrs r1, r1, #4 + ands r1, r6 + ldrh r0, [r2, #8] + subs r0, #0x10 + subs r0, r4, r0 + lsrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, sb + ldrb r2, [r0] + mov r0, sl + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2, #6] + subs r1, #0x18 + subs r1, r5, r1 + lsrs r1, r1, #4 + ands r1, r6 + ldrh r0, [r2, #8] + adds r0, #0x10 + subs r0, r4, r0 + lsrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, sb + ldrb r2, [r0] + mov r0, sl + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2, #6] + subs r1, #0x18 + subs r1, r5, r1 + lsrs r1, r1, #4 + ands r1, r6 + ldrh r0, [r2, #8] + subs r0, r4, r0 + lsrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, sb + ldrb r2, [r0] + mov r0, sl + bl sub_0800015E + mov r1, r8 + ldrh r0, [r1, #6] + subs r0, #0x18 + subs r5, r5, r0 + lsrs r5, r5, #4 + ands r5, r6 + ldrh r0, [r1, #8] + subs r0, #0x10 + subs r4, r4, r0 + lsrs r4, r4, #4 + ands r4, r6 + lsls r4, r4, #6 + orrs r5, r4 + mov r0, sb + ldrb r2, [r0] + mov r0, sl + adds r1, r5, #0 + bl sub_0800015E + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806DEC0: .4byte 0x00004072 +_0806DEC4: .4byte gUnk_03000BF0 + + thumb_func_start sub_0806DEC8 +sub_0806DEC8: @ 0x0806DEC8 + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0806DED0 +sub_0806DED0: @ 0x0806DED0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806DEF8 @ =gUnk_081142BC + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0806DEF4 + ldr r2, _0806DEFC @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1a] +_0806DEF4: + pop {r4, pc} + .align 2, 0 +_0806DEF8: .4byte gUnk_081142BC +_0806DEFC: .4byte gUnk_03003F80 + + thumb_func_start sub_0806DF00 +sub_0806DF00: @ 0x0806DF00 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xa] + cmp r5, #0 + bne _0806DF5C + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x51 + movs r1, #1 + movs r2, #0 + bl sub_0806ED50 + str r0, [r4, #0x68] + str r4, [r0, #0x50] + movs r0, #0x51 + movs r1, #1 + movs r2, #1 + bl sub_0806ED50 + str r0, [r4, #0x6c] + str r4, [r0, #0x50] + movs r0, #0x51 + movs r1, #1 + movs r2, #2 + bl sub_0806ED50 + str r0, [r4, #0x70] + str r4, [r0, #0x50] + adds r0, r4, #0 + adds r0, #0x74 + strh r5, [r0] + adds r0, #2 + movs r1, #0xa + strh r1, [r0] + ldr r0, _0806DF58 @ =gUnk_030010A0 + strh r1, [r0, #6] + adds r0, r4, #0 + bl sub_0806E014 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806DF6E + .align 2, 0 +_0806DF58: .4byte gUnk_030010A0 +_0806DF5C: + ldr r0, _0806DF70 @ =gUnk_080FD150 + str r0, [r4, #0x48] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0806E0DC +_0806DF6E: + pop {r4, r5, pc} + .align 2, 0 +_0806DF70: .4byte gUnk_080FD150 + + thumb_func_start sub_0806DF74 +sub_0806DF74: @ 0x0806DF74 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DD94 + ldrb r0, [r4, #0xe] + cmp r0, #0xff + beq _0806DFB0 + adds r0, r4, #0 + adds r0, #0x44 + ldrb r0, [r0] + cmp r0, #0 + beq _0806DF96 + ldr r1, [r4, #0x70] + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] +_0806DF96: + ldr r1, [r4, #0x68] + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] + ldr r1, [r4, #0x6c] + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] + movs r0, #0xff + strb r0, [r4, #0xe] + movs r0, #0 + bl sub_0807CD10 +_0806DFB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806DFB4 +sub_0806DFB4: @ 0x0806DFB4 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x39 + movs r2, #0 + ldrsb r2, [r1, r2] + cmp r2, #0 + beq _0806DFD6 + movs r0, #0 + strb r0, [r1] + ldr r1, [r4, #0x50] + ldrb r0, [r4, #0xb] + strb r0, [r1, #0xe] + ldr r1, [r4, #0x50] + ldrb r0, [r4, #0xf] + strb r0, [r1, #0xb] + b _0806E00C +_0806DFD6: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0806E00C + strb r2, [r4, #0xe] + ldrb r2, [r4, #0xf] + movs r0, #0x35 + movs r1, #2 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0806DFF8 + str r4, [r1, #0x50] + str r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 +_0806DFF8: + adds r0, r4, #0 + bl sub_080788E0 + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + movs r0, #0x74 + movs r2, #2 + bl sub_0807B7D8 +_0806E00C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_111 +nullsub_111: @ 0x0806E010 + bx lr + .align 2, 0 + + thumb_func_start sub_0806E014 +sub_0806E014: @ 0x0806E014 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl sub_08000E50 + movs r1, #0x70 + ands r1, r0 + lsrs r4, r1, #4 + movs r0, #0xff + strb r0, [r5, #0xb] + movs r0, #1 + rsbs r0, r0, #0 + adds r7, r0, #0 + strb r0, [r5, #0xe] + movs r0, #0x93 + bl sub_0807CBD0 + adds r1, r0, #0 + cmp r1, #0 + bne _0806E088 + adds r0, r5, #0 + adds r0, #0x44 + strb r1, [r0] + lsls r1, r4, #1 + ldr r0, _0806E084 @ =gUnk_081142CC + adds r6, r1, r0 + ldr r1, [r5, #0x68] + ldrb r0, [r6] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x68] + movs r4, #0x90 + lsls r4, r4, #0xf + adds r0, r5, #0 + adds r2, r4, #0 + adds r3, r4, #0 + bl sub_0806FA48 + ldr r1, [r5, #0x6c] + ldrb r0, [r6, #1] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x6c] + movs r2, #0xd0 + lsls r2, r2, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl sub_0806FA48 + ldr r1, [r5, #0x70] + ldrb r0, [r1, #0xf] + orrs r0, r7 + strb r0, [r1, #0xf] + ldr r1, [r5, #0x70] + adds r0, r5, #0 + bl sub_0806FA24 + b _0806E0D6 + .align 2, 0 +_0806E084: .4byte gUnk_081142CC +_0806E088: + adds r1, r5, #0 + adds r1, #0x44 + movs r0, #1 + strb r0, [r1] + lsls r1, r4, #2 + ldr r0, _0806E0D8 @ =gUnk_081142DC + adds r6, r1, r0 + ldr r1, [r5, #0x68] + ldrb r0, [r6] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x68] + movs r2, #0xe0 + lsls r2, r2, #0xe + movs r4, #0x90 + lsls r4, r4, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl sub_0806FA48 + ldr r1, [r5, #0x6c] + ldrb r0, [r6, #1] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x6c] + movs r2, #0xb0 + lsls r2, r2, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl sub_0806FA48 + ldr r1, [r5, #0x70] + ldrb r0, [r6, #2] + strb r0, [r1, #0xf] + ldr r1, [r5, #0x70] + movs r2, #0xf0 + lsls r2, r2, #0xf + adds r0, r5, #0 + adds r3, r4, #0 + bl sub_0806FA48 +_0806E0D6: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806E0D8: .4byte gUnk_081142DC + + thumb_func_start sub_0806E0DC +sub_0806E0DC: @ 0x0806E0DC + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r6, #0 + strb r6, [r4, #0xe] + ldrb r0, [r4, #0xf] + cmp r0, #0xff + beq _0806E138 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0806E134 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x76 + strh r1, [r5] + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _0806E120 + bl sub_0805E7BC + str r6, [r4, #0x54] +_0806E120: + adds r0, r4, #0 + bl sub_08078828 + ldrh r1, [r5] + movs r0, #0x73 + movs r2, #2 + bl sub_0807B7D8 + b _0806E13C + .align 2, 0 +_0806E134: .4byte gUnk_03000BF0 +_0806E138: + movs r0, #3 + strb r0, [r4, #0xc] +_0806E13C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806E140 +sub_0806E140: @ 0x0806E140 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r1, #0 + ldrb r1, [r3, #0xb] + cmp r1, #0 + beq _0806E1AC + movs r0, #1 + str r0, [r5, #0x14] + adds r1, r3, #0 + adds r1, #0x74 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + adds r1, #2 + ldrh r2, [r1] + adds r0, r3, #0 + adds r0, #0x44 + ldrb r0, [r0] + adds r4, r1, #0 + cmp r0, #0 + bne _0806E16E + lsls r0, r2, #1 + b _0806E172 +_0806E16E: + lsls r0, r2, #1 + adds r0, r0, r2 +_0806E172: + strh r0, [r4] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _0806E18C @ =0x000003E7 + cmp r0, r1 + bls _0806E194 + strh r1, [r4] + movs r0, #0 + str r0, [r5, #0x14] + ldr r0, _0806E190 @ =0x0000421B + bl sub_08056378 + b _0806E1C0 + .align 2, 0 +_0806E18C: .4byte 0x000003E7 +_0806E190: .4byte 0x0000421B +_0806E194: + ldr r0, _0806E1A4 @ =0x00004218 + bl sub_08056378 + ldr r1, _0806E1A8 @ =gUnk_02000050 + ldrh r0, [r4] + str r0, [r1, #0x10] + b _0806E1C0 + .align 2, 0 +_0806E1A4: .4byte 0x00004218 +_0806E1A8: .4byte gUnk_02000050 +_0806E1AC: + str r1, [r5, #0x14] + adds r0, r3, #0 + adds r0, #0x74 + strh r1, [r0] + adds r4, r3, #0 + adds r4, #0x76 + strh r1, [r4] + ldr r0, _0806E1D4 @ =0x0000421C + bl sub_08056378 +_0806E1C0: + ldr r1, _0806E1D8 @ =gUnk_030010A0 + ldrh r0, [r4] + strh r0, [r1, #6] + ldr r2, _0806E1DC @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, pc} + .align 2, 0 +_0806E1D4: .4byte 0x0000421C +_0806E1D8: .4byte gUnk_030010A0 +_0806E1DC: .4byte gUnk_02033280 + + thumb_func_start sub_0806E1E0 +sub_0806E1E0: @ 0x0806E1E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806E014 + ldr r0, [r4, #0x68] + bl sub_0806E0DC + ldr r0, [r4, #0x6c] + bl sub_0806E0DC + ldr r0, [r4, #0x70] + bl sub_0806E0DC + pop {r4, pc} + + thumb_func_start sub_0806E1FC +sub_0806E1FC: @ 0x0806E1FC + push {lr} + ldr r0, _0806E208 @ =gUnk_0813AD4C + bl sub_08080840 + pop {pc} + .align 2, 0 +_0806E208: .4byte gUnk_0813AD4C + + thumb_func_start sub_0806E20C +sub_0806E20C: @ 0x0806E20C + push {r4, lr} + ldr r4, _0806E224 @ =gUnk_030010A0 + ldrh r0, [r4, #6] + cmp r0, #0 + beq _0806E230 + ldr r0, _0806E228 @ =0x0000421F + bl sub_08056378 + ldr r1, _0806E22C @ =gUnk_02000050 + ldrh r0, [r4, #6] + str r0, [r1, #0x10] + b _0806E236 + .align 2, 0 +_0806E224: .4byte gUnk_030010A0 +_0806E228: .4byte 0x0000421F +_0806E22C: .4byte gUnk_02000050 +_0806E230: + ldr r0, _0806E238 @ =0x00004220 + bl sub_08056378 +_0806E236: + pop {r4, pc} + .align 2, 0 +_0806E238: .4byte 0x00004220 + + thumb_func_start sub_0806E23C +sub_0806E23C: @ 0x0806E23C + push {lr} + ldr r1, _0806E24C @ =gUnk_030010A0 + ldrh r0, [r1, #6] + cmp r0, #0 + beq _0806E24A + bl sub_080526CC +_0806E24A: + pop {pc} + .align 2, 0 +_0806E24C: .4byte gUnk_030010A0 + + thumb_func_start sub_0806E250 +sub_0806E250: @ 0x0806E250 + push {r4, lr} + adds r4, r1, #0 + movs r0, #0 + str r0, [r4, #0x14] + movs r0, #0x31 + bl sub_0801E7F4 + cmp r0, #0 + beq _0806E266 + movs r0, #1 + str r0, [r4, #0x14] +_0806E266: + ldr r2, _0806E274 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0806E274: .4byte gUnk_02033280 + + thumb_func_start sub_0806E278 +sub_0806E278: @ 0x0806E278 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806E2A8 + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0806E2A0 @ =gUnk_081142FC + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_0807DD50 + ldr r3, _0806E2A4 @ =gUnk_08114304 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_08078850 + b _0806E2B0 + .align 2, 0 +_0806E2A0: .4byte gUnk_081142FC +_0806E2A4: .4byte gUnk_08114304 +_0806E2A8: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 +_0806E2B0: + ldr r0, _0806E2CC @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806E2D0 + ldrb r0, [r4, #0x18] + subs r1, #0x84 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + b _0806E2DA + .align 2, 0 +_0806E2CC: .4byte gUnk_03003F80 +_0806E2D0: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0806E2DA: + pop {r4, pc} + + thumb_func_start sub_0806E2DC +sub_0806E2DC: @ 0x0806E2DC + push {lr} + adds r3, r0, #0 + ldr r0, _0806E300 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _0806E2EC + movs r0, #0 +_0806E2EC: + ldrb r1, [r3, #0xb] + lsls r1, r1, #6 + lsls r0, r0, #3 + ldr r2, _0806E304 @ =gUnk_08114308 + adds r0, r0, r2 + adds r1, r1, r0 + adds r0, r3, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806E300: .4byte gUnk_02002A40 +_0806E304: .4byte gUnk_08114308 + + thumb_func_start sub_0806E308 +sub_0806E308: @ 0x0806E308 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _0806E34C + cmp r5, #1 + bgt _0806E31C + cmp r5, #0 + beq _0806E322 + b _0806E3E0 +_0806E31C: + cmp r5, #2 + beq _0806E3C6 + b _0806E3E0 +_0806E322: + ldr r1, _0806E348 @ =gUnk_081144F0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806E3E0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + strb r5, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD50 + b _0806E3E0 + .align 2, 0 +_0806E348: .4byte gUnk_081144F0 +_0806E34C: + adds r2, r4, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #2 + bne _0806E3BC + movs r0, #0 + strb r1, [r4, #0xc] + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x69 + strb r0, [r1] + ldr r1, _0806E3B0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08002632 + ldr r1, _0806E3B4 @ =gUnk_08001A7C + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r3, [r0] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0x32 + bne _0806E398 + adds r3, #6 +_0806E398: + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + adds r0, r4, #0 + bl sub_0801DFB4 + ldr r0, _0806E3B8 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + b _0806E3E0 + .align 2, 0 +_0806E3B0: .4byte gLinkEntity +_0806E3B4: .4byte gUnk_08001A7C +_0806E3B8: .4byte gUnk_03003F80 +_0806E3BC: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + b _0806E3E0 +_0806E3C6: + adds r0, r4, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806E3E0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 +_0806E3E0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806E3E4 +sub_0806E3E4: @ 0x0806E3E4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r2, r0 + adds r2, #8 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + ldrb r2, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FF88 + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + + thumb_func_start sub_0806E418 +sub_0806E418: @ 0x0806E418 + push {lr} + adds r2, r0, #0 + ldr r0, _0806E438 @ =gUnk_02002A40 + ldrb r0, [r0, #8] + subs r0, #2 + cmp r0, #0 + bge _0806E428 + movs r0, #0 +_0806E428: + lsls r1, r0, #3 + ldr r0, _0806E43C @ =gUnk_081144FC + adds r1, r1, r0 + adds r0, r2, #0 + bl sub_0806F1AC + pop {pc} + .align 2, 0 +_0806E438: .4byte gUnk_02002A40 +_0806E43C: .4byte gUnk_081144FC + + thumb_func_start sub_0806E440 +sub_0806E440: @ 0x0806E440 + push {r4, lr} + adds r4, r0, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08078784 + pop {r4, pc} + + thumb_func_start sub_0806E458 +sub_0806E458: @ 0x0806E458 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806E498 + ldr r1, _0806E494 @ =gUnk_081144F0 + adds r0, r4, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806E49E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0xa + bl sub_08004260 + b _0806E49E + .align 2, 0 +_0806E494: .4byte gUnk_081144F0 +_0806E498: + adds r0, r4, #0 + bl sub_08004274 +_0806E49E: + pop {r4, pc} + + thumb_func_start sub_0806E4A0 +sub_0806E4A0: @ 0x0806E4A0 + push {lr} + ldr r2, _0806E4B4 @ =gUnk_081145B4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0806E4B4: .4byte gUnk_081145B4 + + thumb_func_start sub_0806E4B8 +sub_0806E4B8: @ 0x0806E4B8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r5, #0 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_080787A8 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + strb r5, [r4, #0xd] + adds r0, r4, #0 + bl sub_0806E4EC + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806E4EC +sub_0806E4EC: @ 0x0806E4EC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xd] + cmp r0, #0 + bne _0806E50E + adds r0, #1 + strb r0, [r5, #0xd] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x3c + strb r0, [r5, #0xe] + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC +_0806E50E: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0806E552 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0806E52A + movs r0, #3 + b _0806E52C +_0806E52A: + movs r0, #2 +_0806E52C: + strb r0, [r5, #0xc] + movs r0, #0 + strb r0, [r5, #0xd] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0806E552 + ldr r4, _0806E560 @ =gUnk_081145C8 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r0, [r1] + bl sub_08004488 +_0806E552: + adds r0, r5, #0 + bl sub_0806E65C + adds r0, r5, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 +_0806E560: .4byte gUnk_081145C8 + + thumb_func_start sub_0806E564 +sub_0806E564: @ 0x0806E564 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806E5AA + adds r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r2, #1 + ands r0, r2 + cmp r0, #0 + beq _0806E590 + ldrb r0, [r4, #0x18] + lsls r1, r0, #0x19 + lsrs r1, r1, #0x1f + eors r1, r2 + lsls r1, r1, #6 + subs r2, #0x42 + ands r2, r0 + orrs r2, r1 + strb r2, [r4, #0x18] +_0806E590: + bl sub_08000E50 + movs r1, #1 + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_0806E5AA: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0806E5D4 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0806E5CE + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _0806E5D4 +_0806E5CE: + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_0806E5D4: + adds r0, r4, #0 + bl sub_0806E65C + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806E5E4 +sub_0806E5E4: @ 0x0806E5E4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806E622 + adds r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r5, #1 + ands r0, r5 + cmp r0, #0 + beq _0806E612 + ldrb r0, [r4, #0x18] + lsls r1, r0, #0x19 + lsrs r1, r1, #0x1f + eors r1, r5 + lsls r1, r1, #6 + movs r2, #0x41 + rsbs r2, r2, #0 + ands r2, r0 + orrs r2, r1 + strb r2, [r4, #0x18] +_0806E612: + bl sub_08000E50 + adds r1, r0, #0 + ands r1, r5 + adds r1, #2 + adds r0, r4, #0 + bl sub_080042AC +_0806E622: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806E638 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_0806E638: + adds r0, r4, #0 + bl sub_0806E65C + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806E648 +sub_0806E648: @ 0x0806E648 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806E658 + movs r0, #1 + strb r0, [r4, #0xc] +_0806E658: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806E65C +sub_0806E65C: @ 0x0806E65C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + movs r2, #0 + ldrsb r2, [r0, r2] + cmp r2, #0 + beq _0806E6A6 + ldr r0, _0806E688 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806E694 + cmp r2, #2 + bne _0806E68C + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806F118 + b _0806E698 + .align 2, 0 +_0806E688: .4byte gUnk_03003F80 +_0806E68C: + adds r0, r4, #0 + bl sub_0806E6A8 + b _0806E698 +_0806E694: + bl sub_080791D0 +_0806E698: + movs r0, #0xd5 + bl sub_080A3268 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] +_0806E6A6: + pop {r4, pc} + + thumb_func_start sub_0806E6A8 +sub_0806E6A8: @ 0x0806E6A8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0 + bl sub_08002632 + ldr r1, _0806E6D4 @ =gUnk_02002A40 + ldr r2, _0806E6D8 @ =0x000001C1 + adds r1, r1, r2 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0xf3 + bne _0806E6C2 + movs r5, #1 +_0806E6C2: + ldr r0, _0806E6DC @ =gUnk_081145D0 + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r4, #0 + bl sub_08056398 + pop {r4, r5, pc} + .align 2, 0 +_0806E6D4: .4byte gUnk_02002A40 +_0806E6D8: .4byte 0x000001C1 +_0806E6DC: .4byte gUnk_081145D0 + + thumb_func_start sub_0806E6E0 +sub_0806E6E0: @ 0x0806E6E0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _0806E706 + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + movs r1, #1 + bl sub_080042AC + b _0806E70C +_0806E706: + adds r0, r2, #0 + bl sub_080042B8 +_0806E70C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806E710 +sub_0806E710: @ 0x0806E710 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806E72C @ =gUnk_081145D4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0806ED78 + pop {r4, pc} + .align 2, 0 +_0806E72C: .4byte gUnk_081145D4 + + thumb_func_start sub_0806E730 +sub_0806E730: @ 0x0806E730 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r5, #0 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0801E99C + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_080787A8 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + strb r5, [r4, #0xd] + adds r0, r4, #0 + bl sub_0806E764 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806E764 +sub_0806E764: @ 0x0806E764 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + adds r5, r0, #0 + cmp r5, #0 + bne _0806E782 + adds r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0x1e + strb r0, [r4, #0xe] + strb r5, [r4, #0x1e] +_0806E782: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0806E7A8 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0806E7A8 + movs r0, #0xd6 + bl sub_08004488 +_0806E7A8: + adds r0, r4, #0 + bl sub_0806E838 + pop {r4, r5, pc} + + thumb_func_start sub_0806E7B0 +sub_0806E7B0: @ 0x0806E7B0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0806E7F2 + adds r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r5, #1 + ands r0, r5 + cmp r0, #0 + beq _0806E7DE + ldrb r0, [r4, #0x18] + lsls r1, r0, #0x19 + lsrs r1, r1, #0x1f + eors r1, r5 + lsls r1, r1, #6 + movs r2, #0x41 + rsbs r2, r2, #0 + ands r2, r0 + orrs r2, r1 + strb r2, [r4, #0x18] +_0806E7DE: + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + strb r5, [r4, #0x1e] +_0806E7F2: + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0806E81C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0806E816 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _0806E81C +_0806E816: + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_0806E81C: + adds r0, r4, #0 + bl sub_0806E838 + pop {r4, r5, pc} + + thumb_func_start sub_0806E824 +sub_0806E824: @ 0x0806E824 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F148 + cmp r0, #0 + beq _0806E834 + movs r0, #1 + strb r0, [r4, #0xc] +_0806E834: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806E838 +sub_0806E838: @ 0x0806E838 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + movs r2, #0 + ldrsb r2, [r0, r2] + cmp r2, #0 + beq _0806E882 + ldr r0, _0806E864 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806E870 + cmp r2, #2 + bne _0806E868 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0806F118 + b _0806E874 + .align 2, 0 +_0806E864: .4byte gUnk_03003F80 +_0806E868: + adds r0, r4, #0 + bl sub_0806E884 + b _0806E874 +_0806E870: + bl sub_080791D0 +_0806E874: + movs r0, #0xd6 + bl sub_080A3268 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] +_0806E882: + pop {r4, pc} + + thumb_func_start sub_0806E884 +sub_0806E884: @ 0x0806E884 + push {lr} + adds r1, r0, #0 + ldr r0, _0806E890 @ =0x00000DB6 + bl sub_08056398 + pop {pc} + .align 2, 0 +_0806E890: .4byte 0x00000DB6 + + thumb_func_start sub_0806E894 +sub_0806E894: @ 0x0806E894 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0806E8B6 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r4, #0x1e] + b _0806E8CA +_0806E8B6: + movs r1, #0xc0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0806E8CA + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_0806E8CA: + pop {r4, pc} + + thumb_func_start sub_0806E8CC +sub_0806E8CC: @ 0x0806E8CC + push {lr} + adds r3, r0, #0 + ldr r2, _0806E8EC @ =gUnk_080B313C + ldrb r1, [r3, #0xf] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #8 + adds r0, r0, r2 + ldr r1, [r0] + cmp r1, #0 + beq _0806E8F0 + adds r0, r3, #0 + bl _call_via_r1 + b _0806E8F4 + .align 2, 0 +_0806E8EC: .4byte gUnk_080B313C +_0806E8F0: + bl sub_0805E780 +_0806E8F4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806E8F8 +sub_0806E8F8: @ 0x0806E8F8 + push {lr} + adds r3, r0, #0 + ldr r2, _0806E918 @ =gUnk_080B313C + ldrb r1, [r3, #0xf] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r2, #4 + adds r0, r0, r2 + ldr r1, [r0] + cmp r1, #0 + beq _0806E916 + adds r0, r3, #0 + bl _call_via_r1 +_0806E916: + pop {pc} + .align 2, 0 +_0806E918: .4byte gUnk_080B313C + + thumb_func_start sub_0806E91C +sub_0806E91C: @ 0x0806E91C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0806E950 + adds r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r1, r5, #0 + adds r1, #0x68 + movs r4, #0 + movs r0, #1 + strh r0, [r1] + adds r1, #2 + ldr r0, _0806E960 @ =0x0000FFFF + strh r0, [r1] + adds r0, r5, #0 + bl sub_0807DD64 + strb r4, [r5, #0x1e] +_0806E950: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 + pop {r4, r5, pc} + .align 2, 0 +_0806E960: .4byte 0x0000FFFF + + thumb_func_start sub_0806E964 +sub_0806E964: @ 0x0806E964 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r2, r1, #0 + ldr r0, _0806E984 @ =gUnk_03000FF0 + mov r8, r0 + ldrh r1, [r0, #2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0806E988 + bl sub_08050384 + b _0806EAAA + .align 2, 0 +_0806E984: .4byte gUnk_03000FF0 +_0806E988: + ldrb r0, [r2, #0x18] + adds r1, r0, #0 + mov r6, sb + adds r6, #0x6c + mov r7, sb + adds r7, #0x68 + cmp r1, #0 + bne _0806E9A8 + adds r0, #1 + strb r0, [r2, #0x18] + strh r1, [r6] + movs r2, #0 + ldrsh r1, [r7, r2] + mov r0, sb + bl sub_0806EABC +_0806E9A8: + movs r5, #0x1c + movs r0, #0x55 + bl GetProgressFlag + cmp r0, #0 + beq _0806E9B6 + movs r5, #0x34 +_0806E9B6: + movs r0, #0 + ldrsh r4, [r7, r0] + mov r2, r8 + ldrh r1, [r2, #2] + movs r2, #0xc0 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0806E9E4 + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806E9D4 + adds r4, #1 + b _0806E9D6 +_0806E9D4: + subs r4, #1 +_0806E9D6: + cmp r4, #0 + bgt _0806E9DC + adds r4, r5, #0 +_0806E9DC: + cmp r4, r5 + ble _0806EA0A + movs r4, #1 + b _0806EA0A +_0806E9E4: + mov r0, r8 + ldrh r1, [r0, #4] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0806EA0A + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806E9FC + adds r4, #1 + b _0806E9FE +_0806E9FC: + subs r4, #1 +_0806E9FE: + cmp r4, #0 + bgt _0806EA04 + movs r4, #1 +_0806EA04: + cmp r4, r5 + ble _0806EA0A + adds r4, r5, #0 +_0806EA0A: + movs r1, #0 + ldrsh r0, [r7, r1] + cmp r4, r0 + beq _0806EA28 + mov r0, sb + adds r1, r4, #0 + bl sub_0806EABC + ldrh r1, [r6] + movs r2, #0 + ldrsh r0, [r6, r2] + cmp r0, #0 + ble _0806EA28 + subs r0, r1, #1 + strh r0, [r6] +_0806EA28: + strh r4, [r7] + ldr r0, _0806EA74 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0806EA86 + mov r5, sb + adds r5, #0x6a + lsls r0, r4, #0x10 + asrs r0, r0, #0x10 + movs r2, #0 + ldrsh r1, [r5, r2] + cmp r0, r1 + bne _0806EA4E + movs r1, #0 + ldrsh r0, [r6, r1] + cmp r0, #0 + bne _0806EA7C +_0806EA4E: + ldr r4, _0806EA78 @ =gUnk_081145E4 + movs r2, #0 + ldrsh r0, [r7, r2] + lsls r0, r0, #2 + adds r0, r0, r4 + movs r1, #0 + ldrsh r0, [r0, r1] + bl sub_080A3268 + ldrh r0, [r7] + strh r0, [r5] + movs r2, #0 + ldrsh r0, [r7, r2] + lsls r0, r0, #2 + adds r4, #2 + adds r0, r0, r4 + ldrh r0, [r0] + strh r0, [r6] + b _0806EA86 + .align 2, 0 +_0806EA74: .4byte gUnk_03000FF0 +_0806EA78: .4byte gUnk_081145E4 +_0806EA7C: + ldr r0, _0806EAB4 @ =0x80010000 + bl sub_080A3268 + movs r0, #0 + strh r0, [r5] +_0806EA86: + ldrh r1, [r6] + movs r2, #0 + ldrsh r0, [r6, r2] + cmp r0, #0 + ble _0806EAA4 + subs r0, r1, #1 + movs r1, #0 + strh r0, [r6] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _0806EAA4 + mov r0, sb + adds r0, #0x6a + strh r1, [r0] + strh r1, [r6] +_0806EAA4: + ldr r1, _0806EAB8 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0806EAAA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806EAB4: .4byte 0x80010000 +_0806EAB8: .4byte gUnk_02033280 + + thumb_func_start sub_0806EABC +sub_0806EABC: @ 0x0806EABC + push {r4, lr} + adds r4, r1, #0 + bl sub_08050384 + ldr r1, _0806EAE0 @ =gUnk_020227E8 + ldr r2, _0806EAE4 @ =0x00202020 + adds r0, r4, #0 + bl sub_08057044 + ldr r0, _0806EAE8 @ =0x00003302 + ldr r1, _0806EAEC @ =gUnk_081146B8 + bl sub_0805F46C + ldr r1, _0806EAF0 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] + pop {r4, pc} + .align 2, 0 +_0806EAE0: .4byte gUnk_020227E8 +_0806EAE4: .4byte 0x00202020 +_0806EAE8: .4byte 0x00003302 +_0806EAEC: .4byte gUnk_081146B8 +_0806EAF0: .4byte gUnk_03000F50 + + thumb_func_start sub_0806EAF4 +sub_0806EAF4: @ 0x0806EAF4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0xc] + cmp r0, #0 + bne _0806EB48 + ldr r1, _0806EBA0 @ =gUnk_081146D0 + adds r0, r6, #0 + bl sub_0806FDEC + cmp r0, #0 + beq _0806EBA8 + ldrb r0, [r6, #0xc] + adds r0, #1 + strb r0, [r6, #0xc] + ldrb r1, [r6, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r6, #0x18] + ldrb r2, [r6, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r6, #0x19] + adds r3, r6, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + ldrb r0, [r6, #0x1b] + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r6, #0x1b] + movs r0, #0x78 + strh r0, [r6, #0x2e] + movs r0, #0x10 + strh r0, [r6, #0x32] +_0806EB48: + ldr r7, [r6, #0x50] + cmp r7, #0 + beq _0806EBA4 + adds r0, r7, #0 + adds r0, #0x68 + movs r1, #0 + ldrsh r4, [r0, r1] + movs r5, #0x96 + lsls r5, r5, #2 + adds r0, r4, #0 + adds r1, r5, #0 + bl __divsi3 + adds r1, r6, #0 + adds r1, #0x68 + strh r0, [r1] + adds r0, r4, #0 + adds r1, r5, #0 + bl __modsi3 + adds r4, r0, #0 + movs r1, #0x3c + bl __divsi3 + adds r1, r6, #0 + adds r1, #0x6a + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0x3c + bl __modsi3 + movs r1, #6 + bl __divsi3 + adds r1, r6, #0 + adds r1, #0x6c + strh r0, [r1] + ldr r0, [r7, #4] + cmp r0, #0 + bne _0806EBA8 + bl sub_0805E780 + b _0806EBA8 + .align 2, 0 +_0806EBA0: .4byte gUnk_081146D0 +_0806EBA4: + bl sub_0805E780 +_0806EBA8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0806EBAC +sub_0806EBAC: @ 0x0806EBAC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0xff + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x68 + movs r1, #0 + ldrsh r2, [r0, r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_0806FF60 + adds r0, r4, #0 + adds r0, #0x6a + movs r1, #0 + ldrsh r2, [r0, r1] + adds r0, r4, #0 + movs r1, #1 + bl sub_0806FF60 + adds r0, r4, #0 + adds r0, #0x6c + movs r1, #0 + ldrsh r2, [r0, r1] + adds r0, r4, #0 + movs r1, #2 + bl sub_0806FF60 + adds r0, r4, #0 + movs r1, #3 + movs r2, #0xa + bl sub_0806FF60 + movs r2, #0xc + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #0 + movs r3, #0 + bl sub_0806FFBC + movs r2, #4 + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #1 + movs r3, #0 + bl sub_0806FFBC + adds r0, r4, #0 + movs r1, #2 + movs r2, #0xc + movs r3, #0 + bl sub_0806FFBC + adds r0, r4, #0 + bl sub_0807000C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806EC20 +sub_0806EC20: @ 0x0806EC20 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x58 + movs r1, #0 + movs r2, #0 + bl sub_0806ED50 + cmp r0, #0 + beq _0806EC34 + str r4, [r0, #0x50] +_0806EC34: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806EC38 +sub_0806EC38: @ 0x0806EC38 + push {lr} + movs r0, #7 + movs r1, #0x58 + movs r2, #7 + bl sub_0805EB00 + cmp r0, #0 + beq _0806EC4C + bl sub_0805E7BC +_0806EC4C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806EC50 +sub_0806EC50: @ 0x0806EC50 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #9] + lsls r0, r0, #3 + ldr r1, _0806EC74 @ =gUnk_08114AE4 + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, #3 + ands r0, r1 + cmp r0, #2 + bne _0806EC6E + ldrb r0, [r3, #0xa] + lsls r0, r0, #3 + ldr r1, [r2, #4] + adds r2, r1, r0 +_0806EC6E: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_0806EC74: .4byte gUnk_08114AE4 + + thumb_func_start sub_0806EC78 +sub_0806EC78: @ 0x0806EC78 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0806ED4A + adds r0, r4, #0 + bl sub_0806EC50 + adds r5, r0, #0 + ldrb r1, [r5] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0806ECA2 + ldrb r1, [r4, #0x10] + movs r0, #1 + orrs r0, r1 + strb r0, [r4, #0x10] + b _0806ED4A +_0806ECA2: + ldrh r0, [r5, #2] + lsls r0, r0, #0x16 + lsrs r2, r0, #0x16 + adds r1, r2, #0 + ldrb r0, [r5, #3] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _0806ECC0 + cmp r0, #2 + bne _0806ECCA + adds r0, r4, #0 + adds r0, #0x60 + strh r2, [r0] + b _0806ECD0 +_0806ECC0: + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE008 + b _0806ECD0 +_0806ECCA: + adds r0, r4, #0 + bl sub_080ADF80 +_0806ECD0: + ldrh r0, [r5, #4] + lsls r0, r0, #0x16 + lsrs r1, r0, #0x16 + adds r0, r4, #0 + bl sub_0801D040 + ldrh r0, [r5, #6] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + strh r0, [r4, #0x12] + ldrb r0, [r5, #5] + movs r3, #3 + movs r1, #0x30 + ands r1, r0 + ldrb r2, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r5, #7] + lsls r1, r1, #0x1b + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + lsrs r1, r1, #0x1d + lsls r1, r1, #3 + ldrb r2, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r5, #7] + lsrs r1, r1, #5 + ands r1, r3 + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r1, _0806ED4C @ =gUnk_08114EE4 + ldrb r0, [r5, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x48] + ldrb r1, [r4, #0x10] + movs r0, #1 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r1, #0xff + adds r0, r4, #0 + adds r0, #0x58 + strb r1, [r0] + strb r1, [r4, #0x1e] + adds r0, r4, #0 + bl sub_08016A04 +_0806ED4A: + pop {r4, r5, pc} + .align 2, 0 +_0806ED4C: .4byte gUnk_08114EE4 + + thumb_func_start sub_0806ED50 +sub_0806ED50: @ 0x0806ED50 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + bl sub_0805E678 + adds r4, r0, #0 + cmp r4, #0 + beq _0806ED74 + movs r0, #7 + strb r0, [r4, #8] + strb r5, [r4, #9] + strb r6, [r4, #0xa] + strb r7, [r4, #0xb] + adds r0, r4, #0 + movs r1, #7 + bl sub_0805EA2C +_0806ED74: + adds r0, r4, #0 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0806ED78 +sub_0806ED78: @ 0x0806ED78 + push {r4, lr} + bl sub_0800445C + adds r4, r0, #0 + cmp r4, #0 + beq _0806ED94 + ldr r0, _0806ED98 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0806ED94 + bl sub_08077B20 +_0806ED94: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_0806ED98: .4byte gUnk_03003F80 + + thumb_func_start sub_0806ED9C +sub_0806ED9C: @ 0x0806ED9C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + movs r6, #1 + rsbs r6, r6, #0 + ldr r1, _0806EDC0 @ =gLinkEntity + adds r2, r4, #0 + bl sub_080041A0 + cmp r0, #0 + beq _0806EDBC + adds r0, r5, #0 + bl sub_0806EDC4 + adds r6, r0, #0 +_0806EDBC: + adds r0, r6, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806EDC0: .4byte gLinkEntity + + thumb_func_start sub_0806EDC4 +sub_0806EDC4: @ 0x0806EDC4 + push {lr} + ldr r1, _0806EDD4 @ =gLinkEntity + bl sub_080045C4 + bl sub_0806F5A4 + pop {pc} + .align 2, 0 +_0806EDD4: .4byte gLinkEntity + + thumb_func_start sub_0806EDD8 +sub_0806EDD8: @ 0x0806EDD8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r3, r2, #0 + movs r7, #1 + rsbs r7, r7, #0 + ldr r6, _0806EE00 @ =gLinkEntity + adds r1, r6, #0 + adds r2, r4, #0 + bl sub_080041A0 + cmp r0, #0 + beq _0806EDFC + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080045C4 + adds r7, r0, #0 +_0806EDFC: + adds r0, r7, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806EE00: .4byte gLinkEntity + + thumb_func_start sub_0806EE04 +sub_0806EE04: @ 0x0806EE04 + adds r3, r0, #0 + str r1, [r3, #0x54] + adds r0, #0x3c + movs r1, #0 + strb r2, [r0] + adds r0, #3 + strb r1, [r0] + adds r2, r3, #0 + adds r2, #0x46 + movs r0, #0 + strh r1, [r2] + strb r0, [r3, #0x16] + bx lr + .align 2, 0 + + thumb_func_start sub_0806EE20 +sub_0806EE20: @ 0x0806EE20 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _0806EE4C + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _0806EE66 + ldr r1, _0806EE48 @ =gUnk_08114EFC + ldrb r0, [r4, #0x16] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + b _0806EE68 + .align 2, 0 +_0806EE48: .4byte gUnk_08114EFC +_0806EE4C: + adds r1, r4, #0 + adds r1, #0x46 + movs r0, #8 + strh r0, [r1] + ldr r1, _0806EE6C @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5A4 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] +_0806EE66: + movs r0, #0 +_0806EE68: + pop {r4, pc} + .align 2, 0 +_0806EE6C: .4byte gLinkEntity + + thumb_func_start sub_0806EE70 +sub_0806EE70: @ 0x0806EE70 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x46 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #8 + bls _0806EE92 + movs r0, #0 + strh r0, [r1] + adds r0, r4, #0 + bl sub_0806EF14 +_0806EE92: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + mov r1, sp + bl sub_0806EF4C + mov r0, sp + ldrh r1, [r0] + ldrh r2, [r0, #2] + adds r0, r4, #0 + bl sub_080041DC + adds r1, r0, #0 + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0 + bge _0806EEB8 + rsbs r0, r0, #0 +_0806EEB8: + lsrs r0, r0, #3 + cmp r0, r1 + bhi _0806EEC2 + movs r0, #0 + b _0806EECA +_0806EEC2: + adds r0, r4, #0 + movs r1, #3 + bl sub_0806EF74 +_0806EECA: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806EED0 +sub_0806EED0: @ 0x0806EED0 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x46 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0806EEE8 + movs r0, #0 + b _0806EEF0 +_0806EEE8: + adds r0, r2, #0 + movs r1, #2 + bl sub_0806EF74 +_0806EEF0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806EEF4 +sub_0806EEF4: @ 0x0806EEF4 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0806EF08 + movs r0, #0 + b _0806EF10 +_0806EF08: + adds r0, r2, #0 + movs r1, #1 + bl sub_0806EF74 +_0806EF10: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806EF14 +sub_0806EF14: @ 0x0806EF14 + push {r4, lr} + sub sp, #4 + adds r4, r0, #0 + mov r1, sp + bl sub_0806EF4C + mov r0, sp + ldrh r1, [r0] + ldrh r2, [r0, #2] + adds r0, r4, #0 + bl sub_080045B4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x3c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0806EF48 + ldrb r0, [r4, #0x15] + bl sub_0806F5A4 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] +_0806EF48: + add sp, #4 + pop {r4, pc} + + thumb_func_start sub_0806EF4C +sub_0806EF4C: @ 0x0806EF4C + push {r4, lr} + adds r2, r0, #0 + adds r2, #0x3f + ldrb r2, [r2] + lsls r2, r2, #1 + ldr r3, [r0, #0x54] + adds r3, r3, r2 + ldr r2, _0806EF70 @ =gUnk_03000BF0 + ldrh r0, [r3, #2] + ldrh r4, [r2, #6] + adds r0, r0, r4 + strh r0, [r1] + ldrh r0, [r3, #4] + ldrh r2, [r2, #8] + adds r0, r0, r2 + strh r0, [r1, #2] + pop {r4, pc} + .align 2, 0 +_0806EF70: .4byte gUnk_03000BF0 + + thumb_func_start sub_0806EF74 +sub_0806EF74: @ 0x0806EF74 + push {lr} + adds r3, r0, #0 + adds r3, #0x3f + ldrb r2, [r3] + adds r2, r2, r1 + strb r2, [r3] + bl sub_0806EF88 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806EF88 +sub_0806EF88: @ 0x0806EF88 + push {lr} + adds r1, r0, #0 + adds r1, #0x3f + ldrb r2, [r1] + lsls r2, r2, #1 + ldr r1, [r0, #0x54] + adds r1, r1, r2 + ldr r3, _0806EFA8 @ =gUnk_08114F0C + ldrb r2, [r1] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_0806EFA8: .4byte gUnk_08114F0C + + thumb_func_start sub_0806EFAC +sub_0806EFAC: @ 0x0806EFAC + push {lr} + adds r2, r0, #0 + adds r2, #0x3f + movs r1, #0 + strb r1, [r2] + bl sub_0806EF88 + pop {pc} + + thumb_func_start sub_0806EFBC +sub_0806EFBC: @ 0x0806EFBC + movs r1, #1 + strb r1, [r0, #0x16] + adds r0, #0x46 + movs r1, #8 + strh r1, [r0] + movs r0, #0 + bx lr + .align 2, 0 + + thumb_func_start sub_0806EFCC +sub_0806EFCC: @ 0x0806EFCC + movs r2, #2 + strb r2, [r0, #0x16] + ldrh r1, [r1, #2] + adds r0, #0x46 + strh r1, [r0] + movs r0, #0 + bx lr + .align 2, 0 + + thumb_func_start sub_0806EFDC +sub_0806EFDC: @ 0x0806EFDC + push {lr} + adds r3, r0, #0 + ldrh r0, [r1] + lsrs r0, r0, #8 + cmp r0, #0 + beq _0806EFF4 + adds r2, r3, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfe + ands r0, r1 + b _0806EFFE +_0806EFF4: + adds r2, r3, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #1 + orrs r0, r1 +_0806EFFE: + strb r0, [r2] + adds r1, r3, #0 + adds r1, #0x3f + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r3, #0 + bl sub_0806EF88 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806F014 +sub_0806F014: @ 0x0806F014 + push {lr} + ldrh r1, [r1, #2] + strh r1, [r0, #0x24] + adds r2, r0, #0 + adds r2, #0x3f + ldrb r1, [r2] + adds r1, #2 + strb r1, [r2] + bl sub_0806EF88 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806F02C +sub_0806F02C: @ 0x0806F02C + push {lr} + ldrh r1, [r1] + lsrs r1, r1, #8 + adds r2, r0, #0 + adds r2, #0x3e + strb r1, [r2] + adds r2, #1 + ldrb r1, [r2] + adds r1, #1 + strb r1, [r2] + bl sub_0806EF88 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806F048 +sub_0806F048: @ 0x0806F048 + movs r1, #3 + strb r1, [r0, #0x16] + movs r0, #0 + bx lr + + thumb_func_start sub_0806F050 +sub_0806F050: @ 0x0806F050 + push {lr} + adds r1, #2 + str r1, [r0, #0x54] + adds r2, r0, #0 + adds r2, #0x3f + movs r1, #0 + strb r1, [r2] + bl sub_0806EF88 + pop {pc} + + thumb_func_start sub_0806F064 +sub_0806F064: @ 0x0806F064 + movs r2, #0 + strb r2, [r0, #0x16] + adds r0, #0x3f + ldrb r2, [r0] + adds r2, #1 + strb r2, [r0] + ldrh r0, [r1] + lsrs r0, r0, #8 + bx lr + .align 2, 0 + + thumb_func_start sub_0806F078 +sub_0806F078: @ 0x0806F078 + push {lr} + adds r2, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + beq _0806F0A0 + adds r0, r2, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _0806F096 + adds r0, r2, #0 + bl sub_080042AC + b _0806F09C +_0806F096: + adds r0, r2, #0 + bl sub_08004260 +_0806F09C: + movs r0, #1 + b _0806F0A2 +_0806F0A0: + movs r0, #0 +_0806F0A2: + pop {pc} + + thumb_func_start sub_0806F0A4 +sub_0806F0A4: @ 0x0806F0A4 + push {r4, r5, r6, r7, lr} + sub sp, #4 + ldr r7, _0806F114 @ =gUnk_03003DA8 + ldr r5, [r7, #4] + movs r0, #0 + cmp r5, r7 + beq _0806F0BA +_0806F0B2: + adds r0, #1 + ldr r5, [r5, #4] + cmp r5, r7 + bne _0806F0B2 +_0806F0BA: + cmp r0, #1 + bls _0806F10E + ldr r5, [r7, #4] + cmp r5, r7 + beq _0806F10E + movs r2, #1 +_0806F0C6: + ldrb r1, [r5, #0x10] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F108 + ldrb r1, [r5, #0x17] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F108 + ldr r4, [r5, #4] + cmp r4, r7 + beq _0806F108 + movs r6, #1 +_0806F0E2: + ldrb r1, [r4, #0x10] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F102 + ldrb r1, [r4, #0x17] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F102 + adds r0, r5, #0 + adds r1, r4, #0 + str r2, [sp] + bl sub_08004484 + ldr r2, [sp] +_0806F102: + ldr r4, [r4, #4] + cmp r4, r7 + bne _0806F0E2 +_0806F108: + ldr r5, [r5, #4] + cmp r5, r7 + bne _0806F0C6 +_0806F10E: + add sp, #4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806F114: .4byte gUnk_03003DA8 + + thumb_func_start sub_0806F118 +sub_0806F118: @ 0x0806F118 + push {r4, lr} + adds r4, r0, #0 + bl sub_08002632 + ldr r1, _0806F140 @ =gUnk_08001A7C + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r1, [r0] + ldrh r2, [r0, #2] + ldrh r3, [r0, #4] + adds r0, r4, #0 + bl sub_0801DFB4 + ldr r0, _0806F144 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + pop {r4, pc} + .align 2, 0 +_0806F140: .4byte gUnk_08001A7C +_0806F144: .4byte gUnk_03003F80 + + thumb_func_start sub_0806F148 +sub_0806F148: @ 0x0806F148 + push {r4, lr} + bl sub_0801E00C + movs r4, #1 + rsbs r4, r4, #0 + ldr r0, _0806F164 @ =gUnk_02022740 + ldrb r0, [r0] + cmp r0, #1 + beq _0806F172 + cmp r0, #2 + beq _0806F168 + movs r4, #0 + b _0806F17E + .align 2, 0 +_0806F164: .4byte gUnk_02022740 +_0806F168: + ldr r0, _0806F184 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + movs r4, #1 +_0806F172: + bl sub_0807919C + ldr r0, _0806F184 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] +_0806F17E: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_0806F184: .4byte gUnk_03003F80 + + thumb_func_start sub_0806F188 +sub_0806F188: @ 0x0806F188 + push {lr} + bl sub_08002632 + adds r1, r0, #0 + cmp r1, #0 + beq _0806F1A0 + ldr r0, _0806F1A4 @ =gUnk_02002A40 + ldr r2, _0806F1A8 @ =0x000001C1 + adds r0, r0, r2 + adds r0, r1, r0 + movs r1, #0xf3 + strb r1, [r0] +_0806F1A0: + pop {pc} + .align 2, 0 +_0806F1A4: .4byte gUnk_02002A40 +_0806F1A8: .4byte 0x000001C1 + + thumb_func_start sub_0806F1AC +sub_0806F1AC: @ 0x0806F1AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r6, r1, #0 + ldrh r1, [r6, #2] + asrs r7, r1, #4 + movs r0, #1 + ands r7, r0 + movs r0, #0xf + ands r1, r0 + cmp r1, #6 + bls _0806F1C8 + b _0806F332 +_0806F1C8: + lsls r0, r1, #2 + ldr r1, _0806F1D4 @ =_0806F1D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806F1D4: .4byte _0806F1D8 +_0806F1D8: @ jump table + .4byte _0806F332 @ case 0 + .4byte _0806F342 @ case 1 + .4byte _0806F1F4 @ case 2 + .4byte _0806F24E @ case 3 + .4byte _0806F2BA @ case 4 + .4byte _0806F324 @ case 5 + .4byte _0806F336 @ case 6 +_0806F1F4: + ldr r4, [r6] + asrs r1, r4, #0xc + movs r0, #0xf + ands r1, r0 + ldr r0, _0806F210 @ =0x00000FFF + ands r4, r0 + movs r5, #0 + cmp r1, #1 + beq _0806F22A + cmp r1, #1 + bgt _0806F214 + cmp r1, #0 + beq _0806F21A + b _0806F248 + .align 2, 0 +_0806F210: .4byte 0x00000FFF +_0806F214: + cmp r1, #2 + beq _0806F23A + b _0806F248 +_0806F21A: + adds r0, r4, #0 + bl sub_0807CC3C + adds r5, r0, #0 +_0806F222: + adds r0, r4, #0 + bl sub_0807CD10 + b _0806F248 +_0806F22A: + adds r0, r4, #0 + bl sub_0807CBD0 + adds r5, r0, #0 +_0806F232: + adds r0, r4, #0 + bl sub_0807CCB4 + b _0806F248 +_0806F23A: + adds r0, r4, #0 + bl GetProgressFlag + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_0807CD04 +_0806F248: + cmp r5, #0 + beq _0806F342 + b _0806F34C +_0806F24E: + ldr r4, [r6] + asrs r1, r4, #0xc + movs r0, #0xf + ands r1, r0 + ldr r0, _0806F26C @ =0x00000FFF + ands r4, r0 + movs r5, #0 + cmp r1, #1 + beq _0806F28A + cmp r1, #1 + bgt _0806F270 + cmp r1, #0 + beq _0806F276 + b _0806F248 + .align 2, 0 +_0806F26C: .4byte 0x00000FFF +_0806F270: + cmp r1, #2 + beq _0806F29E + b _0806F248 +_0806F276: + adds r0, r4, #0 + bl sub_0807CC3C + adds r5, r0, #0 + cmp r5, #0 + beq _0806F222 + adds r0, r4, #0 + bl sub_0807CD8C + b _0806F248 +_0806F28A: + adds r0, r4, #0 + bl sub_0807CBD0 + adds r5, r0, #0 + cmp r5, #0 + beq _0806F232 + adds r0, r4, #0 + bl sub_0807CD34 + b _0806F248 +_0806F29E: + adds r0, r4, #0 + bl GetProgressFlag + adds r5, r0, #0 + cmp r5, #0 + bne _0806F2B2 + adds r0, r4, #0 + bl sub_0807CD04 + b _0806F248 +_0806F2B2: + adds r0, r4, #0 + bl sub_0807CD80 + b _0806F248 +_0806F2BA: + ldr r4, [r6] + asrs r1, r4, #0xc + movs r0, #0xf + ands r1, r0 + ldr r0, _0806F2D8 @ =0x00000FFF + ands r4, r0 + movs r5, #0 + cmp r1, #4 + bhi _0806F248 + lsls r0, r1, #2 + ldr r1, _0806F2DC @ =_0806F2E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0806F2D8: .4byte 0x00000FFF +_0806F2DC: .4byte _0806F2E0 +_0806F2E0: @ jump table + .4byte _0806F2F4 @ case 0 + .4byte _0806F2FC @ case 1 + .4byte _0806F304 @ case 2 + .4byte _0806F30C @ case 3 + .4byte _0806F314 @ case 4 +_0806F2F4: + adds r0, r4, #0 + bl sub_0807CC3C + b _0806F320 +_0806F2FC: + adds r0, r4, #0 + bl sub_0807CBD0 + b _0806F320 +_0806F304: + adds r0, r4, #0 + bl GetProgressFlag + b _0806F320 +_0806F30C: + adds r0, r4, #0 + bl sub_0801E7F4 + b _0806F320 +_0806F314: + adds r0, r4, #0 + bl sub_0807CA84 + cmp r0, #0 + beq _0806F320 + movs r0, #1 +_0806F320: + adds r5, r0, #0 + b _0806F248 +_0806F324: + ldr r1, [r6, #4] + cmp r1, #0 + beq _0806F332 + mov r0, r8 + bl _call_via_r1 + b _0806F35E +_0806F332: + movs r0, #0 + b _0806F34E +_0806F336: + ldr r0, _0806F348 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0806F34C +_0806F342: + ldrh r0, [r6, #6] + b _0806F34E + .align 2, 0 +_0806F348: .4byte gUnk_03003F80 +_0806F34C: + ldrh r0, [r6, #4] +_0806F34E: + cmp r7, #0 + beq _0806F35A + mov r1, r8 + bl sub_08056398 + b _0806F35E +_0806F35A: + bl sub_08056378 +_0806F35E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0806F364 +sub_0806F364: @ 0x0806F364 + push {lr} + ldr r2, _0806F384 @ =gUnk_02033A90 + ldrb r0, [r2, #8] + movs r1, #0x80 + eors r0, r1 + strb r0, [r2, #8] + ldrb r1, [r2, #8] + adds r0, r1, #7 + asrs r0, r0, #3 + ldr r3, _0806F388 @ =0x00000868 + adds r1, r2, r3 + adds r0, r0, r1 + movs r1, #0x10 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_0806F384: .4byte gUnk_02033A90 +_0806F388: .4byte 0x00000868 + + thumb_func_start sub_0806F38C +sub_0806F38C: @ 0x0806F38C + ldr r0, _0806F398 @ =gUnk_02033A90 + ldrb r1, [r0, #8] + movs r2, #0x80 + eors r1, r2 + strb r1, [r0, #8] + bx lr + .align 2, 0 +_0806F398: .4byte gUnk_02033A90 + + thumb_func_start sub_0806F39C +sub_0806F39C: @ 0x0806F39C + push {r4, lr} + adds r3, r0, #0 + ldr r2, _0806F3B8 @ =gLinkEntity + ldrb r1, [r2, #0x14] + movs r0, #2 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _0806F3BC + movs r0, #0x2e + ldrsh r1, [r3, r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + b _0806F3C4 + .align 2, 0 +_0806F3B8: .4byte gLinkEntity +_0806F3BC: + movs r0, #0x32 + ldrsh r1, [r3, r0] + movs r2, #0x32 + ldrsh r0, [r4, r2] +_0806F3C4: + subs r1, r1, r0 + cmp r1, #0 + bge _0806F3CC + rsbs r1, r1, #0 +_0806F3CC: + cmp r1, #0x40 + bgt _0806F3D4 + movs r0, #0 + b _0806F3E2 +_0806F3D4: + movs r0, #0x24 + ldrsh r1, [r3, r0] + ldrb r2, [r3, #0x15] + adds r0, r4, #0 + bl sub_080027EA + movs r0, #1 +_0806F3E2: + pop {r4, pc} + + thumb_func_start sub_0806F3E4 +sub_0806F3E4: @ 0x0806F3E4 + push {r4, r5, r6, lr} + sub sp, #0x88 + adds r5, r0, #0 + ldr r2, _0806F408 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1c] + movs r0, #0x7f + ands r0, r1 + cmp r0, #1 + bne _0806F4E0 + ldrb r0, [r2, #0x1d] + cmp r0, #2 + beq _0806F420 + cmp r0, #2 + bgt _0806F40C + cmp r0, #1 + beq _0806F416 + b _0806F410 + .align 2, 0 +_0806F408: .4byte gUnk_03003F80 +_0806F40C: + cmp r0, #3 + beq _0806F42A +_0806F410: + adds r3, r5, #0 + adds r3, #0x46 + b _0806F436 +_0806F416: + adds r1, r5, #0 + adds r1, #0x46 + ldrh r0, [r1] + adds r0, #0x40 + b _0806F432 +_0806F420: + adds r1, r5, #0 + adds r1, #0x46 + ldrh r0, [r1] + adds r0, #0x80 + b _0806F432 +_0806F42A: + adds r1, r5, #0 + adds r1, #0x46 + ldrh r0, [r1] + adds r0, #0xc0 +_0806F432: + strh r0, [r1] + adds r3, r1, #0 +_0806F436: + adds r2, r3, #0 + ldrh r0, [r2] + movs r1, #0xa0 + lsls r1, r1, #3 + cmp r0, r1 + bls _0806F444 + strh r1, [r2] +_0806F444: + ldr r6, _0806F4BC @ =gLinkEntity + ldrb r0, [r6, #0x14] + movs r1, #0xe + ands r1, r0 + ldr r0, _0806F4C0 @ =gUnk_08126EE4 + adds r1, r1, r0 + mov r2, sp + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r4, [r6, #0x2e] + adds r0, r0, r4 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r6, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldrh r4, [r3] + adds r0, r5, #0 + mov r1, sp + bl sub_080045C4 + adds r2, r0, #0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806F5BC + mov r0, sp + adds r1, r5, #0 + movs r2, #4 + movs r3, #4 + bl sub_0800419C + cmp r0, #0 + beq _0806F4E0 + ldrb r0, [r5, #0x1c] + movs r1, #0xf + ands r1, r0 + cmp r1, #2 + bne _0806F4C8 + movs r0, #3 + strb r0, [r5, #0xd] + str r5, [r6, #0x70] + ldr r1, _0806F4C4 @ =gUnk_03003F80 + movs r0, #7 + strb r0, [r1, #0x1c] + movs r0, #0x11 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08077CB8 + cmp r0, #0 + beq _0806F4B4 + str r5, [r0, #0x54] + str r0, [r5, #0x50] +_0806F4B4: + movs r0, #0xed + bl sub_080A3268 + b _0806F4D8 + .align 2, 0 +_0806F4BC: .4byte gLinkEntity +_0806F4C0: .4byte gUnk_08126EE4 +_0806F4C4: .4byte gUnk_03003F80 +_0806F4C8: + cmp r1, #1 + bne _0806F4D8 + ldr r0, _0806F4DC @ =gUnk_03003F80 + ldr r0, [r0, #0x2c] + strb r1, [r0, #0xa] + movs r0, #0xef + bl sub_080A3268 +_0806F4D8: + movs r0, #1 + b _0806F4E2 + .align 2, 0 +_0806F4DC: .4byte gUnk_03003F80 +_0806F4E0: + movs r0, #0 +_0806F4E2: + add sp, #0x88 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806F4E8 +sub_0806F4E8: @ 0x0806F4E8 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0x1d] + movs r2, #3 + ands r2, r0 + cmp r2, #1 + beq _0806F516 + cmp r2, #1 + bgt _0806F500 + cmp r2, #0 + beq _0806F510 + b _0806F51C +_0806F500: + cmp r2, #2 + beq _0806F50A + cmp r2, #3 + beq _0806F516 + b _0806F51C +_0806F50A: + adds r1, #0x62 + movs r0, #0xfe + b _0806F51A +_0806F510: + adds r1, #0x62 + movs r0, #2 + b _0806F51A +_0806F516: + adds r1, #0x62 + movs r0, #0 +_0806F51A: + strb r0, [r1] +_0806F51C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806F520 +sub_0806F520: @ 0x0806F520 + push {lr} + adds r2, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x93 + beq _0806F544 + adds r3, r2, #0 + adds r3, #0x3a + ldrb r1, [r3] + movs r0, #0xfb + ands r0, r1 + movs r1, #0 + strb r0, [r3] + adds r0, r2, #0 + adds r0, #0x63 + strb r1, [r0] + movs r0, #0 + b _0806F546 +_0806F544: + movs r0, #1 +_0806F546: + pop {pc} + + thumb_func_start sub_0806F548 +sub_0806F548: @ 0x0806F548 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080041A0 + cmp r0, #0 + bne _0806F55A + movs r0, #0 + b _0806F562 +_0806F55A: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806F58C +_0806F562: + pop {r4, r5, pc} + + thumb_func_start sub_0806F564 +sub_0806F564: @ 0x0806F564 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r3, r2, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r5, #0 + bl sub_080045D4 + bl sub_0806F5A4 + movs r2, #0 + ldrb r1, [r4, #0x14] + cmp r1, r0 + bne _0806F588 + movs r2, #1 +_0806F588: + adds r0, r2, #0 + pop {r4, r5, pc} + + thumb_func_start sub_0806F58C +sub_0806F58C: @ 0x0806F58C + push {r4, lr} + adds r4, r0, #0 + bl sub_0806FCA0 + movs r2, #0 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + cmp r1, r0 + bne _0806F5A0 + movs r2, #1 +_0806F5A0: + adds r0, r2, #0 + pop {r4, pc} + + thumb_func_start sub_0806F5A4 +sub_0806F5A4: @ 0x0806F5A4 + ldr r1, _0806F5AC @ =gUnk_08114F38 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806F5AC: .4byte gUnk_08114F38 + + thumb_func_start sub_0806F5B0 +sub_0806F5B0: @ 0x0806F5B0 + ldr r1, _0806F5B8 @ =gUnk_08114F58 + adds r0, r0, r1 + ldrb r0, [r0] + bx lr + .align 2, 0 +_0806F5B8: .4byte gUnk_08114F58 + + thumb_func_start sub_0806F5BC +sub_0806F5BC: @ 0x0806F5BC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _0806F620 + ldr r0, _0806F628 @ =gUnk_080C9160 + mov r8, r0 + lsls r4, r2, #3 + lsls r0, r2, #4 + add r0, r8 + movs r2, #0 + ldrsh r0, [r0, r2] + lsls r5, r1, #0x10 + asrs r5, r5, #0x10 + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r6, #0x80 + lsls r6, r6, #1 + adds r1, r6, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r7, #0x2c] + adds r1, r1, r0 + str r1, [r7, #0x2c] + adds r4, #0x40 + lsls r4, r4, #1 + add r4, r8 + movs r1, #0 + ldrsh r0, [r4, r1] + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r6, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r7, #0x30] + subs r1, r1, r0 + str r1, [r7, #0x30] +_0806F620: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806F628: .4byte gUnk_080C9160 + + thumb_func_start sub_0806F62C +sub_0806F62C: @ 0x0806F62C + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + ldr r0, _0806F698 @ =gUnk_080C9160 + mov sb, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + lsls r0, r4, #1 + add r0, sb + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + mov r8, r1 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r6, #0x2c] + adds r1, r1, r0 + str r1, [r6, #0x2c] + adds r4, #0x40 + lsls r4, r4, #1 + add r4, sb + movs r1, #0 + ldrsh r0, [r4, r1] + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r1, r8 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r6, #0x30] + subs r1, r1, r0 + str r1, [r6, #0x30] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806F698: .4byte gUnk_080C9160 + + thumb_func_start sub_0806F69C +sub_0806F69C: @ 0x0806F69C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r1, [r6, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0806F6FE + ldr r5, _0806F700 @ =gUnk_080C9160 + ldrb r0, [r6, #0x15] + lsls r0, r0, #4 + adds r0, r0, r5 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0x24 + ldrsh r1, [r6, r2] + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r6, #0x2c] + adds r1, r1, r0 + str r1, [r6, #0x2c] + ldrb r0, [r6, #0x15] + lsls r0, r0, #4 + adds r0, #0x80 + adds r0, r0, r5 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r2, #0x24 + ldrsh r1, [r6, r2] + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r6, #0x30] + subs r1, r1, r0 + str r1, [r6, #0x30] +_0806F6FE: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806F700: .4byte gUnk_080C9160 + + thumb_func_start sub_0806F704 +sub_0806F704: @ 0x0806F704 + push {r4, r5, r6, lr} + lsls r3, r1, #4 + movs r2, #0xfc + lsls r2, r2, #2 + adds r6, r2, #0 + ands r3, r6 + movs r5, #8 + orrs r3, r5 + ldr r4, _0806F72C @ =gUnk_03000BF0 + ldrh r2, [r4, #6] + adds r2, r2, r3 + strh r2, [r0, #0x2e] + lsrs r1, r1, #2 + ands r1, r6 + orrs r1, r5 + ldrh r2, [r4, #8] + adds r2, r2, r1 + strh r2, [r0, #0x32] + pop {r4, r5, r6, pc} + .align 2, 0 +_0806F72C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0806F730 +sub_0806F730: @ 0x0806F730 + push {r4, r5, r6, lr} + movs r6, #0x3f + movs r1, #0x2e + ldrsh r2, [r0, r1] + ldr r4, [r0, #0x48] + movs r1, #0 + ldrsb r1, [r4, r1] + adds r2, r2, r1 + ldr r3, _0806F764 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r5, r2, r1 + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r2, #1 + ldrsb r2, [r4, r2] + adds r1, r1, r2 + ldrh r2, [r3, #8] + subs r1, r1, r2 + ldrb r0, [r0, #0x14] + cmp r0, #2 + beq _0806F77E + cmp r0, #2 + bgt _0806F768 + cmp r0, #0 + beq _0806F772 + b _0806F788 + .align 2, 0 +_0806F764: .4byte gUnk_03000BF0 +_0806F768: + cmp r0, #4 + beq _0806F778 + cmp r0, #6 + beq _0806F784 + b _0806F788 +_0806F772: + ldrb r0, [r4, #5] + subs r1, r1, r0 + b _0806F788 +_0806F778: + ldrb r0, [r4, #5] + adds r1, r1, r0 + b _0806F788 +_0806F77E: + ldrb r0, [r4, #2] + adds r5, r5, r0 + b _0806F788 +_0806F784: + ldrb r0, [r4, #2] + subs r5, r5, r0 +_0806F788: + lsrs r0, r5, #4 + ands r0, r6 + lsrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + adds r0, r0, r1 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806F798 +sub_0806F798: @ 0x0806F798 + push {r4, r5, lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + ldr r4, [r2, #0x48] + movs r1, #0 + ldrsb r1, [r4, r1] + adds r0, r0, r1 + ldr r3, _0806F7CC @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + movs r5, #0x32 + ldrsh r1, [r2, r5] + movs r2, #1 + ldrsb r2, [r4, r2] + adds r1, r1, r2 + ldrh r2, [r3, #8] + subs r1, r1, r2 + movs r2, #0x3f + lsrs r0, r0, #4 + ands r0, r2 + lsrs r1, r1, #4 + ands r1, r2 + lsls r1, r1, #6 + adds r0, r0, r1 + pop {r4, r5, pc} + .align 2, 0 +_0806F7CC: .4byte gUnk_03000BF0 + + thumb_func_start sub_0806F7D0 +sub_0806F7D0: @ 0x0806F7D0 + push {r4, lr} + ldr r4, _0806F7E4 @ =gUnk_02025EB0 + bl sub_0806F730 + ldr r1, _0806F7E8 @ =0x00002004 + adds r4, r4, r1 + adds r0, r0, r4 + ldrb r0, [r0] + pop {r4, pc} + .align 2, 0 +_0806F7E4: .4byte gUnk_02025EB0 +_0806F7E8: .4byte 0x00002004 + + thumb_func_start sub_0806F7EC +sub_0806F7EC: @ 0x0806F7EC + push {r4, lr} + ldr r4, _0806F800 @ =gUnk_02025EB0 + bl sub_0806F730 + lsls r0, r0, #1 + adds r4, #4 + adds r0, r0, r4 + ldrh r0, [r0] + pop {r4, pc} + .align 2, 0 +_0806F800: .4byte gUnk_02025EB0 + + thumb_func_start sub_0806F804 +sub_0806F804: @ 0x0806F804 + lsrs r0, r0, #4 + movs r2, #0x3f + ands r0, r2 + movs r2, #0xfc + lsls r2, r2, #2 + ands r2, r1 + lsls r2, r2, #2 + adds r0, r0, r2 + ldr r1, _0806F820 @ =gUnk_02025EB0 + lsls r0, r0, #1 + adds r1, #4 + adds r0, r0, r1 + ldrh r0, [r0] + bx lr + .align 2, 0 +_0806F820: .4byte gUnk_02025EB0 + + thumb_func_start sub_0806F824 +sub_0806F824: @ 0x0806F824 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r2, #0 + adds r5, r3, #0 + movs r2, #0x2e + ldrsh r6, [r0, r2] + movs r2, #0x32 + ldrsh r3, [r0, r2] + mov r8, r3 + movs r3, #0x2e + ldrsh r2, [r1, r3] + adds r2, r2, r4 + movs r0, #0x32 + ldrsh r3, [r1, r0] + adds r3, r3, r5 + adds r0, r6, #0 + mov r1, r8 + bl sub_080045D4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806F854 +sub_0806F854: @ 0x0806F854 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r6, r2, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _0806F8D6 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0806F8D6 + movs r1, #0x2e + ldrsh r0, [r4, r1] + adds r0, r0, r3 + ldr r2, _0806F8BC @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r5, #0x3f + ands r0, r5 + movs r3, #0x32 + ldrsh r1, [r4, r3] + adds r1, r1, r6 + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r5 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #2 + movs r2, #8 + bl sub_080002F0 + cmp r0, #0 + beq _0806F8C0 + ldrb r1, [r4, #0x19] + adds r0, r5, #0 + ands r0, r1 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r1, [r4, #0x1b] + adds r0, r5, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x1b] + movs r0, #1 + b _0806F8D8 + .align 2, 0 +_0806F8BC: .4byte gUnk_03000BF0 +_0806F8C0: + ldrb r1, [r4, #0x19] + adds r0, r5, #0 + ands r0, r1 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r1, [r4, #0x1b] + adds r0, r5, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x1b] +_0806F8D6: + movs r0, #0 +_0806F8D8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806F8DC +sub_0806F8DC: @ 0x0806F8DC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0806F942 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r1, #4 + movs r2, #2 + bl sub_080002A4 + cmp r0, #0 + beq _0806F91C + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] + movs r0, #1 + b _0806F944 +_0806F91C: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r1, #4 + ldrb r2, [r5] + bl sub_080002A4 + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] +_0806F942: + movs r0, #0 +_0806F944: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806F948 +sub_0806F948: @ 0x0806F948 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0806F974 @ =gUnk_03003F80 + ldrb r0, [r1, #0xd] + cmp r0, #0xff + beq _0806F994 + ldrb r0, [r1, #0xd] + lsrs r3, r0, #2 + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _0806F978 + ldrb r2, [r4, #0x14] + subs r0, r2, #1 + subs r0, r3, r0 + movs r1, #4 + ands r0, r1 + cmp r0, #0 + bne _0806F978 + adds r0, r2, #0 + b _0806F996 + .align 2, 0 +_0806F974: .4byte gUnk_03003F80 +_0806F978: + movs r2, #0 + cmp r3, #4 + bls _0806F980 + movs r2, #1 +_0806F980: + lsls r2, r2, #6 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + movs r0, #6 + ands r3, r0 + strb r3, [r4, #0x14] +_0806F994: + ldrb r0, [r4, #0x14] +_0806F996: + pop {r4, pc} + + thumb_func_start sub_0806F998 +sub_0806F998: @ 0x0806F998 + push {r4, lr} + adds r2, r0, #0 + ldrb r4, [r2, #0x14] + ldrb r1, [r2, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0806F9E6 + movs r0, #0x1c + ands r0, r1 + lsrs r3, r0, #2 + movs r1, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0806F9C4 + subs r0, r3, r4 + adds r0, #1 + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _0806F9E6 +_0806F9C4: + ldrb r0, [r2, #0x15] + lsrs r0, r0, #2 + movs r1, #0x7e + ands r0, r1 + strb r0, [r2, #0x14] + adds r4, r0, #0 + cmp r4, #4 + bhi _0806F9DE + ldrb r1, [r2, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _0806F9E4 +_0806F9DE: + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 +_0806F9E4: + strb r0, [r2, #0x18] +_0806F9E6: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806F9EC +sub_0806F9EC: @ 0x0806F9EC + push {lr} + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + muls r0, r1, r0 + cmp r0, #0 + bge _0806F9FE + adds r0, #0xff +_0806F9FE: + lsls r0, r0, #8 + asrs r0, r0, #0x10 + pop {pc} + + thumb_func_start sub_0806FA04 +sub_0806FA04: @ 0x0806FA04 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0 + beq _0806FA20 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + bl __divsi3 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + b _0806FA22 +_0806FA20: + movs r0, #0 +_0806FA22: + pop {pc} + + thumb_func_start sub_0806FA24 +sub_0806FA24: @ 0x0806FA24 + push {lr} + movs r2, #0 + movs r3, #0 + bl sub_0806FA48 + pop {pc} + + thumb_func_start sub_0806FA30 +sub_0806FA30: @ 0x0806FA30 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_0806FA48 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FAB0 + pop {r4, r5, pc} + + thumb_func_start sub_0806FA48 +sub_0806FA48: @ 0x0806FA48 + push {r4, lr} + ldr r4, [r0, #0x2c] + adds r4, r4, r2 + str r4, [r1, #0x2c] + ldr r2, [r0, #0x30] + adds r2, r2, r3 + str r2, [r1, #0x30] + ldr r2, [r0, #0x34] + str r2, [r1, #0x34] + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r1, #0 + adds r0, #0x38 + strb r2, [r0] + adds r0, r1, #0 + bl sub_08016A04 + pop {r4, pc} + + thumb_func_start sub_0806FA6C +sub_0806FA6C: @ 0x0806FA6C + push {lr} + adds r2, r0, #0 + adds r2, #0x62 + ldrb r2, [r2] + adds r3, r1, #0 + adds r3, #0x62 + strb r2, [r3] + adds r2, r0, #0 + adds r2, #0x63 + ldrb r2, [r2] + adds r3, #1 + strb r2, [r3] + movs r2, #0 + movs r3, #0 + bl sub_0806FA48 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0806FA90 +sub_0806FA90: @ 0x0806FA90 + push {r4, r5, lr} + adds r4, r0, #0 + adds r4, #0x62 + ldrb r4, [r4] + movs r5, #0x62 + strb r4, [r5, r1] + adds r4, r0, #0 + adds r4, #0x63 + ldrb r4, [r4] + movs r5, #0x63 + strb r4, [r5, r1] + lsls r2, r2, #0x10 + lsls r3, r3, #0x10 + bl sub_0806FA48 + pop {r4, r5, pc} + + thumb_func_start sub_0806FAB0 +sub_0806FAB0: @ 0x0806FAB0 + ldr r2, _0806FAD4 @ =gUnk_08114F78 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, #0x29 + movs r2, #7 + ands r2, r0 + ldrb r3, [r1] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0806FAD4: .4byte gUnk_08114F78 + + thumb_func_start sub_0806FAD8 +sub_0806FAD8: @ 0x0806FAD8 + ldr r2, _0806FAFC @ =gUnk_08114F80 + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, #0x29 + movs r2, #7 + ands r2, r0 + ldrb r3, [r1] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0806FAFC: .4byte gUnk_08114F80 + + thumb_func_start sub_0806FB00 +sub_0806FB00: @ 0x0806FB00 + push {r4, lr} + mov ip, r0 + adds r4, r1, #0 + cmp r3, #0 + bne _0806FB0C + movs r3, #1 +_0806FB0C: + mov r1, ip + adds r1, #0x7e + movs r0, #0 + strb r0, [r1] + mov r0, ip + adds r0, #0x7f + strb r3, [r0] + mov r0, ip + ldrh r1, [r0, #0x2e] + adds r0, #0x80 + strh r1, [r0] + mov r1, ip + ldrh r0, [r1, #0x32] + adds r1, #0x82 + strh r0, [r1] + mov r0, ip + adds r0, #0x84 + strh r4, [r0] + adds r0, #2 + strh r2, [r0] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806FB38 +sub_0806FB38: @ 0x0806FB38 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r5, #0 + adds r6, #0x7e + adds r7, r5, #0 + adds r7, #0x7f + ldrb r0, [r6] + ldrb r1, [r7] + cmp r0, r1 + bhs _0806FBA0 + adds r0, #1 + strb r0, [r6] + adds r0, r5, #0 + adds r0, #0x84 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r4, r5, #0 + adds r4, #0x80 + movs r2, #0 + ldrsh r0, [r4, r2] + subs r1, r1, r0 + ldrb r0, [r6] + muls r0, r1, r0 + lsls r0, r0, #8 + ldrb r1, [r7] + bl __divsi3 + asrs r0, r0, #8 + ldrh r4, [r4] + adds r0, r0, r4 + strh r0, [r5, #0x2e] + adds r0, r5, #0 + adds r0, #0x86 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r4, r5, #0 + adds r4, #0x82 + movs r2, #0 + ldrsh r0, [r4, r2] + subs r1, r1, r0 + ldrb r0, [r6] + muls r0, r1, r0 + lsls r0, r0, #8 + ldrb r1, [r7] + bl __divsi3 + asrs r0, r0, #8 + ldrh r4, [r4] + adds r0, r0, r4 + strh r0, [r5, #0x32] + movs r0, #0 + b _0806FBB2 +_0806FBA0: + adds r0, r5, #0 + adds r0, #0x84 + ldrh r0, [r0] + strh r0, [r5, #0x2e] + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + strh r0, [r5, #0x32] + movs r0, #1 +_0806FBB2: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0806FBB4 +sub_0806FBB4: @ 0x0806FBB4 + push {lr} + adds r1, r0, #0 + ldr r0, _0806FBD0 @ =gUnk_030010A0 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _0806FBC8 + ldr r0, _0806FBD4 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _0806FBCC +_0806FBC8: + movs r0, #6 + strb r0, [r1, #0xd] +_0806FBCC: + pop {pc} + .align 2, 0 +_0806FBD0: .4byte gUnk_030010A0 +_0806FBD4: .4byte gUnk_03003F80 + + thumb_func_start sub_0806FBD8 +sub_0806FBD8: @ 0x0806FBD8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806FBEC + movs r0, #0xc + bl sub_0801D8E0 + str r0, [r4, #0x48] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806FBEC +sub_0806FBEC: @ 0x0806FBEC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x48] + bl sub_0801DA0C + movs r0, #0 + str r0, [r4, #0x48] + pop {r4, pc} + + thumb_func_start sub_0806FBFC +sub_0806FBFC: @ 0x0806FBFC + push {r4, r5, r6, lr} + adds r5, r3, #0 + ldr r4, _0806FC20 @ =gLinkEntity + movs r6, #0x2e + ldrsh r3, [r4, r6] + subs r3, r3, r0 + movs r6, #0x32 + ldrsh r0, [r4, r6] + subs r0, r0, r1 + movs r1, #0 + cmp r3, r2 + bhs _0806FC1A + cmp r0, r5 + bhs _0806FC1A + movs r1, #1 +_0806FC1A: + adds r0, r1, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0806FC20: .4byte gLinkEntity + + thumb_func_start sub_0806FC24 +sub_0806FC24: @ 0x0806FC24 + push {r4, lr} + adds r4, r1, #0 + ldr r1, _0806FC44 @ =gUnk_080046A4 + bl sub_08007DD6 + cmp r0, #0 + beq _0806FC4C + lsls r0, r0, #3 + ldr r1, _0806FC48 @ =gUnk_080047F6 + adds r0, r0, r1 + ldrh r0, [r0] + asrs r0, r4 + movs r1, #1 + ands r0, r1 + b _0806FC4E + .align 2, 0 +_0806FC44: .4byte gUnk_080046A4 +_0806FC48: .4byte gUnk_080047F6 +_0806FC4C: + movs r0, #0 +_0806FC4E: + pop {r4, pc} + + thumb_func_start sub_0806FC50 +sub_0806FC50: @ 0x0806FC50 + push {r4, lr} + adds r4, r1, #0 + ldr r1, _0806FC74 @ =gUnk_080046A4 + bl sub_08007DD6 + cmp r0, #0 + beq _0806FC70 + ldr r1, _0806FC78 @ =gUnk_080047F6 + lsls r0, r0, #3 + adds r2, r0, r1 + ldrh r0, [r2] + asrs r0, r4 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0806FC7C +_0806FC70: + movs r0, #0 + b _0806FC7E + .align 2, 0 +_0806FC74: .4byte gUnk_080046A4 +_0806FC78: .4byte gUnk_080047F6 +_0806FC7C: + adds r0, r2, #0 +_0806FC7E: + pop {r4, pc} + + thumb_func_start sub_0806FC80 +sub_0806FC80: @ 0x0806FC80 + push {r4, r5, lr} + lsls r4, r2, #4 + movs r2, #0x2e + ldrsh r3, [r1, r2] + movs r5, #0x32 + ldrsh r2, [r1, r5] + adds r1, r3, #0 + bl sub_080041DC + cmp r4, r0 + bhs _0806FC9A + movs r0, #0 + b _0806FC9C +_0806FC9A: + movs r0, #1 +_0806FC9C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0806FCA0 +sub_0806FCA0: @ 0x0806FCA0 + push {lr} + bl sub_080045C4 + bl sub_0806F5A4 + pop {pc} + + thumb_func_start sub_0806FCAC +sub_0806FCAC: @ 0x0806FCAC + push {lr} + bl sub_080045C4 + bl sub_0806F5B0 + pop {pc} + + thumb_func_start sub_0806FCB8 +sub_0806FCB8: @ 0x0806FCB8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #0x2e + ldrsh r0, [r4, r5] + subs r0, r0, r1 + movs r5, #0x32 + ldrsh r1, [r4, r5] + subs r1, r1, r2 + adds r2, r3, #0 + bl sub_0806FCD0 + pop {r4, r5, pc} + + thumb_func_start sub_0806FCD0 +sub_0806FCD0: @ 0x0806FCD0 + push {r4, lr} + movs r3, #0 + adds r4, r2, #0 + muls r4, r2, r4 + adds r2, r4, #0 + adds r4, r0, #0 + muls r4, r0, r4 + adds r0, r4, #0 + adds r4, r1, #0 + muls r4, r1, r4 + adds r1, r4, #0 + adds r0, r0, r1 + cmp r2, r0 + blt _0806FCEE + movs r3, #1 +_0806FCEE: + adds r0, r3, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0806FCF4 +sub_0806FCF4: @ 0x0806FCF4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r2, #0 + adds r5, r3, #0 + movs r2, #0 + cmp r1, #0 + bge _0806FD04 + rsbs r1, r1, #0 +_0806FD04: + cmp r4, #0 + beq _0806FD1A + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r1, r0, #0 + adds r0, r4, #0 + muls r0, r1, r0 + lsrs r1, r0, #8 + subs r2, r4, r1 +_0806FD1A: + cmp r5, #0 + beq _0806FD22 + cmp r5, #3 + bne _0806FD24 +_0806FD22: + rsbs r2, r2, #0 +_0806FD24: + cmp r5, #0 + beq _0806FD2C + cmp r5, #2 + bne _0806FD32 +_0806FD2C: + adds r0, r6, #0 + adds r0, #0x63 + b _0806FD36 +_0806FD32: + adds r0, r6, #0 + adds r0, #0x62 +_0806FD36: + strb r2, [r0] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0806FD3C +sub_0806FD3C: @ 0x0806FD3C + ldrb r2, [r0, #0x18] + movs r1, #0x31 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #0x18] + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start sub_0806FD54 +sub_0806FD54: @ 0x0806FD54 + push {r4, lr} + adds r3, r0, #0 + ldr r0, _0806FD6C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x10 + ands r0, r1 + cmp r0, #0 + bne _0806FD70 + movs r0, #0 + b _0806FD84 + .align 2, 0 +_0806FD6C: .4byte gUnk_03003F80 +_0806FD70: + ldr r0, _0806FD88 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r4, #0x32 + ldrsh r2, [r0, r4] + subs r2, #9 + adds r0, r3, #0 + movs r3, #0x48 + bl sub_0806FCB8 +_0806FD84: + pop {r4, pc} + .align 2, 0 +_0806FD88: .4byte gLinkEntity + + thumb_func_start sub_0806FD8C +sub_0806FD8C: @ 0x0806FD8C + push {lr} + ldr r0, _0806FD9C @ =gUnk_020000C0 + movs r1, #0xc0 + lsls r1, r1, #4 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_0806FD9C: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FDA0 +sub_0806FDA0: @ 0x0806FDA0 + push {r4, lr} + movs r3, #1 + ldr r1, _0806FDD8 @ =gUnk_020000C0 + movs r4, #0xff + movs r2, #0x61 + adds r2, r2, r1 + mov ip, r2 + adds r2, r1, #0 + adds r2, #0x40 + adds r1, r0, #0 + adds r1, #0x28 +_0806FDB6: + ldrb r0, [r2] + lsls r0, r0, #0x1f + cmp r0, #0 + bne _0806FDDC + strb r3, [r1] + ldrb r0, [r2] + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + strb r4, [r2, #1] + strb r4, [r2, #0x11] + mov r0, ip + strb r4, [r0] + strb r4, [r0, #0x10] + movs r0, #1 + b _0806FDEA + .align 2, 0 +_0806FDD8: .4byte gUnk_020000C0 +_0806FDDC: + movs r0, #0x40 + add ip, r0 + adds r2, #0x40 + adds r3, #1 + cmp r3, #0x2f + bls _0806FDB6 + movs r0, #0 +_0806FDEA: + pop {r4, pc} + + thumb_func_start sub_0806FDEC +sub_0806FDEC: @ 0x0806FDEC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r4, r1, #0 + bl sub_0806FDA0 + cmp r0, #0 + bne _0806FE02 + movs r0, #0 + b _0806FE74 +_0806FE02: + adds r0, r6, #0 + bl sub_0801D230 + adds r0, r6, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #6 + ldr r1, _0806FE7C @ =gUnk_020000C0 + adds r5, r0, r1 + movs r7, #0 + ldrh r1, [r4, #2] + ldr r0, _0806FE80 @ =0x000003FF + ands r0, r1 + movs r1, #0x27 + adds r1, r1, r6 + mov r8, r1 + cmp r0, #0 + beq _0806FE6C +_0806FE26: + ldr r1, [r4] + lsls r1, r1, #0x16 + lsrs r1, r1, #0x16 + adds r0, r6, #0 + bl sub_0801D040 + adds r2, r0, #0 + ldr r3, [r4] + lsls r1, r3, #6 + lsrs r1, r1, #0x16 + lsls r3, r3, #0x10 + lsrs r3, r3, #0x1a + adds r0, r5, #0 + bl sub_0806FEE8 + ldrb r1, [r4, #3] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0806FE56 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0806FEFC +_0806FE56: + adds r5, #0x10 + adds r4, #4 + adds r7, #1 + cmp r7, #3 + bhi _0806FE6C + ldrh r1, [r4, #2] + ldr r2, _0806FE80 @ =0x000003FF + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0806FE26 +_0806FE6C: + movs r0, #0 + mov r1, r8 + strb r0, [r1] + movs r0, #1 +_0806FE74: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0806FE7C: .4byte gUnk_020000C0 +_0806FE80: .4byte 0x000003FF + + thumb_func_start sub_0806FE84 +sub_0806FE84: @ 0x0806FE84 + push {r4, r5, r6, lr} + adds r0, #0x28 + ldrb r2, [r0] + movs r1, #0 + strb r1, [r0] + subs r0, r2, #1 + cmp r0, #0x7e + bhi _0806FEB4 + lsls r1, r2, #6 + ldr r0, _0806FEB8 @ =gUnk_020000C0 + adds r6, r1, r0 + movs r5, #0 + adds r4, r6, #0 +_0806FE9E: + ldrb r0, [r4, #5] + bl sub_0801D244 + adds r4, #0x10 + adds r5, #1 + cmp r5, #3 + bls _0806FE9E + adds r0, r6, #0 + movs r1, #0x40 + bl sub_0801D630 +_0806FEB4: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806FEB8: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FEBC +sub_0806FEBC: @ 0x0806FEBC + adds r0, #0x28 + ldrb r3, [r0] + lsls r3, r3, #6 + lsls r1, r1, #4 + ldr r0, _0806FEE4 @ =gUnk_020000C0 + adds r1, r1, r0 + adds r3, r3, r1 + movs r0, #0 + str r0, [r3] + str r0, [r3, #4] + str r0, [r3, #8] + str r2, [r3, #0xc] + ldrb r0, [r3] + movs r1, #1 + orrs r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + bx lr + .align 2, 0 +_0806FEE4: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FEE8 +sub_0806FEE8: @ 0x0806FEE8 + strb r3, [r0, #8] + strh r1, [r0, #2] + strb r2, [r0, #5] + ldrb r1, [r0] + movs r2, #8 + orrs r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start sub_0806FEFC +sub_0806FEFC: @ 0x0806FEFC + adds r1, #0x60 + ldrh r1, [r1] + ldrb r2, [r0, #8] + adds r1, r1, r2 + strh r1, [r0, #0xa] + ldrb r1, [r0] + movs r2, #4 + orrs r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start sub_0806FF10 +sub_0806FF10: @ 0x0806FF10 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r2, #0 + adds r0, #0x28 + ldrb r2, [r0] + lsls r2, r2, #6 + lsls r1, r1, #4 + ldr r0, _0806FF44 @ =gUnk_020000C0 + adds r1, r1, r0 + adds r4, r2, r1 + adds r0, r5, #0 + bl sub_0801D108 + ldrb r1, [r4, #5] + cmp r1, r0 + beq _0806FF40 + adds r0, r1, #0 + bl sub_0801D244 + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0801D040 + strb r0, [r4, #5] +_0806FF40: + pop {r4, r5, r6, pc} + .align 2, 0 +_0806FF44: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FF48 +sub_0806FF48: @ 0x0806FF48 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #6 + lsls r1, r1, #4 + ldr r3, _0806FF5C @ =gUnk_020000C0 + adds r1, r1, r3 + adds r0, r0, r1 + strb r2, [r0, #4] + bx lr + .align 2, 0 +_0806FF5C: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FF60 +sub_0806FF60: @ 0x0806FF60 + push {lr} + adds r3, r2, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #6 + ldr r2, _0806FF84 @ =gUnk_020000C0 + adds r0, r0, r2 + lsls r1, r1, #4 + adds r2, r0, r1 + ldrb r0, [r2, #1] + cmp r0, r3 + beq _0806FF82 + strb r3, [r2, #1] + ldrb r0, [r2] + movs r1, #8 + orrs r0, r1 + strb r0, [r2] +_0806FF82: + pop {pc} + .align 2, 0 +_0806FF84: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FF88 +sub_0806FF88: @ 0x0806FF88 + push {r4, r5, lr} + adds r5, r1, #0 + adds r0, #0x28 + ldrb r4, [r0] + lsls r4, r4, #6 + ldr r0, _0806FFB8 @ =gUnk_020000C0 + adds r4, r4, r0 + lsls r5, r5, #4 + adds r5, r4, r5 + lsls r2, r2, #4 + adds r4, r4, r2 + ldrh r0, [r5, #2] + ldrb r1, [r5, #1] + bl sub_080700C8 + ldrb r1, [r5, #6] + ldrb r2, [r0] + adds r1, r1, r2 + strb r1, [r4, #6] + ldrb r1, [r5, #7] + ldrb r0, [r0, #1] + adds r1, r1, r0 + strb r1, [r4, #7] + pop {r4, r5, pc} + .align 2, 0 +_0806FFB8: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FFBC +sub_0806FFBC: @ 0x0806FFBC + push {r4, lr} + adds r0, #0x28 + ldrb r0, [r0] + lsls r0, r0, #6 + lsls r1, r1, #4 + ldr r4, _0806FFD4 @ =gUnk_020000C0 + adds r1, r1, r4 + adds r0, r0, r1 + strb r2, [r0, #6] + strb r3, [r0, #7] + pop {r4, pc} + .align 2, 0 +_0806FFD4: .4byte gUnk_020000C0 + + thumb_func_start sub_0806FFD8 +sub_0806FFD8: @ 0x0806FFD8 + push {r4, r5, lr} + adds r5, r1, #0 + adds r0, #0x28 + ldrb r4, [r0] + lsls r4, r4, #6 + ldr r0, _08070008 @ =gUnk_020000C0 + adds r4, r4, r0 + lsls r5, r5, #4 + adds r5, r4, r5 + lsls r2, r2, #4 + adds r4, r4, r2 + ldrh r0, [r5, #2] + ldrb r1, [r5, #1] + bl sub_080700C8 + ldrb r1, [r5, #6] + ldrb r2, [r0, #2] + adds r1, r1, r2 + strb r1, [r4, #6] + ldrb r1, [r5, #7] + ldrb r0, [r0, #3] + adds r1, r1, r0 + strb r1, [r4, #7] + pop {r4, r5, pc} + .align 2, 0 +_08070008: .4byte gUnk_020000C0 + + thumb_func_start sub_0807000C +sub_0807000C: @ 0x0807000C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r6, #0 + adds r7, #0x28 + ldrb r4, [r7] + lsls r4, r4, #6 + ldr r0, _08070074 @ =gUnk_020000C0 + adds r4, r4, r0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0807007C + adds r5, r0, #0 + adds r0, r4, #0 + movs r1, #1 + bl sub_0807007C + orrs r5, r0 + adds r0, r4, #0 + movs r1, #2 + bl sub_0807007C + orrs r5, r0 + adds r0, r4, #0 + movs r1, #3 + bl sub_0807007C + orrs r5, r0 + cmp r5, #0 + beq _08070072 + ldr r3, _08070078 @ =gUnk_02024490 + adds r2, r6, #0 + adds r2, #0x26 + ldrb r1, [r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r7] + strb r1, [r0, #7] + ldrb r1, [r2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r2, [r0, #4] + movs r1, #0xf + ands r1, r2 + movs r2, #0x30 + orrs r1, r2 + strb r1, [r0, #4] +_08070072: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08070074: .4byte gUnk_020000C0 +_08070078: .4byte gUnk_02024490 + + thumb_func_start sub_0807007C +sub_0807007C: @ 0x0807007C + push {lr} + lsls r1, r1, #4 + adds r2, r0, r1 + ldrb r1, [r2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080700C4 + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080700C4 + ldrb r0, [r2, #1] + cmp r0, #0xff + beq _080700C4 + ldrh r0, [r2, #2] + lsls r0, r0, #4 + ldr r1, _080700C0 @ =gUnk_080029B4 + adds r3, r0, r1 + ldr r1, [r3, #4] + cmp r1, #0 + beq _080700C4 + ldrb r0, [r2, #1] + lsls r0, r0, #2 + adds r0, r1, r0 + ldrb r1, [r0] + strb r1, [r2, #9] + ldrh r1, [r0, #2] + lsls r1, r1, #5 + ldr r0, [r3, #8] + adds r0, r0, r1 + str r0, [r2, #0xc] + movs r0, #1 + b _080700C6 + .align 2, 0 +_080700C0: .4byte gUnk_080029B4 +_080700C4: + movs r0, #0 +_080700C6: + pop {pc} + + thumb_func_start sub_080700C8 +sub_080700C8: @ 0x080700C8 + lsls r0, r0, #1 + ldr r2, _080700E4 @ =gUnk_089FB780 + adds r0, r0, r2 + ldrh r0, [r0] + subs r2, #0x10 + adds r0, r0, r2 + adds r1, r0, r1 + ldrb r0, [r1] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r2] + adds r0, r1, r0 + bx lr + .align 2, 0 +_080700E4: .4byte gUnk_089FB780 + + thumb_func_start sub_080700E8 +sub_080700E8: @ 0x080700E8 + push {lr} + ldr r2, _080700FC @ =gUnk_0811B98C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080700FC: .4byte gUnk_0811B98C + + thumb_func_start sub_08070100 +sub_08070100: @ 0x08070100 + push {r4, r5, lr} + adds r5, r0, #0 + movs r2, #1 + movs r3, #1 + strb r3, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + ldrb r0, [r5, #0x14] + lsls r0, r0, #2 + strb r0, [r5, #0x15] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + movs r0, #0x40 + str r0, [r5, #0x74] + movs r0, #0xf0 + lsls r0, r0, #1 + str r0, [r5, #0x78] + ldr r2, _0807017C @ =gLinkEntity + ldr r1, _08070180 @ =gUnk_0811B9A0 + ldrb r0, [r5, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r4, [r2, #0x2e] + adds r0, r0, r4 + strh r0, [r5, #0x2e] + ldrb r0, [r5, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] + adds r1, r5, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + subs r1, #1 + movs r0, #0x8a + strb r0, [r1] + ldr r0, _08070184 @ =gUnk_0811B9D0 + str r0, [r5, #0x48] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _08070188 + strb r3, [r5, #0xa] + b _0807018C + .align 2, 0 +_0807017C: .4byte gLinkEntity +_08070180: .4byte gUnk_0811B9A0 +_08070184: .4byte gUnk_0811B9D0 +_08070188: + movs r0, #0 + strb r0, [r5, #0xa] +_0807018C: + ldrb r1, [r2, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r5, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x1b] + ldrb r3, [r5, #0x14] + lsrs r3, r3, #1 + lsls r3, r3, #3 + ldr r0, _080701F0 @ =gUnk_0811B9A8 + adds r3, r3, r0 + ldrb r1, [r3] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r5, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + ldrb r1, [r3, #1] + lsls r1, r1, #7 + movs r2, #0x7f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + ldrb r0, [r3, #4] + adds r4, r5, #0 + adds r4, #0x58 + strb r0, [r4] + movs r0, #2 + ldrsb r0, [r3, r0] + str r0, [r5, #0x6c] + movs r0, #3 + ldrsb r0, [r3, r0] + str r0, [r5, #0x70] + adds r0, r5, #0 + bl sub_0801766C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_08004260 + ldr r0, _080701F4 @ =0x000001DD + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_080701F0: .4byte gUnk_0811B9A8 +_080701F4: .4byte 0x000001DD + + thumb_func_start sub_080701F8 +sub_080701F8: @ 0x080701F8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r0, _08070244 @ =gUnk_0811B9C8 + ldrb r1, [r5, #0x14] + adds r2, r1, r0 + movs r6, #0 + ldrsb r6, [r2, r6] + adds r1, #1 + adds r1, r1, r0 + movs r7, #0 + ldrsb r7, [r1, r7] + adds r0, r5, #0 + movs r1, #0xa + adds r2, r6, #0 + adds r3, r7, #0 + bl sub_08008782 + adds r4, r0, #0 + cmp r4, #0 + beq _08070248 + ldrb r1, [r4, #5] + ldrb r2, [r4, #2] + movs r0, #0x53 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08070260 + ldrb r0, [r4, #3] + strb r0, [r1, #0xe] + ldrh r0, [r5, #0x2e] + adds r0, r0, r6 + strh r0, [r1, #0x2e] + ldrh r0, [r5, #0x32] + adds r0, r0, r7 + strh r0, [r1, #0x32] + b _08070260 + .align 2, 0 +_08070244: .4byte gUnk_0811B9C8 +_08070248: + ldr r0, [r5, #0x74] + subs r0, #1 + str r0, [r5, #0x74] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _08070260 + ldr r0, [r5, #0x78] + subs r0, #1 + str r0, [r5, #0x78] + cmp r0, r1 + bne _08070268 +_08070260: + adds r0, r5, #0 + bl sub_08070458 + b _0807037A +_08070268: + adds r0, r5, #0 + bl sub_08004274 + adds r0, r5, #0 + bl sub_0806F69C + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08070280 + adds r0, r5, #0 + bl sub_0800451C +_08070280: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r7, _08070354 @ =gUnk_03000BF0 + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r6, #0x3f + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _08070358 @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + movs r2, #0x80 + bl sub_080002F0 + cmp r0, #0 + bne _0807036A + ldr r1, _0807035C @ =gUnk_08003E44 + movs r3, #0x2e + ldrsh r2, [r5, r3] + movs r0, #0x32 + ldrsh r3, [r5, r0] + adds r0, r5, #0 + bl sub_080040D8 + cmp r0, #0 + bne _08070364 + adds r0, r5, #0 + bl sub_080002B8 + cmp r0, #0x19 + bne _0807036A + movs r0, #4 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + ldrh r2, [r5, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x32] + ands r1, r0 + orrs r1, r2 + strh r1, [r5, #0x32] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + adds r4, r5, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080001DA + str r0, [r5, #0x7c] + adds r0, r5, #0 + movs r1, #0x14 + bl sub_08004260 + ldr r0, _08070360 @ =0x00004020 + movs r3, #0x2e + ldrsh r1, [r5, r3] + ldrh r2, [r7, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + movs r3, #0x32 + ldrsh r2, [r5, r3] + ldrh r3, [r7, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r4] + bl sub_0800015E + b _0807037A + .align 2, 0 +_08070354: .4byte gUnk_03000BF0 +_08070358: .4byte gLinkEntity +_0807035C: .4byte gUnk_08003E44 +_08070360: .4byte 0x00004020 +_08070364: + adds r0, r5, #0 + bl sub_08070458 +_0807036A: + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0 + beq _0807037A + adds r0, r5, #0 + bl sub_08070458 +_0807037A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807037C +sub_0807037C: @ 0x0807037C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08070394 + bl sub_0805E780 +_08070394: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08070398 +sub_08070398: @ 0x08070398 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080703B8 + bl sub_0805E780 +_080703B8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080703BC +sub_080703BC: @ 0x080703BC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08070404 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r0, #0 + ldr r0, _08070408 @ =0x00004021 + cmp r1, r0 + beq _0807042E + cmp r1, r0 + bhi _0807040C + subs r0, #1 + cmp r1, r0 + beq _08070420 + b _08070412 + .align 2, 0 +_08070404: .4byte gUnk_03000BF0 +_08070408: .4byte 0x00004021 +_0807040C: + ldr r0, _08070418 @ =0x00004070 + cmp r1, r0 + beq _0807041C +_08070412: + movs r0, #0 + str r0, [r4, #0x7c] + b _0807042E + .align 2, 0 +_08070418: .4byte 0x00004070 +_0807041C: + movs r0, #0xff + str r0, [r4, #0x78] +_08070420: + ldr r0, [r4, #0x78] + subs r0, #1 + str r0, [r4, #0x78] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08070436 +_0807042E: + adds r0, r4, #0 + bl sub_08070458 + b _08070454 +_08070436: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + cmp r1, #0 + beq _08070454 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0807044E + ldrb r0, [r4, #0xc] + cmp r0, #0x1a + bne _08070454 +_0807044E: + adds r0, r4, #0 + bl sub_08070458 +_08070454: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08070458 +sub_08070458: @ 0x08070458 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r2, #0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + strh r2, [r4, #0x24] + ldr r5, [r4, #0x7c] + cmp r5, #0 + beq _0807049E + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _080704B4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r6, #0x32 + ldrsh r0, [r4, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_0800015E +_0807049E: + adds r0, r4, #0 + movs r1, #0x13 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08017744 + ldr r0, _080704B8 @ =0x00000199 + bl sub_080A3268 + pop {r4, r5, r6, pc} + .align 2, 0 +_080704B4: .4byte gUnk_03000BF0 +_080704B8: .4byte 0x00000199 + + thumb_func_start sub_080704BC +sub_080704BC: @ 0x080704BC + push {lr} + ldr r2, _080704D0 @ =gUnk_0811B9D8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080704D0: .4byte gUnk_0811B9D8 + + thumb_func_start sub_080704D4 +sub_080704D4: @ 0x080704D4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x1e] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + movs r0, #0x87 + lsls r0, r0, #1 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_080704FC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080704FC +sub_080704FC: @ 0x080704FC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0807052C @ =gLinkEntity + adds r0, r5, #0 + adds r0, #0x5a + ldrb r2, [r0] + movs r0, #0x80 + ands r0, r2 + ldr r1, _08070530 @ =gUnk_03003F80 + cmp r0, #0 + bne _08070518 + ldr r0, [r1, #0x2c] + cmp r4, r0 + beq _08070534 +_08070518: + ldr r0, [r1, #0x2c] + cmp r4, r0 + bne _08070522 + movs r0, #0 + str r0, [r1, #0x2c] +_08070522: + adds r0, r4, #0 + bl sub_0805E7BC + b _08070566 + .align 2, 0 +_0807052C: .4byte gLinkEntity +_08070530: .4byte gUnk_03003F80 +_08070534: + movs r0, #0xf + ands r0, r2 + cmp r0, #0xf + beq _08070562 + ldrb r1, [r5, #0x1e] + adds r0, #0x91 + subs r0, r1, r0 + ldrb r2, [r4, #0x1e] + cmp r0, r2 + beq _08070558 + adds r0, r1, #0 + adds r0, #0x6f + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_08070558: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08078E84 + b _08070566 +_08070562: + movs r0, #0xff + strb r0, [r4, #0x1e] +_08070566: + ldr r2, _08070580 @ =gLinkEntity + ldrb r1, [r2, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08070584 + ldrb r0, [r2, #0x18] + lsls r0, r0, #0x19 + lsrs r2, r0, #0x1f + movs r0, #1 + eors r2, r0 + b _0807058A + .align 2, 0 +_08070580: .4byte gLinkEntity +_08070584: + ldrb r0, [r2, #0x18] + lsls r0, r0, #0x19 + lsrs r2, r0, #0x1f +_0807058A: + lsls r2, r2, #6 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0807059C +sub_0807059C: @ 0x0807059C + push {lr} + ldr r0, _080705A8 @ =gUnk_02034490 + movs r1, #0x18 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_080705A8: .4byte gUnk_02034490 + + thumb_func_start sub_080705AC +sub_080705AC: @ 0x080705AC + push {lr} + ldr r0, _08070614 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08070674 + ldr r0, _08070618 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _08070674 + ldr r0, _0807061C @ =gUnk_02034490 + ldrb r0, [r0] + cmp r0, #0 + bne _08070674 + ldr r0, _08070620 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08070674 + ldr r1, _08070624 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, #0 + beq _08070674 + adds r0, r1, #0 + adds r0, #0xf2 + ldrb r0, [r0] + cmp r0, #0 + beq _08070674 + ldr r1, _08070628 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x8b + ldrb r0, [r0] + cmp r0, #0 + bne _08070674 + ldr r0, _0807062C @ =gUnk_03003DC0 + ldrh r0, [r0, #8] + cmp r0, #0 + bne _08070674 + adds r2, r1, #0 + adds r2, #0xa8 + ldrb r0, [r2] + cmp r0, #0 + bne _08070630 + adds r0, r1, #0 + adds r0, #0xa9 + ldrb r0, [r0] + b _08070632 + .align 2, 0 +_08070614: .4byte gUnk_03000FF0 +_08070618: .4byte gUnk_03000FD0 +_0807061C: .4byte gUnk_02034490 +_08070620: .4byte gUnk_02000050 +_08070624: .4byte gUnk_02002A40 +_08070628: .4byte gUnk_03003F80 +_0807062C: .4byte gUnk_03003DC0 +_08070630: + ldrb r0, [r2] +_08070632: + subs r0, #0x12 + cmp r0, #0xa + bhi _08070678 + lsls r0, r0, #2 + ldr r1, _08070644 @ =_08070648 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08070644: .4byte _08070648 +_08070648: @ jump table + .4byte _08070674 @ case 0 + .4byte _08070674 @ case 1 + .4byte _08070678 @ case 2 + .4byte _08070674 @ case 3 + .4byte _08070674 @ case 4 + .4byte _08070678 @ case 5 + .4byte _08070678 @ case 6 + .4byte _08070678 @ case 7 + .4byte _08070678 @ case 8 + .4byte _08070678 @ case 9 + .4byte _08070674 @ case 10 +_08070674: + movs r0, #0 + b _0807067E +_08070678: + bl sub_080A4D88 + movs r0, #1 +_0807067E: + pop {pc} + + thumb_func_start sub_08070680 +sub_08070680: @ 0x08070680 + push {lr} + ldr r2, _08070694 @ =gUnk_0811B9E0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08070694: .4byte gUnk_0811B9E0 + + thumb_func_start sub_08070698 +sub_08070698: @ 0x08070698 + push {r4, r5, r6, lr} + sub sp, #4 + adds r4, r0, #0 + ldr r6, _08070788 @ =gUnk_03003F80 + movs r0, #0xff + strb r0, [r6] + ldr r1, _0807078C @ =gLinkEntity + ldrh r0, [r1, #0x2e] + strh r0, [r6, #0x16] + ldrh r0, [r1, #0x32] + strh r0, [r6, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0x39 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x20 + strb r0, [r4, #0x16] + adds r1, r4, #0 + adds r1, #0x3b + movs r0, #8 + strb r0, [r1] + adds r1, #4 + movs r0, #0x79 + strb r0, [r1] + ldr r0, _08070790 @ =gUnk_08114F88 + str r0, [r4, #0x48] + movs r0, #1 + strh r0, [r4, #0x12] + adds r0, #0xff + strh r0, [r6, #8] + adds r0, r4, #0 + bl sub_0806FDA0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #2 + bl sub_080AE008 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + bne _08070726 + adds r0, r4, #0 + bl sub_08016A30 +_08070726: + movs r0, #0x10 + bl sub_0805436C + cmp r0, #2 + beq _08070734 + bl sub_08077728 +_08070734: + bl sub_0807A108 + bl sub_0807AEE4 + bl sub_08078EFC + adds r5, r0, #0 + cmp r5, #0 + bne _08070784 + bl sub_0807921C + bl sub_0807A1B8 + adds r1, r6, #0 + adds r1, #0x26 + ldrb r0, [r1] + cmp r0, #0 + beq _08070784 + movs r0, #1 + strb r0, [r1] + bl sub_08079938 + adds r1, r6, #0 + adds r1, #0xa8 + movs r0, #7 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807ACCC + str r5, [sp] + movs r0, #6 + movs r1, #0xf + movs r2, #6 + movs r3, #0xb + bl sub_0805EB2C + cmp r0, #0 + beq _08070784 + bl sub_0805E7BC +_08070784: + add sp, #4 + pop {r4, r5, r6, pc} + .align 2, 0 +_08070788: .4byte gUnk_03003F80 +_0807078C: .4byte gLinkEntity +_08070790: .4byte gUnk_08114F88 + + thumb_func_start sub_08070794 +sub_08070794: @ 0x08070794 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r6, _080707F0 @ =gUnk_03003F80 + adds r3, r6, #0 + adds r3, #0xa8 + movs r4, #0 + strb r4, [r3] + ldr r1, [r6, #0x30] + movs r7, #0x10 + adds r0, r1, #0 + ands r0, r7 + mov ip, r6 + cmp r0, #0 + beq _08070818 + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x42 + strb r4, [r0] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + movs r0, #0x80 + strb r0, [r6, #6] + strb r7, [r3] + ldrb r0, [r5, #0x14] + lsrs r0, r0, #1 + adds r0, #0x5c + adds r1, r5, #0 + adds r1, #0x58 + ldrb r1, [r1] + cmp r0, r1 + bne _080707F8 + ldrh r0, [r5, #0x12] + cmp r0, #2 + bne _080707F8 + ldr r0, _080707F4 @ =gLinkEntity + bl sub_080042B8 + b _08070800 + .align 2, 0 +_080707F0: .4byte gUnk_03003F80 +_080707F4: .4byte gLinkEntity +_080707F8: + movs r0, #0x97 + lsls r0, r0, #2 + mov r1, ip + strh r0, [r1, #8] +_08070800: + ldr r0, _08070814 @ =gLinkEntity + bl sub_0806F948 + bl sub_08077B2C + adds r0, r5, #0 + bl sub_08077698 + b _08070BE4 + .align 2, 0 +_08070814: .4byte gLinkEntity +_08070818: + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + cmp r0, #0 + beq _08070842 + adds r1, r5, #0 + adds r1, #0x40 + movs r0, #0x1e + strb r0, [r1] + movs r0, #0xc + strb r0, [r3] + movs r1, #0 + movs r2, #0x24 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _0807083A + movs r1, #1 +_0807083A: + adds r0, r5, #0 + bl sub_08070BEC + b _08070BE4 +_08070842: + movs r4, #0x80 + lsls r4, r4, #0xc + ands r4, r1 + cmp r4, #0 + beq _08070852 + bl sub_08079938 + b _08070BE4 +_08070852: + adds r0, r5, #0 + bl sub_080085B0 + adds r0, r5, #0 + adds r0, #0x40 + strb r4, [r0] + bl sub_08078EFC + cmp r0, #0 + beq _08070868 + b _08070BE4 +_08070868: + adds r0, r6, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _080708AC + ldrb r1, [r6, #2] + movs r2, #0xc0 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _080708AC + ldrb r0, [r6, #3] + cmp r0, #0 + bne _0807088E + adds r0, r6, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _08070892 +_0807088E: + strh r2, [r5, #0x24] + b _080708AC +_08070892: + ldrb r0, [r6, #0x1b] + cmp r0, #0 + beq _0807089C + movs r0, #0xe0 + b _080708AA +_0807089C: + ldrb r0, [r6, #0x1c] + cmp r0, #0 + beq _080708A6 + movs r0, #0x80 + b _080708AA +_080708A6: + movs r0, #0xa0 + lsls r0, r0, #1 +_080708AA: + strh r0, [r5, #0x24] +_080708AC: + ldr r4, _08070918 @ =gUnk_03003F80 + ldrb r0, [r4, #6] + movs r1, #0x80 + orrs r1, r0 + strb r1, [r4, #6] + ldr r0, [r4, #0x30] + ldr r6, _0807091C @ =0x10000002 + ands r0, r6 + cmp r0, #0 + bne _080708C4 + bl sub_0807A1B8 +_080708C4: + bl sub_08078EFC + cmp r0, #0 + beq _080708CE + b _08070BE4 +_080708CE: + ldrb r0, [r4, #2] + cmp r0, #0 + beq _080708D6 + b _080709D8 +_080708D6: + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _080708E4 + b _080709D8 +_080708E4: + adds r0, r5, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _08070924 + bl sub_080782C0 + cmp r0, #0 + beq _08070924 + ldr r0, _08070920 @ =gUnk_02034350 + ldrb r0, [r0, #6] + cmp r0, #0 + bne _08070902 + bl sub_08077B2C +_08070902: + ldr r0, [r4, #0x30] + ands r0, r6 + cmp r0, #0 + beq _0807090C + b _08070BE4 +_0807090C: + bl sub_0807A1B8 + bl sub_08078EFC + b _08070BE4 + .align 2, 0 +_08070918: .4byte gUnk_03003F80 +_0807091C: .4byte 0x10000002 +_08070920: .4byte gUnk_02034350 +_08070924: + ldr r0, _0807094C @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + ldr r2, _08070950 @ =0x00041635 + ands r1, r2 + adds r0, #0xaa + ldrb r0, [r0] + orrs r1, r0 + cmp r1, #0 + bne _080709D8 + bl sub_08019840 + cmp r0, #0xf + bls _08070940 + b _08070BE4 +_08070940: + lsls r0, r0, #2 + ldr r1, _08070954 @ =_08070958 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807094C: .4byte gUnk_03003F80 +_08070950: .4byte 0x00041635 +_08070954: .4byte _08070958 +_08070958: @ jump table + .4byte _08070998 @ case 0 + .4byte _08070BE4 @ case 1 + .4byte _08070BE4 @ case 2 + .4byte _080709A8 @ case 3 + .4byte _080709C2 @ case 4 + .4byte _08070BE4 @ case 5 + .4byte _08070BE4 @ case 6 + .4byte _08070BE4 @ case 7 + .4byte _08070BE4 @ case 8 + .4byte _08070BE4 @ case 9 + .4byte _08070BE4 @ case 10 + .4byte _08070BE4 @ case 11 + .4byte _08070BE4 @ case 12 + .4byte _08070BE4 @ case 13 + .4byte _08070BE4 @ case 14 + .4byte _080709B4 @ case 15 +_08070998: + ldr r0, _080709A4 @ =gUnk_03003F80 + ldrb r1, [r0, #6] + movs r2, #0x80 + eors r1, r2 + strb r1, [r0, #6] + b _080709D8 + .align 2, 0 +_080709A4: .4byte gUnk_03003F80 +_080709A8: + ldr r1, _080709B0 @ =gUnk_03003F80 + movs r0, #0x80 + strb r0, [r1, #6] + b _080709D8 + .align 2, 0 +_080709B0: .4byte gUnk_03003F80 +_080709B4: + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + bl sub_080797EC + b _08070BE4 +_080709C2: + ldr r0, _080709D4 @ =gUnk_03003F80 + ldrb r1, [r0, #6] + movs r2, #0x80 + eors r1, r2 + strb r1, [r0, #6] + bl sub_080797EC + b _08070BE4 + .align 2, 0 +_080709D4: .4byte gUnk_03003F80 +_080709D8: + adds r1, r5, #0 + adds r1, #0x3c + movs r0, #0 + strb r0, [r1] + adds r6, r5, #0 + adds r6, #0x29 + ldrb r1, [r6] + subs r0, #8 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r6] + adds r0, r5, #0 + bl sub_0807AC54 + cmp r0, #0 + beq _080709FC + b _08070BE4 +_080709FC: + adds r0, r5, #0 + bl sub_08077698 + bl sub_08078EFC + cmp r0, #0 + beq _08070A0C + b _08070BE4 +_08070A0C: + bl sub_080792D8 + ldr r4, _08070A78 @ =gUnk_03003F80 + ldrb r1, [r4, #2] + ldrb r0, [r4, #0xa] + orrs r0, r1 + cmp r0, #0 + bne _08070A32 + bl sub_08079550 + cmp r0, #0 + beq _08070A26 + b _08070BE4 +_08070A26: + adds r0, r5, #0 + bl sub_08078F74 + cmp r0, #0 + beq _08070A32 + b _08070BE4 +_08070A32: + adds r0, r5, #0 + bl sub_08073904 + bl sub_08078EFC + cmp r0, #0 + beq _08070A42 + b _08070BE4 +_08070A42: + ldrb r2, [r4, #2] + cmp r2, #0 + beq _08070AAC + adds r1, r4, #0 + adds r1, #0xa8 + movs r0, #0x14 + strb r0, [r1] + movs r0, #0xc0 + ands r0, r2 + cmp r0, #0 + bne _08070A80 + movs r0, #7 + ands r0, r2 + cmp r0, #3 + beq _08070A7C + movs r0, #0x20 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _08070A7C + strh r0, [r5, #0x24] + adds r0, r5, #0 + bl sub_08008926 + b _08070A80 + .align 2, 0 +_08070A78: .4byte gUnk_03003F80 +_08070A7C: + movs r0, #0xff + strb r0, [r5, #0x15] +_08070A80: + bl sub_08079E08 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08070A94 + b _08070BE4 +_08070A94: + ldr r0, _08070AA8 @ =gUnk_03003F80 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08070A9E + b _08070BE4 +_08070A9E: + adds r0, r5, #0 + bl sub_080042B8 + b _08070BE4 + .align 2, 0 +_08070AA8: .4byte gUnk_03003F80 +_08070AAC: + adds r0, r5, #0 + adds r0, #0x42 + ldrb r1, [r0] + adds r7, r0, #0 + cmp r1, #0 + beq _08070ABA + b _08070BBC +_08070ABA: + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08070AD4 + adds r1, r4, #0 + adds r1, #0xa8 + movs r0, #7 + strb r0, [r1] + adds r0, r5, #0 + bl sub_0807ACCC + b _08070B56 +_08070AD4: + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x12 + ands r0, r1 + cmp r0, #0 + bne _08070AEE + ldrb r0, [r6] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strb r1, [r6] +_08070AEE: + ldrb r1, [r4, #0x1e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08070B00 + adds r0, r5, #0 + bl sub_08008AA0 + b _08070B1E +_08070B00: + ldrb r0, [r4, #0x12] + cmp r0, #0x17 + bne _08070B0E + adds r0, r5, #0 + bl sub_08008926 + b _08070B1E +_08070B0E: + cmp r0, #1 + bne _08070B18 + bl sub_08078F60 + b _08070B1E +_08070B18: + adds r0, r5, #0 + bl sub_08008AA0 +_08070B1E: + ldr r2, _08070BB8 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1b] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08070B56 + ldrb r3, [r2, #0xd] + strb r3, [r5, #0x15] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _08070B56 + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _08070B52 + ldrb r1, [r5, #0x14] + movs r0, #0xe + ands r0, r1 + lsls r0, r0, #2 + strb r0, [r5, #0x15] +_08070B52: + bl sub_0807A108 +_08070B56: + movs r4, #0 + ldr r3, _08070BB8 @ =gUnk_03003F80 + ldrb r2, [r3, #7] + ldrb r0, [r5, #0x15] + orrs r0, r2 + movs r1, #0x80 + ands r0, r1 + ldrb r1, [r3, #0xa] + orrs r0, r1 + cmp r0, #0 + bne _08070B8E + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + bne _08070B8E + movs r4, #1 + ldrb r0, [r7] + cmp r0, #0 + bne _08070B8E + ldrb r1, [r3, #0x1e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08070B8C + ldrb r0, [r3, #0x12] + cmp r0, #0x17 + beq _08070B8E +_08070B8C: + movs r4, #3 +_08070B8E: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08070BEC + adds r0, r5, #0 + bl sub_08008AC6 + ldrb r0, [r7] + cmp r0, #0 + bne _08070BE4 + ldr r1, _08070BB8 @ =gUnk_03003F80 + ldrb r0, [r1, #0xb] + cmp r0, #0 + bne _08070BE4 + ldrb r0, [r1, #0x12] + cmp r0, #0x1e + beq _08070BE4 + adds r0, r5, #0 + bl sub_0806F948 + b _08070BE4 + .align 2, 0 +_08070BB8: .4byte gUnk_03003F80 +_08070BBC: + ldr r0, [r4, #0x2c] + cmp r0, #0 + bne _08070BC8 + adds r0, r5, #0 + bl sub_080042B8 +_08070BC8: + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08070BE4 + ldr r0, _08070BE8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08070BE4 + adds r0, r5, #0 + bl sub_080A2A64 +_08070BE4: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08070BE8: .4byte gUnk_030010A0 + + thumb_func_start sub_08070BEC +sub_08070BEC: @ 0x08070BEC + push {r4, lr} + adds r4, r1, #0 + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _08070BFE + bl sub_080797EC + b _08070C02 +_08070BFE: + bl sub_08079938 +_08070C02: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _08070C0E + bl sub_08079E08 +_08070C0E: + pop {r4, pc} + + thumb_func_start sub_08070C10 +sub_08070C10: @ 0x08070C10 + push {lr} + ldr r2, _08070C34 @ =gUnk_03003F80 + movs r1, #0xff + strb r1, [r2, #0xd] + movs r1, #0x80 + strb r1, [r2, #6] + adds r2, #0xa8 + movs r1, #0xa + strb r1, [r2] + ldr r2, _08070C38 @ =gUnk_0811BA60 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08070C34: .4byte gUnk_03003F80 +_08070C38: .4byte gUnk_0811BA60 + + thumb_func_start sub_08070C3C +sub_08070C3C: @ 0x08070C3C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004168 + ldr r2, _08070C64 @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + movs r0, #5 + orrs r1, r0 + ldr r0, _08070C68 @ =0xFFFFFBFF + ands r1, r0 + str r1, [r2, #0x30] + movs r0, #0 + strb r0, [r2, #2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08070C6C + movs r0, #0xdd + lsls r0, r0, #1 + b _08070C7E + .align 2, 0 +_08070C64: .4byte gUnk_03003F80 +_08070C68: .4byte 0xFFFFFBFF +_08070C6C: + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _08070C7A + movs r0, #0x8b + lsls r0, r0, #3 + b _08070C7E +_08070C7A: + movs r0, #0xdc + lsls r0, r0, #1 +_08070C7E: + strh r0, [r2, #8] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + bl sub_08077B2C + bl sub_0807A108 + movs r0, #0x7b + bl sub_080A3268 + movs r0, #0x85 + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08070CB4 +sub_08070CB4: @ 0x08070CB4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080042B8 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08070D1A + ldr r0, _08070CF4 @ =gUnk_02002A40 + adds r0, #0xaa + ldrb r0, [r0] + ldr r4, _08070CF8 @ =gUnk_03003F80 + cmp r0, #0 + beq _08070CFC + ldr r1, [r4, #0x30] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08070CFC + movs r0, #6 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r4, #0x30] + ldrb r1, [r5, #0x18] + adds r0, #2 + ands r0, r1 + strb r0, [r5, #0x18] + b _08070D1A + .align 2, 0 +_08070CF4: .4byte gUnk_02002A40 +_08070CF8: .4byte gUnk_03003F80 +_08070CFC: + ldr r0, [r4, #0x30] + ldr r1, _08070D1C @ =0xFFFF7FFB + ands r0, r1 + str r0, [r4, #0x30] + bl sub_08079458 + movs r0, #0 + strb r0, [r4, #0xa] + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #0x20 + strb r0, [r1] + subs r0, #0x22 + bl sub_080526A0 +_08070D1A: + pop {r4, r5, pc} + .align 2, 0 +_08070D1C: .4byte 0xFFFF7FFB + + thumb_func_start sub_08070D20 +sub_08070D20: @ 0x08070D20 + push {lr} + ldr r2, _08070D34 @ =gUnk_0811BA68 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08070D34: .4byte gUnk_0811BA68 + + thumb_func_start sub_08070D38 +sub_08070D38: @ 0x08070D38 + push {r4, lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x14] + movs r0, #0xe + ands r0, r1 + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + strb r0, [r2, #0x15] + movs r4, #0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #0x24] + adds r0, r2, #0 + adds r0, #0x42 + strb r4, [r0] + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + ldr r3, _08070D94 @ =gUnk_03003F80 + adds r0, r3, #0 + adds r0, #0x38 + ldrb r0, [r0] + strb r0, [r2, #0xe] + movs r0, #1 + strh r0, [r2, #0x12] + ldr r0, [r3, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08070D98 + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r2, #0x20] + movs r0, #0x8a + lsls r0, r0, #1 + strh r0, [r3, #8] + movs r0, #0x10 + movs r1, #0 + bl sub_08080964 + b _08070DA2 + .align 2, 0 +_08070D94: .4byte gUnk_03003F80 +_08070D98: + ldr r0, _08070DBC @ =0x00000C18 + strh r0, [r3, #8] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r2, #0x20] +_08070DA2: + ldr r0, _08070DC0 @ =gUnk_03003F80 + movs r1, #0x80 + strb r1, [r0, #2] + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 + bl sub_08077B2C + bl sub_08078F60 + pop {r4, pc} + .align 2, 0 +_08070DBC: .4byte 0x00000C18 +_08070DC0: .4byte gUnk_03003F80 + + thumb_func_start sub_08070DC4 +sub_08070DC4: @ 0x08070DC4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080085B0 + bl sub_08079E08 + bl sub_0807A1B8 + bl sub_08078EFC + cmp r0, #0 + bne _08070E76 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08070E76 + ldr r6, _08070E18 @ =gUnk_03003F80 + strb r0, [r6, #2] + bl sub_08078EFC + adds r5, r0, #0 + cmp r5, #0 + bne _08070E76 + bl sub_08079D48 + cmp r0, #0 + bne _08070E10 + adds r0, r6, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08070E1C +_08070E10: + strb r5, [r6, #2] + bl sub_080791D0 + b _08070E76 + .align 2, 0 +_08070E18: .4byte gUnk_03003F80 +_08070E1C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08070E32 + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + b _08070E76 +_08070E32: + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r6, #0x14] + cmp r0, #0 + bne _08070E56 + bl sub_08008B22 + cmp r0, #0 + beq _08070E56 + movs r0, #7 + strb r0, [r6, #0x11] + bl sub_08079938 + bl sub_080791BC + b _08070E76 +_08070E56: + movs r0, #1 + strh r0, [r4, #0x12] + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldr r2, _08070E78 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08070E76 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #8] +_08070E76: + pop {r4, r5, r6, pc} + .align 2, 0 +_08070E78: .4byte gUnk_03003F80 + + thumb_func_start sub_08070E7C +sub_08070E7C: @ 0x08070E7C + push {lr} + ldrb r1, [r0, #0xe] + subs r1, #1 + strb r1, [r0, #0xe] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0 + bne _08070E94 + ldr r0, _08070E98 @ =gUnk_03003F80 + strb r1, [r0, #2] + bl sub_080791D0 +_08070E94: + pop {pc} + .align 2, 0 +_08070E98: .4byte gUnk_03003F80 + + thumb_func_start sub_08070E9C +sub_08070E9C: @ 0x08070E9C + push {r4, lr} + adds r4, r0, #0 + bl sub_08078EFC + cmp r0, #0 + beq _08070EAE + bl sub_08056360 + b _08070ED2 +_08070EAE: + ldr r1, _08070ED4 @ =gUnk_03003F80 + adds r2, r1, #0 + adds r2, #0x27 + movs r0, #4 + strb r0, [r2] + adds r1, #0xa8 + movs r0, #0x13 + strb r0, [r1] + bl sub_0807A1B8 + ldr r1, _08070ED8 @ =gUnk_0811BA74 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 +_08070ED2: + pop {r4, pc} + .align 2, 0 +_08070ED4: .4byte gUnk_03003F80 +_08070ED8: .4byte gUnk_0811BA74 + + thumb_func_start sub_08070EDC +sub_08070EDC: @ 0x08070EDC + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x11] + ldr r0, _08070F10 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _08070EFE + movs r0, #1 + strb r0, [r2, #0xd] +_08070EFE: + ldr r2, _08070F14 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08070F18 + bl sub_08079938 + b _08070F1C + .align 2, 0 +_08070F10: .4byte gUnk_02000050 +_08070F14: .4byte gUnk_03003F80 +_08070F18: + ldr r0, _08070F20 @ =0x00000C18 + strh r0, [r2, #8] +_08070F1C: + pop {pc} + .align 2, 0 +_08070F20: .4byte 0x00000C18 + + thumb_func_start sub_08070F24 +sub_08070F24: @ 0x08070F24 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r0, _08070F4C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08070F4A + ldrb r0, [r4, #0x11] + lsrs r2, r0, #4 + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x11] + bl sub_080791D0 +_08070F4A: + pop {r4, pc} + .align 2, 0 +_08070F4C: .4byte gUnk_02000050 + + thumb_func_start sub_08070F50 +sub_08070F50: @ 0x08070F50 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08070F9C @ =gUnk_03003F80 + adds r0, #0xa8 + movs r1, #0x15 + strb r1, [r0] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r1, _08070FA0 @ =gUnk_0811BA7C + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r5, [r4, #0x54] + cmp r5, #0 + beq _08070F9A + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA30 + ldrh r0, [r4, #0x12] + ldrb r1, [r4, #0x1e] + bl sub_080700C8 + ldrb r1, [r0] + adds r2, r5, #0 + adds r2, #0x62 + strb r1, [r2] + ldrb r1, [r0, #1] + adds r0, r5, #0 + adds r0, #0x63 + strb r1, [r0] +_08070F9A: + pop {r4, r5, pc} + .align 2, 0 +_08070F9C: .4byte gUnk_03003F80 +_08070FA0: .4byte gUnk_0811BA7C + + thumb_func_start sub_08070FA4 +sub_08070FA4: @ 0x08070FA4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0x14] + ldr r3, _08070FE8 @ =gUnk_03003F80 + ldr r2, [r3, #0x30] + movs r0, #1 + orrs r2, r0 + str r2, [r3, #0x30] + strb r1, [r3, #2] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _08071008 + movs r0, #8 + ands r2, r0 + cmp r2, #0 + beq _08070FF0 + adds r0, r3, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_080542AC + ldr r1, _08070FEC @ =0x0000045B + cmp r0, #0 + beq _08071004 + adds r1, #3 + b _08071004 + .align 2, 0 +_08070FE8: .4byte gUnk_03003F80 +_08070FEC: .4byte 0x0000045B +_08070FF0: + adds r0, r3, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_080542AC + ldr r1, _08071018 @ =0x000001B9 + cmp r0, #0 + beq _08071004 + movs r1, #0xb8 + lsls r1, r1, #2 +_08071004: + ldr r0, _0807101C @ =gUnk_03003F80 + strh r1, [r0, #8] +_08071008: + movs r0, #1 + strb r0, [r4, #0xd] + bl sub_08077B2C + bl sub_08078F60 + pop {r4, pc} + .align 2, 0 +_08071018: .4byte 0x000001B9 +_0807101C: .4byte gUnk_03003F80 + + thumb_func_start sub_08071020 +sub_08071020: @ 0x08071020 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _08071036 + movs r0, #2 + strb r0, [r4, #0xd] +_08071036: + pop {r4, pc} + + thumb_func_start sub_08071038 +sub_08071038: @ 0x08071038 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + bl sub_08078EFC + cmp r0, #0 + bne _08071078 + ldr r0, _0807107C @ =gUnk_02000050 + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + cmp r2, #0 + bne _08071078 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08071078 + str r2, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x42 + strb r2, [r0] + subs r0, #5 + movs r1, #0xf8 + strb r1, [r0] + ldr r0, _08071080 @ =gUnk_03003F80 + strb r2, [r0, #2] + bl sub_080791D0 +_08071078: + pop {r4, pc} + .align 2, 0 +_0807107C: .4byte gUnk_02000050 +_08071080: .4byte gUnk_03003F80 + + thumb_func_start sub_08071084 +sub_08071084: @ 0x08071084 + push {lr} + ldr r1, _080710A0 @ =gUnk_03003F80 + adds r1, #0xa8 + movs r2, #0xb + strb r2, [r1] + ldr r2, _080710A4 @ =gUnk_0811BA88 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080710A0: .4byte gUnk_03003F80 +_080710A4: .4byte gUnk_0811BA88 + + thumb_func_start sub_080710A8 +sub_080710A8: @ 0x080710A8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + adds r0, #1 + movs r2, #0 + strb r0, [r4, #0xd] + ldr r1, _080710EC @ =gUnk_03003F80 + ldr r3, [r1, #0x30] + movs r0, #1 + orrs r3, r0 + ldr r0, _080710F0 @ =0xFFFFF3FF + ands r3, r0 + str r3, [r1, #0x30] + strb r2, [r1, #0xc] + ldrb r2, [r1, #5] + ldrb r0, [r1, #0x1b] + orrs r0, r2 + adds r5, r1, #0 + cmp r0, #0 + bne _080710FA + movs r0, #0x80 + ands r3, r0 + cmp r3, #0 + bne _080710FA + bl sub_08077B2C + ldr r0, [r5, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080710F4 + movs r0, #0x84 + lsls r0, r0, #3 + b _080710F8 + .align 2, 0 +_080710EC: .4byte gUnk_03003F80 +_080710F0: .4byte 0xFFFFF3FF +_080710F4: + movs r0, #0x81 + lsls r0, r0, #4 +_080710F8: + strh r0, [r5, #8] +_080710FA: + movs r0, #0 + strb r0, [r5, #0x1e] + ldrb r1, [r4, #0x14] + movs r0, #0xe + ands r0, r1 + lsls r0, r0, #2 + strb r0, [r4, #0x15] + movs r0, #1 + bl sub_08079FC4 + lsls r0, r0, #4 + subs r0, #4 + lsls r0, r0, #0xc + str r0, [r4, #0x20] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + bl sub_0807A108 + movs r0, #0x7c + bl sub_080A3268 + movs r0, #0x78 + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08071130 +sub_08071130: @ 0x08071130 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08078EFC + cmp r0, #0 + bne _08071206 + ldr r6, _080711B4 @ =gUnk_03003F80 + ldrb r0, [r6, #0x1b] + cmp r0, #0 + bne _08071158 + adds r0, r5, #0 + bl sub_080042B8 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08071206 +_08071158: + adds r0, r5, #0 + bl sub_0806F69C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08071206 + strb r0, [r6, #2] + adds r0, r5, #0 + bl sub_0800455E + ldr r0, [r5, #0x74] + cmp r0, #0 + beq _0807117E + bl sub_0800455E +_0807117E: + adds r0, r5, #0 + movs r1, #7 + bl sub_08008790 + ldrb r0, [r6, #0x14] + cmp r0, #0 + bne _08071206 + bl sub_0807A1B8 + bl sub_08078EFC + adds r4, r0, #0 + cmp r4, #0 + bne _08071206 + bl sub_08079D48 + cmp r0, #0 + beq _080711AC + adds r0, r6, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _080711B8 +_080711AC: + strb r4, [r6, #2] + bl sub_080791D0 + b _08071206 + .align 2, 0 +_080711B4: .4byte gUnk_03003F80 +_080711B8: + movs r0, #6 + strb r0, [r5, #0xe] + ldrb r1, [r6, #5] + ldrb r0, [r6, #0xb] + orrs r0, r1 + cmp r0, #0 + bne _080711EE + ldr r1, [r6, #0x30] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080711EE + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _080711E0 + ldr r0, _080711DC @ =0x00000424 + b _080711E4 + .align 2, 0 +_080711DC: .4byte 0x00000424 +_080711E0: + movs r0, #0x82 + lsls r0, r0, #4 +_080711E4: + strh r0, [r6, #8] + adds r1, r5, #0 + adds r1, #0x58 + movs r0, #0xff + strb r0, [r1] +_080711EE: + ldrb r0, [r5, #0xd] + adds r0, #1 + movs r4, #0 + strb r0, [r5, #0xd] + bl sub_08078F60 + adds r0, r5, #0 + adds r0, #0x42 + strb r4, [r0] + movs r0, #0x7d + bl sub_080A3268 +_08071206: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08071208 +sub_08071208: @ 0x08071208 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08071244 @ =gUnk_03003F80 + ldrb r1, [r2, #5] + ldrb r0, [r2, #0xb] + orrs r0, r1 + cmp r0, #0 + bne _08071228 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08071228 + adds r0, r4, #0 + bl sub_080042B8 +_08071228: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08071240 + ldr r1, _08071244 @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r1, #2] + bl sub_080791D0 +_08071240: + pop {r4, pc} + .align 2, 0 +_08071244: .4byte gUnk_03003F80 + + thumb_func_start sub_08071248 +sub_08071248: @ 0x08071248 + push {lr} + ldr r3, _08071274 @ =gUnk_03003F80 + adds r2, r3, #0 + adds r2, #0xa8 + movs r1, #0x16 + strb r1, [r2] + ldr r1, [r3, #0x30] + movs r2, #4 + orrs r1, r2 + str r1, [r3, #0x30] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + ldr r2, _08071278 @ =gUnk_0811BA94 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08071274: .4byte gUnk_03003F80 +_08071278: .4byte gUnk_0811BA94 + + thumb_func_start sub_0807127C +sub_0807127C: @ 0x0807127C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xd] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3a + ands r0, r1 + strb r0, [r2] + ldr r5, _080712AC @ =gUnk_03003F80 + ldr r1, [r5, #0x30] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080712B4 + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r0, _080712B0 @ =0x00000C19 + strh r0, [r5, #8] + movs r0, #0x84 + bl sub_080A3268 + b _080712E4 + .align 2, 0 +_080712AC: .4byte gUnk_03003F80 +_080712B0: .4byte 0x00000C19 +_080712B4: + movs r0, #0x80 + lsls r0, r0, #9 + ands r1, r0 + cmp r1, #0 + bne _080712C4 + adds r0, r4, #0 + bl sub_08004168 +_080712C4: + adds r0, r4, #0 + movs r1, #0xb + movs r2, #0 + bl CreateFX + ldr r0, [r5, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _080712E0 + ldr r0, _080712DC @ =0x0000072C + b _080712E2 + .align 2, 0 +_080712DC: .4byte 0x0000072C +_080712E0: + ldr r0, _080712EC @ =0x0000044C +_080712E2: + strh r0, [r5, #8] +_080712E4: + bl sub_08077B2C + pop {r4, r5, pc} + .align 2, 0 +_080712EC: .4byte 0x0000044C + + thumb_func_start sub_080712F0 +sub_080712F0: @ 0x080712F0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080042B8 + movs r5, #0 + ldr r3, _08071314 @ =gUnk_03003F80 + ldr r0, [r3, #0x30] + movs r2, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08071318 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807133E + b _08071342 + .align 2, 0 +_08071314: .4byte gUnk_03003F80 +_08071318: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0807133E + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xce + beq _0807133C + ldr r0, _08071338 @ =0x000002CE + strh r0, [r3, #8] + b _0807133E + .align 2, 0 +_08071338: .4byte 0x000002CE +_0807133C: + movs r5, #1 +_0807133E: + cmp r5, #0 + beq _0807137A +_08071342: + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + subs r1, #5 + movs r0, #0x20 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x59 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r2, _0807137C @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #5 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2, #0x30] + bl sub_08079458 +_0807137A: + pop {r4, r5, pc} + .align 2, 0 +_0807137C: .4byte gUnk_03003F80 + + thumb_func_start sub_08071380 +sub_08071380: @ 0x08071380 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080713E8 @ =gUnk_03003F80 + adds r1, r5, #0 + adds r1, #0xa8 + movs r0, #0xe + strb r0, [r1] + ldr r1, _080713EC @ =gUnk_0811BA9C + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xd] + cmp r0, #7 + beq _080713FC + cmp r0, #2 + bls _080713FC + ldr r0, [r5, #0x30] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080713FC + ldr r0, _080713F0 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #0x81 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080713FC + bl sub_08052660 + cmp r0, #0 + bne _080713D0 + ldr r0, _080713F4 @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + cmp r0, #3 + bne _080713F8 +_080713D0: + movs r0, #7 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #7 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0xf8 + bl sub_080A3268 + b _080713FC + .align 2, 0 +_080713E8: .4byte gUnk_03003F80 +_080713EC: .4byte gUnk_0811BA9C +_080713F0: .4byte gUnk_03000FF0 +_080713F4: .4byte gUnk_02033A90 +_080713F8: + bl sub_0804ACF8 +_080713FC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08071400 +sub_08071400: @ 0x08071400 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + movs r1, #0 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x42 + strb r1, [r0] + ldr r0, _0807149C @ =gUnk_02033A90 + ldrh r3, [r0, #0x12] + ldrh r5, [r0, #0x14] + movs r0, #0x2e + ldrsh r2, [r4, r0] + cmp r2, r3 + bne _0807142A + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, r5 + beq _08071444 +_0807142A: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r2, #0 + adds r2, r3, #0 + adds r3, r5, #0 + bl sub_080045D4 + strb r0, [r4, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + bl sub_08079E08 +_08071444: + adds r0, r4, #0 + bl sub_08073904 + adds r0, r4, #0 + bl sub_080042B8 + ldr r2, _080714A0 @ =gUnk_03003F80 + ldrb r0, [r2, #2] + cmp r0, #0 + bne _0807147C + ldr r0, [r2, #0x30] + movs r1, #0x20 + orrs r0, r1 + str r0, [r2, #0x30] + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #4 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x18] + subs r0, #0x45 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, _0807149C @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + cmp r0, #4 + bne _0807147C + ldr r0, _080714A4 @ =0x0000052C + strh r0, [r2, #8] +_0807147C: + movs r0, #8 + strb r0, [r4, #0xe] + ldr r0, _0807149C @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + cmp r0, #3 + beq _0807149A + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_0807149A: + pop {r4, r5, pc} + .align 2, 0 +_0807149C: .4byte gUnk_02033A90 +_080714A0: .4byte gUnk_03003F80 +_080714A4: .4byte 0x0000052C + + thumb_func_start sub_080714A8 +sub_080714A8: @ 0x080714A8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08071524 @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + cmp r0, #5 + bgt _080714BE + cmp r0, #4 + blt _080714BE + ldr r0, _08071528 @ =gLinkEntity + bl sub_0806F948 +_080714BE: + ldr r3, _0807152C @ =gUnk_03003F80 + ldrb r1, [r3, #0xd] + movs r0, #0x84 + ands r0, r1 + cmp r0, #0 + bne _0807153E + ldrb r0, [r4, #0x15] + cmp r0, r1 + beq _080714D4 + movs r0, #8 + strb r0, [r4, #0xe] +_080714D4: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08071538 + ldrb r0, [r3, #0xd] + strb r0, [r4, #0x15] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1a + strb r0, [r4, #0x14] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + movs r0, #9 + strb r0, [r4, #0xc] + movs r0, #7 + strb r0, [r4, #0xd] + strb r1, [r4, #0xf] + ldr r1, [r3, #0x30] + movs r0, #8 + ands r0, r1 + ldr r4, _08071530 @ =0x0000080C + adds r2, r4, #0 + cmp r0, #0 + beq _08071516 + ldr r0, _08071534 @ =0x0000041C + adds r2, r0, #0 +_08071516: + strh r2, [r3, #8] + movs r0, #0x21 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r3, #0x30] + b _0807156A + .align 2, 0 +_08071524: .4byte gUnk_02033A90 +_08071528: .4byte gLinkEntity +_0807152C: .4byte gUnk_03003F80 +_08071530: .4byte 0x0000080C +_08071534: .4byte 0x0000041C +_08071538: + ldrb r0, [r3, #0xd] + strb r0, [r4, #0x15] + b _08071542 +_0807153E: + movs r0, #8 + strb r0, [r4, #0xe] +_08071542: + ldr r0, _0807155C @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + cmp r0, #4 + bne _08071560 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + bne _08071566 + adds r0, r4, #0 + bl sub_080042B8 + b _0807156A + .align 2, 0 +_0807155C: .4byte gUnk_02033A90 +_08071560: + adds r0, r4, #0 + bl sub_08077698 +_08071566: + bl sub_08079938 +_0807156A: + pop {r4, pc} + + thumb_func_start sub_0807156C +sub_0807156C: @ 0x0807156C + push {lr} + ldr r2, _080715A0 @ =gUnk_03000BF0 + movs r1, #0 + str r1, [r2, #0x30] + ldr r2, _080715A4 @ =gUnk_02034490 + movs r1, #1 + strb r1, [r2] + movs r1, #3 + strb r1, [r0, #0xd] + movs r1, #0x1e + strb r1, [r0, #0xf] + ldr r2, _080715A8 @ =gUnk_03003F80 + movs r1, #0xe7 + lsls r1, r1, #3 + strh r1, [r2, #8] + movs r1, #6 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + bl sub_08077B20 + bl sub_0805E544 + pop {pc} + .align 2, 0 +_080715A0: .4byte gUnk_03000BF0 +_080715A4: .4byte gUnk_02034490 +_080715A8: .4byte gUnk_03003F80 + + thumb_func_start sub_080715AC +sub_080715AC: @ 0x080715AC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080715CC + adds r0, r4, #0 + bl sub_080042B8 + ldr r0, _080715D0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080715CC + movs r0, #4 + strb r0, [r4, #0xd] +_080715CC: + pop {r4, pc} + .align 2, 0 +_080715D0: .4byte gUnk_03003F80 + + thumb_func_start sub_080715D4 +sub_080715D4: @ 0x080715D4 + push {lr} + adds r3, r0, #0 + movs r2, #0 + movs r0, #5 + strb r0, [r3, #0xd] + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + ldrb r1, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + mov r1, ip + strb r0, [r1] + strb r2, [r3, #0xf] + ldrb r0, [r3, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r3, #0x19] + adds r0, r3, #0 + adds r0, #0x80 + movs r2, #0x80 + lsls r2, r2, #1 + str r2, [r0] + adds r0, #4 + str r2, [r0] + adds r0, r3, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + ldr r2, _08071628 @ =gUnk_03003F80 + ldr r0, _0807162C @ =0x000002C3 + strh r0, [r2, #8] + ldr r0, [r2, #0x30] + movs r1, #0x80 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r0, _08071630 @ =0x0000016F + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08071628: .4byte gUnk_03003F80 +_0807162C: .4byte 0x000002C3 +_08071630: .4byte 0x0000016F + + thumb_func_start sub_08071634 +sub_08071634: @ 0x08071634 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + beq _08071654 + adds r1, r5, #0 + adds r1, #0x80 + ldr r0, [r1] + adds r0, #0x80 + lsls r0, r0, #0x14 + lsrs r7, r0, #0x17 + adds r4, r1, #0 + b _0807166A +_08071654: + adds r4, r5, #0 + adds r4, #0x80 + ldrb r1, [r4] + lsrs r1, r1, #6 + movs r0, #3 + eors r1, r0 + adds r1, #1 + movs r0, #0x10 + bl __divsi3 + asrs r7, r0, #1 +_0807166A: + adds r0, r5, #0 + adds r0, #0x84 + ldr r3, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r0, #0 + cmp r3, r1 + bls _08071684 + adds r0, r3, #0 + adds r0, #0x80 + lsls r0, r0, #0x14 + lsrs r3, r0, #0x17 + b _08071694 +_08071684: + cmp r3, r1 + bne _0807168C + movs r3, #0x10 + b _08071694 +_0807168C: + ldr r1, _080716B0 @ =gUnk_0811BABC + lsrs r0, r3, #5 + adds r0, r0, r1 + ldrb r3, [r0] +_08071694: + movs r0, #0x80 + lsls r0, r0, #9 + mov r8, r0 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #2 + beq _080716EA + cmp r0, #2 + bgt _080716B4 + cmp r0, #1 + beq _080716BA + b _08071754 + .align 2, 0 +_080716B0: .4byte gUnk_0811BABC +_080716B4: + cmp r0, #3 + beq _0807171E + b _08071754 +_080716BA: + movs r1, #0x29 + adds r1, r1, r5 + mov ip, r1 + ldrb r1, [r1] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + mov r1, ip + strb r0, [r1] + ldr r0, [r4] + cmp r0, #0x80 + bls _080716D6 + subs r0, r0, r7 + str r0, [r4] +_080716D6: + lsls r1, r3, #1 + ldr r0, [r2] + adds r0, r0, r1 + str r0, [r2] + mov r0, r8 + lsls r1, r0, #1 + ldr r0, [r5, #0x30] + adds r0, r0, r1 + str r0, [r5, #0x30] + b _08071754 +_080716EA: + ldr r0, [r4] + adds r0, r0, r7 + str r0, [r4] + ldr r1, [r2] + movs r6, #0x80 + lsls r6, r6, #1 + cmp r1, r6 + bls _08071710 + ldr r0, _0807170C @ =0x0000017F + cmp r1, r0 + bhi _08071702 + lsrs r3, r3, #1 +_08071702: + subs r0, r1, r3 + cmp r0, #0xff + bhi _08071716 + str r6, [r2] + b _08071718 + .align 2, 0 +_0807170C: .4byte 0x0000017F +_08071710: + cmp r1, #0x80 + bls _08071718 + subs r0, r1, r3 +_08071716: + str r0, [r2] +_08071718: + ldr r0, [r5, #0x34] + mov r1, r8 + b _08071750 +_0807171E: + ldr r0, [r4] + ldr r6, _08071740 @ =0x0000033F + cmp r0, r6 + bhi _0807172A + adds r0, r0, r7 + str r0, [r4] +_0807172A: + ldr r1, [r2] + cmp r1, r6 + bls _08071744 + movs r0, #8 + strb r0, [r5, #0xe] + movs r0, #0x1e + strb r0, [r5, #0xf] + movs r0, #6 + strb r0, [r5, #0xd] + b _0807174A + .align 2, 0 +_08071740: .4byte 0x0000033F +_08071744: + lsls r0, r3, #1 + adds r0, r1, r0 + str r0, [r2] +_0807174A: + mov r0, r8 + lsls r1, r0, #1 + ldr r0, [r5, #0x34] +_08071750: + subs r0, r0, r1 + str r0, [r5, #0x34] +_08071754: + ldr r1, [r4] + ldr r2, [r2] + adds r0, r5, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r5, #0 + bl sub_080042B8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807176C +sub_0807176C: @ 0x0807176C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080717C6 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080717CA + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r1, _080717AC @ =gUnk_02033A90 + ldrb r0, [r1, #0x17] + cmp r0, #3 + bne _080717B0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080717CA + adds r0, r4, #0 + bl sub_080717F8 + b _080717CA + .align 2, 0 +_080717AC: .4byte gUnk_02033A90 +_080717B0: + cmp r0, #6 + bne _080717C0 + ldr r0, _080717BC @ =gUnk_0813AB58 + bl sub_08080840 + b _080717CA + .align 2, 0 +_080717BC: .4byte gUnk_0813AB58 +_080717C0: + movs r0, #1 + strb r0, [r1, #0x19] + b _080717CA +_080717C6: + subs r0, #1 + strb r0, [r4, #0xe] +_080717CA: + pop {r4, pc} + + thumb_func_start sub_080717CC +sub_080717CC: @ 0x080717CC + push {lr} + adds r1, r0, #0 + ldr r0, _080717E4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080717F4 + ldrb r0, [r1, #0xe] + cmp r0, #0 + beq _080717E8 + subs r0, #1 + strb r0, [r1, #0xe] + b _080717F4 + .align 2, 0 +_080717E4: .4byte gUnk_03000FD0 +_080717E8: + adds r0, r1, #0 + bl sub_080717F8 + movs r0, #0x10 + bl sub_080500F4 +_080717F4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080717F8 +sub_080717F8: @ 0x080717F8 + push {r4, lr} + ldr r2, _08071850 @ =gUnk_02033A90 + ldrb r1, [r2, #0x16] + lsls r1, r1, #1 + strb r1, [r0, #0x14] + ldr r3, _08071854 @ =gUnk_0811BAC4 + ldrb r1, [r2, #0x16] + lsls r1, r1, #2 + adds r1, r1, r3 + ldrh r1, [r1] + ldrh r4, [r2, #0x12] + adds r1, r1, r4 + movs r4, #0 + strh r1, [r0, #0x2e] + ldrb r1, [r2, #0x16] + lsls r1, r1, #1 + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r3 + ldrh r1, [r1] + ldrh r3, [r2, #0x14] + adds r1, r1, r3 + strh r1, [r0, #0x32] + movs r1, #0xb4 + strb r1, [r2, #0x1a] + ldr r1, _08071858 @ =gUnk_02034490 + strb r4, [r1] + movs r1, #9 + strb r1, [r0, #0xc] + strb r4, [r0, #0xd] + ldr r3, _0807185C @ =gUnk_03003F80 + ldr r1, [r3, #0x30] + movs r2, #0x21 + rsbs r2, r2, #0 + ands r1, r2 + movs r2, #0x80 + orrs r1, r2 + str r1, [r3, #0x30] + bl sub_0805EC60 + bl sub_0805E564 + pop {r4, pc} + .align 2, 0 +_08071850: .4byte gUnk_02033A90 +_08071854: .4byte gUnk_0811BAC4 +_08071858: .4byte gUnk_02034490 +_0807185C: .4byte gUnk_03003F80 + + thumb_func_start sub_08071860 +sub_08071860: @ 0x08071860 + push {r4, lr} + adds r4, r0, #0 + bl sub_08078EFC + cmp r0, #0 + beq _08071876 + bl sub_08056360 + bl sub_08071A6C + b _08071896 +_08071876: + ldr r0, _08071898 @ =gUnk_03003F80 + adds r0, #0xa8 + movs r1, #0x13 + strb r1, [r0] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r1, _0807189C @ =gUnk_0811BAD4 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 +_08071896: + pop {r4, pc} + .align 2, 0 +_08071898: .4byte gUnk_03003F80 +_0807189C: .4byte gUnk_0811BAD4 + + thumb_func_start sub_080718A0 +sub_080718A0: @ 0x080718A0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08077B2C + ldr r0, _080718EC @ =gUnk_03000B80 + adds r0, #0x63 + movs r1, #0 + strb r1, [r0] + adds r0, r4, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r1, _080718F0 @ =gUnk_03003DC0 + movs r2, #6 + movs r0, #6 + strb r0, [r1] + ldrb r1, [r4, #0x11] + subs r0, #0x16 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x11] + ldr r5, _080718F4 @ =gUnk_03003F80 + ldr r0, [r5, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080718F8 + movs r0, #2 + strb r0, [r4, #0xd] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3b + ands r0, r1 + strb r0, [r2] + bl sub_08052BB8 + b _08071938 + .align 2, 0 +_080718EC: .4byte gUnk_03000B80 +_080718F0: .4byte gUnk_03003DC0 +_080718F4: .4byte gUnk_03003F80 +_080718F8: + ldrb r0, [r5, #2] + cmp r0, #0 + bne _08071928 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x14] + cmp r0, #2 + bne _08071914 + ldr r0, _08071910 @ =0x000003CA + b _08071916 + .align 2, 0 +_08071910: .4byte 0x000003CA +_08071914: + ldr r0, _08071924 @ =0x000003C6 +_08071916: + strh r0, [r5, #8] + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _08071938 + .align 2, 0 +_08071924: .4byte 0x000003C6 +_08071928: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08071938 + strb r0, [r5, #2] +_08071938: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0807193C +sub_0807193C: @ 0x0807193C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08071986 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #6 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + str r0, [r4, #0x54] + cmp r0, #0 + beq _08071986 + ldrb r0, [r4, #0x14] + cmp r0, #2 + bne _0807197C + ldr r1, _08071978 @ =gUnk_03003F80 + movs r0, #0xf3 + lsls r0, r0, #2 + b _08071980 + .align 2, 0 +_08071978: .4byte gUnk_03003F80 +_0807197C: + ldr r1, _08071988 @ =gUnk_03003F80 + ldr r0, _0807198C @ =0x000003C7 +_08071980: + strh r0, [r1, #8] + bl sub_08052BB8 +_08071986: + pop {r4, pc} + .align 2, 0 +_08071988: .4byte gUnk_03003F80 +_0807198C: .4byte 0x000003C7 + + thumb_func_start sub_08071990 +sub_08071990: @ 0x08071990 + push {r4, lr} + adds r2, r0, #0 + ldr r0, _080719C0 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080719E2 + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + ldr r3, _080719C4 @ =gUnk_03003F80 + ldr r0, [r3, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080719D8 + ldrb r0, [r2, #0x14] + cmp r0, #2 + bne _080719CC + ldr r0, _080719C8 @ =0x000003CD + strh r0, [r3, #8] + b _08071A4A + .align 2, 0 +_080719C0: .4byte gUnk_02000050 +_080719C4: .4byte gUnk_03003F80 +_080719C8: .4byte 0x000003CD +_080719CC: + ldr r0, _080719D4 @ =0x000003C9 + strh r0, [r3, #8] + b _08071A4A + .align 2, 0 +_080719D4: .4byte 0x000003C9 +_080719D8: + bl sub_08071A6C + bl sub_08079258 + b _08071A4A +_080719E2: + ldr r4, _08071A20 @ =gUnk_03003F80 + ldr r0, [r4, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08071A4A + ldrb r0, [r2, #0x14] + movs r3, #0 + cmp r0, #2 + bne _080719F8 + movs r3, #4 +_080719F8: + ldr r0, [r2, #0x54] + ldrb r0, [r0, #0xe] + cmp r0, #0 + beq _08071A24 + adds r0, r3, #0 + adds r0, #0xc8 + adds r1, r2, #0 + adds r1, #0x58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + beq _08071A44 + movs r1, #0xf2 + lsls r1, r1, #2 + adds r0, r1, #0 + adds r0, r3, r0 + strh r0, [r4, #8] + b _08071A4A + .align 2, 0 +_08071A20: .4byte gUnk_03003F80 +_08071A24: + adds r0, r3, #0 + adds r0, #0xc7 + adds r1, r2, #0 + adds r1, #0x58 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r1] + cmp r0, r1 + beq _08071A44 + ldr r1, _08071A40 @ =0x000003C7 + adds r0, r3, r1 + strh r0, [r4, #8] + b _08071A4A + .align 2, 0 +_08071A40: .4byte 0x000003C7 +_08071A44: + adds r0, r2, #0 + bl sub_080042B8 +_08071A4A: + pop {r4, pc} + + thumb_func_start sub_08071A4C +sub_08071A4C: @ 0x08071A4C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08071A68 + bl sub_08071A6C + bl sub_0807921C +_08071A68: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08071A6C +sub_08071A6C: @ 0x08071A6C + ldr r1, _08071A84 @ =gUnk_03003DC0 + movs r0, #0 + strb r0, [r1] + ldr r3, _08071A88 @ =gLinkEntity + ldrb r1, [r3, #0x11] + lsrs r2, r1, #4 + subs r0, #0x10 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x11] + bx lr + .align 2, 0 +_08071A84: .4byte gUnk_03003DC0 +_08071A88: .4byte gLinkEntity + + thumb_func_start sub_08071A8C +sub_08071A8C: @ 0x08071A8C + push {lr} + ldr r1, _08071AA8 @ =gUnk_03003F80 + adds r1, #0xa8 + movs r2, #0x19 + strb r2, [r1] + ldr r2, _08071AAC @ =gUnk_0811BAE4 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08071AA8: .4byte gUnk_03003F80 +_08071AAC: .4byte gUnk_0811BAE4 + + thumb_func_start sub_08071AB0 +sub_08071AB0: @ 0x08071AB0 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xd] + adds r0, #1 + strb r0, [r3, #0xd] + ldr r1, _08071AD8 @ =gUnk_03003F80 + ldr r2, [r1, #0x30] + movs r0, #1 + orrs r2, r0 + str r2, [r1, #0x30] + ldrb r4, [r3, #0xa] + cmp r4, #1 + bne _08071ADC + movs r1, #0 + movs r0, #0 + strh r0, [r3, #0x24] + strb r1, [r3, #0xe] + strb r4, [r3, #0xf] + b _08071AE8 + .align 2, 0 +_08071AD8: .4byte gUnk_03003F80 +_08071ADC: + movs r0, #0x80 + ands r2, r0 + cmp r2, #0 + beq _08071AE6 + movs r0, #0x40 +_08071AE6: + strh r0, [r3, #0x24] +_08071AE8: + adds r0, r3, #0 + bl sub_08071AF0 + pop {r4, pc} + + thumb_func_start sub_08071AF0 +sub_08071AF0: @ 0x08071AF0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08071B34 @ =gUnk_03003F80 + adds r0, r5, #0 + adds r0, #0x80 + movs r1, #0 + strh r1, [r0] + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _08071B44 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08071B58 + ldr r0, _08071B38 @ =gUnk_0811BAF0 + ldrb r1, [r4, #0xe] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r2, [r1] + adds r0, r2, #0 + cmp r0, #0xff + beq _08071B3C + strb r2, [r4, #0xf] + ldrh r0, [r1, #2] + strh r0, [r4, #0x24] + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + b _08071B58 + .align 2, 0 +_08071B34: .4byte gUnk_03003F80 +_08071B38: .4byte gUnk_0811BAF0 +_08071B3C: + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _08071B5C +_08071B44: + ldrb r0, [r5, #6] + subs r0, #1 + strb r0, [r5, #6] + movs r1, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08071B58 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] +_08071B58: + bl sub_08079E08 +_08071B5C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08071B60 +sub_08071B60: @ 0x08071B60 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08071BAC @ =gUnk_03003F80 + movs r2, #0 + movs r0, #2 + strb r0, [r5, #6] + ldr r0, [r5, #0x30] + movs r1, #2 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r5, #0x30] + strb r2, [r4, #0xa] + adds r0, r4, #0 + adds r0, #0x42 + strb r2, [r0] + adds r0, r4, #0 + bl sub_080728AC + movs r0, #6 + strb r0, [r4, #0xf] + ldr r0, [r5, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08071BA8 + movs r0, #0x82 + lsls r0, r0, #1 + strh r0, [r5, #8] + movs r0, #3 + strh r0, [r4, #0x12] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r1, #0x3c + adds r0, r4, #0 + bl sub_080042AC +_08071BA8: + pop {r4, r5, pc} + .align 2, 0 +_08071BAC: .4byte gUnk_03003F80 + + thumb_func_start sub_08071BB0 +sub_08071BB0: @ 0x08071BB0 + push {lr} + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + ldr r2, _08071BD4 @ =gUnk_0811BB2C + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldr r0, _08071BD8 @ =gUnk_03003F80 + adds r0, #0xa8 + movs r1, #0x12 + strb r1, [r0] + pop {pc} + .align 2, 0 +_08071BD4: .4byte gUnk_0811BB2C +_08071BD8: .4byte gUnk_03003F80 + + thumb_func_start sub_08071BDC +sub_08071BDC: @ 0x08071BDC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08071C10 @ =gUnk_03003F80 + ldr r0, [r5, #0x30] + movs r1, #0x88 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08071C9C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _08071C1C + ldr r0, [r5, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08071C14 + movs r0, #0x84 + lsls r0, r0, #3 + strh r0, [r5, #8] + b _08071C9C + .align 2, 0 +_08071C10: .4byte gUnk_03003F80 +_08071C14: + movs r0, #0x81 + lsls r0, r0, #4 + strh r0, [r5, #8] + b _08071C9C +_08071C1C: + strb r0, [r5, #0xc] + ldr r1, [r5, #0x30] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08071C4C + ldrb r0, [r5, #0x12] + subs r0, #8 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _08071C42 + adds r0, r4, #0 + bl sub_0807A298 + bl sub_08079458 + movs r0, #0xa + strb r0, [r4, #0xc] +_08071C42: + ldr r0, _08071C48 @ =0x00000C1A + b _08071C5A + .align 2, 0 +_08071C48: .4byte 0x00000C1A +_08071C4C: + movs r0, #8 + ands r1, r0 + movs r0, #0xde + lsls r0, r0, #1 + cmp r1, #0 + beq _08071C5A + ldr r0, _08071CA0 @ =0x00000459 +_08071C5A: + ldr r2, _08071CA4 @ =gUnk_03003F80 + movs r3, #0 + strh r0, [r2, #8] + ldr r0, [r2, #0x30] + ldr r1, _08071CA8 @ =0xFEDBF2FE + ands r0, r1 + str r0, [r2, #0x30] + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #4 + strb r0, [r4, #0x14] + adds r5, r4, #0 + adds r5, #0x29 + ldrb r1, [r5] + subs r0, #0x3d + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r5] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r3, [r2, #2] + strb r3, [r2, #6] + adds r0, r4, #0 + bl sub_0800451C + bl sub_08077B2C + movs r0, #0x87 + bl sub_080A3268 +_08071C9C: + pop {r4, r5, pc} + .align 2, 0 +_08071CA0: .4byte 0x00000459 +_08071CA4: .4byte gUnk_03003F80 +_08071CA8: .4byte 0xFEDBF2FE + + thumb_func_start sub_08071CAC +sub_08071CAC: @ 0x08071CAC + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r3, #0x80 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08071CFE + ldr r1, _08071CE0 @ =gUnk_03003F80 + ldr r2, [r1, #0x30] + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + bne _08071CEC + movs r0, #8 + ands r2, r0 + ldr r0, _08071CE4 @ =0x000002BD + cmp r2, #0 + beq _08071CEE + ldr r0, _08071CE8 @ =0x0000045A + b _08071CEE + .align 2, 0 +_08071CE0: .4byte gUnk_03003F80 +_08071CE4: .4byte 0x000002BD +_08071CE8: .4byte 0x0000045A +_08071CEC: + ldr r0, _08071D00 @ =0x00000C1B +_08071CEE: + strh r0, [r1, #8] + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0xf0 + strb r0, [r4, #0xe] + movs r0, #0x7b + bl sub_080A3268 +_08071CFE: + pop {r4, pc} + .align 2, 0 +_08071D00: .4byte 0x00000C1B + + thumb_func_start sub_08071D04 +sub_08071D04: @ 0x08071D04 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080042B8 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _08071D7A + movs r4, #0 + movs r0, #0x28 + bl sub_080544DC + adds r1, r0, #0 + cmp r1, #0 + beq _08071D3A + ldr r0, _08071D6C @ =gUnk_02002A40 + adds r0, r0, r1 + adds r0, #0xb5 + movs r1, #0x20 + strb r1, [r0] + movs r0, #0x40 + movs r1, #0x60 + movs r2, #2 + bl sub_080A2960 + movs r4, #0x20 +_08071D3A: + cmp r4, #0 + beq _08071D74 + adds r0, r4, #0 + bl sub_080526A0 + movs r2, #0 + movs r0, #3 + strb r0, [r5, #0xd] + ldr r1, _08071D70 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x3c + strb r2, [r0] + movs r0, #0xff + strb r0, [r5, #0x15] + movs r3, #0 + strh r2, [r5, #0x24] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r5, #0x20] + movs r0, #1 + strb r0, [r1, #2] + adds r1, #0x26 + strb r3, [r1] + b _08071D7A + .align 2, 0 +_08071D6C: .4byte gUnk_02002A40 +_08071D70: .4byte gUnk_03003F80 +_08071D74: + ldr r1, _08071D7C @ =gUnk_030010A0 + movs r0, #1 + strb r0, [r1, #5] +_08071D7A: + pop {r4, r5, pc} + .align 2, 0 +_08071D7C: .4byte gUnk_030010A0 + + thumb_func_start sub_08071D80 +sub_08071D80: @ 0x08071D80 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r5, _08071DB4 @ =gUnk_03003F80 + movs r0, #1 + strb r0, [r5, #0x14] + adds r0, r4, #0 + bl sub_08073904 + ldrb r1, [r5, #2] + movs r0, #7 + ands r0, r1 + cmp r0, #3 + bne _08071DB2 + movs r0, #0 + strb r0, [r5, #2] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xe2 + strb r0, [r1] + bl sub_0805E564 + bl sub_080791D0 +_08071DB2: + pop {r4, r5, pc} + .align 2, 0 +_08071DB4: .4byte gUnk_03003F80 + + thumb_func_start sub_08071DB8 +sub_08071DB8: @ 0x08071DB8 + push {lr} + ldr r2, _08071DCC @ =gUnk_0811BB3C + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08071DCC: .4byte gUnk_0811BB3C + + thumb_func_start sub_08071DD0 +sub_08071DD0: @ 0x08071DD0 + push {lr} + adds r2, r0, #0 + ldr r1, _08071DF4 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x38 + ldrb r0, [r0] + strb r0, [r2, #0xe] + adds r3, r1, #0 + adds r3, #0x39 + ldrb r0, [r3] + cmp r0, #0 + beq _08071DF8 + movs r0, #0 + strb r0, [r3] + movs r0, #2 + strb r0, [r2, #0xd] + adds r0, #0xfe + b _08071E00 + .align 2, 0 +_08071DF4: .4byte gUnk_03003F80 +_08071DF8: + movs r0, #1 + strb r0, [r2, #0xd] + movs r0, #0x8a + lsls r0, r0, #1 +_08071E00: + strh r0, [r1, #8] + pop {pc} + + thumb_func_start sub_08071E04 +sub_08071E04: @ 0x08071E04 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x34] + cmp r0, #0 + beq _08071E38 + ldr r5, _08071E34 @ =gUnk_03003F80 + ldrb r0, [r5, #0x14] + cmp r0, #0 + bne _08071E38 + bl sub_0807A1B8 + ldrb r0, [r5, #0x12] + cmp r0, #1 + bne _08071E38 + movs r0, #7 + strb r0, [r5, #0x11] + ldr r0, [r5, #0x30] + movs r1, #0x80 + lsls r1, r1, #2 + orrs r0, r1 + str r0, [r5, #0x30] + bl sub_080791BC + b _08071E72 + .align 2, 0 +_08071E34: .4byte gUnk_03003F80 +_08071E38: + adds r0, r4, #0 + bl sub_080042B8 + bl sub_08079B24 + cmp r0, #0 + bne _08071E4E + adds r0, r4, #0 + bl sub_08079708 + b _08071E72 +_08071E4E: + bl sub_080792D8 + bl sub_0807953C + cmp r0, #0 + beq _08071E60 + ldrb r0, [r4, #0xe] + subs r0, #2 + b _08071E64 +_08071E60: + ldrb r0, [r4, #0xe] + subs r0, #1 +_08071E64: + strb r0, [r4, #0xe] + movs r0, #0xe + ldrsb r0, [r4, r0] + cmp r0, #0 + bgt _08071E72 + bl sub_080791BC +_08071E72: + pop {r4, r5, pc} + + thumb_func_start sub_08071E74 +sub_08071E74: @ 0x08071E74 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + bl sub_08079E08 + ldrb r0, [r4, #0xe] + adds r1, r0, #0 + adds r1, #0xff + strb r1, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08071E96 + bl sub_080791BC +_08071E96: + pop {r4, pc} + + thumb_func_start sub_08071E98 +sub_08071E98: @ 0x08071E98 + push {lr} + ldr r2, _08071EAC @ =gUnk_0811BB48 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08071EAC: .4byte gUnk_0811BB48 + + thumb_func_start sub_08071EB0 +sub_08071EB0: @ 0x08071EB0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08077B2C + adds r0, r4, #0 + movs r1, #0xe + bl sub_08077C3C + cmp r0, #0 + beq _08071F12 + ldr r3, _08071EE4 @ =gUnk_03003F80 + adds r2, r3, #0 + adds r2, #0x38 + ldrb r1, [r2] + adds r0, #0x68 + strb r1, [r0] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r2] + cmp r0, #0x20 + bne _08071EEC + ldr r0, _08071EE8 @ =0x00000614 + strh r0, [r3, #8] + b _08071F12 + .align 2, 0 +_08071EE4: .4byte gUnk_03003F80 +_08071EE8: .4byte 0x00000614 +_08071EEC: + cmp r0, #0x20 + blt _08071F00 + cmp r0, #0x25 + bgt _08071F00 + ldr r0, _08071EFC @ =0x000002DF + strh r0, [r3, #8] + b _08071F12 + .align 2, 0 +_08071EFC: .4byte 0x000002DF +_08071F00: + movs r0, #0xc2 + lsls r0, r0, #3 + strh r0, [r3, #8] + adds r0, r3, #0 + adds r0, #0x38 + ldrb r0, [r0] + movs r1, #2 + bl sub_0807CAA0 +_08071F12: + pop {r4, pc} + + thumb_func_start sub_08071F14 +sub_08071F14: @ 0x08071F14 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08071F32 + ldr r1, _08071F34 @ =gUnk_03003F80 + movs r0, #0 + str r0, [r1, #0x2c] + bl sub_0807921C +_08071F32: + pop {r4, pc} + .align 2, 0 +_08071F34: .4byte gUnk_03003F80 + + thumb_func_start sub_08071F38 +sub_08071F38: @ 0x08071F38 + push {lr} + ldr r2, _08071F4C @ =gUnk_0811BB50 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08071F4C: .4byte gUnk_0811BB50 + + thumb_func_start sub_08071F50 +sub_08071F50: @ 0x08071F50 + push {lr} + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0x78 + strb r1, [r0, #0xe] + ldrb r1, [r0, #0xd] + adds r1, #1 + strb r1, [r0, #0xd] + ldr r1, _08071F78 @ =gUnk_03003F80 + movs r0, #0xa5 + lsls r0, r0, #2 + strh r0, [r1, #8] + bl sub_08077B20 + ldr r0, _08071F7C @ =0x00000195 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08071F78: .4byte gUnk_03003F80 +_08071F7C: .4byte 0x00000195 + + thumb_func_start sub_08071F80 +sub_08071F80: @ 0x08071F80 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + adds r5, r0, #0 + cmp r5, #0 + bne _08071FB8 + adds r0, r4, #0 + bl sub_08016A04 + ldr r0, _08071FB4 @ =gUnk_03003F80 + strb r5, [r0, #2] + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _08071FB8 + bl sub_08079D48 + cmp r0, #0 + bne _08071FB8 + adds r0, r4, #0 + bl sub_08072008 + b _08072004 + .align 2, 0 +_08071FB4: .4byte gUnk_03003F80 +_08071FB8: + bl sub_08079B24 + cmp r0, #0 + bne _08071FC8 + adds r0, r4, #0 + bl sub_08079708 + b _08071FFE +_08071FC8: + ldr r0, _08071FEC @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #4 + ands r0, r1 + cmp r0, #0 + beq _08071FFE + bl sub_0807953C + cmp r0, #0 + beq _08071FF0 + ldrb r0, [r4, #0xe] + subs r0, #3 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x62 + movs r0, #2 + b _08071FF4 + .align 2, 0 +_08071FEC: .4byte gUnk_03003F80 +_08071FF0: + adds r1, r4, #0 + adds r1, #0x62 +_08071FF4: + strb r0, [r1] + movs r0, #0xe + ldrsb r0, [r4, r0] + cmp r0, #0 + bgt _08072004 +_08071FFE: + adds r0, r4, #0 + bl sub_08072008 +_08072004: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08072008 +sub_08072008: @ 0x08072008 + push {lr} + adds r3, r0, #0 + adds r1, r3, #0 + adds r1, #0x3d + movs r2, #0 + movs r0, #0xa0 + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x42 + strb r2, [r0] + ldrb r1, [r3, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r3, #0x10] + adds r0, r3, #0 + adds r0, #0x62 + strb r2, [r0] + ldr r2, _08072044 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08072048 @ =0xFFFFF7FE + ands r0, r1 + str r0, [r2, #0x30] + adds r0, r3, #0 + movs r1, #0xd + movs r2, #0 + bl CreateFX + bl sub_080791BC + pop {pc} + .align 2, 0 +_08072044: .4byte gUnk_03003F80 +_08072048: .4byte 0xFFFFF7FE + + thumb_func_start sub_0807204C +sub_0807204C: @ 0x0807204C + push {lr} + ldr r2, _08072060 @ =gUnk_0811BB58 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08072060: .4byte gUnk_0811BB58 + + thumb_func_start sub_08072064 +sub_08072064: @ 0x08072064 + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + ldr r2, _08072094 @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0x3a + ldrb r1, [r1] + strb r1, [r0, #0xe] + adds r0, r2, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, #1 + ldrb r0, [r0] + lsls r0, r0, #8 + orrs r1, r0 + strh r1, [r2, #8] + bl sub_08077B2C + pop {pc} + .align 2, 0 +_08072094: .4byte gUnk_03003F80 + + thumb_func_start sub_08072098 +sub_08072098: @ 0x08072098 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080720B4 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080720D8 + b _080720C2 +_080720B4: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080720D8 +_080720C2: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _080720D4 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_080720D4: + bl sub_080791BC +_080720D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080720DC +sub_080720DC: @ 0x080720DC + push {r4, lr} + adds r4, r0, #0 + bl sub_08078EFC + cmp r0, #0 + bne _080720F8 + ldr r0, _080720FC @ =gUnk_0811BB60 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_080720F8: + pop {r4, pc} + .align 2, 0 +_080720FC: .4byte gUnk_0811BB60 + + thumb_func_start sub_08072100 +sub_08072100: @ 0x08072100 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldr r0, _08072148 @ =gUnk_08114F88 + str r0, [r4, #0x48] + ldr r2, _0807214C @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x38 + ldrb r0, [r0] + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r2, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + beq _0807213A + movs r0, #0xff + strb r0, [r4, #0x15] +_0807213A: + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08072154 + ldr r0, _08072150 @ =0x00000404 + b _08072158 + .align 2, 0 +_08072148: .4byte gUnk_08114F88 +_0807214C: .4byte gUnk_03003F80 +_08072150: .4byte 0x00000404 +_08072154: + movs r0, #0x82 + lsls r0, r0, #1 +_08072158: + strh r0, [r2, #8] + bl sub_08077B2C + adds r0, r4, #0 + bl sub_08072168 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08072168 +sub_08072168: @ 0x08072168 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + movs r2, #0xc + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806F854 + lsls r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #6 + cmp r0, #0 + beq _0807218A + movs r1, #0x80 + lsls r1, r1, #7 +_0807218A: + adds r0, r4, #0 + bl sub_08003FC4 + ldr r0, _080721A4 @ =gUnk_03003F80 + adds r0, #0x3a + ldrb r0, [r0] + cmp r0, #0 + beq _080721A8 + adds r0, r4, #0 + bl sub_0806F69C + b _080721AC + .align 2, 0 +_080721A4: .4byte gUnk_03003F80 +_080721A8: + bl sub_08079E08 +_080721AC: + ldr r1, _080721E0 @ =gUnk_03003F80 + ldrb r0, [r4, #0x15] + strb r0, [r1, #0xd] + bl sub_08019840 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080721DE + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_08016A04 + bl sub_080791BC +_080721DE: + pop {r4, pc} + .align 2, 0 +_080721E0: .4byte gUnk_03003F80 + + thumb_func_start sub_080721E4 +sub_080721E4: @ 0x080721E4 + push {lr} + ldr r1, _08072208 @ =gUnk_03003F80 + adds r1, #0xa8 + movs r2, #0x1a + strb r2, [r1] + ldr r2, _0807220C @ =gUnk_0811BB68 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldr r0, _08072210 @ =gUnk_0200AF00 + adds r0, #0x2e + movs r1, #8 + strb r1, [r0] + pop {pc} + .align 2, 0 +_08072208: .4byte gUnk_03003F80 +_0807220C: .4byte gUnk_0811BB68 +_08072210: .4byte gUnk_0200AF00 + + thumb_func_start sub_08072214 +sub_08072214: @ 0x08072214 + push {lr} + adds r3, r0, #0 + movs r0, #1 + strb r0, [r3, #0xd] + movs r0, #0x80 + strh r0, [r3, #0x24] + ldr r2, _08072244 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x38 + ldrb r0, [r0] + strb r0, [r3, #0xe] + ldrb r0, [r3, #0x14] + movs r1, #4 + eors r0, r1 + lsls r0, r0, #2 + strb r0, [r3, #0x15] + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _08072248 + movs r0, #0xd3 + lsls r0, r0, #2 + b _0807224A + .align 2, 0 +_08072244: .4byte gUnk_03003F80 +_08072248: + ldr r0, _0807225C @ =0x00000944 +_0807224A: + strh r0, [r2, #8] + ldr r0, [r2, #0x30] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + adds r0, r3, #0 + bl sub_08072260 + pop {pc} + .align 2, 0 +_0807225C: .4byte 0x00000944 + + thumb_func_start sub_08072260 +sub_08072260: @ 0x08072260 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0807229C @ =gUnk_03003F80 + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #0 + strh r0, [r1] + bl sub_08079E08 + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080722B0 + ldr r0, [r5, #0x30] + movs r1, #2 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r5, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _080722A0 + movs r0, #0xd3 + lsls r0, r0, #2 + b _080722A2 + .align 2, 0 +_0807229C: .4byte gUnk_03003F80 +_080722A0: + ldr r0, _080722B4 @ =0x00000944 +_080722A2: + strh r0, [r5, #8] + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + bl sub_080791BC +_080722B0: + pop {r4, r5, pc} + .align 2, 0 +_080722B4: .4byte 0x00000944 + + thumb_func_start sub_080722B8 +sub_080722B8: @ 0x080722B8 + push {lr} + ldr r1, _080722D4 @ =gUnk_03003F80 + adds r1, #0xa8 + movs r2, #0xa + strb r2, [r1] + ldr r2, _080722D8 @ =gUnk_0811BB70 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080722D4: .4byte gUnk_03003F80 +_080722D8: .4byte gUnk_0811BB70 + + thumb_func_start sub_080722DC +sub_080722DC: @ 0x080722DC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r2, _08072318 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + adds r5, r2, #0 + cmp r0, #0 + bne _0807231C + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xa0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #0x42 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _0807230E + str r4, [r0, #0x54] +_0807230E: + movs r0, #0x8a + lsls r0, r0, #1 + strh r0, [r5, #8] + b _08072332 + .align 2, 0 +_08072318: .4byte gUnk_03003F80 +_0807231C: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #3 + strb r0, [r4, #0xd] + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0xa + strb r0, [r1] +_08072332: + ldr r0, [r5, #0x30] + ldr r1, _08072350 @ =0x00000401 + orrs r0, r1 + str r0, [r5, #0x30] + bl sub_08077B2C + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x7a + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_08072350: .4byte 0x00000401 + + thumb_func_start sub_08072354 +sub_08072354: @ 0x08072354 + push {r4, lr} + adds r4, r0, #0 + movs r2, #0xc + rsbs r2, r2, #0 + movs r1, #0 + bl sub_0806F854 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08079744 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + adds r3, r0, #0 + cmp r3, #0 + bne _080723C0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x42 + strb r3, [r0] + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r2, _080723C4 @ =gUnk_03003F80 + ldr r0, _080723C8 @ =0x000002C1 + strh r0, [r2, #8] + ldr r0, [r2, #0x30] + ldr r1, _080723CC @ =0xFFFFFBFF + ands r0, r1 + str r0, [r2, #0x30] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0xc + movs r2, #0 + bl CreateFX + movs r0, #0xd3 + lsls r0, r0, #1 + bl sub_080A3268 +_080723C0: + pop {r4, pc} + .align 2, 0 +_080723C4: .4byte gUnk_03003F80 +_080723C8: .4byte 0x000002C1 +_080723CC: .4byte 0xFFFFFBFF + + thumb_func_start sub_080723D0 +sub_080723D0: @ 0x080723D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0807240A + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0x14 + strb r0, [r1] + subs r0, #0x16 + bl sub_080526A0 + bl sub_08079458 +_0807240A: + pop {r4, pc} + + thumb_func_start sub_0807240C +sub_0807240C: @ 0x0807240C + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x42 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08072448 + ldrb r0, [r2, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r1, r2, #0 + adds r1, #0x3d + movs r0, #0x14 + strb r0, [r1] + ldr r2, _0807244C @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08072450 @ =0xFFFFFBFF + ands r0, r1 + str r0, [r2, #0x30] + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + bl sub_08079458 +_08072448: + pop {pc} + .align 2, 0 +_0807244C: .4byte gUnk_03003F80 +_08072450: .4byte 0xFFFFFBFF + + thumb_func_start sub_08072454 +sub_08072454: @ 0x08072454 + push {lr} + ldr r2, _08072468 @ =gUnk_0811BB80 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08072468: .4byte gUnk_0811BB80 + + thumb_func_start sub_0807246C +sub_0807246C: @ 0x0807246C + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + ldr r2, _0807248C @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0x38 + ldrb r1, [r1] + strb r1, [r0, #0xe] + movs r0, #0xf0 + lsls r0, r0, #2 + strh r0, [r2, #8] + movs r0, #0x7b + bl sub_080A3268 + pop {pc} + .align 2, 0 +_0807248C: .4byte gUnk_03003F80 + + thumb_func_start sub_08072490 +sub_08072490: @ 0x08072490 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080724AE + adds r0, r1, #0 + bl sub_080042B8 + bl sub_08079E08 + b _080724C2 +_080724AE: + adds r0, r1, #0 + adds r0, #0x3d + movs r1, #0x3c + strb r1, [r0] + movs r0, #8 + rsbs r0, r0, #0 + bl sub_080526A0 + bl sub_080791D0 +_080724C2: + pop {pc} + + thumb_func_start sub_080724C4 +sub_080724C4: @ 0x080724C4 + push {lr} + ldr r2, _080724D8 @ =gUnk_0811BB88 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080724D8: .4byte gUnk_0811BB88 + + thumb_func_start sub_080724DC +sub_080724DC: @ 0x080724DC + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + bl sub_0807A108 + adds r0, r4, #0 + bl sub_080002B8 + cmp r0, #0x29 + beq _0807254C + ldr r1, _08072530 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x89 + ldrb r0, [r0] + cmp r0, #0 + bne _08072512 + adds r0, r1, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08072512 + adds r0, r4, #0 + bl sub_0807AE20 +_08072512: + ldr r0, _08072534 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #0 + bne _08072538 + ldrb r0, [r4, #0x11] + lsrs r2, r0, #4 + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x11] + adds r0, r4, #0 + bl sub_080728AC + b _08072588 + .align 2, 0 +_08072530: .4byte gUnk_03003F80 +_08072534: .4byte gUnk_03000BF0 +_08072538: + ldr r0, _08072548 @ =gUnk_03003F80 + ldrb r0, [r0, #0x1c] + cmp r0, #0 + bne _08072588 + adds r0, r4, #0 + bl sub_080042B8 + b _08072588 + .align 2, 0 +_08072548: .4byte gUnk_03003F80 +_0807254C: + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r4, #0xd] + ldr r0, _08072570 @ =gUnk_02034350 + ldrb r0, [r0] + cmp r0, #0 + bne _08072588 + ldr r2, _08072574 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807257C + ldr r0, _08072578 @ =0x00000C18 + b _08072580 + .align 2, 0 +_08072570: .4byte gUnk_02034350 +_08072574: .4byte gUnk_03003F80 +_08072578: .4byte 0x00000C18 +_0807257C: + movs r0, #0x82 + lsls r0, r0, #1 +_08072580: + strh r0, [r2, #8] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] +_08072588: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807258C +sub_0807258C: @ 0x0807258C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080725D0 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #0 + bne _08072604 + adds r0, r4, #0 + bl sub_0807A894 + cmp r0, #0x29 + bne _080725E4 + bl sub_08079E08 + bl sub_080797C4 + cmp r0, #0 + beq _080725DC + ldr r2, _080725D4 @ =gUnk_03003F80 + ldr r1, _080725D8 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + strh r0, [r2, #0x16] + ldrh r0, [r1, #0x32] + strh r0, [r2, #0x18] + ldrb r1, [r4, #0x11] + lsrs r2, r1, #4 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x11] + adds r0, r4, #0 + bl sub_080728AC + b _08072604 + .align 2, 0 +_080725D0: .4byte gUnk_03000BF0 +_080725D4: .4byte gUnk_03003F80 +_080725D8: .4byte gLinkEntity +_080725DC: + adds r0, r4, #0 + bl sub_080042B8 + b _08072604 +_080725E4: + ldr r2, _08072624 @ =gUnk_03003F80 + ldr r1, _08072628 @ =gLinkEntity + ldrh r0, [r1, #0x2e] + strh r0, [r2, #0x16] + ldrh r0, [r1, #0x32] + strh r0, [r2, #0x18] + ldrb r1, [r4, #0x11] + lsrs r2, r1, #4 + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x11] + adds r0, r4, #0 + bl sub_080728AC +_08072604: + ldr r1, _08072624 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x89 + ldrb r0, [r0] + cmp r0, #0 + bne _08072620 + adds r0, r1, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08072620 + adds r0, r4, #0 + bl sub_0807AE20 +_08072620: + pop {r4, pc} + .align 2, 0 +_08072624: .4byte gUnk_03003F80 +_08072628: .4byte gLinkEntity + + thumb_func_start sub_0807262C +sub_0807262C: @ 0x0807262C + push {lr} + ldr r1, _08072648 @ =gUnk_03003F80 + adds r1, #0xa8 + movs r2, #9 + strb r2, [r1] + ldr r2, _0807264C @ =gUnk_0811BB90 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08072648: .4byte gUnk_03003F80 +_0807264C: .4byte gUnk_0811BB90 + + thumb_func_start sub_08072650 +sub_08072650: @ 0x08072650 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08072698 @ =gUnk_03003F80 + ldr r0, [r5, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xe + ands r0, r1 + cmp r0, #0 + bne _0807266E + ldr r0, _0807269C @ =gLinkEntity + bl sub_0806F948 + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] +_0807266E: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xd] + strb r1, [r4, #0xe] + bl sub_08077B2C + ldr r3, [r5, #0x30] + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _080726A4 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r0, _080726A0 @ =0x00000C08 + b _080726BE + .align 2, 0 +_08072698: .4byte gUnk_03003F80 +_0807269C: .4byte gLinkEntity +_080726A0: .4byte 0x00000C08 +_080726A4: + adds r0, r4, #0 + adds r0, #0x40 + movs r1, #0x1e + strb r1, [r0] + movs r0, #8 + ands r3, r0 + cmp r3, #0 + beq _080726BA + movs r0, #0x87 + lsls r0, r0, #3 + b _080726BE +_080726BA: + movs r0, #0xab + lsls r0, r0, #2 +_080726BE: + strh r0, [r5, #8] + ldr r2, _080726E0 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xb + orrs r0, r1 + str r0, [r2, #0x30] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080726E4 + movs r0, #0x79 + bl sub_080A3268 + b _080726EA + .align 2, 0 +_080726E0: .4byte gUnk_03003F80 +_080726E4: + movs r0, #0x78 + bl sub_080A3268 +_080726EA: + movs r0, #0x7e + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080726F4 +sub_080726F4: @ 0x080726F4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _08072744 @ =gUnk_03003F80 + ldr r2, [r3, #0x30] + movs r0, #0xc0 + lsls r0, r0, #0xc + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #0xb + cmp r0, r1 + bne _08072730 + movs r0, #0x80 + lsls r0, r0, #0xe + ands r0, r2 + cmp r0, #0 + bne _0807274C + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0807274C + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807274C +_08072730: + ldr r0, _08072748 @ =0xFFFBFFFF + ands r2, r0 + str r2, [r3, #0x30] + bl sub_08078EFC + cmp r0, #0 + beq _08072740 + b _080728A0 +_08072740: + b _080727E0 + .align 2, 0 +_08072744: .4byte gUnk_03003F80 +_08072748: .4byte 0xFFFBFFFF +_0807274C: + ldrb r1, [r4, #0x14] + movs r0, #6 + ands r0, r1 + lsls r0, r0, #2 + strb r0, [r4, #0x15] + ldr r0, _080727A0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807277E + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0807277E + ldr r0, _080727A4 @ =gLinkEntity + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + movs r0, #4 + strb r0, [r4, #0xe] +_0807277E: + ldr r5, _080727A0 @ =gUnk_03003F80 + ldr r0, [r5, #0x30] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _0807278E + bl sub_0807A1B8 +_0807278E: + bl sub_08078EFC + cmp r0, #0 + beq _080727AC + ldr r0, [r5, #0x30] + ldr r1, _080727A8 @ =0xFFFBFFFF + ands r0, r1 + str r0, [r5, #0x30] + b _080728A0 + .align 2, 0 +_080727A0: .4byte gUnk_03003F80 +_080727A4: .4byte gLinkEntity +_080727A8: .4byte 0xFFFBFFFF +_080727AC: + ldr r1, [r5, #0x30] + movs r0, #0x80 + lsls r0, r0, #0xc + ands r0, r1 + cmp r0, #0 + beq _080727C4 + ldr r0, _080727C0 @ =0xFFFBFFFF + ands r1, r0 + str r1, [r5, #0x30] + b _080728A0 + .align 2, 0 +_080727C0: .4byte 0xFFFBFFFF +_080727C4: + adds r0, r4, #0 + bl sub_0807AC54 + cmp r0, #0 + bne _080728A0 + ldr r1, [r5, #0x30] + movs r3, #0x94 + lsls r3, r3, #2 + ands r3, r1 + cmp r3, #0 + beq _080727EC + ldr r0, _080727E8 @ =0xFFFBFFFF + ands r1, r0 + str r1, [r5, #0x30] +_080727E0: + adds r0, r4, #0 + bl sub_080728AC + b _080728A0 + .align 2, 0 +_080727E8: .4byte 0xFFFBFFFF +_080727EC: + ldrb r0, [r5, #0x12] + cmp r0, #0x17 + bne _080727FE + adds r0, r4, #0 + bl sub_0800892E + adds r5, r4, #0 + adds r5, #0x5a + b _08072844 +_080727FE: + adds r1, r4, #0 + adds r1, #0x5a + ldrb r0, [r1] + movs r2, #0xf + ands r2, r0 + adds r5, r1, #0 + cmp r2, #1 + beq _0807282A + cmp r2, #1 + bgt _08072818 + cmp r2, #0 + beq _08072822 + b _0807283C +_08072818: + cmp r2, #2 + beq _08072832 + cmp r2, #3 + beq _0807283A + b _0807283C +_08072822: + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + b _0807283C +_0807282A: + ldrh r0, [r4, #0x24] + adds r0, #0x20 + strh r0, [r4, #0x24] + b _0807283C +_08072832: + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + b _0807283C +_0807283A: + strh r3, [r4, #0x24] +_0807283C: + bl sub_08078F24 + bl sub_08079E08 +_08072844: + ldrb r1, [r5] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08072860 + ldr r0, _080728A4 @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + bne _08072860 + adds r0, r4, #0 + adds r0, #0x40 + strb r1, [r0] +_08072860: + ldrb r1, [r5] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08072870 + adds r0, r4, #0 + bl sub_08077698 +_08072870: + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08072882 + ldr r0, _080728A4 @ =gUnk_03003F80 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08072886 +_08072882: + bl sub_080791D0 +_08072886: + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807289A + ldr r0, _080728A4 @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + ldr r2, _080728A8 @ =0xFFDBFFFF + ands r1, r2 + str r1, [r0, #0x30] +_0807289A: + adds r0, r4, #0 + bl sub_080042B8 +_080728A0: + pop {r4, r5, pc} + .align 2, 0 +_080728A4: .4byte gUnk_03003F80 +_080728A8: .4byte 0xFFDBFFFF + + thumb_func_start sub_080728AC +sub_080728AC: @ 0x080728AC + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08079938 + ldr r0, _080728C8 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080728CC + adds r0, r4, #0 + bl sub_0807B068 + b _080728D0 + .align 2, 0 +_080728C8: .4byte gUnk_03003F80 +_080728CC: + bl sub_08078F60 +_080728D0: + ldr r1, _08072940 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _080728E0 + movs r0, #0 + strh r0, [r4, #0x24] +_080728E0: + ldr r0, [r1, #0x30] + movs r5, #0x40 + ands r5, r0 + adds r3, r0, #0 + cmp r5, #0 + bne _080728F6 + ldr r0, _08072944 @ =gLinkEntity + ldrb r1, [r0, #0x18] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #0x18] +_080728F6: + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + bne _08072910 + ldr r2, _08072944 @ =gLinkEntity + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] +_08072910: + ldr r0, _08072948 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0807292C + cmp r5, #0 + beq _08072928 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_08072928: + bl sub_080791D0 +_0807292C: + ldr r0, _08072940 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _0807293C + bl sub_0807A1B8 +_0807293C: + pop {r4, r5, pc} + .align 2, 0 +_08072940: .4byte gUnk_03003F80 +_08072944: .4byte gLinkEntity +_08072948: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807294C +sub_0807294C: @ 0x0807294C + push {lr} + ldr r1, _08072968 @ =gUnk_03003F80 + adds r1, #0xa8 + movs r2, #0x17 + strb r2, [r1] + ldr r2, _0807296C @ =gUnk_0811BB98 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08072968: .4byte gUnk_03003F80 +_0807296C: .4byte gUnk_0811BB98 + + thumb_func_start sub_08072970 +sub_08072970: @ 0x08072970 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _08072A4C + movs r7, #1 + strb r7, [r5, #0xd] + ldrh r2, [r5, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strh r0, [r5, #0x2e] + ldrh r0, [r5, #0x32] + ands r1, r0 + movs r0, #0xa + movs r3, #0 + orrs r1, r0 + strh r1, [r5, #0x32] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + movs r1, #0x39 + rsbs r1, r1, #0 + ands r0, r1 + strb r0, [r2] + strb r3, [r5, #0xe] + ldr r2, _080729D8 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xd + orrs r0, r1 + str r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080729DC + movs r0, #0x95 + lsls r0, r0, #4 + strh r0, [r2, #8] + adds r6, r5, #0 + adds r6, #0x38 + b _08072A14 + .align 2, 0 +_080729D8: .4byte gUnk_03003F80 +_080729DC: + ldr r0, _08072A50 @ =0x0000061C + strh r0, [r2, #8] + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r2, _08072A54 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r4, #0x32 + ldrsh r1, [r5, r4] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r4, r5, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080001DA + ldr r1, _08072A58 @ =0x00004020 + adds r6, r4, #0 + cmp r0, r1 + bne _08072A14 + strb r7, [r5, #0xe] +_08072A14: + ldr r0, _08072A5C @ =0x00004070 + movs r7, #0x2e + ldrsh r1, [r5, r7] + ldr r3, _08072A54 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r7, #0x32 + ldrsh r2, [r5, r7] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r6] + bl sub_0800015E + bl sub_08077B2C + adds r0, r5, #0 + bl sub_08072A60 + movs r0, #0x81 + bl sub_080A3268 +_08072A4C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08072A50: .4byte 0x0000061C +_08072A54: .4byte gUnk_03000BF0 +_08072A58: .4byte 0x00004020 +_08072A5C: .4byte 0x00004070 + + thumb_func_start sub_08072A60 +sub_08072A60: @ 0x08072A60 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08072AC4 + ldrb r0, [r2, #0xe] + cmp r0, #1 + bne _08072A9C + movs r0, #3 + strb r0, [r2, #0xd] + movs r0, #0x28 + strb r0, [r2, #0xe] + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x61 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08072A94 @ =gUnk_03003F80 + ldr r0, _08072A98 @ =0x00000624 + strh r0, [r1, #8] + b _08072ACA + .align 2, 0 +_08072A94: .4byte gUnk_03003F80 +_08072A98: .4byte 0x00000624 +_08072A9C: + movs r0, #2 + strb r0, [r2, #0xd] + ldr r2, _08072AB4 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08072ABC + ldr r0, _08072AB8 @ =0x00000954 + strh r0, [r2, #8] + b _08072ACA + .align 2, 0 +_08072AB4: .4byte gUnk_03003F80 +_08072AB8: .4byte 0x00000954 +_08072ABC: + movs r0, #0xc4 + lsls r0, r0, #3 + strh r0, [r2, #8] + b _08072ACA +_08072AC4: + adds r0, r2, #0 + bl sub_080042B8 +_08072ACA: + pop {pc} + + thumb_func_start sub_08072ACC +sub_08072ACC: @ 0x08072ACC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08072AE0 @ =gUnk_03003F80 + ldrb r3, [r5, #0xd] + lsls r2, r3, #0x18 + lsrs r0, r2, #0x18 + cmp r0, #0xff + bne _08072AE4 + movs r0, #0 + b _08072B56 + .align 2, 0 +_08072AE0: .4byte gUnk_03003F80 +_08072AE4: + ldrb r1, [r4, #0xf] + cmp r1, #7 + bls _08072B50 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + strb r3, [r4, #0x15] + movs r0, #0xd0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r0, #0x78 + strh r0, [r4, #0x24] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x80 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0x39 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x41 + strb r0, [r5, #2] + bl sub_0807921C + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08072B4C @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + b _08072B58 + .align 2, 0 +_08072B4C: .4byte gUnk_03000BF0 +_08072B50: + lsrs r0, r2, #0x1a + strb r0, [r4, #0x14] + adds r0, r1, #1 +_08072B56: + strb r0, [r4, #0xf] +_08072B58: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08072B5C +sub_08072B5C: @ 0x08072B5C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + movs r1, #0x28 + subs r1, r1, r0 + asrs r1, r1, #4 + adds r1, #1 + adds r0, r5, #0 + bl sub_080042BA + adds r0, r5, #0 + bl sub_0806F948 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _08072B82 + subs r0, #1 + strb r0, [r5, #0xe] + b _08072C40 +_08072B82: + ldr r0, _08072C04 @ =0x00004021 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08072C08 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldrb r0, [r5, #0x14] + lsls r0, r0, #2 + strb r0, [r5, #0x15] + movs r0, #1 + bl sub_0807A2F8 + adds r4, r0, #0 + cmp r4, #0 + bne _08072C10 + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x40 + strh r0, [r5, #0x24] + movs r0, #0xe4 + lsls r0, r0, #0xa + str r0, [r5, #0x20] + ldr r0, [r5, #0x34] + subs r0, #1 + str r0, [r5, #0x34] + ldr r1, _08072C0C @ =gUnk_03003F80 + movs r0, #0x41 + strb r0, [r1, #2] + movs r2, #0xc + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #0 + bl sub_0806F854 + bl sub_0807921C + b _08072C40 + .align 2, 0 +_08072C04: .4byte 0x00004021 +_08072C08: .4byte gUnk_03000BF0 +_08072C0C: .4byte gUnk_03003F80 +_08072C10: + bl sub_08052620 + cmp r0, #0 + bne _08072C1E + adds r0, r5, #0 + bl sub_08004542 +_08072C1E: + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + lsls r4, r4, #4 + subs r4, #4 + lsls r4, r4, #0xc + str r4, [r5, #0x20] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + ldr r1, _08072C44 @ =gUnk_03003F80 + movs r0, #0x81 + lsls r0, r0, #4 + strh r0, [r1, #8] + movs r0, #0x7c + bl sub_080A3268 +_08072C40: + pop {r4, r5, r6, pc} + .align 2, 0 +_08072C44: .4byte gUnk_03003F80 + + thumb_func_start sub_08072C48 +sub_08072C48: @ 0x08072C48 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08072C98 + adds r0, r4, #0 + movs r1, #7 + bl sub_08008790 + ldr r4, _08072C90 @ =gUnk_03003F80 + ldrb r0, [r4, #0x14] + cmp r0, #0 + beq _08072C94 + bl sub_08008B22 + cmp r0, #0 + beq _08072C98 + movs r0, #7 + strb r0, [r4, #0x11] + ldr r0, [r4, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08072C98 + bl sub_080791BC + b _08072C98 + .align 2, 0 +_08072C90: .4byte gUnk_03003F80 +_08072C94: + bl sub_0807921C +_08072C98: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08072C9C +sub_08072C9C: @ 0x08072C9C + push {lr} + ldr r1, _08072CB8 @ =gUnk_03003F80 + adds r1, #0xa8 + movs r2, #0x11 + strb r2, [r1] + ldr r2, _08072CBC @ =gUnk_0811BBAC + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08072CB8: .4byte gUnk_03003F80 +_08072CBC: .4byte gUnk_0811BBAC + + thumb_func_start sub_08072CC0 +sub_08072CC0: @ 0x08072CC0 + movs r1, #1 + strb r1, [r0, #0xd] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + ldr r3, _08072CF4 @ =gUnk_03003F80 + adds r1, r3, #0 + adds r1, #0x3a + ldrb r1, [r1] + lsrs r1, r1, #2 + adds r1, #1 + strb r1, [r0, #0xf] + adds r1, r3, #0 + adds r1, #0x39 + ldrb r1, [r1] + strb r1, [r0, #0x15] + movs r2, #0 + movs r1, #0x80 + lsls r1, r1, #3 + strh r1, [r0, #0x24] + ldr r0, _08072CF8 @ =0x00000524 + strh r0, [r3, #8] + strb r2, [r3, #5] + bx lr + .align 2, 0 +_08072CF4: .4byte gUnk_03003F80 +_08072CF8: .4byte 0x00000524 + + thumb_func_start sub_08072CFC +sub_08072CFC: @ 0x08072CFC + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_080042BA + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08072D1C + adds r0, r4, #0 + bl sub_0806F69C + b _08072D4E +_08072D1C: + movs r0, #2 + strb r0, [r4, #0xd] + ldr r2, _08072D50 @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0x38 + ldrb r0, [r1] + cmp r0, #7 + bhi _08072D30 + movs r0, #8 + strb r0, [r1] +_08072D30: + ldrb r0, [r1] + lsls r0, r0, #0xc + str r0, [r4, #0x20] + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x81 + lsls r0, r0, #4 + strh r0, [r2, #8] + movs r0, #5 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + bl sub_08077B2C +_08072D4E: + pop {r4, pc} + .align 2, 0 +_08072D50: .4byte gUnk_03003F80 + + thumb_func_start sub_08072D54 +sub_08072D54: @ 0x08072D54 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080042B8 + movs r2, #0xc + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806F854 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08072D7A + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + b _08072E80 +_08072D7A: + adds r0, r4, #0 + bl sub_0806F730 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + adds r2, r0, #0 + ldrb r5, [r4, #0xf] + cmp r5, #1 + beq _08072DD0 + cmp r5, #1 + bgt _08072D9C + cmp r5, #0 + beq _08072DA6 + b _08072E6C +_08072D9C: + cmp r5, #2 + beq _08072DFA + cmp r5, #3 + beq _08072E30 + b _08072E6C +_08072DA6: + ldr r1, _08072DC8 @ =gUnk_0811BBD4 + ldr r0, _08072DCC @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r2, #0 + bl sub_08007DD6 + cmp r0, #0 + beq _08072E6C + movs r0, #1 + strb r0, [r4, #0xe] + strb r0, [r4, #0xf] + b _08072E6C + .align 2, 0 +_08072DC8: .4byte gUnk_0811BBD4 +_08072DCC: .4byte gLinkEntity +_08072DD0: + ldr r1, _08072DEC @ =gUnk_0811BBD4 + ldr r0, _08072DF0 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r2, #0 + bl sub_08007DD6 + cmp r0, #0 + beq _08072DF4 + strb r5, [r4, #0xe] + b _08072E6C + .align 2, 0 +_08072DEC: .4byte gUnk_0811BBD4 +_08072DF0: .4byte gLinkEntity +_08072DF4: + movs r0, #2 + strb r0, [r4, #0xf] + b _08072E6C +_08072DFA: + ldrb r0, [r4, #0x14] + movs r5, #4 + eors r0, r5 + strb r0, [r4, #0x14] + ldr r1, _08072E28 @ =gUnk_0811BBD4 + ldr r0, _08072E2C @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r2, #0 + bl sub_08007DD6 + cmp r0, #0 + beq _08072E22 + movs r0, #1 + strb r0, [r4, #0xe] + movs r0, #3 + strb r0, [r4, #0xf] +_08072E22: + ldrb r0, [r4, #0x14] + eors r0, r5 + b _08072E6A + .align 2, 0 +_08072E28: .4byte gUnk_0811BBD4 +_08072E2C: .4byte gLinkEntity +_08072E30: + ldrb r0, [r4, #0x14] + movs r1, #4 + eors r0, r1 + strb r0, [r4, #0x14] + ldr r1, _08072E58 @ =gUnk_0811BBD4 + ldr r0, _08072E5C @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r2, #0 + bl sub_08007DD6 + cmp r0, #0 + beq _08072E60 + movs r0, #1 + strb r0, [r4, #0xe] + b _08072E64 + .align 2, 0 +_08072E58: .4byte gUnk_0811BBD4 +_08072E5C: .4byte gLinkEntity +_08072E60: + movs r0, #4 + strb r0, [r4, #0xf] +_08072E64: + ldrb r0, [r4, #0x14] + movs r1, #4 + eors r0, r1 +_08072E6A: + strb r0, [r4, #0x14] +_08072E6C: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08072E7A + adds r0, r4, #0 + bl sub_0806F69C + b _08072E7E +_08072E7A: + bl sub_08079E08 +_08072E7E: + movs r0, #0 +_08072E80: + strb r0, [r4, #0xe] + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08072F10 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _08072EAA + adds r0, r4, #0 + bl sub_0800455E + b _08072EB0 +_08072EAA: + adds r0, r4, #0 + bl sub_08004542 +_08072EB0: + adds r0, r4, #0 + movs r1, #7 + bl sub_08008790 + ldr r5, _08072EDC @ =gUnk_03003F80 + ldrb r0, [r5, #0x14] + cmp r0, #0 + beq _08072EE0 + bl sub_08008B22 + cmp r0, #0 + beq _08072F10 + movs r0, #7 + strb r0, [r5, #0x11] + ldr r0, [r5, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08072F10 + bl sub_080791BC + b _08072F10 + .align 2, 0 +_08072EDC: .4byte gUnk_03003F80 +_08072EE0: + ldr r0, [r5, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08072EF4 + ldr r0, _08072EF0 @ =0x00000424 + b _08072EF8 + .align 2, 0 +_08072EF0: .4byte 0x00000424 +_08072EF4: + movs r0, #0x82 + lsls r0, r0, #4 +_08072EF8: + strh r0, [r5, #8] + movs r1, #0 + movs r0, #6 + strb r0, [r4, #0xe] + movs r0, #3 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x42 + strb r1, [r0] + movs r0, #0x7d + bl sub_080A3268 +_08072F10: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08072F14 +sub_08072F14: @ 0x08072F14 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08072F2C + bl sub_0807921C + b _08072F32 +_08072F2C: + adds r0, r1, #0 + bl sub_080042B8 +_08072F32: + pop {pc} + + thumb_func_start sub_08072F34 +sub_08072F34: @ 0x08072F34 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08078EFC + cmp r0, #0 + bne _08072F86 + ldr r6, _08072F88 @ =gUnk_03003F80 + adds r1, r6, #0 + adds r1, #0xa8 + movs r0, #0x18 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0807A1E8 + strb r0, [r6, #0x12] + ldr r1, _08072F8C @ =gUnk_0811BBE4 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r5, r4, #0 + adds r5, #0x42 + ldrb r0, [r5] + cmp r0, #0 + beq _08072F86 + bl sub_080792D8 + ldrb r1, [r5] + cmp r1, #0 + bne _08072F86 + movs r0, #0x1d + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + strh r1, [r4, #0x30] + ldr r0, _08072F90 @ =0x000002CF + strh r0, [r6, #8] +_08072F86: + pop {r4, r5, r6, pc} + .align 2, 0 +_08072F88: .4byte gUnk_03003F80 +_08072F8C: .4byte gUnk_0811BBE4 +_08072F90: .4byte 0x000002CF + + thumb_func_start sub_08072F94 +sub_08072F94: @ 0x08072F94 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08072FB4 @ =gUnk_03003F80 + ldrb r1, [r0, #0x12] + adds r3, r0, #0 + cmp r1, #0x1e + beq _08072FB8 + cmp r1, #0x1e + blt _08072FAE + cmp r1, #0x2c + bgt _08072FAE + cmp r1, #0x2a + bge _08072FB8 +_08072FAE: + bl sub_0807921C + b _0807308C + .align 2, 0 +_08072FB4: .4byte gUnk_03003F80 +_08072FB8: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r2] + adds r2, r3, #0 + ldrb r1, [r2, #0xd] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08073072 + strb r1, [r4, #0x15] + ldrb r0, [r2, #0xd] + cmp r0, #8 + beq _08072FDE + cmp r0, #0x18 + bne _08073008 +_08072FDE: + ldrb r0, [r2, #0x12] + cmp r0, #0x1e + beq _0807308C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08072FF8 + movs r0, #0xb5 + lsls r0, r0, #2 + b _08072FFA +_08072FF8: + ldr r0, _08073004 @ =0x000002D5 +_08072FFA: + strh r0, [r2, #8] + adds r0, r4, #0 + bl sub_08073094 + b _0807306A + .align 2, 0 +_08073004: .4byte 0x000002D5 +_08073008: + ldrb r0, [r2, #0x12] + cmp r0, #0x1e + bne _08073020 + movs r0, #7 + ands r0, r1 + cmp r0, #0 + beq _08073020 + adds r0, r1, #0 + adds r0, #8 + movs r1, #0x10 + ands r0, r1 + strb r0, [r4, #0x15] +_08073020: + ldrb r1, [r4, #0x15] + movs r2, #0x10 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0807304C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08073044 + ldr r0, _08073040 @ =0x000002D1 + b _08073068 + .align 2, 0 +_08073040: .4byte 0x000002D1 +_08073044: + ldr r0, _08073048 @ =0x000002D2 + b _08073068 + .align 2, 0 +_08073048: .4byte 0x000002D2 +_0807304C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08073064 + ldr r0, _08073060 @ =0x000002CF + b _08073068 + .align 2, 0 +_08073060: .4byte 0x000002CF +_08073064: + movs r0, #0xb4 + lsls r0, r0, #2 +_08073068: + strh r0, [r3, #8] +_0807306A: + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _0807308C +_08073072: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08073088 + movs r0, #0xb5 + lsls r0, r0, #2 + strh r0, [r2, #8] + b _0807308C +_08073088: + ldr r0, _08073090 @ =0x000002D5 + strh r0, [r3, #8] +_0807308C: + pop {r4, pc} + .align 2, 0 +_08073090: .4byte 0x000002D5 + + thumb_func_start sub_08073094 +sub_08073094: @ 0x08073094 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r2, _080730FC @ =gUnk_0811BBEC + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r4, #0x24] + bl sub_08079E08 + bl sub_08019840 + cmp r0, #0 + bne _080731A4 + ldr r0, _08073100 @ =gUnk_03003F80 + ldrb r1, [r0, #6] + movs r2, #0x80 + eors r1, r2 + strb r1, [r0, #6] + ldrb r0, [r0, #0x12] + cmp r0, #0x2a + beq _080730DE + cmp r0, #0x2c + beq _080730DE + bl sub_0807A1B8 +_080730DE: + bl sub_08078EFC + cmp r0, #0 + bne _080731A4 + ldr r1, _08073100 @ =gUnk_03003F80 + ldrb r0, [r1, #0x12] + subs r0, #0x19 + adds r2, r1, #0 + cmp r0, #0x13 + bhi _08073178 + lsls r0, r0, #2 + ldr r1, _08073104 @ =_08073108 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080730FC: .4byte gUnk_0811BBEC +_08073100: .4byte gUnk_03003F80 +_08073104: .4byte _08073108 +_08073108: @ jump table + .4byte _0807316C @ case 0 + .4byte _08073178 @ case 1 + .4byte _08073178 @ case 2 + .4byte _08073178 @ case 3 + .4byte _08073178 @ case 4 + .4byte _0807317E @ case 5 + .4byte _08073178 @ case 6 + .4byte _08073178 @ case 7 + .4byte _08073178 @ case 8 + .4byte _08073178 @ case 9 + .4byte _08073178 @ case 10 + .4byte _08073178 @ case 11 + .4byte _08073178 @ case 12 + .4byte _08073178 @ case 13 + .4byte _08073178 @ case 14 + .4byte _08073178 @ case 15 + .4byte _08073178 @ case 16 + .4byte _08073158 @ case 17 + .4byte _0807317E @ case 18 + .4byte _08073158 @ case 19 +_08073158: + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x16 + orrs r0, r1 + str r0, [r2, #0x30] + b _0807317E +_0807316C: + adds r0, r4, #0 + bl sub_08074808 + bl sub_080791D0 + b _080731A4 +_08073178: + bl sub_0807921C + b _080731A4 +_0807317E: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080731A4 + bl sub_0807A1B8 + bl sub_08078EFC + cmp r0, #0 + bne _080731A4 + ldrb r0, [r4, #0xd] + subs r0, #1 + strb r0, [r4, #0xd] +_080731A4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080731A8 +sub_080731A8: @ 0x080731A8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080731D0 @ =gUnk_03003F80 + adds r0, #0xa8 + movs r1, #0x1c + strb r1, [r0] + movs r0, #0 + movs r1, #8 + bl sub_0805E4E0 + ldr r1, _080731D4 @ =gUnk_0811BBF8 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080731D0: .4byte gUnk_03003F80 +_080731D4: .4byte gUnk_0811BBF8 + + thumb_func_start sub_080731D8 +sub_080731D8: @ 0x080731D8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + movs r2, #0 + strb r0, [r4, #0x10] + movs r1, #0 + movs r0, #0x40 + strh r0, [r4, #0x24] + strb r1, [r4, #0x14] + ldrh r1, [r4, #0x2e] + movs r5, #0x10 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + movs r7, #8 + orrs r0, r7 + strh r0, [r4, #0x2e] + strh r2, [r4, #0x2c] + ldr r6, _08073214 @ =gUnk_03003F80 + adds r0, r6, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + bne _08073218 + movs r0, #1 + strb r0, [r4, #0xd] + b _0807329A + .align 2, 0 +_08073214: .4byte gUnk_03003F80 +_08073218: + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #3 + strb r0, [r4, #0xd] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x7e + strh r0, [r1] + ldrh r0, [r4, #0x32] + subs r0, #0x10 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #0x70 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + str r0, [r4, #0x54] + adds r0, r6, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #7 + bne _08073270 + ldrh r1, [r4, #0x32] + adds r0, r5, #0 + ands r0, r1 + adds r0, #8 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x2e] + adds r0, r5, #0 + ands r0, r1 + strh r0, [r4, #0x2e] + strb r7, [r4, #0x15] + movs r0, #2 + strb r0, [r4, #0x14] + ldr r0, _0807326C @ =0x00000187 + bl sub_080A3268 + b _08073294 + .align 2, 0 +_0807326C: .4byte 0x00000187 +_08073270: + ldrh r1, [r4, #0x32] + adds r0, r5, #0 + ands r0, r1 + adds r0, #2 + strh r0, [r4, #0x32] + ldrh r1, [r4, #0x2e] + adds r0, r5, #0 + ands r0, r1 + adds r0, #0xf + strh r0, [r4, #0x2e] + movs r0, #0x18 + strb r0, [r4, #0x15] + movs r0, #6 + strb r0, [r4, #0x14] + movs r0, #0xc4 + lsls r0, r0, #1 + bl sub_080A3268 +_08073294: + adds r0, r4, #0 + bl sub_08066DE4 +_0807329A: + ldr r2, _080732AC @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080732B4 + ldr r0, _080732B0 @ =0x00000404 + b _080732B8 + .align 2, 0 +_080732AC: .4byte gUnk_03003F80 +_080732B0: .4byte 0x00000404 +_080732B4: + movs r0, #0x82 + lsls r0, r0, #1 +_080732B8: + strh r0, [r2, #8] + ldr r1, _080732CC @ =gUnk_03000BF0 + movs r0, #0 + str r0, [r1, #0x30] + bl sub_0807A108 + bl sub_08077B2C + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080732CC: .4byte gUnk_03000BF0 + + thumb_func_start sub_080732D0 +sub_080732D0: @ 0x080732D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_080002B8 + cmp r0, #0x28 + beq _080732EE + movs r0, #0 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C + b _08073328 +_080732EE: + ldrb r0, [r4, #0xd] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xd] + strh r1, [r4, #0x30] + adds r0, r4, #0 + movs r1, #0x70 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + ldr r0, _08073318 @ =gUnk_03003F80 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #7 + bne _08073320 + ldr r0, _0807331C @ =0x00000187 + bl sub_080A3268 + b _08073328 + .align 2, 0 +_08073318: .4byte gUnk_03003F80 +_0807331C: .4byte 0x00000187 +_08073320: + movs r0, #0xc4 + lsls r0, r0, #1 + bl sub_080A3268 +_08073328: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807332C +sub_0807332C: @ 0x0807332C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r0, _08073344 @ =gUnk_03003F80 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #7 + bne _08073348 + movs r0, #0 + b _0807334A + .align 2, 0 +_08073344: .4byte gUnk_03003F80 +_08073348: + movs r0, #0x1c +_0807334A: + strb r0, [r4, #0x15] + ldrh r1, [r4, #0x2e] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xf + beq _08073386 + ldr r0, _08073368 @ =gUnk_03003F80 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #7 + bne _0807336C + movs r0, #2 + strb r0, [r4, #0x14] + movs r0, #4 + b _0807337C + .align 2, 0 +_08073368: .4byte gUnk_03003F80 +_0807336C: + movs r0, #6 + strb r0, [r4, #0x14] + ldrb r0, [r4, #0x15] + cmp r0, #0x18 + bls _0807337E + subs r0, #1 + movs r1, #0x1f + ands r0, r1 +_0807337C: + strb r0, [r4, #0x15] +_0807337E: + adds r0, r4, #0 + bl sub_0806F69C + b _080733B6 +_08073386: + ldr r0, _0807339C @ =gUnk_03003F80 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + beq _080733A4 + ldr r0, _080733A0 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + bl sub_080791BC + b _080733B6 + .align 2, 0 +_0807339C: .4byte gUnk_03003F80 +_080733A0: .4byte gUnk_03000BF0 +_080733A4: + ldr r0, _080733B8 @ =gUnk_03001000 + movs r1, #3 + strb r1, [r0, #4] + movs r1, #1 + strb r1, [r0, #0xb] + movs r0, #5 + movs r1, #8 + bl sub_08050054 +_080733B6: + pop {r4, pc} + .align 2, 0 +_080733B8: .4byte gUnk_03001000 + + thumb_func_start sub_080733BC +sub_080733BC: @ 0x080733BC + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrh r1, [r4, #0x2e] + movs r0, #0xf + ands r0, r1 + cmp r0, #8 + bne _080733FC + movs r0, #0x10 + strb r0, [r4, #0x15] + movs r0, #4 + strb r0, [r4, #0x14] + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _080733FC + bl sub_0805E7BC + movs r0, #0 + str r0, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _080733F6 + adds r0, r4, #0 + bl sub_0807AABC + b _080733FC +_080733F6: + adds r0, r4, #0 + bl sub_0807AA80 +_080733FC: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + adds r0, #0x7e + ldrh r1, [r0] + movs r2, #0x32 + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _08073418 + ldr r0, _0807341C @ =gUnk_03000BF0 + str r4, [r0, #0x30] + bl sub_0807921C +_08073418: + pop {r4, pc} + .align 2, 0 +_0807341C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08073420 +sub_08073420: @ 0x08073420 + push {r4, lr} + adds r4, r0, #0 + bl sub_08078EFC + cmp r0, #0 + bne _0807345E + bl sub_0807A1B8 + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + ldr r0, _08073460 @ =gUnk_03003F80 + adds r0, #0xa8 + movs r1, #8 + strb r1, [r0] + ldr r1, _08073464 @ =gUnk_0811BC08 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 +_0807345E: + pop {r4, pc} + .align 2, 0 +_08073460: .4byte gUnk_03003F80 +_08073464: .4byte gUnk_0811BC08 + + thumb_func_start sub_08073468 +sub_08073468: @ 0x08073468 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080734CC @ =gUnk_03003F80 + movs r1, #0 + movs r0, #0xe0 + lsls r0, r0, #3 + strh r0, [r5, #8] + strb r1, [r5, #2] + ldr r0, _080734D0 @ =0xFFFF0000 + str r0, [r4, #0x20] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xf0 + lsls r0, r0, #1 + str r0, [r4, #0x7c] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + ldr r1, [r5, #0x30] + movs r2, #0x80 + lsls r2, r2, #0x11 + adds r0, r1, #0 + ands r0, r2 + cmp r0, #0 + bne _080734AC + orrs r1, r2 + str r1, [r5, #0x30] + adds r0, r4, #0 + movs r1, #0x61 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 +_080734AC: + bl sub_08077B2C + ldr r0, [r4, #0x20] + cmp r0, #0 + bgt _080734C0 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _080734C8 +_080734C0: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_080734C8: + pop {r4, r5, pc} + .align 2, 0 +_080734CC: .4byte gUnk_03003F80 +_080734D0: .4byte 0xFFFF0000 + + thumb_func_start sub_080734D4 +sub_080734D4: @ 0x080734D4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080734FC @ =0xFFFFF000 + bl sub_08003FC4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bgt _080734EE + ldr r0, _08073500 @ =gUnk_03003F80 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _080734FA +_080734EE: + movs r0, #0x92 + lsls r0, r0, #0xb + str r0, [r4, #0x20] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] +_080734FA: + pop {r4, pc} + .align 2, 0 +_080734FC: .4byte 0xFFFFF000 +_08073500: .4byte gUnk_03003F80 + + thumb_func_start sub_08073504 +sub_08073504: @ 0x08073504 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + movs r1, #0x80 + lsls r1, r1, #7 + cmp r0, #0 + bge _08073516 + movs r1, #0x80 + lsls r1, r1, #4 +_08073516: + adds r0, r4, #0 + bl sub_08003FC4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _08073576 + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08073576 + ldrb r0, [r4, #0xd] + adds r0, #1 + movs r2, #0 + strb r0, [r4, #0xd] + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r4, #0x15] + lsls r0, r0, #8 + str r0, [r1] + adds r0, r4, #0 + adds r0, #0x87 + strb r2, [r0] + subs r0, #1 + strb r2, [r0] + ldr r0, _08073580 @ =gUnk_03003F80 + movs r1, #0xe1 + lsls r1, r1, #3 + strh r1, [r0, #8] + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _08073576 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #6 + strb r0, [r4, #0xd] + movs r0, #0x10 + strh r0, [r4, #0x24] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0xa9 + lsls r0, r0, #1 + bl sub_080A3268 +_08073576: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08073580: .4byte gUnk_03003F80 + + thumb_func_start sub_08073584 +sub_08073584: @ 0x08073584 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r2, _080735DC @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r5, #0x80 + adds r0, r5, #0 + ands r0, r1 + adds r6, r2, #0 + cmp r0, #0 + bne _080735C0 + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bgt _080735C0 + adds r0, r6, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #0 + bne _080735C0 + ldr r0, [r6, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _080735E0 +_080735C0: + ldrb r0, [r6, #2] + movs r1, #0x40 + orrs r1, r0 + strb r1, [r6, #2] + bl sub_0807921C + adds r0, r4, #0 + bl sub_08073904 + movs r0, #0xe6 + lsls r0, r0, #3 + strh r0, [r6, #8] + b _08073794 + .align 2, 0 +_080735DC: .4byte gUnk_03003F80 +_080735E0: + ldr r0, _0807360C @ =gUnk_0200AF00 + adds r0, #0x2f + movs r1, #1 + strb r1, [r0] + movs r0, #0 + bl sub_0807A2F8 + cmp r0, #0 + beq _08073610 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x14] + movs r0, #6 + ands r0, r1 + lsls r0, r0, #2 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + b _08073794 + .align 2, 0 +_0807360C: .4byte gUnk_0200AF00 +_08073610: + ldr r0, _08073620 @ =gUnk_02033A90 + ldrb r0, [r0, #1] + cmp r0, #0x10 + bne _08073624 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + b _08073626 + .align 2, 0 +_08073620: .4byte gUnk_02033A90 +_08073624: + strh r5, [r4, #0x24] +_08073626: + ldr r3, _08073650 @ =gUnk_03003F80 + ldrb r1, [r3, #0xd] + movs r0, #0x80 + ands r0, r1 + adds r2, r4, #0 + adds r2, #0x80 + cmp r0, #0 + bne _0807365A + ldrb r0, [r4, #0x15] + cmp r0, r1 + beq _0807365A + ldrb r1, [r3, #0xd] + subs r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xf + bgt _08073654 + ldr r0, [r2] + subs r0, #0x20 + b _08073658 + .align 2, 0 +_08073650: .4byte gUnk_03003F80 +_08073654: + ldr r0, [r2] + adds r0, #0x20 +_08073658: + str r0, [r2] +_0807365A: + ldr r0, [r2] + lsrs r0, r0, #8 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + bl sub_08079E08 + ldrb r2, [r4, #0x14] + lsls r3, r2, #2 + ldrb r1, [r4, #0x15] + cmp r2, #0 + bne _0807367C + adds r3, #8 + movs r0, #0x1f + ands r3, r0 + adds r1, #8 + ands r1, r0 +_0807367C: + subs r0, r3, #7 + cmp r0, r1 + bls _08073686 + subs r3, r2, #2 + b _0807368E +_08073686: + adds r0, r3, #7 + cmp r0, r1 + bhs _08073694 + adds r3, r2, #2 +_0807368E: + movs r0, #7 + ands r3, r0 + b _08073696 +_08073694: + adds r3, r2, #0 +_08073696: + movs r0, #0x87 + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r4, #0x14] + cmp r3, r1 + beq _080736A8 + movs r0, #0x14 + mov r2, ip + strb r0, [r2] +_080736A8: + strb r3, [r4, #0x14] + movs r5, #0 + ldr r1, _080736E4 @ =gUnk_03003F80 + ldrb r2, [r1, #0xd] + lsrs r3, r2, #2 + mov r6, ip + ldrb r0, [r6] + adds r6, r1, #0 + cmp r0, #0 + beq _080736CA + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _08073736 + ldrb r0, [r4, #0x14] + cmp r0, r3 + beq _08073736 +_080736CA: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _080736FA + ldrb r2, [r4, #0x14] + cmp r2, r3 + beq _080736FA + movs r0, #4 + eors r0, r3 + cmp r2, r0 + bne _080736E8 + movs r5, #2 + b _080736FA + .align 2, 0 +_080736E4: .4byte gUnk_03003F80 +_080736E8: + movs r0, #6 + ands r0, r3 + adds r0, #2 + movs r1, #7 + ands r0, r1 + movs r5, #3 + cmp r2, r0 + bne _080736FA + movs r5, #1 +_080736FA: + ldr r1, _0807371C @ =gUnk_0811BC28 + lsls r0, r5, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r6, #8] + cmp r0, r1 + bne _0807372C + ldr r0, _08073720 @ =gUnk_02033A90 + ldrb r0, [r0, #1] + cmp r0, #0x10 + bne _08073724 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042BA + b _0807372E + .align 2, 0 +_0807371C: .4byte gUnk_0811BC28 +_08073720: .4byte gUnk_02033A90 +_08073724: + adds r0, r4, #0 + bl sub_080042B8 + b _0807372E +_0807372C: + strh r0, [r6, #8] +_0807372E: + adds r0, r4, #0 + adds r0, #0x86 + strb r5, [r0] + b _08073762 +_08073736: + mov r2, ip + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] + ldr r1, _0807375C @ =gUnk_0811BC30 + adds r0, r4, #0 + adds r0, #0x86 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r6, #8] + cmp r0, r1 + bne _08073760 + adds r0, r4, #0 + bl sub_080042B8 + b _08073762 + .align 2, 0 +_0807375C: .4byte gUnk_0811BC30 +_08073760: + strh r0, [r6, #8] +_08073762: + ldr r0, [r4, #0x7c] + subs r1, r0, #1 + str r1, [r4, #0x7c] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08073784 + ldr r2, _08073780 @ =gUnk_03003F80 + ldrb r1, [r2, #2] + movs r0, #0x40 + orrs r0, r1 + strb r0, [r2, #2] + bl sub_0807921C + b _08073794 + .align 2, 0 +_08073780: .4byte gUnk_03003F80 +_08073784: + adds r0, r1, #0 + movs r1, #0x14 + bl __divsi3 + ldr r2, _08073798 @ =0x0000FFF8 + adds r1, r2, #0 + subs r1, r1, r0 + strh r1, [r4, #0x36] +_08073794: + pop {r4, r5, r6, pc} + .align 2, 0 +_08073798: .4byte 0x0000FFF8 + + thumb_func_start sub_0807379C +sub_0807379C: @ 0x0807379C + push {lr} + adds r2, r0, #0 + ldrh r3, [r2, #0x36] + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #0x20 + rsbs r0, r0, #0 + cmp r1, r0 + ble _080737B4 + subs r0, r3, #1 + strh r0, [r2, #0x36] + b _080737BA +_080737B4: + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] +_080737BA: + pop {pc} + + thumb_func_start sub_080737BC +sub_080737BC: @ 0x080737BC + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, [r4, #0x34] + movs r1, #0x98 + lsls r1, r1, #7 + adds r0, r0, r1 + str r0, [r4, #0x34] + ldrb r1, [r4, #0x15] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080737E2 + ldrh r1, [r4, #0x2e] + b _080737E4 +_080737E2: + ldrh r1, [r4, #0x32] +_080737E4: + movs r0, #0xf + ands r0, r1 + cmp r0, #8 + bne _08073804 + adds r0, r4, #0 + bl sub_080002D0 + cmp r0, #0 + bne _08073804 + ldr r2, _08073808 @ =gUnk_03003F80 + ldrb r1, [r2, #2] + movs r0, #0x40 + orrs r0, r1 + strb r0, [r2, #2] + bl sub_0807921C +_08073804: + pop {r4, pc} + .align 2, 0 +_08073808: .4byte gUnk_03003F80 + + thumb_func_start sub_0807380C +sub_0807380C: @ 0x0807380C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08073854 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0807382A + ldrb r0, [r4, #0x14] + adds r0, #2 + movs r1, #6 + ands r0, r1 + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] +_0807382A: + ldr r2, _08073858 @ =gUnk_03003F80 + ldr r1, _0807385C @ =gUnk_0811BC38 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #8] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bge _08073860 + movs r1, #0x80 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_08003FC4 + b _0807387A + .align 2, 0 +_08073854: .4byte gUnk_030010A0 +_08073858: .4byte gUnk_03003F80 +_0807385C: .4byte gUnk_0811BC38 +_08073860: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807387A + movs r0, #7 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] +_0807387A: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08073884 +sub_08073884: @ 0x08073884 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080738DC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080738A2 + ldrb r0, [r4, #0x14] + adds r0, #2 + movs r1, #6 + ands r0, r1 + strb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] +_080738A2: + ldr r2, _080738E0 @ =gUnk_03003F80 + ldr r1, _080738E4 @ =gUnk_0811BC40 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r2, #8] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080738F0 + adds r1, r2, #0 + adds r1, #0x39 + ldrb r0, [r1] + cmp r0, #0xff + beq _080738EC + adds r1, r0, #0 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080738E8 @ =gUnk_0813AD88 + adds r0, r0, r1 + bl sub_08080840 + b _080738F0 + .align 2, 0 +_080738DC: .4byte gUnk_030010A0 +_080738E0: .4byte gUnk_03003F80 +_080738E4: .4byte gUnk_0811BC40 +_080738E8: .4byte gUnk_0813AD88 +_080738EC: + bl sub_08052A4C +_080738F0: + ldr r1, _08073900 @ =0xFFFFE800 + adds r0, r4, #0 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08073900: .4byte 0xFFFFE800 + + thumb_func_start sub_08073904 +sub_08073904: @ 0x08073904 + push {lr} + ldr r3, _0807391C @ =gUnk_0811BC48 + ldr r1, _08073920 @ =gUnk_03003F80 + ldrb r2, [r1, #2] + movs r1, #7 + ands r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807391C: .4byte gUnk_0811BC48 +_08073920: .4byte gUnk_03003F80 + + thumb_func_start sub_08073924 +sub_08073924: @ 0x08073924 + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08073964 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xb + ands r0, r1 + cmp r0, #0 + bne _08073962 + movs r1, #0x36 + ldrsh r0, [r4, r1] + movs r1, #0x80 + lsls r1, r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08073962 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08073962 + movs r0, #0x40 + strb r0, [r2, #2] + movs r0, #0xff + strb r0, [r2, #0xd] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r4, #0x15] + bl sub_08077B20 + adds r0, r4, #0 + bl sub_08073968 +_08073962: + pop {r4, pc} + .align 2, 0 +_08073964: .4byte gUnk_03003F80 + + thumb_func_start sub_08073968 +sub_08073968: @ 0x08073968 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08073998 @ =gUnk_03003F80 + ldrb r1, [r4, #2] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + bne _0807397C + ldrb r0, [r4, #0xd] + strb r0, [r5, #0x15] +_0807397C: + bl sub_08078F24 + ldrb r1, [r4, #5] + ldrb r0, [r4, #0xb] + orrs r0, r1 + cmp r0, #0 + bne _080739D4 + ldr r1, [r4, #0x30] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080739A0 + ldr r0, _0807399C @ =0x0000041C + b _080739BA + .align 2, 0 +_08073998: .4byte gUnk_03003F80 +_0807399C: .4byte 0x0000041C +_080739A0: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080739BC + movs r0, #0x80 + lsls r0, r0, #0x13 + ands r1, r0 + cmp r1, #0 + beq _080739B8 + movs r0, #0x81 + lsls r0, r0, #4 + b _080739BA +_080739B8: + ldr r0, _080739E4 @ =0x0000080C +_080739BA: + strh r0, [r4, #8] +_080739BC: + ldr r0, _080739E8 @ =gUnk_03003F80 + ldrb r1, [r0, #2] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + bne _080739CE + adds r0, r5, #0 + bl sub_0806F948 +_080739CE: + movs r0, #0x7c + bl sub_080A3268 +_080739D4: + ldr r2, _080739E8 @ =gUnk_03003F80 + ldrb r1, [r2, #2] + movs r0, #0xf8 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #2] + pop {r4, r5, pc} + .align 2, 0 +_080739E4: .4byte 0x0000080C +_080739E8: .4byte gUnk_03003F80 + + thumb_func_start sub_080739EC +sub_080739EC: @ 0x080739EC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _08073A14 @ =gUnk_03003F80 + ldrb r2, [r1, #2] + movs r0, #0xc0 + ands r0, r2 + adds r5, r1, #0 + cmp r0, #0 + beq _08073A18 + ldrb r0, [r4, #0x15] + strb r0, [r5, #0xd] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08073A0E + movs r0, #0 + strh r0, [r4, #0x2a] +_08073A0E: + movs r2, #0x80 + lsls r2, r2, #6 + b _08073A48 + .align 2, 0 +_08073A14: .4byte gUnk_03003F80 +_08073A18: + movs r2, #0xc + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806F854 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _08073A38 + ldrb r1, [r5, #2] + movs r0, #8 + orrs r0, r1 + strb r0, [r5, #2] + movs r2, #0x80 + lsls r2, r2, #7 + b _08073A48 +_08073A38: + movs r2, #0x80 + lsls r2, r2, #6 + ldrb r1, [r5, #2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08073A48 + lsrs r2, r2, #1 +_08073A48: + ldrb r1, [r5, #2] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + bne _08073A7E + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08073A7E + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _08073A7E + movs r0, #0xa0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #0xa + strb r0, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0x15] + adds r0, r1, #2 + strb r0, [r5, #2] + movs r0, #0xba + lsls r0, r0, #1 + strh r0, [r5, #8] + bl sub_08078F60 + b _08073A90 +_08073A7E: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08073A90 + adds r0, r4, #0 + bl sub_08073AD4 +_08073A90: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08073A94 +sub_08073A94: @ 0x08073A94 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08073AAE + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + beq _08073AB4 +_08073AAE: + adds r0, r4, #0 + bl sub_08073B60 +_08073AB4: + ldr r0, _08073ACC @ =gLinkEntity + ldr r0, [r0, #0x34] + cmp r0, #0 + beq _08073AC8 + ldr r1, _08073AD0 @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r1, #2] + adds r0, r4, #0 + bl sub_08073924 +_08073AC8: + pop {r4, pc} + .align 2, 0 +_08073ACC: .4byte gLinkEntity +_08073AD0: .4byte gUnk_03003F80 + + thumb_func_start sub_08073AD4 +sub_08073AD4: @ 0x08073AD4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x38 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08073AFA + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] +_08073AFA: + ldr r6, _08073B48 @ =gUnk_03003F80 + ldrb r5, [r6, #2] + movs r0, #0xc1 + rsbs r0, r0, #0 + ands r5, r0 + ldrb r0, [r4, #0xc] + cmp r0, #0xa + beq _08073B32 + bl sub_0807A2B8 + movs r0, #0 + strb r0, [r6, #2] + bl sub_0807A1B8 + ldrb r0, [r6, #0xc] + cmp r0, #0 + bne _08073B5C + adds r0, r6, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _08073B5C + ldrb r0, [r6, #4] + cmp r0, #0 + beq _08073B32 + adds r0, r4, #0 + bl sub_08073B60 +_08073B32: + ldr r2, _08073B48 @ =gUnk_03003F80 + adds r0, r5, #1 + strb r0, [r2, #2] + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08073B50 + ldr r0, _08073B4C @ =0x00000424 + b _08073B54 + .align 2, 0 +_08073B48: .4byte gUnk_03003F80 +_08073B4C: .4byte 0x00000424 +_08073B50: + movs r0, #0x82 + lsls r0, r0, #4 +_08073B54: + strh r0, [r2, #8] + movs r0, #0x7d + bl sub_080A3268 +_08073B5C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08073B60 +sub_08073B60: @ 0x08073B60 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08073B88 @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r4, #0x1b] + strb r0, [r4, #4] + strb r0, [r4, #2] + bl sub_08079938 + adds r0, r5, #0 + bl sub_080085B0 + ldr r0, [r4, #0x30] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08073B86 + bl sub_080791BC +_08073B86: + pop {r4, r5, pc} + .align 2, 0 +_08073B88: .4byte gUnk_03003F80 + + thumb_func_start sub_08073B8C +sub_08073B8C: @ 0x08073B8C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08073BCC @ =gUnk_03003F80 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _08073C04 + movs r2, #0xc + rsbs r2, r2, #0 + adds r0, r4, #0 + movs r1, #0 + bl sub_0806F854 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08073BB8 + adds r0, r4, #0 + bl sub_080042B8 +_08073BB8: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08073BD0 + subs r0, #1 + strb r0, [r4, #0xe] + b _08073C28 + .align 2, 0 +_08073BCC: .4byte gUnk_03003F80 +_08073BD0: + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, #0 + bl sub_08003FC4 + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + blt _08073C28 + ldrb r0, [r5, #0x14] + cmp r0, #0 + bne _08073C0C + bl sub_0807A2B8 + cmp r0, #0 + bne _08073BFC + bl sub_08079D48 + cmp r0, #0 + bne _08073C0C +_08073BFC: + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_08073C04: + adds r0, r4, #0 + bl sub_08073B60 + b _08073C28 +_08073C0C: + ldr r1, _08073C2C @ =gUnk_03003F80 + ldrb r0, [r1, #2] + adds r0, #1 + strb r0, [r1, #2] + movs r0, #0xf + strb r0, [r4, #0xe] + movs r0, #0x10 + movs r1, #0 + bl sub_08080964 + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 +_08073C28: + pop {r4, r5, pc} + .align 2, 0 +_08073C2C: .4byte gUnk_03003F80 + + thumb_func_start sub_08073C30 +sub_08073C30: @ 0x08073C30 + push {lr} + adds r2, r0, #0 + ldr r0, _08073C54 @ =gUnk_03003F80 + ldrb r0, [r0, #4] + cmp r0, #0 + beq _08073C4A + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08073C58 +_08073C4A: + adds r0, r2, #0 + bl sub_08073B60 + b _08073C66 + .align 2, 0 +_08073C54: .4byte gUnk_03003F80 +_08073C58: + ldrb r0, [r2, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r0, r2, #0 + bl sub_080042B8 +_08073C66: + pop {pc} + + thumb_func_start sub_08073C68 +sub_08073C68: @ 0x08073C68 + push {lr} + ldr r2, _08073C7C @ =gUnk_0811BC60 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08073C7C: .4byte gUnk_0811BC60 + + thumb_func_start sub_08073C80 +sub_08073C80: @ 0x08073C80 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r2, _08073D00 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + orrs r0, r1 + str r0, [r2, #0x30] + movs r5, #0 + ldr r0, _08073D04 @ =0x00000C18 + strh r0, [r2, #8] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r7, #4 + rsbs r7, r7, #0 + adds r0, r7, #0 + ands r0, r1 + strb r0, [r4, #0x19] + ldr r0, _08073D08 @ =gUnk_0811BC80 + str r0, [r4, #0x48] + strb r5, [r4, #0xe] + movs r6, #2 + strb r6, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x42 + strb r5, [r0] + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #1 + movs r2, #2 + bl sub_080AE008 + ldr r0, _08073D0C @ =gUnk_03000BF0 + str r4, [r0, #0x30] + bl sub_080809D4 + ldr r1, _08073D10 @ =gUnk_030010A0 + ldrb r0, [r1, #0xf] + cmp r0, #9 + bne _08073D14 + strb r5, [r1, #0xf] + ldrb r1, [r4, #0x18] + adds r0, r7, #0 + ands r0, r1 + strb r0, [r4, #0x18] + strb r6, [r4, #0xd] + b _08073D1E + .align 2, 0 +_08073D00: .4byte gUnk_03003F80 +_08073D04: .4byte 0x00000C18 +_08073D08: .4byte gUnk_0811BC80 +_08073D0C: .4byte gUnk_03000BF0 +_08073D10: .4byte gUnk_030010A0 +_08073D14: + movs r0, #4 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 +_08073D1E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08073D20 +sub_08073D20: @ 0x08073D20 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldr r5, _08073D70 @ =gUnk_03003F80 + movs r0, #0xa8 + adds r0, r0, r5 + mov r8, r0 + movs r0, #0 + mov r1, r8 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x39 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x40 + movs r0, #1 + strb r0, [r1] + bl sub_08078F60 + adds r7, r5, #0 + adds r7, #0x26 + ldrb r0, [r7] + cmp r0, #0 + bne _08073D60 + movs r0, #0xc0 + strh r0, [r4, #0x24] +_08073D60: + bl sub_08079B24 + cmp r0, #0 + bne _08073D74 + adds r0, r4, #0 + bl sub_08079708 + b _08073EFC + .align 2, 0 +_08073D70: .4byte gUnk_03003F80 +_08073D74: + bl sub_08078EFC + adds r6, r0, #0 + cmp r6, #0 + beq _08073D80 + b _08073EFC +_08073D80: + adds r0, r4, #0 + bl sub_08073904 + bl sub_0807A1B8 + ldrb r0, [r5, #2] + cmp r0, #0 + beq _08073D96 + movs r0, #0x14 + mov r1, r8 + strb r0, [r1] +_08073D96: + ldrb r0, [r5, #0x12] + subs r0, #0x18 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08073DB0 + strb r6, [r7] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] +_08073DB0: + bl sub_08078EFC + cmp r0, #0 + beq _08073DBA + b _08073EFC +_08073DBA: + ldrb r0, [r4, #0xd] + cmp r0, #2 + bne _08073DC2 + b _08073EFC +_08073DC2: + ldr r0, [r5, #0x30] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08073E10 + adds r0, r4, #0 + bl sub_080085B0 + bl sub_080792D8 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08073DE6 + bl sub_08079550 + cmp r0, #0 + beq _08073DE6 + b _08073EFC +_08073DE6: + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + beq _08073DFA + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r4, #0x15] + b _08073EFC +_08073DFA: + bl sub_080782C0 + cmp r0, #0 + beq _08073E08 + bl sub_08078EFC + b _08073EFC +_08073E08: + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] +_08073E10: + bl sub_08019840 + cmp r0, #0 + bne _08073EFC + adds r0, r4, #0 + bl sub_08077698 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + adds r1, r0, #0 + cmp r1, #0 + bne _08073E32 + ldr r0, _08073E74 @ =gUnk_03003F80 + strb r1, [r0, #2] +_08073E32: + ldr r2, _08073E74 @ =gUnk_03003F80 + ldrb r1, [r2, #7] + movs r3, #0x80 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08073EFC + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08073EFC + adds r0, r4, #0 + adds r0, #0x3d + movs r1, #0 + ldrsb r1, [r0, r1] + adds r6, r0, #0 + cmp r1, #8 + bgt _08073E90 + adds r0, r2, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08073E78 + adds r1, r2, #0 + adds r1, #0xa8 + movs r0, #7 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0807ACCC + bl sub_08079E08 + b _08073E90 + .align 2, 0 +_08073E74: .4byte gUnk_03003F80 +_08073E78: + ldrb r1, [r2, #0xd] + strb r1, [r4, #0x15] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08073E90 + adds r1, r2, #0 + adds r1, #0xa8 + movs r0, #1 + strb r0, [r1] + bl sub_08079E08 +_08073E90: + ldr r5, _08073EF0 @ =gUnk_03003F80 + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _08073E9E + adds r0, r4, #0 + bl sub_0806F948 +_08073E9E: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0807B068 + movs r0, #0x10 + bl sub_080793E4 + cmp r0, #0 + beq _08073EDC + movs r0, #0x14 + strb r0, [r6] + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #4 + strb r0, [r1] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + movs r0, #0x7a + bl sub_080A3268 +_08073EDC: + ldr r0, [r5, #0x30] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08073EF4 + adds r0, r4, #0 + bl sub_08008AC6 + b _08073EFC + .align 2, 0 +_08073EF0: .4byte gUnk_03003F80 +_08073EF4: + adds r1, r5, #0 + adds r1, #0xa8 + movs r0, #0xd + strb r0, [r1] +_08073EFC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08073F04 +sub_08073F04: @ 0x08073F04 + push {lr} + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x10 + orrs r1, r2 + strb r1, [r3] + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #0x18] + ldrb r1, [r0, #0xd] + adds r1, #1 + strb r1, [r0, #0xd] + movs r1, #0xa0 + lsls r1, r1, #0xa + str r1, [r0, #0x20] + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r0, #0x24] + ldr r2, _08073F48 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x81 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2, #0x30] + bl sub_08077B2C + pop {pc} + .align 2, 0 +_08073F48: .4byte gUnk_03003F80 + + thumb_func_start sub_08073F4C +sub_08073F4C: @ 0x08073F4C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08073F84 @ =gUnk_02033A90 + ldrh r3, [r0, #0x12] + ldrh r5, [r0, #0x14] + movs r0, #0x2e + ldrsh r2, [r4, r0] + cmp r2, r3 + bne _08073F66 + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, r5 + beq _08073F88 +_08073F66: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r2, #0 + adds r2, r3, #0 + adds r3, r5, #0 + bl sub_080045D4 + strb r0, [r4, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0806F69C + b _08073FC6 + .align 2, 0 +_08073F84: .4byte gUnk_02033A90 +_08073F88: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x80 + movs r1, #0x90 + lsls r1, r1, #3 + str r1, [r0] + adds r0, #4 + str r1, [r0] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + bl sub_08074018 + ldr r1, _08073FC8 @ =gUnk_03003F80 + ldr r0, _08073FCC @ =0x0000073C + strh r0, [r1, #8] +_08073FC6: + pop {r4, r5, pc} + .align 2, 0 +_08073FC8: .4byte gUnk_03003F80 +_08073FCC: .4byte 0x0000073C + + thumb_func_start sub_08073FD0 +sub_08073FD0: @ 0x08073FD0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08073FF8 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08074016 + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + cmp r0, #0 + bne _08073FF8 + movs r0, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x7c + bl sub_080A3268 +_08073FF8: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _08074016 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xb8 + lsls r0, r0, #1 + bl sub_080A3268 +_08074016: + pop {r4, pc} + + thumb_func_start sub_08074018 +sub_08074018: @ 0x08074018 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x80 + ldr r0, [r1] + movs r3, #0x80 + lsls r3, r3, #1 + cmp r0, r3 + bls _0807402E + subs r0, #0x20 + str r0, [r1] +_0807402E: + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r2, r0, #0 + cmp r1, r3 + bls _08074042 + adds r0, r1, #0 + subs r0, #0x20 + str r0, [r2] + b _08074048 +_08074042: + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] +_08074048: + adds r0, r4, #0 + adds r0, #0x80 + ldr r1, [r0] + ldr r2, [r2] + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_08074060 +sub_08074060: @ 0x08074060 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + cmp r0, #0 + bne _080740D0 + ldr r0, _080740C4 @ =gUnk_08114F88 + str r0, [r4, #0x48] + movs r3, #0x10 + movs r0, #0x10 + strb r0, [r4, #0x15] + movs r0, #4 + strb r0, [r4, #0x14] + movs r2, #0 + adds r0, #0xfc + strh r0, [r4, #0x24] + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r4, #0x18] + strb r2, [r4, #0xf] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldr r1, _080740C8 @ =gUnk_03003F80 + ldr r0, _080740CC @ =0x0000080C + strh r0, [r1, #8] + adds r0, r4, #0 + bl sub_0805EC60 + b _080740D6 + .align 2, 0 +_080740C4: .4byte gUnk_08114F88 +_080740C8: .4byte gUnk_03003F80 +_080740CC: .4byte 0x0000080C +_080740D0: + adds r0, r4, #0 + bl sub_080042B8 +_080740D6: + pop {r4, pc} + + thumb_func_start sub_080740D8 +sub_080740D8: @ 0x080740D8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _080740EA + ldrb r0, [r4, #0x15] + b _080740F0 +_080740EA: + ldrb r1, [r4, #0x15] + movs r0, #0x10 + eors r0, r1 +_080740F0: + cmp r0, #8 + beq _08074128 + cmp r0, #8 + bhi _080740FE + cmp r0, #0 + beq _08074168 + b _0807418C +_080740FE: + cmp r0, #0x10 + beq _08074148 + cmp r0, #0x18 + bne _0807418C + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, [r4, #0x48] + ldrb r0, [r2, #2] + subs r1, r1, r0 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + ldr r3, _08074124 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + subs r6, r1, r0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + b _08074182 + .align 2, 0 +_08074124: .4byte gUnk_03000BF0 +_08074128: + ldr r2, [r4, #0x48] + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldrb r1, [r2, #2] + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + ldr r3, _08074144 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r6, r0, r1 + movs r1, #0x32 + ldrsh r0, [r4, r1] + b _08074182 + .align 2, 0 +_08074144: .4byte gUnk_03000BF0 +_08074148: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, [r4, #0x48] + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + ldr r3, _08074164 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + subs r6, r1, r0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrb r1, [r2, #5] + adds r0, r0, r1 + b _08074182 + .align 2, 0 +_08074164: .4byte gUnk_03000BF0 +_08074168: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, [r4, #0x48] + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + ldr r3, _080741A4 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + subs r6, r1, r0 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrb r1, [r2, #5] + subs r0, r0, r1 +_08074182: + movs r1, #1 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + ldrh r1, [r3, #8] + subs r5, r0, r1 +_0807418C: + ldr r2, _080741A8 @ =gUnk_080082DC + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080086B4 + cmp r0, #0 + beq _080741AC + adds r0, r4, #0 + bl sub_0806F69C + b _080741B0 + .align 2, 0 +_080741A4: .4byte gUnk_03000BF0 +_080741A8: .4byte gUnk_080082DC +_080741AC: + movs r0, #1 + strb r0, [r4, #0xf] +_080741B0: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080741C2 + bl sub_0807921C +_080741C2: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080741C4 +sub_080741C4: @ 0x080741C4 + push {lr} + ldr r0, _080741F0 @ =gUnk_03003F80 + ldrb r1, [r0, #2] + adds r2, r0, #0 + cmp r1, #0 + beq _080741D8 + movs r0, #7 + ands r0, r1 + cmp r0, #3 + bne _080741E0 +_080741D8: + ldr r0, _080741F4 @ =gLinkEntity + ldr r0, [r0, #0x34] + cmp r0, #0 + beq _080741F8 +_080741E0: + movs r1, #0 + strb r1, [r2, #0x11] + adds r0, r2, #0 + adds r0, #0x37 + strb r1, [r0] + movs r0, #1 + b _080741FA + .align 2, 0 +_080741F0: .4byte gUnk_03003F80 +_080741F4: .4byte gLinkEntity +_080741F8: + movs r0, #0 +_080741FA: + pop {pc} + + thumb_func_start nullsub_112 +nullsub_112: @ 0x080741FC + bx lr + .align 2, 0 + + thumb_func_start sub_08074200 +sub_08074200: @ 0x08074200 + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074226 + adds r0, r4, #0 + bl sub_08079C30 + cmp r0, #0 + beq _08074226 + ldrb r0, [r4, #0xc] + cmp r0, #3 + beq _08074226 + bl sub_08077B2C + ldr r1, _08074228 @ =gUnk_03003F80 + movs r0, #3 + strb r0, [r1, #0xc] +_08074226: + pop {r4, pc} + .align 2, 0 +_08074228: .4byte gUnk_03003F80 + + thumb_func_start sub_0807422C +sub_0807422C: @ 0x0807422C + push {lr} + movs r1, #8 + movs r2, #0x18 + bl sub_08074244 + pop {pc} + + thumb_func_start sub_08074238 +sub_08074238: @ 0x08074238 + push {lr} + movs r1, #0 + movs r2, #0x10 + bl sub_08074244 + pop {pc} + + thumb_func_start sub_08074244 +sub_08074244: @ 0x08074244 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + ldr r5, _0807428C @ =gUnk_03003F80 + ldrb r0, [r5, #0x12] + subs r0, #0x28 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _08074278 + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] +_08074278: + bl sub_080741C4 + cmp r0, #0 + bne _080742A6 + ldrb r0, [r5, #0x1e] + cmp r0, #0 + bne _08074290 + ldrb r0, [r5, #0xd] + b _08074294 + .align 2, 0 +_0807428C: .4byte gUnk_03003F80 +_08074290: + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 +_08074294: + cmp r6, r0 + bne _0807429C + cmp r7, r0 + beq _080742A6 +_0807429C: + ldr r1, _080742A8 @ =gUnk_03003F80 + adds r1, #0x80 + ldrh r0, [r1] + subs r0, #0x50 + strh r0, [r1] +_080742A6: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080742A8: .4byte gUnk_03003F80 + + thumb_func_start sub_080742AC +sub_080742AC: @ 0x080742AC + push {lr} + adds r2, r0, #0 + ldr r0, _080742E0 @ =gUnk_03003F80 + adds r1, r0, #0 + adds r1, #0x26 + ldrb r0, [r1] + cmp r0, #0 + beq _080742C0 + movs r0, #0 + strb r0, [r1] +_080742C0: + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + pop {pc} + .align 2, 0 +_080742E0: .4byte gUnk_03003F80 + + thumb_func_start sub_080742E4 +sub_080742E4: @ 0x080742E4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _0807430E + ldr r2, _08074310 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807430E + ldrb r0, [r2, #0x11] + cmp r0, #0xf + bne _0807430E + adds r0, r4, #0 + movs r1, #0xe + movs r2, #0 + movs r3, #0 + bl sub_080A2988 +_0807430E: + pop {r4, pc} + .align 2, 0 +_08074310: .4byte gUnk_03003F80 + + thumb_func_start sub_08074314 +sub_08074314: @ 0x08074314 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x32] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xd + bgt _08074330 + movs r0, #0xcc + lsls r0, r0, #7 + strh r0, [r2, #0x2a] + adds r0, r2, #0 + bl sub_080743A4 + b _08074336 +_08074330: + adds r0, r2, #0 + bl sub_0807A298 +_08074336: + pop {pc} + + thumb_func_start sub_08074338 +sub_08074338: @ 0x08074338 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x32] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + ble _08074354 + movs r0, #0xcc + lsls r0, r0, #7 + strh r0, [r2, #0x2a] + adds r0, r2, #0 + bl sub_080743A4 + b _0807435A +_08074354: + adds r0, r2, #0 + bl sub_0807A298 +_0807435A: + pop {pc} + + thumb_func_start sub_0807435C +sub_0807435C: @ 0x0807435C + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x2e] + movs r0, #0xf + ands r0, r1 + cmp r0, #0xb + bgt _08074376 + movs r0, #0x66 + strh r0, [r2, #0x2a] + adds r0, r2, #0 + bl sub_080743A4 + b _0807437C +_08074376: + adds r0, r2, #0 + bl sub_0807A298 +_0807437C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08074380 +sub_08074380: @ 0x08074380 + push {lr} + adds r2, r0, #0 + ldrh r1, [r2, #0x2e] + movs r0, #0xf + ands r0, r1 + cmp r0, #4 + ble _0807439A + movs r0, #0x66 + strh r0, [r2, #0x2a] + adds r0, r2, #0 + bl sub_080743A4 + b _080743A0 +_0807439A: + adds r0, r2, #0 + bl sub_0807A298 +_080743A0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080743A4 +sub_080743A4: @ 0x080743A4 + push {lr} + ldr r3, _080743D0 @ =gUnk_03003F80 + ldr r1, [r3, #0x30] + movs r2, #0x40 + orrs r1, r2 + str r1, [r3, #0x30] + movs r3, #0 + movs r1, #0x80 + strb r1, [r0, #0xb] + ldrb r2, [r0, #0x18] + subs r1, #0x84 + ands r1, r2 + strb r1, [r0, #0x18] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + adds r0, #0x42 + strb r3, [r0] + bl sub_08077B2C + pop {pc} + .align 2, 0 +_080743D0: .4byte gUnk_03003F80 + + thumb_func_start sub_080743D4 +sub_080743D4: @ 0x080743D4 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074416 + adds r0, r5, #0 + bl sub_08079C30 + cmp r0, #0 + beq _08074416 + adds r0, r5, #0 + bl sub_0807AABC + adds r0, r5, #0 + bl sub_08074808 + movs r0, #0x24 + ldrsh r4, [r5, r0] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + movs r0, #0x10 + strb r0, [r5, #0x15] + ldr r2, _08074418 @ =gUnk_03003F80 + ldrb r1, [r2, #0xa] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0xa] + adds r0, r5, #0 + bl sub_0806F69C + strh r4, [r5, #0x24] +_08074416: + pop {r4, r5, pc} + .align 2, 0 +_08074418: .4byte gUnk_03003F80 + + thumb_func_start sub_0807441C +sub_0807441C: @ 0x0807441C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _08074440 @ =gUnk_03003F80 + adds r0, #0xa0 + ldrb r0, [r0] + cmp r0, #4 + bne _08074502 + ldr r6, _08074444 @ =gUnk_02002A40 + adds r4, r6, #0 + adds r4, #0xb4 + ldrb r0, [r4] + bl sub_0805449C + cmp r0, #0 + beq _08074448 + ldrb r0, [r4] + b _0807444E + .align 2, 0 +_08074440: .4byte gUnk_03003F80 +_08074444: .4byte gUnk_02002A40 +_08074448: + adds r0, r6, #0 + adds r0, #0xb5 + ldrb r0, [r0] +_0807444E: + subs r0, #1 + cmp r0, #5 + bhi _0807448A + lsls r0, r0, #2 + ldr r1, _08074460 @ =_08074464 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08074460: .4byte _08074464 +_08074464: @ jump table + .4byte _0807447C @ case 0 + .4byte _0807447C @ case 1 + .4byte _08074480 @ case 2 + .4byte _08074484 @ case 3 + .4byte _0807448A @ case 4 + .4byte _08074488 @ case 5 +_0807447C: + movs r5, #0 + b _0807448A +_08074480: + movs r5, #1 + b _0807448A +_08074484: + movs r5, #2 + b _0807448A +_08074488: + movs r5, #3 +_0807448A: + movs r4, #0 + cmp r4, r5 + bhs _080744A6 + ldr r1, _08074494 @ =gUnk_03004040 + b _080744A0 + .align 2, 0 +_08074494: .4byte gUnk_03004040 +_08074498: + adds r1, #4 + adds r4, #1 + cmp r4, r5 + bhs _080744A6 +_080744A0: + ldr r0, [r1] + cmp r0, #0 + bne _08074498 +_080744A6: + cmp r5, r4 + bls _080744D4 + adds r0, r7, #0 + movs r1, #0x10 + adds r2, r4, #0 + movs r3, #0 + bl sub_080A2988 + adds r3, r0, #0 + ldr r1, _080744D0 @ =gUnk_03004040 + lsls r0, r4, #2 + adds r0, r0, r1 + str r3, [r0] + cmp r3, #0 + beq _08074502 + adds r0, r7, #0 + adds r1, r3, #0 + bl sub_0806FA24 + b _08074502 + .align 2, 0 +_080744D0: .4byte gUnk_03004040 +_080744D4: + ldr r2, _08074504 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1b] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1b] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xf + orrs r0, r1 + str r0, [r2, #0x30] + ldr r0, [r7, #0x2c] + ldr r2, _08074508 @ =0xFFF00000 + ands r0, r2 + movs r1, #0x80 + lsls r1, r1, #0xc + orrs r0, r1 + str r0, [r7, #0x2c] + ldr r0, [r7, #0x30] + ands r0, r2 + orrs r0, r1 + str r0, [r7, #0x30] + bl sub_08077AEC +_08074502: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08074504: .4byte gUnk_03003F80 +_08074508: .4byte 0xFFF00000 + + thumb_func_start sub_0807450C +sub_0807450C: @ 0x0807450C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _0807457A + ldr r7, _0807457C @ =gUnk_03003F80 + ldrb r0, [r7, #0x14] + cmp r0, #0 + bne _0807457A + adds r4, r6, #0 + adds r4, #0x3d + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _08074568 + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + movs r0, #0x7a + bl sub_080A3268 + movs r0, #0x18 + strb r0, [r4] + adds r1, r6, #0 + adds r1, #0x42 + movs r0, #4 + strb r0, [r1] + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldr r5, _08074580 @ =0x0000FFF0 + adds r0, r2, #0 + ands r0, r5 + movs r4, #8 + orrs r0, r4 + movs r1, #0x32 + ldrsh r3, [r6, r1] + adds r1, r3, #0 + ands r1, r5 + orrs r1, r4 + bl sub_080045D4 + adds r1, r6, #0 + adds r1, #0x3e + strb r0, [r1] +_08074568: + ldr r0, [r7, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807457A + adds r0, r6, #0 + movs r1, #7 + bl sub_08008790 +_0807457A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807457C: .4byte gUnk_03003F80 +_08074580: .4byte 0x0000FFF0 + + thumb_func_start sub_08074584 +sub_08074584: @ 0x08074584 + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _080745AC + ldr r0, _080745B0 @ =gUnk_03003F80 + adds r0, #0x35 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080745A8 + adds r0, r4, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + beq _080745AC +_080745A8: + bl sub_08078F60 +_080745AC: + pop {r4, pc} + .align 2, 0 +_080745B0: .4byte gUnk_03003F80 + + thumb_func_start sub_080745B4 +sub_080745B4: @ 0x080745B4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074636 + ldr r0, _080745E4 @ =gUnk_03003F80 + mov ip, r0 + ldr r3, [r0, #0x30] + movs r0, #0x80 + ands r3, r0 + cmp r3, #0 + beq _080745E8 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xb9 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0807479C + b _08074636 + .align 2, 0 +_080745E4: .4byte gUnk_03003F80 +_080745E8: + mov r5, ip + adds r5, #0x26 + ldrb r0, [r5] + cmp r0, #0 + beq _08074618 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + subs r2, #0x13 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + strb r3, [r5] +_08074618: + mov r0, ip + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0xf0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + bne _08074630 + mov r1, ip + ldrb r0, [r1, #0x11] + cmp r0, #1 + bne _08074636 +_08074630: + movs r0, #0x83 + bl sub_080A3268 +_08074636: + pop {r4, r5, pc} + + thumb_func_start sub_08074638 +sub_08074638: @ 0x08074638 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08074674 @ =gUnk_03003F80 + adds r5, r0, #0 + adds r5, #0x26 + ldrb r0, [r5] + cmp r0, #0 + beq _08074670 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + movs r3, #0 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + subs r2, #0x13 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + strb r3, [r5] +_08074670: + pop {r4, r5, pc} + .align 2, 0 +_08074674: .4byte gUnk_03003F80 + + thumb_func_start sub_08074678 +sub_08074678: @ 0x08074678 + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + beq _08074690 + ldr r0, _0807468C @ =gUnk_03003F80 + movs r1, #0 + strb r1, [r0, #0x11] + b _080746CE + .align 2, 0 +_0807468C: .4byte gUnk_03003F80 +_08074690: + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _0807476C + adds r0, r4, #0 + bl sub_08079C30 + adds r1, r0, #0 + cmp r1, #0 + bne _080746B0 + ldr r0, _080746AC @ =gUnk_03003F80 + strb r1, [r0, #0x11] + b _080746CE + .align 2, 0 +_080746AC: .4byte gUnk_03003F80 +_080746B0: + ldr r3, _080746D4 @ =gUnk_03003F80 + ldr r1, [r3, #0x30] + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + bne _0807476C + ldrb r2, [r3, #0x1e] + cmp r2, #0 + beq _080746D8 + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _080746DC + strb r1, [r3, #0x11] + adds r0, r3, #0 +_080746CE: + adds r0, #0x37 + strb r1, [r0] + b _08074792 + .align 2, 0 +_080746D4: .4byte gUnk_03003F80 +_080746D8: + bl sub_08077B20 +_080746DC: + ldr r1, _08074700 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x37 + ldrb r0, [r0] + cmp r0, #1 + bne _08074704 + adds r0, r4, #0 + movs r1, #0x70 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r0, r4, #0 + movs r1, #0x52 + movs r2, #0 + bl CreateFX + b _08074714 + .align 2, 0 +_08074700: .4byte gUnk_03003F80 +_08074704: + adds r0, r1, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0xf0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08074720 +_08074714: + ldr r0, _0807471C @ =0x00000161 + bl sub_080A3268 + b _08074732 + .align 2, 0 +_0807471C: .4byte 0x00000161 +_08074720: + ldr r0, _08074760 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _08074732 + ldr r0, _08074764 @ =0x00000161 + bl sub_080A3268 +_08074732: + ldr r2, _08074768 @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0x80 + ldrh r0, [r1] + subs r0, #0xf0 + strh r0, [r1] + adds r1, #0x28 + movs r0, #0x1b + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x37 + ldrb r0, [r0] + lsls r3, r0, #0x18 + lsrs r0, r3, #0x18 + cmp r0, #0xef + bhi _0807476C + subs r1, #0x69 + lsrs r0, r3, #0x1d + adds r0, #4 + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + b _08074792 + .align 2, 0 +_08074760: .4byte gUnk_030010A0 +_08074764: .4byte 0x00000161 +_08074768: .4byte gUnk_03003F80 +_0807476C: + ldr r2, _08074794 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08074798 @ =0xFFFBFFFF + ands r0, r1 + str r0, [r2, #0x30] + adds r0, r4, #0 + movs r1, #0x52 + movs r2, #0 + bl CreateFX + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0x20 + strb r0, [r1] + subs r0, #0x24 + bl sub_080526A0 + bl sub_08079458 +_08074792: + pop {r4, pc} + .align 2, 0 +_08074794: .4byte gUnk_03003F80 +_08074798: .4byte 0xFFFBFFFF + + thumb_func_start sub_0807479C +sub_0807479C: @ 0x0807479C + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + adds r2, r0, #0 + cmp r2, #0 + bne _08074804 + ldr r1, _080747C0 @ =gUnk_03003F80 + ldrb r0, [r1, #0x14] + adds r3, r1, #0 + cmp r0, #0 + bne _080747C4 + adds r1, #0x3f + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + b _080747E6 + .align 2, 0 +_080747C0: .4byte gUnk_03003F80 +_080747C4: + adds r0, r3, #0 + adds r0, #0x26 + strb r2, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r2, #0x13 + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] +_080747E6: + adds r0, r3, #0 + adds r0, #0x26 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _080747FE + adds r0, r4, #0 + bl sub_08079C30 + cmp r0, #0 + beq _08074804 +_080747FE: + adds r0, r4, #0 + bl sub_08074808 +_08074804: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08074808 +sub_08074808: @ 0x08074808 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + bl sub_08077AEC + movs r0, #0x46 + bl sub_0807CA84 + adds r3, r0, #0 + cmp r3, #1 + bne _080748B8 + ldr r1, _08074838 @ =gUnk_03003F80 + adds r2, r1, #0 + adds r2, #0x26 + ldrb r0, [r2] + cmp r0, #0 + bne _0807486C + ldr r0, [r1, #0x30] + movs r1, #0x80 + lsls r1, r1, #9 + ands r0, r1 + cmp r0, #0 + beq _0807483C + strb r3, [r2] + b _08074840 + .align 2, 0 +_08074838: .4byte gUnk_03003F80 +_0807483C: + movs r0, #8 + strb r0, [r2] +_08074840: + movs r1, #0 + movs r0, #0 + strh r0, [r6, #0x24] + ldr r0, _080748AC @ =gUnk_03003F80 + adds r2, r0, #0 + adds r2, #0x89 + strb r1, [r2] + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08074862 + adds r0, r6, #0 + movs r1, #0xb + movs r2, #0 + bl CreateFX +_08074862: + ldr r0, _080748B0 @ =0x000001A5 + bl sub_080A3268 + bl sub_08077B2C +_0807486C: + ldr r5, _080748AC @ =gUnk_03003F80 + adds r4, r5, #0 + adds r4, #0x26 + ldrb r1, [r4] + movs r7, #0xf + adds r0, r7, #0 + ands r0, r1 + cmp r0, #1 + beq _0807488A + adds r0, r6, #0 + bl sub_08079744 + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] +_0807488A: + ldr r0, [r5, #0x30] + ldr r1, _080748B4 @ =0xFFFFF3FF + ands r0, r1 + str r0, [r5, #0x30] + movs r1, #0x80 + lsls r1, r1, #7 + ands r0, r1 + cmp r0, #0 + beq _080748BE + adds r1, r6, #0 + adds r1, #0x7a + ldrh r0, [r1] + cmp r0, #0xe + bhi _080748BE + strh r7, [r1] + b _080748BE + .align 2, 0 +_080748AC: .4byte gUnk_03003F80 +_080748B0: .4byte 0x000001A5 +_080748B4: .4byte 0xFFFFF3FF +_080748B8: + ldr r1, _080748C0 @ =gUnk_03003F80 + movs r0, #0x14 + strb r0, [r1, #0xc] +_080748BE: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080748C0: .4byte gUnk_03003F80 + + thumb_func_start sub_080748C4 +sub_080748C4: @ 0x080748C4 + ldr r1, _080748D0 @ =gUnk_03003F80 + adds r1, #0x3f + ldrb r0, [r1] + subs r0, #2 + strb r0, [r1] + bx lr + .align 2, 0 +_080748D0: .4byte gUnk_03003F80 + + thumb_func_start sub_080748D4 +sub_080748D4: @ 0x080748D4 + push {lr} + bl sub_080741C4 + pop {pc} + + thumb_func_start sub_080748DC +sub_080748DC: @ 0x080748DC + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074910 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + beq _0807490A + ldrh r0, [r4, #0x32] + adds r0, #0xc + strh r0, [r4, #0x32] + ldr r0, _08074914 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807490A + ldrh r0, [r4, #0x36] + subs r0, #0xc + strh r0, [r4, #0x36] +_0807490A: + adds r0, r4, #0 + bl sub_0807AABC +_08074910: + pop {r4, pc} + .align 2, 0 +_08074914: .4byte gUnk_03003F80 + + thumb_func_start sub_08074918 +sub_08074918: @ 0x08074918 + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074934 + adds r0, r4, #0 + bl sub_08079C30 + cmp r0, #0 + beq _08074934 + ldr r1, _08074938 @ =gUnk_03003F80 + movs r0, #0x11 + strb r0, [r1, #0xc] +_08074934: + pop {r4, pc} + .align 2, 0 +_08074938: .4byte gUnk_03003F80 + + thumb_func_start sub_0807493C +sub_0807493C: @ 0x0807493C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x44 + bl sub_0807CA84 + cmp r0, #1 + bne _08074952 + adds r0, r4, #0 + bl sub_0807496C + b _08074966 +_08074952: + ldrh r1, [r4, #0x32] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0xf + movs r2, #0 + orrs r0, r1 + strh r0, [r4, #0x32] + ldr r0, _08074968 @ =gUnk_03003F80 + strb r2, [r0, #0x12] +_08074966: + pop {r4, pc} + .align 2, 0 +_08074968: .4byte gUnk_03003F80 + + thumb_func_start sub_0807496C +sub_0807496C: @ 0x0807496C + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + adds r3, r0, #0 + cmp r3, #0 + bne _080749A2 + ldr r0, _080749A4 @ =gUnk_03003F80 + strb r3, [r0, #2] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] + strb r3, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + bl sub_08077B2C +_080749A2: + pop {r4, pc} + .align 2, 0 +_080749A4: .4byte gUnk_03003F80 + + thumb_func_start sub_080749A8 +sub_080749A8: @ 0x080749A8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x44 + bl sub_0807CA84 + cmp r0, #1 + bne _080749BE + adds r0, r4, #0 + bl sub_080749D4 + b _080749CE +_080749BE: + ldrh r1, [r4, #0x32] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0 + strh r0, [r4, #0x32] + ldr r0, _080749D0 @ =gUnk_03003F80 + strb r1, [r0, #0x12] +_080749CE: + pop {r4, pc} + .align 2, 0 +_080749D0: .4byte gUnk_03003F80 + + thumb_func_start sub_080749D4 +sub_080749D4: @ 0x080749D4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_080741C4 + adds r3, r0, #0 + cmp r3, #0 + bne _08074A40 + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x1b] + strb r3, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + ldr r5, _08074A2C @ =gUnk_03003F80 + adds r0, r5, #0 + adds r0, #0x26 + strb r3, [r0] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + ldrh r1, [r4, #0x32] + movs r0, #0xf + ands r0, r1 + cmp r0, #7 + bgt _08074A34 + ldr r0, _08074A30 @ =0x000002D3 + strh r0, [r5, #8] + movs r0, #0x10 + strb r0, [r4, #0x15] + b _08074A3C + .align 2, 0 +_08074A2C: .4byte gUnk_03003F80 +_08074A30: .4byte 0x000002D3 +_08074A34: + movs r1, #0 + ldr r0, _08074A44 @ =0x000002D6 + strh r0, [r5, #8] + strb r1, [r4, #0x15] +_08074A3C: + bl sub_08077B2C +_08074A40: + pop {r4, r5, pc} + .align 2, 0 +_08074A44: .4byte 0x000002D6 + + thumb_func_start sub_08074A48 +sub_08074A48: @ 0x08074A48 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08074A90 @ =gUnk_03003F80 + adds r0, r5, #0 + adds r0, #0x26 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08074A86 + ldr r0, _08074A94 @ =gLinkEntity + movs r1, #0 + movs r2, #0x54 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _08074A86 + movs r0, #1 + strb r0, [r1, #0xe] + adds r0, r1, #0 + bl sub_08016A04 + ldrh r1, [r5, #0x22] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r2, [r0] + movs r0, #0x39 + bl sub_08000152 +_08074A86: + adds r0, r4, #0 + bl sub_0807479C + pop {r4, r5, pc} + .align 2, 0 +_08074A90: .4byte gUnk_03003F80 +_08074A94: .4byte gLinkEntity + + thumb_func_start nullsub_504 +nullsub_504: @ 0x08074A98 + bx lr + .align 2, 0 + + thumb_func_start sub_08074A9C +sub_08074A9C: @ 0x08074A9C + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074AF0 + ldr r2, _08074AE0 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x80 + ldrh r1, [r0] + subs r1, #0x80 + strh r1, [r0] + ldrb r0, [r2, #0x11] + cmp r0, #1 + beq _08074ACA + adds r0, r2, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0xf0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08074AF0 +_08074ACA: + ldrb r0, [r2, #0x12] + cmp r0, #0x25 + bne _08074AE4 + adds r0, r4, #0 + movs r1, #0x21 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + b _08074AF0 + .align 2, 0 +_08074AE0: .4byte gUnk_03003F80 +_08074AE4: + adds r0, r4, #0 + movs r1, #0x21 + movs r2, #1 + movs r3, #1 + bl sub_080A2988 +_08074AF0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08074AF4 +sub_08074AF4: @ 0x08074AF4 + push {lr} + adds r3, r0, #0 + ldr r1, _08074B04 @ =gUnk_03003F80 + ldrb r0, [r1, #0x1e] + cmp r0, #0 + bne _08074B08 + ldrb r2, [r1, #0xd] + b _08074B0C + .align 2, 0 +_08074B04: .4byte gUnk_03003F80 +_08074B08: + ldrb r0, [r3, #0x14] + lsls r2, r0, #2 +_08074B0C: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_08074244 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08074B18 +sub_08074B18: @ 0x08074B18 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _08074B40 @ =gUnk_03003F80 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _08074B48 + bl sub_080741C4 + cmp r0, #0 + bne _08074B48 + ldr r0, [r4, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08074B44 + adds r0, r5, #0 + bl sub_08074200 + b _08074B48 + .align 2, 0 +_08074B40: .4byte gUnk_03003F80 +_08074B44: + movs r0, #0x1a + strb r0, [r4, #0xc] +_08074B48: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08074B4C +sub_08074B4C: @ 0x08074B4C + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074B6E + ldr r0, _08074B70 @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + bne _08074B6E + strb r1, [r4, #0x14] + strb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_08074BF8 +_08074B6E: + pop {r4, pc} + .align 2, 0 +_08074B70: .4byte gUnk_03003F80 + + thumb_func_start sub_08074B74 +sub_08074B74: @ 0x08074B74 + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074B9A + ldr r0, _08074B9C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08074B9A + movs r0, #4 + strb r0, [r4, #0x14] + movs r0, #0x10 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08074BF8 +_08074B9A: + pop {r4, pc} + .align 2, 0 +_08074B9C: .4byte gUnk_03003F80 + + thumb_func_start sub_08074BA0 +sub_08074BA0: @ 0x08074BA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074BC6 + ldr r0, _08074BC8 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08074BC6 + movs r0, #6 + strb r0, [r4, #0x14] + movs r0, #0x18 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08074BF8 +_08074BC6: + pop {r4, pc} + .align 2, 0 +_08074BC8: .4byte gUnk_03003F80 + + thumb_func_start sub_08074BCC +sub_08074BCC: @ 0x08074BCC + push {r4, lr} + adds r4, r0, #0 + bl sub_080741C4 + cmp r0, #0 + bne _08074BF2 + ldr r0, _08074BF4 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08074BF2 + movs r0, #2 + strb r0, [r4, #0x14] + movs r0, #8 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08074BF8 +_08074BF2: + pop {r4, pc} + .align 2, 0 +_08074BF4: .4byte gUnk_03003F80 + + thumb_func_start sub_08074BF8 +sub_08074BF8: @ 0x08074BF8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08077B2C + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + ldr r1, _08074C40 @ =gUnk_03003F80 + ldr r0, [r1, #0x30] + movs r2, #0x80 + lsls r2, r2, #0x12 + orrs r0, r2 + str r0, [r1, #0x30] + ldrb r2, [r1, #0xa] + movs r0, #0x80 + orrs r2, r0 + strb r2, [r1, #0xa] + ldrb r2, [r1, #0x1a] + orrs r0, r2 + strb r0, [r1, #0x1a] + adds r1, #0x27 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0806F69C + pop {r4, pc} + .align 2, 0 +_08074C40: .4byte gUnk_03003F80 + + thumb_func_start sub_08074C44 +sub_08074C44: @ 0x08074C44 + push {r4, lr} + adds r4, r0, #0 + bl sub_08078EFC + cmp r0, #0 + bne _08074C60 + ldr r0, _08074C64 @ =gUnk_0811BC88 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08074C60: + pop {r4, pc} + .align 2, 0 +_08074C64: .4byte gUnk_0811BC88 + + thumb_func_start sub_08074C68 +sub_08074C68: @ 0x08074C68 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x68 + movs r2, #0 + strb r2, [r6] + ldr r5, _08074CA0 @ =gUnk_03003F80 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r3, [r0] + cmp r3, #1 + beq _08074CA8 + adds r0, r4, #0 + adds r0, #0x84 + ldr r1, [r0] + ldr r0, _08074CA4 @ =gUnk_02022750 + cmp r1, r0 + bne _08074CF2 + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + bl sub_08074CF8 + b _08074CF2 + .align 2, 0 +_08074CA0: .4byte gUnk_03003F80 +_08074CA4: .4byte gUnk_02022750 +_08074CA8: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r2, [r4, #0x14] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #2 + strb r0, [r4, #0xd] + strb r3, [r6] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r5, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _08074CE4 + ldr r0, _08074CE0 @ =0x0000073A + b _08074CE6 + .align 2, 0 +_08074CE0: .4byte 0x0000073A +_08074CE4: + ldr r0, _08074CF4 @ =0x00000736 +_08074CE6: + strh r0, [r5, #8] + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 +_08074CF2: + pop {r4, r5, r6, pc} + .align 2, 0 +_08074CF4: .4byte 0x00000736 + + thumb_func_start sub_08074CF8 +sub_08074CF8: @ 0x08074CF8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r6, [r5, #0x14] + adds r4, r5, #0 + adds r4, #0x84 + ldr r1, [r4] + bl sub_0807DF74 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_08074D34 + adds r0, r5, #0 + adds r0, #0x82 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08074D20 + strb r6, [r5, #0x14] +_08074D20: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_08003FC4 + adds r0, r5, #0 + bl sub_080042B8 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08074D34 +sub_08074D34: @ 0x08074D34 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r0, [r6, #8] + cmp r0, #0 + bne _08074D46 + b _08074EF8 +_08074D46: + movs r7, #0x80 + lsls r7, r7, #1 + adds r5, r4, #0 + adds r5, #0x82 +_08074D4E: + ldr r1, [r6, #8] + mvns r0, r1 + adds r2, r0, #1 + ands r2, r1 + eors r1, r2 + str r1, [r6, #8] + cmp r2, r7 + bne _08074D60 + b _08074E82 +_08074D60: + cmp r2, r7 + bhi _08074D90 + cmp r2, #8 + beq _08074E2C + cmp r2, #8 + bhi _08074D7C + cmp r2, #2 + beq _08074E08 + cmp r2, #2 + bls _08074D76 + b _08074EF0 +_08074D76: + cmp r2, #1 + beq _08074DEC + b _08074EF0 +_08074D7C: + cmp r2, #0x20 + beq _08074E62 + cmp r2, #0x20 + bhi _08074D8A + cmp r2, #0x10 + beq _08074E54 + b _08074EF0 +_08074D8A: + cmp r2, #0x80 + beq _08074E70 + b _08074EF0 +_08074D90: + movs r0, #0x80 + lsls r0, r0, #7 + cmp r2, r0 + bne _08074D9A + b _08074EAE +_08074D9A: + cmp r2, r0 + bhi _08074DBE + movs r0, #0x80 + lsls r0, r0, #5 + cmp r2, r0 + beq _08074E96 + cmp r2, r0 + bhi _08074DB4 + movs r0, #0x80 + lsls r0, r0, #2 + cmp r2, r0 + beq _08074E90 + b _08074EF0 +_08074DB4: + movs r0, #0x80 + lsls r0, r0, #6 + cmp r2, r0 + beq _08074EA8 + b _08074EF0 +_08074DBE: + movs r0, #0x80 + lsls r0, r0, #0xa + cmp r2, r0 + bne _08074DC8 + b _08074EBE +_08074DC8: + cmp r2, r0 + bhi _08074DD6 + movs r0, #0x80 + lsls r0, r0, #8 + cmp r2, r0 + beq _08074EB4 + b _08074EF0 +_08074DD6: + movs r0, #0x80 + lsls r0, r0, #0xd + cmp r2, r0 + bne _08074DE0 + b _08074ED8 +_08074DE0: + movs r0, #0x80 + lsls r0, r0, #0xe + cmp r2, r0 + bne _08074DEA + b _08074EE4 +_08074DEA: + b _08074EF0 +_08074DEC: + ldr r2, _08074E00 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08074E04 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r2, #8] + b _08074EF0 + .align 2, 0 +_08074E00: .4byte gUnk_03003F80 +_08074E04: + strh r7, [r2, #8] + b _08074EF0 +_08074E08: + ldr r2, _08074E1C @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08074E24 + ldr r0, _08074E20 @ =0x00000404 + strh r0, [r2, #8] + b _08074EF0 + .align 2, 0 +_08074E1C: .4byte gUnk_03003F80 +_08074E20: .4byte 0x00000404 +_08074E24: + movs r0, #0x82 + lsls r0, r0, #1 + strh r0, [r2, #8] + b _08074EF0 +_08074E2C: + ldr r1, _08074E3C @ =gUnk_03003F80 + ldr r0, [r1, #0x30] + ands r0, r2 + cmp r0, #0 + beq _08074E44 + ldr r0, _08074E40 @ =0x0000041C + b _08074E46 + .align 2, 0 +_08074E3C: .4byte gUnk_03003F80 +_08074E40: .4byte 0x0000041C +_08074E44: + ldr r0, _08074E50 @ =0x0000080C +_08074E46: + strh r0, [r1, #8] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + b _08074EF0 + .align 2, 0 +_08074E50: .4byte 0x0000080C +_08074E54: + adds r0, r4, #0 + movs r1, #8 + movs r2, #0x18 + rsbs r2, r2, #0 + bl sub_080A2CFC + b _08074EF0 +_08074E62: + adds r0, r4, #0 + movs r1, #8 + movs r2, #0x18 + rsbs r2, r2, #0 + bl sub_080A2D0C + b _08074EF0 +_08074E70: + ldrb r0, [r4, #0x18] + movs r2, #4 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08074EF0 +_08074E82: + ldrb r0, [r4, #0x18] + movs r3, #4 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _08074EF0 +_08074E90: + movs r0, #0 + strh r0, [r5] + b _08074EF0 +_08074E96: + ldrh r0, [r5] + ldr r2, _08074EA4 @ =0x0000FFFE + adds r1, r2, #0 + ands r0, r1 + strh r0, [r5] + b _08074EF0 + .align 2, 0 +_08074EA4: .4byte 0x0000FFFE +_08074EA8: + ldrh r0, [r5] + movs r1, #1 + b _08074EB8 +_08074EAE: + ldrh r0, [r5] + movs r1, #8 + b _08074EB8 +_08074EB4: + ldrh r0, [r5] + movs r1, #4 +_08074EB8: + orrs r0, r1 + strh r0, [r5] + b _08074EF0 +_08074EBE: + ldrb r2, [r4, #0x18] + lsls r0, r2, #0x19 + lsrs r0, r0, #0x1f + movs r1, #1 + eors r0, r1 + lsls r0, r0, #6 + movs r3, #0x41 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0x18] + b _08074EF0 +_08074ED8: + movs r1, #2 + strb r1, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x68 + strb r1, [r0] + b _08074EF0 +_08074EE4: + movs r0, #0 + movs r1, #3 + strb r1, [r4, #0xd] + adds r1, r4, #0 + adds r1, #0x68 + strb r0, [r1] +_08074EF0: + ldr r0, [r6, #8] + cmp r0, #0 + beq _08074EF8 + b _08074D4E +_08074EF8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08074F00 +sub_08074F00: @ 0x08074F00 + push {lr} + ldr r2, _08074F18 @ =gUnk_0811BC98 + adds r1, r0, #0 + adds r1, #0x68 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08074F18: .4byte gUnk_0811BC98 + + thumb_func_start sub_08074F1C +sub_08074F1C: @ 0x08074F1C + adds r2, r0, #0 + adds r2, #0x68 + movs r3, #0 + movs r1, #1 + strb r1, [r2] + strb r3, [r0, #0x14] + bx lr + .align 2, 0 + + thumb_func_start sub_08074F2C +sub_08074F2C: @ 0x08074F2C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x84 + ldr r1, [r5] + bl sub_0807DF74 + ldr r1, [r5] + adds r0, r4, #0 + bl sub_08074D34 + pop {r4, r5, pc} + + thumb_func_start sub_08074F44 +sub_08074F44: @ 0x08074F44 + push {lr} + adds r0, #0x68 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + ldr r0, _08074F74 @ =gLinkEntity + ldr r0, [r0, #0x6c] + cmp r0, #0 + beq _08074F5A + bl sub_0805E7BC +_08074F5A: + ldr r2, _08074F78 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _08074F80 + ldr r0, _08074F7C @ =0x0000073B + strh r0, [r2, #8] + ldr r0, [r2, #0x30] + movs r1, #8 + orrs r0, r1 + str r0, [r2, #0x30] + b _08074F84 + .align 2, 0 +_08074F74: .4byte gLinkEntity +_08074F78: .4byte gUnk_03003F80 +_08074F7C: .4byte 0x0000073B +_08074F80: + ldr r0, _08074F88 @ =0x00000737 + strh r0, [r2, #8] +_08074F84: + pop {pc} + .align 2, 0 +_08074F88: .4byte 0x00000737 + + thumb_func_start sub_08074F8C +sub_08074F8C: @ 0x08074F8C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r0, [r3] + cmp r0, #1 + bne _08074FAC + movs r0, #0 + strb r0, [r3] + ldr r2, _08074FDC @ =gUnk_02033280 + ldr r0, [r2] + movs r1, #4 + orrs r0, r1 + str r0, [r2] +_08074FAC: + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08074FEA + adds r1, r4, #0 + adds r1, #0x68 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #4 + strb r0, [r4, #0x14] + ldr r1, _08074FE0 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _08074FE4 + movs r0, #0x80 + lsls r0, r0, #3 + b _08074FE8 + .align 2, 0 +_08074FDC: .4byte gUnk_02033280 +_08074FE0: .4byte gUnk_03003F80 +_08074FE4: + movs r0, #0x80 + lsls r0, r0, #1 +_08074FE8: + strh r0, [r1, #8] +_08074FEA: + pop {r4, pc} + + thumb_func_start sub_08074FEC +sub_08074FEC: @ 0x08074FEC + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08075016 + adds r1, r4, #0 + adds r1, #0x68 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #4 + strb r0, [r4, #0xe] + ldr r0, _08075018 @ =gUnk_03003F80 + adds r0, #0x3a + ldrb r0, [r0] + strb r0, [r4, #0x14] +_08075016: + pop {r4, pc} + .align 2, 0 +_08075018: .4byte gUnk_03003F80 + + thumb_func_start sub_0807501C +sub_0807501C: @ 0x0807501C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08075086 + ldr r1, _08075044 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x3a + ldrb r0, [r0] + strb r0, [r2, #0x14] + adds r0, r1, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _0807504C + ldr r0, _08075048 @ =0x0000041C + b _0807504E + .align 2, 0 +_08075044: .4byte gUnk_03003F80 +_08075048: .4byte 0x0000041C +_0807504C: + ldr r0, _08075088 @ =0x0000080C +_0807504E: + strh r0, [r1, #8] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + strb r0, [r2, #0x15] + movs r0, #0xc8 + strh r0, [r2, #0x24] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r2, #0x20] + movs r0, #8 + strb r0, [r2, #0xe] + adds r1, r2, #0 + adds r1, #0x68 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0x7c + bl sub_080A3268 +_08075086: + pop {pc} + .align 2, 0 +_08075088: .4byte 0x0000080C + + thumb_func_start sub_0807508C +sub_0807508C: @ 0x0807508C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _080750AA + adds r0, r4, #0 + bl sub_0806F69C + b _080750F2 +_080750AA: + ldr r2, _080750BC @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x39 + ldrb r0, [r0] + cmp r0, #0 + bne _080750C0 + movs r0, #0x80 + lsls r0, r0, #3 + b _080750CE + .align 2, 0 +_080750BC: .4byte gUnk_03003F80 +_080750C0: + ldr r0, [r2, #0x30] + movs r1, #9 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2, #0x30] + movs r0, #0x80 + lsls r0, r0, #1 +_080750CE: + strh r0, [r2, #8] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080750F2 + movs r0, #4 + strb r0, [r4, #0x14] + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x68 + strb r1, [r0] + movs r0, #0x7d + bl sub_080A3268 +_080750F2: + pop {r4, pc} + + thumb_func_start sub_080750F4 +sub_080750F4: @ 0x080750F4 + push {lr} + ldr r2, _0807510C @ =gUnk_0811BCB4 + adds r1, r0, #0 + adds r1, #0x68 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807510C: .4byte gUnk_0811BCB4 + + thumb_func_start sub_08075110 +sub_08075110: @ 0x08075110 + adds r2, r0, #0 + adds r2, #0x68 + ldrb r1, [r2] + adds r1, #1 + movs r3, #0 + strb r1, [r2] + ldrb r1, [r0, #0x14] + strb r1, [r0, #0xf] + strb r3, [r0, #0x14] + ldr r2, _08075134 @ =gUnk_03003F80 + ldr r0, _08075138 @ =0x00000734 + strh r0, [r2, #8] + ldr r0, [r2, #0x30] + movs r1, #9 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2, #0x30] + bx lr + .align 2, 0 +_08075134: .4byte gUnk_03003F80 +_08075138: .4byte 0x00000734 + + thumb_func_start sub_0807513C +sub_0807513C: @ 0x0807513C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080042B8 + adds r4, r5, #0 + adds r4, #0x5a + ldrb r0, [r4] + cmp r0, #1 + bne _08075158 + movs r0, #0 + strb r0, [r4] + movs r0, #0x7c + bl sub_080A3268 +_08075158: + ldrb r0, [r4] + cmp r0, #2 + bne _0807516E + movs r0, #0 + strb r0, [r4] + ldr r0, _08075188 @ =0x0000014B + bl sub_080A3268 + movs r0, #0x7a + bl sub_080A3268 +_0807516E: + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08075186 + adds r0, r5, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + movs r0, #0x3c + strb r0, [r5, #0xe] +_08075186: + pop {r4, r5, pc} + .align 2, 0 +_08075188: .4byte 0x0000014B + + thumb_func_start sub_0807518C +sub_0807518C: @ 0x0807518C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080751AA + adds r1, #0x68 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r1, _080751AC @ =gUnk_03003F80 + ldr r0, _080751B0 @ =0x000003C9 + strh r0, [r1, #8] +_080751AA: + pop {pc} + .align 2, 0 +_080751AC: .4byte gUnk_03003F80 +_080751B0: .4byte 0x000003C9 + + thumb_func_start sub_080751B4 +sub_080751B4: @ 0x080751B4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080751E2 + movs r1, #0 + movs r0, #4 + strb r0, [r4, #0x14] + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x68 + strb r1, [r0] + ldr r1, _080751E4 @ =gUnk_03003F80 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #8] +_080751E2: + pop {r4, pc} + .align 2, 0 +_080751E4: .4byte gUnk_03003F80 + + thumb_func_start sub_080751E8 +sub_080751E8: @ 0x080751E8 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + ldr r4, _08075230 @ =gUnk_02022750 + adds r0, r4, #0 + movs r1, #0x24 + bl sub_0801D630 + str r6, [r4] + ldr r0, _08075234 @ =gLinkEntity + adds r0, #0x84 + str r4, [r0] + ldr r2, _08075238 @ =gUnk_03003F80 + movs r1, #0 + movs r0, #0x1c + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x38 + movs r4, #1 + strb r4, [r0] + adds r3, r2, #0 + adds r3, #0x39 + strb r1, [r3] + adds r0, #2 + strb r5, [r0] + ldr r0, [r2, #0x30] + movs r1, #8 + orrs r0, r1 + str r0, [r2, #0x30] + cmp r7, #0 + bne _08075240 + strb r7, [r3] + ldr r6, _0807523C @ =gUnk_08009ECC + b _08075244 + .align 2, 0 +_08075230: .4byte gUnk_02022750 +_08075234: .4byte gLinkEntity +_08075238: .4byte gUnk_03003F80 +_0807523C: .4byte gUnk_08009ECC +_08075240: + strb r4, [r3] + ldr r6, _08075290 @ =gUnk_08009EF0 +_08075244: + ldr r0, _08075294 @ =gUnk_03003F80 + adds r0, #0x39 + ldrb r0, [r0] + movs r1, #0 + cmp r0, #0 + bne _08075252 + movs r1, #2 +_08075252: + movs r0, #0x5b + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08075270 + ldr r0, _08075298 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0807DAD0 +_08075270: + ldr r4, _08075298 @ =gLinkEntity + movs r1, #0xe + rsbs r1, r1, #0 + movs r2, #0x1c + rsbs r2, r2, #0 + adds r0, r4, #0 + bl sub_080A2D1C + str r0, [r4, #0x6c] + cmp r0, #0 + beq _0807528C + movs r1, #3 + bl sub_0805E3A0 +_0807528C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08075290: .4byte gUnk_08009EF0 +_08075294: .4byte gUnk_03003F80 +_08075298: .4byte gLinkEntity + + thumb_func_start sub_0807529C +sub_0807529C: @ 0x0807529C + push {lr} + movs r2, #0x20 + rsbs r2, r2, #0 + movs r1, #8 + bl sub_080A2D0C + pop {pc} + .align 2, 0 + + thumb_func_start sub_080752AC +sub_080752AC: @ 0x080752AC + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + bl sub_0806F69C + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _080752D0 + adds r0, r5, #0 + bl sub_080002B8 + cmp r0, #0x29 + beq _080752DC + movs r0, #1 + strb r0, [r4, #0x18] + movs r0, #6 + strb r0, [r4, #0x19] + b _080752DC +_080752D0: + ldrb r0, [r4, #0x19] + subs r0, #1 + strb r0, [r4, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080752E2 +_080752DC: + ldr r1, _080752E4 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_080752E2: + pop {r4, r5, pc} + .align 2, 0 +_080752E4: .4byte gUnk_02033280 + + thumb_func_start sub_080752E8 +sub_080752E8: @ 0x080752E8 + push {lr} + ldr r3, _080752FC @ =gUnk_0811BCC4 + ldrb r2, [r0, #1] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_080752FC: .4byte gUnk_0811BCC4 + + thumb_func_start sub_08075300 +sub_08075300: @ 0x08075300 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077BD4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 + pop {r4, r5, pc} + + thumb_func_start sub_08075314 +sub_08075314: @ 0x08075314 + push {lr} + ldr r2, _08075330 @ =gUnk_03003F80 + adds r2, #0xa8 + movs r3, #2 + strb r3, [r2] + ldr r3, _08075334 @ =gUnk_0811BD44 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08075330: .4byte gUnk_03003F80 +_08075334: .4byte gUnk_0811BD44 + + thumb_func_start sub_08075338 +sub_08075338: @ 0x08075338 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + ldr r4, _0807536C @ =gUnk_03003F80 + ldr r1, [r4, #0x30] + movs r3, #0x80 + adds r0, r1, #0 + ands r0, r3 + cmp r0, #0 + beq _08075370 + ldrb r0, [r5, #9] + movs r1, #0x80 + orrs r1, r0 + strb r1, [r5, #9] + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08077D38 + movs r0, #0xc0 + lsls r0, r0, #4 + strh r0, [r4, #8] + movs r0, #0x75 + bl sub_080A3268 + b _080754B4 + .align 2, 0 +_0807536C: .4byte gUnk_03003F80 +_08075370: + ldrb r2, [r4, #2] + cmp r2, #0 + beq _080753DC + movs r6, #7 + adds r0, r6, #0 + ands r0, r2 + cmp r0, #3 + beq _080753E4 + movs r0, #0x78 + ands r0, r2 + cmp r0, #0 + bne _080753E4 + ldr r3, _080753D4 @ =gLinkEntity + ldr r1, [r3, #0x20] + ldr r0, _080753D8 @ =0x00017FFF + cmp r1, r0 + bhi _080753E4 + adds r0, r4, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080753E4 + ldr r0, [r3, #0x34] + cmp r0, #0 + beq _080753E4 + movs r0, #0x20 + orrs r0, r2 + strb r0, [r4, #2] + adds r0, r4, #0 + adds r0, #0xab + strb r6, [r0] + movs r0, #8 + asrs r0, r7 + lsls r1, r0, #4 + orrs r0, r1 + ldrb r1, [r4, #4] + orrs r0, r1 + strb r0, [r4, #4] + adds r0, r5, #0 + bl sub_08077B98 + movs r0, #6 + strb r0, [r5, #4] + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08075898 + b _080754B4 + .align 2, 0 +_080753D4: .4byte gLinkEntity +_080753D8: .4byte 0x00017FFF +_080753DC: + ldr r2, _080753F0 @ =gLinkEntity + ldr r0, [r2, #0x34] + cmp r0, #0 + beq _080753F4 +_080753E4: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_080759B8 + b _080754B4 + .align 2, 0 +_080753F0: .4byte gLinkEntity +_080753F4: + movs r6, #0x80 + lsls r6, r6, #0xb + ands r6, r1 + cmp r6, #0 + beq _08075480 + adds r0, r4, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + cmp r6, #0 + bne _0807541E + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _080754B4 + bl sub_0805E7BC + str r6, [r4, #0x2c] + b _080754B4 +_0807541E: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08077D38 + adds r0, r5, #0 + bl sub_08077B98 + movs r3, #8 + adds r1, r3, #0 + asrs r1, r7 + lsls r0, r1, #4 + orrs r0, r1 + ldrb r2, [r4, #4] + orrs r0, r2 + strb r0, [r4, #4] + ldrb r2, [r4, #0xa] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xb] + orrs r1, r0 + strb r1, [r4, #0xb] + strb r3, [r5, #4] + movs r0, #0x14 + strb r0, [r5, #7] + movs r0, #6 + strb r0, [r5, #0xf] + ldrb r1, [r5, #9] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #9] + adds r1, r4, #0 + adds r1, #0xab + movs r0, #2 + strb r0, [r1] + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x14 + orrs r0, r1 + str r0, [r4, #0x30] + movs r1, #0x98 + lsls r1, r1, #1 + adds r0, r5, #0 + bl sub_08077DF4 + movs r0, #0x77 + bl sub_080A3268 + b _080754B4 +_08075480: + ldrb r1, [r4, #0x1b] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08075492 + strb r6, [r4, #0x1b] + adds r0, r2, #0 + bl sub_0806F948 +_08075492: + ldr r1, [r4, #0x2c] + cmp r1, #0 + beq _080754A6 + ldrb r0, [r1, #9] + cmp r0, #1 + beq _080754A6 + adds r0, r1, #0 + bl sub_0805E7BC + str r6, [r4, #0x2c] +_080754A6: + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_08077D38 + adds r0, r5, #0 + bl sub_08077B98 +_080754B4: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080754B8 +sub_080754B8: @ 0x080754B8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r7, _080754D4 @ =gUnk_03003F80 + ldrb r1, [r7, #0x1b] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080754D8 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08075694 + b _0807557E + .align 2, 0 +_080754D4: .4byte gUnk_03003F80 +_080754D8: + ldrb r0, [r7, #4] + cmp r0, #0 + beq _08075576 + adds r0, r4, #0 + bl sub_08077E24 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080754F2 + ldrb r1, [r4, #9] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #9] +_080754F2: + ldr r0, _0807552C @ =gLinkEntity + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075538 + bl sub_0807B014 + adds r5, r0, #0 + cmp r5, #0 + beq _08075538 + movs r0, #8 + movs r1, #0xf + movs r2, #2 + bl sub_0805EB00 + cmp r0, #0 + bne _08075538 + adds r0, r4, #0 + movs r1, #0xf + bl sub_08077C3C + cmp r5, #0xf + bne _08075530 + adds r1, r7, #0 + adds r1, #0xab + movs r0, #5 + b _08075536 + .align 2, 0 +_0807552C: .4byte gLinkEntity +_08075530: + adds r1, r7, #0 + adds r1, #0xab + movs r0, #8 +_08075536: + strb r0, [r1] +_08075538: + ldrb r1, [r4, #0xe] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0807557E + ldr r1, _08075568 @ =gUnk_03003F80 + ldr r0, [r1, #0x30] + ands r0, r2 + cmp r0, #0 + bne _0807555C + adds r0, r1, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0807556C +_0807555C: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080759B8 + b _0807557E + .align 2, 0 +_08075568: .4byte gUnk_03003F80 +_0807556C: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08075580 + b _0807557E +_08075576: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080759B8 +_0807557E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08075580 +sub_08075580: @ 0x08075580 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077EFC + cmp r0, #0 + beq _080755E6 + ldr r2, _080755C8 @ =gUnk_03003F80 + ldrb r3, [r2, #2] + cmp r3, #0 + bne _080755E6 + movs r1, #8 + asrs r1, r5 + ldrb r0, [r2, #0xa] + bics r0, r1 + strb r0, [r2, #0xa] + movs r0, #1 + strb r0, [r2, #0x1b] + ldr r0, [r2, #0x2c] + adds r0, #0x40 + movs r1, #0xd + strb r1, [r0] + strb r3, [r4, #0xf] + movs r0, #2 + strb r0, [r4, #4] + adds r0, r2, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080755CC + movs r0, #0x28 + b _080755CE + .align 2, 0 +_080755C8: .4byte gUnk_03003F80 +_080755CC: + movs r0, #0x50 +_080755CE: + strb r0, [r4, #7] + movs r1, #0xb4 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_08077DF4 + movs r0, #0x43 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + b _080755EE +_080755E6: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080759B8 +_080755EE: + pop {r4, r5, pc} + + thumb_func_start sub_080755F0 +sub_080755F0: @ 0x080755F0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077EFC + cmp r0, #0 + beq _08075642 + adds r0, r4, #0 + bl sub_08077EC8 + cmp r0, #0 + bne _0807564A + ldr r2, _08075634 @ =gUnk_03003F80 + ldrb r3, [r2, #0x1b] + ldrb r0, [r2, #4] + orrs r0, r3 + cmp r0, #0 + beq _08075638 + ldrb r0, [r4, #7] + subs r0, #1 + strb r0, [r4, #7] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807564A + movs r0, #3 + strb r0, [r4, #4] + ldrb r0, [r4, #9] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #9] + movs r0, #0x20 + orrs r0, r3 + strb r0, [r2, #0x1b] + b _0807564A + .align 2, 0 +_08075634: .4byte gUnk_03003F80 +_08075638: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080759B8 + b _0807564A +_08075642: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080759B8 +_0807564A: + pop {r4, r5, pc} + + thumb_func_start sub_0807564C +sub_0807564C: @ 0x0807564C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _08075668 @ =gUnk_03003F80 + ldrb r1, [r5, #0x1b] + ldrb r0, [r5, #4] + orrs r0, r1 + cmp r0, #0 + bne _0807566C + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080759B8 + b _08075692 + .align 2, 0 +_08075668: .4byte gUnk_03003F80 +_0807566C: + adds r0, r4, #0 + bl sub_08077EC8 + cmp r0, #0 + bne _08075692 + adds r0, r4, #0 + bl sub_08077EFC + cmp r0, #0 + beq _0807568A + ldrb r1, [r5, #0x1b] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08075692 +_0807568A: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08075694 +_08075692: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08075694 +sub_08075694: @ 0x08075694 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r3, #1 + strb r3, [r4, #7] + ldr r2, _080756C4 @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + movs r0, #0x80 + lsls r0, r0, #0x14 + ands r0, r1 + cmp r0, #0 + beq _080756D0 + ldr r0, _080756C8 @ =0xF7FFFFFF + ands r1, r0 + ldr r0, _080756CC @ =0xFFFBFFFF + ands r1, r0 + str r1, [r2, #0x30] + movs r1, #0x96 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_08077DF4 + b _080756E0 + .align 2, 0 +_080756C4: .4byte gUnk_03003F80 +_080756C8: .4byte 0xF7FFFFFF +_080756CC: .4byte 0xFFFBFFFF +_080756D0: + adds r0, r2, #0 + adds r0, #0xab + strb r3, [r0] + movs r1, #0x92 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_08077DF4 +_080756E0: + ldr r2, _08075730 @ =gUnk_03003F80 + movs r0, #8 + asrs r0, r5 + ldrb r1, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] + movs r0, #4 + strb r0, [r4, #4] + movs r0, #6 + strb r0, [r4, #0xf] + ldr r0, _08075734 @ =gLinkEntity + adds r0, #0x40 + movs r1, #0x1e + strb r1, [r0] + ldrb r1, [r2, #0x1b] + movs r0, #0x40 + orrs r0, r1 + movs r1, #0xdf + ands r0, r1 + strb r0, [r2, #0x1b] + adds r3, r2, #0 + adds r3, #0xa0 + ldrb r0, [r3] + cmp r0, #4 + bne _08075726 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _08075726 + movs r0, #1 + strb r0, [r3] + bl sub_0807A108 +_08075726: + movs r0, #0x76 + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_08075730: .4byte gUnk_03003F80 +_08075734: .4byte gLinkEntity + + thumb_func_start sub_08075738 +sub_08075738: @ 0x08075738 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _08075750 @ =gUnk_03003F80 + ldrb r0, [r5, #4] + cmp r0, #0 + bne _08075754 + adds r0, r4, #0 + bl sub_080759B8 + b _0807588C + .align 2, 0 +_08075750: .4byte gUnk_03003F80 +_08075754: + adds r0, r4, #0 + bl sub_08077E24 + adds r0, r4, #0 + bl sub_08077F10 + cmp r0, #0 + beq _08075768 + movs r0, #2 + strb r0, [r4, #7] +_08075768: + ldrb r2, [r5, #0x1b] + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _080757D4 + ldrb r1, [r5, #0xd] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _08075780 + strb r1, [r4, #0xb] +_08075780: + ldr r1, _080757D0 @ =gLinkEntity + ldrb r0, [r4, #0xb] + strb r0, [r1, #0x15] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1, #0x24] + ldrb r1, [r4, #0xe] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _0807588C + movs r2, #0xa + adds r0, r5, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080757AA + movs r2, #0xf +_080757AA: + ldrb r0, [r4, #8] + adds r0, #1 + strb r0, [r4, #8] + movs r1, #0xff + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r2, r0 + bls _080757C6 + ldrb r0, [r4, #7] + subs r0, #1 + strb r0, [r4, #7] + ands r0, r1 + cmp r0, #0 + bne _0807588C +_080757C6: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080759B8 + b _0807588C + .align 2, 0 +_080757D0: .4byte gLinkEntity +_080757D4: + ldr r7, _08075890 @ =gLinkEntity + adds r0, r7, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075816 + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _08075816 + adds r0, r5, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075816 + adds r0, r4, #0 + movs r1, #0x14 + bl sub_08077C3C + adds r2, r0, #0 + cmp r2, #0 + beq _08075816 + ldrb r0, [r7, #0x14] + movs r1, #6 + ands r1, r0 + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0x14] +_08075816: + ldr r5, _08075890 @ =gLinkEntity + adds r0, r5, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0807587A + ldr r2, _08075894 @ =gUnk_03003F80 + ldrb r3, [r2, #0x1b] + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + bne _0807587A + adds r0, r2, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0807587A + ldrb r0, [r4, #7] + subs r0, #1 + strb r0, [r4, #7] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807587A + movs r0, #0x10 + orrs r0, r3 + strb r0, [r2, #0x1b] + adds r1, r2, #0 + adds r1, #0xab + movs r0, #6 + strb r0, [r1] + ldrb r0, [r5, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0xb] + movs r0, #1 + strb r0, [r4, #7] + strb r0, [r4, #8] + movs r1, #8 + asrs r1, r6 + ldrb r0, [r2, #0xa] + bics r0, r1 + strb r0, [r2, #0xa] + movs r1, #0x94 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_08077DF4 +_0807587A: + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807588C + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080759B8 +_0807588C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08075890: .4byte gLinkEntity +_08075894: .4byte gUnk_03003F80 + + thumb_func_start sub_08075898 +sub_08075898: @ 0x08075898 + push {lr} + adds r2, r0, #0 + ldr r0, _080758AC @ =gUnk_03003F80 + ldrb r0, [r0, #4] + cmp r0, #0 + bne _080758AA + adds r0, r2, #0 + bl sub_080759B8 +_080758AA: + pop {pc} + .align 2, 0 +_080758AC: .4byte gUnk_03003F80 + + thumb_func_start sub_080758B0 +sub_080758B0: @ 0x080758B0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080758C4 @ =gUnk_03003F80 + ldrb r0, [r5, #4] + cmp r0, #0 + bne _080758C8 + adds r0, r4, #0 + bl sub_080759B8 + b _080758F8 + .align 2, 0 +_080758C4: .4byte gUnk_03003F80 +_080758C8: + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080758F8 + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r1, [r5, #0x1b] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080758EA + movs r0, #3 + b _080758EC +_080758EA: + movs r0, #5 +_080758EC: + strb r0, [r4, #4] + ldr r2, _080758FC @ =gUnk_03003F80 + ldrb r1, [r2, #0x1b] + movs r0, #0xf7 + ands r0, r1 + strb r0, [r2, #0x1b] +_080758F8: + pop {r4, r5, pc} + .align 2, 0 +_080758FC: .4byte gUnk_03003F80 + + thumb_func_start sub_08075900 +sub_08075900: @ 0x08075900 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _08075920 @ =gUnk_03003F80 + ldrb r0, [r5, #0x12] + cmp r0, #0x11 + bne _08075928 + ldr r0, [r5, #0x30] + ldr r1, _08075924 @ =0xFFFBFFFF + ands r0, r1 + str r0, [r5, #0x30] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080759B8 + b _080759B2 + .align 2, 0 +_08075920: .4byte gUnk_03003F80 +_08075924: .4byte 0xFFFBFFFF +_08075928: + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r5, #0x1b] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08075948 + movs r0, #0xa0 + strb r0, [r5, #0x1b] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0807564C + b _080759B2 +_08075948: + ldrb r0, [r4, #7] + cmp r0, #0 + beq _08075998 + subs r0, #1 + strb r0, [r4, #7] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08075962 + movs r1, #0x9a + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_08077DF4 +_08075962: + ldr r4, _08075990 @ =gLinkEntity + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #3 + strb r0, [r4, #0x15] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + bl sub_08079E08 + ldr r0, _08075994 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _080759B2 + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + b _080759B2 + .align 2, 0 +_08075990: .4byte gLinkEntity +_08075994: .4byte gUnk_030010A0 +_08075998: + ldrb r1, [r4, #0xe] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080759B2 + ldr r0, [r5, #0x30] + ldr r1, _080759B4 @ =0xFFFBFFFF + ands r0, r1 + str r0, [r5, #0x30] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080759B8 +_080759B2: + pop {r4, r5, r6, pc} + .align 2, 0 +_080759B4: .4byte 0xFFFBFFFF + + thumb_func_start sub_080759B8 +sub_080759B8: @ 0x080759B8 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldr r2, _080759E8 @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + bne _080759D0 + ldr r0, _080759EC @ =gLinkEntity + adds r0, #0x40 + strb r1, [r0] +_080759D0: + ldr r0, [r2, #0x30] + ldr r1, _080759F0 @ =0xF7FFFFFF + ands r0, r1 + str r0, [r2, #0x30] + movs r0, #0 + strb r0, [r2, #0x1b] + str r0, [r2, #0x2c] + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_08077E78 + pop {r4, pc} + .align 2, 0 +_080759E8: .4byte gUnk_03003F80 +_080759EC: .4byte gLinkEntity +_080759F0: .4byte 0xF7FFFFFF + + thumb_func_start sub_080759F4 +sub_080759F4: @ 0x080759F4 + push {lr} + ldr r3, _08075A08 @ =gUnk_0811BD68 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08075A08: .4byte gUnk_0811BD68 + + thumb_func_start sub_08075A0C +sub_08075A0C: @ 0x08075A0C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #1] + bl sub_0805436C + adds r6, r0, #0 + ldr r1, _08075A64 @ =gUnk_03003F80 + ldrb r0, [r1, #5] + cmp r0, #0 + bne _08075A3E + ldrb r0, [r1, #0xc] + cmp r0, #0x18 + beq _08075A3E + ldrb r0, [r1, #2] + cmp r0, #0 + bne _08075A3E + ldr r0, [r1, #0x2c] + cmp r0, #0 + bne _08075A3E + ldr r0, [r1, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08075A6C +_08075A3E: + movs r0, #0xf + adds r1, r6, #0 + bl sub_08054414 + ldr r0, _08075A64 @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + ldr r2, _08075A68 @ =0xFF7FFFFF + ands r1, r2 + str r1, [r0, #0x30] + movs r0, #0xf + adds r1, r6, #0 + bl sub_08054414 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 + b _08075AD0 + .align 2, 0 +_08075A64: .4byte gUnk_03003F80 +_08075A68: .4byte 0xFF7FFFFF +_08075A6C: + ldrb r1, [r4, #9] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #9] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077D38 + adds r0, r4, #0 + bl sub_08077BD4 + ldr r5, _08075AD4 @ =gLinkEntity + adds r0, r5, #0 + bl sub_0806F948 + movs r0, #0x10 + strb r0, [r4, #1] + adds r1, r6, #0 + bl sub_08054414 + ldrb r1, [r5, #0x14] + movs r0, #6 + ands r0, r1 + ldr r1, _08075AD8 @ =gUnk_08126EEC + adds r4, r0, r1 + adds r0, r5, #0 + movs r1, #0x45 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + adds r2, r0, #0 + cmp r2, #0 + beq _08075AD0 + adds r0, r5, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x60 + strh r1, [r0] + movs r0, #0 + ldrsb r0, [r4, r0] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] +_08075AD0: + pop {r4, r5, r6, pc} + .align 2, 0 +_08075AD4: .4byte gLinkEntity +_08075AD8: .4byte gUnk_08126EEC + + thumb_func_start sub_08075ADC +sub_08075ADC: @ 0x08075ADC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r2, _08075B44 @ =gUnk_03003F80 + ldr r0, [r2, #0x2c] + cmp r0, #0 + bne _08075B08 + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075B08 + ldr r0, [r2, #0x30] + movs r1, #0x88 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08075B08 + bl sub_08079D48 + cmp r0, #0 + bne _08075B4C +_08075B08: + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + ldr r3, _08075B44 @ =gUnk_03003F80 + ldr r0, [r3, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x10 + orrs r0, r1 + str r0, [r3, #0x30] + movs r2, #8 + asrs r2, r5 + lsls r1, r2, #4 + orrs r1, r2 + ldrb r0, [r3, #4] + bics r0, r1 + strb r0, [r3, #4] + mvns r2, r2 + ldrb r1, [r3, #0xa] + adds r0, r2, #0 + ands r0, r1 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + ands r2, r0 + strb r2, [r3, #0xb] + ldr r0, _08075B48 @ =0x0000013D + bl sub_080A3268 + b _08075B52 + .align 2, 0 +_08075B44: .4byte gUnk_03003F80 +_08075B48: .4byte 0x0000013D +_08075B4C: + adds r0, r4, #0 + bl sub_08077E24 +_08075B52: + pop {r4, r5, pc} + + thumb_func_start sub_08075B54 +sub_08075B54: @ 0x08075B54 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + mov sb, r1 + ldr r5, _08075BB0 @ =gUnk_03003F80 + ldr r0, [r5, #0x30] + movs r1, #0x88 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08075B70 + b _08075C80 +_08075B70: + ldrb r0, [r6, #1] + bl sub_0805436C + adds r4, r0, #0 + adds r0, r6, #0 + bl sub_08077F10 + cmp r0, #0 + bne _08075B86 + cmp r4, #1 + bls _08075BB8 +_08075B86: + ldrb r0, [r5, #2] + cmp r0, #0 + bne _08075BB8 + movs r0, #0xf + adds r1, r4, #0 + bl sub_08054414 + ldr r0, [r5, #0x30] + ldr r1, _08075BB4 @ =0xFF7FFFFF + ands r0, r1 + str r0, [r5, #0x30] + adds r0, r6, #0 + mov r1, sb + bl sub_08077E78 + movs r0, #0x9f + lsls r0, r0, #1 + bl sub_080A3268 + b _08075C80 + .align 2, 0 +_08075BB0: .4byte gUnk_03003F80 +_08075BB4: .4byte 0xFF7FFFFF +_08075BB8: + ldr r0, _08075C88 @ =gUnk_03003F80 + mov r8, r0 + ldrb r0, [r0, #0xc] + cmp r0, #0x18 + beq _08075C80 + ldr r5, _08075C8C @ =gLinkEntity + ldrb r0, [r5, #0x1e] + cmp r0, #0x36 + bhi _08075C80 + ldrh r1, [r5, #0x12] + cmp r1, #6 + bne _08075C80 + ldrb r0, [r5, #0x14] + ands r1, r0 + ldr r0, _08075C90 @ =gUnk_08126EEC + adds r7, r1, r0 + mov r1, r8 + ldrb r0, [r1, #2] + cmp r0, #0 + bne _08075C80 + movs r2, #0x2e + ldrsh r0, [r5, r2] + movs r1, #0 + ldrsb r1, [r7, r1] + adds r0, r0, r1 + ldr r4, _08075C94 @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r2, #0x32 + ldrsh r1, [r5, r2] + movs r2, #1 + ldrsb r2, [r7, r2] + adds r1, r1, r2 + ldrh r2, [r4, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + movs r2, #0x40 + bl sub_080002F0 + cmp r0, #0 + beq _08075C80 + movs r0, #0xf + strb r0, [r6, #0xf] + ldrb r0, [r6, #4] + adds r0, #1 + strb r0, [r6, #4] + adds r1, r5, #0 + adds r1, #0x7a + movs r0, #2 + strh r0, [r1] + adds r0, r5, #0 + movs r1, #0x45 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + adds r2, r0, #0 + cmp r2, #0 + beq _08075C60 + adds r0, r5, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x60 + strh r1, [r0] + movs r0, #0 + ldrsb r0, [r7, r0] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r7, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] +_08075C60: + ldr r1, _08075C98 @ =0x0000060C + adds r0, r6, #0 + bl sub_08077DF4 + movs r1, #8 + mov r2, sb + asrs r1, r2 + mov r0, r8 + ldrb r2, [r0, #0xa] + adds r0, r1, #0 + orrs r0, r2 + mov r2, r8 + strb r0, [r2, #0xa] + ldrb r0, [r2, #0xb] + orrs r1, r0 + strb r1, [r2, #0xb] +_08075C80: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08075C88: .4byte gUnk_03003F80 +_08075C8C: .4byte gLinkEntity +_08075C90: .4byte gUnk_08126EEC +_08075C94: .4byte gUnk_03000BF0 +_08075C98: .4byte 0x0000060C + + thumb_func_start sub_08075C9C +sub_08075C9C: @ 0x08075C9C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08075CCA + ldr r0, _08075CF8 @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r2, #6 + ands r2, r1 + ldr r1, _08075CFC @ =gUnk_08126EEC + adds r2, r2, r1 + movs r1, #0 + ldrsb r1, [r2, r1] + ldrb r2, [r2, #1] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + bl sub_0807AB44 +_08075CCA: + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08075D04 + movs r0, #0 + strb r0, [r4, #0xf] + ldrb r0, [r4, #4] + subs r0, #1 + strb r0, [r4, #4] + ldr r2, _08075D00 @ =gUnk_03003F80 + movs r1, #8 + asrs r1, r5 + mvns r1, r1 + ldrb r3, [r2, #0xa] + adds r0, r1, #0 + ands r0, r3 + strb r0, [r2, #0xa] + ldrb r0, [r2, #0xb] + ands r1, r0 + strb r1, [r2, #0xb] + b _08075D0E + .align 2, 0 +_08075CF8: .4byte gLinkEntity +_08075CFC: .4byte gUnk_08126EEC +_08075D00: .4byte gUnk_03003F80 +_08075D04: + ldr r1, _08075D10 @ =gLinkEntity + adds r1, #0x7a + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] +_08075D0E: + pop {r4, r5, pc} + .align 2, 0 +_08075D10: .4byte gLinkEntity + + thumb_func_start sub_08075D14 +sub_08075D14: @ 0x08075D14 + push {lr} + ldr r3, _08075D28 @ =gUnk_0811BD78 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08075D28: .4byte gUnk_0811BD78 + + thumb_func_start sub_08075D2C +sub_08075D2C: @ 0x08075D2C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _08075D74 @ =gUnk_03003F80 + ldrb r1, [r5, #4] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08075D7C + ldrb r1, [r4, #1] + adds r0, r4, #0 + bl sub_08077C94 + cmp r0, #0 + bne _08075D7C + ldrb r1, [r4, #9] + movs r0, #0xf + orrs r0, r1 + strb r0, [r4, #9] + ldr r0, _08075D78 @ =gLinkEntity + bl sub_0806F948 + adds r0, r4, #0 + movs r1, #0xb + bl sub_08077C0C + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077D38 + ldrb r1, [r5, #4] + movs r0, #8 + orrs r0, r1 + strb r0, [r5, #4] + b _08075D84 + .align 2, 0 +_08075D74: .4byte gUnk_03003F80 +_08075D78: .4byte gLinkEntity +_08075D7C: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 +_08075D84: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08075D88 +sub_08075D88: @ 0x08075D88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r2, _08075DBC @ =gUnk_03003F80 + ldrb r1, [r2, #4] + movs r3, #0x80 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08075DD0 + ldrb r0, [r4, #1] + cmp r0, #0xc + bne _08075DC0 + ldrb r1, [r2, #0xa] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08075DC0 + ldrb r1, [r4, #0xe] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08075DC0 + bl sub_08078F60 + b _08075DD8 + .align 2, 0 +_08075DBC: .4byte gUnk_03003F80 +_08075DC0: + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08075DD8 +_08075DD0: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08075DD8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08075DDC +sub_08075DDC: @ 0x08075DDC + push {lr} + ldr r3, _08075DF0 @ =gUnk_0811BD80 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08075DF0: .4byte gUnk_0811BD80 + + thumb_func_start sub_08075DF4 +sub_08075DF4: @ 0x08075DF4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r6, _08075E2C @ =gUnk_03003F80 + ldrb r1, [r6, #4] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08075E34 + ldrb r1, [r4, #9] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #9] + ldr r0, _08075E30 @ =gLinkEntity + bl sub_0806F948 + adds r0, r4, #0 + bl sub_08077BB8 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077D38 + adds r1, r6, #0 + adds r1, #0x21 + movs r0, #1 + strb r0, [r1] + b _08075E3C + .align 2, 0 +_08075E2C: .4byte gUnk_03003F80 +_08075E30: .4byte gLinkEntity +_08075E34: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08075E3C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08075E40 +sub_08075E40: @ 0x08075E40 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + mov r8, r1 + ldr r0, _08075EA0 @ =gUnk_03003F80 + adds r1, r0, #0 + adds r1, #0x21 + ldrb r1, [r1] + adds r6, r0, #0 + cmp r1, #0 + beq _08075EA8 + ldrb r1, [r6, #4] + movs r5, #0x80 + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r7, r0, #0x18 + cmp r7, #0 + bne _08075EA8 + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08075EB8 + movs r0, #2 + strb r0, [r4, #4] + ldrb r1, [r4, #9] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #9] + ldr r0, _08075EA4 @ =gUnk_02002A40 + adds r0, #0xad + ldrb r0, [r0] + cmp r0, #0 + beq _08075EB8 + strb r7, [r4, #0xf] + movs r1, #8 + mov r0, r8 + asrs r1, r0 + ldrb r0, [r6, #0xa] + bics r0, r1 + strb r0, [r6, #0xa] + b _08075EB8 + .align 2, 0 +_08075EA0: .4byte gUnk_03003F80 +_08075EA4: .4byte gUnk_02002A40 +_08075EA8: + adds r1, r6, #0 + adds r1, #0x21 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + mov r1, r8 + bl sub_08077E78 +_08075EB8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08075EC0 +sub_08075EC0: @ 0x08075EC0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r0, _08075F04 @ =gUnk_02002A40 + adds r0, #0xad + ldrb r5, [r0] + adds r0, r4, #0 + bl sub_08077EFC + cmp r0, #0 + beq _08075F0C + cmp r5, #0 + beq _08075F0C + ldr r2, _08075F08 @ =gUnk_03003F80 + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08075EF0 + adds r0, r2, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + bne _08075F32 +_08075EF0: + adds r1, r2, #0 + adds r1, #0x21 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 + b _08075F32 + .align 2, 0 +_08075F04: .4byte gUnk_02002A40 +_08075F08: .4byte gUnk_03003F80 +_08075F0C: + ldr r2, _08075F34 @ =gUnk_03003F80 + movs r0, #8 + asrs r0, r6 + ldrb r1, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] + movs r1, #0x9f + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_08077DF4 + movs r1, #0xf + movs r0, #0xf + strb r0, [r4, #0xf] + ldrb r0, [r4, #9] + orrs r1, r0 + strb r1, [r4, #9] + movs r0, #3 + strb r0, [r4, #4] +_08075F32: + pop {r4, r5, r6, pc} + .align 2, 0 +_08075F34: .4byte gUnk_03003F80 + + thumb_func_start sub_08075F38 +sub_08075F38: @ 0x08075F38 + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + ldr r2, _08075F6C @ =gUnk_03003F80 + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08075F70 + adds r0, r2, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _08075F70 + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08075F80 + movs r0, #4 + strb r0, [r4, #4] + b _08075F80 + .align 2, 0 +_08075F6C: .4byte gUnk_03003F80 +_08075F70: + adds r1, r2, #0 + adds r1, #0x21 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_08077E78 +_08075F80: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08075F84 +sub_08075F84: @ 0x08075F84 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r2, _08075FB4 @ =gUnk_03003F80 + ldrb r1, [r2, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08075FC8 + adds r0, r2, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _08075FC8 + movs r0, #0x70 + bl sub_0807CA84 + cmp r0, #1 + bne _08075FB8 + adds r0, r4, #0 + movs r1, #5 + bl sub_08077E3C + b _08075FBE + .align 2, 0 +_08075FB4: .4byte gUnk_03003F80 +_08075FB8: + adds r0, r4, #0 + bl sub_08077E24 +_08075FBE: + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08075FD8 +_08075FC8: + ldr r0, _08075FDC @ =gUnk_03003F80 + adds r0, #0x21 + movs r1, #0 + strb r1, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08075FD8: + pop {r4, r5, pc} + .align 2, 0 +_08075FDC: .4byte gUnk_03003F80 + + thumb_func_start sub_08075FE0 +sub_08075FE0: @ 0x08075FE0 + push {lr} + ldr r3, _08075FF4 @ =gUnk_0811BD98 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08075FF4: .4byte gUnk_0811BD98 + + thumb_func_start sub_08075FF8 +sub_08075FF8: @ 0x08075FF8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + ldr r0, _08076018 @ =gUnk_03003F80 + ldrb r1, [r0, #2] + ldrb r0, [r0, #4] + orrs r0, r1 + cmp r0, #0 + bne _08076076 + movs r5, #0 + movs r0, #8 + movs r1, #2 + movs r2, #2 + bl sub_0805EB00 + b _08076026 + .align 2, 0 +_08076018: .4byte gUnk_03003F80 +_0807601C: + adds r5, #1 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805EB64 +_08076026: + adds r4, r0, #0 + cmp r4, #0 + bne _0807601C + ldrb r0, [r6, #1] + movs r1, #1 + cmp r0, #7 + bne _08076036 + movs r1, #3 +_08076036: + cmp r1, r5 + bls _08076076 + adds r0, r6, #0 + movs r1, #2 + bl sub_08077C3C + adds r4, r0, #0 + cmp r4, #0 + beq _08076076 + ldr r0, _08076080 @ =gLinkEntity + ldrb r2, [r0, #0x14] + movs r1, #6 + ands r1, r2 + ldr r2, _08076084 @ =gUnk_0811BDAC + adds r1, r1, r2 + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r1, r3] + lsls r3, r3, #0x10 + adds r1, r4, #0 + bl sub_0806FA48 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_080542F4 + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_080A3268 +_08076076: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08077E78 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08076080: .4byte gLinkEntity +_08076084: .4byte gUnk_0811BDAC + + thumb_func_start sub_08076088 +sub_08076088: @ 0x08076088 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r3, r1, #0 + adds r5, r2, #0 + cmp r3, #0 + beq _080760AA + ldrb r0, [r3, #0x16] + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _080760A4 + b _080761A0 +_080760A4: + movs r0, #2 + strb r0, [r3, #0xc] + strb r1, [r3, #0xd] +_080760AA: + str r3, [r4, #0x18] + ldr r0, _080760C4 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080760CC + ldr r1, _080760C8 @ =0x00000928 + adds r0, r4, #0 + bl sub_08077DF4 + b _080760D6 + .align 2, 0 +_080760C4: .4byte gUnk_03003F80 +_080760C8: .4byte 0x00000928 +_080760CC: + movs r1, #0xce + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_08077DF4 +_080760D6: + ldr r3, _08076130 @ =gUnk_03003F80 + movs r0, #0 + mov r8, r0 + movs r7, #3 + strb r7, [r3, #5] + adds r0, r3, #0 + adds r0, #0xa8 + movs r6, #4 + strb r6, [r0] + movs r0, #2 + strb r0, [r4, #4] + movs r0, #0xf + strb r0, [r4, #0xf] + ldr r2, _08076134 @ =gLinkEntity + movs r1, #0x79 + adds r1, r1, r2 + mov ip, r1 + ldrb r1, [r1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08076138 + mov r1, r8 + mov r0, ip + strb r1, [r0] + ldrb r0, [r2, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + strb r6, [r3, #5] + movs r1, #8 + asrs r1, r5 + mvns r1, r1 + ldrb r2, [r3, #0xb] + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0xb] + ldrb r0, [r3, #0xa] + ands r1, r0 + strb r1, [r3, #0xa] + strb r7, [r4, #4] + mov r0, r8 + strb r0, [r4, #0xf] + b _0807614A + .align 2, 0 +_08076130: .4byte gUnk_03003F80 +_08076134: .4byte gLinkEntity +_08076138: + movs r1, #8 + asrs r1, r5 + ldrb r2, [r3, #0xa] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + orrs r1, r0 + strb r1, [r3, #0xb] +_0807614A: + adds r0, r4, #0 + movs r1, #0x13 + bl sub_08077C3C + adds r3, r0, #0 + cmp r3, #0 + bne _08076162 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077F50 + b _080761A0 +_08076162: + ldr r1, _08076194 @ =gLinkEntity + str r3, [r1, #0x74] + movs r2, #0 + strb r2, [r1, #0xf] + ldr r0, [r4, #0x18] + str r0, [r3, #0x54] + ldrb r0, [r1, #0x16] + strb r0, [r3, #0x16] + str r4, [r3, #0x50] + str r3, [r4, #0x18] + ldrb r0, [r4, #3] + strb r0, [r3, #0xb] + ldrb r0, [r4, #7] + strb r0, [r3, #0xe] + ldrb r0, [r4, #8] + strb r0, [r3, #0xf] + ldr r0, [r4, #0x18] + ldrb r1, [r0, #0x16] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x10 + bne _08076198 + movs r0, #8 + strb r0, [r4, #7] + b _0807619A + .align 2, 0 +_08076194: .4byte gLinkEntity +_08076198: + strb r2, [r4, #7] +_0807619A: + movs r0, #0x7f + bl sub_080A3268 +_080761A0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080761A8 +sub_080761A8: @ 0x080761A8 + push {lr} + ldr r3, _080761BC @ =gUnk_0811BDB4 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_080761BC: .4byte gUnk_0811BDB4 + + thumb_func_start sub_080761C0 +sub_080761C0: @ 0x080761C0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _08076220 @ =gUnk_03003F80 + ldrb r0, [r5, #4] + cmp r0, #0 + bne _080762B8 + ldrb r0, [r5, #2] + cmp r0, #0 + beq _080761DE + ldr r0, [r5, #0x30] + ldr r1, _08076224 @ =0x00001201 + ands r0, r1 + cmp r0, #0 + beq _080762B8 +_080761DE: + ldr r1, _08076228 @ =gLinkEntity + ldrb r2, [r1, #0x14] + movs r0, #0x80 + orrs r0, r2 + strb r0, [r5, #1] + adds r1, #0x3d + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #8 + bgt _080762B8 + bl sub_080789A8 + adds r3, r0, #0 + cmp r3, #1 + beq _08076258 + cmp r3, #1 + blo _0807626E + cmp r3, #2 + bne _080762C0 + ldr r0, _0807622C @ =gUnk_03003BE0 + ldr r2, [r0, #8] + ldrb r1, [r2, #0x16] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08076230 + adds r0, r4, #0 + adds r1, r2, #0 + adds r2, r6, #0 + bl sub_08076088 + b _080762C0 + .align 2, 0 +_08076220: .4byte gUnk_03003F80 +_08076224: .4byte 0x00001201 +_08076228: .4byte gLinkEntity +_0807622C: .4byte gUnk_03003BE0 +_08076230: + str r2, [r4, #0x18] + strb r3, [r2, #0xc] + movs r1, #5 + strb r1, [r2, #0xd] + adds r0, r5, #0 + adds r0, #0xa8 + strb r1, [r0] + adds r0, r4, #0 + adds r1, r2, #0 + movs r2, #2 + adds r3, r6, #0 + bl sub_080762C4 + ldr r0, _08076254 @ =gUnk_0200AF00 + adds r0, #0x2e + movs r1, #8 + strb r1, [r0] + b _08076264 + .align 2, 0 +_08076254: .4byte gUnk_0200AF00 +_08076258: + adds r0, r4, #0 + movs r1, #0 + movs r2, #1 + adds r3, r6, #0 + bl sub_080762C4 +_08076264: + movs r0, #0x81 + lsls r0, r0, #1 + bl sub_080A3268 + b _080762C0 +_0807626E: + movs r0, #5 + strb r0, [r4, #4] + movs r0, #0xf + strb r0, [r4, #7] + movs r0, #6 + strb r0, [r4, #0xf] + movs r3, #8 + adds r1, r3, #0 + asrs r1, r6 + ldrb r2, [r5, #0xa] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r5, #0xa] + ldrb r0, [r5, #0xb] + orrs r1, r0 + strb r1, [r5, #0xb] + ldr r0, [r5, #0x30] + ands r0, r3 + cmp r0, #0 + bne _080762A2 + movs r1, #0xde + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_08077DF4 + b _080762AA +_080762A2: + ldr r1, _080762B4 @ =0x00000948 + adds r0, r4, #0 + bl sub_08077DF4 +_080762AA: + movs r0, #0x88 + bl sub_080A3268 + b _080762C0 + .align 2, 0 +_080762B4: .4byte 0x00000948 +_080762B8: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077F50 +_080762C0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080762C4 +sub_080762C4: @ 0x080762C4 + push {lr} + str r1, [r0, #0x18] + ldr r1, _080762D4 @ =gUnk_03003F80 + strb r2, [r1, #5] + adds r1, r3, #0 + bl sub_08077D38 + pop {pc} + .align 2, 0 +_080762D4: .4byte gUnk_03003F80 + + thumb_func_start sub_080762D8 +sub_080762D8: @ 0x080762D8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r4, _08076334 @ =gUnk_03003F80 + ldrb r0, [r4, #5] + movs r1, #0xcf + ands r1, r0 + strb r1, [r4, #5] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08077F64 + cmp r0, #0 + bne _080762F6 + b _08076486 +_080762F6: + ldr r0, _08076338 @ =gLinkEntity + adds r1, r0, #0 + adds r1, #0x3d + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r3, r0, #0 + cmp r1, #8 + bgt _0807636C + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _0807636C + ldr r2, [r5, #0x18] + cmp r2, #0 + beq _08076340 + ldrh r1, [r2, #0xc] + ldr r0, _0807633C @ =0x00000502 + cmp r1, r0 + bne _08076376 + adds r0, r4, #0 + adds r0, #0x90 + ldrh r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08076340 + movs r0, #6 + strb r0, [r2, #0xd] + b _08076376 + .align 2, 0 +_08076334: .4byte gUnk_03003F80 +_08076338: .4byte gLinkEntity +_0807633C: .4byte 0x00000502 +_08076340: + ldr r2, _08076364 @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0xa8 + movs r0, #5 + strb r0, [r1] + ldr r0, _08076368 @ =gUnk_0200AF00 + adds r0, #0x2e + movs r1, #8 + strb r1, [r0] + ldrb r0, [r2, #2] + cmp r0, #0 + beq _0807635A + b _0807647E +_0807635A: + ldrb r0, [r2, #5] + cmp r0, #1 + bne _08076394 + b _08076380 + .align 2, 0 +_08076364: .4byte gUnk_03003F80 +_08076368: .4byte gUnk_0200AF00 +_0807636C: + ldr r1, [r5, #0x18] + cmp r1, #0 + beq _08076376 + movs r0, #6 + strb r0, [r1, #0xd] +_08076376: + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08077F50 + b _08076486 +_08076380: + adds r0, r3, #0 + movs r1, #6 + adds r2, r5, #0 + bl sub_0800875A + cmp r0, #0 + beq _08076394 + adds r0, r5, #0 + movs r1, #0 + b _080763EC +_08076394: + ldr r1, _080763F4 @ =gUnk_0811BE38 + ldr r7, _080763F8 @ =gLinkEntity + ldrb r0, [r7, #0x14] + lsrs r0, r0, #1 + lsls r3, r0, #1 + adds r1, r3, r1 + ldr r4, _080763FC @ =gUnk_03003F80 + adds r2, r4, #0 + adds r2, #0x90 + ldrh r0, [r1] + ldrh r2, [r2] + ands r0, r2 + cmp r0, #0 + beq _08076400 + adds r0, r5, #0 + bl sub_08077E24 + ldr r0, [r4, #0x30] + movs r1, #8 + ands r0, r1 + movs r1, #0x94 + lsls r1, r1, #4 + cmp r0, #0 + bne _080763C8 + movs r1, #0xd0 + lsls r1, r1, #2 +_080763C8: + ldrh r0, [r5, #0x10] + cmp r1, r0 + beq _080763D4 + adds r0, r5, #0 + bl sub_08077DF4 +_080763D4: + ldrb r0, [r4, #5] + movs r1, #0x10 + orrs r1, r0 + strb r1, [r4, #5] + adds r2, r4, #0 + adds r2, #0xa8 + movs r0, #0x1a + strb r0, [r2] + cmp r1, #1 + beq _08076486 + ldr r1, [r5, #0x18] + adds r0, r5, #0 +_080763EC: + adds r2, r6, #0 + bl sub_08076088 + b _08076486 + .align 2, 0 +_080763F4: .4byte gUnk_0811BE38 +_080763F8: .4byte gLinkEntity +_080763FC: .4byte gUnk_03003F80 +_08076400: + ldr r0, _08076418 @ =gUnk_0811BE40 + adds r0, r3, r0 + ldrh r0, [r0] + ands r0, r2 + cmp r0, #0 + beq _08076460 + ldrb r0, [r7, #0xf] + cmp r0, #5 + bhi _0807641C + adds r0, #1 + strb r0, [r7, #0xf] + b _08076486 + .align 2, 0 +_08076418: .4byte gUnk_0811BE40 +_0807641C: + ldrb r0, [r5, #0xa] + adds r1, r4, #0 + adds r1, #0x35 + strb r0, [r1] + ldrb r0, [r4, #6] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #6] + ldrb r1, [r4, #5] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #5] + adds r1, r4, #0 + adds r1, #0xa8 + movs r0, #0x19 + strb r0, [r1] + ldr r0, [r4, #0x30] + movs r1, #8 + ands r0, r1 + ldr r1, _0807645C @ =0x0000093C + cmp r0, #0 + bne _0807644C + movs r1, #0xcf + lsls r1, r1, #2 +_0807644C: + ldrh r0, [r5, #0x10] + cmp r1, r0 + bne _08076476 + adds r0, r5, #0 + bl sub_08077E24 + b _08076486 + .align 2, 0 +_0807645C: .4byte 0x0000093C +_08076460: + strb r0, [r7, #0xf] + ldr r0, [r4, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _08076472 + movs r1, #0xd0 + lsls r1, r1, #2 + b _08076476 +_08076472: + movs r1, #0x94 + lsls r1, r1, #4 +_08076476: + adds r0, r5, #0 + bl sub_08077DF4 + b _08076486 +_0807647E: + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08077F50 +_08076486: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08076488 +sub_08076488: @ 0x08076488 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r4, #7] + adds r6, r0, #0 + cmp r6, #0 + bne _08076504 + adds r0, r4, #0 + bl sub_08077F64 + cmp r0, #0 + beq _08076508 + ldr r0, [r4, #0x18] + ldrb r1, [r0, #0x16] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x10 + bne _080764B8 + ldr r0, _080764F8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _08076510 +_080764B8: + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08076508 + ldr r2, _080764FC @ =gLinkEntity + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + ldr r2, _08076500 @ =gUnk_03003F80 + movs r0, #4 + strb r0, [r2, #5] + movs r1, #8 + asrs r1, r5 + mvns r1, r1 + ldrb r3, [r2, #0xb] + adds r0, r1, #0 + ands r0, r3 + strb r0, [r2, #0xb] + ldrb r0, [r2, #0xa] + ands r1, r0 + strb r1, [r2, #0xa] + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + strb r6, [r4, #0xf] + b _08076508 + .align 2, 0 +_080764F8: .4byte gUnk_030010A0 +_080764FC: .4byte gLinkEntity +_08076500: .4byte gUnk_03003F80 +_08076504: + subs r0, #1 + strb r0, [r4, #7] +_08076508: + ldr r0, _08076514 @ =gUnk_03003F80 + adds r0, #0xa8 + movs r1, #4 + strb r1, [r0] +_08076510: + pop {r4, r5, r6, pc} + .align 2, 0 +_08076514: .4byte gUnk_03003F80 + + thumb_func_start sub_08076518 +sub_08076518: @ 0x08076518 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + mov r8, r1 + bl sub_08077F64 + cmp r0, #0 + beq _080765D4 + ldr r5, _0807655C @ =gUnk_03003F80 + adds r1, r5, #0 + adds r1, #0xa8 + movs r0, #4 + strb r0, [r1] + ldrb r1, [r5, #2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080765D4 + ldrb r0, [r5, #0x1f] + cmp r0, #0 + bne _080765D4 + ldr r6, _08076560 @ =gLinkEntity + adds r0, r6, #0 + adds r0, #0x42 + ldrb r7, [r0] + cmp r7, #0 + beq _08076564 + adds r0, r4, #0 + mov r1, r8 + bl sub_08077F50 + b _080765D4 + .align 2, 0 +_0807655C: .4byte gUnk_03003F80 +_08076560: .4byte gLinkEntity +_08076564: + adds r0, r5, #0 + adds r0, #0x92 + ldrh r1, [r0] + ldr r0, _080765B0 @ =0x00008018 + ands r0, r1 + cmp r0, #0 + beq _080765D4 + adds r0, r6, #0 + bl sub_0806F948 + movs r0, #5 + strb r0, [r5, #5] + ldr r1, [r4, #0x18] + movs r0, #2 + strb r0, [r1, #0xd] + ldr r2, [r4, #0x18] + ldrb r1, [r6, #0x14] + movs r0, #0xe + ands r0, r1 + lsls r0, r0, #2 + strb r0, [r2, #0x15] + str r7, [r4, #0x18] + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + movs r0, #0xf + strb r0, [r4, #0xf] + ldr r0, [r5, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080765B4 + movs r1, #0x93 + lsls r1, r1, #4 + adds r0, r4, #0 + bl sub_08077DF4 + b _080765BE + .align 2, 0 +_080765B0: .4byte 0x00008018 +_080765B4: + movs r1, #0xd1 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_08077DF4 +_080765BE: + ldr r2, _080765DC @ =gUnk_03003F80 + movs r1, #8 + mov r0, r8 + asrs r1, r0 + ldrb r3, [r2, #0xa] + adds r0, r1, #0 + orrs r0, r3 + strb r0, [r2, #0xa] + ldrb r0, [r2, #0xb] + orrs r1, r0 + strb r1, [r2, #0xb] +_080765D4: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080765DC: .4byte gUnk_03003F80 + + thumb_func_start sub_080765E0 +sub_080765E0: @ 0x080765E0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077F64 + cmp r0, #0 + beq _08076608 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08076602 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077F50 + b _08076608 +_08076602: + adds r0, r4, #0 + bl sub_08077E24 +_08076608: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0807660C +sub_0807660C: @ 0x0807660C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077E24 + ldrb r0, [r4, #7] + subs r0, #1 + strb r0, [r4, #7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0807662C + ldr r0, _0807663C @ =gUnk_03003F80 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0807663A +_0807662C: + ldr r1, _0807663C @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r1, #1] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_0807663A: + pop {r4, r5, pc} + .align 2, 0 +_0807663C: .4byte gUnk_03003F80 + + thumb_func_start sub_08076640 +sub_08076640: @ 0x08076640 + push {r4, r5, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldrb r0, [r3, #4] + cmp r0, #0 + beq _08076654 + adds r0, r3, #0 + bl sub_08076758 + b _08076754 +_08076654: + ldr r0, _080766BC @ =gUnk_03003F80 + ldr r1, [r0, #0x2c] + adds r2, r0, #0 + cmp r1, #0 + bne _0807674C + ldrb r0, [r2, #1] + cmp r0, #0 + beq _080766C4 + ldrb r1, [r2, #4] + ldrb r0, [r2, #5] + orrs r0, r1 + cmp r0, #0 + bne _0807674C + ldrb r0, [r2, #0x12] + cmp r0, #0x12 + beq _08076678 + cmp r0, #1 + bne _08076686 +_08076678: + ldr r0, _080766C0 @ =gLinkEntity + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _08076686 + ldrb r0, [r2, #0x14] + cmp r0, #0 + beq _0807674C +_08076686: + ldrb r1, [r2, #2] + cmp r1, #0 + beq _08076694 + movs r0, #7 + ands r0, r1 + cmp r0, #3 + bne _08076710 +_08076694: + ldr r5, _080766C0 @ =gLinkEntity + ldr r0, [r5, #0x34] + cmp r0, #0 + blt _0807674C + movs r1, #0 + strb r1, [r2, #1] + ldrb r0, [r3, #4] + adds r0, #1 + strb r0, [r3, #4] + strb r1, [r2, #0xb] + movs r0, #1 + strb r0, [r2, #2] + movs r0, #0xff + strb r0, [r2, #0xe] + str r1, [r2, #0x2c] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r5, #0x20] + b _0807673C + .align 2, 0 +_080766BC: .4byte gUnk_03003F80 +_080766C0: .4byte gLinkEntity +_080766C4: + ldrb r0, [r2, #0x1b] + ldrb r1, [r2, #0xa] + orrs r0, r1 + ldrb r1, [r2, #4] + orrs r0, r1 + ldrb r1, [r2, #5] + orrs r0, r1 + ldrb r1, [r2, #0x1c] + orrs r0, r1 + adds r1, r2, #0 + adds r1, #0x3d + ldrb r1, [r1] + orrs r0, r1 + cmp r0, #0 + bne _0807674C + ldrb r1, [r2, #0x12] + adds r0, r1, #0 + subs r0, #0x12 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bls _080766F4 + cmp r1, #1 + bne _08076702 +_080766F4: + ldr r0, _0807671C @ =gLinkEntity + ldr r0, [r0, #0x34] + cmp r0, #0 + bne _08076702 + ldrb r0, [r2, #0x14] + cmp r0, #0 + beq _0807674C +_08076702: + ldrb r1, [r2, #2] + cmp r1, #0 + beq _08076720 + movs r0, #7 + ands r0, r1 + cmp r0, #3 + beq _08076720 +_08076710: + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_08076758 + b _08076754 + .align 2, 0 +_0807671C: .4byte gLinkEntity +_08076720: + ldr r1, _08076748 @ =gLinkEntity + ldr r0, [r1, #0x34] + cmp r0, #0 + blt _0807674C + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r1, #0x20] + movs r1, #0 + movs r0, #1 + strb r0, [r2, #2] + str r1, [r2, #0x2c] + ldrb r0, [r3, #4] + adds r0, #1 + strb r0, [r3, #4] +_0807673C: + bl sub_08077F84 + movs r0, #0x78 + bl sub_080A3268 + b _08076754 + .align 2, 0 +_08076748: .4byte gLinkEntity +_0807674C: + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_08077E78 +_08076754: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08076758 +sub_08076758: @ 0x08076758 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080767C0 @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r5, #0xe] + ldrb r2, [r5, #2] + movs r0, #0x28 + ands r0, r2 + cmp r0, #0 + bne _080767F8 + cmp r2, #0 + beq _080767F8 + movs r0, #7 + ands r0, r2 + cmp r0, #3 + beq _080767F8 + adds r0, r4, #0 + bl sub_08077EFC + cmp r0, #0 + beq _080767D8 + ldrb r0, [r4, #4] + cmp r0, #1 + bhi _080767C8 + ldr r2, _080767C4 @ =gLinkEntity + ldr r0, [r2, #0x20] + cmp r0, #0 + bgt _080767FE + ldrb r3, [r5, #2] + movs r0, #0x10 + ands r0, r3 + cmp r0, #0 + bne _080767FE + movs r0, #2 + strb r0, [r4, #4] + adds r1, r2, #0 + adds r1, #0x7a + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r2, #0x20] + movs r0, #0x10 + orrs r0, r3 + strb r0, [r5, #2] + movs r0, #0xa2 + lsls r0, r0, #2 + strh r0, [r5, #8] + movs r0, #0xb9 + lsls r0, r0, #1 + bl sub_080A3268 + b _080767FE + .align 2, 0 +_080767C0: .4byte gUnk_03003F80 +_080767C4: .4byte gLinkEntity +_080767C8: + ldr r1, _080767D4 @ =gLinkEntity + adds r1, #0x7a + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + b _080767FE + .align 2, 0 +_080767D4: .4byte gLinkEntity +_080767D8: + ldrb r0, [r4, #4] + cmp r0, #1 + bls _080767FE + ldr r1, _080767F4 @ =gLinkEntity + adds r1, #0x7a + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldrb r1, [r5, #2] + movs r0, #0xef + ands r0, r1 + strb r0, [r5, #2] + b _080767FE + .align 2, 0 +_080767F4: .4byte gLinkEntity +_080767F8: + adds r0, r4, #0 + bl sub_08077E78 +_080767FE: + pop {r4, r5, pc} + + thumb_func_start sub_08076800 +sub_08076800: @ 0x08076800 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + mov sb, r1 + ldr r4, _0807682C @ =gLinkEntity + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + cmp r0, #0 + beq _08076834 + ldr r1, _08076830 @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r1, #0x1e] + strb r0, [r1, #0xe] + adds r0, r6, #0 + mov r1, sb + bl sub_08077E78 + b _080768EC + .align 2, 0 +_0807682C: .4byte gLinkEntity +_08076830: .4byte gUnk_03003F80 +_08076834: + ldrb r0, [r6, #7] + subs r0, #1 + strb r0, [r6, #7] + movs r1, #7 + mov r8, r1 + ands r0, r1 + cmp r0, #0 + bne _0807684A + movs r0, #0x7d + bl sub_080A3268 +_0807684A: + ldr r2, _08076880 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080768DA + ldrb r1, [r6, #7] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + bne _080768DA + ldrb r0, [r2, #0x12] + cmp r0, #0x11 + bne _08076884 + adds r0, r4, #0 + adds r0, #0x63 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080768DA + adds r0, r4, #0 + movs r1, #0x52 + movs r2, #0 + bl CreateFX + b _080768DA + .align 2, 0 +_08076880: .4byte gUnk_03003F80 +_08076884: + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r5, r0, #0 + cmp r5, #0 + beq _080768DA + ldrh r0, [r5, #0x32] + adds r0, #2 + strh r0, [r5, #0x32] + ldrb r0, [r6, #4] + cmp r0, #2 + beq _080768DA + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #3 + ands r4, r0 + bl sub_08000E50 + movs r7, #1 + ands r0, r7 + cmp r0, #0 + beq _080768B8 + rsbs r4, r4, #0 +_080768B8: + ldrh r0, [r5, #0x32] + adds r0, r0, r4 + strh r0, [r5, #0x32] + bl sub_08000E50 + adds r4, r0, #0 + mov r0, r8 + ands r4, r0 + bl sub_08000E50 + ands r0, r7 + cmp r0, #0 + beq _080768D4 + rsbs r4, r4, #0 +_080768D4: + ldrh r0, [r5, #0x2e] + adds r0, r0, r4 + strh r0, [r5, #0x2e] +_080768DA: + ldr r0, _080768F4 @ =gUnk_0811BDCC + ldrb r1, [r6, #4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r2, [r1] + adds r0, r6, #0 + mov r1, sb + bl _call_via_r2 +_080768EC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080768F4: .4byte gUnk_0811BDCC + + thumb_func_start sub_080768F8 +sub_080768F8: @ 0x080768F8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r3, _08076934 @ =gUnk_03003F80 + ldrb r1, [r3, #0x1c] + ldrb r0, [r3, #4] + orrs r1, r0 + ldrb r0, [r3, #5] + orrs r1, r0 + ldrb r0, [r3, #2] + orrs r1, r0 + ldr r2, [r3, #0x30] + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r2 + orrs r1, r0 + cmp r1, #0 + bne _08076954 + movs r0, #1 + strb r0, [r3, #0x1e] + adds r0, r3, #0 + adds r0, #0x21 + strb r1, [r0] + movs r0, #0x80 + ands r2, r0 + cmp r2, #0 + bne _08076938 + movs r0, #0x10 + strb r0, [r4, #7] + b _0807693C + .align 2, 0 +_08076934: .4byte gUnk_03003F80 +_08076938: + ldr r0, _08076950 @ =0x00000C14 + strh r0, [r3, #8] +_0807693C: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077D38 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08076964 + b _08076962 + .align 2, 0 +_08076950: .4byte 0x00000C14 +_08076954: + movs r0, #0 + strb r0, [r3, #0x1e] + strb r0, [r3, #0xe] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08076962: + pop {r4, r5, pc} + + thumb_func_start sub_08076964 +sub_08076964: @ 0x08076964 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r6, r1, #0 + bl sub_08077EFC + cmp r0, #0 + bne _08076978 + b _08076A70 +_08076978: + ldr r0, _080769C4 @ =gLinkEntity + ldr r7, [r0, #0x34] + cmp r7, #0 + bne _08076A70 + ldr r5, _080769C8 @ =gUnk_03003F80 + ldrb r0, [r5, #0x1e] + cmp r0, #0 + beq _08076A70 + adds r0, r4, #0 + bl sub_08077E24 + ldr r0, [r5, #0x30] + movs r1, #0x80 + mov r8, r1 + ands r0, r1 + cmp r0, #0 + bne _080769A0 + adds r0, r4, #0 + bl sub_08077E24 +_080769A0: + ldrb r0, [r5, #0x1e] + adds r0, #1 + strb r0, [r5, #0x1e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x1e + bne _08076A7E + ldr r0, [r5, #0x30] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _080769CC + strb r7, [r5, #0x1e] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 + b _08076A7E + .align 2, 0 +_080769C4: .4byte gLinkEntity +_080769C8: .4byte gUnk_03003F80 +_080769CC: + movs r0, #0x40 + strb r0, [r5, #0x1e] + movs r1, #8 + asrs r1, r6 + ldrb r0, [r5, #0xa] + bics r0, r1 + strb r0, [r5, #0xa] + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + bl sub_0807A158 + cmp r0, #0 + beq _08076A46 + ldr r0, [r5, #0x30] + mov r1, r8 + ands r0, r1 + cmp r0, #0 + bne _08076A60 + adds r0, r5, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08076A46 + adds r0, r5, #0 + adds r0, #0xab + movs r1, #3 + strb r1, [r0] + movs r1, #0xa6 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_08077DF4 + adds r0, r4, #0 + movs r1, #0xc + bl sub_08077C3C + adds r5, r0, #0 + cmp r5, #0 + beq _08076A70 + ldr r6, _08076A34 @ =gUnk_02002A40 + adds r4, r6, #0 + adds r4, #0xb4 + ldrb r0, [r4] + bl sub_0805449C + cmp r0, #0 + beq _08076A38 + ldrb r1, [r4] + b _08076A3E + .align 2, 0 +_08076A34: .4byte gUnk_02002A40 +_08076A38: + adds r0, r6, #0 + adds r0, #0xb5 + ldrb r1, [r0] +_08076A3E: + adds r0, r5, #0 + adds r0, #0x68 + strb r1, [r0] + b _08076A7E +_08076A46: + ldr r0, _08076A5C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08076A60 + adds r1, #0x84 + adds r0, r4, #0 + bl sub_08077DF4 + b _08076A7E + .align 2, 0 +_08076A5C: .4byte gUnk_03003F80 +_08076A60: + ldr r1, _08076A6C @ =gUnk_03003F80 + movs r0, #0xc1 + lsls r0, r0, #4 + strh r0, [r1, #8] + b _08076A7E + .align 2, 0 +_08076A6C: .4byte gUnk_03003F80 +_08076A70: + ldr r1, _08076A84 @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r1, #0x1e] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 +_08076A7E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08076A84: .4byte gUnk_03003F80 + + thumb_func_start sub_08076A88 +sub_08076A88: @ 0x08076A88 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r7, r1, #0 + bl sub_08077EFC + cmp r0, #0 + beq _08076B64 + ldr r1, _08076AB4 @ =gUnk_03003F80 + ldrb r0, [r1, #0x1e] + adds r3, r1, #0 + cmp r0, #0 + beq _08076B64 + ldr r0, [r3, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08076ABC + ldr r1, _08076AB8 @ =gLinkEntity + movs r0, #0xc0 + lsls r0, r0, #2 + b _08076AC2 + .align 2, 0 +_08076AB4: .4byte gUnk_03003F80 +_08076AB8: .4byte gLinkEntity +_08076ABC: + ldr r1, _08076B00 @ =gLinkEntity + movs r0, #0xa0 + lsls r0, r0, #2 +_08076AC2: + strh r0, [r1, #0x24] + adds r5, r1, #0 + ldr r1, _08076B04 @ =gUnk_0800275C + ldrb r2, [r5, #0x14] + movs r6, #0xe + adds r0, r6, #0 + ands r0, r2 + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0] + ldrh r0, [r5, #0x2a] + ands r0, r1 + cmp r1, r0 + bne _08076B0E + ldrb r0, [r4, #8] + cmp r0, #0 + beq _08076B08 + movs r2, #0 + movs r0, #6 + strb r0, [r5, #0xc] + strb r2, [r5, #0xd] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + adds r0, r3, #0 + adds r0, #0x38 + strb r2, [r0] + movs r0, #0xff + strb r0, [r3, #0xd] + b _08076B72 + .align 2, 0 +_08076B00: .4byte gLinkEntity +_08076B04: .4byte gUnk_0800275C +_08076B08: + movs r0, #1 + strb r0, [r4, #8] + b _08076B72 +_08076B0E: + ldr r1, _08076B60 @ =gUnk_0811BE38 + movs r0, #0xfe + ands r0, r2 + adds r0, r0, r1 + adds r1, r3, #0 + adds r1, #0x90 + ldrh r2, [r0] + ldrh r0, [r1] + ands r0, r2 + cmp r0, #0 + bne _08076B64 + ldrb r0, [r4, #0xa] + adds r1, r6, #0 + ands r1, r0 + lsls r0, r1, #2 + strb r0, [r4, #0xb] + ldrb r2, [r3, #0xd] + cmp r2, #0xff + beq _08076B52 + cmp r2, r0 + beq _08076B52 + adds r0, r2, #0 + ldrb r1, [r4, #0xb] + subs r0, r0, r1 + movs r2, #0x1f + ands r0, r2 + cmp r0, #0xf + bgt _08076B4A + adds r0, r1, #2 + strb r0, [r4, #0xb] +_08076B4A: + ldrb r0, [r4, #0xb] + subs r0, #1 + ands r0, r2 + strb r0, [r4, #0xb] +_08076B52: + ldrb r0, [r4, #0xb] + strb r0, [r3, #0xd] + adds r0, r4, #0 + bl sub_08077E24 + b _08076B72 + .align 2, 0 +_08076B60: .4byte gUnk_0811BE38 +_08076B64: + ldr r1, _08076B74 @ =gUnk_03003F80 + movs r0, #0 + strb r0, [r1, #0x1e] + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08077E78 +_08076B72: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08076B74: .4byte gUnk_03003F80 + + thumb_func_start sub_08076B78 +sub_08076B78: @ 0x08076B78 + push {lr} + ldr r3, _08076B94 @ =gUnk_0811BDD8 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + ldr r1, _08076B98 @ =gLinkEntity + adds r1, #0x7a + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + pop {pc} + .align 2, 0 +_08076B94: .4byte gUnk_0811BDD8 +_08076B98: .4byte gLinkEntity + + thumb_func_start sub_08076B9C +sub_08076B9C: @ 0x08076B9C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r3, _08076BB4 @ =gUnk_03003F80 + ldrb r0, [r3, #0xc] + cmp r0, #0x18 + bne _08076BB8 + adds r0, r4, #0 + bl sub_08077E78 + b _08076C1C + .align 2, 0 +_08076BB4: .4byte gUnk_03003F80 +_08076BB8: + ldrb r1, [r4, #9] + movs r0, #0xf + orrs r0, r1 + strb r0, [r4, #9] + ldr r1, _08076C20 @ =gLinkEntity + movs r0, #4 + strb r0, [r1, #0x14] + ldrb r2, [r1, #0x18] + subs r0, #0x45 + ands r0, r2 + strb r0, [r1, #0x18] + ldrb r2, [r1, #0x10] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #0x10] + adds r1, #0x7a + movs r0, #2 + strh r0, [r1] + ldr r0, [r3, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x15 + orrs r0, r1 + str r0, [r3, #0x30] + adds r1, r3, #0 + adds r1, #0x27 + movs r0, #0xff + strb r0, [r1] + ldr r1, _08076C24 @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + movs r1, #8 + asrs r1, r5 + ldrb r2, [r3, #0xa] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + orrs r1, r0 + strb r1, [r3, #0xb] + bl sub_08078F60 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077D38 + ldr r0, _08076C28 @ =0x00000216 + bl sub_080A3268 + bl sub_0805E544 +_08076C1C: + pop {r4, r5, pc} + .align 2, 0 +_08076C20: .4byte gLinkEntity +_08076C24: .4byte gUnk_02034490 +_08076C28: .4byte 0x00000216 + + thumb_func_start sub_08076C2C +sub_08076C2C: @ 0x08076C2C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + bl sub_08077E24 + ldrb r1, [r5, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08076C6E + ldr r0, _08076C70 @ =gLinkEntity + ldrb r2, [r0, #0x10] + movs r4, #0 + movs r1, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r2, _08076C74 @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + ldr r3, _08076C78 @ =0xEFFFFFFF + ands r1, r3 + str r1, [r2, #0x30] + adds r2, #0x27 + strb r4, [r2] + ldr r1, _08076C7C @ =gUnk_02034490 + strb r4, [r1] + bl sub_0809D700 + bl sub_0805E564 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_08077E78 +_08076C6E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08076C70: .4byte gLinkEntity +_08076C74: .4byte gUnk_03003F80 +_08076C78: .4byte 0xEFFFFFFF +_08076C7C: .4byte gUnk_02034490 + + thumb_func_start sub_08076C80 +sub_08076C80: @ 0x08076C80 + push {lr} + ldr r3, _08076C94 @ =gUnk_0811BDE0 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08076C94: .4byte gUnk_0811BDE0 + + thumb_func_start sub_08076C98 +sub_08076C98: @ 0x08076C98 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #9] + movs r0, #0xf + orrs r0, r2 + strb r0, [r4, #9] + adds r0, r4, #0 + bl sub_08077D38 + ldr r0, _08076CB8 @ =gLinkEntity + bl sub_0806F948 + adds r0, r4, #0 + bl sub_08077BB8 + pop {r4, pc} + .align 2, 0 +_08076CB8: .4byte gLinkEntity + + thumb_func_start sub_08076CBC +sub_08076CBC: @ 0x08076CBC + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xe] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08076CD2 + adds r0, r4, #0 + bl sub_08077E78 + b _08076CE8 +_08076CD2: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _08076CE2 + adds r0, r4, #0 + movs r1, #0x12 + bl sub_08077C3C +_08076CE2: + adds r0, r4, #0 + bl sub_08077E24 +_08076CE8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08076CEC +sub_08076CEC: @ 0x08076CEC + push {lr} + ldr r3, _08076D00 @ =gUnk_0811BDE8 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08076D00: .4byte gUnk_0811BDE8 + + thumb_func_start sub_08076D04 +sub_08076D04: @ 0x08076D04 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r1, _08076D2C @ =gUnk_03003F80 + movs r0, #0x81 + strb r0, [r1, #3] + movs r0, #2 + strb r0, [r4, #9] + ldr r0, _08076D30 @ =gLinkEntity + bl sub_0806F948 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077D38 + adds r0, r4, #0 + bl sub_08077BB8 + pop {r4, r5, pc} + .align 2, 0 +_08076D2C: .4byte gUnk_03003F80 +_08076D30: .4byte gLinkEntity + + thumb_func_start sub_08076D34 +sub_08076D34: @ 0x08076D34 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + bl sub_08077EFC + adds r1, r0, #0 + cmp r1, #0 + beq _08076D80 + ldr r5, _08076D78 @ =gUnk_03003F80 + ldrb r0, [r5, #3] + movs r1, #1 + orrs r1, r0 + strb r1, [r5, #3] + adds r0, r4, #0 + bl sub_08077E24 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08076D8C + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + movs r0, #0 + strb r0, [r4, #0xf] + movs r1, #8 + asrs r1, r6 + ldrb r0, [r5, #0xa] + bics r0, r1 + strb r0, [r5, #0xa] + ldr r0, _08076D7C @ =0x0000015D + bl sub_080A3268 + b _08076D8C + .align 2, 0 +_08076D78: .4byte gUnk_03003F80 +_08076D7C: .4byte 0x0000015D +_08076D80: + ldr r0, _08076D90 @ =gUnk_03003F80 + strb r1, [r0, #3] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 +_08076D8C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08076D90: .4byte gUnk_03003F80 + + thumb_func_start sub_08076D94 +sub_08076D94: @ 0x08076D94 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077EFC + adds r1, r0, #0 + cmp r1, #0 + beq _08076DBC + ldr r2, _08076DB8 @ =gUnk_03003F80 + ldrb r1, [r2, #3] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #3] + adds r0, r4, #0 + bl sub_08077E24 + b _08076DC8 + .align 2, 0 +_08076DB8: .4byte gUnk_03003F80 +_08076DBC: + ldr r0, _08076DCC @ =gUnk_03003F80 + strb r1, [r0, #3] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08076DC8: + pop {r4, r5, pc} + .align 2, 0 +_08076DCC: .4byte gUnk_03003F80 + + thumb_func_start sub_08076DD0 +sub_08076DD0: @ 0x08076DD0 + push {lr} + ldr r2, _08076DEC @ =gUnk_03003F80 + adds r2, #0xa8 + movs r3, #3 + strb r3, [r2] + ldr r3, _08076DF0 @ =gUnk_0811BDF4 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08076DEC: .4byte gUnk_03003F80 +_08076DF0: .4byte gUnk_0811BDF4 + + thumb_func_start sub_08076DF4 +sub_08076DF4: @ 0x08076DF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r7, r1, #0 + ldr r0, _08076E48 @ =gLinkEntity + mov r8, r0 + bl sub_0807A894 + cmp r0, #0x29 + beq _08076E50 + ldr r6, _08076E4C @ =gUnk_03003F80 + ldrb r0, [r6, #0x12] + cmp r0, #0x12 + beq _08076E50 + cmp r0, #0x13 + beq _08076E50 + ldrb r5, [r6, #2] + cmp r5, #0 + bne _08076E50 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08077D38 + strb r5, [r4, #7] + mov r1, r8 + ldrb r0, [r1, #0x14] + strb r0, [r4, #0xa] + ldrb r1, [r4, #9] + movs r0, #0x80 + orrs r0, r1 + adds r0, #1 + strb r0, [r4, #9] + movs r0, #1 + strb r0, [r6, #0x1d] + mov r1, r8 + str r5, [r1, #0x74] + strb r0, [r6, #0x1c] + adds r0, r4, #0 + bl sub_08077BB8 + b _08076E58 + .align 2, 0 +_08076E48: .4byte gLinkEntity +_08076E4C: .4byte gUnk_03003F80 +_08076E50: + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_08077E78 +_08076E58: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08076E60 +sub_08076E60: @ 0x08076E60 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _08076EB4 @ =gUnk_03003F80 + ldrb r1, [r5, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08076E7A + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 +_08076E7A: + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08076EC0 + movs r0, #2 + strb r0, [r4, #4] + ldr r1, _08076EB8 @ =0x00000504 + adds r0, r4, #0 + bl sub_08077DF4 + movs r1, #8 + asrs r1, r6 + ldrb r0, [r5, #0xa] + bics r0, r1 + strb r0, [r5, #0xa] + movs r0, #0x10 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08077CB8 + adds r1, r0, #0 + cmp r1, #0 + beq _08076EC6 + ldr r0, _08076EBC @ =gLinkEntity + str r0, [r1, #0x50] + b _08076EC6 + .align 2, 0 +_08076EB4: .4byte gUnk_03003F80 +_08076EB8: .4byte 0x00000504 +_08076EBC: .4byte gLinkEntity +_08076EC0: + adds r0, r4, #0 + bl sub_08077E24 +_08076EC6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08076EC8 +sub_08076EC8: @ 0x08076EC8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r5, _08076EE4 @ =gUnk_03003F80 + ldrb r1, [r5, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08076EE8 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 + b _08076F60 + .align 2, 0 +_08076EE4: .4byte gUnk_03003F80 +_08076EE8: + adds r0, r4, #0 + bl sub_08077EFC + cmp r0, #0 + beq _08076F50 + ldrb r0, [r4, #7] + cmp r0, #0xef + bls _08076EFC + movs r0, #3 + b _08076F0E +_08076EFC: + adds r0, #1 + strb r0, [r4, #7] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x77 + bls _08076F0C + movs r0, #2 + b _08076F0E +_08076F0C: + movs r0, #1 +_08076F0E: + strb r0, [r5, #0x1d] + ldr r0, _08076F1C @ =gLinkEntity + ldrb r0, [r0, #0xd] + cmp r0, #0x1b + bne _08076F24 + ldr r1, _08076F20 @ =0x00000524 + b _08076F36 + .align 2, 0 +_08076F1C: .4byte gLinkEntity +_08076F20: .4byte 0x00000524 +_08076F24: + ldr r0, _08076F44 @ =gUnk_03003F80 + ldrb r1, [r0, #0xd] + movs r0, #0x80 + ands r0, r1 + movs r1, #0xa3 + lsls r1, r1, #3 + cmp r0, #0 + beq _08076F36 + subs r1, #0x14 +_08076F36: + ldrh r0, [r4, #0x10] + cmp r1, r0 + beq _08076F48 + adds r0, r4, #0 + bl sub_08077DF4 + b _08076F60 + .align 2, 0 +_08076F44: .4byte gUnk_03003F80 +_08076F48: + adds r0, r4, #0 + bl sub_08077E24 + b _08076F60 +_08076F50: + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + movs r0, #8 + asrs r0, r6 + ldrb r1, [r5, #0xa] + orrs r0, r1 + strb r0, [r5, #0xa] +_08076F60: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08076F64 +sub_08076F64: @ 0x08076F64 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r1, _08076F84 @ =gUnk_03003F80 + ldrb r0, [r1, #0x1c] + movs r2, #0xf + ands r2, r0 + adds r3, r1, #0 + cmp r2, #7 + bls _08076F7A + b _080770EC +_08076F7A: + lsls r0, r2, #2 + ldr r1, _08076F88 @ =_08076F8C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08076F84: .4byte gUnk_03003F80 +_08076F88: .4byte _08076F8C +_08076F8C: @ jump table + .4byte _08077100 @ case 0 + .4byte _080770EC @ case 1 + .4byte _080770EC @ case 2 + .4byte _0807704C @ case 3 + .4byte _08077052 @ case 4 + .4byte _08076FAC @ case 5 + .4byte _080770B8 @ case 6 + .4byte _080770D0 @ case 7 +_08076FAC: + ldrb r1, [r4, #0xe] + movs r5, #0x80 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0807700E + ldrb r0, [r4, #8] + cmp r0, #0 + beq _08077004 + movs r0, #0 + strb r0, [r4, #8] + strb r0, [r4, #7] + movs r1, #1 + strb r1, [r3, #0x1d] + ldr r5, _08076FFC @ =gLinkEntity + str r0, [r5, #0x74] + strb r1, [r3, #0x1c] + movs r1, #8 + asrs r1, r6 + ldrb r0, [r3, #0xa] + bics r0, r1 + strb r0, [r3, #0xa] + movs r0, #2 + strb r0, [r4, #4] + ldr r1, _08077000 @ =0x00000504 + adds r0, r4, #0 + bl sub_08077DF4 + movs r0, #0x10 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_08077CB8 + cmp r0, #0 + bne _08076FF6 + b _08077110 +_08076FF6: + str r5, [r0, #0x50] + b _08077110 + .align 2, 0 +_08076FFC: .4byte gLinkEntity +_08077000: .4byte 0x00000504 +_08077004: + movs r0, #6 + strb r0, [r3, #0x1c] + movs r1, #0xa2 + lsls r1, r1, #3 + b _080770F2 +_0807700E: + adds r0, r4, #0 + bl sub_08077EFC + cmp r0, #0 + beq _0807701C + movs r0, #1 + strb r0, [r4, #8] +_0807701C: + adds r0, r4, #0 + bl sub_08077E24 + ldr r0, _08077044 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _08077110 + ldr r0, _08077048 @ =gLinkEntity + ldrb r1, [r0, #0x14] + lsls r1, r1, #2 + movs r2, #0x10 + eors r1, r2 + strb r1, [r0, #0x15] + strh r5, [r0, #0x24] + bl sub_08079E08 + b _08077110 + .align 2, 0 +_08077044: .4byte gUnk_03003F80 +_08077048: .4byte gLinkEntity +_0807704C: + ldr r1, _080770B0 @ =gUnk_03003F80 + movs r0, #4 + strb r0, [r1, #0x1c] +_08077052: + adds r0, r4, #0 + bl sub_08077EFC + cmp r0, #0 + beq _08077060 + movs r0, #1 + strb r0, [r4, #8] +_08077060: + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0807708C + ldr r1, _080770B0 @ =gUnk_03003F80 + movs r2, #0 + movs r0, #5 + strb r0, [r1, #0x1c] + ldr r0, _080770B4 @ =gLinkEntity + str r2, [r0, #0x70] + ldrb r0, [r1, #0x1d] + cmp r0, #0 + beq _0807708C + movs r0, #0x11 + movs r1, #0 + movs r3, #0 + bl sub_08077CB8 +_0807708C: + ldr r0, _080770B0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _08077110 + ldr r2, _080770B4 @ =gLinkEntity + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + strb r0, [r2, #0x15] + movs r0, #0x80 + strh r0, [r2, #0x24] + bl sub_08079E08 + b _08077110 + .align 2, 0 +_080770B0: .4byte gUnk_03003F80 +_080770B4: .4byte gLinkEntity +_080770B8: + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08077110 + ldr r3, _080770CC @ =gUnk_03003F80 + b _08077100 + .align 2, 0 +_080770CC: .4byte gUnk_03003F80 +_080770D0: + ldr r1, _080770E4 @ =0x00000514 + adds r0, r4, #0 + bl sub_08077DF4 + ldr r1, _080770E8 @ =gUnk_03003F80 + movs r2, #0 + movs r0, #3 + strb r0, [r1, #0x1c] + strb r2, [r1, #0x1d] + b _08077110 + .align 2, 0 +_080770E4: .4byte 0x00000514 +_080770E8: .4byte gUnk_03003F80 +_080770EC: + movs r0, #3 + strb r0, [r3, #0x1c] + ldr r1, _080770FC @ =0x00000514 +_080770F2: + adds r0, r4, #0 + bl sub_08077DF4 + b _08077110 + .align 2, 0 +_080770FC: .4byte 0x00000514 +_08077100: + movs r1, #0 + strb r1, [r3, #0x1c] + ldr r0, _08077114 @ =gLinkEntity + str r1, [r0, #0x70] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 +_08077110: + pop {r4, r5, r6, pc} + .align 2, 0 +_08077114: .4byte gLinkEntity + + thumb_func_start sub_08077118 +sub_08077118: @ 0x08077118 + push {lr} + ldr r3, _0807712C @ =gUnk_0811BE04 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_0807712C: .4byte gUnk_0811BE04 + + thumb_func_start sub_08077130 +sub_08077130: @ 0x08077130 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _0807718C @ =gUnk_03003F80 + ldrb r0, [r5, #2] + cmp r0, #0 + bne _080771B6 + adds r0, r4, #0 + bl sub_08077D38 + adds r0, r5, #0 + adds r0, #0x3d + movs r6, #1 + strb r6, [r0] + ldrb r1, [r4, #9] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #9] + bl sub_080774A0 + adds r5, r0, #0 + cmp r5, #0 + beq _080771A8 + ldrb r0, [r4, #7] + cmp r0, #0 + bne _080771C4 + ldr r1, _08077190 @ =0x0000050C + adds r0, r4, #0 + bl sub_08077DF4 + movs r0, #2 + strb r0, [r4, #4] + cmp r5, #0x56 + bne _080771C4 + ldr r2, _08077194 @ =gLinkEntity + ldrb r1, [r2, #0x14] + ands r0, r1 + cmp r0, #0 + beq _08077198 + ldrh r0, [r2, #0x32] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #6 + orrs r1, r0 + strh r1, [r2, #0x32] + b _080771C4 + .align 2, 0 +_0807718C: .4byte gUnk_03003F80 +_08077190: .4byte 0x0000050C +_08077194: .4byte gLinkEntity +_08077198: + ldrh r0, [r2, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strh r1, [r2, #0x2e] + b _080771C4 +_080771A8: + movs r1, #0xa1 + lsls r1, r1, #3 + adds r0, r4, #0 + bl sub_08077DF4 + strb r6, [r4, #4] + b _080771C4 +_080771B6: + adds r0, r4, #0 + bl sub_08077E78 + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #0 + strb r0, [r1] +_080771C4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080771C8 +sub_080771C8: @ 0x080771C8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080771F4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 + ldr r0, _080771F0 @ =gUnk_03003F80 + adds r0, #0x3d + movs r1, #0 + strb r1, [r0] + b _080772A4 + .align 2, 0 +_080771F0: .4byte gUnk_03003F80 +_080771F4: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0807720E + ldrb r0, [r4, #8] + cmp r0, #0xff + bne _0807720E + ldr r0, _08077240 @ =gLinkEntity + ldrb r2, [r4, #0xe] + movs r1, #0x1e + movs r3, #1 + bl sub_080A2988 +_0807720E: + ldrb r1, [r4, #0xe] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080772A4 + ldr r5, _08077240 @ =gLinkEntity + adds r0, r5, #0 + movs r1, #0xd + adds r2, r4, #0 + bl sub_0800875A + cmp r0, #0 + bne _08077248 + movs r1, #0xa4 + lsls r1, r1, #3 + adds r0, r4, #0 + bl sub_08077DF4 + movs r0, #3 + strb r0, [r4, #4] + ldr r0, _08077244 @ =0x00000107 + bl sub_080A3268 + b _080772A4 + .align 2, 0 +_08077240: .4byte gLinkEntity +_08077244: .4byte 0x00000107 +_08077248: + ldrb r0, [r4, #8] + cmp r0, #0xff + beq _0807728C + ldrb r3, [r4, #3] + adds r0, r5, #0 + movs r1, #0x1f + movs r2, #0 + bl sub_080A2988 + adds r3, r0, #0 + cmp r3, #0 + beq _0807729C + ldrb r0, [r4, #7] + movs r2, #0 + strb r0, [r3, #0xe] + ldrb r0, [r4, #8] + strb r0, [r3, #0xf] + ldrb r1, [r5, #0x14] + movs r0, #6 + ands r0, r1 + strb r0, [r3, #0x14] + adds r0, r5, #0 + adds r0, #0x5a + strb r2, [r0] + ldr r1, _08077288 @ =gUnk_0811BE14 + ldrb r0, [r4, #8] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x59 + strb r1, [r0] + b _0807729C + .align 2, 0 +_08077288: .4byte gUnk_0811BE14 +_0807728C: + ldrb r0, [r4, #3] + cmp r0, #0xf + bne _0807729C + ldrb r0, [r4, #7] + cmp r0, #0x17 + bne _0807729C + movs r0, #0 + strb r0, [r4, #8] +_0807729C: + movs r0, #0x84 + lsls r0, r0, #1 + bl sub_080A3268 +_080772A4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080772A8 +sub_080772A8: @ 0x080772A8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldrb r1, [r4, #0xe] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080772C6 + adds r0, r4, #0 + bl sub_08077F10 + cmp r0, #0 + beq _080772C6 + movs r0, #1 + strb r0, [r4, #7] +_080772C6: + movs r0, #0x71 + bl sub_0807CA84 + cmp r0, #1 + bne _08077318 + ldrb r1, [r4, #0xe] + movs r5, #7 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #3 + beq _08077300 + adds r0, r4, #0 + movs r1, #2 + bl sub_08077E3C + ldr r3, _080772F8 @ =gLinkEntity + ldr r2, _080772FC @ =gUnk_0811BE16 + ldrb r1, [r4, #0xe] + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + lsls r0, r0, #1 + b _0807732E + .align 2, 0 +_080772F8: .4byte gLinkEntity +_080772FC: .4byte gUnk_0811BE16 +_08077300: + adds r0, r4, #0 + bl sub_08077E24 + ldr r3, _08077310 @ =gLinkEntity + ldr r2, _08077314 @ =gUnk_0811BE16 + ldrb r1, [r4, #0xe] + adds r0, r5, #0 + b _08077326 + .align 2, 0 +_08077310: .4byte gLinkEntity +_08077314: .4byte gUnk_0811BE16 +_08077318: + adds r0, r4, #0 + bl sub_08077E24 + ldr r3, _0807736C @ =gLinkEntity + ldr r2, _08077370 @ =gUnk_0811BE16 + ldrb r1, [r4, #0xe] + movs r0, #7 +_08077326: + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] +_0807732E: + strh r0, [r3, #0x24] + ldr r5, _0807736C @ =gLinkEntity + ldrb r0, [r5, #0x14] + lsls r0, r0, #2 + strb r0, [r5, #0x15] + movs r1, #0x24 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _08077344 + bl sub_08079E08 +_08077344: + ldrb r1, [r4, #0xe] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0807738C + ldrb r0, [r4, #7] + cmp r0, #0 + beq _08077374 + adds r0, r5, #0 + adds r0, #0x59 + movs r1, #1 + strb r1, [r0] + bl sub_080774A0 + cmp r0, #0 + beq _08077374 + movs r0, #0 + strb r0, [r4, #7] + b _0807743E + .align 2, 0 +_0807736C: .4byte gLinkEntity +_08077370: .4byte gUnk_0811BE16 +_08077374: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077E78 + ldr r0, _08077388 @ =gUnk_03003F80 + adds r0, #0x3d + movs r1, #0 + strb r1, [r0] + b _0807743E + .align 2, 0 +_08077388: .4byte gUnk_03003F80 +_0807738C: + movs r0, #0x60 + ands r0, r1 + cmp r0, #0 + beq _0807743E + adds r0, r5, #0 + adds r0, #0x59 + movs r6, #1 + strb r6, [r0] + adds r0, r5, #0 + bl sub_0807B5B0 + cmp r0, #0 + beq _080773BC + movs r0, #0x84 + lsls r0, r0, #1 + bl sub_080A3268 + ldrb r2, [r4, #0xe] + adds r0, r5, #0 + movs r1, #0x1e + movs r3, #0 + bl sub_080A2988 + b _0807743E +_080773BC: + ldr r1, _08077440 @ =0x0000051C + adds r0, r4, #0 + bl sub_08077DF4 + adds r0, r5, #0 + movs r1, #0x1d + movs r2, #0 + bl CreateFX + adds r3, r0, #0 + cmp r3, #0 + beq _080773F6 + ldrb r0, [r4, #0xa] + strb r0, [r3, #0x14] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080773F6: + adds r0, r5, #0 + movs r1, #0x1d + movs r2, #0 + bl CreateFX + adds r3, r0, #0 + cmp r3, #0 + beq _08077432 + ldrb r0, [r4, #0xa] + strb r0, [r3, #0x14] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + movs r0, #7 + ands r1, r0 + mov r0, ip + ldrb r2, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + strb r6, [r3, #0xf] +_08077432: + movs r0, #3 + strb r0, [r4, #4] + strb r6, [r4, #5] + ldr r0, _08077444 @ =0x00000119 + bl sub_080A3268 +_0807743E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08077440: .4byte 0x0000051C +_08077444: .4byte 0x00000119 + + thumb_func_start sub_08077448 +sub_08077448: @ 0x08077448 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r2, _08077498 @ =gLinkEntity + ldrb r0, [r2, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + strb r0, [r2, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #0x24] + ldrb r1, [r4, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08077474 + ldrb r0, [r4, #5] + cmp r0, #0 + beq _08077474 + bl sub_08079E08 +_08077474: + adds r0, r4, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08077494 + ldr r0, _0807749C @ =gUnk_03003F80 + adds r0, #0x3d + movs r1, #0 + strb r1, [r0] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08077494: + pop {r4, r5, pc} + .align 2, 0 +_08077498: .4byte gLinkEntity +_0807749C: .4byte gUnk_03003F80 + + thumb_func_start sub_080774A0 +sub_080774A0: @ 0x080774A0 + push {r4, r5, r6, r7, lr} + ldr r3, _080774FC @ =gLinkEntity + movs r0, #0x2e + ldrsh r2, [r3, r0] + ldr r5, _08077500 @ =gUnk_0811BE1E + ldrb r0, [r3, #0x14] + movs r1, #6 + ands r1, r0 + adds r0, r1, r5 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r2, r2, r0 + ldr r4, _08077504 @ =gUnk_03000BF0 + ldrh r0, [r4, #6] + subs r2, r2, r0 + asrs r6, r2, #4 + movs r2, #0x3f + ands r6, r2 + movs r7, #0x32 + ldrsh r0, [r3, r7] + adds r1, #1 + adds r1, r1, r5 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + ldrh r1, [r4, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r6, r0 + adds r4, r3, #0 + adds r4, #0x38 + ldrb r1, [r4] + adds r0, r6, #0 + bl sub_080002E0 + cmp r0, #0x16 + bhi _080774F6 + cmp r0, #0xe + bhi _08077508 +_080774F6: + movs r0, #0 + b _0807751A + .align 2, 0 +_080774FC: .4byte gLinkEntity +_08077500: .4byte gUnk_0811BE1E +_08077504: .4byte gUnk_03000BF0 +_08077508: + adds r0, r6, #0 + ldrb r1, [r4] + bl sub_080002C8 + cmp r0, #0x56 + bne _08077518 + movs r0, #0x56 + b _0807751A +_08077518: + movs r0, #1 +_0807751A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807751C +sub_0807751C: @ 0x0807751C + push {lr} + ldr r3, _08077530 @ =gUnk_0811BE28 + ldrb r2, [r0, #4] + lsls r2, r2, #2 + adds r2, r2, r3 + ldr r2, [r2] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_08077530: .4byte gUnk_0811BE28 + + thumb_func_start sub_08077534 +sub_08077534: @ 0x08077534 + push {r4, lr} + adds r4, r0, #0 + bl sub_08077D38 + ldr r0, _08077570 @ =gLinkEntity + bl sub_0806F948 + adds r0, r4, #0 + bl sub_08077BB8 + ldrb r1, [r4, #9] + movs r0, #0xf + orrs r0, r1 + strb r0, [r4, #9] + ldrb r1, [r4, #1] + ldr r0, _08077574 @ =gUnk_02002A40 + adds r0, r0, r1 + adds r0, #0x9a + ldrb r0, [r0] + strb r0, [r4, #7] + ldrb r0, [r4, #7] + subs r0, #0x20 + cmp r0, #0x11 + bhi _080775F8 + lsls r0, r0, #2 + ldr r1, _08077578 @ =_0807757C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08077570: .4byte gLinkEntity +_08077574: .4byte gUnk_02002A40 +_08077578: .4byte _0807757C +_0807757C: @ jump table + .4byte _080775C4 @ case 0 + .4byte _080775D4 @ case 1 + .4byte _080775D4 @ case 2 + .4byte _080775D4 @ case 3 + .4byte _080775D4 @ case 4 + .4byte _080775D4 @ case 5 + .4byte _080775F8 @ case 6 + .4byte _080775F8 @ case 7 + .4byte _080775F8 @ case 8 + .4byte _080775D4 @ case 9 + .4byte _080775D4 @ case 10 + .4byte _080775D4 @ case 11 + .4byte _080775D4 @ case 12 + .4byte _080775D4 @ case 13 + .4byte _080775D4 @ case 14 + .4byte _080775F8 @ case 15 + .4byte _080775F8 @ case 16 + .4byte _080775F8 @ case 17 +_080775C4: + ldr r1, _080775D0 @ =0x00000614 + adds r0, r4, #0 + bl sub_08077DF4 + b _08077610 + .align 2, 0 +_080775D0: .4byte 0x00000614 +_080775D4: + movs r0, #3 + strb r0, [r4, #4] + ldr r1, _080775F0 @ =gLinkEntity + movs r0, #4 + strb r0, [r1, #0x14] + ldrb r2, [r1, #0x18] + subs r0, #0x45 + ands r0, r2 + strb r0, [r1, #0x18] + ldr r1, _080775F4 @ =0x000002DF + adds r0, r4, #0 + bl sub_08077DF4 + b _08077606 + .align 2, 0 +_080775F0: .4byte gLinkEntity +_080775F4: .4byte 0x000002DF +_080775F8: + movs r0, #3 + strb r0, [r4, #4] + movs r1, #0xc2 + lsls r1, r1, #3 + adds r0, r4, #0 + bl sub_08077DF4 +_08077606: + ldr r2, _08077614 @ =gLinkEntity + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] +_08077610: + pop {r4, pc} + .align 2, 0 +_08077614: .4byte gLinkEntity + + thumb_func_start sub_08077618 +sub_08077618: @ 0x08077618 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08077638 + movs r1, #0xc3 + lsls r1, r1, #3 + adds r0, r4, #0 + bl sub_08077DF4 + ldrb r0, [r4, #4] + adds r0, #1 + strb r0, [r4, #4] + b _0807763E +_08077638: + adds r0, r4, #0 + bl sub_08077E24 +_0807763E: + pop {r4, pc} + + thumb_func_start sub_08077640 +sub_08077640: @ 0x08077640 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08077666 + ldr r2, _08077668 @ =gLinkEntity + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08077666: + pop {r4, r5, pc} + .align 2, 0 +_08077668: .4byte gLinkEntity + + thumb_func_start sub_0807766C +sub_0807766C: @ 0x0807766C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08077E24 + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08077692 + ldr r2, _08077694 @ =gLinkEntity + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 +_08077692: + pop {r4, r5, pc} + .align 2, 0 +_08077694: .4byte gLinkEntity + + thumb_func_start sub_08077698 +sub_08077698: @ 0x08077698 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _0807771C @ =gUnk_03003F80 + ldrb r1, [r2, #3] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2, #3] + ldrb r1, [r2, #4] + movs r0, #0xf + ands r0, r1 + strb r0, [r2, #4] + ldrb r0, [r2, #7] + ldrb r3, [r2, #2] + orrs r0, r3 + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08077700 + movs r0, #0x40 + ands r0, r3 + cmp r0, #0 + bne _08077700 + adds r0, r2, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _08077700 + adds r0, r4, #0 + bl sub_08077758 + cmp r0, #0 + beq _08077700 + bl sub_080777A0 + cmp r0, #0 + bne _08077700 + ldr r4, _08077720 @ =gUnk_02002A40 + adds r0, r4, #0 + adds r0, #0xb4 + ldrb r0, [r0] + movs r1, #1 + movs r2, #0 + bl sub_08077880 + adds r4, #0xb5 + ldrb r0, [r4] + movs r1, #2 + movs r2, #0 + bl sub_08077880 + bl sub_080778CC +_08077700: + movs r5, #0 + ldr r4, _08077724 @ =gUnk_03000B80 +_08077704: + ldrb r0, [r4, #9] + cmp r0, #0 + beq _08077712 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080752E8 +_08077712: + adds r4, #0x1c + adds r5, #1 + cmp r5, #3 + bls _08077704 + pop {r4, r5, pc} + .align 2, 0 +_0807771C: .4byte gUnk_03003F80 +_08077720: .4byte gUnk_02002A40 +_08077724: .4byte gUnk_03000B80 + + thumb_func_start sub_08077728 +sub_08077728: @ 0x08077728 + push {lr} + cmp r0, #0 + bne _08077744 + ldr r0, _08077740 @ =gUnk_02002A40 + adds r0, #0xb4 + ldrb r0, [r0] + movs r1, #1 + movs r2, #1 + bl sub_08077880 + b _08077752 + .align 2, 0 +_08077740: .4byte gUnk_02002A40 +_08077744: + ldr r0, _08077754 @ =gUnk_02002A40 + adds r0, #0xb5 + ldrb r0, [r0] + movs r1, #2 + movs r2, #1 + bl sub_08077880 +_08077752: + pop {pc} + .align 2, 0 +_08077754: .4byte gUnk_02002A40 + + thumb_func_start sub_08077758 +sub_08077758: @ 0x08077758 + push {lr} + adds r3, r0, #0 + ldr r2, _08077794 @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0807779C + movs r0, #0xd5 + lsls r0, r0, #4 + ands r1, r0 + cmp r1, #0 + bne _08077798 + ldrb r0, [r2, #0x1e] + ldrb r1, [r2, #0x1a] + orrs r1, r0 + adds r0, r3, #0 + adds r0, #0x7a + ldrh r0, [r0] + orrs r1, r0 + cmp r1, #0 + bne _0807779C + adds r0, r3, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + bne _0807779C + movs r0, #1 + b _0807779E + .align 2, 0 +_08077794: .4byte gUnk_03003F80 +_08077798: + bl sub_0807A108 +_0807779C: + movs r0, #0 +_0807779E: + pop {pc} + + thumb_func_start sub_080777A0 +sub_080777A0: @ 0x080777A0 + push {r4, lr} + ldr r3, _080777D0 @ =gUnk_03003F80 + adds r0, r3, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r4, #0x80 + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _08077870 + ldr r1, [r3, #0x30] + movs r0, #0x80 + lsls r0, r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _080777D4 + adds r1, r3, #0 + adds r1, #0xa0 + movs r0, #1 + strb r0, [r1] + bl sub_0807A108 +_080777CC: + movs r0, #1 + b _0807787C + .align 2, 0 +_080777D0: .4byte gUnk_03003F80 +_080777D4: + ldr r2, _080777F4 @ =gUnk_02033A90 + ldrb r0, [r2, #0x18] + cmp r0, #2 + beq _080777FC + cmp r0, #3 + beq _08077810 + ldr r0, _080777F8 @ =gUnk_0200AF00 + adds r0, #0x2c + ldrb r0, [r0] + cmp r0, #0xc + bne _0807787A + adds r2, r3, #0 + ldrb r0, [r2, #0x1c] + cmp r0, #0 + bne _0807787A + b _08077838 + .align 2, 0 +_080777F4: .4byte gUnk_02033A90 +_080777F8: .4byte gUnk_0200AF00 +_080777FC: + ldrb r0, [r2, #0x1a] + cmp r0, #0 + bne _080777CC + ldr r1, _0807780C @ =gLinkEntity + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + b _080777CC + .align 2, 0 +_0807780C: .4byte gLinkEntity +_08077810: + ldrb r0, [r2, #0x1a] + cmp r0, #0 + bne _0807787A + ands r1, r4 + cmp r1, #0 + beq _0807787A + ldr r0, _08077834 @ =gLinkEntity + ldrb r1, [r0, #0xd] + adds r1, #1 + strb r1, [r0, #0xd] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0xb4 + bl sub_0805E4E0 + b _080777CC + .align 2, 0 +_08077834: .4byte gLinkEntity +_08077838: + ldrb r0, [r2, #0x12] + cmp r0, #0x11 + beq _0807787A + adds r0, r2, #0 + adds r0, #0x90 + ldrh r1, [r0] + movs r0, #0xf0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0807787A + ldr r0, [r2, #0x30] + ldr r1, _0807786C @ =0x00040400 + ands r0, r1 + cmp r0, #0 + bne _0807787A + ldrb r0, [r2, #2] + cmp r0, #0 + bne _0807787A + ldrb r0, [r2, #4] + cmp r0, #0 + bne _0807787A + movs r0, #0x18 + strb r0, [r2, #0xc] + b _0807787A + .align 2, 0 +_0807786C: .4byte 0x00040400 +_08077870: + ldr r0, [r3, #0x30] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080777CC +_0807787A: + movs r0, #0 +_0807787C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08077880 +sub_08077880: @ 0x08077880 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + subs r0, r4, #1 + cmp r0, #0x1e + bhi _080778C0 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #2 + ldr r1, _080778C4 @ =gUnk_0811BE48 + adds r5, r0, r1 + ldr r1, _080778C8 @ =gUnk_03004010 + ldrb r0, [r5] + cmp r0, #0 + beq _080778A0 + adds r1, #2 +_080778A0: + ldrh r0, [r1] + ands r0, r6 + cmp r0, #0 + bne _080778AC + cmp r2, #0 + beq _080778C0 +_080778AC: + adds r0, r4, #0 + bl sub_0807794C + adds r1, r0, #0 + cmp r1, #0 + beq _080778C0 + ldrb r0, [r5, #1] + strb r0, [r1, #9] + strb r4, [r1, #1] + strb r6, [r1, #3] +_080778C0: + pop {r4, r5, r6, pc} + .align 2, 0 +_080778C4: .4byte gUnk_0811BE48 +_080778C8: .4byte gUnk_03004010 + + thumb_func_start sub_080778CC +sub_080778CC: @ 0x080778CC + push {lr} + ldr r2, _08077920 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08077924 @ =0x000400A0 + ands r0, r1 + cmp r0, #0 + bne _0807791C + ldr r0, _08077928 @ =gLinkEntity + adds r0, #0x79 + ldrb r0, [r0] + cmp r0, #0 + bne _080778FA + ldrb r0, [r2, #5] + cmp r0, #0 + bne _080778FA + adds r0, r2, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0807791C +_080778FA: + bl sub_080789A8 + cmp r0, #0 + bne _08077910 + ldr r0, _08077920 @ =gUnk_03003F80 + adds r0, #0x90 + ldrh r1, [r0] + ldr r0, _0807792C @ =0x00000F03 + ands r0, r1 + cmp r0, #0 + bne _0807791C +_08077910: + movs r0, #0x1b + bl sub_0807794C + adds r1, r0, #0 + cmp r1, #0 + bne _08077930 +_0807791C: + movs r0, #0 + b _08077940 + .align 2, 0 +_08077920: .4byte gUnk_03003F80 +_08077924: .4byte 0x000400A0 +_08077928: .4byte gLinkEntity +_0807792C: .4byte 0x00000F03 +_08077930: + movs r0, #0x1b + strb r0, [r1, #1] + ldr r0, _08077944 @ =gUnk_0811BE48 + ldr r2, _08077948 @ =0x00000145 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r1, #9] + movs r0, #1 +_08077940: + pop {pc} + .align 2, 0 +_08077944: .4byte gUnk_0811BE48 +_08077948: .4byte 0x00000145 + + thumb_func_start sub_0807794C +sub_0807794C: @ 0x0807794C + push {lr} + adds r2, r0, #0 + ldr r0, _080779B8 @ =gUnk_03003F80 + ldrb r1, [r0, #0xc] + adds r3, r0, #0 + cmp r1, #0x18 + bne _0807795E + cmp r2, #0x1b + bne _080779B2 +_0807795E: + ldr r0, [r3, #0x30] + movs r1, #0x88 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _0807796E + cmp r2, #6 + bhi _080779B2 +_0807796E: + ldrb r0, [r3, #2] + cmp r0, #0 + bne _0807797C + ldr r0, _080779BC @ =gLinkEntity + ldr r0, [r0, #0x34] + cmp r0, #0 + beq _08077980 +_0807797C: + cmp r2, #6 + bhi _080779B2 +_08077980: + ldr r0, [r3, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807799A + ldr r0, _080779C0 @ =gUnk_0811BE48 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #8] + cmp r0, #0 + beq _080779B2 +_0807799A: + ldrb r0, [r3, #0x12] + cmp r0, #0x11 + bne _080779C4 + adds r0, r3, #0 + adds r0, #0x37 + ldrb r0, [r0] + cmp r0, #0 + beq _080779C4 + adds r0, r2, #0 + subs r0, #0x14 + cmp r0, #1 + bls _080779C4 +_080779B2: + movs r0, #0 + b _080779DE + .align 2, 0 +_080779B8: .4byte gUnk_03003F80 +_080779BC: .4byte gLinkEntity +_080779C0: .4byte gUnk_0811BE48 +_080779C4: + ldr r1, _080779E0 @ =gUnk_0811BE48 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + ldr r1, _080779E4 @ =gUnk_0811BFC8 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r2, #0 + bl _call_via_r1 +_080779DE: + pop {pc} + .align 2, 0 +_080779E0: .4byte gUnk_0811BE48 +_080779E4: .4byte gUnk_0811BFC8 + + thumb_func_start sub_080779E8 +sub_080779E8: @ 0x080779E8 + movs r0, #0 + bx lr + + thumb_func_start sub_080779EC +sub_080779EC: @ 0x080779EC + push {lr} + ldr r1, _08077A00 @ =gUnk_03000B80 + adds r0, r1, #0 + adds r0, #0x25 + ldrb r0, [r0] + cmp r0, #0 + bne _08077A04 + adds r0, r1, #0 + adds r0, #0x1c + b _08077A16 + .align 2, 0 +_08077A00: .4byte gUnk_03000B80 +_08077A04: + adds r0, r1, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0 + beq _08077A12 + movs r0, #0 + b _08077A16 +_08077A12: + adds r0, r1, #0 + adds r0, #0x38 +_08077A16: + pop {pc} + + thumb_func_start sub_08077A18 +sub_08077A18: @ 0x08077A18 + push {lr} + adds r1, r0, #0 + ldr r0, _08077A3C @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _08077A44 + ldr r0, _08077A40 @ =gUnk_03000B80 + ldrb r2, [r0, #0x1d] + cmp r1, r2 + beq _08077A44 + adds r0, #0x39 + ldrb r0, [r0] + cmp r1, r0 + beq _08077A44 + adds r0, r1, #0 + bl sub_080779EC + b _08077A46 + .align 2, 0 +_08077A3C: .4byte gUnk_03003F80 +_08077A40: .4byte gUnk_03000B80 +_08077A44: + movs r0, #0 +_08077A46: + pop {pc} + + thumb_func_start sub_08077A48 +sub_08077A48: @ 0x08077A48 + push {r4, r5, r6, lr} + adds r2, r0, #0 + ldr r6, _08077A88 @ =gUnk_03003F80 + ldrb r0, [r6, #5] + cmp r0, #0 + bne _08077A94 + ldrb r1, [r6, #2] + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _08077A94 + ldr r0, _08077A8C @ =gUnk_0811BE48 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r5, _08077A90 @ =gUnk_03000B80 + ldrb r0, [r1, #1] + ldrb r1, [r5, #9] + cmp r0, r1 + blo _08077A94 + adds r0, r5, #0 + movs r1, #0 + bl sub_08077E78 + strb r4, [r6, #1] + strb r4, [r6, #0x1c] + strb r4, [r6, #0x1b] + adds r0, r5, #0 + b _08077A96 + .align 2, 0 +_08077A88: .4byte gUnk_03003F80 +_08077A8C: .4byte gUnk_0811BE48 +_08077A90: .4byte gUnk_03000B80 +_08077A94: + movs r0, #0 +_08077A96: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08077A98 +sub_08077A98: @ 0x08077A98 + push {lr} + ldr r0, _08077AB8 @ =gUnk_02002A40 + adds r0, #0xac + ldrb r0, [r0] + cmp r0, #0 + beq _08077AC4 + ldr r0, _08077ABC @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _08077AC4 + ldr r1, _08077AC0 @ =gUnk_03000B80 + ldrb r0, [r1, #9] + cmp r0, #0 + bne _08077AC4 + adds r0, r1, #0 + b _08077AC6 + .align 2, 0 +_08077AB8: .4byte gUnk_02002A40 +_08077ABC: .4byte gUnk_03003F80 +_08077AC0: .4byte gUnk_03000B80 +_08077AC4: + movs r0, #0 +_08077AC6: + pop {pc} + + thumb_func_start sub_08077AC8 +sub_08077AC8: @ 0x08077AC8 + push {lr} + movs r2, #0 + ldr r1, _08077AD8 @ =gUnk_03000B80 +_08077ACE: + ldrb r0, [r1, #9] + cmp r0, #0 + beq _08077ADC + movs r0, #0 + b _08077AE6 + .align 2, 0 +_08077AD8: .4byte gUnk_03000B80 +_08077ADC: + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + bls _08077ACE + ldr r0, _08077AE8 @ =gUnk_03000BD4 +_08077AE6: + pop {pc} + .align 2, 0 +_08077AE8: .4byte gUnk_03000BD4 + + thumb_func_start sub_08077AEC +sub_08077AEC: @ 0x08077AEC + push {lr} + ldr r0, _08077B14 @ =gUnk_03000BD4 + movs r1, #3 + bl sub_08077E78 + ldr r2, _08077B18 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08077B1C @ =0xFF7FFFFF + ands r0, r1 + str r0, [r2, #0x30] + movs r0, #0x10 + bl sub_0805436C + adds r1, r0, #0 + cmp r1, #2 + beq _08077B12 + movs r0, #0xf + bl sub_08054414 +_08077B12: + pop {pc} + .align 2, 0 +_08077B14: .4byte gUnk_03000BD4 +_08077B18: .4byte gUnk_03003F80 +_08077B1C: .4byte 0xFF7FFFFF + + thumb_func_start sub_08077B20 +sub_08077B20: @ 0x08077B20 + push {lr} + bl sub_08077B2C + bl sub_08077AEC + pop {pc} + + thumb_func_start sub_08077B2C +sub_08077B2C: @ 0x08077B2C + push {r4, r5, lr} + movs r4, #0 + ldr r5, _08077B88 @ =gUnk_03000B80 +_08077B32: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08077E78 + adds r5, #0x1c + adds r4, #1 + cmp r4, #2 + bls _08077B32 + ldr r2, _08077B8C @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x3d + movs r3, #0 + strb r3, [r0] + strb r3, [r2, #0x1c] + subs r0, #0x1c + strb r3, [r0] + strb r3, [r2, #1] + strb r3, [r2, #0xe] + strb r3, [r2, #0x1e] + strb r3, [r2, #0x1b] + strb r3, [r2, #3] + strb r3, [r2, #5] + ldr r0, [r2, #0x30] + ldr r1, _08077B90 @ =0xF7FBFFFF + ands r0, r1 + str r0, [r2, #0x30] + ldr r0, _08077B94 @ =gLinkEntity + str r3, [r0, #0x70] + ldrb r1, [r2, #2] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + bne _08077B76 + strb r3, [r2, #2] +_08077B76: + adds r1, r2, #0 + adds r1, #0xa8 + ldrb r0, [r1] + cmp r0, #4 + bgt _08077B86 + cmp r0, #2 + blt _08077B86 + strb r3, [r1] +_08077B86: + pop {r4, r5, pc} + .align 2, 0 +_08077B88: .4byte gUnk_03000B80 +_08077B8C: .4byte gUnk_03003F80 +_08077B90: .4byte 0xF7FBFFFF +_08077B94: .4byte gLinkEntity + + thumb_func_start sub_08077B98 +sub_08077B98: @ 0x08077B98 + push {r4, lr} + adds r1, r0, #0 + ldr r4, _08077BB4 @ =gUnk_03003F80 + ldr r0, [r4, #0x2c] + cmp r0, #0 + beq _08077BAA + ldrb r0, [r0, #9] + cmp r0, #1 + beq _08077BB2 +_08077BAA: + adds r0, r1, #0 + bl sub_08077C54 + str r0, [r4, #0x2c] +_08077BB2: + pop {r4, pc} + .align 2, 0 +_08077BB4: .4byte gUnk_03003F80 + + thumb_func_start sub_08077BB8 +sub_08077BB8: @ 0x08077BB8 + push {lr} + bl sub_08077C54 + adds r1, r0, #0 + cmp r1, #0 + beq _08077BC8 + movs r0, #0x20 + strb r0, [r1, #0x10] +_08077BC8: + ldr r0, _08077BD0 @ =gUnk_03003F80 + str r1, [r0, #0x2c] + pop {pc} + .align 2, 0 +_08077BD0: .4byte gUnk_03003F80 + + thumb_func_start sub_08077BD4 +sub_08077BD4: @ 0x08077BD4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08077C04 @ =gUnk_0811BE48 + ldrb r1, [r4, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0, #3] + adds r0, r4, #0 + bl sub_08077C94 + cmp r0, #0 + bne _08077C08 + ldrb r1, [r4, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r5 + ldrb r1, [r0, #3] + adds r0, r4, #0 + bl sub_08077C3C + b _08077C0A + .align 2, 0 +_08077C04: .4byte gUnk_0811BE48 +_08077C08: + movs r0, #0 +_08077C0A: + pop {r4, r5, pc} + + thumb_func_start sub_08077C0C +sub_08077C0C: @ 0x08077C0C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r2, _08077C34 @ =gUnk_0811BE48 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r4, [r0, #3] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08077C94 + cmp r0, #0 + bne _08077C38 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08077C3C + b _08077C3A + .align 2, 0 +_08077C34: .4byte gUnk_0811BE48 +_08077C38: + movs r0, #0 +_08077C3A: + pop {r4, r5, pc} + + thumb_func_start sub_08077C3C +sub_08077C3C: @ 0x08077C3C + push {r4, lr} + adds r4, r0, #0 + adds r0, r1, #0 + ldrb r3, [r4, #1] + movs r1, #0 + movs r2, #0 + bl sub_08077CB8 + cmp r0, #0 + beq _08077C52 + str r4, [r0, #0x50] +_08077C52: + pop {r4, pc} + + thumb_func_start sub_08077C54 +sub_08077C54: @ 0x08077C54 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0805E744 + adds r4, r0, #0 + cmp r4, #0 + beq _08077C8C + ldr r2, _08077C90 @ =gUnk_0811BE48 + ldrb r1, [r5, #1] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r0, [r0, #3] + strb r0, [r4, #9] + movs r0, #8 + strb r0, [r4, #8] + movs r0, #0xa0 + strb r0, [r4, #0x10] + str r5, [r4, #0x50] + ldrb r1, [r5, #1] + adds r0, r4, #0 + adds r0, #0x68 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805EA2C +_08077C8C: + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 +_08077C90: .4byte gUnk_0811BE48 + + thumb_func_start sub_08077C94 +sub_08077C94: @ 0x08077C94 + push {lr} + ldr r2, _08077CB4 @ =gUnk_0811BE48 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldrb r1, [r0, #3] + movs r0, #8 + movs r2, #2 + bl sub_0805EB00 + cmp r0, #0 + bne _08077CB0 + movs r0, #0 +_08077CB0: + pop {pc} + .align 2, 0 +_08077CB4: .4byte gUnk_0811BE48 + + thumb_func_start sub_08077CB8 +sub_08077CB8: @ 0x08077CB8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + mov r8, r3 + bl sub_0805E678 + adds r4, r0, #0 + cmp r4, #0 + beq _08077CEE + movs r0, #0x80 + strb r0, [r4, #0x10] + movs r0, #8 + strb r0, [r4, #8] + strb r5, [r4, #9] + strb r6, [r4, #0xa] + strb r7, [r4, #0xb] + adds r0, r4, #0 + adds r0, #0x68 + mov r1, r8 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805EA2C +_08077CEE: + adds r0, r4, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08077CF8 +sub_08077CF8: @ 0x08077CF8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + mov r8, r3 + bl sub_0805E744 + adds r4, r0, #0 + cmp r4, #0 + beq _08077D2E + movs r0, #0x80 + strb r0, [r4, #0x10] + movs r0, #8 + strb r0, [r4, #8] + strb r5, [r4, #9] + strb r6, [r4, #0xa] + strb r7, [r4, #0xb] + adds r0, r4, #0 + adds r0, #0x68 + mov r1, r8 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805EA2C +_08077D2E: + adds r0, r4, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08077D38 +sub_08077D38: @ 0x08077D38 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + mov r8, r1 + ldr r3, _08077D94 @ =gUnk_03003F80 + movs r7, #8 + adds r1, r7, #0 + mov r0, r8 + asrs r1, r0 + ldrb r2, [r3, #0xa] + adds r0, r1, #0 + orrs r0, r2 + strb r0, [r3, #0xa] + ldrb r0, [r3, #0xb] + orrs r1, r0 + strb r1, [r3, #0xb] + ldr r0, _08077D98 @ =gLinkEntity + ldrb r0, [r0, #0x14] + strb r0, [r4, #0xa] + ldrb r0, [r4, #4] + cmp r0, #0 + bne _08077D6A + adds r0, #1 + strb r0, [r4, #4] +_08077D6A: + ldrb r2, [r4, #1] + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _08077D9C @ =gUnk_0811BE48 + adds r5, r0, r1 + ldrh r0, [r5, #4] + cmp r0, #0 + beq _08077DCC + ldr r0, [r3, #0x30] + ands r0, r7 + cmp r0, #0 + beq _08077DC4 + cmp r2, #0xd + beq _08077DB2 + cmp r2, #0xd + bgt _08077DA0 + cmp r2, #1 + beq _08077DAC + b _08077DB4 + .align 2, 0 +_08077D94: .4byte gUnk_03003F80 +_08077D98: .4byte gLinkEntity +_08077D9C: .4byte gUnk_0811BE48 +_08077DA0: + cmp r2, #0x1b + bne _08077DB4 + ldr r6, _08077DA8 @ =0x00000948 + b _08077DB4 + .align 2, 0 +_08077DA8: .4byte 0x00000948 +_08077DAC: + movs r6, #0x81 + lsls r6, r6, #3 + b _08077DB4 +_08077DB2: + ldr r6, _08077DC0 @ =0x0000040C +_08077DB4: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08077DF4 + b _08077DCC + .align 2, 0 +_08077DC0: .4byte 0x0000040C +_08077DC4: + ldrh r1, [r5, #4] + adds r0, r4, #0 + bl sub_08077DF4 +_08077DCC: + ldrb r0, [r5, #6] + strb r0, [r4, #0xf] + ldrb r0, [r5, #7] + cmp r0, #0 + beq _08077DE8 + ldr r2, _08077DF0 @ =gUnk_03003F80 + movs r0, #8 + mov r1, r8 + asrs r0, r1 + lsls r1, r0, #4 + orrs r0, r1 + ldrb r1, [r2, #4] + orrs r0, r1 + strb r0, [r2, #4] +_08077DE8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08077DF0: .4byte gUnk_03003F80 + + thumb_func_start sub_08077DF4 +sub_08077DF4: @ 0x08077DF4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r1, #0 + strh r2, [r4, #0x10] + movs r0, #0xff + ands r0, r2 + cmp r0, #0xb8 + bls _08077E0A + ldrb r0, [r4, #0xa] + lsrs r0, r0, #1 + adds r2, r2, r0 +_08077E0A: + ldr r0, _08077E20 @ =gLinkEntity + lsrs r1, r2, #8 + strh r1, [r0, #0x12] + lsls r1, r2, #0x18 + lsrs r1, r1, #0x18 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08077E54 + pop {r4, pc} + .align 2, 0 +_08077E20: .4byte gLinkEntity + + thumb_func_start sub_08077E24 +sub_08077E24: @ 0x08077E24 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08077E38 @ =gLinkEntity + bl sub_080042B8 + adds r0, r4, #0 + bl sub_08077E54 + pop {r4, pc} + .align 2, 0 +_08077E38: .4byte gLinkEntity + + thumb_func_start sub_08077E3C +sub_08077E3C: @ 0x08077E3C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08077E50 @ =gLinkEntity + bl sub_080042BA + adds r0, r4, #0 + bl sub_08077E54 + pop {r4, pc} + .align 2, 0 +_08077E50: .4byte gLinkEntity + + thumb_func_start sub_08077E54 +sub_08077E54: @ 0x08077E54 + ldr r2, _08077E74 @ =gLinkEntity + adds r1, r2, #0 + adds r1, #0x58 + ldrb r1, [r1] + strb r1, [r0, #0xc] + ldrb r1, [r2, #0x1e] + strb r1, [r0, #0x12] + adds r1, r2, #0 + adds r1, #0x59 + ldrb r1, [r1] + strb r1, [r0, #0xd] + adds r1, r2, #0 + adds r1, #0x5a + ldrb r1, [r1] + strb r1, [r0, #0xe] + bx lr + .align 2, 0 +_08077E74: .4byte gLinkEntity + + thumb_func_start sub_08077E78 +sub_08077E78: @ 0x08077E78 + push {r4, r5, lr} + adds r5, r0, #0 + adds r3, r1, #0 + ldr r4, _08077EC4 @ =gUnk_03003F80 + cmp r3, #0 + bne _08077E9A + ldr r2, [r4, #0x2c] + cmp r2, #0 + beq _08077E98 + ldrb r0, [r2, #0x11] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #6 + orrs r1, r0 + strb r1, [r2, #0x11] +_08077E98: + str r3, [r4, #0x2c] +_08077E9A: + movs r2, #8 + asrs r2, r3 + lsls r1, r2, #4 + orrs r1, r2 + ldrb r0, [r4, #4] + bics r0, r1 + strb r0, [r4, #4] + mvns r2, r2 + ldrb r1, [r4, #0xa] + adds r0, r2, #0 + ands r0, r1 + strb r0, [r4, #0xa] + ldrb r0, [r4, #0xb] + ands r2, r0 + strb r2, [r4, #0xb] + adds r0, r5, #0 + movs r1, #0x1c + bl sub_0801D630 + pop {r4, r5, pc} + .align 2, 0 +_08077EC4: .4byte gUnk_03003F80 + + thumb_func_start sub_08077EC8 +sub_08077EC8: @ 0x08077EC8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08077EDC @ =gUnk_03003F80 + ldrb r1, [r0, #0x1b] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + bne _08077EE0 + movs r0, #0 + b _08077EF8 + .align 2, 0 +_08077EDC: .4byte gUnk_03003F80 +_08077EE0: + movs r1, #0xb8 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_08077DF4 + movs r0, #0x28 + strb r0, [r4, #7] + movs r0, #7 + strb r0, [r4, #4] + movs r0, #6 + strb r0, [r4, #0xf] + movs r0, #1 +_08077EF8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08077EFC +sub_08077EFC: @ 0x08077EFC + push {lr} + ldr r1, _08077F0C @ =gUnk_03003F80 + adds r1, #0x90 + ldrh r1, [r1] + bl sub_08077F24 + pop {pc} + .align 2, 0 +_08077F0C: .4byte gUnk_03003F80 + + thumb_func_start sub_08077F10 +sub_08077F10: @ 0x08077F10 + push {lr} + ldr r1, _08077F20 @ =gUnk_03003F80 + adds r1, #0x92 + ldrh r1, [r1] + bl sub_08077F24 + pop {pc} + .align 2, 0 +_08077F20: .4byte gUnk_03003F80 + + thumb_func_start sub_08077F24 +sub_08077F24: @ 0x08077F24 + push {lr} + ldr r2, _08077F34 @ =gUnk_02002AE8 + ldrb r3, [r0, #1] + ldrb r0, [r2, #0xc] + cmp r0, r3 + bne _08077F38 + movs r2, #1 + b _08077F42 + .align 2, 0 +_08077F34: .4byte gUnk_02002AE8 +_08077F38: + ldrb r0, [r2, #0xd] + movs r2, #0 + cmp r0, r3 + bne _08077F42 + movs r2, #2 +_08077F42: + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08077F4C + movs r0, #1 +_08077F4C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08077F50 +sub_08077F50: @ 0x08077F50 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08079184 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08077E78 + pop {r4, r5, pc} + + thumb_func_start sub_08077F64 +sub_08077F64: @ 0x08077F64 + push {lr} + adds r2, r0, #0 + ldr r0, _08077F7C @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _08077F80 + adds r0, r2, #0 + bl sub_08077F50 + movs r0, #0 + b _08077F82 + .align 2, 0 +_08077F7C: .4byte gUnk_03003F80 +_08077F80: + movs r0, #1 +_08077F82: + pop {pc} + + thumb_func_start sub_08077F84 +sub_08077F84: @ 0x08077F84 + push {r4, lr} + ldr r4, _08077FE0 @ =gLinkEntity + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08077FDE + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r1, #0xc + movs r2, #2 + bl sub_080002A4 + ldr r1, _08077FE4 @ =0xFFFFFCBD + adds r0, r0, r1 + cmp r0, #3 + bhi _08077FDE + adds r0, r4, #0 + bl sub_0807AA80 + ldr r2, _08077FE8 @ =gUnk_03003F80 + ldrb r1, [r2, #2] + movs r0, #8 + orrs r0, r1 + strb r0, [r2, #2] + movs r0, #0x44 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08077FDE + ldr r0, [r4, #0x2c] + str r0, [r1, #0x2c] + ldrh r0, [r4, #0x32] + subs r0, #0xc + strh r0, [r1, #0x32] + ldrh r0, [r4, #0x32] + subs r0, #0xc + strh r0, [r4, #0x32] +_08077FDE: + pop {r4, pc} + .align 2, 0 +_08077FE0: .4byte gLinkEntity +_08077FE4: .4byte 0xFFFFFCBD +_08077FE8: .4byte gUnk_03003F80 + + thumb_func_start sub_08077FEC +sub_08077FEC: @ 0x08077FEC + push {lr} + ldr r0, _08078000 @ =gUnk_03004020 + ldr r2, _08078004 @ =gUnk_0811BFE8 + ldrb r1, [r0] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08078000: .4byte gUnk_03004020 +_08078004: .4byte gUnk_0811BFE8 + + thumb_func_start sub_08078008 +sub_08078008: @ 0x08078008 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _08078060 @ =gUnk_02002A40 + adds r5, r6, #0 + adds r5, #0xb4 + ldrb r0, [r5] + bl sub_0805449C + cmp r0, #0 + bne _0807802C + adds r5, r6, #0 + adds r5, #0xb5 + ldrb r0, [r5] + bl sub_0805449C + movs r2, #0 + cmp r0, #0 + beq _0807802E +_0807802C: + ldrb r2, [r5] +_0807802E: + subs r0, r2, #1 + cmp r0, #1 + bhi _08078036 + movs r2, #0 +_08078036: + cmp r2, #0 + beq _08078068 + ldr r0, _08078064 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1b] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08078068 + ldrb r0, [r4, #1] + adds r0, #1 + strb r0, [r4, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x14 + ble _0807806C + movs r0, #0xa + strb r0, [r4, #1] + movs r0, #3 + strb r0, [r4] + strb r2, [r4, #2] + b _0807806C + .align 2, 0 +_08078060: .4byte gUnk_02002A40 +_08078064: .4byte gUnk_03003F80 +_08078068: + movs r0, #0 + strb r0, [r4, #1] +_0807806C: + movs r0, #0 + pop {r4, r5, r6, pc} + + thumb_func_start sub_08078070 +sub_08078070: @ 0x08078070 + push {lr} + adds r2, r0, #0 + ldr r3, _08078098 @ =gUnk_03003F80 + ldrb r1, [r3, #0x1b] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080780D6 + adds r0, r3, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #3 + ands r0, r1 + cmp r0, #0 + beq _0807809C + ldrh r0, [r2, #4] + adds r0, #0xc + b _080780A0 + .align 2, 0 +_08078098: .4byte gUnk_03003F80 +_0807809C: + ldrh r0, [r2, #4] + adds r0, #6 +_080780A0: + strh r0, [r2, #4] + movs r0, #4 + ldrsh r1, [r2, r0] + ldr r0, _080780BC @ =0x0000031F + cmp r1, r0 + ble _080780C0 + adds r0, #1 + strh r0, [r2, #4] + movs r0, #4 + strb r0, [r2] + movs r0, #0xd8 + bl sub_080A3268 + b _080780DA + .align 2, 0 +_080780BC: .4byte 0x0000031F +_080780C0: + movs r1, #4 + ldrsh r0, [r2, r1] + movs r1, #0x14 + bl Mod + cmp r0, #0 + bne _080780DA + movs r0, #0xd7 + bl sub_080A3268 + b _080780DA +_080780D6: + movs r0, #1 + strb r0, [r2] +_080780DA: + movs r0, #1 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080780E0 +sub_080780E0: @ 0x080780E0 + push {lr} + adds r2, r0, #0 + ldr r0, _080780F4 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1b] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080780F8 + movs r0, #5 + b _08078102 + .align 2, 0 +_080780F4: .4byte gUnk_03003F80 +_080780F8: + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _08078104 + movs r0, #1 +_08078102: + strb r0, [r2] +_08078104: + movs r0, #1 + pop {pc} + + thumb_func_start sub_08078108 +sub_08078108: @ 0x08078108 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #4] + subs r0, #1 + strh r0, [r1, #4] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _08078120 + movs r0, #0 + strh r0, [r1, #4] + movs r0, #2 + strb r0, [r1] +_08078120: + movs r0, #1 + pop {pc} + + thumb_func_start sub_08078124 +sub_08078124: @ 0x08078124 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #4] + subs r0, #0x10 + strh r0, [r1, #4] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0807813C + movs r0, #0 + strh r0, [r1, #4] + movs r0, #2 + strb r0, [r1] +_0807813C: + movs r0, #1 + pop {pc} + + thumb_func_start sub_08078140 +sub_08078140: @ 0x08078140 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #1] + subs r0, #1 + movs r2, #0 + strb r0, [r1, #1] + lsls r0, r0, #0x18 + cmp r0, #0 + blt _08078156 + movs r0, #0 + b _0807815C +_08078156: + strb r2, [r1, #1] + strb r2, [r1] + movs r0, #1 +_0807815C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08078160 +sub_08078160: @ 0x08078160 + push {lr} + ldr r1, _08078178 @ =gUnk_03003F80 + adds r1, #0xa8 + strb r0, [r1] + ldr r2, _0807817C @ =gLinkEntity + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + bl sub_08078B48 + pop {pc} + .align 2, 0 +_08078178: .4byte gUnk_03003F80 +_0807817C: .4byte gLinkEntity + + thumb_func_start sub_08078180 +sub_08078180: @ 0x08078180 + push {r4, r5, r6, lr} + ldr r0, _080781C8 @ =gUnk_0200AF00 + adds r1, r0, #0 + adds r1, #0x2f + ldrb r1, [r1] + adds r6, r0, #0 + cmp r1, #0 + beq _08078192 + b _080782BC +_08078192: + movs r4, #0 + ldr r5, _080781CC @ =gUnk_03003F80 + ldrb r0, [r5, #2] + cmp r0, #0 + beq _0807819E + b _080782B6 +_0807819E: + ldr r0, [r5, #0x30] + ldr r1, _080781D0 @ =0x00104D00 + ands r0, r1 + cmp r0, #0 + beq _080781AA + b _080782B6 +_080781AA: + ldrb r0, [r5, #5] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bhi _080781D4 + adds r1, r6, #0 + adds r1, #0x2e + ldrb r0, [r1] + movs r4, #3 + cmp r0, #0 + bne _080781C4 + b _080782B6 +_080781C4: + adds r4, r0, #0 + b _080782B6 + .align 2, 0 +_080781C8: .4byte gUnk_0200AF00 +_080781CC: .4byte gUnk_03003F80 +_080781D0: .4byte 0x00104D00 +_080781D4: + adds r1, r6, #0 + adds r1, #0x2d + ldrb r0, [r1] + cmp r0, #0 + bne _080781C4 + bl sub_080784E4 + adds r1, r0, #0 + ldr r0, [r1, #8] + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _08078278 + ldrb r0, [r1, #1] + subs r0, #1 + cmp r0, #9 + bhi _080782B6 + lsls r0, r0, #2 + ldr r1, _08078204 @ =_08078208 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08078204: .4byte _08078208 +_08078208: @ jump table + .4byte _08078230 @ case 0 + .4byte _080782B6 @ case 1 + .4byte _08078254 @ case 2 + .4byte _080782B6 @ case 3 + .4byte _08078254 @ case 4 + .4byte _08078254 @ case 5 + .4byte _08078230 @ case 6 + .4byte _0807823C @ case 7 + .4byte _08078260 @ case 8 + .4byte _0807826C @ case 9 +_08078230: + movs r4, #7 + ldr r6, _08078238 @ =gUnk_0200AF00 + b _080782B6 + .align 2, 0 +_08078238: .4byte gUnk_0200AF00 +_0807823C: + ldr r0, _0807824C @ =gUnk_02034350 + ldrb r0, [r0, #6] + ldr r6, _08078250 @ =gUnk_0200AF00 + cmp r0, #0 + bne _080782B6 + movs r4, #9 + b _080782B6 + .align 2, 0 +_0807824C: .4byte gUnk_02034350 +_08078250: .4byte gUnk_0200AF00 +_08078254: + movs r4, #6 + ldr r6, _0807825C @ =gUnk_0200AF00 + b _080782B6 + .align 2, 0 +_0807825C: .4byte gUnk_0200AF00 +_08078260: + movs r4, #5 + ldr r6, _08078268 @ =gUnk_0200AF00 + b _080782B6 + .align 2, 0 +_08078268: .4byte gUnk_0200AF00 +_0807826C: + movs r4, #2 + ldr r6, _08078274 @ =gUnk_0200AF00 + b _080782B6 + .align 2, 0 +_08078274: .4byte gUnk_0200AF00 +_08078278: + bl sub_080789A8 + cmp r0, #0 + beq _080782A4 + adds r0, r5, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0xe + beq _080782BC + ldr r1, _080782A0 @ =gUnk_03003BE0 + ldrb r0, [r1, #1] + movs r4, #9 + cmp r0, #2 + bne _080782B6 + ldr r0, [r1, #8] + ldrb r0, [r0, #0x16] + cmp r0, #1 + bne _080782B6 + movs r4, #8 + b _080782B6 + .align 2, 0 +_080782A0: .4byte gUnk_03003BE0 +_080782A4: + adds r0, r5, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #1 + bne _080782B6 + ldrb r0, [r5, #0x1a] + cmp r0, #0 + bne _080782B6 + movs r4, #0xc +_080782B6: + adds r0, r6, #0 + adds r0, #0x2c + strb r4, [r0] +_080782BC: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080782C0 +sub_080782C0: @ 0x080782C0 + push {r4, r5, r6, lr} + ldr r1, _080782D8 @ =gUnk_03003F80 + adds r2, r1, #0 + adds r2, #0xa8 + ldrb r0, [r2] + adds r4, r1, #0 + cmp r0, #0 + bne _080782DC + adds r0, r4, #0 + adds r0, #0xa9 + ldrb r0, [r0] + b _080782DE + .align 2, 0 +_080782D8: .4byte gUnk_03003F80 +_080782DC: + ldrb r0, [r2] +_080782DE: + subs r0, #2 + cmp r0, #0x14 + bhi _08078348 + lsls r0, r0, #2 + ldr r1, _080782F0 @ =_080782F4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080782F0: .4byte _080782F4 +_080782F4: @ jump table + .4byte _080784AC @ case 0 + .4byte _080784AC @ case 1 + .4byte _08078348 @ case 2 + .4byte _08078348 @ case 3 + .4byte _08078348 @ case 4 + .4byte _08078348 @ case 5 + .4byte _08078348 @ case 6 + .4byte _08078348 @ case 7 + .4byte _08078348 @ case 8 + .4byte _08078348 @ case 9 + .4byte _080784AC @ case 10 + .4byte _08078348 @ case 11 + .4byte _08078348 @ case 12 + .4byte _08078348 @ case 13 + .4byte _08078348 @ case 14 + .4byte _08078348 @ case 15 + .4byte _080784AC @ case 16 + .4byte _08078348 @ case 17 + .4byte _08078348 @ case 18 + .4byte _080784AC @ case 19 + .4byte _080784AC @ case 20 +_08078348: + adds r0, r4, #0 + adds r0, #0x27 + adds r2, r4, #0 + adds r2, #0x26 + ldrb r1, [r0] + ldrb r0, [r2] + orrs r0, r1 + cmp r0, #0 + beq _0807835C + b _080784AC +_0807835C: + ldrb r0, [r4, #0x12] + cmp r0, #1 + bne _08078376 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _0807836A + b _080784AC +_0807836A: + bl sub_08052B24 + cmp r0, #0 + beq _08078374 + b _080784C4 +_08078374: + b _080784AC +_08078376: + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #7 + ands r0, r1 + cmp r0, #0 + beq _08078384 + b _080784AC +_08078384: + bl sub_08052B24 + cmp r0, #0 + beq _0807838E + b _080784C4 +_0807838E: + bl sub_080784E4 + ldr r6, [r0, #8] + cmp r6, #0 + bne _0807839A + b _080784AC +_0807839A: + ldrb r0, [r4, #5] + cmp r0, #0 + beq _080783B6 + cmp r0, #4 + beq _080783A6 + b _080784AC +_080783A6: + ldr r0, _08078400 @ =gLinkEntity + ldr r0, [r0, #0x74] + ldr r0, [r0, #0x54] + ldrh r1, [r0, #8] + ldr r0, _08078404 @ =0x00000206 + cmp r1, r0 + beq _080783B6 + b _080784AC +_080783B6: + ldr r2, _08078408 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _0807842C + ldr r5, _0807840C @ =gUnk_03003DF0 + ldr r0, [r5, #4] + ldrb r0, [r0, #3] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + bhi _0807842C + movs r0, #0 + bl sub_0801E738 + ldr r0, _08078410 @ =gUnk_02002A40 + ldr r1, _08078414 @ =0x0000012B + adds r0, r0, r1 + ldrb r0, [r0] + cmp r0, #0 + beq _08078418 + ldr r1, [r5, #4] + ldrb r0, [r1, #3] + strb r0, [r5, #2] + ldr r0, [r1, #8] + adds r0, #0x39 + movs r1, #2 + strb r1, [r0] + movs r0, #7 + strb r0, [r4, #0xc] + b _08078420 + .align 2, 0 +_08078400: .4byte gLinkEntity +_08078404: .4byte 0x00000206 +_08078408: .4byte gUnk_03003F80 +_0807840C: .4byte gUnk_03003DF0 +_08078410: .4byte gUnk_02002A40 +_08078414: .4byte 0x0000012B +_08078418: + ldr r0, _08078428 @ =0x00000B65 + movs r1, #0 + bl sub_08078AA8 +_08078420: + movs r0, #0x13 + bl sub_08078160 + b _080784C4 + .align 2, 0 +_08078428: .4byte 0x00000B65 +_0807842C: + adds r0, r4, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + beq _080784AC + ldr r0, _08078450 @ =gUnk_03003DF0 + ldr r0, [r0, #4] + ldrb r0, [r0, #1] + cmp r0, #0xa + bhi _080784C4 + lsls r0, r0, #2 + ldr r1, _08078454 @ =_08078458 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08078450: .4byte gUnk_03003DF0 +_08078454: .4byte _08078458 +_08078458: @ jump table + .4byte _080784C4 @ case 0 + .4byte _08078484 @ case 1 + .4byte _080784C4 @ case 2 + .4byte _0807848E @ case 3 + .4byte _080784C4 @ case 4 + .4byte _0807848E @ case 5 + .4byte _08078484 @ case 6 + .4byte _0807848E @ case 7 + .4byte _080784A4 @ case 8 + .4byte _08078484 @ case 9 + .4byte _08078484 @ case 10 +_08078484: + movs r0, #7 + strb r0, [r4, #0xc] + movs r0, #0x13 + bl sub_08078160 +_0807848E: + adds r1, r6, #0 + adds r1, #0x39 + movs r2, #0 + movs r0, #1 + strb r0, [r1] + ldr r0, _080784A0 @ =gUnk_03003DF0 + strb r2, [r0, #2] + b _080784C4 + .align 2, 0 +_080784A0: .4byte gUnk_03003DF0 +_080784A4: + ldr r2, _080784B0 @ =gUnk_02034350 + ldrb r0, [r2, #6] + cmp r0, #0 + beq _080784B4 +_080784AC: + movs r0, #0 + b _080784C6 + .align 2, 0 +_080784B0: .4byte gUnk_02034350 +_080784B4: + adds r1, r6, #0 + adds r1, #0x39 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r6, #0xa] + strb r0, [r2, #6] + ldrb r0, [r6, #0xb] + strb r0, [r2, #7] +_080784C4: + movs r0, #1 +_080784C6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080784C8 +sub_080784C8: @ 0x080784C8 + push {r4, lr} + ldr r4, _080784DC @ =gUnk_03003DF0 + movs r1, #0xc4 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_0801D630 + ldr r0, _080784E0 @ =gUnk_0811C000 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 +_080784DC: .4byte gUnk_03003DF0 +_080784E0: .4byte gUnk_0811C000 + + thumb_func_start sub_080784E4 +sub_080784E4: @ 0x080784E4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080784FC @ =gUnk_03003DF0 + ldrb r1, [r0] + mov r8, r0 + cmp r1, #0 + beq _08078500 + ldr r0, [r0, #4] + b _0807876A + .align 2, 0 +_080784FC: .4byte gUnk_03003DF0 +_08078500: + ldr r2, _08078528 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x27 + adds r3, r2, #0 + adds r3, #0x26 + ldrb r1, [r0] + ldrb r0, [r3] + orrs r0, r1 + cmp r0, #0 + bne _08078598 + adds r1, r2, #0 + adds r1, #0xa8 + ldrb r0, [r1] + cmp r0, #0 + bne _0807852C + adds r0, r2, #0 + adds r0, #0xa9 + ldrb r0, [r0] + b _0807852E + .align 2, 0 +_08078528: .4byte gUnk_03003F80 +_0807852C: + ldrb r0, [r1] +_0807852E: + subs r0, #2 + cmp r0, #0x14 + bhi _080785B0 + lsls r0, r0, #2 + ldr r1, _08078540 @ =_08078544 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08078540: .4byte _08078544 +_08078544: @ jump table + .4byte _08078598 @ case 0 + .4byte _08078598 @ case 1 + .4byte _080785B0 @ case 2 + .4byte _080785B0 @ case 3 + .4byte _080785B0 @ case 4 + .4byte _080785B0 @ case 5 + .4byte _080785B0 @ case 6 + .4byte _080785B0 @ case 7 + .4byte _080785B0 @ case 8 + .4byte _080785B0 @ case 9 + .4byte _080785B0 @ case 10 + .4byte _080785B0 @ case 11 + .4byte _080785B0 @ case 12 + .4byte _080785B0 @ case 13 + .4byte _080785B0 @ case 14 + .4byte _080785B0 @ case 15 + .4byte _08078598 @ case 16 + .4byte _080785B0 @ case 17 + .4byte _080785B0 @ case 18 + .4byte _08078598 @ case 19 + .4byte _08078598 @ case 20 +_08078598: + movs r0, #0xff + mov r1, r8 + strb r0, [r1, #3] + ldr r0, _080785AC @ =gUnk_0811C000 + str r0, [r1, #4] + movs r1, #1 + mov r2, r8 + strb r1, [r2] + b _0807876A + .align 2, 0 +_080785AC: .4byte gUnk_0811C000 +_080785B0: + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080785F0 + bl sub_08052734 + cmp r0, #0 + beq _080785C4 + movs r0, #1 +_080785C4: + adds r7, r0, #0 + bl sub_08052764 + cmp r0, #0 + beq _080785D2 + movs r0, #2 + orrs r7, r0 +_080785D2: + ldr r3, _080785E4 @ =gLinkEntity + ldrb r0, [r3, #0x14] + movs r1, #6 + ands r1, r0 + ldr r0, _080785E8 @ =gUnk_0811C00C + adds r2, r1, r0 + ldr r5, _080785EC @ =gUnk_03003DF0 + mov r8, r5 + b _080785FE + .align 2, 0 +_080785E4: .4byte gLinkEntity +_080785E8: .4byte gUnk_0811C00C +_080785EC: .4byte gUnk_03003DF0 +_080785F0: + ldr r3, _08078624 @ =gLinkEntity + ldrb r0, [r3, #0x14] + movs r1, #6 + ands r1, r0 + ldr r0, _08078628 @ =gUnk_0811C014 + adds r2, r1, r0 + movs r7, #0 +_080785FE: + mov ip, r3 + mov r0, ip + movs r3, #0x2e + ldrsh r1, [r0, r3] + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + mov sl, r1 + mov r5, ip + movs r0, #0x32 + ldrsh r1, [r5, r0] + movs r0, #1 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + mov sb, r1 + movs r6, #0 + ldr r5, _0807862C @ =gUnk_03003DF8 + b _08078724 + .align 2, 0 +_08078624: .4byte gLinkEntity +_08078628: .4byte gUnk_0811C014 +_0807862C: .4byte gUnk_03003DF8 +_08078630: + ldrb r1, [r5] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _0807864E + mov r0, ip + adds r0, #0x38 + adds r1, r2, #0 + adds r1, #0x38 + ldrb r2, [r0] + ldrb r0, [r1] + ands r0, r2 + cmp r0, #0 + beq _08078714 +_0807864E: + ldrb r1, [r5, #2] + mov r2, ip + ldrb r0, [r2, #0x14] + lsrs r0, r0, #1 + asrs r1, r0 + ands r1, r3 + cmp r1, #0 + bne _08078714 + ldrb r0, [r5, #1] + cmp r0, #0xa + bhi _080786D4 + lsls r0, r0, #2 + ldr r1, _08078670 @ =_08078674 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08078670: .4byte _08078674 +_08078674: @ jump table + .4byte _08078714 @ case 0 + .4byte _080786A0 @ case 1 + .4byte _080786C4 @ case 2 + .4byte _080786A0 @ case 3 + .4byte _080786A0 @ case 4 + .4byte _080786C8 @ case 5 + .4byte _080786CC @ case 6 + .4byte _080786B4 @ case 7 + .4byte _080786A0 @ case 8 + .4byte _080786A0 @ case 9 + .4byte _080786D4 @ case 10 +_080786A0: + ldr r0, _080786B0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08078714 + b _080786D4 + .align 2, 0 +_080786B0: .4byte gUnk_03003F80 +_080786B4: + ldr r0, _080786C0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + b _080786D0 + .align 2, 0 +_080786C0: .4byte gUnk_03003F80 +_080786C4: + ldrb r0, [r5, #3] + b _080786D0 +_080786C8: + movs r0, #1 + b _080786CE +_080786CC: + movs r0, #2 +_080786CE: + ands r0, r7 +_080786D0: + cmp r0, #0 + beq _08078714 +_080786D4: + ldr r0, [r5, #8] + movs r1, #0x2e + ldrsh r3, [r0, r1] + movs r2, #0x32 + ldrsh r4, [r0, r2] + ldr r1, [r5, #4] + cmp r1, #0 + beq _080786F4 + movs r0, #0 + ldrsb r0, [r1, r0] + adds r3, r3, r0 + movs r0, #1 + ldrsb r0, [r1, r0] + adds r4, r4, r0 + adds r2, r1, #2 + b _080786F8 +_080786F4: + ldr r0, [r0, #0x48] + adds r2, r0, #6 +_080786F8: + ldrb r1, [r2] + mov r5, sl + adds r0, r1, r5 + subs r0, r0, r3 + lsls r1, r1, #1 + cmp r0, r1 + bhs _08078714 + ldrb r1, [r2, #1] + mov r2, sb + adds r0, r1, r2 + subs r0, r0, r4 + lsls r1, r1, #1 + cmp r0, r1 + blo _0807873A +_08078714: + adds r6, #1 + cmp r6, #0x1f + bhi _08078758 + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + ldr r3, _08078754 @ =gUnk_03003DF8 + adds r5, r0, r3 +_08078724: + ldr r2, [r5, #8] + cmp r2, #0 + beq _08078714 + adds r0, r2, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + blt _0807873A + b _08078630 +_0807873A: + cmp r6, #0x1f + bhi _08078758 + mov r5, r8 + strb r6, [r5, #3] + lsls r0, r6, #1 + adds r0, r0, r6 + lsls r0, r0, #2 + mov r1, r8 + adds r1, #8 + adds r0, r0, r1 + str r0, [r5, #4] + b _08078762 + .align 2, 0 +_08078754: .4byte gUnk_03003DF8 +_08078758: + movs r0, #0xff + mov r1, r8 + strb r0, [r1, #3] + ldr r0, _08078774 @ =gUnk_0811C000 + str r0, [r1, #4] +_08078762: + movs r0, #1 + mov r2, r8 + strb r0, [r2] + ldr r0, [r2, #4] +_0807876A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08078774: .4byte gUnk_0811C000 + + thumb_func_start sub_08078778 +sub_08078778: @ 0x08078778 + push {lr} + movs r1, #1 + movs r2, #0 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_08078784 +sub_08078784: @ 0x08078784 + push {lr} + adds r2, r1, #0 + movs r1, #1 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_08078790 +sub_08078790: @ 0x08078790 + push {lr} + adds r2, r1, #0 + movs r1, #2 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_0807879C +sub_0807879C: @ 0x0807879C + push {lr} + movs r1, #7 + movs r2, #0 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_080787A8 +sub_080787A8: @ 0x080787A8 + push {lr} + adds r2, r1, #0 + movs r1, #7 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_080787B4 +sub_080787B4: @ 0x080787B4 + push {lr} + movs r1, #9 + movs r2, #0 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_080787C0 +sub_080787C0: @ 0x080787C0 + push {lr} + movs r1, #0xa + movs r2, #0 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_080787CC +sub_080787CC: @ 0x080787CC + push {lr} + movs r1, #5 + movs r2, #0 + bl sub_0807887C + pop {pc} + + thumb_func_start sub_080787D8 +sub_080787D8: @ 0x080787D8 + push {lr} + movs r1, #8 + movs r2, #0 + bl sub_0807887C + adds r2, r0, #0 + cmp r2, #0 + blt _080787F6 + ldr r0, _080787FC @ =gUnk_03003DF0 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0xbe + strb r0, [r1, #0xa] +_080787F6: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_080787FC: .4byte gUnk_03003DF0 + + thumb_func_start sub_08078800 +sub_08078800: @ 0x08078800 + push {lr} + movs r1, #6 + movs r2, #0 + bl sub_0807887C + adds r2, r0, #0 + cmp r2, #0 + blt _0807881E + ldr r0, _08078824 @ =gUnk_03003DF0 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0xbe + strb r0, [r1, #0xa] +_0807881E: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_08078824: .4byte gUnk_03003DF0 + + thumb_func_start sub_08078828 +sub_08078828: @ 0x08078828 + push {lr} + movs r1, #3 + movs r2, #0 + bl sub_0807887C + adds r2, r0, #0 + cmp r2, #0 + blt _08078846 + ldr r0, _0807884C @ =gUnk_03003DF0 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0xbe + strb r0, [r1, #0xa] +_08078846: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_0807884C: .4byte gUnk_03003DF0 + + thumb_func_start sub_08078850 +sub_08078850: @ 0x08078850 + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + bl sub_08078904 + adds r2, r0, #0 + cmp r2, #0 + blt _08078876 + ldr r0, _08078878 @ =gUnk_03003DF0 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r2, r1, r0 + strb r4, [r2, #8] + strb r5, [r2, #0xa] + adds r0, #0xc + adds r1, r1, r0 + str r6, [r1] +_08078876: + pop {r4, r5, r6, pc} + .align 2, 0 +_08078878: .4byte gUnk_03003DF0 + + thumb_func_start sub_0807887C +sub_0807887C: @ 0x0807887C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + adds r1, r5, #0 + adds r1, #0x39 + movs r0, #0 + strb r0, [r1] + adds r0, r5, #0 + bl sub_08078904 + adds r4, r0, #0 + cmp r4, #0 + bge _080788A4 + movs r0, #0 + bl sub_08078904 + adds r4, r0, #0 + cmp r4, #0 + blt _080788BA +_080788A4: + ldr r2, _080788DC @ =gUnk_03003DF0 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r0, r2, #0 + adds r0, #0x10 + adds r0, r1, r0 + str r5, [r0] + adds r1, r1, r2 + strb r7, [r1, #9] + strb r6, [r1, #0xb] +_080788BA: + cmp r6, #0 + beq _080788D6 + movs r0, #6 + movs r1, #9 + movs r2, #6 + bl sub_0805EB00 + cmp r0, #0 + bne _080788D6 + movs r0, #9 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 +_080788D6: + adds r0, r4, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080788DC: .4byte gUnk_03003DF0 + + thumb_func_start sub_080788E0 +sub_080788E0: @ 0x080788E0 + push {lr} + bl sub_08078904 + adds r1, r0, #0 + cmp r1, #0 + blt _080788FC + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _08078900 @ =gUnk_03003DF8 + adds r0, r0, r1 + movs r1, #0xc + bl sub_0801D630 +_080788FC: + pop {pc} + .align 2, 0 +_08078900: .4byte gUnk_03003DF8 + + thumb_func_start sub_08078904 +sub_08078904: @ 0x08078904 + push {lr} + adds r3, r0, #0 + movs r1, #0 + ldr r0, _0807891C @ =gUnk_03003DF0 + adds r2, r0, #0 + adds r2, #0x10 +_08078910: + ldr r0, [r2] + cmp r3, r0 + bne _08078920 + adds r0, r1, #0 + b _0807892C + .align 2, 0 +_0807891C: .4byte gUnk_03003DF0 +_08078920: + adds r2, #0xc + adds r1, #1 + cmp r1, #0x1f + bls _08078910 + movs r0, #1 + rsbs r0, r0, #0 +_0807892C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08078930 +sub_08078930: @ 0x08078930 + push {lr} + adds r3, r0, #0 + ldr r2, _08078950 @ =gUnk_03003BE0 + ldrb r0, [r2, #2] + cmp r0, #0x1f + bhi _0807894C + lsls r0, r0, #2 + adds r1, r2, #0 + adds r1, #0xc + adds r0, r0, r1 + str r3, [r0] + ldrb r0, [r2, #2] + adds r0, #1 + strb r0, [r2, #2] +_0807894C: + pop {pc} + .align 2, 0 +_08078950: .4byte gUnk_03003BE0 + + thumb_func_start sub_08078954 +sub_08078954: @ 0x08078954 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r0, _08078970 @ =gUnk_03003BE0 + ldrb r1, [r0, #2] + adds r2, r0, #0 + cmp r4, r1 + bhs _080789A6 + ldr r0, [r2, #0xc] + cmp r0, r5 + bne _08078974 + subs r0, r1, #1 + b _0807898C + .align 2, 0 +_08078970: .4byte gUnk_03003BE0 +_08078974: + adds r4, #1 + ldrb r3, [r2, #2] + cmp r4, r3 + bhs _080789A6 + lsls r0, r4, #2 + adds r1, r2, #0 + adds r1, #0xc + adds r0, r0, r1 + ldr r0, [r0] + cmp r0, r5 + bne _08078974 + subs r0, r3, #1 +_0807898C: + strb r0, [r2, #2] + ldrb r0, [r2, #2] + cmp r4, r0 + bhs _080789A6 + lsls r0, r4, #2 + adds r0, #0xc + adds r1, r0, r2 +_0807899A: + ldr r0, [r1, #4] + stm r1!, {r0} + adds r4, #1 + ldrb r0, [r2, #2] + cmp r4, r0 + blo _0807899A +_080789A6: + pop {r4, r5, pc} + + thumb_func_start sub_080789A8 +sub_080789A8: @ 0x080789A8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r1, _080789BC @ =gUnk_03003BE0 + ldrb r0, [r1] + cmp r0, #0 + beq _080789C0 + ldrb r0, [r1, #1] + b _08078A88 + .align 2, 0 +_080789BC: .4byte gUnk_03003BE0 +_080789C0: + ldr r0, _08078A5C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08078A56 + ldr r0, _08078A60 @ =gLinkEntity + bl sub_080002D0 + adds r4, r0, #0 + cmp r4, #0xf + bls _080789E6 + ldr r0, _08078A64 @ =gUnk_080084BC + adds r1, r4, #0 + subs r1, #0x10 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0xf + beq _08078A56 +_080789E6: + ldr r0, _08078A5C @ =gUnk_03003F80 + ldrb r0, [r0, #0x12] + cmp r0, #0x12 + beq _08078A56 + ldr r3, _08078A68 @ =gUnk_03003BE0 + movs r0, #1 + strb r0, [r3] + ldrb r4, [r3, #2] + cmp r4, #0 + beq _08078A2E + ldr r2, _08078A60 @ =gLinkEntity + ldrb r1, [r2, #0x14] + movs r0, #6 + ands r0, r1 + ldr r1, _08078A6C @ =gUnk_0811BFE0 + adds r6, r0, r1 + adds r7, r2, #0 + adds r3, #8 + mov r8, r3 +_08078A0C: + lsls r0, r4, #2 + mov r1, r8 + adds r5, r0, r1 + ldr r1, [r5] + cmp r1, #0 + beq _08078A26 + ldrb r2, [r6] + ldrb r3, [r6, #1] + adds r0, r7, #0 + bl sub_0807A180 + cmp r0, #0 + bne _08078A74 +_08078A26: + subs r4, #1 + ldr r7, _08078A60 @ =gLinkEntity + cmp r4, #0 + bne _08078A0C +_08078A2E: + ldr r0, _08078A60 @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r2, #6 + ands r2, r1 + ldr r1, _08078A70 @ =gUnk_08007DF4 + adds r2, r2, r1 + movs r1, #0 + ldrsb r1, [r2, r1] + ldrb r2, [r2, #1] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + bl sub_0800029C + ldr r4, _08078A68 @ =gUnk_03003BE0 + strh r0, [r4, #4] + movs r1, #6 + bl sub_0806FC24 + cmp r0, #0 + bne _08078A84 +_08078A56: + movs r0, #0 + b _08078A88 + .align 2, 0 +_08078A5C: .4byte gUnk_03003F80 +_08078A60: .4byte gLinkEntity +_08078A64: .4byte gUnk_080084BC +_08078A68: .4byte gUnk_03003BE0 +_08078A6C: .4byte gUnk_0811BFE0 +_08078A70: .4byte gUnk_08007DF4 +_08078A74: + mov r0, r8 + subs r0, #8 + ldr r1, [r5] + str r1, [r0, #8] + movs r1, #2 + strb r1, [r0, #1] + movs r0, #2 + b _08078A88 +_08078A84: + movs r0, #1 + strb r0, [r4, #1] +_08078A88: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08078A90 +sub_08078A90: @ 0x08078A90 + push {lr} + adds r1, r0, #0 + ldr r0, _08078AA4 @ =gUnk_03003F80 + adds r2, r0, #0 + adds r2, #0x8b + ldrb r0, [r2] + cmp r0, #3 + beq _08078AA2 + strb r1, [r2] +_08078AA2: + pop {pc} + .align 2, 0 +_08078AA4: .4byte gUnk_03003F80 + + thumb_func_start sub_08078AA8 +sub_08078AA8: @ 0x08078AA8 + ldr r3, _08078AB8 @ =gUnk_03003F80 + movs r2, #0x16 + strb r2, [r3, #0xc] + ldr r2, _08078ABC @ =gUnk_030010A0 + strh r0, [r2, #0x36] + adds r2, #0x35 + strb r1, [r2] + bx lr + .align 2, 0 +_08078AB8: .4byte gUnk_03003F80 +_08078ABC: .4byte gUnk_030010A0 + + thumb_func_start sub_08078AC0 +sub_08078AC0: @ 0x08078AC0 + push {r4, lr} + ldr r3, _08078AEC @ =gUnk_03003F80 + mov ip, r3 + movs r3, #0xf + mov r4, ip + strb r3, [r4, #0xc] + mov r3, ip + adds r3, #0x38 + strb r0, [r3] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + mov r1, ip + adds r1, #0x39 + strb r0, [r1] + rsbs r0, r2, #0 + orrs r0, r2 + lsrs r0, r0, #0x1f + adds r1, #1 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 +_08078AEC: .4byte gUnk_03003F80 + + thumb_func_start sub_08078AF0 +sub_08078AF0: @ 0x08078AF0 + push {r4, lr} + ldr r3, _08078B40 @ =gUnk_03003F80 + mov ip, r3 + adds r3, #0x38 + movs r4, #0 + strb r1, [r3] + mov r1, ip + adds r1, #0x39 + strb r2, [r1] + adds r1, #1 + strb r4, [r1] + movs r1, #8 + mov r2, ip + strb r1, [r2, #0xc] + adds r2, #0xa8 + movs r1, #0x15 + strb r1, [r2] + mov r1, ip + adds r1, #0x26 + strb r4, [r1] + movs r1, #1 + mov r3, ip + strb r1, [r3, #0x14] + ldr r2, _08078B44 @ =gLinkEntity + str r0, [r2, #0x54] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x11] + bl sub_0807A108 + pop {r4, pc} + .align 2, 0 +_08078B40: .4byte gUnk_03003F80 +_08078B44: .4byte gLinkEntity + + thumb_func_start sub_08078B48 +sub_08078B48: @ 0x08078B48 + push {lr} + ldr r1, _08078B80 @ =gUnk_03003F80 + ldrb r0, [r1, #7] + movs r2, #0x80 + orrs r0, r2 + strb r0, [r1, #7] + ldrb r0, [r1, #0xb] + orrs r0, r2 + strb r0, [r1, #0xb] + ldrb r0, [r1, #0xa] + orrs r2, r0 + strb r2, [r1, #0xa] + adds r2, r1, #0 + adds r2, #0x27 + movs r0, #2 + strb r0, [r2] + adds r0, r1, #0 + adds r0, #0xa8 + ldrb r0, [r0] + subs r0, #4 + adds r2, r1, #0 + cmp r0, #0x19 + bhi _08078BF8 + lsls r0, r0, #2 + ldr r1, _08078B84 @ =_08078B88 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08078B80: .4byte gUnk_03003F80 +_08078B84: .4byte _08078B88 +_08078B88: @ jump table + .4byte _08078C04 @ case 0 + .4byte _08078C04 @ case 1 + .4byte _08078BF8 @ case 2 + .4byte _08078BF8 @ case 3 + .4byte _08078BF8 @ case 4 + .4byte _08078BF0 @ case 5 + .4byte _08078BF8 @ case 6 + .4byte _08078BF8 @ case 7 + .4byte _08078BF8 @ case 8 + .4byte _08078BF8 @ case 9 + .4byte _08078BF8 @ case 10 + .4byte _08078BF8 @ case 11 + .4byte _08078BF8 @ case 12 + .4byte _08078BF8 @ case 13 + .4byte _08078BF8 @ case 14 + .4byte _08078BF8 @ case 15 + .4byte _08078BF8 @ case 16 + .4byte _08078BF8 @ case 17 + .4byte _08078BF8 @ case 18 + .4byte _08078BF8 @ case 19 + .4byte _08078BF8 @ case 20 + .4byte _08078C04 @ case 21 + .4byte _08078C04 @ case 22 + .4byte _08078BF8 @ case 23 + .4byte _08078BF8 @ case 24 + .4byte _08078C04 @ case 25 +_08078BF0: + ldr r0, [r2, #0x30] + ldr r1, _08078C18 @ =0xFFFBFFFF + ands r0, r1 + str r0, [r2, #0x30] +_08078BF8: + ldr r0, _08078C1C @ =gUnk_02034350 + ldrb r0, [r0, #6] + cmp r0, #0 + bne _08078C04 + movs r0, #1 + strb r0, [r2, #0x1a] +_08078C04: + ldr r0, _08078C20 @ =gLinkEntity + adds r0, #0x3d + movs r1, #0xfe + strb r1, [r0] + adds r1, r2, #0 + adds r1, #0x8a + movs r0, #2 + strb r0, [r1] + pop {pc} + .align 2, 0 +_08078C18: .4byte 0xFFFBFFFF +_08078C1C: .4byte gUnk_02034350 +_08078C20: .4byte gLinkEntity + + thumb_func_start sub_08078C24 +sub_08078C24: @ 0x08078C24 + push {lr} + ldr r3, _08078CAC @ =gUnk_03003F80 + movs r2, #0 + strb r2, [r3] + strb r2, [r3, #1] + strb r2, [r3, #2] + strb r2, [r3, #3] + strb r2, [r3, #4] + strb r2, [r3, #5] + strb r2, [r3, #6] + strb r2, [r3, #7] + movs r0, #0 + strh r2, [r3, #8] + strb r0, [r3, #0xa] + strb r0, [r3, #0xb] + movs r1, #0x35 + adds r1, r1, r3 + mov ip, r1 + adds r1, r3, #0 + adds r1, #0x36 + strb r0, [r1] + strb r0, [r3, #0xc] + strb r0, [r3, #0xd] + strb r0, [r3, #0xe] + strb r0, [r3, #0x11] + strb r0, [r3, #0x12] + strb r0, [r3, #0x13] + strb r0, [r3, #0x14] + strb r0, [r3, #0x1b] + strb r0, [r3, #0x1e] + strb r0, [r3, #0x1f] + subs r1, #0x16 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + strh r2, [r3, #0x22] + strh r2, [r3, #0x24] + adds r1, #5 + strb r0, [r1] + str r2, [r3, #0x2c] + adds r1, #0x5a + strh r2, [r1] + mov r1, ip + strb r0, [r1] + str r2, [r3, #0x30] + adds r1, r3, #0 + adds r1, #0x38 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + adds r1, #5 + strb r0, [r1] + subs r1, #3 + strb r0, [r1] + movs r0, #1 + rsbs r0, r0, #0 + adds r1, #4 + movs r2, #0x40 + bl sub_0801D610 + ldr r0, _08078CB0 @ =gUnk_03003DF0 + movs r1, #0xc4 + lsls r1, r1, #1 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_08078CAC: .4byte gUnk_03003F80 +_08078CB0: .4byte gUnk_03003DF0 + + thumb_func_start sub_08078CB4 +sub_08078CB4: @ 0x08078CB4 + push {lr} + ldr r0, _08078CCC @ =gUnk_03003F80 + ldrb r0, [r0, #5] + subs r0, #3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _08078CC8 + bl sub_08078D60 +_08078CC8: + pop {pc} + .align 2, 0 +_08078CCC: .4byte gUnk_03003F80 + + thumb_func_start sub_08078CD0 +sub_08078CD0: @ 0x08078CD0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x70] + ldrh r0, [r5, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + ldrb r1, [r5, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1b] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + ldr r1, _08078D28 @ =gUnk_0811C01C + ldr r0, _08078D2C @ =gUnk_03003F80 + ldr r0, [r0, #0x2c] + ldrb r0, [r0, #0x1e] + adds r0, r0, r1 + ldrb r2, [r0] + ldr r3, _08078D30 @ =gUnk_0811C0B0 + ldrb r1, [r4, #0x1c] + movs r0, #0x30 + ands r0, r1 + lsrs r0, r0, #2 + adds r0, r0, r3 + lsls r2, r2, #1 + ldr r0, [r0] + adds r2, r0, r2 + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _08078D34 + movs r1, #0 + ldrsb r1, [r2, r1] + ldrh r0, [r5, #0x2e] + subs r0, r0, r1 + b _08078D3C + .align 2, 0 +_08078D28: .4byte gUnk_0811C01C +_08078D2C: .4byte gUnk_03003F80 +_08078D30: .4byte gUnk_0811C0B0 +_08078D34: + movs r0, #0 + ldrsb r0, [r2, r0] + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 +_08078D3C: + strh r0, [r4, #0x2e] + movs r0, #1 + ldrsb r0, [r2, r0] + ldrh r1, [r5, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_0806FEBC + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _08078D5E + adds r0, r4, #0 + bl sub_0806FA24 +_08078D5E: + pop {r4, r5, pc} + + thumb_func_start sub_08078D60 +sub_08078D60: @ 0x08078D60 + push {r4, r5, r6, lr} + ldr r1, _08078DCC @ =gLinkEntity + ldr r0, [r1, #0x74] + ldr r4, [r0, #0x54] + ldrb r0, [r4, #0xc] + adds r6, r1, #0 + cmp r0, #2 + beq _08078D72 + b _08078E82 +_08078D72: + adds r0, r6, #0 + adds r0, #0x63 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r6, #0x36] + adds r0, r0, r1 + strh r0, [r4, #0x36] + ldrb r1, [r6, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1b] + adds r0, r6, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r6, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + ldr r1, _08078DD0 @ =gUnk_0811C0E8 + ldrb r0, [r4, #0x16] + lsrs r0, r0, #4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _08078DD4 + adds r2, r1, r2 + movs r1, #0 + ldrsb r1, [r2, r1] + ldrh r0, [r6, #0x2e] + subs r0, r0, r1 + strh r0, [r4, #0x2e] + adds r1, r2, #0 + b _08078DE0 + .align 2, 0 +_08078DCC: .4byte gLinkEntity +_08078DD0: .4byte gUnk_0811C0E8 +_08078DD4: + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r2, [r6, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] +_08078DE0: + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r4, #0x36] + adds r0, r0, r1 + strh r0, [r4, #0x36] + adds r5, r6, #0 + ldrh r0, [r5, #0x32] + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + ldr r0, _08078E34 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #4 + bne _08078E4C + ldrb r1, [r5, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + bl sub_0806F8DC + ldrb r1, [r4, #0x16] + movs r0, #0xf + ands r0, r1 + cmp r0, #2 + bne _08078E82 + ldr r0, _08078E38 @ =gUnk_030010A0 + ldr r1, [r0] + movs r0, #3 + ands r1, r0 + cmp r1, #1 + beq _08078E3C + cmp r1, #3 + beq _08078E44 + b _08078E82 + .align 2, 0 +_08078E34: .4byte gUnk_03003F80 +_08078E38: .4byte gUnk_030010A0 +_08078E3C: + ldrh r0, [r4, #0x2e] + adds r0, #1 + strh r0, [r4, #0x2e] + b _08078E82 +_08078E44: + ldrh r0, [r4, #0x2e] + subs r0, #1 + strh r0, [r4, #0x2e] + b _08078E82 +_08078E4C: + ldrb r0, [r5, #0x14] + lsrs r0, r0, #1 + cmp r0, #0 + beq _08078E62 + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + b _08078E6E +_08078E62: + adds r0, r6, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + adds r1, #1 +_08078E6E: + adds r3, r4, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08078E82: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08078E84 +sub_08078E84: @ 0x08078E84 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r0, _08078ED0 @ =gLinkEntity + cmp r4, r0 + bne _08078EAC + adds r0, r5, #0 + bl sub_08079BD8 + adds r0, r4, #0 + adds r0, #0x62 + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x62 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x63 + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] +_08078EAC: + ldr r0, _08078ED4 @ =gUnk_080029B4 + ldrh r2, [r4, #0x12] + lsls r2, r2, #4 + adds r0, #4 + adds r2, r2, r0 + ldrb r1, [r4, #0x1e] + lsls r1, r1, #2 + ldr r0, [r2] + adds r0, r0, r1 + ldrb r0, [r0, #1] + cmp r0, #0 + beq _08078ED8 + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_0806FEBC + b _08078EE2 + .align 2, 0 +_08078ED0: .4byte gLinkEntity +_08078ED4: .4byte gUnk_080029B4 +_08078ED8: + adds r0, r4, #0 + movs r1, #3 + adds r2, r5, #0 + bl sub_0806FEBC +_08078EE2: + pop {r4, r5, pc} + + thumb_func_start sub_08078EE4 +sub_08078EE4: @ 0x08078EE4 + ldr r2, _08078EF4 @ =gLinkEntity + ldr r1, _08078EF8 @ =gUnk_03003F80 + ldrh r0, [r1, #0x16] + strh r0, [r2, #0x2e] + ldrh r0, [r1, #0x18] + strh r0, [r2, #0x32] + bx lr + .align 2, 0 +_08078EF4: .4byte gLinkEntity +_08078EF8: .4byte gUnk_03003F80 + + thumb_func_start sub_08078EFC +sub_08078EFC: @ 0x08078EFC + push {lr} + ldr r3, _08078F18 @ =gUnk_03003F80 + ldrb r2, [r3, #0xc] + cmp r2, #0 + beq _08078F20 + ldr r0, _08078F1C @ =gLinkEntity + movs r1, #0 + strb r2, [r0, #0xc] + strb r1, [r0, #0xd] + strb r1, [r3, #0xc] + bl sub_08070680 + movs r0, #1 + b _08078F22 + .align 2, 0 +_08078F18: .4byte gUnk_03003F80 +_08078F1C: .4byte gLinkEntity +_08078F20: + movs r0, #0 +_08078F22: + pop {pc} + + thumb_func_start sub_08078F24 +sub_08078F24: @ 0x08078F24 + push {r4, lr} + ldr r4, _08078F38 @ =gUnk_03003F80 + ldrb r3, [r4, #0xd] + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _08078F3C + bl sub_08078F60 + b _08078F5A + .align 2, 0 +_08078F38: .4byte gUnk_03003F80 +_08078F3C: + ldr r2, _08078F5C @ =gUnk_080C9160 + lsls r0, r3, #4 + adds r0, r0, r2 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x8c + strh r1, [r0] + lsls r0, r3, #4 + adds r0, #0x80 + adds r0, r0, r2 + ldrh r0, [r0] + rsbs r0, r0, #0 + adds r1, r4, #0 + adds r1, #0x8e + strh r0, [r1] +_08078F5A: + pop {r4, pc} + .align 2, 0 +_08078F5C: .4byte gUnk_080C9160 + + thumb_func_start sub_08078F60 +sub_08078F60: @ 0x08078F60 + ldr r0, _08078F70 @ =gUnk_03003F80 + adds r1, r0, #0 + adds r1, #0x8c + movs r2, #0 + strh r2, [r1] + adds r0, #0x8e + strh r2, [r0] + bx lr + .align 2, 0 +_08078F70: .4byte gUnk_03003F80 + + thumb_func_start sub_08078F74 +sub_08078F74: @ 0x08078F74 + push {lr} + adds r2, r0, #0 + ldr r0, _08078FA4 @ =gUnk_02033A90 + ldrb r0, [r0, #0x18] + cmp r0, #3 + bne _08078FAC + ldr r3, _08078FA8 @ =gUnk_03003F80 + adds r0, r3, #0 + adds r0, #0x35 + ldrb r0, [r0] + cmp r0, #0xff + beq _08078FAC + movs r1, #0 + movs r0, #0x81 + strb r0, [r3, #2] + movs r0, #0x15 + strb r0, [r2, #0xc] + strb r1, [r2, #0xd] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r2, #0x20] + movs r0, #1 + b _08078FAE + .align 2, 0 +_08078FA4: .4byte gUnk_02033A90 +_08078FA8: .4byte gUnk_03003F80 +_08078FAC: + movs r0, #0 +_08078FAE: + pop {pc} + + thumb_func_start sub_08078FB0 +sub_08078FB0: @ 0x08078FB0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _08078FE0 @ =gUnk_03003F80 + ldrb r1, [r5, #6] + movs r6, #0x80 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _08078FCA + adds r1, r5, #0 + adds r1, #0x35 + movs r0, #0xff + strb r0, [r1] +_08078FCA: + adds r0, r4, #0 + bl sub_08079064 + ldr r1, [r5, #0x30] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08078FE4 + movs r2, #0x58 + b _08078FFA + .align 2, 0 +_08078FE0: .4byte gUnk_03003F80 +_08078FE4: + ands r1, r6 + cmp r1, #0 + beq _08078FEE + movs r2, #0x18 + b _08078FFA +_08078FEE: + ldrh r0, [r5, #8] + lsrs r0, r0, #8 + movs r2, #0xb8 + cmp r0, #7 + bne _08078FFA + movs r2, #0x34 +_08078FFA: + ldr r0, _08079014 @ =gUnk_03003F80 + adds r3, r0, #0 + ldrb r1, [r0, #8] + cmp r2, r1 + bls _08079040 + ldrb r0, [r4, #0x14] + adds r2, r0, #0 + cmp r2, #4 + bls _08079018 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + b _08079020 + .align 2, 0 +_08079014: .4byte gUnk_03003F80 +_08079018: + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 +_08079020: + strb r0, [r4, #0x18] + ldr r0, [r3, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xc + ands r0, r1 + cmp r0, #0 + beq _08079036 + ldrh r1, [r3, #8] + ldrb r0, [r4, #0x14] + adds r2, r1, r0 + b _08079042 +_08079036: + lsls r0, r2, #0x18 + lsrs r0, r0, #0x19 + ldrh r3, [r3, #8] + adds r2, r0, r3 + b _08079042 +_08079040: + ldrh r2, [r0, #8] +_08079042: + ldrh r0, [r4, #0x12] + lsls r0, r0, #8 + adds r1, r4, #0 + adds r1, #0x58 + ldrb r1, [r1] + orrs r0, r1 + cmp r2, r0 + beq _08079062 + lsrs r0, r2, #8 + strh r0, [r4, #0x12] + movs r0, #0xff + ands r2, r0 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080042AC +_08079062: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08079064 +sub_08079064: @ 0x08079064 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, _0807909C @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + ldr r2, _080790A0 @ =0x00100080 + ands r1, r2 + adds r5, r0, #0 + cmp r1, #0 + bne _080790DE + movs r3, #0 + movs r2, #0 + ldr r1, _080790A4 @ =gUnk_03000B80 +_0807907C: + ldrb r0, [r1, #0xf] + cmp r0, r3 + bls _08079086 + adds r3, r0, #0 + ldrh r4, [r1, #0x10] +_08079086: + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + bls _0807907C + adds r2, r5, #0 + ldrb r0, [r2, #0xe] + cmp r0, r3 + bhs _080790A8 + strh r4, [r2, #8] + b _080790DE + .align 2, 0 +_0807909C: .4byte gUnk_03003F80 +_080790A0: .4byte 0x00100080 +_080790A4: .4byte gUnk_03000B80 +_080790A8: + adds r0, r2, #0 + adds r0, #0x26 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080790C0 + ldr r0, _080790BC @ =0x000002BE + strh r0, [r2, #8] + b _080790DE + .align 2, 0 +_080790BC: .4byte 0x000002BE +_080790C0: + ldrh r1, [r5, #8] + movs r0, #0xc1 + lsls r0, r0, #3 + cmp r1, r0 + beq _080790D8 + movs r0, #0x82 + lsls r0, r0, #1 + cmp r1, r0 + beq _080790D8 + ldr r0, _080790E0 @ =0x00000404 + cmp r1, r0 + bne _080790DE +_080790D8: + adds r0, r6, #0 + bl sub_080790E4 +_080790DE: + pop {r4, r5, r6, pc} + .align 2, 0 +_080790E0: .4byte 0x00000404 + + thumb_func_start sub_080790E4 +sub_080790E4: @ 0x080790E4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08079128 @ =gUnk_03003F80 + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _08079182 + movs r0, #0x10 + bl sub_080793E4 + cmp r0, #0 + beq _0807912C + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0x14 + strb r0, [r1] + adds r1, #5 + movs r0, #4 + strb r0, [r1] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + movs r0, #0x7a + bl sub_080A3268 + b _08079182 + .align 2, 0 +_08079128: .4byte gUnk_03003F80 +_0807912C: + ldrb r1, [r5, #6] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08079182 + cmp r1, #0 + bne _08079150 + movs r0, #1 + bl sub_080793E4 + cmp r0, #0 + beq _0807914C + ldrb r0, [r4, #0xf] + cmp r0, #5 + bhi _08079154 + adds r0, #1 +_0807914C: + strb r0, [r4, #0xf] + b _08079182 +_08079150: + subs r0, r1, #1 + strb r0, [r5, #6] +_08079154: + ldr r2, _08079174 @ =gUnk_03003F80 + ldrb r0, [r4, #0x14] + adds r1, r2, #0 + adds r1, #0x35 + strb r0, [r1] + adds r1, #0x73 + movs r0, #0x19 + strb r0, [r1] + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0807917C + ldr r0, _08079178 @ =0x0000093C + b _08079180 + .align 2, 0 +_08079174: .4byte gUnk_03003F80 +_08079178: .4byte 0x0000093C +_0807917C: + movs r0, #0xcf + lsls r0, r0, #2 +_08079180: + strh r0, [r2, #8] +_08079182: + pop {r4, r5, pc} + + thumb_func_start sub_08079184 +sub_08079184: @ 0x08079184 + ldr r0, _08079194 @ =gUnk_03003F80 + movs r1, #0 + strb r1, [r0, #5] + strb r1, [r0, #1] + ldr r0, _08079198 @ =gLinkEntity + str r1, [r0, #0x74] + bx lr + .align 2, 0 +_08079194: .4byte gUnk_03003F80 +_08079198: .4byte gLinkEntity + + thumb_func_start sub_0807919C +sub_0807919C: @ 0x0807919C + push {lr} + ldr r0, _080791B0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080791B4 + bl sub_080791BC + b _080791B8 + .align 2, 0 +_080791B0: .4byte gUnk_03003F80 +_080791B4: + bl sub_08079258 +_080791B8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080791BC +sub_080791BC: @ 0x080791BC + ldr r0, _080791CC @ =gLinkEntity + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + strb r2, [r0, #0xd] + strb r2, [r0, #0xf] + bx lr + .align 2, 0 +_080791CC: .4byte gLinkEntity + + thumb_func_start sub_080791D0 +sub_080791D0: @ 0x080791D0 + push {lr} + ldr r3, _0807920C @ =gUnk_03003F80 + ldr r0, [r3, #0x30] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080791E8 + ldr r0, _08079210 @ =gLinkEntity + ldrb r1, [r0, #0x18] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #0x18] +_080791E8: + ldr r0, [r3, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08079214 + ldr r2, _08079210 @ =gLinkEntity + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + bl sub_0807921C + b _08079218 + .align 2, 0 +_0807920C: .4byte gUnk_03003F80 +_08079210: .4byte gLinkEntity +_08079214: + bl sub_08079258 +_08079218: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807921C +sub_0807921C: @ 0x0807921C + push {r4, lr} + ldr r4, _0807924C @ =gLinkEntity + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r2, _08079250 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08079254 @ =0xFECBF6FA + ands r0, r1 + str r0, [r2, #0x30] + bl sub_08079938 + bl sub_080791BC + adds r0, r4, #0 + bl sub_0805E374 + pop {r4, pc} + .align 2, 0 +_0807924C: .4byte gLinkEntity +_08079250: .4byte gUnk_03003F80 +_08079254: .4byte 0xFECBF6FA + + thumb_func_start sub_08079258 +sub_08079258: @ 0x08079258 + push {r4, lr} + ldr r4, _080792AC @ =gUnk_03003F80 + ldr r0, [r4, #0x30] + movs r1, #0x40 + ands r0, r1 + ldr r3, _080792B0 @ =gLinkEntity + cmp r0, #0 + bne _08079278 + ldrb r1, [r3, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r3, #0x10] + ldrb r0, [r3, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r3, #0x18] +_08079278: + movs r0, #9 + strb r0, [r3, #0xc] + movs r0, #1 + strb r0, [r3, #0xd] + adds r2, r3, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + movs r2, #0 + ldr r0, _080792B4 @ =0x00000C18 + strh r0, [r4, #8] + ldr r0, [r4, #0x30] + ldr r1, _080792B8 @ =0xFECFFEFA + ands r0, r1 + str r0, [r4, #0x30] + adds r0, r4, #0 + adds r0, #0x26 + strb r2, [r0] + strb r2, [r4, #0xc] + adds r0, r3, #0 + bl sub_0805E374 + pop {r4, pc} + .align 2, 0 +_080792AC: .4byte gUnk_03003F80 +_080792B0: .4byte gLinkEntity +_080792B4: .4byte 0x00000C18 +_080792B8: .4byte 0xFECFFEFA + + thumb_func_start sub_080792BC +sub_080792BC: @ 0x080792BC + push {r4, lr} + ldr r3, _080792D0 @ =gUnk_03003F80 + movs r4, #0x13 + strb r4, [r3, #0xc] + adds r3, #0x38 + strb r2, [r3] + ldr r2, _080792D4 @ =gLinkEntity + strh r0, [r2, #0x24] + strb r1, [r2, #0x15] + pop {r4, pc} + .align 2, 0 +_080792D0: .4byte gUnk_03003F80 +_080792D4: .4byte gLinkEntity + + thumb_func_start sub_080792D8 +sub_080792D8: @ 0x080792D8 + push {r4, r5, r6, lr} + ldr r5, _08079344 @ =gLinkEntity + adds r3, r5, #0 + adds r3, #0x42 + ldrb r0, [r3] + cmp r0, #0 + beq _080793E0 + ldrb r2, [r5, #0xc] + cmp r2, #0xb + beq _08079338 + ldr r0, _08079348 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1e] + adds r6, r0, #0 + cmp r1, #0 + bne _08079338 + ldrb r0, [r6, #5] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08079338 + ldrb r0, [r6, #2] + cmp r0, #0 + bne _08079338 + ldrb r0, [r6, #0x12] + cmp r0, #0xff + beq _08079338 + ldrb r1, [r6, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08079338 + adds r0, r6, #0 + adds r0, #0x26 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + subs r0, #1 + cmp r0, #0 + bgt _08079338 + cmp r2, #3 + beq _08079338 + ldr r1, [r6, #0x30] + movs r0, #0x80 + lsls r0, r0, #0xb + ands r1, r0 + cmp r1, #0 + beq _0807934C +_08079338: + adds r1, r5, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + b _080793E0 + .align 2, 0 +_08079344: .4byte gLinkEntity +_08079348: .4byte gUnk_03003F80 +_0807934C: + cmp r2, #0x1d + bne _0807935E + adds r0, r5, #0 + adds r0, #0x3e + ldrb r0, [r0] + cmp r0, #0x10 + beq _0807935E + strb r1, [r3] + b _080793E0 +_0807935E: + adds r0, r5, #0 + adds r0, #0x42 + ldrb r3, [r0] + movs r1, #0 + ldrsb r1, [r0, r1] + adds r2, r0, #0 + cmp r1, #0 + ble _08079372 + subs r0, r3, #1 + b _08079374 +_08079372: + adds r0, r3, #1 +_08079374: + strb r0, [r2] + ldrb r0, [r2] + cmp r0, #0 + beq _080793E0 + adds r4, r6, #0 + ldrb r0, [r4, #7] + movs r1, #0xdf + ands r1, r0 + strb r1, [r4, #7] + adds r0, r5, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _080793CA + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _080793CA + ldr r0, [r4, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080793CA + ldrb r0, [r4, #2] + cmp r0, #0 + bne _080793CA + bl sub_08077B2C + ldr r0, [r4, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _080793C4 + movs r0, #0x8a + lsls r0, r0, #1 + strh r0, [r4, #8] + b _080793CA +_080793C4: + movs r0, #0x83 + lsls r0, r0, #3 + strh r0, [r6, #8] +_080793CA: + movs r1, #0xa0 + lsls r1, r1, #2 + adds r4, r5, #0 + adds r4, #0x3e + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_080027EA + ldrb r0, [r4] + bl sub_0807A5B8 +_080793E0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080793E4 +sub_080793E4: @ 0x080793E4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _080793FC @ =gUnk_03003F80 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _08079408 + ldr r1, _08079400 @ =gUnk_0811C0F8 + ldr r0, _08079404 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + b _08079410 + .align 2, 0 +_080793FC: .4byte gUnk_03003F80 +_08079400: .4byte gUnk_0811C0F8 +_08079404: .4byte gLinkEntity +_08079408: + ldr r1, _08079448 @ =gUnk_0811C0F8 + ldr r0, _0807944C @ =gLinkEntity + ldrb r0, [r0, #0x15] + lsrs r0, r0, #2 +_08079410: + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + bl sub_08079778 + cmp r0, #0 + beq _08079454 + ldr r0, _08079450 @ =gUnk_03003F80 + adds r0, #0x90 + ldrh r0, [r0] + ands r0, r4 + cmp r0, #0 + beq _08079454 + cmp r5, #0 + beq _08079442 + bl sub_0807A500 + ldr r1, _0807944C @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + adds r2, r5, #0 + bl sub_080002F0 + cmp r0, #0 + beq _08079454 +_08079442: + movs r0, #1 + b _08079456 + .align 2, 0 +_08079448: .4byte gUnk_0811C0F8 +_0807944C: .4byte gLinkEntity +_08079450: .4byte gUnk_03003F80 +_08079454: + movs r0, #0 +_08079456: + pop {r4, r5, pc} + + thumb_func_start sub_08079458 +sub_08079458: @ 0x08079458 + push {r4, r5, lr} + ldr r4, _08079498 @ =gLinkEntity + movs r1, #0 + movs r0, #0x19 + strb r0, [r4, #0xc] + str r1, [r4, #0x34] + str r1, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x42 + strb r1, [r0] + bl sub_08078EE4 + ldr r2, _0807949C @ =gUnk_03003F80 + ldr r1, [r2, #0x30] + movs r0, #0x80 + lsls r0, r0, #0xa + ands r0, r1 + cmp r0, #0 + bne _08079514 + movs r0, #0x80 + lsls r0, r0, #9 + ands r1, r0 + cmp r1, #0 + beq _080794E4 + adds r0, r2, #0 + adds r0, #0x84 + ldr r1, [r0] + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + strh r0, [r4, #0x32] + b _08079514 + .align 2, 0 +_08079498: .4byte gLinkEntity +_0807949C: .4byte gUnk_03003F80 +_080794A0: + ldr r2, _080794DC @ =gLinkEntity + ldr r0, [r4] + lsrs r0, r0, #0x1e + adds r1, r2, #0 + adds r1, #0x38 + strb r0, [r1] + ldr r3, _080794E0 @ =gUnk_03000BF0 + ldr r0, [r4] + movs r1, #0x3f + ands r0, r1 + lsls r0, r0, #4 + ldrh r1, [r3, #6] + adds r0, r0, r1 + adds r0, #8 + strh r0, [r2, #0x2e] + ldr r0, [r4] + movs r1, #0xfc + lsls r1, r1, #4 + ands r0, r1 + lsrs r0, r0, #2 + ldrh r3, [r3, #8] + adds r0, r0, r3 + adds r0, #8 + strh r0, [r2, #0x32] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + b _08079514 + .align 2, 0 +_080794DC: .4byte gLinkEntity +_080794E0: .4byte gUnk_03000BF0 +_080794E4: + movs r5, #0 + ldr r1, [r2, #0x40] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _08079514 + adds r4, r2, #0 + adds r4, #0x40 +_080794F4: + ldr r1, [r4] + ldrh r0, [r4] + lsrs r1, r1, #0x1e + bl sub_080002E0 + cmp r0, #0xf + bne _080794A0 + adds r4, #4 + adds r5, #1 + cmp r5, #0xf + bhi _08079514 + ldr r1, [r4] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _080794F4 +_08079514: + ldr r0, _0807951C @ =gLinkEntity + bl sub_08016A04 + pop {r4, r5, pc} + .align 2, 0 +_0807951C: .4byte gLinkEntity + + thumb_func_start sub_08079520 +sub_08079520: @ 0x08079520 + push {lr} + adds r1, r0, #0 + ldr r0, _08079538 @ =gUnk_03003F80 + ldrb r0, [r0, #0xd] + cmp r0, #0x7f + ble _08079532 + ldrb r0, [r1, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #3 +_08079532: + strb r0, [r1, #0x15] + pop {pc} + .align 2, 0 +_08079538: .4byte gUnk_03003F80 + + thumb_func_start sub_0807953C +sub_0807953C: @ 0x0807953C + ldr r1, _08079548 @ =0x00000F38 + ldr r0, _0807954C @ =gUnk_03003F80 + adds r0, #0x92 + ldrh r0, [r0] + ands r0, r1 + bx lr + .align 2, 0 +_08079548: .4byte 0x00000F38 +_0807954C: .4byte gUnk_03003F80 + + thumb_func_start sub_08079550 +sub_08079550: @ 0x08079550 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r0, _080795A8 @ =gUnk_03004030 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _08079562 + b _080796FC +_08079562: + ldr r2, _080795AC @ =gUnk_03003F80 + ldrb r0, [r2, #0x1e] + cmp r0, #0 + beq _08079576 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _080795B4 +_08079576: + adds r0, r2, #0 + adds r0, #0x26 + ldrb r0, [r0] + ldr r1, _080795B0 @ =gLinkEntity + mov r8, r1 + cmp r0, #0 + bne _080795A0 + ldrb r1, [r2, #0x1b] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080795A0 + mov r3, r8 + ldrb r1, [r3, #0x15] + ldrb r2, [r2, #0xd] + cmp r1, r2 + bne _080795A0 + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080795B4 +_080795A0: + movs r0, #0 + mov r5, r8 + strb r0, [r5, #0xf] + b _080796FE + .align 2, 0 +_080795A8: .4byte gUnk_03004030 +_080795AC: .4byte gUnk_03003F80 +_080795B0: .4byte gLinkEntity +_080795B4: + bl sub_08079778 + cmp r0, #0 + bne _080795BE + b _080796FC +_080795BE: + ldr r3, _08079610 @ =gLinkEntity + ldrb r2, [r3, #0x14] + movs r0, #6 + ands r0, r2 + ldr r1, _08079614 @ =gUnk_0811C100 + adds r1, r0, r1 + movs r0, #2 + ands r0, r2 + mov r8, r3 + cmp r0, #0 + beq _0807961C + movs r6, #0x2e + ldrsh r2, [r3, r6] + movs r0, #0 + ldrsb r0, [r1, r0] + adds r2, r2, r0 + ldr r4, _08079618 @ =gUnk_03000BF0 + ldrh r0, [r4, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + mov r0, r8 + movs r5, #0x32 + ldrsh r1, [r0, r5] + ldr r0, [r0, #0x48] + ldrb r5, [r0, #3] + adds r0, r1, r5 + ldrh r4, [r4, #8] + subs r0, r0, r4 + asrs r0, r0, #4 + ands r0, r3 + lsls r7, r0, #6 + orrs r7, r2 + subs r1, r1, r5 + subs r1, r1, r4 + asrs r1, r1, #4 + ands r1, r3 + lsls r4, r1, #6 + orrs r4, r2 + b _0807965E + .align 2, 0 +_08079610: .4byte gLinkEntity +_08079614: .4byte gUnk_0811C100 +_08079618: .4byte gUnk_03000BF0 +_0807961C: + mov r6, r8 + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldr r0, [r6, #0x48] + ldrb r0, [r0, #4] + mov ip, r0 + adds r0, r2, r0 + ldr r4, _080796EC @ =gUnk_03000BF0 + ldrh r3, [r4, #6] + mov sb, r3 + subs r0, r0, r3 + asrs r7, r0, #4 + movs r3, #0x3f + ands r7, r3 + movs r5, #0x32 + ldrsh r0, [r6, r5] + ldrb r1, [r1, #1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, r0, r1 + ldrh r1, [r4, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r7, r0 + mov r6, ip + subs r2, r2, r6 + mov r1, sb + subs r2, r2, r1 + asrs r4, r2, #4 + ands r4, r3 + orrs r4, r0 +_0807965E: + adds r0, r7, #0 + mov r5, r8 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080002C8 + adds r3, r0, #0 + ldr r6, _080796F0 @ =gUnk_0811C1E8 + mov r1, r8 + ldrb r0, [r1, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + adds r0, r3, #0 + bl sub_08007DD6 + adds r3, r0, #0 + cmp r3, #0 + beq _080796FC + adds r0, r4, #0 + ldrb r1, [r5] + bl sub_080002C8 + adds r3, r0, #0 + mov r5, r8 + ldrb r0, [r5, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r1, [r0] + adds r0, r3, #0 + bl sub_08007DD6 + adds r3, r0, #0 + cmp r3, #0 + beq _080796FC + ldr r1, _080796F4 @ =gUnk_03003F80 + ldrb r2, [r1, #6] + movs r0, #0x80 + orrs r0, r2 + strb r0, [r1, #6] + ldrb r0, [r1, #0x1e] + adds r4, r1, #0 + cmp r0, #0 + bne _080796C8 + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _080796FC +_080796C8: + ldr r0, _080796F8 @ =gLinkEntity + subs r1, r3, #1 + movs r2, #0 + strb r1, [r0, #0x14] + movs r1, #4 + strb r1, [r0, #0xc] + strb r2, [r0, #0xd] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0x81 + strb r1, [r4, #2] + bl sub_08070680 + movs r0, #1 + b _080796FE + .align 2, 0 +_080796EC: .4byte gUnk_03000BF0 +_080796F0: .4byte gUnk_0811C1E8 +_080796F4: .4byte gUnk_03003F80 +_080796F8: .4byte gLinkEntity +_080796FC: + movs r0, #0 +_080796FE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08079708 +sub_08079708: @ 0x08079708 + push {r4, lr} + ldr r4, _08079740 @ =gUnk_03003F80 + adds r2, r4, #0 + adds r2, #0xa8 + movs r3, #0 + movs r1, #0x12 + strb r1, [r2] + subs r2, #0x6c + movs r1, #0xff + strb r1, [r2] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0xa + strb r1, [r0, #0xc] + strb r3, [r0, #0xd] + bl sub_080085B0 + ldr r0, [r4, #0x30] + movs r1, #0x88 + lsls r1, r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0807973E + bl sub_0805E544 +_0807973E: + pop {r4, pc} + .align 2, 0 +_08079740: .4byte gUnk_03003F80 + + thumb_func_start sub_08079744 +sub_08079744: @ 0x08079744 + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x2e] + movs r1, #0xf + ands r1, r0 + cmp r1, #8 + beq _0807975E + cmp r1, #8 + ble _0807975A + subs r0, #1 + b _0807975C +_0807975A: + adds r0, #1 +_0807975C: + strh r0, [r2, #0x2e] +_0807975E: + ldrh r0, [r2, #0x32] + movs r1, #0xf + ands r1, r0 + cmp r1, #8 + beq _08079774 + cmp r1, #8 + ble _08079770 + subs r0, #1 + b _08079772 +_08079770: + adds r0, #1 +_08079772: + strh r0, [r2, #0x32] +_08079774: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08079778 +sub_08079778: @ 0x08079778 + push {lr} + ldr r0, _08079790 @ =gUnk_03003F80 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _0807979C + ldr r2, _08079794 @ =gUnk_0811C108 + ldr r1, _08079798 @ =gLinkEntity + ldrb r0, [r1, #0x14] + lsrs r0, r0, #1 + b _080797A4 + .align 2, 0 +_08079790: .4byte gUnk_03003F80 +_08079794: .4byte gUnk_0811C108 +_08079798: .4byte gLinkEntity +_0807979C: + ldr r2, _080797BC @ =gUnk_0811C108 + ldr r1, _080797C0 @ =gLinkEntity + ldrb r0, [r1, #0x15] + lsrs r0, r0, #2 +_080797A4: + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r2, [r0] + movs r3, #0 + ldrh r0, [r1, #0x2a] + ands r0, r2 + cmp r2, r0 + bne _080797B6 + movs r3, #1 +_080797B6: + adds r0, r3, #0 + pop {pc} + .align 2, 0 +_080797BC: .4byte gUnk_0811C108 +_080797C0: .4byte gLinkEntity + + thumb_func_start sub_080797C4 +sub_080797C4: @ 0x080797C4 + push {lr} + ldr r1, _080797E4 @ =gUnk_0811C110 + ldr r2, _080797E8 @ =gLinkEntity + ldrb r0, [r2, #0x15] + lsrs r0, r0, #3 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r3, #0 + ldrh r0, [r2, #0x2a] + ands r0, r1 + cmp r1, r0 + bne _080797E0 + movs r3, #1 +_080797E0: + adds r0, r3, #0 + pop {pc} + .align 2, 0 +_080797E4: .4byte gUnk_0811C110 +_080797E8: .4byte gLinkEntity + + thumb_func_start sub_080797EC +sub_080797EC: @ 0x080797EC + push {r4, r5, lr} + ldr r4, _08079804 @ =gUnk_03003F80 + ldr r1, [r4, #0x30] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0807985C + ldrb r0, [r4, #5] + cmp r0, #0 + beq _0807980C + ldr r5, _08079808 @ =0x00000934 + b _0807991E + .align 2, 0 +_08079804: .4byte gUnk_03003F80 +_08079808: .4byte 0x00000934 +_0807980C: + ldrb r0, [r4, #3] + cmp r0, #0 + beq _08079818 + movs r5, #0x82 + lsls r5, r5, #3 + b _0807991E +_08079818: + adds r0, r4, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + bne _080798A0 + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + movs r5, #0xa4 + lsls r5, r5, #2 + cmp r0, #0 + bne _0807991E + movs r5, #0xb6 + lsls r5, r5, #1 + ldrb r1, [r4, #0x1b] + movs r0, #0x48 + ands r0, r1 + cmp r0, #0 + bne _080798C2 + lsls r0, r1, #0x18 + cmp r0, #0 + bne _080798CE + adds r1, r4, #0 + adds r1, #0xa8 + ldrb r0, [r1] + cmp r0, #0 + bne _08079852 + movs r0, #1 + strb r0, [r1] +_08079852: + ldr r5, _08079858 @ =0x00000404 + b _0807991E + .align 2, 0 +_08079858: .4byte 0x00000404 +_0807985C: + ldrb r0, [r4, #0x1c] + cmp r0, #0 + bne _0807992E + ldrb r0, [r4, #5] + cmp r0, #0 + beq _0807986E + movs r5, #0xd2 + lsls r5, r5, #2 + b _0807991E +_0807986E: + ldrb r0, [r4, #0x1e] + cmp r0, #0 + beq _0807987A + movs r5, #0xa6 + lsls r5, r5, #2 + b _0807991E +_0807987A: + movs r0, #0x80 + lsls r0, r0, #5 + ands r1, r0 + cmp r1, #0 + beq _0807988A + movs r5, #0xe2 + lsls r5, r5, #3 + b _0807991E +_0807988A: + ldrb r0, [r4, #3] + cmp r0, #0 + beq _08079896 + movs r5, #0xb0 + lsls r5, r5, #1 + b _0807991E +_08079896: + adds r0, r4, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _080798A6 +_080798A0: + movs r5, #0xa1 + lsls r5, r5, #2 + b _0807991E +_080798A6: + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + movs r5, #0xa4 + lsls r5, r5, #2 + cmp r0, #0 + bne _0807991E + movs r5, #0xb6 + lsls r5, r5, #1 + ldrb r1, [r4, #0x1b] + movs r0, #0x48 + ands r0, r1 + cmp r0, #0 + beq _080798C8 +_080798C2: + movs r0, #0x6c + strb r0, [r4] + b _0807992E +_080798C8: + lsls r0, r1, #0x18 + cmp r0, #0 + beq _080798FC +_080798CE: + movs r0, #0 + bl sub_080793E4 + cmp r0, #0 + beq _0807991E + bl sub_0807A500 + ldr r1, _080798F8 @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002E0 + cmp r0, #0xff + beq _0807991E + ldrb r1, [r4, #0x1b] + movs r0, #0xf7 + ands r0, r1 + strb r0, [r4, #0x1b] + movs r5, #0xb8 + lsls r5, r5, #1 + b _0807991E + .align 2, 0 +_080798F8: .4byte gLinkEntity +_080798FC: + adds r1, r4, #0 + adds r1, #0xa8 + ldrb r0, [r1] + cmp r0, #0 + bne _0807990A + movs r0, #1 + strb r0, [r1] +_0807990A: + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x10 + ands r0, r1 + movs r5, #0x82 + lsls r5, r5, #1 + cmp r0, #0 + beq _0807991E + movs r5, #0xc1 + lsls r5, r5, #3 +_0807991E: + ldr r0, _08079930 @ =gUnk_03003F80 + strh r5, [r0, #8] + ldrb r0, [r0, #3] + cmp r0, #0 + bne _0807992E + ldr r0, _08079934 @ =gLinkEntity + bl sub_080042B8 +_0807992E: + pop {r4, r5, pc} + .align 2, 0 +_08079930: .4byte gUnk_03003F80 +_08079934: .4byte gLinkEntity + + thumb_func_start sub_08079938 +sub_08079938: @ 0x08079938 + push {r4, lr} + ldr r3, _08079954 @ =gUnk_03003F80 + ldr r2, [r3, #0x30] + movs r0, #8 + ands r0, r2 + mov ip, r3 + cmp r0, #0 + beq _080799E4 + ldrb r0, [r3, #5] + cmp r0, #0 + beq _0807995C + ldr r4, _08079958 @ =0x0000092C + b _08079AD8 + .align 2, 0 +_08079954: .4byte gUnk_03003F80 +_08079958: .4byte 0x0000092C +_0807995C: + mov r0, ip + adds r0, #0x3d + mov r3, ip + ldrb r1, [r3, #0x1c] + ldrb r0, [r0] + orrs r0, r1 + cmp r0, #0 + beq _0807996E + b _08079B14 +_0807996E: + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r2 + cmp r0, #0 + bne _08079A1E + mov r4, ip + ldrb r0, [r4, #3] + cmp r0, #0 + beq _08079988 + ldr r4, _08079984 @ =0x00000414 + b _08079AD8 + .align 2, 0 +_08079984: .4byte 0x00000414 +_08079988: + mov r0, ip + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + bne _08079A5C + mov r0, ip + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _08079A6C + mov r0, ip + ldrb r1, [r0, #0x1b] + movs r0, #0x48 + ands r0, r1 + cmp r0, #0 + beq _080799AA + b _08079B14 +_080799AA: + cmp r1, #0 + beq _080799B0 + b _08079AA4 +_080799B0: + mov r1, ip + ldrb r0, [r1, #4] + cmp r0, #0 + beq _080799BA + b _08079B14 +_080799BA: + movs r0, #0x20 + ands r2, r0 + cmp r2, #0 + beq _080799D0 + ldr r0, _080799D8 @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + cmp r0, #4 + bne _080799CC + b _08079AD4 +_080799CC: + cmp r0, #5 + bne _080799DC +_080799D0: + movs r4, #0x80 + lsls r4, r4, #3 + b _08079AD8 + .align 2, 0 +_080799D8: .4byte gUnk_02033A90 +_080799DC: + ldr r4, _080799E0 @ =0x000002C2 + b _08079AD8 + .align 2, 0 +_080799E0: .4byte 0x000002C2 +_080799E4: + mov r4, ip + ldrb r0, [r4, #5] + cmp r0, #0 + beq _080799F2 + movs r4, #0xd4 + lsls r4, r4, #2 + b _08079AD8 +_080799F2: + mov r0, ip + adds r0, #0x3d + mov r4, ip + ldrb r1, [r4, #0x1c] + ldrb r0, [r0] + orrs r0, r1 + cmp r0, #0 + beq _08079A04 + b _08079B14 +_08079A04: + movs r0, #0x80 + lsls r0, r0, #0xc + ands r0, r2 + cmp r0, #0 + beq _08079A14 + movs r4, #0x8b + lsls r4, r4, #4 + b _08079AD8 +_08079A14: + movs r0, #0x80 + lsls r0, r0, #0x12 + ands r0, r2 + cmp r0, #0 + beq _08079A24 +_08079A1E: + movs r4, #0x81 + lsls r4, r4, #4 + b _08079AD8 +_08079A24: + mov r1, ip + ldrb r0, [r1, #0x1e] + cmp r0, #0 + beq _08079A32 + movs r4, #0xa6 + lsls r4, r4, #2 + b _08079AD8 +_08079A32: + movs r0, #0x80 + lsls r0, r0, #5 + ands r0, r2 + cmp r0, #0 + beq _08079A44 + ldr r4, _08079A40 @ =0x0000070C + b _08079AD8 + .align 2, 0 +_08079A40: .4byte 0x0000070C +_08079A44: + mov r4, ip + ldrb r0, [r4, #3] + cmp r0, #0 + beq _08079A52 + movs r4, #0xb2 + lsls r4, r4, #1 + b _08079AD8 +_08079A52: + mov r0, ip + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _08079A62 +_08079A5C: + movs r4, #0xa0 + lsls r4, r4, #2 + b _08079AD8 +_08079A62: + mov r0, ip + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08079A72 +_08079A6C: + movs r4, #0xa3 + lsls r4, r4, #2 + b _08079AD8 +_08079A72: + mov r0, ip + ldrb r1, [r0, #0x1b] + movs r0, #0x48 + ands r0, r1 + cmp r0, #0 + bne _08079B14 + movs r0, #0x20 + ands r2, r0 + cmp r2, #0 + beq _08079AA0 + ldr r0, _08079A98 @ =gUnk_02033A90 + ldrb r0, [r0, #0x17] + ldr r4, _08079A9C @ =0x000002C2 + cmp r0, #4 + bne _08079AD8 + movs r4, #0xa6 + lsls r4, r4, #3 + b _08079AD8 + .align 2, 0 +_08079A98: .4byte gUnk_02033A90 +_08079A9C: .4byte 0x000002C2 +_08079AA0: + cmp r1, #0 + beq _08079AAA +_08079AA4: + movs r4, #0xb4 + lsls r4, r4, #1 + b _08079AD8 +_08079AAA: + ldrb r0, [r3, #4] + cmp r0, #0 + bne _08079B14 + ldr r0, [r3, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08079AD4 + ldr r0, _08079ACC @ =gUnk_03000B80 + adds r0, #0x63 + ldrb r0, [r0] + cmp r0, #0 + bne _08079B14 + ldr r4, _08079AD0 @ =0x00000604 + b _08079AD8 + .align 2, 0 +_08079ACC: .4byte gUnk_03000B80 +_08079AD0: .4byte 0x00000604 +_08079AD4: + movs r4, #0x80 + lsls r4, r4, #1 +_08079AD8: + mov r1, ip + strh r4, [r1, #8] + ldrb r0, [r1, #5] + cmp r0, #0 + bne _08079B10 + movs r3, #0 + movs r2, #0 + ldr r1, _08079B18 @ =gUnk_03000B80 +_08079AE8: + ldrb r0, [r1, #0xf] + cmp r0, r3 + bls _08079AF0 + adds r3, r0, #0 +_08079AF0: + adds r1, #0x1c + adds r2, #1 + cmp r2, #3 + bls _08079AE8 + mov r2, ip + ldrb r0, [r2, #0xe] + cmp r0, r3 + blo _08079B14 + lsls r0, r4, #0x18 + lsrs r0, r0, #0x18 + ldrb r3, [r2] + cmp r0, r3 + bne _08079B10 + ldr r0, _08079B1C @ =gLinkEntity + bl sub_080042B8 +_08079B10: + ldr r0, _08079B20 @ =gUnk_03003F80 + strb r4, [r0] +_08079B14: + pop {r4, pc} + .align 2, 0 +_08079B18: .4byte gUnk_03000B80 +_08079B1C: .4byte gLinkEntity +_08079B20: .4byte gUnk_03003F80 + + thumb_func_start sub_08079B24 +sub_08079B24: @ 0x08079B24 + push {r4, r5, lr} + ldr r2, _08079B60 @ =gLinkEntity + ldrb r0, [r2, #0xc] + cmp r0, #0xa + beq _08079BD4 + adds r0, r2, #0 + adds r0, #0x45 + ldrb r3, [r0] + cmp r3, #0 + bne _08079BD4 + ldr r4, _08079B64 @ =gUnk_03003F80 + ldr r1, [r4, #0x30] + ldr r0, _08079B68 @ =0xFEFFFFFF + ands r1, r0 + str r1, [r4, #0x30] + adds r0, r2, #0 + adds r0, #0x42 + strb r3, [r0] + ldrb r0, [r4, #7] + cmp r0, #0 + bne _08079BD4 + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _08079B6C + bl sub_08079458 + b _08079BC0 + .align 2, 0 +_08079B60: .4byte gLinkEntity +_08079B64: .4byte gUnk_03003F80 +_08079B68: .4byte 0xFEFFFFFF +_08079B6C: + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _08079BC0 + movs r3, #0x80 + lsls r3, r3, #5 + ands r3, r1 + cmp r3, #0 + bne _08079BC0 + movs r5, #0x36 + ldrsh r0, [r2, r5] + cmp r0, #0 + bge _08079BA6 + ldr r0, [r2, #0x20] + cmp r0, #0 + ble _08079B8C + str r3, [r2, #0x20] +_08079B8C: + ldrb r1, [r4, #2] + movs r3, #0x41 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _08079BD4 + strb r3, [r4, #2] + movs r0, #0xff + strb r0, [r2, #0x15] + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r4, #0xd] + b _08079BD4 +_08079BA6: + movs r0, #2 + ands r1, r0 + cmp r1, #0 + bne _08079BC0 + bl sub_08079D48 + cmp r0, #0 + bne _08079BC0 + ldrb r0, [r4, #0xa] + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4, #0xa] + b _08079BD4 +_08079BC0: + ldr r2, _08079BD0 @ =gLinkEntity + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + movs r0, #0 + b _08079BD6 + .align 2, 0 +_08079BD0: .4byte gLinkEntity +_08079BD4: + movs r0, #1 +_08079BD6: + pop {r4, r5, pc} + + thumb_func_start sub_08079BD8 +sub_08079BD8: @ 0x08079BD8 + push {r4, r5, lr} + ldr r4, _08079C2C @ =gLinkEntity + ldr r1, [r4, #0x2c] + str r1, [r0, #0x2c] + ldr r1, [r4, #0x30] + str r1, [r0, #0x30] + ldr r1, [r4, #0x34] + str r1, [r0, #0x34] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r2, [r1] + adds r1, r0, #0 + adds r1, #0x38 + strb r2, [r1] + ldrb r3, [r4, #0x19] + lsrs r3, r3, #6 + lsls r3, r3, #6 + ldrb r5, [r0, #0x19] + movs r2, #0x3f + adds r1, r2, #0 + ands r1, r5 + orrs r1, r3 + strb r1, [r0, #0x19] + ldrb r1, [r4, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r3, [r0, #0x1b] + ands r2, r3 + orrs r2, r1 + strb r2, [r0, #0x1b] + adds r4, #0x29 + ldrb r2, [r4] + lsls r2, r2, #0x1d + adds r0, #0x29 + lsrs r2, r2, #0x1d + ldrb r3, [r0] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_08079C2C: .4byte gLinkEntity + + thumb_func_start sub_08079C30 +sub_08079C30: @ 0x08079C30 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldr r0, _08079C68 @ =gUnk_03003F80 + ldrb r1, [r0, #0x14] + adds r7, r0, #0 + cmp r1, #0 + beq _08079C44 + b _08079D40 +_08079C44: + ldr r1, [r7, #0x30] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08079D40 + movs r0, #0x80 + ands r1, r0 + cmp r1, #0 + bne _08079D36 + ldrb r0, [r7, #0x13] + subs r0, #0xd + cmp r0, #0x1d + bhi _08079CE8 + lsls r0, r0, #2 + ldr r1, _08079C6C @ =_08079C70 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08079C68: .4byte gUnk_03003F80 +_08079C6C: .4byte _08079C70 +_08079C70: @ jump table + .4byte _08079D36 @ case 0 + .4byte _08079D36 @ case 1 + .4byte _08079D36 @ case 2 + .4byte _08079D36 @ case 3 + .4byte _08079CE8 @ case 4 + .4byte _08079CE8 @ case 5 + .4byte _08079CE8 @ case 6 + .4byte _08079D36 @ case 7 + .4byte _08079CE8 @ case 8 + .4byte _08079CE8 @ case 9 + .4byte _08079D36 @ case 10 + .4byte _08079CE8 @ case 11 + .4byte _08079CE8 @ case 12 + .4byte _08079CE8 @ case 13 + .4byte _08079CE8 @ case 14 + .4byte _08079CE8 @ case 15 + .4byte _08079CE8 @ case 16 + .4byte _08079CE8 @ case 17 + .4byte _08079CE8 @ case 18 + .4byte _08079CE8 @ case 19 + .4byte _08079CE8 @ case 20 + .4byte _08079CE8 @ case 21 + .4byte _08079CE8 @ case 22 + .4byte _08079CE8 @ case 23 + .4byte _08079CE8 @ case 24 + .4byte _08079CE8 @ case 25 + .4byte _08079CE8 @ case 26 + .4byte _08079CE8 @ case 27 + .4byte _08079CE8 @ case 28 + .4byte _08079D36 @ case 29 +_08079CE8: + mov r8, r7 + mov r0, r8 + ldrb r4, [r0, #0x12] + movs r2, #1 + rsbs r2, r2, #0 + adds r0, r6, #0 + movs r1, #0 + bl sub_080002B4 + ldr r5, _08079D3C @ =gUnk_08007CAC + adds r1, r5, #0 + bl sub_08007DD6 + cmp r4, r0 + bne _08079D40 + mov r0, r8 + ldrb r4, [r0, #0x12] + adds r0, r6, #0 + movs r1, #2 + movs r2, #0 + bl sub_080002B4 + adds r1, r5, #0 + bl sub_08007DD6 + cmp r4, r0 + bne _08079D40 + ldrb r4, [r7, #0x12] + movs r1, #2 + rsbs r1, r1, #0 + adds r0, r6, #0 + movs r2, #0 + bl sub_080002B4 + adds r1, r5, #0 + bl sub_08007DD6 + cmp r4, r0 + bne _08079D40 +_08079D36: + movs r0, #1 + b _08079D42 + .align 2, 0 +_08079D3C: .4byte gUnk_08007CAC +_08079D40: + movs r0, #0 +_08079D42: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08079D48 +sub_08079D48: @ 0x08079D48 + push {r4, lr} + ldr r4, _08079D78 @ =gLinkEntity + adds r0, r4, #0 + bl sub_08079C30 + cmp r0, #0 + beq _08079D72 + bl sub_08008B22 + cmp r0, #0 + bne _08079D80 + adds r0, r4, #0 + bl sub_080002B8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _08079D7C @ =gUnk_0811C268 + bl sub_08007DD6 + cmp r0, #0 + bne _08079D80 +_08079D72: + movs r0, #1 + b _08079D82 + .align 2, 0 +_08079D78: .4byte gLinkEntity +_08079D7C: .4byte gUnk_0811C268 +_08079D80: + movs r0, #0 +_08079D82: + pop {r4, pc} + + thumb_func_start sub_08079D84 +sub_08079D84: @ 0x08079D84 + push {lr} + ldr r3, _08079DC0 @ =gLinkEntity + ldrb r0, [r3, #0xc] + cmp r0, #1 + beq _08079D92 + cmp r0, #0x18 + bne _08079DBE +_08079D92: + ldr r2, _08079DC4 @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #0x9c + strb r0, [r1] + adds r1, #1 + movs r0, #2 + strb r0, [r1] + adds r1, #1 + movs r0, #0x3c + strb r0, [r1] + movs r0, #0xe + strb r0, [r2, #0xc] + adds r1, r3, #0 + adds r1, #0x3d + movs r0, #0x7c + strb r0, [r1] + bl sub_08077B20 + ldr r0, _08079DC8 @ =0x00000193 + bl sub_080A3268 +_08079DBE: + pop {pc} + .align 2, 0 +_08079DC0: .4byte gLinkEntity +_08079DC4: .4byte gUnk_03003F80 +_08079DC8: .4byte 0x00000193 + + thumb_func_start sub_08079DCC +sub_08079DCC: @ 0x08079DCC + push {lr} + ldr r0, _08079DFC @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #1 + bne _08079DF8 + ldr r3, _08079E00 @ =gUnk_03003F80 + adds r1, r3, #0 + adds r1, #0x38 + movs r2, #0 + movs r0, #0xa0 + strb r0, [r1] + adds r1, #1 + movs r0, #3 + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x3a + strb r2, [r0] + movs r0, #0xe + strb r0, [r3, #0xc] + ldr r0, _08079E04 @ =0x00000193 + bl sub_080A3268 +_08079DF8: + pop {pc} + .align 2, 0 +_08079DFC: .4byte gLinkEntity +_08079E00: .4byte gUnk_03003F80 +_08079E04: .4byte 0x00000193 + + thumb_func_start sub_08079E08 +sub_08079E08: @ 0x08079E08 + push {r4, lr} + ldr r0, _08079E50 @ =gLinkEntity + ldrh r2, [r0, #0x24] + movs r3, #0x24 + ldrsh r1, [r0, r3] + adds r4, r0, #0 + cmp r1, #0 + beq _08079E2E + ldr r0, _08079E54 @ =gUnk_03003F80 + adds r0, #0x80 + ldrh r0, [r0] + adds r0, r2, r0 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r0, #0x1f + bgt _08079E2E + movs r0, #0x20 + strh r0, [r4, #0x24] +_08079E2E: + adds r2, r4, #0 + ldrb r1, [r2, #0x15] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _08079E40 + ldrb r0, [r2, #0x15] + bl sub_08079E90 +_08079E40: + adds r0, r4, #0 + bl sub_0800857C + ldrb r0, [r4, #0x15] + bl sub_0807A5B8 + pop {r4, pc} + .align 2, 0 +_08079E50: .4byte gLinkEntity +_08079E54: .4byte gUnk_03003F80 + + thumb_func_start sub_08079E58 +sub_08079E58: @ 0x08079E58 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + ldr r5, _08079E8C @ =gLinkEntity + ldrb r1, [r5, #0x15] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _08079E70 + adds r0, r4, #0 + bl sub_08079E90 +_08079E70: + adds r0, r5, #0 + bl sub_080085B0 + lsls r1, r6, #0x10 + asrs r1, r1, #0x10 + lsls r2, r4, #0x18 + lsrs r2, r2, #0x18 + adds r0, r5, #0 + bl sub_080027EA + adds r0, r4, #0 + bl sub_0807A5B8 + pop {r4, r5, r6, pc} + .align 2, 0 +_08079E8C: .4byte gLinkEntity + + thumb_func_start sub_08079E90 +sub_08079E90: @ 0x08079E90 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + ldr r1, _08079EBC @ =gLinkEntity + ldrb r2, [r1, #0x15] + movs r0, #8 + ands r0, r2 + adds r7, r1, #0 + cmp r0, #0 + beq _08079ECA + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _08079EC0 + ldr r0, [r7, #0x48] + ldrb r0, [r0, #2] + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + b _08079EC4 + .align 2, 0 +_08079EBC: .4byte gLinkEntity +_08079EC0: + ldr r0, [r7, #0x48] + ldrb r5, [r0, #2] +_08079EC4: + ldr r0, [r7, #0x48] + ldrb r4, [r0, #3] + b _08079EDE +_08079ECA: + ldr r0, [r7, #0x48] + ldrb r5, [r0, #4] + cmp r2, #0 + beq _08079ED6 + ldrb r4, [r0, #5] + b _08079EDE +_08079ED6: + ldrb r0, [r0, #5] + rsbs r0, r0, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 +_08079EDE: + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + mov r8, r0 + lsls r0, r4, #0x10 + asrs r6, r0, #0x10 + adds r0, r7, #0 + mov r1, r8 + adds r2, r6, #0 + bl sub_080002CC + adds r1, r0, #0 + mov r0, sb + bl sub_08079F48 + cmp r0, #0 + bne _08079F3C + ldrb r1, [r7, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08079F10 + rsbs r0, r6, #0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + b _08079F18 +_08079F10: + mov r1, r8 + rsbs r0, r1, #0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 +_08079F18: + ldr r0, _08079F38 @ =gLinkEntity + lsls r1, r5, #0x10 + asrs r1, r1, #0x10 + lsls r2, r4, #0x10 + asrs r2, r2, #0x10 + bl sub_080002CC + adds r1, r0, #0 + mov r0, sb + bl sub_08079F48 + cmp r0, #0 + bne _08079F3C + movs r0, #0 + b _08079F3E + .align 2, 0 +_08079F38: .4byte gLinkEntity +_08079F3C: + movs r0, #1 +_08079F3E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08079F48 +sub_08079F48: @ 0x08079F48 + push {lr} + ldr r3, _08079F60 @ =gUnk_0811C118 + lsrs r2, r0, #2 + adds r0, r2, r3 + ldrb r0, [r0] + cmp r0, r1 + bne _08079F68 + ldr r0, _08079F64 @ =gLinkEntity + ldrb r1, [r0, #0x15] + adds r1, #4 + b _08079F7C + .align 2, 0 +_08079F60: .4byte gUnk_0811C118 +_08079F64: .4byte gLinkEntity +_08079F68: + adds r0, r2, #1 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, r1 + beq _08079F76 + movs r0, #0 + b _08079F84 +_08079F76: + ldr r0, _08079F88 @ =gLinkEntity + ldrb r1, [r0, #0x15] + subs r1, #4 +_08079F7C: + movs r2, #0x1f + ands r1, r2 + strb r1, [r0, #0x15] + movs r0, #1 +_08079F84: + pop {pc} + .align 2, 0 +_08079F88: .4byte gLinkEntity + + thumb_func_start sub_08079F8C +sub_08079F8C: @ 0x08079F8C + push {lr} + ldr r2, _08079FB4 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08079FB8 @ =0x22189B75 + ands r0, r1 + cmp r0, #0 + bne _08079FB0 + adds r0, r2, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #0 + bne _08079FB0 + ldr r0, _08079FBC @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #3 + beq _08079FB0 + cmp r0, #0xb + bne _08079FC0 +_08079FB0: + movs r0, #0 + b _08079FC2 + .align 2, 0 +_08079FB4: .4byte gUnk_03003F80 +_08079FB8: .4byte 0x22189B75 +_08079FBC: .4byte gLinkEntity +_08079FC0: + movs r0, #1 +_08079FC2: + pop {pc} + + thumb_func_start sub_08079FC4 +sub_08079FC4: @ 0x08079FC4 + push {lr} + adds r1, r0, #0 + ldr r0, _08079FD0 @ =gLinkEntity + bl sub_08079FD4 + pop {pc} + .align 2, 0 +_08079FD0: .4byte gLinkEntity + + thumb_func_start sub_08079FD4 +sub_08079FD4: @ 0x08079FD4 + push {r4, r5, r6, lr} + sub sp, #4 + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r2, [r5, r0] + ldr r3, _0807A008 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r4, #0x3f + ands r2, r4 + movs r6, #0x32 + ldrsh r0, [r5, r6] + ldrh r3, [r3, #8] + subs r0, r0, r3 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r2, r0 + lsls r2, r2, #1 + ldr r6, _0807A00C @ =gUnk_02027EB4 + cmp r1, #2 + bne _0807A004 + ldr r6, _0807A010 @ =gUnk_0200D654 +_0807A004: + movs r4, #0 + b _0807A028 + .align 2, 0 +_0807A008: .4byte gUnk_03000BF0 +_0807A00C: .4byte gUnk_02027EB4 +_0807A010: .4byte gUnk_0200D654 +_0807A014: + cmp r1, #0x23 + beq _0807A028 + cmp r1, #0x27 + beq _0807A028 + ldr r0, _0807A04C @ =gUnk_080082DC + subs r1, #0x10 + adds r1, r1, r0 + ldrb r0, [r1] + cmp r0, #0 + beq _0807A046 +_0807A028: + adds r4, #1 + adds r0, r5, #0 + mov r1, sp + bl sub_08004202 + adds r2, r0, #0 + lsrs r0, r2, #1 + adds r0, r6, r0 + ldrb r1, [r0] + cmp r1, #0xe + bls _0807A046 + cmp r1, #0xf + bls _0807A028 + cmp r1, #0x1d + bne _0807A014 +_0807A046: + adds r0, r4, #0 + add sp, #4 + pop {r4, r5, r6, pc} + .align 2, 0 +_0807A04C: .4byte gUnk_080082DC + + thumb_func_start sub_0807A050 +sub_0807A050: @ 0x0807A050 + push {lr} + ldr r3, _0807A088 @ =gUnk_03003F80 + ldrb r2, [r3, #0xf] + cmp r2, #0 + beq _0807A06A + ldr r0, _0807A08C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0807A06A + subs r0, r2, #1 + strb r0, [r3, #0xf] +_0807A06A: + movs r0, #0 + bl sub_0807A094 + adds r1, r0, #0 + ldr r0, _0807A088 @ =gUnk_03003F80 + adds r0, #0x83 + ldrb r2, [r0] + cmp r1, r2 + beq _0807A084 + strb r1, [r0] + ldr r0, _0807A090 @ =gLinkEntity + bl sub_0801D2B4 +_0807A084: + pop {pc} + .align 2, 0 +_0807A088: .4byte gUnk_03003F80 +_0807A08C: .4byte gUnk_02000050 +_0807A090: .4byte gLinkEntity + + thumb_func_start sub_0807A094 +sub_0807A094: @ 0x0807A094 + push {r4, r5, lr} + adds r3, r0, #0 + movs r2, #0x16 + ldr r0, _0807A0AC @ =gUnk_03003F80 + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _0807A0B0 + movs r2, #0x1b + cmp r0, #0x78 + bls _0807A104 + movs r2, #0x1a + b _0807A104 + .align 2, 0 +_0807A0AC: .4byte gUnk_03003F80 +_0807A0B0: + ldr r0, _0807A0F0 @ =gUnk_02002A40 + adds r1, r0, #0 + adds r1, #0xb2 + ldrb r1, [r1] + adds r5, r0, #0 + cmp r1, #0 + beq _0807A104 + movs r4, #1 + cmp r3, #0 + bne _0807A0D6 + adds r0, #0xc4 + ldrh r1, [r0] + cmp r1, #0xb3 + bhi _0807A0D6 + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0807A0D6 + movs r4, #0 +_0807A0D6: + cmp r4, #0 + beq _0807A104 + adds r0, r5, #0 + adds r0, #0xb2 + ldrb r0, [r0] + cmp r0, #0x30 + beq _0807A102 + cmp r0, #0x30 + bgt _0807A0F4 + cmp r0, #0x2f + beq _0807A0FA + b _0807A102 + .align 2, 0 +_0807A0F0: .4byte gUnk_02002A40 +_0807A0F4: + cmp r0, #0x31 + beq _0807A0FE + b _0807A102 +_0807A0FA: + movs r2, #0x18 + b _0807A104 +_0807A0FE: + movs r2, #0x17 + b _0807A104 +_0807A102: + movs r2, #0x19 +_0807A104: + adds r0, r2, #0 + pop {r4, r5, pc} + + thumb_func_start sub_0807A108 +sub_0807A108: @ 0x0807A108 + push {lr} + ldr r1, _0807A148 @ =gUnk_03004040 + movs r0, #0 + str r0, [r1] + str r0, [r1, #4] + str r0, [r1, #8] + ldr r2, _0807A14C @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _0807A150 @ =0xFFBFFFFF + ands r0, r1 + str r0, [r2, #0x30] + ldr r0, _0807A154 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0x17 + bne _0807A130 + adds r0, r2, #0 + adds r0, #0xa0 + ldrb r0, [r0] + cmp r0, #4 + beq _0807A144 +_0807A130: + adds r1, r2, #0 + adds r1, #0xa0 + ldrb r0, [r1] + subs r0, #4 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _0807A144 + movs r0, #1 + strb r0, [r1] +_0807A144: + pop {pc} + .align 2, 0 +_0807A148: .4byte gUnk_03004040 +_0807A14C: .4byte gUnk_03003F80 +_0807A150: .4byte 0xFFBFFFFF +_0807A154: .4byte gLinkEntity + + thumb_func_start sub_0807A158 +sub_0807A158: @ 0x0807A158 + push {r4, lr} + ldr r4, _0807A178 @ =gUnk_02002A40 + adds r0, r4, #0 + adds r0, #0xb4 + ldrb r0, [r0] + bl sub_0805449C + cmp r0, #0 + bne _0807A17C + adds r0, r4, #0 + adds r0, #0xb5 + ldrb r0, [r0] + bl sub_0805449C + b _0807A17E + .align 2, 0 +_0807A178: .4byte gUnk_02002A40 +_0807A17C: + movs r0, #1 +_0807A17E: + pop {r4, pc} + + thumb_func_start sub_0807A180 +sub_0807A180: @ 0x0807A180 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + sub sp, #0x88 + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + mov r8, r3 + ldr r3, _0807A1B4 @ =0xFFFC0000 + mov r1, sp + movs r2, #0 + bl sub_0806FA48 + mov r1, sp + ldrb r0, [r4, #0x14] + strb r0, [r1, #0x14] + mov r0, sp + adds r1, r5, #0 + adds r2, r6, #0 + mov r3, r8 + bl sub_08003FDE + add sp, #0x88 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_0807A1B4: .4byte 0xFFFC0000 + + thumb_func_start sub_0807A1B8 +sub_0807A1B8: @ 0x0807A1B8 + push {r4, lr} + ldr r4, _0807A1DC @ =gLinkEntity + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0807A1E8 + ldr r1, _0807A1E0 @ =gUnk_03003F80 + strb r0, [r1, #0x12] + ldr r2, _0807A1E4 @ =gUnk_0811C120 + ldrb r0, [r1, #0x12] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_0807A1DC: .4byte gLinkEntity +_0807A1E0: .4byte gUnk_03003F80 +_0807A1E4: .4byte gUnk_0811C120 + + thumb_func_start sub_0807A1E8 +sub_0807A1E8: @ 0x0807A1E8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r1, #0 + mov r8, r2 + movs r1, #0x2e + ldrsh r0, [r5, r1] + adds r0, r0, r6 + ldr r2, _0807A288 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r1, r0, r1 + lsrs r4, r1, #4 + movs r3, #0x3f + ands r4, r3 + movs r7, #0x32 + ldrsh r1, [r5, r7] + add r1, r8 + ldrh r2, [r2, #8] + subs r2, r1, r2 + asrs r2, r2, #4 + ands r2, r3 + lsls r2, r2, #6 + orrs r4, r2 + ldr r2, _0807A28C @ =gLinkEntity + adds r2, #0x38 + ldrb r2, [r2] + bl sub_080002A4 + adds r2, r0, #0 + ldr r1, _0807A290 @ =gUnk_03003F80 + ldrh r0, [r1, #0x24] + cmp r2, r0 + beq _0807A23A + adds r3, r1, #0 + adds r3, #0x37 + movs r0, #0 + strb r0, [r3] + ldrh r7, [r1, #0x24] + cmp r2, r7 + bne _0807A242 +_0807A23A: + adds r3, r1, #0 + ldrh r0, [r3, #0x22] + cmp r4, r0 + beq _0807A24E +_0807A242: + ldr r0, _0807A290 @ =gUnk_03003F80 + movs r1, #0 + strh r4, [r0, #0x22] + strh r2, [r0, #0x24] + strb r1, [r0, #0x11] + adds r3, r0, #0 +_0807A24E: + adds r2, r3, #0 + ldrb r1, [r2, #0x11] + adds r0, r1, #0 + cmp r0, #0xff + beq _0807A25C + adds r0, r1, #1 + strb r0, [r2, #0x11] +_0807A25C: + adds r2, #0x37 + ldrb r1, [r2] + adds r0, r1, #0 + cmp r0, #0xff + beq _0807A26A + adds r0, r1, #1 + strb r0, [r2] +_0807A26A: + ldrb r0, [r3, #0x12] + strb r0, [r3, #0x13] + adds r0, r5, #0 + adds r1, r6, #0 + mov r2, r8 + bl sub_080002B4 + adds r2, r0, #0 + ldr r1, _0807A294 @ =gUnk_08007CAC + bl sub_08007DD6 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807A288: .4byte gUnk_03000BF0 +_0807A28C: .4byte gLinkEntity +_0807A290: .4byte gUnk_03003F80 +_0807A294: .4byte gUnk_08007CAC + + thumb_func_start sub_0807A298 +sub_0807A298: @ 0x0807A298 + movs r1, #0 + strb r1, [r0, #0xb] + ldrb r1, [r0, #0x18] + movs r2, #3 + orrs r1, r2 + strb r1, [r0, #0x18] + ldr r2, _0807A2B4 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2, #0x30] + bx lr + .align 2, 0 +_0807A2B4: .4byte gUnk_03003F80 + + thumb_func_start sub_0807A2B8 +sub_0807A2B8: @ 0x0807A2B8 + push {lr} + bl sub_08008B22 + cmp r0, #0 + beq _0807A2C6 + movs r0, #1 + b _0807A2EC +_0807A2C6: + ldr r0, _0807A2F0 @ =gUnk_03003F80 + ldrb r1, [r0, #2] + movs r0, #0xc8 + ands r0, r1 + cmp r0, #0 + bne _0807A2EA + ldr r1, _0807A2F4 @ =gLinkEntity + adds r0, r1, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + beq _0807A2EA + adds r0, r1, #0 + movs r1, #0x44 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 +_0807A2EA: + movs r0, #0 +_0807A2EC: + pop {pc} + .align 2, 0 +_0807A2F0: .4byte gUnk_03003F80 +_0807A2F4: .4byte gLinkEntity + + thumb_func_start sub_0807A2F8 +sub_0807A2F8: @ 0x0807A2F8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + adds r4, r0, #0 + ldr r0, _0807A364 @ =gUnk_03000BF0 + mov r8, r0 + ldrb r0, [r0, #4] + cmp r0, #8 + bne _0807A312 + b _0807A4F2 +_0807A312: + bl sub_08079778 + orrs r0, r4 + cmp r0, #0 + bne _0807A31E + b _0807A4F2 +_0807A31E: + ldr r7, _0807A368 @ =gLinkEntity + ldrb r1, [r7, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0807A36C + movs r1, #0x2e + ldrsh r2, [r7, r1] + mov r6, r8 + ldrh r0, [r6, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r0, #0x32 + ldrsh r1, [r7, r0] + ldr r0, [r7, #0x48] + ldrb r5, [r0, #5] + adds r0, r1, r5 + ldrh r4, [r6, #8] + subs r0, r0, r4 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r0, r2 + lsls r7, r0, #1 + subs r1, r1, r5 + subs r1, r1, r4 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r2, r1 + lsls r6, r2, #1 + b _0807A3A2 + .align 2, 0 +_0807A364: .4byte gUnk_03000BF0 +_0807A368: .4byte gLinkEntity +_0807A36C: + movs r1, #0x2e + ldrsh r3, [r7, r1] + ldr r0, [r7, #0x48] + ldrb r6, [r0, #2] + adds r1, r3, r6 + mov r2, r8 + ldrh r5, [r2, #6] + subs r1, r1, r5 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r2, #0x32 + ldrsh r0, [r7, r2] + mov r7, r8 + ldrh r2, [r7, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r1, r0 + lsls r7, r1, #1 + subs r3, r3, r6 + subs r3, r3, r5 + asrs r3, r3, #4 + ands r3, r4 + orrs r3, r0 + lsls r6, r3, #1 +_0807A3A2: + movs r0, #0 + mov sb, r0 + ldr r1, _0807A3F4 @ =gLinkEntity + mov sl, r1 +_0807A3AA: + movs r2, #0 + mov r8, r2 + mov r0, sl + mov r1, sp + adds r2, r7, #0 + bl sub_08004202 + adds r7, r0, #0 + lsrs r4, r7, #1 + adds r0, r4, #0 + movs r1, #1 + bl sub_080002E0 + cmp r0, #0 + beq _0807A3FC + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + mov r1, sl + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002C8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r2, sl + ldrb r1, [r2, #0x14] + lsrs r1, r1, #1 + lsls r1, r1, #2 + ldr r2, _0807A3F8 @ =gUnk_0811C1D8 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08007DD6 + cmp r0, #0 + beq _0807A468 + b _0807A400 + .align 2, 0 +_0807A3F4: .4byte gLinkEntity +_0807A3F8: .4byte gUnk_0811C1D8 +_0807A3FC: + movs r0, #1 + mov r8, r0 +_0807A400: + ldr r5, _0807A444 @ =gLinkEntity + adds r0, r5, #0 + mov r1, sp + adds r2, r6, #0 + bl sub_08004202 + adds r6, r0, #0 + lsrs r4, r6, #1 + adds r0, r4, #0 + movs r1, #1 + bl sub_080002E0 + cmp r0, #0 + beq _0807A44C + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002C8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r5, #0x14] + lsrs r1, r1, #1 + lsls r1, r1, #2 + ldr r2, _0807A448 @ =gUnk_0811C1D8 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_08007DD6 + cmp r0, #0 + beq _0807A468 + b _0807A450 + .align 2, 0 +_0807A444: .4byte gLinkEntity +_0807A448: .4byte gUnk_0811C1D8 +_0807A44C: + movs r0, #1 + add r8, r0 +_0807A450: + mov r1, r8 + cmp r1, #2 + bne _0807A45E + mov r2, sb + cmp r2, #0 + bne _0807A46E + b _0807A4F2 +_0807A45E: + movs r0, #1 + add sb, r0 + mov r1, sb + cmp r1, #1 + bls _0807A3AA +_0807A468: + mov r2, sb + cmp r2, #0 + beq _0807A4F2 +_0807A46E: + bl sub_08052660 + cmp r0, #0 + beq _0807A4B0 + ldr r4, _0807A4AC @ =gLinkEntity + adds r0, r4, #0 + mov r1, sp + adds r2, r7, #0 + bl sub_08004202 + adds r7, r0, #0 + lsrs r0, r7, #1 + movs r1, #2 + bl sub_080002E0 + cmp r0, #0 + bne _0807A4F2 + adds r0, r4, #0 + mov r1, sp + adds r2, r6, #0 + bl sub_08004202 + adds r6, r0, #0 + lsrs r0, r6, #1 + movs r1, #2 +_0807A4A0: + bl sub_080002E0 + cmp r0, #0 + beq _0807A4EC + b _0807A4F2 + .align 2, 0 +_0807A4AC: .4byte gLinkEntity +_0807A4B0: + mov r0, sb + cmp r0, #2 + bne _0807A4C2 + ldr r0, _0807A4E8 @ =gLinkEntity + mov r1, sp + adds r2, r7, #0 + bl sub_08004202 + adds r7, r0, #0 +_0807A4C2: + lsrs r0, r7, #1 + movs r1, #1 + bl sub_080002E0 + cmp r0, #0 + bne _0807A4F2 + mov r1, sb + cmp r1, #2 + bne _0807A4E0 + ldr r0, _0807A4E8 @ =gLinkEntity + mov r1, sp + adds r2, r6, #0 + bl sub_08004202 + adds r6, r0, #0 +_0807A4E0: + lsrs r0, r6, #1 + movs r1, #1 + b _0807A4A0 + .align 2, 0 +_0807A4E8: .4byte gLinkEntity +_0807A4EC: + mov r0, sb + adds r0, #1 + b _0807A4F4 +_0807A4F2: + movs r0, #0 +_0807A4F4: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807A500 +sub_0807A500: @ 0x0807A500 + push {r4, r5, r6, lr} + ldr r6, _0807A518 @ =gLinkEntity + ldrb r0, [r6, #0x14] + lsrs r0, r0, #1 + cmp r0, #1 + beq _0807A574 + cmp r0, #1 + bgt _0807A51C + cmp r0, #0 + beq _0807A526 + b _0807A5B4 + .align 2, 0 +_0807A518: .4byte gLinkEntity +_0807A51C: + cmp r0, #2 + beq _0807A554 + cmp r0, #3 + beq _0807A580 + b _0807A5B4 +_0807A526: + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldr r5, _0807A550 @ =gUnk_03000BF0 + ldrh r1, [r5, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r4, #0x3f + ands r0, r4 + movs r2, #0x32 + ldrsh r1, [r6, r2] + ldr r3, [r6, #0x48] + ldrb r2, [r3, #5] + subs r1, r1, r2 + movs r2, #1 + ldrsb r2, [r3, r2] + adds r1, r1, r2 + ldrh r2, [r5, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r4 + b _0807A5AA + .align 2, 0 +_0807A550: .4byte gUnk_03000BF0 +_0807A554: + movs r5, #0x2e + ldrsh r0, [r6, r5] + ldr r4, _0807A570 @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + ldr r2, [r6, #0x48] + movs r5, #0x32 + ldrsh r1, [r6, r5] + ldrb r5, [r2, #5] + adds r1, r1, r5 + b _0807A59A + .align 2, 0 +_0807A570: .4byte gUnk_03000BF0 +_0807A574: + ldr r2, [r6, #0x48] + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldrb r5, [r2, #2] + adds r0, r0, r5 + b _0807A58A +_0807A580: + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldr r2, [r6, #0x48] + ldrb r1, [r2, #2] + subs r0, r0, r1 +_0807A58A: + ldr r4, _0807A5B0 @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r6, r5] +_0807A59A: + ldrb r2, [r2, #1] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + adds r1, r1, r2 + ldrh r2, [r4, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 +_0807A5AA: + lsls r1, r1, #6 + orrs r0, r1 + b _0807A5B6 + .align 2, 0 +_0807A5B0: .4byte gUnk_03000BF0 +_0807A5B4: + movs r0, #0 +_0807A5B6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0807A5B8 +sub_0807A5B8: @ 0x0807A5B8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + ldr r2, _0807A5F8 @ =gUnk_03003F80 + ldrb r3, [r2, #2] + movs r4, #0x80 + adds r0, r4, #0 + ands r0, r3 + cmp r0, #0 + beq _0807A5D2 + b _0807A736 +_0807A5D2: + ldr r1, [r2, #0x30] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0807A5DE + b _0807A736 +_0807A5DE: + adds r0, r2, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + beq _0807A5EA + b _0807A736 +_0807A5EA: + adds r0, r1, #0 + ands r0, r4 + cmp r0, #0 + beq _0807A600 + ldr r7, _0807A5FC @ =gUnk_0800833C + b _0807A63A + .align 2, 0 +_0807A5F8: .4byte gUnk_03003F80 +_0807A5FC: .4byte gUnk_0800833C +_0807A600: + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r1, r0 + cmp r1, #0 + bne _0807A60E + cmp r3, #0 + beq _0807A618 +_0807A60E: + ldr r7, _0807A614 @ =gUnk_0800845C + b _0807A63A + .align 2, 0 +_0807A614: .4byte gUnk_0800845C +_0807A618: + ldrb r0, [r2, #5] + cmp r0, #0 + bne _0807A624 + ldrb r0, [r2, #0x1c] + cmp r0, #0 + beq _0807A62C +_0807A624: + ldr r7, _0807A628 @ =gUnk_080084BC + b _0807A63A + .align 2, 0 +_0807A628: .4byte gUnk_080084BC +_0807A62C: + adds r0, r2, #0 + adds r0, #0xaa + ldrb r0, [r0] + ldr r7, _0807A740 @ =gUnk_080082DC + cmp r0, #0 + beq _0807A63A + ldr r7, _0807A744 @ =gUnk_0800851C +_0807A63A: + mov r0, sb + cmp r0, #0 + beq _0807A6B8 + cmp r0, #0x10 + beq _0807A6B8 + ldr r6, _0807A748 @ =gLinkEntity + ldr r2, [r6, #0x48] + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldrb r3, [r2, #2] + adds r0, r0, r3 + movs r1, #0 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + ldr r1, _0807A74C @ =gUnk_03000BF0 + mov r8, r1 + ldrh r1, [r1, #6] + subs r5, r0, r1 + movs r3, #0x32 + ldrsh r0, [r6, r3] + movs r1, #1 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + mov r2, r8 + ldrh r1, [r2, #8] + subs r4, r0, r1 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_080086B4 + cmp r0, #0 + beq _0807A688 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + movs r3, #1 + bl sub_0807A750 +_0807A688: + movs r3, #0x2e + ldrsh r1, [r6, r3] + ldr r2, [r6, #0x48] + ldrb r0, [r2, #2] + subs r1, r1, r0 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + mov r2, r8 + ldrh r0, [r2, #6] + subs r5, r1, r0 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_080086B4 + cmp r0, #0 + beq _0807A6B8 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + movs r3, #3 + bl sub_0807A750 +_0807A6B8: + mov r3, sb + cmp r3, #8 + beq _0807A736 + cmp r3, #0x18 + beq _0807A736 + ldr r6, _0807A748 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, [r6, #0x48] + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + ldr r3, _0807A74C @ =gUnk_03000BF0 + mov r8, r3 + ldrh r0, [r3, #6] + subs r5, r1, r0 + movs r1, #0x32 + ldrsh r0, [r6, r1] + ldrb r3, [r2, #5] + adds r0, r0, r3 + movs r1, #1 + ldrsb r1, [r2, r1] + adds r0, r0, r1 + mov r2, r8 + ldrh r1, [r2, #8] + subs r4, r0, r1 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_080086B4 + cmp r0, #0 + beq _0807A706 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + movs r3, #2 + bl sub_0807A750 +_0807A706: + movs r3, #0x32 + ldrsh r1, [r6, r3] + ldr r2, [r6, #0x48] + ldrb r0, [r2, #5] + subs r1, r1, r0 + movs r0, #1 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + mov r2, r8 + ldrh r0, [r2, #8] + subs r4, r1, r0 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_080086B4 + cmp r0, #0 + beq _0807A736 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r7, #0 + movs r3, #0 + bl sub_0807A750 +_0807A736: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807A740: .4byte gUnk_080082DC +_0807A744: .4byte gUnk_0800851C +_0807A748: .4byte gLinkEntity +_0807A74C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807A750 +sub_0807A750: @ 0x0807A750 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r6, r1, #0 + mov r8, r2 + adds r5, r3, #0 + movs r0, #1 + ands r0, r5 + cmp r0, #0 + bne _0807A76C + movs r4, #0xf + ands r4, r6 + b _0807A770 +_0807A76C: + movs r4, #0xf + ands r4, r7 +_0807A770: + cmp r4, #0 + bne _0807A776 + b _0807A88E +_0807A776: + cmp r4, #0xf + bne _0807A77C + b _0807A88E +_0807A77C: + lsrs r0, r7, #4 + movs r2, #0x3f + ands r0, r2 + lsrs r1, r6, #4 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _0807A7A8 @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002E0 + adds r1, r0, #0 + cmp r1, #0xf + bls _0807A7AE + cmp r1, #0xff + beq _0807A7AC + mov r2, r8 + adds r0, r1, r2 + subs r0, #0x10 + ldrb r1, [r0] + b _0807A7AE + .align 2, 0 +_0807A7A8: .4byte gLinkEntity +_0807A7AC: + movs r1, #0xf +_0807A7AE: + ldr r0, _0807A7D8 @ =gUnk_0800823C + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + movs r0, #1 + ands r0, r5 + cmp r0, #0 + bne _0807A824 + movs r0, #0xf + ands r0, r7 + movs r2, #0x80 + lsls r2, r2, #8 + asrs r2, r0 + cmp r5, #0 + bne _0807A7F4 + ldr r3, _0807A7DC @ =gLinkEntity + cmp r4, #0xe + bgt _0807A7F0 + lsls r0, r4, #1 + adds r1, r0, r1 + b _0807A7E8 + .align 2, 0 +_0807A7D8: .4byte gUnk_0800823C +_0807A7DC: .4byte gLinkEntity +_0807A7E0: + adds r1, #2 + adds r4, #1 + cmp r4, #0xe + bgt _0807A7F0 +_0807A7E8: + ldrh r0, [r1] + ands r0, r2 + cmp r0, #0 + bne _0807A7E0 +_0807A7F0: + subs r4, #1 + b _0807A816 +_0807A7F4: + ldr r3, _0807A800 @ =gLinkEntity + cmp r4, #0 + ble _0807A814 + lsls r0, r4, #1 + adds r1, r0, r1 + b _0807A80C + .align 2, 0 +_0807A800: .4byte gLinkEntity +_0807A804: + subs r1, #2 + subs r4, #1 + cmp r4, #0 + ble _0807A814 +_0807A80C: + ldrh r0, [r1] + ands r0, r2 + cmp r0, #0 + bne _0807A804 +_0807A814: + adds r4, #1 +_0807A816: + movs r0, #0xf + ands r0, r6 + subs r0, r4, r0 + ldrh r1, [r3, #0x32] + adds r0, r0, r1 + strh r0, [r3, #0x32] + b _0807A88E +_0807A824: + movs r3, #0xf + ands r6, r3 + lsls r0, r6, #1 + adds r0, r0, r1 + ldrh r2, [r0] + cmp r5, #1 + bne _0807A85C + subs r0, r3, r4 + lsrs r2, r0 + ldr r3, _0807A858 @ =gLinkEntity + cmp r4, #0 + ble _0807A854 + ands r5, r2 + cmp r5, #0 + beq _0807A854 + movs r1, #1 +_0807A844: + lsrs r2, r2, #1 + subs r4, #1 + cmp r4, #0 + ble _0807A854 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0807A844 +_0807A854: + adds r4, #1 + b _0807A882 + .align 2, 0 +_0807A858: .4byte gLinkEntity +_0807A85C: + lsls r2, r4 + ldr r3, _0807A86C @ =gLinkEntity + cmp r4, #0xe + bgt _0807A880 + movs r1, #0x80 + lsls r1, r1, #8 + b _0807A878 + .align 2, 0 +_0807A86C: .4byte gLinkEntity +_0807A870: + lsls r2, r2, #1 + adds r4, #1 + cmp r4, #0xe + bgt _0807A880 +_0807A878: + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0807A870 +_0807A880: + subs r4, #1 +_0807A882: + movs r0, #0xf + ands r0, r7 + subs r0, r4, r0 + ldrh r2, [r3, #0x2e] + adds r0, r0, r2 + strh r0, [r3, #0x2e] +_0807A88E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807A894 +sub_0807A894: @ 0x0807A894 + push {lr} + ldrb r1, [r0, #0x15] + cmp r1, #8 + beq _0807A8BA + cmp r1, #8 + bgt _0807A8A6 + cmp r1, #0 + beq _0807A8B0 + b _0807A8C8 +_0807A8A6: + cmp r1, #0x10 + beq _0807A8B6 + cmp r1, #0x18 + beq _0807A8C0 + b _0807A8C8 +_0807A8B0: + movs r2, #8 + rsbs r2, r2, #0 + b _0807A8CA +_0807A8B6: + movs r2, #5 + b _0807A8CA +_0807A8BA: + movs r2, #0 + movs r1, #8 + b _0807A8CC +_0807A8C0: + movs r2, #0 + movs r1, #8 + rsbs r1, r1, #0 + b _0807A8CC +_0807A8C8: + movs r2, #0 +_0807A8CA: + movs r1, #0 +_0807A8CC: + bl sub_080002B4 + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_505 +nullsub_505: @ 0x0807A8D4 + bx lr + .align 2, 0 + + thumb_func_start sub_0807A8D8 +sub_0807A8D8: @ 0x0807A8D8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + ldr r0, _0807AA5C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807A8F0 + b _0807A9F6 +_0807A8F0: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r7, _0807AA60 @ =gUnk_03000BF0 + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r6, #0x3f + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + adds r2, #1 + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _0807AA64 @ =gLinkEntity + adds r1, #0x38 + mov sb, r1 + ldrb r1, [r1] + bl sub_080002EC + adds r4, r0, #0 + movs r0, #0x20 + mov r8, r0 + ands r4, r0 + cmp r4, #0 + beq _0807A94E + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldrh r0, [r7, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r5, r2] + ldrh r2, [r7, #8] + adds r2, #1 + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + bl sub_0807AAF8 +_0807A94E: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldrh r1, [r7, #6] + subs r1, #2 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + mov r2, sb + ldrb r1, [r2] + bl sub_080002EC + adds r4, r0, #0 + mov r0, r8 + ands r4, r0 + cmp r4, #0 + beq _0807A9A2 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldrh r0, [r7, #6] + subs r0, #2 + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r5, r2] + ldrh r2, [r7, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + bl sub_0807AAF8 +_0807A9A2: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldrh r1, [r7, #6] + adds r1, #2 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + mov r2, sb + ldrb r1, [r2] + bl sub_080002EC + adds r4, r0, #0 + mov r0, r8 + ands r4, r0 + cmp r4, #0 + beq _0807A9F6 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldrh r0, [r7, #6] + adds r0, #2 + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r5, r2] + ldrh r2, [r7, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + bl sub_0807AAF8 +_0807A9F6: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r7, _0807AA60 @ =gUnk_03000BF0 + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r6, #0x3f + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r5, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _0807AA64 @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002EC + adds r4, r0, #0 + movs r0, #0x20 + ands r0, r4 + cmp r0, #0 + beq _0807AA4C + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldrh r0, [r7, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r5, r2] + ldrh r2, [r7, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + bl sub_0807AAF8 +_0807AA4C: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _0807AA68 + adds r0, r5, #0 + bl sub_0807AABC + b _0807AA76 + .align 2, 0 +_0807AA5C: .4byte gUnk_03003F80 +_0807AA60: .4byte gUnk_03000BF0 +_0807AA64: .4byte gLinkEntity +_0807AA68: + movs r0, #4 + ands r0, r4 + cmp r0, #0 + beq _0807AA76 + adds r0, r5, #0 + bl sub_0807AA80 +_0807AA76: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807AA80 +sub_0807AA80: @ 0x0807AA80 + push {lr} + adds r3, r0, #0 + ldr r0, _0807AAB8 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0807AAB6 + adds r0, r3, #0 + adds r0, #0x38 + movs r1, #2 + strb r1, [r0] + movs r1, #0x36 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _0807AAB6 + ldrb r2, [r3, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r3, #0x1b] + ldrb r0, [r3, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r3, #0x19] +_0807AAB6: + pop {pc} + .align 2, 0 +_0807AAB8: .4byte gUnk_03003F80 + + thumb_func_start sub_0807AABC +sub_0807AABC: @ 0x0807AABC + push {lr} + adds r3, r0, #0 + ldr r0, _0807AAF4 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x40 + ands r0, r1 + cmp r0, #0 + bne _0807AAF2 + adds r0, r3, #0 + adds r0, #0x38 + movs r1, #1 + strb r1, [r0] + movs r1, #0x36 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _0807AAF2 + ldrb r2, [r3, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r3, #0x1b] + ldrb r0, [r3, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r3, #0x19] +_0807AAF2: + pop {pc} + .align 2, 0 +_0807AAF4: .4byte gUnk_03003F80 + + thumb_func_start sub_0807AAF8 +sub_0807AAF8: @ 0x0807AAF8 + push {r4, lr} + adds r3, r0, #0 + adds r2, r1, #0 + movs r1, #0x36 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _0807AB3C + adds r0, r3, #0 + adds r0, #0x38 + ldrb r0, [r0] + lsls r0, r0, #0x1e + orrs r2, r0 + movs r3, #0 + ldr r0, _0807AB40 @ =gUnk_03003F80 + ldr r1, [r0, #0x40] + adds r4, r0, #0 + cmp r1, r2 + beq _0807AB32 + adds r1, r4, #0 + adds r1, #0x40 +_0807AB20: + ldr r0, [r1] + stm r1!, {r2} + adds r2, r0, #0 + adds r3, #1 + cmp r3, #0xe + bhi _0807AB32 + ldr r0, [r1] + cmp r0, r2 + bne _0807AB20 +_0807AB32: + lsls r0, r3, #2 + adds r1, r4, #0 + adds r1, #0x40 + adds r0, r0, r1 + str r2, [r0] +_0807AB3C: + pop {r4, pc} + .align 2, 0 +_0807AB40: .4byte gUnk_03003F80 + + thumb_func_start sub_0807AB44 +sub_0807AB44: @ 0x0807AB44 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + adds r7, r1, #0 + mov r8, r2 + movs r1, #0x2e + ldrsh r0, [r6, r1] + adds r0, r0, r7 + ldr r2, _0807ABF0 @ =gUnk_03000BF0 + mov sb, r2 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + mov sl, r3 + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r6, r5] + add r1, r8 + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r6, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + movs r1, #0xb + bl sub_0806FC50 + adds r5, r0, #0 + cmp r5, #0 + beq _0807AC44 + ldrh r0, [r5, #6] + cmp r0, #0x76 + bne _0807ABF4 + movs r0, #0x2a + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0807AC44 + lsls r2, r7, #0x10 + mov r0, r8 + lsls r3, r0, #0x10 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA48 + adds r0, r4, #0 + bl sub_08004168 + ldrh r0, [r5, #6] + movs r2, #0x2e + ldrsh r1, [r4, r2] + mov r3, sb + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + mov r5, sl + ands r1, r5 + movs r3, #0x32 + ldrsh r2, [r4, r3] + mov r5, sb + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + mov r3, sl + ands r2, r3 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 + b _0807AC44 + .align 2, 0 +_0807ABF0: .4byte gUnk_03000BF0 +_0807ABF4: + movs r0, #0x2a + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0807AC44 + lsls r2, r7, #0x10 + mov r0, r8 + lsls r3, r0, #0x10 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA48 + str r5, [r4, #0x54] + ldr r0, _0807AC50 @ =0x0000404F + movs r2, #0x2e + ldrsh r1, [r4, r2] + mov r3, sb + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + mov r5, sl + ands r1, r5 + movs r3, #0x32 + ldrsh r2, [r4, r3] + mov r5, sb + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + mov r3, sl + ands r2, r3 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0807AC44: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807AC50: .4byte 0x0000404F + + thumb_func_start sub_0807AC54 +sub_0807AC54: @ 0x0807AC54 + push {lr} + adds r2, r0, #0 + ldr r0, _0807AC74 @ =gUnk_03003F80 + ldrb r1, [r0, #0x11] + adds r3, r0, #0 + cmp r1, #0 + beq _0807ACC6 + ldrb r0, [r3, #0x12] + cmp r0, #0x2a + beq _0807ACA8 + cmp r0, #0x2a + bgt _0807AC78 + cmp r0, #0x1e + beq _0807AC82 + b _0807ACC6 + .align 2, 0 +_0807AC74: .4byte gUnk_03003F80 +_0807AC78: + cmp r0, #0x2b + beq _0807AC90 + cmp r0, #0x2c + beq _0807ACB6 + b _0807ACC6 +_0807AC82: + ldrh r0, [r2, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strh r1, [r2, #0x2e] +_0807AC90: + movs r0, #0 + movs r1, #0x1d + strb r1, [r2, #0xc] + strb r0, [r2, #0xd] + strh r0, [r2, #0x30] + ldr r0, _0807ACA4 @ =0x000002CF + strh r0, [r3, #8] + movs r0, #1 + b _0807ACC8 + .align 2, 0 +_0807ACA4: .4byte 0x000002CF +_0807ACA8: + ldrh r0, [r2, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #8 + orrs r1, r0 + strh r1, [r2, #0x2e] +_0807ACB6: + movs r0, #0 + movs r1, #0x1d + strb r1, [r2, #0xc] + movs r1, #1 + strb r1, [r2, #0xd] + strh r0, [r2, #0x30] + movs r0, #1 + b _0807ACC8 +_0807ACC6: + movs r0, #0 +_0807ACC8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807ACCC +sub_0807ACCC: @ 0x0807ACCC + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x42 + movs r0, #0 + strb r0, [r1] + movs r0, #0x72 + bl sub_0807CA84 + movs r1, #0xc0 + cmp r0, #1 + bne _0807ACF4 + adds r1, #0x40 +_0807ACF4: + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r1, r0 + ble _0807AD18 + strh r1, [r4, #0x24] + ldr r0, _0807AD14 @ =gUnk_03003F80 + ldrb r1, [r0, #0xd] + strb r1, [r4, #0x15] + adds r0, #0x26 + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _0807ADB4 + b _0807AD1E + .align 2, 0 +_0807AD14: .4byte gUnk_03003F80 +_0807AD18: + ldrh r0, [r4, #0x24] + subs r0, #4 + strh r0, [r4, #0x24] +_0807AD1E: + ldr r2, _0807AD3C @ =gUnk_03003F80 + adds r1, r2, #0 + adds r1, #0x89 + ldrb r0, [r1] + cmp r0, #0 + bne _0807AD40 + adds r0, r4, #0 + bl sub_0807ADB8 + cmp r0, #0 + bne _0807AD74 + adds r0, r4, #0 + bl sub_0807AE20 + b _0807AD74 + .align 2, 0 +_0807AD3C: .4byte gUnk_03003F80 +_0807AD40: + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807AD52 + adds r0, r4, #0 + bl sub_0807ADB8 + b _0807AD74 +_0807AD52: + adds r2, #0x26 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0807ADA0 @ =0x00000163 + bl sub_080A3268 +_0807AD74: + ldr r0, _0807ADA4 @ =gUnk_03003F80 + adds r0, #0x26 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807ADA8 + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #4 + orrs r0, r1 + strb r0, [r2] + subs r2, #0x13 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + b _0807ADB2 + .align 2, 0 +_0807ADA0: .4byte 0x00000163 +_0807ADA4: .4byte gUnk_03003F80 +_0807ADA8: + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 +_0807ADB2: + strb r0, [r2] +_0807ADB4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807ADB8 +sub_0807ADB8: @ 0x0807ADB8 + push {r4, lr} + adds r2, r0, #0 + ldr r3, _0807ADF4 @ =gUnk_03003F80 + adds r0, r3, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0807AE1C + movs r0, #0x26 + adds r0, r0, r3 + mov ip, r0 + ldrb r0, [r0] + movs r1, #0x80 + eors r0, r1 + mov r1, ip + strb r0, [r1] + movs r1, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + beq _0807ADF8 + adds r1, r3, #0 + adds r1, #0x89 + movs r0, #0x78 + strb r0, [r1] + b _0807AE0E + .align 2, 0 +_0807ADF4: .4byte gUnk_03003F80 +_0807ADF8: + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r3, #0 + adds r0, #0x89 + strb r4, [r0] +_0807AE0E: + ldr r0, _0807AE18 @ =0x00000163 + bl sub_080A3268 + movs r0, #1 + b _0807AE1E + .align 2, 0 +_0807AE18: .4byte 0x00000163 +_0807AE1C: + movs r0, #0 +_0807AE1E: + pop {r4, pc} + + thumb_func_start sub_0807AE20 +sub_0807AE20: @ 0x0807AE20 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0x17 + bne _0807AE32 + ldr r0, _0807AE58 @ =gUnk_03003F80 + ldrb r0, [r0, #0xa] + cmp r0, #0 + bne _0807AE74 +_0807AE32: + ldr r0, _0807AE5C @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #0 + bne _0807AE74 + ldr r0, _0807AE58 @ =gUnk_03003F80 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _0807AE74 + movs r0, #0x72 + bl sub_0807CA84 + cmp r0, #1 + bne _0807AE60 + movs r0, #0xe0 + lsls r0, r0, #1 + b _0807AE64 + .align 2, 0 +_0807AE58: .4byte gUnk_03003F80 +_0807AE5C: .4byte gUnk_03000BF0 +_0807AE60: + movs r0, #0xc0 + lsls r0, r0, #1 +_0807AE64: + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08079520 + movs r0, #0xb1 + lsls r0, r0, #1 + bl sub_080A3268 +_0807AE74: + movs r0, #0x10 + bl sub_080793E4 + cmp r0, #0 + beq _0807AEA8 + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0x14 + strb r0, [r1] + adds r1, #5 + movs r0, #4 + strb r0, [r1] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + movs r0, #0x7a + bl sub_080A3268 +_0807AEA8: + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807AECC + ldr r0, _0807AEC8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0807AEDE + adds r0, r4, #0 + movs r1, #4 + bl sub_080A2A84 + b _0807AEDE + .align 2, 0 +_0807AEC8: .4byte gUnk_030010A0 +_0807AECC: + ldr r0, _0807AEE0 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0807AEDE + adds r0, r4, #0 + bl sub_080A2A64 +_0807AEDE: + pop {r4, pc} + .align 2, 0 +_0807AEE0: .4byte gUnk_030010A0 + + thumb_func_start sub_0807AEE4 +sub_0807AEE4: @ 0x0807AEE4 + push {r4, lr} + ldr r0, _0807AFE4 @ =gUnk_03003F80 + adds r4, r0, #0 + adds r4, #0xac + movs r0, #0 + strh r0, [r4] + movs r0, #0x48 + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF02 + ldrh r0, [r4] + movs r1, #1 + orrs r0, r1 + strh r0, [r4] +_0807AF02: + movs r0, #0x49 + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF14 + ldrh r0, [r4] + movs r1, #2 + orrs r0, r1 + strh r0, [r4] +_0807AF14: + movs r0, #0x4a + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF26 + ldrh r0, [r4] + movs r1, #4 + orrs r0, r1 + strh r0, [r4] +_0807AF26: + movs r0, #0x4b + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF38 + ldrh r0, [r4] + movs r1, #8 + orrs r0, r1 + strh r0, [r4] +_0807AF38: + movs r0, #0x4c + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF4A + ldrh r0, [r4] + movs r1, #0x10 + orrs r0, r1 + strh r0, [r4] +_0807AF4A: + movs r0, #0x4d + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF5C + ldrh r0, [r4] + movs r1, #0x20 + orrs r0, r1 + strh r0, [r4] +_0807AF5C: + movs r0, #0x4e + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF6E + ldrh r0, [r4] + movs r1, #0x40 + orrs r0, r1 + strh r0, [r4] +_0807AF6E: + movs r0, #0x4f + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF80 + ldrh r0, [r4] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r4] +_0807AF80: + movs r0, #6 + bl sub_0807CA84 + cmp r0, #1 + bne _0807AF96 + ldrh r0, [r4] + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r4] +_0807AF96: + movs r0, #0x73 + bl sub_0807CA84 + cmp r0, #1 + bne _0807AFAC + ldrh r0, [r4] + movs r3, #0x80 + lsls r3, r3, #2 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r4] +_0807AFAC: + movs r0, #0x74 + bl sub_0807CA84 + cmp r0, #1 + bne _0807AFC6 + ldr r0, _0807AFE4 @ =gUnk_03003F80 + adds r0, #0xac + ldrh r2, [r0] + movs r3, #0x80 + lsls r3, r3, #3 + adds r1, r3, #0 + orrs r1, r2 + strh r1, [r0] +_0807AFC6: + movs r0, #0x75 + bl sub_0807CA84 + cmp r0, #1 + bne _0807AFE0 + ldr r0, _0807AFE4 @ =gUnk_03003F80 + adds r0, #0xac + ldrh r2, [r0] + movs r3, #0x80 + lsls r3, r3, #4 + adds r1, r3, #0 + orrs r1, r2 + strh r1, [r0] +_0807AFE0: + pop {r4, pc} + .align 2, 0 +_0807AFE4: .4byte gUnk_03003F80 + + thumb_func_start sub_0807AFE8 +sub_0807AFE8: @ 0x0807AFE8 + push {lr} + bl sub_08077B20 + ldr r0, _0807B00C @ =gLinkEntity + movs r1, #0x43 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0807B004 + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] +_0807B004: + ldr r1, _0807B010 @ =gUnk_03003F80 + movs r0, #9 + strb r0, [r1, #0xc] + pop {pc} + .align 2, 0 +_0807B00C: .4byte gLinkEntity +_0807B010: .4byte gUnk_03003F80 + + thumb_func_start sub_0807B014 +sub_0807B014: @ 0x0807B014 + push {lr} + ldr r2, _0807B03C @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0807B044 + ldr r0, _0807B040 @ =gUnk_02002A40 + adds r1, r0, #0 + adds r1, #0xaa + adds r0, #0xab + ldrb r1, [r1] + ldrb r0, [r0] + cmp r1, r0 + bne _0807B044 + movs r0, #0xf + b _0807B066 + .align 2, 0 +_0807B03C: .4byte gUnk_03003F80 +_0807B040: .4byte gUnk_02002A40 +_0807B044: + adds r0, r2, #0 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807B064 + ldr r0, _0807B060 @ =gUnk_02002A40 + adds r0, #0xaa + ldrb r0, [r0] + cmp r0, #8 + bhi _0807B064 + movs r0, #0x16 + b _0807B066 + .align 2, 0 +_0807B060: .4byte gUnk_02002A40 +_0807B064: + movs r0, #0 +_0807B066: + pop {pc} + + thumb_func_start sub_0807B068 +sub_0807B068: @ 0x0807B068 + push {lr} + ldr r2, _0807B090 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1e] + ldrb r0, [r2, #4] + orrs r0, r1 + cmp r0, #0 + bne _0807B0C2 + adds r0, r2, #0 + adds r0, #0x26 + ldrb r1, [r0] + cmp r1, #0 + beq _0807B0A4 + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807B098 + ldr r0, _0807B094 @ =0x00000C1C + strh r0, [r2, #8] + b _0807B0C2 + .align 2, 0 +_0807B090: .4byte gUnk_03003F80 +_0807B094: .4byte 0x00000C1C +_0807B098: + ldr r0, _0807B0A0 @ =0x00000C0C + strh r0, [r2, #8] + b _0807B0C2 + .align 2, 0 +_0807B0A0: .4byte 0x00000C0C +_0807B0A4: + ldrb r1, [r2, #0xd] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0807B0B8 + ldrh r0, [r2, #8] + ldr r1, _0807B0B4 @ =0x00000C18 + b _0807B0BC + .align 2, 0 +_0807B0B4: .4byte 0x00000C18 +_0807B0B8: + ldrh r0, [r2, #8] + ldr r1, _0807B0C4 @ =0x00000C04 +_0807B0BC: + cmp r0, r1 + beq _0807B0C2 + strh r1, [r2, #8] +_0807B0C2: + pop {pc} + .align 2, 0 +_0807B0C4: .4byte 0x00000C04 + + thumb_func_start sub_0807B0C8 +sub_0807B0C8: @ 0x0807B0C8 + push {r4, lr} + ldr r4, _0807B0F8 @ =gLinkEntity + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806FEBC + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FEBC + adds r0, r4, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806FEBC + adds r0, r4, #0 + movs r1, #3 + movs r2, #0 + bl sub_0806FEBC + pop {r4, pc} + .align 2, 0 +_0807B0F8: .4byte gLinkEntity + + thumb_func_start sub_0807B0FC +sub_0807B0FC: @ 0x0807B0FC + push {lr} + ldr r2, _0807B110 @ =gUnk_0811C27C + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807B110: .4byte gUnk_0811C27C + + thumb_func_start sub_0807B114 +sub_0807B114: @ 0x0807B114 + movs r1, #1 + strb r1, [r0, #0xd] + ldr r1, _0807B124 @ =gUnk_03003F80 + adds r1, #0x38 + ldrb r1, [r1] + adds r0, #0x6c + strb r1, [r0] + bx lr + .align 2, 0 +_0807B124: .4byte gUnk_03003F80 + + thumb_func_start sub_0807B128 +sub_0807B128: @ 0x0807B128 + push {lr} + ldr r2, _0807B140 @ =gUnk_0811C284 + adds r1, r0, #0 + adds r1, #0x6c + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807B140: .4byte gUnk_0811C284 + + thumb_func_start sub_0807B144 +sub_0807B144: @ 0x0807B144 + push {lr} + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + ldrb r1, [r0, #0x14] + lsls r1, r1, #2 + strb r1, [r0, #0x15] + movs r1, #0xa0 + strh r1, [r0, #0x24] + movs r1, #0x80 + lsls r1, r1, #0xb + str r1, [r0, #0x20] + ldr r1, _0807B170 @ =gUnk_03003F80 + movs r0, #0x81 + strb r0, [r1, #2] + bl sub_080791BC + pop {pc} + .align 2, 0 +_0807B170: .4byte gUnk_03003F80 + + thumb_func_start nullsub_506 +nullsub_506: @ 0x0807B174 + bx lr + .align 2, 0 + + thumb_func_start sub_0807B178 +sub_0807B178: @ 0x0807B178 + push {lr} + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + movs r2, #0 + movs r1, #0x10 + strb r1, [r0, #0x15] + strh r2, [r0, #0x24] + movs r1, #0x80 + lsls r1, r1, #0xb + str r1, [r0, #0x20] + ldr r1, _0807B1A4 @ =gUnk_03003F80 + movs r0, #0x81 + strb r0, [r1, #2] + bl sub_080791BC + pop {pc} + .align 2, 0 +_0807B1A4: .4byte gUnk_03003F80 + + thumb_func_start sub_0807B1A8 +sub_0807B1A8: @ 0x0807B1A8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0807B1D4 @ =gUnk_0811C298 + adds r0, #0x6e + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r0, _0807B1D8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0807B1D0 + adds r0, r4, #0 + bl sub_080A2B80 +_0807B1D0: + pop {r4, pc} + .align 2, 0 +_0807B1D4: .4byte gUnk_0811C298 +_0807B1D8: .4byte gUnk_030010A0 + + thumb_func_start sub_0807B1DC +sub_0807B1DC: @ 0x0807B1DC + adds r2, r0, #0 + adds r2, #0x6e + ldrb r1, [r2] + adds r1, #1 + strb r1, [r2] + movs r1, #0x1e + strb r1, [r0, #0xe] + bx lr + + thumb_func_start sub_0807B1EC +sub_0807B1EC: @ 0x0807B1EC + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807B212 + adds r1, r2, #0 + adds r1, #0x6e + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r2, #0x20] + ldr r1, _0807B214 @ =gUnk_03003F80 + ldr r0, _0807B218 @ =0x000002C2 + strh r0, [r1, #8] +_0807B212: + pop {pc} + .align 2, 0 +_0807B214: .4byte gUnk_03003F80 +_0807B218: .4byte 0x000002C2 + + thumb_func_start sub_0807B21C +sub_0807B21C: @ 0x0807B21C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _0807B236 + movs r1, #0x80 + lsls r1, r1, #3 + adds r0, r4, #0 + bl sub_08003FC4 + b _0807B240 +_0807B236: + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r4, #0 + bl sub_08003FC4 +_0807B240: + ldr r1, [r4, #0x20] + ldr r0, _0807B260 @ =0xFFFF8000 + cmp r1, r0 + bge _0807B25E + movs r1, #0 + movs r0, #0x78 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x6e + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldr r0, [r4, #0x34] + str r0, [r4, #0x68] +_0807B25E: + pop {r4, pc} + .align 2, 0 +_0807B260: .4byte 0xFFFF8000 + + thumb_func_start sub_0807B264 +sub_0807B264: @ 0x0807B264 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xf] + adds r0, #2 + strb r0, [r4, #0xf] + ldr r1, _0807B2B4 @ =gUnk_080C9160 + ldrb r0, [r4, #0xf] + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r1, [r0, r2] + asrs r1, r1, #7 + lsls r1, r1, #0x10 + ldr r0, [r4, #0x68] + adds r0, r0, r1 + str r0, [r4, #0x34] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807B2B0 + movs r0, #0x50 + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r4, #0x20] + adds r1, r4, #0 + adds r1, #0x6e + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + movs r0, #0xa9 + lsls r0, r0, #1 + bl sub_080A3268 +_0807B2B0: + pop {r4, pc} + .align 2, 0 +_0807B2B4: .4byte gUnk_080C9160 + + thumb_func_start sub_0807B2B8 +sub_0807B2B8: @ 0x0807B2B8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0807B2F0 @ =0xFFFFE000 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0807B2EC + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807B2EC + adds r0, r4, #0 + adds r0, #0x6d + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807B2F4 @ =gUnk_0813AD88 + adds r0, r0, r1 + bl sub_08080840 +_0807B2EC: + pop {r4, pc} + .align 2, 0 +_0807B2F0: .4byte 0xFFFFE000 +_0807B2F4: .4byte gUnk_0813AD88 + + thumb_func_start sub_0807B2F8 +sub_0807B2F8: @ 0x0807B2F8 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x6e + ldrb r0, [r1] + cmp r0, #0 + bne _0807B310 + adds r0, #1 + strb r0, [r1] + adds r0, r2, #0 + bl sub_0809D738 +_0807B310: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807B314 +sub_0807B314: @ 0x0807B314 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + ldr r0, _0807B3A0 @ =0x000007FF + cmp r5, r0 + bhi _0807B410 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0801AF8C + adds r0, r6, #0 + bl sub_0808094C + adds r2, r0, #0 + lsls r1, r5, #1 + ldr r3, _0807B3A4 @ =0x00006004 + adds r0, r2, r3 + adds r0, r0, r1 + ldrh r0, [r0] + mov ip, r0 + lsls r1, r4, #1 + adds r0, r2, #4 + adds r0, r0, r1 + mov r1, ip + strh r1, [r0] + ldr r0, _0807B3A8 @ =gUnk_080B3E80 + adds r0, r5, r0 + ldrb r3, [r0] + ldr r1, _0807B3AC @ =0x00002004 + adds r0, r2, r1 + adds r0, r0, r4 + strb r3, [r0] + ldr r7, _0807B3B0 @ =gUnk_03000BF0 + ldrb r1, [r7, #0xf] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0807B36C + ldr r0, _0807B3B4 @ =gUnk_02025EB0 + ldr r1, _0807B3AC @ =0x00002004 + adds r0, r0, r1 + adds r0, r4, r0 + strb r3, [r0] +_0807B36C: + ldr r3, _0807B3B8 @ =0x0000B004 + adds r1, r2, r3 + adds r1, r1, r4 + ldr r0, _0807B3BC @ =gUnk_080B37A0 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r1] + ldrb r1, [r7, #0xf] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0807B430 + movs r1, #0x3f + ands r1, r4 + lsls r1, r1, #1 + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + cmp r6, #2 + beq _0807B3C4 + lsls r1, r1, #1 + ldr r0, _0807B3C0 @ =gUnk_02019EE0 + b _0807B3C8 + .align 2, 0 +_0807B3A0: .4byte 0x000007FF +_0807B3A4: .4byte 0x00006004 +_0807B3A8: .4byte gUnk_080B3E80 +_0807B3AC: .4byte 0x00002004 +_0807B3B0: .4byte gUnk_03000BF0 +_0807B3B4: .4byte gUnk_02025EB0 +_0807B3B8: .4byte 0x0000B004 +_0807B3BC: .4byte gUnk_080B37A0 +_0807B3C0: .4byte gUnk_02019EE0 +_0807B3C4: + lsls r1, r1, #1 + ldr r0, _0807B400 @ =gUnk_02002F00 +_0807B3C8: + adds r3, r1, r0 + mov r1, ip + lsls r0, r1, #3 + ldr r1, _0807B404 @ =0x00007004 + adds r0, r0, r1 + adds r0, r2, r0 + ldrh r1, [r0] + strh r1, [r3] + ldrh r1, [r0, #2] + strh r1, [r3, #2] + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r3, r1 + ldrh r1, [r0, #4] + strh r1, [r2] + movs r2, #0x81 + lsls r2, r2, #1 + adds r1, r3, r2 + ldrh r0, [r0, #6] + strh r0, [r1] + ldr r0, _0807B408 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #1 + beq _0807B430 + ldr r1, _0807B40C @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + b _0807B430 + .align 2, 0 +_0807B400: .4byte gUnk_02002F00 +_0807B404: .4byte 0x00007004 +_0807B408: .4byte gUnk_03000BF0 +_0807B40C: .4byte gUnk_02000070 +_0807B410: + ldr r0, _0807B424 @ =0x00003FFF + cmp r5, r0 + bls _0807B428 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0800015E + b _0807B430 + .align 2, 0 +_0807B424: .4byte 0x00003FFF +_0807B428: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0807BA8C +_0807B430: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807B434 +sub_0807B434: @ 0x0807B434 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_080002B0 + cmp r0, #0x37 + bhi _0807B44A + cmp r0, #0x36 + blo _0807B44A + movs r0, #0 + b _0807B462 +_0807B44A: + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r5, #0x18 + lsrs r1, r1, #0x18 + bl sub_080002C8 + adds r1, r0, #0 + movs r0, #0xd + eors r1, r0 + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f +_0807B462: + pop {r4, r5, pc} + + thumb_func_start sub_0807B464 +sub_0807B464: @ 0x0807B464 + push {lr} + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + bl sub_080002C8 + movs r1, #0 + cmp r0, #0x56 + bne _0807B47A + movs r1, #1 +_0807B47A: + adds r0, r1, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807B480 +sub_0807B480: @ 0x0807B480 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + movs r1, #2 + bl sub_0807B464 + cmp r0, #0 + beq _0807B558 + adds r0, r6, #0 + subs r0, #0x40 + movs r1, #2 + bl sub_0807B464 + adds r5, r0, #0 + adds r0, r6, #1 + movs r1, #2 + bl sub_0807B464 + lsls r0, r0, #1 + orrs r5, r0 + adds r4, r6, #0 + adds r4, #0x40 + adds r0, r4, #0 + movs r1, #2 + bl sub_0807B464 + lsls r0, r0, #2 + orrs r5, r0 + subs r0, r6, #1 + movs r1, #2 + bl sub_0807B464 + lsls r0, r0, #3 + orrs r5, r0 + adds r0, r6, #0 + adds r0, #0x41 + movs r1, #1 + bl sub_0807B464 + lsls r0, r0, #1 + orrs r5, r0 + adds r0, r6, #0 + adds r0, #0x3f + movs r1, #1 + bl sub_0807B464 + lsls r0, r0, #3 + orrs r5, r0 + adds r0, r4, #0 + movs r1, #2 + bl sub_080002B0 + cmp r0, #0 + beq _0807B4FA + adds r0, r6, #0 + adds r0, #0x80 + movs r1, #1 + bl sub_0807B464 + lsls r0, r0, #2 + orrs r5, r0 +_0807B4FA: + ldr r0, _0807B514 @ =gUnk_0811C2CC + lsls r1, r5, #1 + adds r1, r1, r0 + ldrh r4, [r1] + adds r0, r6, #0 + movs r1, #2 + bl sub_080002B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r2, _0807B518 @ =gUnk_0811C2EC + movs r3, #0 + b _0807B51E + .align 2, 0 +_0807B514: .4byte gUnk_0811C2CC +_0807B518: .4byte gUnk_0811C2EC +_0807B51C: + adds r2, #6 +_0807B51E: + ldrh r1, [r2] + cmp r1, #0 + beq _0807B52A + cmp r0, r1 + bne _0807B51C + ldrh r3, [r2, #2] +_0807B52A: + movs r0, #1 + lsls r0, r7 + bics r3, r0 + ldr r2, _0807B534 @ =gUnk_0811C2EC + b _0807B53A + .align 2, 0 +_0807B534: .4byte gUnk_0811C2EC +_0807B538: + adds r2, #6 +_0807B53A: + ldrh r0, [r2] + cmp r0, #0 + beq _0807B54E + ldrh r0, [r2, #2] + cmp r3, r0 + bne _0807B538 + ldrh r0, [r2, #4] + cmp r5, r0 + bne _0807B538 + ldrh r4, [r2] +_0807B54E: + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #2 + bl sub_0807B314 +_0807B558: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807B55C +sub_0807B55C: @ 0x0807B55C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + bl sub_0807B464 + cmp r0, #0 + beq _0807B5AC + adds r0, r5, #0 + subs r0, #0x40 + adds r1, r6, #0 + bl sub_0807B464 + adds r4, r0, #0 + adds r0, r5, #1 + adds r1, r6, #0 + bl sub_0807B464 + lsls r0, r0, #1 + orrs r4, r0 + adds r0, r5, #0 + adds r0, #0x40 + adds r1, r6, #0 + bl sub_0807B464 + lsls r0, r0, #2 + orrs r4, r0 + subs r0, r5, #1 + adds r1, r6, #0 + bl sub_0807B464 + lsls r0, r0, #3 + orrs r0, r4 + lsls r0, r0, #1 + adds r0, r0, r7 + ldrh r0, [r0] + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0807B314 +_0807B5AC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807B5B0 +sub_0807B5B0: @ 0x0807B5B0 + push {r4, r5, r6, r7, lr} + adds r3, r0, #0 + movs r1, #0x2e + ldrsh r0, [r3, r1] + ldr r6, _0807B5F8 @ =gUnk_0811C456 + ldrb r1, [r3, #0x14] + movs r2, #6 + ands r2, r1 + lsls r1, r2, #1 + adds r1, r1, r6 + movs r4, #0 + ldrsh r1, [r1, r4] + adds r0, r0, r1 + ldr r5, _0807B5FC @ =gUnk_03000BF0 + ldrh r1, [r5, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r4, #0x3f + ands r0, r4 + movs r7, #0x32 + ldrsh r1, [r3, r7] + adds r2, #1 + lsls r2, r2, #1 + adds r2, r2, r6 + movs r3, #0 + ldrsh r2, [r2, r3] + adds r1, r1, r2 + ldrh r2, [r5, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r4 + lsls r1, r1, #6 + orrs r0, r1 + bl sub_0807B600 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807B5F8: .4byte gUnk_0811C456 +_0807B5FC: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807B600 +sub_0807B600: @ 0x0807B600 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r5, #0 + subs r6, #0x40 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + movs r1, #1 + bl sub_080002C8 + cmp r0, #0x56 + beq _0807B61A + movs r0, #0 + b _0807B76E +_0807B61A: + adds r0, r5, #0 + movs r1, #1 + bl sub_080002B0 + adds r1, r0, #0 + ldr r0, _0807B634 @ =0x0000026A + cmp r1, r0 + bne _0807B638 + adds r0, r5, #0 + bl sub_0807B820 + b _0807B76C + .align 2, 0 +_0807B634: .4byte 0x0000026A +_0807B638: + ldr r0, _0807B648 @ =0x00000267 + cmp r1, r0 + bne _0807B64C + adds r0, r5, #0 + adds r0, #0x40 + bl sub_0807B820 + b _0807B76C + .align 2, 0 +_0807B648: .4byte 0x00000267 +_0807B64C: + ldr r0, _0807B65C @ =0x0000027A + cmp r1, r0 + bne _0807B660 + adds r0, r5, #0 + bl sub_0807B8A8 + b _0807B76C + .align 2, 0 +_0807B65C: .4byte 0x0000027A +_0807B660: + ldr r0, _0807B670 @ =0x00000277 + cmp r1, r0 + bne _0807B674 + adds r0, r5, #0 + adds r0, #0x40 + bl sub_0807B8A8 + b _0807B76C + .align 2, 0 +_0807B670: .4byte 0x00000277 +_0807B674: + ldr r0, _0807B684 @ =0x0000028A + cmp r1, r0 + bne _0807B688 + adds r0, r5, #0 + bl sub_0807B930 + b _0807B76C + .align 2, 0 +_0807B684: .4byte 0x0000028A +_0807B688: + ldr r0, _0807B698 @ =0x00000287 + cmp r1, r0 + bne _0807B69C + adds r0, r5, #0 + adds r0, #0x40 + bl sub_0807B930 + b _0807B76C + .align 2, 0 +_0807B698: .4byte 0x00000287 +_0807B69C: + adds r0, r5, #0 + movs r1, #2 + bl sub_080002B0 + cmp r0, #0 + beq _0807B6EC + ldr r0, _0807B6E8 @ =0x000002F2 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + adds r0, r6, #0 + movs r1, #1 + bl sub_080002E0 + cmp r0, #3 + bne _0807B6CA + movs r0, #0xbd + lsls r0, r0, #2 + adds r1, r6, #0 + movs r2, #1 + bl sub_0807B314 +_0807B6CA: + adds r0, r5, #0 + adds r0, #0x40 + movs r1, #1 + bl sub_080002E0 + cmp r0, #3 + bne _0807B6F8 + movs r0, #0xbd + lsls r0, r0, #2 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + b _0807B6F8 + .align 2, 0 +_0807B6E8: .4byte 0x000002F2 +_0807B6EC: + movs r0, #0xbd + lsls r0, r0, #2 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 +_0807B6F8: + adds r0, r6, #0 + movs r1, #2 + bl sub_0807B464 + cmp r0, #0 + beq _0807B748 + movs r0, #0 + adds r1, r6, #0 + movs r2, #2 + bl sub_0807B314 + adds r0, r6, #0 + movs r1, #1 + bl sub_080002B0 + ldr r1, _0807B770 @ =0x000002F2 + cmp r0, r1 + bne _0807B728 + movs r0, #0xbd + lsls r0, r0, #2 + adds r1, r6, #0 + movs r2, #1 + bl sub_0807B314 +_0807B728: + adds r0, r5, #1 + ldr r4, _0807B774 @ =gUnk_0811C2AC + movs r1, #1 + adds r2, r4, #0 + bl sub_0807B55C + subs r0, r5, #1 + movs r1, #1 + adds r2, r4, #0 + bl sub_0807B55C + adds r0, r6, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_0807B55C +_0807B748: + adds r0, r6, #1 + movs r1, #3 + bl sub_0807B480 + subs r0, r6, #1 + movs r1, #1 + bl sub_0807B480 + adds r0, r6, #0 + adds r0, #0x40 + movs r1, #0 + bl sub_0807B480 + adds r0, r6, #0 + subs r0, #0x40 + movs r1, #2 + bl sub_0807B480 +_0807B76C: + movs r0, #1 +_0807B76E: + pop {r4, r5, r6, pc} + .align 2, 0 +_0807B770: .4byte 0x000002F2 +_0807B774: .4byte gUnk_0811C2AC + + thumb_func_start sub_0807B778 +sub_0807B778: @ 0x0807B778 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + lsls r1, r6, #0x18 + lsrs r1, r1, #0x18 + bl sub_080002C8 + cmp r0, #0xd + bne _0807B7D0 + adds r0, r5, #0 + subs r0, #0x40 + adds r1, r6, #0 + bl sub_0807B434 + adds r4, r0, #0 + adds r0, r5, #1 + adds r1, r6, #0 + bl sub_0807B434 + lsls r0, r0, #1 + orrs r4, r0 + adds r0, r5, #0 + adds r0, #0x40 + adds r1, r6, #0 + bl sub_0807B434 + lsls r0, r0, #2 + orrs r4, r0 + subs r0, r5, #1 + adds r1, r6, #0 + bl sub_0807B434 + lsls r0, r0, #3 + orrs r0, r4 + ldr r1, _0807B7D4 @ =gUnk_0811C466 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0807B314 +_0807B7D0: + pop {r4, r5, r6, pc} + .align 2, 0 +_0807B7D4: .4byte gUnk_0811C466 + + thumb_func_start sub_0807B7D8 +sub_0807B7D8: @ 0x0807B7D8 + push {r4, r5, lr} + adds r4, r1, #0 + adds r5, r2, #0 + cmp r0, #0x35 + bne _0807B816 + movs r0, #0x35 + bl sub_08000152 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807B778 + adds r0, r4, #1 + adds r1, r5, #0 + bl sub_0807B778 + subs r0, r4, #1 + adds r1, r5, #0 + bl sub_0807B778 + adds r0, r4, #0 + adds r0, #0x40 + adds r1, r5, #0 + bl sub_0807B778 + adds r0, r4, #0 + subs r0, #0x40 + adds r1, r5, #0 + bl sub_0807B778 + b _0807B81E +_0807B816: + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0807B314 +_0807B81E: + pop {r4, r5, pc} + + thumb_func_start sub_0807B820 +sub_0807B820: @ 0x0807B820 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x9b + lsls r0, r0, #2 + adds r5, r4, #0 + subs r5, #0x41 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B890 @ =0x00000273 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B894 @ =0x0000026D + adds r5, #1 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0x9d + lsls r0, r0, #2 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B898 @ =0x0000026E + adds r5, #1 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B89C @ =0x00000275 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B8A0 @ =0x0000026F + subs r1, r4, #1 + movs r2, #1 + bl sub_0807B314 + movs r0, #0x9c + lsls r0, r0, #2 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B8A4 @ =0x00000272 + adds r4, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, r5, pc} + .align 2, 0 +_0807B890: .4byte 0x00000273 +_0807B894: .4byte 0x0000026D +_0807B898: .4byte 0x0000026E +_0807B89C: .4byte 0x00000275 +_0807B8A0: .4byte 0x0000026F +_0807B8A4: .4byte 0x00000272 + + thumb_func_start sub_0807B8A8 +sub_0807B8A8: @ 0x0807B8A8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x9f + lsls r0, r0, #2 + adds r5, r4, #0 + subs r5, #0x41 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B918 @ =0x00000283 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B91C @ =0x0000027D + adds r5, #1 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0xa1 + lsls r0, r0, #2 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B920 @ =0x0000027E + adds r5, #1 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B924 @ =0x00000285 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B928 @ =0x0000027F + subs r1, r4, #1 + movs r2, #1 + bl sub_0807B314 + movs r0, #0xa0 + lsls r0, r0, #2 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B92C @ =0x00000282 + adds r4, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, r5, pc} + .align 2, 0 +_0807B918: .4byte 0x00000283 +_0807B91C: .4byte 0x0000027D +_0807B920: .4byte 0x0000027E +_0807B924: .4byte 0x00000285 +_0807B928: .4byte 0x0000027F +_0807B92C: .4byte 0x00000282 + + thumb_func_start sub_0807B930 +sub_0807B930: @ 0x0807B930 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0xa3 + lsls r0, r0, #2 + adds r5, r4, #0 + subs r5, #0x41 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B9A0 @ =0x00000293 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B9A4 @ =0x0000028D + adds r5, #1 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + movs r0, #0xa5 + lsls r0, r0, #2 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B9A8 @ =0x0000028E + adds r5, #1 + adds r1, r5, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B9AC @ =0x00000295 + adds r1, r5, #0 + movs r2, #2 + bl sub_0807B314 + ldr r0, _0807B9B0 @ =0x0000028F + subs r1, r4, #1 + movs r2, #1 + bl sub_0807B314 + movs r0, #0xa4 + lsls r0, r0, #2 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r0, _0807B9B4 @ =0x00000292 + adds r4, #1 + adds r1, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, r5, pc} + .align 2, 0 +_0807B9A0: .4byte 0x00000293 +_0807B9A4: .4byte 0x0000028D +_0807B9A8: .4byte 0x0000028E +_0807B9AC: .4byte 0x00000295 +_0807B9B0: .4byte 0x0000028F +_0807B9B4: .4byte 0x00000292 + + thumb_func_start sub_0807B9B8 +sub_0807B9B8: @ 0x0807B9B8 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0801AF8C + adds r0, r6, #0 + bl sub_0808094C + adds r5, r0, #0 + lsls r1, r4, #1 + adds r0, r5, #4 + adds r0, r0, r1 + strh r7, [r0] + lsls r1, r7, #1 + ldr r2, _0807BA24 @ =0x00005004 + adds r0, r5, r2 + adds r0, r0, r1 + ldrh r2, [r0] + ldr r0, _0807BA28 @ =0x00002004 + adds r1, r5, r0 + adds r1, r1, r4 + ldr r0, _0807BA2C @ =gUnk_080B3E80 + adds r0, r2, r0 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0807BA30 @ =0x0000B004 + adds r1, r5, r0 + adds r1, r1, r4 + ldr r0, _0807BA34 @ =gUnk_080B37A0 + adds r2, r2, r0 + ldrb r0, [r2] + strb r0, [r1] + ldr r0, _0807BA38 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0807BA78 + movs r1, #0x3f + ands r1, r4 + lsls r1, r1, #1 + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + cmp r6, #2 + beq _0807BA40 + lsls r1, r1, #1 + ldr r0, _0807BA3C @ =gUnk_02019EE0 + b _0807BA44 + .align 2, 0 +_0807BA24: .4byte 0x00005004 +_0807BA28: .4byte 0x00002004 +_0807BA2C: .4byte gUnk_080B3E80 +_0807BA30: .4byte 0x0000B004 +_0807BA34: .4byte gUnk_080B37A0 +_0807BA38: .4byte gUnk_03000BF0 +_0807BA3C: .4byte gUnk_02019EE0 +_0807BA40: + lsls r1, r1, #1 + ldr r0, _0807BA7C @ =gUnk_02002F00 +_0807BA44: + adds r3, r1, r0 + lsls r0, r7, #3 + ldr r1, _0807BA80 @ =0x00007004 + adds r0, r0, r1 + adds r0, r5, r0 + ldrh r1, [r0] + strh r1, [r3] + ldrh r1, [r0, #2] + strh r1, [r3, #2] + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r3, r1 + ldrh r1, [r0, #4] + strh r1, [r2] + movs r2, #0x81 + lsls r2, r2, #1 + adds r1, r3, r2 + ldrh r0, [r0, #6] + strh r0, [r1] + ldr r0, _0807BA84 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #1 + beq _0807BA78 + ldr r1, _0807BA88 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] +_0807BA78: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807BA7C: .4byte gUnk_02002F00 +_0807BA80: .4byte 0x00007004 +_0807BA84: .4byte gUnk_03000BF0 +_0807BA88: .4byte gUnk_02000070 + + thumb_func_start sub_0807BA8C +sub_0807BA8C: @ 0x0807BA8C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r7, r1, #0 + bl sub_0801AF8C + adds r0, r7, #0 + bl sub_0808094C + adds r5, r0, #0 + lsls r2, r4, #1 + adds r1, r5, #4 + adds r1, r1, r2 + ldr r3, _0807BAFC @ =0x00003004 + adds r0, r5, r3 + adds r0, r0, r2 + ldrh r6, [r0] + strh r6, [r1] + lsls r1, r6, #1 + ldr r2, _0807BB00 @ =0x00005004 + adds r0, r5, r2 + adds r0, r0, r1 + ldrh r2, [r0] + ldr r3, _0807BB04 @ =0x00002004 + adds r1, r5, r3 + adds r1, r1, r4 + ldr r0, _0807BB08 @ =gUnk_080B3E80 + adds r0, r2, r0 + ldrb r0, [r0] + strb r0, [r1] + ldr r0, _0807BB0C @ =0x0000B004 + adds r1, r5, r0 + adds r1, r1, r4 + ldr r0, _0807BB10 @ =gUnk_080B37A0 + adds r2, r2, r0 + ldrb r0, [r2] + strb r0, [r1] + ldr r0, _0807BB14 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0807BB54 + movs r1, #0x3f + ands r1, r4 + lsls r1, r1, #1 + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r4 + lsls r0, r0, #2 + adds r1, r1, r0 + cmp r7, #2 + beq _0807BB1C + lsls r1, r1, #1 + ldr r0, _0807BB18 @ =gUnk_02019EE0 + b _0807BB20 + .align 2, 0 +_0807BAFC: .4byte 0x00003004 +_0807BB00: .4byte 0x00005004 +_0807BB04: .4byte 0x00002004 +_0807BB08: .4byte gUnk_080B3E80 +_0807BB0C: .4byte 0x0000B004 +_0807BB10: .4byte gUnk_080B37A0 +_0807BB14: .4byte gUnk_03000BF0 +_0807BB18: .4byte gUnk_02019EE0 +_0807BB1C: + lsls r1, r1, #1 + ldr r0, _0807BB58 @ =gUnk_02002F00 +_0807BB20: + adds r3, r1, r0 + lsls r0, r6, #3 + ldr r1, _0807BB5C @ =0x00007004 + adds r0, r0, r1 + adds r0, r5, r0 + ldrh r1, [r0] + strh r1, [r3] + ldrh r1, [r0, #2] + strh r1, [r3, #2] + movs r1, #0x80 + lsls r1, r1, #1 + adds r2, r3, r1 + ldrh r1, [r0, #4] + strh r1, [r2] + movs r2, #0x81 + lsls r2, r2, #1 + adds r1, r3, r2 + ldrh r0, [r0, #6] + strh r0, [r1] + ldr r0, _0807BB60 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #1 + beq _0807BB54 + ldr r1, _0807BB64 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] +_0807BB54: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807BB58: .4byte gUnk_02002F00 +_0807BB5C: .4byte 0x00007004 +_0807BB60: .4byte gUnk_03000BF0 +_0807BB64: .4byte gUnk_02000070 + + thumb_func_start sub_0807BB68 +sub_0807BB68: @ 0x0807BB68 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + movs r1, #0 + ldrsh r0, [r4, r1] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _0807BB96 + adds r7, r1, #0 +_0807BB7E: + ldrh r0, [r4] + movs r2, #2 + ldrsh r1, [r4, r2] + adds r1, r6, r1 + adds r2, r5, #0 + bl sub_0807B314 + adds r4, #4 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, r7 + bne _0807BB7E +_0807BB96: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807BB98 +sub_0807BB98: @ 0x0807BB98 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + mov sl, r1 + mov r8, r2 + mov sb, r3 + movs r0, #0 + cmp r0, sb + bhs _0807BBD4 +_0807BBB0: + movs r4, #0 + adds r7, r5, #0 + adds r7, #0x40 + adds r6, r0, #1 + cmp r4, r8 + bhs _0807BBCC +_0807BBBC: + adds r1, r5, r4 + ldr r0, _0807BBE0 @ =0x00004072 + mov r2, sl + bl sub_0800015E + adds r4, #1 + cmp r4, r8 + blo _0807BBBC +_0807BBCC: + adds r5, r7, #0 + adds r0, r6, #0 + cmp r0, sb + blo _0807BBB0 +_0807BBD4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807BBE0: .4byte 0x00004072 + + thumb_func_start sub_0807BBE4 +sub_0807BBE4: @ 0x0807BBE4 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _0807BC28 @ =gUnk_0202AEB4 + mov sl, r0 + ldr r0, _0807BC2C @ =gUnk_02010654 + mov sb, r0 + ldr r5, _0807BC30 @ =0xFFFFB000 + add r5, sl + ldr r4, _0807BC30 @ =0xFFFFB000 + add r4, sb + ldr r2, _0807BC34 @ =0xFFFFD000 + add r2, sl + ldr r1, _0807BC34 @ =0xFFFFD000 + add r1, sb + movs r3, #0 + ldr r0, _0807BC38 @ =0x00003FFF + mov r8, r0 + ldr r0, _0807BC3C @ =gUnk_080B3E80 + mov ip, r0 + ldr r7, _0807BC40 @ =gUnk_080B79A7 + ldr r6, _0807BC44 @ =0xFFFFC000 +_0807BC14: + ldrh r0, [r5] + adds r5, #2 + cmp r0, r8 + bhi _0807BC48 + lsls r0, r0, #1 + add r0, sl + ldrh r0, [r0] + add r0, ip + b _0807BC4C + .align 2, 0 +_0807BC28: .4byte gUnk_0202AEB4 +_0807BC2C: .4byte gUnk_02010654 +_0807BC30: .4byte 0xFFFFB000 +_0807BC34: .4byte 0xFFFFD000 +_0807BC38: .4byte 0x00003FFF +_0807BC3C: .4byte gUnk_080B3E80 +_0807BC40: .4byte gUnk_080B79A7 +_0807BC44: .4byte 0xFFFFC000 +_0807BC48: + adds r0, r0, r6 + adds r0, r0, r7 +_0807BC4C: + ldrb r0, [r0] + strb r0, [r2] + adds r2, #1 + ldrh r0, [r4] + adds r4, #2 + cmp r0, r8 + bhi _0807BC64 + lsls r0, r0, #1 + add r0, sb + ldrh r0, [r0] + add r0, ip + b _0807BC68 +_0807BC64: + adds r0, r0, r6 + adds r0, r0, r7 +_0807BC68: + ldrb r0, [r0] + strb r0, [r1] + adds r1, #1 + adds r3, #1 + ldr r0, _0807BC80 @ =0x00000FFF + cmp r3, r0 + bls _0807BC14 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807BC80: .4byte 0x00000FFF + + thumb_func_start sub_0807BC84 +sub_0807BC84: @ 0x0807BC84 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r1, _0807BD04 @ =gUnk_03000BF0 + ldrh r0, [r1, #0x1e] + lsrs r2, r0, #4 + mov r8, r1 + cmp r2, #0x40 + bne _0807BC98 + movs r2, #0x3f +_0807BC98: + ldr r1, _0807BD08 @ =gUnk_02027EB4 + adds r3, r2, r1 + adds r6, r1, #0 + adds r6, #0x3f + ldr r0, _0807BD0C @ =gUnk_0200D654 + adds r2, r2, r0 + adds r5, r0, #0 + adds r5, #0x3f + movs r4, #0 + adds r7, r1, #0 + mov ip, r0 + movs r0, #0xff +_0807BCB0: + strb r0, [r3] + strb r0, [r6] + strb r0, [r2] + strb r0, [r5] + adds r3, #0x40 + adds r6, #0x40 + adds r2, #0x40 + adds r5, #0x40 + adds r4, #1 + cmp r4, #0x3f + bls _0807BCB0 + mov r0, r8 + ldrh r1, [r0, #0x20] + ldr r0, _0807BD10 @ =0x0000FFF0 + ands r0, r1 + lsls r0, r0, #2 + adds r3, r0, r7 + movs r1, #0xfc + lsls r1, r1, #4 + adds r6, r7, r1 + mov r1, ip + adds r2, r0, r1 + movs r5, #0xfc + lsls r5, r5, #4 + add r5, ip + movs r4, #0 + movs r0, #0xff +_0807BCE6: + strb r0, [r3] + adds r3, #1 + strb r0, [r6] + adds r6, #1 + strb r0, [r2] + adds r2, #1 + strb r0, [r5] + adds r5, #1 + adds r4, #1 + cmp r4, #0x3f + bls _0807BCE6 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807BD04: .4byte gUnk_03000BF0 +_0807BD08: .4byte gUnk_02027EB4 +_0807BD0C: .4byte gUnk_0200D654 +_0807BD10: .4byte 0x0000FFF0 + + thumb_func_start sub_0807BD14 +sub_0807BD14: @ 0x0807BD14 + push {r4, r5, lr} + adds r5, r1, #0 + movs r1, #0x2e + ldrsh r2, [r0, r1] + movs r3, #0x32 + ldrsh r1, [r0, r3] + adds r0, r2, #0 + adds r2, r5, #0 + bl sub_0807BEEC + adds r3, r0, #0 + cmp r3, #0xff + beq _0807BDB4 + ldr r1, _0807BD68 @ =gUnk_03000BF0 + movs r2, #0 + movs r0, #2 + strb r0, [r1, #2] + strb r2, [r1, #3] + movs r4, #1 + strh r4, [r1] + strb r3, [r1, #5] + strb r5, [r1, #0x10] + bl sub_08052E8C + adds r2, r0, #0 + ldr r1, _0807BD6C @ =gUnk_02033A90 + ldr r3, _0807BD70 @ =0x0000085C + adds r0, r1, r3 + str r2, [r0] + ldrb r0, [r1, #0xd] + ands r4, r0 + cmp r4, #0 + beq _0807BD98 + cmp r5, #1 + beq _0807BD7E + cmp r5, #1 + blo _0807BD74 + cmp r5, #2 + beq _0807BD86 + cmp r5, #3 + beq _0807BD90 + b _0807BD98 + .align 2, 0 +_0807BD68: .4byte gUnk_03000BF0 +_0807BD6C: .4byte gUnk_02033A90 +_0807BD70: .4byte 0x0000085C +_0807BD74: + ldrh r0, [r2, #6] + ldrh r1, [r2, #2] + subs r0, r0, r1 + strh r0, [r2, #6] + b _0807BD98 +_0807BD7E: + ldrh r0, [r2] + ldrh r1, [r2, #4] + adds r0, r0, r1 + b _0807BD96 +_0807BD86: + ldrh r0, [r2, #2] + ldrh r3, [r2, #6] + adds r0, r0, r3 + strh r0, [r2, #6] + b _0807BD98 +_0807BD90: + ldrh r0, [r2, #4] + ldrh r1, [r2] + subs r0, r0, r1 +_0807BD96: + strh r0, [r2, #4] +_0807BD98: + ldr r2, _0807BDB0 @ =gLinkEntity + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2, #0x11] + bl sub_0805E5A8 + movs r0, #1 + b _0807BDB6 + .align 2, 0 +_0807BDB0: .4byte gLinkEntity +_0807BDB4: + movs r0, #0 +_0807BDB6: + pop {r4, r5, pc} + + thumb_func_start sub_0807BDB8 +sub_0807BDB8: @ 0x0807BDB8 + push {r4, r5, lr} + adds r3, r0, #0 + movs r5, #0xff + movs r0, #7 + ands r1, r0 + cmp r1, #7 + bls _0807BDC8 + b _0807BEE2 +_0807BDC8: + lsls r0, r1, #2 + ldr r1, _0807BDD4 @ =_0807BDD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807BDD4: .4byte _0807BDD8 +_0807BDD8: @ jump table + .4byte _0807BDF8 @ case 0 + .4byte _0807BE10 @ case 1 + .4byte _0807BE30 @ case 2 + .4byte _0807BE4C @ case 3 + .4byte _0807BE78 @ case 4 + .4byte _0807BE94 @ case 5 + .4byte _0807BEB4 @ case 6 + .4byte _0807BEC4 @ case 7 +_0807BDF8: + movs r1, #0x32 + ldrsh r0, [r3, r1] + ldr r1, _0807BE0C @ =gUnk_03000BF0 + ldrh r1, [r1, #8] + subs r0, r0, r1 + cmp r0, #9 + bhi _0807BEE2 + movs r5, #0 + b _0807BEE2 + .align 2, 0 +_0807BE0C: .4byte gUnk_03000BF0 +_0807BE10: + movs r2, #0x32 + ldrsh r0, [r3, r2] + ldr r2, _0807BE2C @ =gUnk_03000BF0 + ldrh r1, [r2, #8] + subs r0, r0, r1 + cmp r0, #9 + bhi _0807BE20 + movs r5, #0 +_0807BE20: + ldrh r0, [r2, #0x1e] + subs r0, #0xa + movs r4, #0x2e + ldrsh r1, [r3, r4] + ldrh r2, [r2, #6] + b _0807BE6A + .align 2, 0 +_0807BE2C: .4byte gUnk_03000BF0 +_0807BE30: + ldr r1, _0807BE48 @ =gUnk_03000BF0 + ldrh r2, [r1, #0x1e] + subs r2, #0xa + movs r4, #0x2e + ldrsh r0, [r3, r4] + ldrh r1, [r1, #6] + subs r0, r0, r1 + cmp r2, r0 + bhs _0807BEE2 + movs r5, #1 + b _0807BEE2 + .align 2, 0 +_0807BE48: .4byte gUnk_03000BF0 +_0807BE4C: + ldr r4, _0807BE74 @ =gUnk_03000BF0 + ldrh r0, [r4, #0x20] + subs r0, #0xa + movs r2, #0x32 + ldrsh r1, [r3, r2] + ldrh r2, [r4, #8] + subs r1, r1, r2 + cmp r0, r1 + bhs _0807BE60 + movs r5, #2 +_0807BE60: + ldrh r0, [r4, #0x1e] + subs r0, #0xa + movs r2, #0x2e + ldrsh r1, [r3, r2] + ldrh r2, [r4, #6] +_0807BE6A: + subs r1, r1, r2 + cmp r0, r1 + bhs _0807BEE2 + movs r5, #1 + b _0807BEE2 + .align 2, 0 +_0807BE74: .4byte gUnk_03000BF0 +_0807BE78: + ldr r1, _0807BE90 @ =gUnk_03000BF0 + ldrh r2, [r1, #0x20] + subs r2, #0xa + movs r4, #0x32 + ldrsh r0, [r3, r4] + ldrh r1, [r1, #8] + subs r0, r0, r1 + cmp r2, r0 + bhs _0807BEE2 + movs r5, #2 + b _0807BEE2 + .align 2, 0 +_0807BE90: .4byte gUnk_03000BF0 +_0807BE94: + ldr r4, _0807BEB0 @ =gUnk_03000BF0 + ldrh r0, [r4, #0x20] + subs r0, #0xa + movs r2, #0x32 + ldrsh r1, [r3, r2] + ldrh r2, [r4, #8] + subs r1, r1, r2 + cmp r0, r1 + bhs _0807BEA8 + movs r5, #2 +_0807BEA8: + movs r1, #0x2e + ldrsh r0, [r3, r1] + ldrh r1, [r4, #6] + b _0807BEDA + .align 2, 0 +_0807BEB0: .4byte gUnk_03000BF0 +_0807BEB4: + movs r2, #0x2e + ldrsh r0, [r3, r2] + ldr r1, _0807BEC0 @ =gUnk_03000BF0 + ldrh r1, [r1, #6] + b _0807BEDA + .align 2, 0 +_0807BEC0: .4byte gUnk_03000BF0 +_0807BEC4: + movs r4, #0x32 + ldrsh r0, [r3, r4] + ldr r2, _0807BEE8 @ =gUnk_03000BF0 + ldrh r1, [r2, #8] + subs r0, r0, r1 + cmp r0, #9 + bhi _0807BED4 + movs r5, #0 +_0807BED4: + movs r1, #0x2e + ldrsh r0, [r3, r1] + ldrh r1, [r2, #6] +_0807BEDA: + subs r0, r0, r1 + cmp r0, #9 + bhi _0807BEE2 + movs r5, #3 +_0807BEE2: + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 +_0807BEE8: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807BEEC +sub_0807BEEC: @ 0x0807BEEC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + ldr r0, _0807BF04 @ =gUnk_02033A90 + ldrb r1, [r0, #0xd] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0807BF0C + ldr r0, _0807BF08 @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + b _0807BF7C + .align 2, 0 +_0807BF04: .4byte gUnk_02033A90 +_0807BF08: .4byte gUnk_03000BF0 +_0807BF0C: + cmp r2, #1 + beq _0807BF2C + cmp r2, #1 + blo _0807BF1E + cmp r2, #2 + beq _0807BF40 + cmp r2, #3 + beq _0807BF58 + b _0807BF7A +_0807BF1E: + ldr r0, _0807BF28 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r7, r0, #0 + subs r7, #0x10 + b _0807BF60 + .align 2, 0 +_0807BF28: .4byte gUnk_03000BF0 +_0807BF2C: + ldr r0, _0807BF3C @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + ldrh r0, [r0, #0x1e] + adds r1, r1, r0 + adds r6, r1, #0 + adds r6, #0x10 + b _0807BF60 + .align 2, 0 +_0807BF3C: .4byte gUnk_03000BF0 +_0807BF40: + ldr r0, _0807BF50 @ =gUnk_03000BF0 + ldrh r1, [r0, #8] + ldrh r0, [r0, #0x20] + adds r1, r1, r0 + adds r7, r1, #0 + adds r7, #0x10 + b _0807BF60 + .align 2, 0 +_0807BF50: .4byte gUnk_03000BF0 +_0807BF54: + adds r0, r4, #0 + b _0807BF7C +_0807BF58: + ldr r0, _0807BF80 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + adds r6, r0, #0 + subs r6, #0x10 +_0807BF60: + ldr r5, _0807BF84 @ =gUnk_02033ACC + movs r4, #0 +_0807BF64: + adds r0, r6, #0 + adds r1, r7, #0 + adds r2, r5, #0 + bl sub_0807BF88 + cmp r0, #0 + bne _0807BF54 + adds r4, #1 + adds r5, #0x20 + cmp r4, #0x3f + bls _0807BF64 +_0807BF7A: + movs r0, #0xff +_0807BF7C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807BF80: .4byte gUnk_03000BF0 +_0807BF84: .4byte gUnk_02033ACC + + thumb_func_start sub_0807BF88 +sub_0807BF88: @ 0x0807BF88 + push {r4, lr} + adds r3, r2, #0 + ldrh r2, [r3, #4] + subs r0, r0, r2 + ldrh r2, [r3, #6] + subs r1, r1, r2 + movs r2, #0 + ldrh r4, [r3] + cmp r0, r4 + bhs _0807BFA4 + ldrh r3, [r3, #2] + cmp r1, r3 + bhs _0807BFA4 + movs r2, #1 +_0807BFA4: + adds r0, r2, #0 + pop {r4, pc} + + thumb_func_start sub_0807BFA8 +sub_0807BFA8: @ 0x0807BFA8 + ldr r2, _0807BFC4 @ =gUnk_03000BF0 + ldr r0, _0807BFC8 @ =gUnk_02033A90 + ldr r1, _0807BFCC @ =0x0000085C + adds r0, r0, r1 + ldr r1, [r0] + ldrh r0, [r1, #4] + strh r0, [r2, #6] + ldrh r0, [r1, #6] + strh r0, [r2, #8] + ldrh r0, [r1] + strh r0, [r2, #0x1e] + ldrh r0, [r1, #2] + strh r0, [r2, #0x20] + bx lr + .align 2, 0 +_0807BFC4: .4byte gUnk_03000BF0 +_0807BFC8: .4byte gUnk_02033A90 +_0807BFCC: .4byte 0x0000085C + + thumb_func_start sub_0807BFD0 +sub_0807BFD0: @ 0x0807BFD0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_0801B170 + bl sub_0807BFA8 + ldr r7, _0807C0B8 @ =0x0000FFFF + ldr r6, _0807C0BC @ =gUnk_0202AEB4 + movs r0, #0x80 + lsls r0, r0, #5 + mov r8, r0 + adds r0, r7, #0 + adds r1, r6, #0 + mov r2, r8 + bl sub_0801D5EC + movs r5, #0 + strh r5, [r6] + ldr r4, _0807C0C0 @ =gUnk_02010654 + adds r0, r7, #0 + adds r1, r4, #0 + mov r2, r8 + bl sub_0801D5EC + strh r5, [r4] + ldr r2, _0807C0C4 @ =gUnk_03000BF0 + ldr r0, _0807C0C8 @ =gUnk_02033A90 + ldr r1, _0807C0CC @ =0x0000085C + adds r4, r0, r1 + ldr r0, [r4] + ldr r1, [r2, #0x34] + ldr r0, [r0, #8] + cmp r1, r0 + beq _0807C01C + str r0, [r2, #0x34] + bl sub_080197D4 +_0807C01C: + ldr r0, [r4] + ldr r0, [r0, #0x10] + bl sub_080197D4 + ldr r1, _0807C0D0 @ =gUnk_020176A0 + adds r0, r1, #0 + adds r0, #0x60 + movs r2, #0xa8 + lsls r2, r2, #2 + adds r1, r1, r2 + movs r2, #0x20 + bl sub_0801D66C + ldr r2, _0807C0D4 @ =gUnk_0200B644 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #0xe + orrs r0, r1 + str r0, [r2] + ldr r0, [r4] + ldr r0, [r0, #0x14] + cmp r0, #0 + beq _0807C04E + bl sub_0801B130 +_0807C04E: + adds r5, r6, #0 + movs r0, #0x80 + lsls r0, r0, #5 + adds r6, r5, r0 + adds r0, r7, #0 + adds r1, r6, #0 + mov r2, r8 + bl sub_0801D5EC + movs r2, #0 + ldr r3, _0807C0D8 @ =0x000007FF + adds r4, r7, #0 +_0807C066: + ldrh r0, [r5] + cmp r0, r3 + bhi _0807C078 + lsls r0, r0, #1 + adds r1, r0, r6 + ldrh r0, [r1] + cmp r0, r4 + bne _0807C078 + strh r2, [r1] +_0807C078: + adds r2, #1 + adds r5, #2 + cmp r2, r3 + ble _0807C066 + movs r2, #0x80 + lsls r2, r2, #5 + ldr r5, _0807C0C0 @ =gUnk_02010654 + adds r6, r5, r2 + ldr r4, _0807C0B8 @ =0x0000FFFF + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0801D5EC + movs r2, #0 + ldr r3, _0807C0D8 @ =0x000007FF +_0807C096: + ldrh r0, [r5] + cmp r0, r3 + bhi _0807C0A8 + lsls r0, r0, #1 + adds r1, r0, r6 + ldrh r0, [r1] + cmp r0, r4 + bne _0807C0A8 + strh r2, [r1] +_0807C0A8: + adds r2, #1 + adds r5, #2 + cmp r2, r3 + ble _0807C096 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807C0B8: .4byte 0x0000FFFF +_0807C0BC: .4byte gUnk_0202AEB4 +_0807C0C0: .4byte gUnk_02010654 +_0807C0C4: .4byte gUnk_03000BF0 +_0807C0C8: .4byte gUnk_02033A90 +_0807C0CC: .4byte 0x0000085C +_0807C0D0: .4byte gUnk_020176A0 +_0807C0D4: .4byte gUnk_0200B644 +_0807C0D8: .4byte 0x000007FF + + thumb_func_start sub_0807C0DC +sub_0807C0DC: @ 0x0807C0DC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + bl sub_0807BFA8 + ldr r7, _0807C158 @ =gUnk_03000BF0 + ldrb r1, [r7, #0xf] + movs r0, #0xfc + ands r0, r1 + strb r0, [r7, #0xf] + ldr r5, _0807C15C @ =gUnk_0200B654 + movs r6, #0x80 + lsls r6, r6, #6 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0801D630 + adds r0, r5, r6 + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0801D630 + ldr r0, _0807C160 @ =gUnk_02019EE0 + movs r4, #0x80 + lsls r4, r4, #8 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _0807C164 @ =gUnk_02002F00 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _0807C168 @ =gUnk_02033A90 + ldr r1, _0807C16C @ =0x0000085C + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0, #0xc] + bl sub_080197D4 + ldr r2, _0807C170 @ =gUnk_02025EB0 + ldrh r1, [r2, #4] + ldr r0, _0807C174 @ =0x0000FFFF + cmp r1, r0 + beq _0807C178 + adds r0, r2, #4 + ldrh r1, [r7, #0x1e] + lsrs r1, r1, #4 + ldrh r2, [r7, #0x20] + lsrs r2, r2, #4 + bl sub_0807C8B0 + ldrh r1, [r7, #0x1e] + lsrs r1, r1, #4 + ldrh r2, [r7, #0x20] + lsrs r2, r2, #4 + adds r0, r5, #0 + bl sub_0807C8B0 + movs r2, #0 + mov sb, r2 + b _0807C184 + .align 2, 0 +_0807C158: .4byte gUnk_03000BF0 +_0807C15C: .4byte gUnk_0200B654 +_0807C160: .4byte gUnk_02019EE0 +_0807C164: .4byte gUnk_02002F00 +_0807C168: .4byte gUnk_02033A90 +_0807C16C: .4byte 0x0000085C +_0807C170: .4byte gUnk_02025EB0 +_0807C174: .4byte 0x0000FFFF +_0807C178: + adds r0, r2, #4 + adds r1, r6, #0 + bl sub_0801D630 + movs r3, #1 + mov sb, r3 +_0807C184: + ldr r0, _0807C1B0 @ =gUnk_030010A0 + adds r0, #0x2d + ldrb r0, [r0] + cmp r0, #0 + bne _0807C1BC + ldr r0, _0807C1B4 @ =gUnk_02025EB4 + movs r2, #0xc0 + lsls r2, r2, #6 + adds r1, r0, r2 + movs r4, #0x80 + lsls r4, r4, #6 + adds r2, r4, #0 + bl sub_0801D66C + ldr r0, _0807C1B8 @ =gUnk_0200B654 + movs r3, #0xc0 + lsls r3, r3, #6 + adds r1, r0, r3 + adds r2, r4, #0 + bl sub_0801D66C + b _0807C26C + .align 2, 0 +_0807C1B0: .4byte gUnk_030010A0 +_0807C1B4: .4byte gUnk_02025EB4 +_0807C1B8: .4byte gUnk_0200B654 +_0807C1BC: + cmp r0, #2 + bne _0807C26C + ldr r4, _0807C278 @ =gUnk_02025EB4 + movs r0, #0xb0 + lsls r0, r0, #8 + adds r0, r0, r4 + mov r8, r0 + movs r5, #0x80 + lsls r5, r5, #5 + adds r0, r4, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_0801D66C + movs r1, #0xc0 + lsls r1, r1, #6 + adds r6, r4, r1 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0801D66C + mov r0, r8 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0801D66C + adds r6, r4, r5 + adds r0, r6, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_0801D66C + movs r2, #0x80 + lsls r2, r2, #7 + adds r4, r4, r2 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0801D66C + mov r0, r8 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0801D66C + ldr r4, _0807C27C @ =gUnk_0200B654 + movs r3, #0xb0 + lsls r3, r3, #8 + adds r3, r3, r4 + mov r8, r3 + adds r0, r4, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_0801D66C + movs r0, #0xc0 + lsls r0, r0, #6 + adds r6, r4, r0 + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0801D66C + mov r0, r8 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0801D66C + adds r6, r4, r5 + adds r0, r6, #0 + mov r1, r8 + adds r2, r5, #0 + bl sub_0801D66C + movs r1, #0x80 + lsls r1, r1, #7 + adds r4, r4, r1 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0801D66C + mov r0, r8 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0801D66C +_0807C26C: + mov r2, sb + cmp r2, #0 + bne _0807C280 + bl sub_0807BBE4 + b _0807C2A0 + .align 2, 0 +_0807C278: .4byte gUnk_02025EB4 +_0807C27C: .4byte gUnk_0200B654 +_0807C280: + ldr r0, _0807C2CC @ =gUnk_02027EB4 + ldrh r1, [r7, #0x1e] + lsrs r1, r1, #4 + ldrh r2, [r7, #0x20] + lsrs r2, r2, #4 + bl sub_0807C69C + ldr r0, _0807C2D0 @ =gUnk_0200D654 + ldrh r1, [r7, #0x1e] + lsrs r1, r1, #4 + ldrh r2, [r7, #0x20] + lsrs r2, r2, #4 + bl sub_0807C69C + bl sub_0807C460 +_0807C2A0: + bl sub_0807BC84 + ldr r4, _0807C2D4 @ =gUnk_02025EB0 + adds r0, r4, #0 + bl sub_08080B60 + ldr r5, _0807C2D8 @ =gUnk_0200B650 + adds r0, r5, #0 + bl sub_08080B60 + mov r3, sb + cmp r3, #0 + bne _0807C2E4 + ldr r0, _0807C2DC @ =gUnk_02019EE0 + adds r1, r4, #0 + bl sub_0801AB08 + ldr r0, _0807C2E0 @ =gUnk_02002F00 + adds r1, r5, #0 + bl sub_0801AB08 + b _0807C326 + .align 2, 0 +_0807C2CC: .4byte gUnk_02027EB4 +_0807C2D0: .4byte gUnk_0200D654 +_0807C2D4: .4byte gUnk_02025EB0 +_0807C2D8: .4byte gUnk_0200B650 +_0807C2DC: .4byte gUnk_02019EE0 +_0807C2E0: .4byte gUnk_02002F00 +_0807C2E4: + ldr r4, _0807C34C @ =gUnk_02019EE0 + movs r0, #0x80 + lsls r0, r0, #7 + adds r5, r4, r0 + adds r6, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0801D66C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807C5F4 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0801D630 + ldr r4, _0807C350 @ =gUnk_02002F00 + adds r5, r4, r6 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0801D66C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807C5F4 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0801D630 +_0807C326: + mov r1, sb + cmp r1, #0 + bne _0807C332 + ldrb r0, [r7, #4] + cmp r0, #0x71 + bne _0807C33A +_0807C332: + ldrb r1, [r7, #0xf] + movs r0, #1 + orrs r0, r1 + strb r0, [r7, #0xf] +_0807C33A: + ldrb r0, [r7, #4] + subs r0, #0x20 + cmp r0, #0x18 + bhi _0807C400 + lsls r0, r0, #2 + ldr r1, _0807C354 @ =_0807C358 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807C34C: .4byte gUnk_02019EE0 +_0807C350: .4byte gUnk_02002F00 +_0807C354: .4byte _0807C358 +_0807C358: @ jump table + .4byte _0807C3BC @ case 0 + .4byte _0807C3E4 @ case 1 + .4byte _0807C3E4 @ case 2 + .4byte _0807C3E4 @ case 3 + .4byte _0807C3E4 @ case 4 + .4byte _0807C3E4 @ case 5 + .4byte _0807C400 @ case 6 + .4byte _0807C3E4 @ case 7 + .4byte _0807C3E4 @ case 8 + .4byte _0807C400 @ case 9 + .4byte _0807C400 @ case 10 + .4byte _0807C400 @ case 11 + .4byte _0807C400 @ case 12 + .4byte _0807C3BC @ case 13 + .4byte _0807C400 @ case 14 + .4byte _0807C400 @ case 15 + .4byte _0807C3E4 @ case 16 + .4byte _0807C400 @ case 17 + .4byte _0807C400 @ case 18 + .4byte _0807C400 @ case 19 + .4byte _0807C400 @ case 20 + .4byte _0807C400 @ case 21 + .4byte _0807C400 @ case 22 + .4byte _0807C400 @ case 23 + .4byte _0807C3E4 @ case 24 +_0807C3BC: + ldr r0, _0807C3D8 @ =gUnk_02025EB0 + ldr r2, [r0] + cmp r2, #0 + beq _0807C3CC + ldrh r1, [r2] + movs r0, #0x80 + orrs r0, r1 + strh r0, [r2] +_0807C3CC: + ldr r2, _0807C3DC @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0807C3E0 @ =0x0000FDFF + ands r0, r1 + strh r0, [r2] + b _0807C444 + .align 2, 0 +_0807C3D8: .4byte gUnk_02025EB0 +_0807C3DC: .4byte gUnk_03000F50 +_0807C3E0: .4byte 0x0000FDFF +_0807C3E4: + ldr r0, _0807C3F8 @ =gUnk_0200B650 + ldr r1, [r0] + cmp r1, #0 + beq _0807C3F2 + ldr r0, _0807C3FC @ =gUnk_080B77C0 + ldrh r0, [r0, #4] + strh r0, [r1] +_0807C3F2: + bl sub_0807C5B0 + b _0807C444 + .align 2, 0 +_0807C3F8: .4byte gUnk_0200B650 +_0807C3FC: .4byte gUnk_080B77C0 +_0807C400: + ldr r0, _0807C44C @ =gUnk_02025EB0 + ldr r1, [r0] + cmp r1, #0 + beq _0807C40E + ldr r0, _0807C450 @ =gUnk_080B77C0 + ldrh r0, [r0] + strh r0, [r1] +_0807C40E: + ldr r0, _0807C454 @ =gUnk_0200B650 + ldr r1, [r0] + cmp r1, #0 + beq _0807C41C + ldr r0, _0807C450 @ =gUnk_080B77C0 + ldrh r0, [r0, #2] + strh r0, [r1] +_0807C41C: + ldr r2, _0807C458 @ =gUnk_03000F50 + ldrh r0, [r2] + movs r1, #0x80 + lsls r1, r1, #4 + ands r1, r0 + movs r3, #0xba + lsls r3, r3, #5 + adds r0, r3, #0 + movs r3, #0 + orrs r1, r0 + strh r1, [r2] + ldr r0, _0807C45C @ =gUnk_02033A90 + ldrb r0, [r0, #0xc] + cmp r0, #0 + beq _0807C444 + movs r3, #0xa0 + lsls r3, r3, #8 + adds r0, r3, #0 + orrs r1, r0 + strh r1, [r2] +_0807C444: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807C44C: .4byte gUnk_02025EB0 +_0807C450: .4byte gUnk_080B77C0 +_0807C454: .4byte gUnk_0200B650 +_0807C458: .4byte gUnk_03000F50 +_0807C45C: .4byte gUnk_02033A90 + + thumb_func_start sub_0807C460 +sub_0807C460: @ 0x0807C460 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r7, _0807C4E8 @ =gUnk_02025EB4 + ldr r6, _0807C4EC @ =gUnk_0200B654 + ldr r0, _0807C4F0 @ =gUnk_03000BF0 + ldrh r1, [r0, #0x1e] + lsrs r3, r1, #4 + ldrh r0, [r0, #0x20] + lsrs r0, r0, #4 + str r0, [sp] + movs r4, #0 + movs r1, #0 + cmp r1, r0 + bhs _0807C4DC + movs r0, #0x40 + subs r0, r0, r3 + lsls r0, r0, #1 + mov sb, r0 +_0807C48C: + movs r5, #0 + adds r1, #1 + mov sl, r1 + cmp r5, r3 + bhs _0807C4CA + ldr r0, _0807C4F4 @ =0x00003FFF + mov r8, r0 +_0807C49A: + ldrh r0, [r7] + cmp r0, r8 + bls _0807C4AC + adds r1, r4, #0 + movs r2, #1 + str r3, [sp, #4] + bl sub_0800015E + ldr r3, [sp, #4] +_0807C4AC: + ldrh r0, [r6] + cmp r0, r8 + bls _0807C4BE + adds r1, r4, #0 + movs r2, #2 + str r3, [sp, #4] + bl sub_0800015E + ldr r3, [sp, #4] +_0807C4BE: + adds r7, #2 + adds r6, #2 + adds r4, #1 + adds r5, #1 + cmp r5, r3 + blo _0807C49A +_0807C4CA: + add r7, sb + add r6, sb + adds r0, r4, #0 + adds r0, #0x40 + subs r4, r0, r3 + mov r1, sl + ldr r0, [sp] + cmp r1, r0 + blo _0807C48C +_0807C4DC: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807C4E8: .4byte gUnk_02025EB4 +_0807C4EC: .4byte gUnk_0200B654 +_0807C4F0: .4byte gUnk_03000BF0 +_0807C4F4: .4byte 0x00003FFF + + thumb_func_start sub_0807C4F8 +sub_0807C4F8: @ 0x0807C4F8 + push {r4, r5, r6, lr} + ldr r0, _0807C594 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #0x71 + beq _0807C592 + ldr r0, _0807C598 @ =gUnk_02019EE0 + movs r4, #0x80 + lsls r4, r4, #8 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _0807C59C @ =gUnk_02002F00 + adds r1, r4, #0 + bl sub_0801D630 + ldr r5, _0807C5A0 @ =gUnk_02022830 + ldr r0, _0807C5A4 @ =gUnk_02033A90 + ldr r1, _0807C5A8 @ =0x0000085C + adds r0, r0, r1 + ldr r0, [r0] + ldr r4, [r0, #0xc] + subs r4, #0xc +_0807C524: + adds r4, #0xc + ldr r1, [r4, #4] + ldr r0, _0807C598 @ =gUnk_02019EE0 + cmp r1, r0 + beq _0807C534 + ldr r0, _0807C59C @ =gUnk_02002F00 + cmp r1, r0 + bne _0807C54A +_0807C534: + ldr r0, [r4] + ldr r1, _0807C5AC @ =0x7FFFFFFF + ands r0, r1 + str r0, [r5] + ldr r0, [r4, #4] + str r0, [r5, #4] + ldr r0, [r4, #8] + str r0, [r5, #8] + adds r0, r5, #0 + bl sub_080197D4 +_0807C54A: + ldr r0, [r4] + cmp r0, #0 + blt _0807C524 + ldr r4, _0807C598 @ =gUnk_02019EE0 + movs r0, #0x80 + lsls r0, r0, #7 + adds r5, r4, r0 + adds r6, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0801D66C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807C5F4 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0801D630 + ldr r4, _0807C59C @ =gUnk_02002F00 + adds r5, r4, r6 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0801D66C + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807C5F4 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0801D630 +_0807C592: + pop {r4, r5, r6, pc} + .align 2, 0 +_0807C594: .4byte gUnk_03000BF0 +_0807C598: .4byte gUnk_02019EE0 +_0807C59C: .4byte gUnk_02002F00 +_0807C5A0: .4byte gUnk_02022830 +_0807C5A4: .4byte gUnk_02033A90 +_0807C5A8: .4byte 0x0000085C +_0807C5AC: .4byte 0x7FFFFFFF + + thumb_func_start sub_0807C5B0 +sub_0807C5B0: @ 0x0807C5B0 + push {r4, r5, r6, lr} + ldr r5, _0807C5E8 @ =gUnk_0200D654 + movs r4, #0x80 + lsls r4, r4, #5 + movs r3, #0 + ldr r6, _0807C5EC @ =gUnk_03000BF0 + ldr r2, _0807C5F0 @ =gUnk_02027EB4 +_0807C5BE: + adds r0, r5, r3 + ldrb r0, [r0] + cmp r0, #0 + beq _0807C5D4 + cmp r0, #0xf + bhi _0807C5D2 + ldrb r1, [r2] + cmp r1, #0xf + bhi _0807C5D4 + orrs r0, r1 +_0807C5D2: + strb r0, [r2] +_0807C5D4: + adds r2, #1 + adds r3, #1 + cmp r3, r4 + blo _0807C5BE + ldrb r1, [r6, #0xf] + movs r0, #2 + orrs r0, r1 + strb r0, [r6, #0xf] + pop {r4, r5, r6, pc} + .align 2, 0 +_0807C5E8: .4byte gUnk_0200D654 +_0807C5EC: .4byte gUnk_03000BF0 +_0807C5F0: .4byte gUnk_02027EB4 + + thumb_func_start sub_0807C5F4 +sub_0807C5F4: @ 0x0807C5F4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r2, r5, #0 + movs r0, #0x20 + ldr r6, _0807C698 @ =gUnk_03000BF0 +_0807C5FE: + movs r3, #0 + subs r4, r0, #1 +_0807C602: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + adds r3, #1 + cmp r3, #0x1f + bls _0807C602 + adds r2, #0xc0 + adds r0, r4, #0 + cmp r0, #0 + bne _0807C5FE + ldrh r0, [r6, #0x1e] + cmp r0, #0xff + bls _0807C63E + adds r2, r5, #0 + adds r2, #0x40 + movs r0, #0x20 +_0807C624: + movs r3, #0 + subs r4, r0, #1 +_0807C628: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + adds r3, #1 + cmp r3, #0x1f + bls _0807C628 + adds r2, #0xc0 + adds r0, r4, #0 + cmp r0, #0 + bne _0807C624 +_0807C63E: + ldrh r0, [r6, #0x20] + cmp r0, #0xff + bls _0807C666 + movs r0, #0x80 + lsls r0, r0, #6 + adds r2, r5, r0 + movs r0, #0x20 +_0807C64C: + movs r3, #0 + subs r4, r0, #1 +_0807C650: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + adds r3, #1 + cmp r3, #0x1f + bls _0807C650 + adds r2, #0xc0 + adds r0, r4, #0 + cmp r0, #0 + bne _0807C64C +_0807C666: + ldrh r0, [r6, #0x1e] + cmp r0, #0xff + bls _0807C694 + ldrh r0, [r6, #0x20] + cmp r0, #0xff + bls _0807C694 + movs r0, #0x81 + lsls r0, r0, #6 + adds r2, r5, r0 + movs r0, #0x20 +_0807C67A: + movs r3, #0 + subs r4, r0, #1 +_0807C67E: + ldrh r0, [r1] + strh r0, [r2] + adds r1, #2 + adds r2, #2 + adds r3, #1 + cmp r3, #0x1f + bls _0807C67E + adds r2, #0xc0 + adds r0, r4, #0 + cmp r0, #0 + bne _0807C67A +_0807C694: + pop {r4, r5, r6, pc} + .align 2, 0 +_0807C698: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807C69C +sub_0807C69C: @ 0x0807C69C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + adds r6, r1, #0 + mov r8, r2 + mov r0, r8 + muls r0, r6, r0 + add r0, sb + subs r2, r0, #1 + mov r0, r8 + subs r0, #1 + lsls r0, r0, #6 + add r0, sb + subs r1, r6, #1 + adds r4, r0, r1 + movs r5, #0 + cmp r5, r8 + bhs _0807C6EA +_0807C6C4: + movs r3, #0 + adds r7, r4, #0 + subs r7, #0x40 + subs r0, r2, r6 + mov ip, r0 + cmp r3, r6 + bhs _0807C6E0 +_0807C6D2: + subs r0, r4, r3 + subs r1, r2, r3 + ldrb r1, [r1] + strb r1, [r0] + adds r3, #1 + cmp r3, r6 + blo _0807C6D2 +_0807C6E0: + adds r4, r7, #0 + mov r2, ip + adds r5, #1 + cmp r5, r8 + blo _0807C6C4 +_0807C6EA: + movs r0, #0x40 + subs r7, r0, r6 + movs r5, #0 + mov r1, r8 + lsls r2, r1, #6 + mov r0, sb + adds r1, r0, r6 +_0807C6F8: + lsls r0, r5, #6 + adds r4, r1, r0 + movs r3, #0 + adds r6, r5, #1 + cmp r3, r7 + bhs _0807C710 + movs r5, #0 +_0807C706: + adds r0, r4, r3 + strb r5, [r0] + adds r3, #1 + cmp r3, r7 + blo _0807C706 +_0807C710: + adds r5, r6, #0 + cmp r5, #0x3f + bls _0807C6F8 + movs r0, #0x40 + mov r1, r8 + subs r7, r0, r1 + mov r0, sb + adds r4, r0, r2 + movs r5, #0 + cmp r5, r7 + bhs _0807C736 +_0807C726: + adds r0, r4, #0 + movs r1, #0x40 + bl sub_0801D630 + adds r4, #0x40 + adds r5, #1 + cmp r5, r7 + blo _0807C726 +_0807C736: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807C740 +sub_0807C740: @ 0x0807C740 + push {r4, r5, lr} + bl sub_0807BFD0 + bl sub_0807C0DC + ldr r4, _0807C780 @ =gUnk_03000BF0 + ldr r2, [r4, #0x30] + cmp r2, #0 + beq _0807C788 + ldrh r1, [r2, #0x2e] + lsls r0, r1, #0x10 + cmp r0, #0 + bge _0807C764 + ldr r0, _0807C784 @ =0x00007FFF + ands r0, r1 + ldrh r1, [r4, #6] + subs r0, r0, r1 + strh r0, [r2, #0x2e] +_0807C764: + movs r0, #0x2e + ldrsh r3, [r2, r0] + ldrh r1, [r2, #0x32] + lsls r0, r1, #0x10 + cmp r0, #0 + bge _0807C77A + ldr r0, _0807C784 @ =0x00007FFF + ands r0, r1 + ldrh r1, [r4, #8] + subs r0, r0, r1 + strh r0, [r2, #0x32] +_0807C77A: + movs r0, #0x32 + ldrsh r5, [r2, r0] + b _0807C78C + .align 2, 0 +_0807C780: .4byte gUnk_03000BF0 +_0807C784: .4byte 0x00007FFF +_0807C788: + movs r3, #0 + movs r5, #0 +_0807C78C: + cmp r3, #0x77 + bgt _0807C794 + movs r0, #0 + b _0807C7A2 +_0807C794: + ldrh r1, [r4, #0x1e] + adds r0, r1, #0 + subs r0, #0x78 + cmp r0, r3 + blt _0807C7A0 + adds r0, r3, #0 +_0807C7A0: + subs r0, #0x78 +_0807C7A2: + strh r0, [r4, #0xa] + ldrh r1, [r4, #6] + ldrh r2, [r4, #0xa] + adds r0, r1, r2 + strh r0, [r4, #0xa] + cmp r5, #0x4f + bgt _0807C7B4 + movs r0, #0 + b _0807C7C2 +_0807C7B4: + ldrh r2, [r4, #0x20] + adds r0, r2, #0 + subs r0, #0x50 + cmp r0, r5 + blt _0807C7C0 + adds r0, r5, #0 +_0807C7C0: + subs r0, #0x50 +_0807C7C2: + strh r0, [r4, #0xc] + ldrh r0, [r4, #8] + ldrh r3, [r4, #0xc] + adds r0, r0, r3 + strh r0, [r4, #0xc] + ldr r2, [r4, #0x30] + cmp r2, #0 + beq _0807C7FC + ldrh r3, [r2, #0x2e] + adds r0, r1, r3 + strh r0, [r2, #0x2e] + ldr r1, [r4, #0x30] + ldrh r0, [r4, #8] + ldrh r2, [r1, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x32] + ldr r0, _0807C80C @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0807C7FC + ldr r0, [r4, #0x30] + adds r0, #0x38 + movs r1, #1 + strb r1, [r0] + ldr r0, [r4, #0x30] + bl sub_08016A04 +_0807C7FC: + ldrb r1, [r4, #0xf] + movs r0, #0xfb + ands r0, r1 + strb r0, [r4, #0xf] + bl sub_08080BC4 + pop {r4, r5, pc} + .align 2, 0 +_0807C80C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807C810 +sub_0807C810: @ 0x0807C810 + push {r4, r5, r6, lr} + bl sub_0807BFD0 + ldr r2, _0807C850 @ =gUnk_03004030 + ldr r6, _0807C854 @ =gLinkEntity + ldr r4, _0807C858 @ =gUnk_03000BF0 + ldr r3, [r2] + ldrh r1, [r3, #6] + movs r0, #0x3f + ands r0, r1 + lsls r0, r0, #4 + ldrh r1, [r4, #6] + adds r0, r0, r1 + ldrh r1, [r2, #4] + adds r1, r1, r0 + movs r5, #0 + strh r1, [r6, #0x2e] + ldrh r1, [r3, #6] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r1 + lsrs r0, r0, #2 + ldrh r4, [r4, #8] + adds r0, r0, r4 + ldrh r1, [r2, #6] + adds r1, r1, r0 + strh r1, [r6, #0x32] + bl sub_080809D4 + ldr r0, _0807C85C @ =gUnk_02000070 + strb r5, [r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_0807C850: .4byte gUnk_03004030 +_0807C854: .4byte gLinkEntity +_0807C858: .4byte gUnk_03000BF0 +_0807C85C: .4byte gUnk_02000070 + + thumb_func_start sub_0807C860 +sub_0807C860: @ 0x0807C860 + push {r4, lr} + ldr r0, _0807C88C @ =gUnk_030010A0 + adds r0, #0x2d + movs r1, #1 + strb r1, [r0] + ldr r0, _0807C890 @ =gUnk_02025EB4 + movs r2, #0xc0 + lsls r2, r2, #6 + adds r1, r0, r2 + movs r4, #0x80 + lsls r4, r4, #6 + adds r2, r4, #0 + bl sub_0801D66C + ldr r0, _0807C894 @ =gUnk_0200B654 + movs r2, #0xc0 + lsls r2, r2, #6 + adds r1, r0, r2 + adds r2, r4, #0 + bl sub_0801D66C + pop {r4, pc} + .align 2, 0 +_0807C88C: .4byte gUnk_030010A0 +_0807C890: .4byte gUnk_02025EB4 +_0807C894: .4byte gUnk_0200B654 + + thumb_func_start sub_0807C898 +sub_0807C898: @ 0x0807C898 + push {r4, r5, lr} + ldr r4, _0807C8AC @ =gUnk_030010A0 + adds r4, #0x2d + movs r5, #0 + movs r0, #2 + strb r0, [r4] + bl sub_0807C0DC + strb r5, [r4] + pop {r4, r5, pc} + .align 2, 0 +_0807C8AC: .4byte gUnk_030010A0 + + thumb_func_start sub_0807C8B0 +sub_0807C8B0: @ 0x0807C8B0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r0 + adds r4, r1, #0 + mov ip, r2 + mov r0, ip + muls r0, r4, r0 + lsls r0, r0, #1 + add r0, r8 + subs r7, r0, #2 + mov r0, ip + subs r0, #1 + lsls r0, r0, #7 + add r0, r8 + lsls r3, r4, #1 + subs r1, r3, #2 + adds r0, r0, r1 + movs r5, #0 + cmp r5, ip + bhs _0807C906 + mov sb, r3 +_0807C8DE: + movs r2, #0 + adds r6, r0, #0 + subs r6, #0x80 + cmp r2, r4 + bhs _0807C8FA + adds r1, r7, #0 + adds r3, r0, #0 +_0807C8EC: + ldrh r0, [r1] + strh r0, [r3] + subs r1, #2 + subs r3, #2 + adds r2, #1 + cmp r2, r4 + blo _0807C8EC +_0807C8FA: + adds r0, r6, #0 + mov r1, sb + subs r7, r7, r1 + adds r5, #1 + cmp r5, ip + blo _0807C8DE +_0807C906: + movs r0, #0x40 + subs r6, r0, r4 + movs r5, #0 + lsls r0, r4, #1 + mov r2, ip + lsls r7, r2, #7 + mov r2, r8 + adds r1, r2, r0 +_0807C916: + lsls r0, r5, #7 + adds r0, r1, r0 + movs r2, #0 + adds r3, r5, #1 + cmp r2, r6 + bhs _0807C92E + movs r4, #0 +_0807C924: + strh r4, [r0] + adds r0, #2 + adds r2, #1 + cmp r2, r6 + blo _0807C924 +_0807C92E: + adds r5, r3, #0 + cmp r5, #0x3f + bls _0807C916 + movs r0, #0x40 + mov r1, ip + subs r6, r0, r1 + mov r2, r8 + adds r0, r2, r7 + movs r5, #0 + cmp r5, r6 + bhs _0807C956 + adds r4, r0, #0 +_0807C946: + adds r0, r4, #0 + movs r1, #0x80 + bl sub_0801D630 + adds r4, #0x80 + adds r5, #1 + cmp r5, r6 + blo _0807C946 +_0807C956: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807C960 +sub_0807C960: @ 0x0807C960 + push {lr} + adds r2, r0, #0 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _0807C994 + ldr r0, _0807C984 @ =0x7FFFFFFF + ands r0, r1 + ldr r1, _0807C988 @ =gUnk_08324AE4 + adds r1, r0, r1 + lsrs r0, r2, #0x18 + cmp r0, #6 + bne _0807C98C + adds r0, r1, #0 + adds r1, r2, #0 + bl LZ77UnCompVram + b _0807C994 + .align 2, 0 +_0807C984: .4byte 0x7FFFFFFF +_0807C988: .4byte gUnk_08324AE4 +_0807C98C: + adds r0, r1, #0 + adds r1, r2, #0 + bl LZ77UnCompWram +_0807C994: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807C998 +sub_0807C998: @ 0x0807C998 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0807C9CC @ =gUnk_0202CEB4 + ldr r1, [r5] + adds r0, r4, #0 + bl sub_0807C960 + ldr r0, _0807C9D0 @ =0xFFFFE000 + adds r4, r4, r0 + ldr r1, [r5, #4] + adds r0, r4, #0 + bl sub_0807C960 + ldr r4, _0807C9D4 @ =gUnk_02012654 + ldr r1, [r5, #8] + adds r0, r4, #0 + bl sub_0807C960 + ldr r0, _0807C9D0 @ =0xFFFFE000 + adds r4, r4, r0 + ldr r1, [r5, #0xc] + adds r0, r4, #0 + bl sub_0807C960 + pop {r4, r5, pc} + .align 2, 0 +_0807C9CC: .4byte gUnk_0202CEB4 +_0807C9D0: .4byte 0xFFFFE000 +_0807C9D4: .4byte gUnk_02012654 + + thumb_func_start sub_0807C9D8 +sub_0807C9D8: @ 0x0807C9D8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0807CA0C @ =0x06004000 + ldr r1, [r5] + bl sub_0807C960 + movs r0, #0xc0 + lsls r0, r0, #0x13 + ldr r1, [r5, #4] + bl sub_0807C960 + ldr r0, _0807CA10 @ =0x06008000 + ldr r1, [r5, #8] + bl sub_0807C960 + ldr r4, _0807CA14 @ =gUnk_020176E0 + ldr r1, [r5, #0xc] + adds r0, r4, #0 + bl sub_0807C960 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0xd + bl sub_0801D754 + pop {r4, r5, pc} + .align 2, 0 +_0807CA0C: .4byte 0x06004000 +_0807CA10: .4byte 0x06008000 +_0807CA14: .4byte gUnk_020176E0 + + thumb_func_start sub_0807CA18 +sub_0807CA18: @ 0x0807CA18 + push {lr} + ldr r0, _0807CA7C @ =gUnk_02002A40 + mov ip, r0 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _0807CA66 + movs r2, #0 + mov r0, ip + strb r2, [r0] + movs r3, #1 + strb r3, [r0, #1] + strb r3, [r0, #8] + mov r1, ip + adds r1, #0xaa + movs r0, #0x18 + strb r0, [r1] + adds r1, #1 + strb r0, [r1] + subs r1, #0x23 + movs r0, #0x22 + strb r0, [r1] + adds r1, #1 + movs r0, #0x15 + strb r0, [r1] + mov r0, ip + adds r0, #0x8a + strb r2, [r0] + adds r0, #1 + strb r2, [r0] + adds r0, #5 + strb r3, [r0] + adds r1, #3 + movs r0, #0x90 + strh r0, [r1] + adds r1, #2 + movs r0, #0x38 + strh r0, [r1] +_0807CA66: + mov r1, ip + adds r1, #0x80 + ldrb r0, [r1] + cmp r0, #0 + bne _0807CA78 + ldr r0, _0807CA80 @ =gUnk_0811E470 + movs r2, #5 + bl sub_0801D66C +_0807CA78: + movs r0, #1 + pop {pc} + .align 2, 0 +_0807CA7C: .4byte gUnk_02002A40 +_0807CA80: .4byte gUnk_0811E470 + + thumb_func_start sub_0807CA84 +sub_0807CA84: @ 0x0807CA84 + adds r2, r0, #0 + lsrs r0, r2, #2 + ldr r1, _0807CA9C @ =gUnk_02002B32 + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #3 + ands r2, r1 + lsls r2, r2, #1 + asrs r0, r2 + ands r0, r1 + bx lr + .align 2, 0 +_0807CA9C: .4byte gUnk_02002B32 + + thumb_func_start sub_0807CAA0 +sub_0807CAA0: @ 0x0807CAA0 + push {r4, lr} + adds r3, r0, #0 + lsrs r4, r3, #2 + ldr r0, _0807CAC4 @ =gUnk_02002B32 + adds r4, r4, r0 + movs r0, #3 + ands r3, r0 + lsls r3, r3, #1 + lsls r1, r3 + ldrb r2, [r4] + lsls r0, r3 + ands r0, r2 + eors r2, r0 + orrs r2, r1 + strb r2, [r4] + lsrs r0, r3 + pop {r4, pc} + .align 2, 0 +_0807CAC4: .4byte gUnk_02002B32 + + thumb_func_start sub_0807CAC8 +sub_0807CAC8: @ 0x0807CAC8 + ldr r2, _0807CAE0 @ =gUnk_02002A40 + ldr r1, _0807CAE4 @ =gUnk_02033A90 + ldr r3, _0807CAE8 @ =0x0000047C + adds r2, r2, r3 + ldrb r1, [r1, #3] + adds r2, r2, r1 + movs r1, #1 + lsls r1, r0 + ldrb r0, [r2] + orrs r1, r0 + strb r1, [r2] + bx lr + .align 2, 0 +_0807CAE0: .4byte gUnk_02002A40 +_0807CAE4: .4byte gUnk_02033A90 +_0807CAE8: .4byte 0x0000047C + + thumb_func_start sub_0807CAEC +sub_0807CAEC: @ 0x0807CAEC + adds r2, r0, #0 + ldr r0, _0807CB04 @ =gUnk_02002A40 + ldr r1, _0807CB08 @ =gUnk_02033A90 + ldr r3, _0807CB0C @ =0x0000047C + adds r0, r0, r3 + ldrb r1, [r1, #3] + adds r0, r0, r1 + ldrb r0, [r0] + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_0807CB04: .4byte gUnk_02002A40 +_0807CB08: .4byte gUnk_02033A90 +_0807CB0C: .4byte 0x0000047C + + thumb_func_start GetProgressFlagWithOffset +GetProgressFlagWithOffset: @ 0x0807CB10 + push {lr} + adds r2, r0, #0 + ldr r0, _0807CB20 @ =gUnk_02002C9C + adds r2, r2, r1 + adds r1, r2, #0 + bl sub_0801D5A8 + pop {pc} + .align 2, 0 +_0807CB20: .4byte gUnk_02002C9C + + thumb_func_start sub_0807CB24 +sub_0807CB24: @ 0x0807CB24 + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + cmp r2, #0x11 + bhi _0807CB84 + lsls r0, r2, #2 + ldr r1, _0807CB38 @ =_0807CB3C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807CB38: .4byte _0807CB3C +_0807CB3C: @ jump table + .4byte _0807CB84 @ case 0 + .4byte _0807CB88 @ case 1 + .4byte _0807CB88 @ case 2 + .4byte _0807CB88 @ case 3 + .4byte _0807CB88 @ case 4 + .4byte _0807CB88 @ case 5 + .4byte _0807CB88 @ case 6 + .4byte _0807CB88 @ case 7 + .4byte _0807CB88 @ case 8 + .4byte _0807CB88 @ case 9 + .4byte _0807CB88 @ case 10 + .4byte _0807CB88 @ case 11 + .4byte _0807CB88 @ case 12 + .4byte _0807CB88 @ case 13 + .4byte _0807CB84 @ case 14 + .4byte _0807CBA0 @ case 15 + .4byte _0807CBAE @ case 16 + .4byte _0807CBBC @ case 17 +_0807CB84: + movs r1, #0 + b _0807CBCA +_0807CB88: + ldr r0, _0807CB9C @ =gUnk_0811E454 + lsls r1, r2, #1 + adds r1, r1, r0 + ldrh r0, [r1] + adds r1, r3, #0 + bl GetProgressFlagWithOffset +_0807CB96: + adds r1, r0, #0 + b _0807CBCA + .align 2, 0 +_0807CB9C: .4byte gUnk_0811E454 +_0807CBA0: + adds r0, r3, #0 + bl sub_0807CA84 + cmp r0, #0 + beq _0807CB96 + movs r0, #1 + b _0807CB96 +_0807CBAE: + adds r0, r3, #0 + bl sub_0807CA84 + movs r1, #0 + cmp r0, #1 + bne _0807CBCA + b _0807CBC8 +_0807CBBC: + adds r0, r3, #0 + bl sub_0807CA84 + movs r1, #0 + cmp r0, #2 + bne _0807CBCA +_0807CBC8: + movs r1, #1 +_0807CBCA: + adds r0, r1, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807CBD0 +sub_0807CBD0: @ 0x0807CBD0 + push {lr} + adds r1, r0, #0 + ldr r0, _0807CBE0 @ =gUnk_02033A90 + ldrh r0, [r0, #4] + bl GetProgressFlagWithOffset + pop {pc} + .align 2, 0 +_0807CBE0: .4byte gUnk_02033A90 + + thumb_func_start sub_0807CBE4 +sub_0807CBE4: @ 0x0807CBE4 + push {lr} + ldr r3, _0807CC14 @ =0x000003FF + ands r3, r0 + movs r1, #0xf0 + lsls r1, r1, #6 + ands r1, r0 + lsrs r1, r1, #0xa + adds r2, r1, #1 + movs r1, #0xc0 + lsls r1, r1, #8 + ands r1, r0 + lsrs r1, r1, #0xe + cmp r1, #1 + beq _0807CC22 + cmp r1, #1 + blo _0807CC18 + cmp r1, #2 + bne _0807CC2C + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807CC88 + b _0807CC2E + .align 2, 0 +_0807CC14: .4byte 0x000003FF +_0807CC18: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807CC60 + b _0807CC2E +_0807CC22: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807CC78 + b _0807CC2E +_0807CC2C: + movs r0, #0 +_0807CC2E: + pop {pc} \ No newline at end of file diff --git a/asm/code_0807CC3C.s b/asm/code_0807CC3C.s new file mode 100644 index 00000000..55c137c5 --- /dev/null +++ b/asm/code_0807CC3C.s @@ -0,0 +1,79890 @@ + .include "asm/macros.inc" + .text + .syntax unified + + thumb_func_start sub_0807CC3C +sub_0807CC3C: @ 0x0807CC3C + push {lr} + adds r1, r0, #0 + ldr r0, _0807CC48 @ =gUnk_02034364 + bl sub_0801D5A8 + pop {pc} + .align 2, 0 +_0807CC48: .4byte gUnk_02034364 + + thumb_func_start sub_0807CC4C +sub_0807CC4C: @ 0x0807CC4C + push {lr} + adds r3, r0, #0 + ldr r0, _0807CC5C @ =gUnk_02002C9C + adds r3, r3, r1 + adds r1, r3, #0 + bl sub_08000F10 + pop {pc} + .align 2, 0 +_0807CC5C: .4byte gUnk_02002C9C + + thumb_func_start sub_0807CC60 +sub_0807CC60: @ 0x0807CC60 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0807CC74 @ =gUnk_02033A90 + ldrh r0, [r0, #4] + adds r1, r3, #0 + bl sub_0807CC4C + pop {pc} + .align 2, 0 +_0807CC74: .4byte gUnk_02033A90 + + thumb_func_start sub_0807CC78 +sub_0807CC78: @ 0x0807CC78 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + movs r0, #0 + adds r1, r3, #0 + bl sub_0807CC4C + pop {pc} + + thumb_func_start sub_0807CC88 +sub_0807CC88: @ 0x0807CC88 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0807CC98 @ =gUnk_02034364 + adds r1, r3, #0 + bl sub_08000F10 + pop {pc} + .align 2, 0 +_0807CC98: .4byte gUnk_02034364 + + thumb_func_start sub_0807CC9C +sub_0807CC9C: @ 0x0807CC9C + push {lr} + adds r2, r0, #0 + cmp r1, #0 + beq _0807CCAC + ldr r0, _0807CCB0 @ =gUnk_02002C9C + adds r1, r2, r1 + bl sub_0801D5BC +_0807CCAC: + pop {pc} + .align 2, 0 +_0807CCB0: .4byte gUnk_02002C9C + + thumb_func_start sub_0807CCB4 +sub_0807CCB4: @ 0x0807CCB4 + push {lr} + adds r1, r0, #0 + ldr r0, _0807CCC4 @ =gUnk_02033A90 + ldrh r0, [r0, #4] + bl sub_0807CC9C + pop {pc} + .align 2, 0 +_0807CCC4: .4byte gUnk_02033A90 + + thumb_func_start sub_0807CCC8 +sub_0807CCC8: @ 0x0807CCC8 + push {lr} + adds r1, r0, #0 + cmp r1, #0 + beq _0807CD02 + ldr r2, _0807CCF0 @ =0x000003FF + ands r2, r1 + movs r0, #0xc0 + lsls r0, r0, #8 + ands r0, r1 + lsrs r0, r0, #0xe + cmp r0, #1 + beq _0807CCFC + cmp r0, #1 + blo _0807CCF4 + cmp r0, #2 + bne _0807CD02 + adds r0, r2, #0 + bl sub_0807CD10 + b _0807CD02 + .align 2, 0 +_0807CCF0: .4byte 0x000003FF +_0807CCF4: + adds r0, r2, #0 + bl sub_0807CCB4 + b _0807CD02 +_0807CCFC: + adds r0, r2, #0 + bl sub_0807CD04 +_0807CD02: + pop {pc} + + thumb_func_start sub_0807CD04 +sub_0807CD04: @ 0x0807CD04 + push {lr} + adds r1, r0, #0 + movs r0, #0 + bl sub_0807CC9C + pop {pc} + + thumb_func_start sub_0807CD10 +sub_0807CD10: @ 0x0807CD10 + push {lr} + adds r1, r0, #0 + ldr r0, _0807CD1C @ =gUnk_02034364 + bl sub_0801D5BC + pop {pc} + .align 2, 0 +_0807CD1C: .4byte gUnk_02034364 + + thumb_func_start sub_0807CD20 +sub_0807CD20: @ 0x0807CD20 + push {lr} + adds r2, r0, #0 + ldr r0, _0807CD30 @ =gUnk_02002C9C + adds r2, r2, r1 + adds r1, r2, #0 + bl sub_0801D5D4 + pop {pc} + .align 2, 0 +_0807CD30: .4byte gUnk_02002C9C + + thumb_func_start sub_0807CD34 +sub_0807CD34: @ 0x0807CD34 + push {lr} + adds r1, r0, #0 + ldr r0, _0807CD44 @ =gUnk_02033A90 + ldrh r0, [r0, #4] + bl sub_0807CD20 + pop {pc} + .align 2, 0 +_0807CD44: .4byte gUnk_02033A90 + + thumb_func_start sub_0807CD48 +sub_0807CD48: @ 0x0807CD48 + push {lr} + ldr r2, _0807CD6C @ =0x000003FF + ands r2, r0 + movs r1, #0xc0 + lsls r1, r1, #8 + ands r1, r0 + lsrs r1, r1, #0xe + cmp r1, #1 + beq _0807CD78 + cmp r1, #1 + blo _0807CD70 + cmp r1, #2 + bne _0807CD7E + adds r0, r2, #0 + bl sub_0807CD8C + b _0807CD7E + .align 2, 0 +_0807CD6C: .4byte 0x000003FF +_0807CD70: + adds r0, r2, #0 + bl sub_0807CD34 + b _0807CD7E +_0807CD78: + adds r0, r2, #0 + bl sub_0807CD80 +_0807CD7E: + pop {pc} + + thumb_func_start sub_0807CD80 +sub_0807CD80: @ 0x0807CD80 + push {lr} + adds r1, r0, #0 + movs r0, #0 + bl sub_0807CD20 + pop {pc} + + thumb_func_start sub_0807CD8C +sub_0807CD8C: @ 0x0807CD8C + push {lr} + adds r1, r0, #0 + ldr r0, _0807CD98 @ =gUnk_02034364 + bl sub_0801D5D4 + pop {pc} + .align 2, 0 +_0807CD98: .4byte gUnk_02034364 + + thumb_func_start sub_0807CD9C +sub_0807CD9C: @ 0x0807CD9C + push {lr} + bl sub_080530C8 + pop {pc} + + thumb_func_start sub_0807CDA4 +sub_0807CDA4: @ 0x0807CDA4 + push {lr} + ldr r2, _0807CDB8 @ =gUnk_0811E478 + ldr r1, _0807CDBC @ =gUnk_02000080 + ldrb r1, [r1, #7] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807CDB8: .4byte gUnk_0811E478 +_0807CDBC: .4byte gUnk_02000080 + + thumb_func_start sub_0807CDC0 +sub_0807CDC0: @ 0x0807CDC0 + push {lr} + ldr r0, _0807CDE0 @ =gUnk_02021EE0 + ldrh r1, [r0, #0xa] + subs r1, #8 + strh r1, [r0, #0xa] + movs r1, #8 + ldrsh r0, [r0, r1] + cmp r0, #0 + bgt _0807CDDC + ldr r0, _0807CDE4 @ =gUnk_02000080 + movs r1, #8 + strh r1, [r0, #0xa] + movs r1, #1 + strb r1, [r0, #7] +_0807CDDC: + movs r0, #0 + pop {pc} + .align 2, 0 +_0807CDE0: .4byte gUnk_02021EE0 +_0807CDE4: .4byte gUnk_02000080 + + thumb_func_start sub_0807CDE8 +sub_0807CDE8: @ 0x0807CDE8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0807CE08 @ =gUnk_02000080 + ldrh r0, [r1, #0xa] + cmp r0, #0 + bne _0807CE4C + bl sub_0805616C + cmp r4, #1 + beq _0807CE20 + cmp r4, #1 + blo _0807CE0C + cmp r4, #2 + beq _0807CE2E + b _0807CE38 + .align 2, 0 +_0807CE08: .4byte gUnk_02000080 +_0807CE0C: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #4] + ldr r1, _0807CE1C @ =gUnk_02002A40 + bl sub_0807CF08 + b _0807CE36 + .align 2, 0 +_0807CE1C: .4byte gUnk_02002A40 +_0807CE20: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #4] + bl sub_0807CF48 + movs r5, #1 + b _0807CE38 +_0807CE2E: + movs r0, #0x80 + lsls r0, r0, #0x12 + bl sub_0807CF10 +_0807CE36: + adds r5, r0, #0 +_0807CE38: + ldr r1, _0807CE48 @ =gUnk_02000080 + strh r5, [r1, #0xa] + movs r0, #2 + strb r0, [r1, #7] + bl sub_08056208 + b _0807CE50 + .align 2, 0 +_0807CE48: .4byte gUnk_02000080 +_0807CE4C: + subs r0, #1 + strh r0, [r1, #0xa] +_0807CE50: + movs r0, #0 + pop {r4, r5, pc} + + thumb_func_start sub_0807CE54 +sub_0807CE54: @ 0x0807CE54 + push {r4, r5, lr} + movs r4, #0 + ldr r2, _0807CE88 @ =gUnk_02021EE0 + ldrh r0, [r2, #0xa] + adds r0, #8 + strh r0, [r2, #0xa] + ldrh r3, [r2, #6] + movs r5, #6 + ldrsh r1, [r2, r5] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + cmp r1, r0 + bgt _0807CE84 + strh r3, [r2, #0xa] + bl sub_08050384 + ldr r0, _0807CE8C @ =gUnk_02000080 + movs r1, #0 + strb r1, [r0, #7] + ldrh r0, [r0, #0xa] + subs r4, #1 + cmp r0, #1 + bne _0807CE84 + movs r4, #1 +_0807CE84: + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 +_0807CE88: .4byte gUnk_02021EE0 +_0807CE8C: .4byte gUnk_02000080 + + thumb_func_start sub_0807CE90 +sub_0807CE90: @ 0x0807CE90 + push {r4, r5, r6, lr} + movs r0, #0x40 + bl sub_080B1520 + movs r0, #4 + bl sub_0807D1C4 + adds r4, r0, #0 + movs r5, #0 + ldrh r0, [r4, #6] + ldr r6, _0807CF04 @ =gUnk_0811E484 + ldrh r2, [r4] + adds r1, r6, #0 + bl sub_0807D24C + cmp r0, #0 + bne _0807CEB4 + movs r5, #1 +_0807CEB4: + ldrh r0, [r4, #8] + ldrh r2, [r4] + adds r1, r6, #0 + bl sub_0807D24C + cmp r0, #0 + bne _0807CEC4 + adds r5, #2 +_0807CEC4: + cmp r5, #0 + beq _0807CEFE + cmp r5, #3 + bne _0807CEEA + movs r0, #5 + bl sub_0807CF68 + movs r0, #3 + bl sub_0807CF68 + movs r0, #2 + bl sub_0807CF68 + movs r0, #1 + bl sub_0807CF68 + movs r0, #0 + bl sub_0807CF68 +_0807CEEA: + ldrh r0, [r4, #8] + ldrh r2, [r4] + adds r1, r6, #0 + bl sub_0807D20C + ldrh r0, [r4, #6] + ldrh r2, [r4] + adds r1, r6, #0 + bl sub_0807D20C +_0807CEFE: + movs r0, #1 + pop {r4, r5, r6, pc} + .align 2, 0 +_0807CF04: .4byte gUnk_0811E484 + + thumb_func_start sub_0807CF08 +sub_0807CF08: @ 0x0807CF08 + push {lr} + bl sub_0807CF88 + pop {pc} + + thumb_func_start sub_0807CF10 +sub_0807CF10: @ 0x0807CF10 + push {lr} + adds r1, r0, #0 + movs r0, #3 + bl sub_0807CF88 + pop {pc} + + thumb_func_start sub_0807CF1C +sub_0807CF1C: @ 0x0807CF1C + push {lr} + adds r1, r0, #0 + movs r0, #5 + bl sub_0807CF88 + pop {pc} + + thumb_func_start sub_0807CF28 +sub_0807CF28: @ 0x0807CF28 + push {lr} + bl sub_0807D008 + pop {pc} + + thumb_func_start sub_0807CF30 +sub_0807CF30: @ 0x0807CF30 + push {lr} + adds r1, r0, #0 + movs r0, #3 + bl sub_0807D008 + pop {pc} + + thumb_func_start sub_0807CF3C +sub_0807CF3C: @ 0x0807CF3C + push {lr} + adds r1, r0, #0 + movs r0, #5 + bl sub_0807D008 + pop {pc} + + thumb_func_start sub_0807CF48 +sub_0807CF48: @ 0x0807CF48 + push {r4, r5, lr} + bl sub_0807D1C4 + adds r4, r0, #0 + ldrh r0, [r4, #4] + ldr r5, _0807CF64 @ =gUnk_0811E4AC + adds r1, r5, #0 + bl sub_0807D184 + ldrh r0, [r4, #2] + adds r1, r5, #0 + bl sub_0807D184 + pop {r4, r5, pc} + .align 2, 0 +_0807CF64: .4byte gUnk_0811E4AC + + thumb_func_start sub_0807CF68 +sub_0807CF68: @ 0x0807CF68 + push {r4, r5, lr} + bl sub_0807D1C4 + adds r4, r0, #0 + ldr r5, _0807CF84 @ =gUnk_0811E4A4 + ldrh r0, [r4, #4] + adds r1, r5, #0 + bl sub_0807D184 + ldrh r0, [r4, #2] + adds r1, r5, #0 + bl sub_0807D184 + pop {r4, r5, pc} + .align 2, 0 +_0807CF84: .4byte gUnk_0811E4A4 + + thumb_func_start sub_0807CF88 +sub_0807CF88: @ 0x0807CF88 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r7, r1, #0 + bl sub_0807D1C4 + adds r6, r0, #0 + ldr r0, _0807D004 @ =0x4D435A33 + mov r5, sp + str r0, [sp, #4] + add r0, sp, #4 + movs r1, #4 + bl sub_0807D1A4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrh r1, [r6] + adds r0, r7, #0 + bl sub_0807D1A4 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + mov r0, sp + strh r4, [r0] + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + rsbs r4, r4, #0 + strh r4, [r5, #2] + ldrh r0, [r6, #6] + ldrh r2, [r6] + adds r1, r7, #0 + bl sub_0807D20C + adds r4, r0, #0 + cmp r4, #0 + beq _0807CFDC + ldrh r0, [r6, #2] + mov r1, sp + bl sub_0807D184 + adds r4, r0, #0 +_0807CFDC: + ldrh r0, [r6, #8] + ldrh r2, [r6] + adds r1, r7, #0 + bl sub_0807D20C + cmp r0, #0 + beq _0807CFF2 + ldrh r0, [r6, #4] + mov r1, sp + bl sub_0807D184 +_0807CFF2: + movs r1, #0 + cmp r4, #0 + bne _0807CFFC + cmp r0, #0 + beq _0807CFFE +_0807CFFC: + movs r1, #1 +_0807CFFE: + adds r0, r1, #0 + add sp, #8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807D004: .4byte 0x4D435A33 + + thumb_func_start sub_0807D008 +sub_0807D008: @ 0x0807D008 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #0xc + adds r7, r1, #0 + bl sub_0807D1C4 + adds r5, r0, #0 + ldrh r0, [r5, #2] + add r4, sp, #4 + adds r1, r4, #0 + bl sub_0807D0EC + adds r6, r0, #0 + mov r8, r4 + cmp r6, #2 + bne _0807D048 + ldrh r0, [r5, #6] + ldrh r2, [r5] + adds r1, r7, #0 + bl sub_0807D1D8 + cmp r0, #0 + beq _0807D046 + ldrh r2, [r5] + mov r0, r8 + adds r1, r7, #0 + bl sub_0807D0A0 + cmp r0, #0 + bne _0807D072 +_0807D046: + movs r6, #0 +_0807D048: + ldrh r0, [r5, #4] + mov r1, r8 + bl sub_0807D0EC + adds r4, r0, #0 + cmp r4, #2 + bne _0807D078 + ldrh r0, [r5, #8] + ldrh r2, [r5] + adds r1, r7, #0 + bl sub_0807D1D8 + cmp r0, #0 + beq _0807D076 + ldrh r2, [r5] + mov r0, r8 + adds r1, r7, #0 + bl sub_0807D0A0 + cmp r0, #0 + beq _0807D076 +_0807D072: + movs r0, #1 + b _0807D098 +_0807D076: + movs r4, #0 +_0807D078: + movs r0, #0 + str r0, [sp] + ldrh r2, [r5] + lsrs r2, r2, #2 + movs r0, #0xa0 + lsls r0, r0, #0x13 + orrs r2, r0 + mov r0, sp + adds r1, r7, #0 + bl CpuSet + orrs r6, r4 + movs r0, #0 + cmp r6, #0 + bne _0807D098 + subs r0, #1 +_0807D098: + add sp, #0xc + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807D0A0 +sub_0807D0A0: @ 0x0807D0A0 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r0, r7, #4 + movs r1, #4 + bl sub_0807D1A4 + adds r4, r0, #0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0807D1A4 + adds r4, r4, r0 + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + ldrh r0, [r7] + cmp r0, r4 + bne _0807D0DE + lsls r0, r0, #0x10 + ldrh r1, [r7, #2] + rsbs r0, r0, #0 + lsrs r0, r0, #0x10 + cmp r1, r0 + bne _0807D0DE + ldr r1, [r7, #4] + ldr r0, _0807D0E4 @ =0x4D435A33 + cmp r1, r0 + beq _0807D0E8 +_0807D0DE: + movs r0, #0 + b _0807D0EA + .align 2, 0 +_0807D0E4: .4byte 0x4D435A33 +_0807D0E8: + movs r0, #1 +_0807D0EA: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807D0EC +sub_0807D0EC: @ 0x0807D0EC + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + movs r2, #8 + bl sub_0807D1D8 + cmp r0, #0 + bne _0807D100 + movs r5, #0 + b _0807D10C +_0807D100: + adds r0, r4, #0 + bl sub_0807D128 + adds r5, r0, #0 + cmp r5, #0 + bne _0807D124 +_0807D10C: + adds r0, r6, #0 + adds r0, #8 + adds r1, r4, #0 + movs r2, #8 + bl sub_0807D1D8 + cmp r0, #0 + beq _0807D124 + adds r0, r4, #0 + bl sub_0807D128 + adds r5, r0, #0 +_0807D124: + adds r0, r5, #0 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0807D128 +sub_0807D128: @ 0x0807D128 + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #4] + ldr r0, _0807D13C @ =0x4D435A33 + cmp r1, r0 + beq _0807D150 + cmp r1, r0 + bhi _0807D144 + ldr r0, _0807D140 @ =0x466C6544 + b _0807D146 + .align 2, 0 +_0807D13C: .4byte 0x4D435A33 +_0807D140: .4byte 0x466C6544 +_0807D144: + ldr r0, _0807D14C @ =0x54494E49 +_0807D146: + cmp r1, r0 + beq _0807D164 + b _0807D17C + .align 2, 0 +_0807D14C: .4byte 0x54494E49 +_0807D150: + ldrh r0, [r2] + ldrh r1, [r2, #2] + adds r0, r0, r1 + movs r1, #0x80 + lsls r1, r1, #9 + movs r3, #0 + cmp r0, r1 + bne _0807D17E + movs r3, #2 + b _0807D17E +_0807D164: + movs r3, #0 + ldrh r0, [r2] + ldrh r1, [r2, #2] + ands r1, r0 + ldr r0, _0807D178 @ =0x0000FFFF + cmp r1, r0 + bne _0807D17E + movs r3, #1 + b _0807D17E + .align 2, 0 +_0807D178: .4byte 0x0000FFFF +_0807D17C: + movs r3, #0 +_0807D17E: + adds r0, r3, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807D184 +sub_0807D184: @ 0x0807D184 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r2, #8 + bl sub_0807D20C + cmp r0, #0 + bne _0807D1A0 + adds r0, r4, #0 + adds r0, #8 + adds r1, r5, #0 + movs r2, #8 + bl sub_0807D20C +_0807D1A0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0807D1A4 +sub_0807D1A4: @ 0x0807D1A4 + push {lr} + adds r2, r0, #0 + movs r3, #0 + cmp r1, #0 + beq _0807D1BC +_0807D1AE: + ldrh r0, [r2] + eors r0, r1 + adds r3, r3, r0 + adds r2, #2 + subs r1, #2 + cmp r1, #0 + bne _0807D1AE +_0807D1BC: + lsls r0, r3, #0x10 + lsrs r0, r0, #0x10 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807D1C4 +sub_0807D1C4: @ 0x0807D1C4 + adds r1, r0, #0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0807D1D4 @ =gUnk_0811E4BC + adds r0, r0, r1 + bx lr + .align 2, 0 +_0807D1D4: .4byte gUnk_0811E4BC + + thumb_func_start sub_0807D1D8 +sub_0807D1D8: @ 0x0807D1D8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsrs r4, r2, #3 + adds r0, r4, #0 + lsrs r5, r5, #3 + b _0807D200 +_0807D1E6: + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl sub_080B15E8 + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0807D1FA + movs r0, #0 + b _0807D208 +_0807D1FA: + adds r5, #1 + adds r6, #8 + adds r0, r4, #0 +_0807D200: + subs r4, #1 + cmp r0, #0 + bne _0807D1E6 + movs r0, #1 +_0807D208: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0807D20C +sub_0807D20C: @ 0x0807D20C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + lsrs r5, r2, #3 + adds r0, r5, #0 + lsrs r6, r6, #3 + b _0807D242 +_0807D21A: + lsls r0, r6, #0x10 + lsrs r4, r0, #0x10 + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_080B18DC + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0807D23C + adds r0, r4, #0 + ldr r1, _0807D238 @ =gUnk_0811E4B4 + bl sub_080B18DC + movs r0, #0 + b _0807D24A + .align 2, 0 +_0807D238: .4byte gUnk_0811E4B4 +_0807D23C: + adds r6, #1 + adds r7, #8 + adds r0, r5, #0 +_0807D242: + subs r5, #1 + cmp r0, #0 + bne _0807D21A + movs r0, #1 +_0807D24A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807D24C +sub_0807D24C: @ 0x0807D24C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + lsrs r4, r2, #3 + adds r0, r4, #0 + lsrs r5, r5, #3 + b _0807D274 +_0807D25A: + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + adds r1, r6, #0 + bl sub_080B180C + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0807D26E + movs r0, #0 + b _0807D27C +_0807D26E: + adds r5, #1 + adds r6, #8 + adds r0, r4, #0 +_0807D274: + subs r4, #1 + cmp r0, #0 + bne _0807D25A + movs r0, #1 +_0807D27C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0807D280 +sub_0807D280: @ 0x0807D280 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + adds r5, r1, #0 + ldr r1, _0807D2B0 @ =gUnk_03000BF0 + movs r0, #0xa + ldrsh r2, [r1, r0] + ldrh r0, [r1, #6] + subs r3, r2, r0 + movs r0, #0xc + ldrsh r2, [r1, r0] + ldrh r0, [r1, #8] + subs r4, r2, r0 + ldrb r0, [r1, #0x10] + mov r8, r1 + cmp r0, #1 + beq _0807D330 + cmp r0, #1 + bgt _0807D2B4 + cmp r0, #0 + beq _0807D2BA + b _0807D404 + .align 2, 0 +_0807D2B0: .4byte gUnk_03000BF0 +_0807D2B4: + cmp r0, #2 + beq _0807D3A0 + b _0807D404 +_0807D2BA: + mov r2, r8 + ldrh r1, [r2, #0x18] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + beq _0807D2C8 + b _0807D462 +_0807D2C8: + movs r2, #0x1c + asrs r3, r3, #4 + mov sb, r3 + movs r3, #0x40 + adds r3, r3, r5 + mov ip, r3 + ldr r4, _0807D328 @ =0x040000D4 + ldr r7, _0807D32C @ =0x80000020 + movs r0, #0xe8 + lsls r0, r0, #3 + adds r3, r5, r0 + subs r0, #0x80 + adds r1, r5, r0 +_0807D2E2: + str r1, [r4] + str r3, [r4, #4] + str r7, [r4, #8] + ldr r0, [r4, #8] + subs r3, #0x40 + subs r1, #0x40 + subs r2, #1 + cmp r2, #0 + bgt _0807D2E2 + mov r1, r8 + ldrh r0, [r1, #0x20] + lsrs r0, r0, #4 + subs r0, #1 + ldrh r1, [r1, #0x18] + lsrs r1, r1, #2 + subs r0, r0, r1 + lsls r0, r0, #8 + mov r2, sb + lsls r1, r2, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r6, r6, r0 + ldr r0, _0807D328 @ =0x040000D4 + str r6, [r0] + str r5, [r0, #4] + ldr r2, _0807D32C @ =0x80000020 + str r2, [r0, #8] + ldr r1, [r0, #8] + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r6, r3 + str r1, [r0] + mov r1, ip + b _0807D3F0 + .align 2, 0 +_0807D328: .4byte 0x040000D4 +_0807D32C: .4byte 0x80000020 +_0807D330: + mov r2, r8 + ldrh r3, [r2, #0x18] + movs r0, #3 + ands r0, r3 + cmp r0, #0 + beq _0807D33E + b _0807D462 +_0807D33E: + asrs r7, r4, #4 + movs r0, #0x3c + adds r0, r0, r5 + mov sb, r0 + cmp r3, #0 + beq _0807D36A + ldr r4, _0807D398 @ =0x040000D4 + ldr r1, _0807D39C @ =0x8000001E + mov ip, r1 + adds r3, r5, #4 + adds r1, r5, #0 + movs r2, #0x15 +_0807D356: + str r3, [r4] + str r1, [r4, #4] + mov r0, ip + str r0, [r4, #8] + ldr r0, [r4, #8] + adds r3, #0x40 + adds r1, #0x40 + subs r2, #1 + cmp r2, #0 + bge _0807D356 +_0807D36A: + lsls r1, r7, #8 + mov r2, r8 + ldrh r0, [r2, #0x18] + lsrs r0, r0, #2 + lsls r0, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #1 + adds r6, r6, r1 + mov r5, sb + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x15 +_0807D382: + ldrh r0, [r6] + strh r0, [r5] + ldrh r0, [r6, #2] + strh r0, [r5, #2] + adds r5, #0x40 + adds r6, r6, r1 + subs r2, #1 + cmp r2, #0 + bge _0807D382 + b _0807D462 + .align 2, 0 +_0807D398: .4byte 0x040000D4 +_0807D39C: .4byte 0x8000001E +_0807D3A0: + mov r0, r8 + ldrh r1, [r0, #0x18] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0807D462 + lsls r2, r1, #0x10 + cmp r2, #0 + beq _0807D3C2 + ldr r1, _0807D3F8 @ =0x040000D4 + adds r0, r5, #0 + adds r0, #0x80 + str r0, [r1] + str r5, [r1, #4] + ldr r0, _0807D3FC @ =0x800003C0 + str r0, [r1, #8] + ldr r0, [r1, #8] +_0807D3C2: + lsrs r0, r2, #0x12 + lsls r0, r0, #8 + asrs r1, r3, #4 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r6, r6, r0 + ldr r0, _0807D3F8 @ =0x040000D4 + str r6, [r0] + movs r2, #0xa0 + lsls r2, r2, #3 + adds r1, r5, r2 + str r1, [r0, #4] + ldr r2, _0807D400 @ =0x80000020 + str r2, [r0, #8] + ldr r1, [r0, #8] + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r6, r3 + str r1, [r0] + movs r3, #0xa8 + lsls r3, r3, #3 + adds r1, r5, r3 +_0807D3F0: + str r1, [r0, #4] + str r2, [r0, #8] + ldr r0, [r0, #8] + b _0807D462 + .align 2, 0 +_0807D3F8: .4byte 0x040000D4 +_0807D3FC: .4byte 0x800003C0 +_0807D400: .4byte 0x80000020 +_0807D404: + mov r0, r8 + ldrh r1, [r0, #0x18] + movs r0, #3 + ands r0, r1 + cmp r0, #1 + bne _0807D462 + movs r2, #0 + asrs r7, r4, #4 + mov ip, r5 +_0807D416: + movs r1, #0x1d + mov r3, ip + adds r3, #0x3a +_0807D41C: + ldrh r0, [r3] + strh r0, [r3, #4] + subs r3, #2 + subs r1, #1 + cmp r1, #0 + bge _0807D41C + movs r1, #0x40 + add ip, r1 + adds r2, #1 + cmp r2, #0x15 + ble _0807D416 + lsls r0, r7, #8 + mov r2, r8 + ldrh r1, [r2, #0x1e] + lsrs r1, r1, #4 + subs r1, #1 + ldrh r2, [r2, #0x18] + lsrs r2, r2, #2 + subs r1, r1, r2 + lsls r1, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r6, r6, r0 + movs r1, #0x80 + lsls r1, r1, #1 + movs r2, #0x15 +_0807D450: + ldrh r0, [r6] + strh r0, [r5] + ldrh r0, [r6, #2] + strh r0, [r5, #2] + adds r5, #0x40 + adds r6, r6, r1 + subs r2, #1 + cmp r2, #0 + bge _0807D450 +_0807D462: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807D46C +sub_0807D46C: @ 0x0807D46C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + str r0, [sp] + str r1, [sp, #4] + ldr r0, _0807D494 @ =gUnk_03000BF0 + ldrb r2, [r0, #0x10] + mov sb, r0 + cmp r2, #1 + bne _0807D488 + b _0807D5C4 +_0807D488: + cmp r2, #1 + bgt _0807D498 + cmp r2, #0 + beq _0807D4A4 + b _0807D6CC + .align 2, 0 +_0807D494: .4byte gUnk_03000BF0 +_0807D498: + cmp r2, #2 + beq _0807D4A4 + cmp r2, #3 + bne _0807D4A2 + b _0807D5C4 +_0807D4A2: + b _0807D6CC +_0807D4A4: + mov r1, sb + movs r2, #0xa + ldrsh r0, [r1, r2] + ldrh r1, [r1, #6] + subs r5, r0, r1 + cmp r5, #7 + ble _0807D4B4 + subs r5, #8 +_0807D4B4: + mov r3, sb + ldr r0, [r3, #0x30] + movs r2, #0x2e + ldrsh r0, [r0, r2] + subs r0, r0, r1 + subs r3, r0, #4 + mov r8, r3 + cmp r3, #7 + ble _0807D4CA + subs r0, #0xc + mov r8, r0 +_0807D4CA: + mov r0, sb + movs r2, #0xc + ldrsh r1, [r0, r2] + ldrh r0, [r0, #8] + subs r1, r1, r0 + mov ip, r1 + cmp r1, #7 + ble _0807D4E0 + movs r3, #8 + rsbs r3, r3, #0 + add ip, r3 +_0807D4E0: + mov r1, sb + ldrh r0, [r1, #0x18] + lsls r0, r0, #3 + mov r2, r8 + subs r0, r2, r0 + adds r7, r5, #0 + adds r7, #0xf8 + cmp r0, r5 + blt _0807D548 + mov r1, ip + asrs r3, r1, #3 + lsls r1, r3, #8 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r0, #3 + lsls r2, r0, #1 + adds r4, r1, r2 + movs r1, #0x1f + ands r0, r1 + lsls r0, r0, #1 + ldr r2, [sp, #4] + adds r6, r2, r0 + ands r3, r1 + lsls r2, r3, #5 + mov r3, sb + ldrh r0, [r3, #0x20] + lsls r1, r0, #0x10 + lsrs r0, r1, #0x10 + cmp r0, #0xaf + bhi _0807D520 + lsrs r3, r1, #0x13 + b _0807D522 +_0807D520: + movs r3, #0x16 +_0807D522: + adds r7, r5, #0 + adds r7, #0xf8 + cmp r3, #0 + ble _0807D548 + ldr r0, _0807D55C @ =0x000003FF + mov sl, r0 +_0807D52E: + lsls r0, r2, #1 + adds r0, r0, r6 + ldrh r1, [r4] + strh r1, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + adds r4, r4, r1 + adds r2, #0x20 + mov r0, sl + ands r2, r0 + subs r3, #1 + cmp r3, #0 + bgt _0807D52E +_0807D548: + mov r1, sb + ldrh r0, [r1, #0x18] + adds r0, #1 + lsls r0, r0, #3 + add r0, r8 + ldrh r2, [r1, #0x1e] + cmp r7, r2 + blt _0807D560 + adds r1, r7, #0 + b _0807D566 + .align 2, 0 +_0807D55C: .4byte 0x000003FF +_0807D560: + movs r3, #0x80 + lsls r3, r3, #1 + adds r1, r5, r3 +_0807D566: + cmp r0, r1 + blt _0807D56C + b _0807D6CC +_0807D56C: + mov r1, ip + asrs r3, r1, #3 + lsls r1, r3, #8 + ldr r2, [sp] + adds r1, r2, r1 + asrs r0, r0, #3 + lsls r2, r0, #1 + adds r4, r1, r2 + movs r1, #0x1f + ands r0, r1 + lsls r0, r0, #1 + ldr r2, [sp, #4] + adds r6, r2, r0 + ands r3, r1 + lsls r2, r3, #5 + mov r3, sb + ldrh r0, [r3, #0x20] + lsls r1, r0, #0x10 + lsrs r0, r1, #0x10 + cmp r0, #0xaf + bhi _0807D59A + lsrs r3, r1, #0x13 + b _0807D59C +_0807D59A: + movs r3, #0x16 +_0807D59C: + cmp r3, #0 + bgt _0807D5A2 + b _0807D6CC +_0807D5A2: + movs r7, #0x80 + lsls r7, r7, #1 + ldr r5, _0807D5C0 @ =0x000003FF +_0807D5A8: + lsls r0, r2, #1 + adds r0, r0, r6 + ldrh r1, [r4] + strh r1, [r0] + adds r4, r4, r7 + adds r2, #0x20 + ands r2, r5 + subs r3, #1 + cmp r3, #0 + bgt _0807D5A8 + b _0807D6CC + .align 2, 0 +_0807D5C0: .4byte 0x000003FF +_0807D5C4: + mov r1, sb + movs r2, #0xc + ldrsh r0, [r1, r2] + ldrh r2, [r1, #8] + subs r5, r0, r2 + cmp r5, #7 + ble _0807D5D4 + subs r5, #8 +_0807D5D4: + mov r3, sb + movs r0, #0xa + ldrsh r1, [r3, r0] + ldrh r0, [r3, #6] + subs r1, r1, r0 + mov r8, r1 + cmp r1, #7 + ble _0807D5EA + movs r1, #8 + rsbs r1, r1, #0 + add r8, r1 +_0807D5EA: + mov r3, sb + ldr r0, [r3, #0x30] + movs r1, #0x32 + ldrsh r0, [r0, r1] + subs r0, r0, r2 + subs r2, r0, #4 + mov ip, r2 + cmp r2, #7 + ble _0807D600 + subs r0, #0xc + mov ip, r0 +_0807D600: + mov r3, sb + ldrh r0, [r3, #0x18] + lsls r0, r0, #3 + mov r1, ip + subs r0, r1, r0 + adds r7, r5, #0 + adds r7, #0xa8 + movs r2, #0xb0 + adds r2, r2, r5 + mov sl, r2 + cmp r0, r5 + blt _0807D66A + asrs r2, r0, #3 + lsls r0, r2, #8 + ldr r3, [sp] + adds r0, r3, r0 + mov r1, r8 + asrs r3, r1, #3 + lsls r1, r3, #1 + adds r4, r0, r1 + movs r0, #0x1f + ands r2, r0 + lsls r2, r2, #6 + ldr r1, [sp, #4] + adds r6, r1, r2 + adds r2, r0, #0 + ands r2, r3 + mov r3, sb + ldrh r0, [r3, #0x1e] + lsls r1, r0, #0x10 + lsrs r0, r1, #0x10 + cmp r0, #0xff + bhi _0807D646 + lsrs r3, r1, #0x13 + b _0807D648 +_0807D646: + movs r3, #0x20 +_0807D648: + adds r7, r5, #0 + adds r7, #0xa8 + adds r5, #0xb0 + mov sl, r5 + cmp r3, #0 + ble _0807D66A + movs r5, #0x1f +_0807D656: + lsls r0, r2, #1 + adds r0, r0, r6 + ldrh r1, [r4] + strh r1, [r0] + adds r4, #2 + adds r2, #1 + ands r2, r5 + subs r3, #1 + cmp r3, #0 + bgt _0807D656 +_0807D66A: + mov r1, sb + ldrh r0, [r1, #0x18] + adds r0, #1 + lsls r0, r0, #3 + add r0, ip + mov r2, sl + ldrh r1, [r1, #0x20] + cmp r7, r1 + blt _0807D67E + adds r2, r7, #0 +_0807D67E: + cmp r0, r2 + bge _0807D6CC + asrs r2, r0, #3 + lsls r0, r2, #8 + ldr r1, [sp] + adds r0, r1, r0 + mov r1, r8 + asrs r3, r1, #3 + lsls r1, r3, #1 + adds r4, r0, r1 + movs r0, #0x1f + ands r2, r0 + lsls r2, r2, #6 + ldr r1, [sp, #4] + adds r6, r1, r2 + adds r2, r0, #0 + ands r2, r3 + mov r3, sb + ldrh r0, [r3, #0x1e] + lsls r1, r0, #0x10 + lsrs r0, r1, #0x10 + cmp r0, #0xff + bhi _0807D6B0 + lsrs r3, r1, #0x13 + b _0807D6B2 +_0807D6B0: + movs r3, #0x20 +_0807D6B2: + cmp r3, #0 + ble _0807D6CC + movs r5, #0x1f +_0807D6B8: + lsls r0, r2, #1 + adds r0, r0, r6 + ldrh r1, [r4] + strh r1, [r0] + adds r4, #2 + adds r2, #1 + ands r2, r5 + subs r3, #1 + cmp r3, #0 + bgt _0807D6B8 +_0807D6CC: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0807D6D8 +sub_0807D6D8: @ 0x0807D6D8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x44 + str r0, [sp] + str r1, [sp, #4] + ldr r5, _0807D8BC @ =gUnk_03000BF0 + ldrh r0, [r5, #0x18] + cmp r0, #0 + bne _0807D6F2 + b _0807DA62 +_0807D6F2: + ldrh r0, [r5, #0x1a] + cmp r0, #0 + bne _0807D6FA + b _0807DA62 +_0807D6FA: + movs r1, #0xa + ldrsh r0, [r5, r1] + ldrh r1, [r5, #6] + subs r0, r0, r1 + movs r4, #0x10 + rsbs r4, r4, #0 + ands r0, r4 + str r0, [sp, #0x24] + ldr r3, [r5, #0x30] + movs r2, #0x2e + ldrsh r0, [r3, r2] + subs r0, r0, r1 + movs r2, #8 + rsbs r2, r2, #0 + ands r0, r2 + str r0, [sp, #0x14] + ldr r1, [sp, #0x24] + subs r0, r0, r1 + str r0, [sp, #0x1c] + movs r1, #0xc + ldrsh r0, [r5, r1] + ldrh r1, [r5, #8] + subs r0, r0, r1 + ands r0, r4 + str r0, [sp, #0x28] + movs r4, #0x32 + ldrsh r0, [r3, r4] + subs r0, r0, r1 + ands r0, r2 + str r0, [sp, #0x18] + ldr r1, [sp, #0x28] + subs r0, r0, r1 + str r0, [sp, #0x20] + ldrh r0, [r5, #0x18] + adds r2, r0, #0 + muls r2, r0, r2 + str r2, [sp, #0xc] + ldrh r3, [r5, #0x1a] + str r3, [sp, #8] + adds r4, r3, #0 + muls r4, r3, r4 + str r4, [sp, #0x10] + adds r4, r0, #0 + movs r0, #0 + mov sb, r0 + lsls r0, r4, #1 + rsbs r0, r0, #0 + adds r0, #1 + ldr r1, [sp, #0x10] + muls r0, r1, r0 + lsls r6, r2, #1 + adds r7, r0, r6 + adds r2, r4, #0 + muls r2, r1, r2 + mov r8, r2 + mov r0, r8 + ldr r1, [sp, #0xc] + bl __divsi3 + mov ip, r0 + cmp sb, ip + ble _0807D778 + b _0807D8D8 +_0807D778: + mov sl, r5 + ldr r3, [sp, #0xc] + adds r0, r6, r3 + lsls r0, r0, #1 + str r0, [sp, #0x3c] + mov r0, r8 + str r0, [sp, #0x40] + ldr r1, [sp, #0x14] + subs r1, r1, r4 + mov r8, r1 + ldr r2, [sp, #0x14] + adds r6, r4, r2 + movs r0, #0x80 + lsls r0, r0, #1 + ldr r3, [sp, #0x24] + adds r0, r3, r0 + str r0, [sp, #0x2c] +_0807D79A: + ldr r0, [sp, #0x28] + adds r0, #0xb0 + ldr r1, [sp, #0x18] + add r1, sb + cmp r0, r1 + ble _0807D812 + ldr r0, [sp, #0x20] + add r0, sb + asrs r0, r0, #3 + movs r5, #0x1f + ands r0, r5 + cmp r0, #0x1f + beq _0807D812 + lsls r0, r0, #6 + ldr r3, [sp, #4] + adds r2, r3, r0 + asrs r0, r1, #3 + lsls r0, r0, #8 + ldr r1, [sp] + adds r3, r1, r0 + ldr r0, [sp, #0x2c] + cmp r0, r6 + ble _0807D7EA + ldr r0, [sp, #0x1c] + adds r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + asrs r0, r6, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r1, sl + ldrh r0, [r1, #0x1c] + movs r1, #1 + orrs r0, r1 + mov r1, sl + strh r0, [r1, #0x1c] +_0807D7EA: + ldr r0, [sp, #0x24] + cmp r0, r8 + bge _0807D812 + ldr r0, [sp, #0x1c] + subs r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + mov r2, r8 + asrs r0, r2, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r3, sl + ldrh r0, [r3, #0x1c] + movs r1, #2 + orrs r0, r1 + strh r0, [r3, #0x1c] +_0807D812: + ldr r0, [sp, #0x18] + mov r2, sb + subs r1, r0, r2 + adds r0, r1, #0 + adds r0, #8 + ldr r3, [sp, #0x28] + cmp r3, r0 + bge _0807D88E + ldr r3, [sp, #0x20] + subs r0, r3, r2 + asrs r0, r0, #3 + movs r5, #0x1f + ands r0, r5 + cmp r0, #0x1f + beq _0807D88E + lsls r0, r0, #6 + ldr r3, [sp, #4] + adds r2, r3, r0 + asrs r0, r1, #3 + lsls r0, r0, #8 + ldr r1, [sp] + adds r3, r1, r0 + ldr r0, [sp, #0x2c] + cmp r0, r6 + ble _0807D866 + ldr r0, [sp, #0x1c] + adds r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + asrs r0, r6, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r1, sl + ldrh r0, [r1, #0x1c] + movs r1, #4 + orrs r0, r1 + mov r1, sl + strh r0, [r1, #0x1c] +_0807D866: + ldr r0, [sp, #0x24] + cmp r0, r8 + bge _0807D88E + ldr r0, [sp, #0x1c] + subs r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + mov r2, r8 + asrs r0, r2, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r3, sl + ldrh r0, [r3, #0x1c] + movs r1, #8 + orrs r0, r1 + strh r0, [r3, #0x1c] +_0807D88E: + cmp r7, #0 + ble _0807D8C0 + lsls r0, r4, #2 + rsbs r0, r0, #0 + adds r0, #4 + ldr r1, [sp, #0x10] + muls r0, r1, r0 + ldr r2, [sp, #0x3c] + adds r0, r0, r2 + adds r7, r7, r0 + ldr r3, [sp, #0x40] + subs r3, r3, r1 + str r3, [sp, #0x40] + movs r0, #1 + add r8, r0 + subs r6, #1 + subs r4, #1 + adds r0, r3, #0 + ldr r1, [sp, #0xc] + bl __divsi3 + mov ip, r0 + b _0807D8C4 + .align 2, 0 +_0807D8BC: .4byte gUnk_03000BF0 +_0807D8C0: + ldr r1, [sp, #0x3c] + adds r7, r7, r1 +_0807D8C4: + ldr r2, [sp, #0xc] + lsls r0, r2, #2 + ldr r3, [sp, #0x3c] + adds r3, r3, r0 + str r3, [sp, #0x3c] + movs r0, #1 + add sb, r0 + cmp sb, ip + bgt _0807D8D8 + b _0807D79A +_0807D8D8: + movs r4, #0 + ldr r1, [sp, #8] + mov sb, r1 + ldr r2, [sp, #0x10] + lsls r6, r2, #1 + lsls r0, r1, #1 + rsbs r0, r0, #0 + adds r0, #1 + ldr r3, [sp, #0xc] + muls r0, r3, r0 + adds r7, r6, r0 + mov r5, sb + muls r5, r3, r5 + adds r0, r5, #0 + adds r1, r2, #0 + bl __divsi3 + mov ip, r0 + cmp r4, ip + ble _0807D902 + b _0807DA62 +_0807D902: + ldr r0, _0807DA40 @ =gUnk_03000BF0 + mov sl, r0 + ldr r1, [sp, #0x10] + adds r0, r6, r1 + lsls r0, r0, #1 + str r0, [sp, #0x34] + ldr r6, [sp, #0x14] + mov r8, r6 + str r5, [sp, #0x38] + movs r3, #0x80 + lsls r3, r3, #1 + ldr r2, [sp, #0x24] + adds r3, r2, r3 + str r3, [sp, #0x30] +_0807D91E: + ldr r0, [sp, #0x28] + adds r0, #0xb0 + ldr r1, [sp, #0x18] + add r1, sb + cmp r0, r1 + ble _0807D996 + ldr r0, [sp, #0x20] + add r0, sb + asrs r0, r0, #3 + movs r5, #0x1f + ands r0, r5 + cmp r0, #0x1f + beq _0807D996 + lsls r0, r0, #6 + ldr r3, [sp, #4] + adds r2, r3, r0 + asrs r0, r1, #3 + lsls r0, r0, #8 + ldr r1, [sp] + adds r3, r1, r0 + ldr r0, [sp, #0x30] + cmp r0, r6 + ble _0807D96E + ldr r0, [sp, #0x1c] + adds r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + asrs r0, r6, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r1, sl + ldrh r0, [r1, #0x1c] + movs r1, #0x10 + orrs r0, r1 + mov r1, sl + strh r0, [r1, #0x1c] +_0807D96E: + ldr r0, [sp, #0x24] + cmp r0, r8 + bge _0807D996 + ldr r0, [sp, #0x1c] + subs r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + mov r2, r8 + asrs r0, r2, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r3, sl + ldrh r0, [r3, #0x1c] + movs r1, #0x20 + orrs r0, r1 + strh r0, [r3, #0x1c] +_0807D996: + ldr r0, [sp, #0x18] + mov r2, sb + subs r1, r0, r2 + adds r0, r1, #0 + adds r0, #8 + ldr r3, [sp, #0x28] + cmp r3, r0 + bge _0807DA12 + ldr r3, [sp, #0x20] + subs r0, r3, r2 + asrs r0, r0, #3 + movs r5, #0x1f + ands r0, r5 + cmp r0, #0x1f + beq _0807DA12 + lsls r0, r0, #6 + ldr r3, [sp, #4] + adds r2, r3, r0 + asrs r0, r1, #3 + lsls r0, r0, #8 + ldr r1, [sp] + adds r3, r1, r0 + ldr r0, [sp, #0x30] + cmp r0, r6 + ble _0807D9EA + ldr r0, [sp, #0x1c] + adds r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + asrs r0, r6, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r1, sl + ldrh r0, [r1, #0x1c] + movs r1, #0x40 + orrs r0, r1 + mov r1, sl + strh r0, [r1, #0x1c] +_0807D9EA: + ldr r0, [sp, #0x24] + cmp r0, r8 + bge _0807DA12 + ldr r0, [sp, #0x1c] + subs r1, r0, r4 + asrs r1, r1, #3 + ands r1, r5 + lsls r1, r1, #1 + adds r1, r1, r2 + mov r2, r8 + asrs r0, r2, #3 + lsls r0, r0, #1 + adds r0, r0, r3 + ldrh r0, [r0] + strh r0, [r1] + mov r3, sl + ldrh r0, [r3, #0x1c] + movs r1, #0x80 + orrs r0, r1 + strh r0, [r3, #0x1c] +_0807DA12: + cmp r7, #0 + ble _0807DA44 + mov r1, sb + lsls r0, r1, #2 + rsbs r0, r0, #0 + adds r0, #4 + ldr r2, [sp, #0xc] + muls r0, r2, r0 + ldr r3, [sp, #0x34] + adds r0, r3, r0 + adds r7, r7, r0 + ldr r0, [sp, #0x38] + subs r0, r0, r2 + str r0, [sp, #0x38] + movs r1, #1 + rsbs r1, r1, #0 + add sb, r1 + ldr r1, [sp, #0x10] + bl __divsi3 + mov ip, r0 + b _0807DA48 + .align 2, 0 +_0807DA40: .4byte gUnk_03000BF0 +_0807DA44: + ldr r2, [sp, #0x34] + adds r7, r7, r2 +_0807DA48: + ldr r3, [sp, #0x10] + lsls r0, r3, #2 + ldr r1, [sp, #0x34] + adds r1, r1, r0 + str r1, [sp, #0x34] + movs r2, #1 + rsbs r2, r2, #0 + add r8, r2 + adds r6, #1 + adds r4, #1 + cmp r4, ip + bgt _0807DA62 + b _0807D91E +_0807DA62: + add sp, #0x44 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807DA70 +sub_0807DA70: @ 0x0807DA70 + push {r4, lr} + ldr r4, _0807DA94 @ =gUnk_02033280 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0801D630 + ldr r0, _0807DA98 @ =gUnk_02036570 + movs r1, #0x90 + lsls r1, r1, #3 + bl sub_0801D630 + ldr r0, _0807DA9C @ =gUnk_02022750 + movs r1, #0x24 + bl sub_0801D630 + movs r0, #8 + strb r0, [r4, #8] + pop {r4, pc} + .align 2, 0 +_0807DA94: .4byte gUnk_02033280 +_0807DA98: .4byte gUnk_02036570 +_0807DA9C: .4byte gUnk_02022750 + + thumb_func_start sub_0807DAA0 +sub_0807DAA0: @ 0x0807DAA0 + push {lr} + ldr r1, _0807DABC @ =gUnk_02036570 + movs r0, #0x90 + lsls r0, r0, #3 + adds r2, r1, r0 +_0807DAAA: + ldr r0, [r1] + cmp r0, #0 + beq _0807DAC0 + adds r1, #0x24 + cmp r1, r2 + blo _0807DAAA + movs r0, #0 + b _0807DAC2 + .align 2, 0 +_0807DABC: .4byte gUnk_02036570 +_0807DAC0: + adds r0, r1, #0 +_0807DAC2: + pop {pc} + + thumb_func_start sub_0807DAC4 +sub_0807DAC4: @ 0x0807DAC4 + push {lr} + movs r1, #0x24 + bl sub_0801D630 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807DAD0 +sub_0807DAD0: @ 0x0807DAD0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + bl sub_0807DAA0 + adds r4, r0, #0 + cmp r4, #0 + beq _0807DAEA + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0807DAF0 +_0807DAEA: + adds r0, r4, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0807DAF0 +sub_0807DAF0: @ 0x0807DAF0 + push {r4, lr} + ldrb r4, [r0, #0x10] + movs r3, #2 + orrs r3, r4 + strb r3, [r0, #0x10] + adds r0, #0x84 + str r1, [r0] + adds r0, r1, #0 + adds r1, r2, #0 + bl sub_0807DB88 + pop {r4, pc} + + thumb_func_start sub_0807DB08 +sub_0807DB08: @ 0x0807DB08 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0807DB28 + movs r0, #0xfd + ands r0, r1 + movs r5, #0 + strb r0, [r4, #0x10] + adds r4, #0x84 + ldr r0, [r4] + bl sub_0807DAC4 + str r5, [r4] +_0807DB28: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0807DB2C +sub_0807DB2C: @ 0x0807DB2C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0807DB5C @ =gUnk_02022750 + adds r0, r4, #0 + movs r1, #0x24 + bl sub_0801D630 + str r5, [r4] + ldr r0, _0807DB60 @ =gLinkEntity + adds r0, #0x84 + str r4, [r0] + ldr r2, _0807DB64 @ =gUnk_03003F80 + movs r1, #0 + movs r0, #0x1c + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x3a + strb r1, [r0] + subs r0, #1 + strb r1, [r0] + subs r0, #1 + strb r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_0807DB5C: .4byte gUnk_02022750 +_0807DB60: .4byte gLinkEntity +_0807DB64: .4byte gUnk_03003F80 + + thumb_func_start sub_0807DB68 +sub_0807DB68: @ 0x0807DB68 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_0807DAA0 + adds r2, r0, #0 + cmp r2, #0 + beq _0807DB84 + ldrb r1, [r4, #0x10] + movs r0, #2 + orrs r0, r1 + strb r0, [r4, #0x10] + str r2, [r4, #0x3c] + str r5, [r2] +_0807DB84: + adds r0, r2, #0 + pop {r4, r5, pc} + + thumb_func_start sub_0807DB88 +sub_0807DB88: @ 0x0807DB88 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0x24 + bl sub_0801D630 + str r5, [r4] + pop {r4, r5, pc} + + thumb_func_start sub_0807DB98 +sub_0807DB98: @ 0x0807DB98 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, [r6, #8] + cmp r0, #0 + bne _0807DBA6 + b _0807DD48 +_0807DBA6: + movs r7, #0 + adds r4, r5, #0 + adds r4, #0x82 +_0807DBAC: + ldr r1, [r6, #8] + mvns r0, r1 + adds r2, r0, #1 + ands r2, r1 + eors r1, r2 + str r1, [r6, #8] + movs r0, #0x80 + lsls r0, r0, #2 + cmp r2, r0 + bne _0807DBC2 + b _0807DCC8 +_0807DBC2: + cmp r2, r0 + bhi _0807DC04 + cmp r2, #0x10 + beq _0807DC82 + cmp r2, #0x10 + bhi _0807DBE8 + cmp r2, #2 + beq _0807DC70 + cmp r2, #2 + bhi _0807DBDC + cmp r2, #1 + beq _0807DC68 + b _0807DD40 +_0807DBDC: + cmp r2, #4 + bne _0807DBE2 + b _0807DD40 +_0807DBE2: + cmp r2, #8 + beq _0807DC7A + b _0807DD40 +_0807DBE8: + cmp r2, #0x40 + beq _0807DC9E + cmp r2, #0x40 + bhi _0807DBF6 + cmp r2, #0x20 + beq _0807DC90 + b _0807DD40 +_0807DBF6: + cmp r2, #0x80 + beq _0807DCA8 + movs r0, #0x80 + lsls r0, r0, #1 + cmp r2, r0 + beq _0807DCBA + b _0807DD40 +_0807DC04: + movs r0, #0x80 + lsls r0, r0, #7 + cmp r2, r0 + beq _0807DCFC + cmp r2, r0 + bhi _0807DC38 + movs r0, #0x80 + lsls r0, r0, #4 + cmp r2, r0 + beq _0807DCDE + cmp r2, r0 + bhi _0807DC26 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r2, r0 + beq _0807DCD6 + b _0807DD40 +_0807DC26: + movs r0, #0x80 + lsls r0, r0, #5 + cmp r2, r0 + beq _0807DCE8 + movs r0, #0x80 + lsls r0, r0, #6 + cmp r2, r0 + beq _0807DCF4 + b _0807DD40 +_0807DC38: + movs r0, #0x80 + lsls r0, r0, #0xa + cmp r2, r0 + beq _0807DD14 + cmp r2, r0 + bhi _0807DC56 + movs r0, #0x80 + lsls r0, r0, #8 + cmp r2, r0 + beq _0807DD04 + movs r0, #0x80 + lsls r0, r0, #9 + cmp r2, r0 + beq _0807DD0C + b _0807DD40 +_0807DC56: + movs r0, #0x80 + lsls r0, r0, #0xb + cmp r2, r0 + beq _0807DD2E + movs r0, #0x80 + lsls r0, r0, #0xc + cmp r2, r0 + beq _0807DD36 + b _0807DD40 +_0807DC68: + adds r0, r5, #0 + adds r0, #0x80 + strh r7, [r0] + b _0807DD40 +_0807DC70: + adds r1, r5, #0 + adds r1, #0x80 + movs r0, #4 + strh r0, [r1] + b _0807DD40 +_0807DC7A: + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r5, #0x20] + b _0807DD40 +_0807DC82: + adds r0, r5, #0 + movs r1, #8 + movs r2, #0x18 + rsbs r2, r2, #0 + bl sub_080A2CFC + b _0807DD40 +_0807DC90: + adds r0, r5, #0 + movs r1, #8 + movs r2, #0x18 + rsbs r2, r2, #0 + bl sub_080A2D0C + b _0807DD40 +_0807DC9E: + adds r0, r6, #0 + bl sub_0807DAC4 + bl sub_0805E780 +_0807DCA8: + ldrb r0, [r5, #0x18] + movs r2, #4 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + b _0807DD40 +_0807DCBA: + ldrb r0, [r5, #0x18] + movs r3, #4 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r5, #0x18] + b _0807DD40 +_0807DCC8: + adds r0, r5, #0 + adds r0, #0x63 + strb r7, [r0] + subs r0, #1 + strb r7, [r0] + strh r7, [r4] + b _0807DD40 +_0807DCD6: + ldrh r0, [r4] + movs r1, #2 + orrs r0, r1 + b _0807DD3E +_0807DCDE: + ldrh r0, [r4] + ldr r2, _0807DCE4 @ =0x0000FFFD + b _0807DD3A + .align 2, 0 +_0807DCE4: .4byte 0x0000FFFD +_0807DCE8: + ldrh r0, [r4] + ldr r3, _0807DCF0 @ =0x0000FFFE + adds r1, r3, #0 + b _0807DD3C + .align 2, 0 +_0807DCF0: .4byte 0x0000FFFE +_0807DCF4: + ldrh r0, [r4] + movs r1, #1 + orrs r0, r1 + b _0807DD3E +_0807DCFC: + ldrh r0, [r4] + movs r1, #8 + orrs r0, r1 + b _0807DD3E +_0807DD04: + ldrh r0, [r4] + movs r1, #4 + eors r0, r1 + b _0807DD3E +_0807DD0C: + ldrh r0, [r4] + movs r1, #0x10 + eors r0, r1 + b _0807DD3E +_0807DD14: + ldrb r2, [r5, #0x18] + lsls r0, r2, #0x19 + lsrs r0, r0, #0x1f + movs r1, #1 + eors r0, r1 + lsls r0, r0, #6 + movs r3, #0x41 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r5, #0x18] + b _0807DD40 +_0807DD2E: + ldrh r0, [r4] + movs r1, #0x20 + orrs r0, r1 + b _0807DD3E +_0807DD36: + ldrh r0, [r4] + ldr r2, _0807DD4C @ =0x0000FFDF +_0807DD3A: + adds r1, r2, #0 +_0807DD3C: + ands r0, r1 +_0807DD3E: + strh r0, [r4] +_0807DD40: + ldr r0, [r6, #8] + cmp r0, #0 + beq _0807DD48 + b _0807DBAC +_0807DD48: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807DD4C: .4byte 0x0000FFDF + + thumb_func_start sub_0807DD50 +sub_0807DD50: @ 0x0807DD50 + push {r4, lr} + adds r4, r0, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807DD64 +sub_0807DD64: @ 0x0807DD64 + adds r3, r0, #0 + ldrb r0, [r3, #0x14] + movs r2, #0 + strb r0, [r3, #0xf] + adds r1, r3, #0 + adds r1, #0x58 + movs r0, #0xff + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x80 + strh r2, [r0] + adds r0, #2 + strh r2, [r0] + bx lr + + thumb_func_start sub_0807DD80 +sub_0807DD80: @ 0x0807DD80 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x84 + ldr r0, [r0] + bl sub_0807DB88 + adds r0, r4, #0 + bl sub_0807DD64 + pop {r4, pc} + + thumb_func_start sub_0807DD94 +sub_0807DD94: @ 0x0807DD94 + push {r4, lr} + adds r4, r0, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_0807DE80 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807DDAC +sub_0807DDAC: @ 0x0807DDAC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r4, r5, #0 + adds r4, #0x84 + ldr r1, [r4] + cmp r1, #0 + beq _0807DDE0 + bl sub_0807DF74 + cmp r6, #0 + beq _0807DDCE + ldr r1, [r4] + adds r0, r5, #0 + bl _call_via_r6 + b _0807DDD6 +_0807DDCE: + ldr r1, [r4] + adds r0, r5, #0 + bl sub_0807DB98 +_0807DDD6: + ldr r0, [r5, #4] + cmp r0, #0 + bne _0807DDE0 + bl sub_0805E780 +_0807DDE0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0807DDE4 +sub_0807DDE4: @ 0x0807DDE4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x82 + ldrh r5, [r0] +_0807DDEC: + cmp r5, #0 + beq _0807DE7C + mvns r0, r5 + adds r0, #1 + ands r0, r5 + eors r5, r0 + cmp r0, #8 + beq _0807DE26 + cmp r0, #8 + bhi _0807DE06 + cmp r0, #2 + beq _0807DE10 + b _0807DDEC +_0807DE06: + cmp r0, #0x10 + beq _0807DE44 + cmp r0, #0x20 + beq _0807DE70 + b _0807DDEC +_0807DE10: + ldrb r0, [r4, #8] + cmp r0, #7 + bne _0807DE1E + adds r0, r4, #0 + bl sub_0806ED78 + b _0807DDEC +_0807DE1E: + adds r0, r4, #0 + bl sub_0800445C + b _0807DDEC +_0807DE26: + ldr r0, _0807DE40 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0807DDEC + ldrb r0, [r4, #0xf] + adds r0, #2 + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0x14] + strb r0, [r4, #0xf] + b _0807DDEC + .align 2, 0 +_0807DE40: .4byte gUnk_030010A0 +_0807DE44: + ldr r0, _0807DE68 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0807DDEC + bl sub_08000E50 + ldr r2, _0807DE6C @ =gUnk_0811E510 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + b _0807DDEC + .align 2, 0 +_0807DE68: .4byte gUnk_030010A0 +_0807DE6C: .4byte gUnk_0811E510 +_0807DE70: + adds r0, r4, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + b _0807DDEC +_0807DE7C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0807DE80 +sub_0807DE80: @ 0x0807DE80 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r3, [r0] + cmp r3, #7 + bhi _0807DEB0 + adds r0, #2 + ldrh r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0807DEA4 + movs r1, #0xfc + ands r1, r3 + ldrb r0, [r4, #0xf] + lsrs r0, r0, #1 + adds r3, r1, r0 + b _0807DEB0 +_0807DEA4: + movs r0, #0xfc + ands r0, r3 + ldrb r2, [r4, #0x14] + lsrs r1, r2, #1 + adds r3, r0, r1 + strb r2, [r4, #0xf] +_0807DEB0: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r3, r0 + beq _0807DEC2 + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_080042AC +_0807DEC2: + adds r0, r4, #0 + adds r0, #0x82 + ldrh r1, [r0] + movs r0, #4 + ands r0, r1 + movs r1, #1 + cmp r0, #0 + beq _0807DED4 + movs r1, #2 +_0807DED4: + adds r0, r4, #0 + bl sub_080042BA + pop {r4, pc} + + thumb_func_start sub_0807DEDC +sub_0807DEDC: @ 0x0807DEDC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #0 + movs r0, #8 + strb r0, [r1, #0x19] + ldr r0, [r1, #8] + movs r4, #2 + orrs r0, r4 + str r0, [r1, #8] + str r6, [r1, #0x14] + strh r2, [r1, #0x1e] + strh r3, [r1, #0x22] + movs r2, #0x1e + ldrsh r0, [r1, r2] + movs r3, #0x2e + ldrsh r2, [r5, r3] + subs r0, r0, r2 + movs r2, #0x22 + ldrsh r1, [r1, r2] + movs r3, #0x32 + ldrsh r2, [r5, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r5, #0x15] + ldrb r2, [r5, #0x14] + movs r1, #0x80 + ands r1, r2 + ldr r2, _0807DF24 @ =gUnk_0811E514 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1c + adds r0, r0, r2 + ldrb r0, [r0] + orrs r1, r0 + strb r1, [r5, #0x14] + pop {r4, r5, r6, pc} + .align 2, 0 +_0807DF24: .4byte gUnk_0811E514 + + thumb_func_start sub_0807DF28 +sub_0807DF28: @ 0x0807DF28 + push {lr} + bl sub_0807DF38 + bl sub_08079184 + bl sub_08077B20 + pop {pc} + + thumb_func_start sub_0807DF38 +sub_0807DF38: @ 0x0807DF38 + ldr r1, _0807DF48 @ =gUnk_0200AF00 + movs r0, #0xff + strb r0, [r1, #1] + ldr r1, _0807DF4C @ =gUnk_02034490 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + bx lr + .align 2, 0 +_0807DF48: .4byte gUnk_0200AF00 +_0807DF4C: .4byte gUnk_02034490 + + thumb_func_start sub_0807DF50 +sub_0807DF50: @ 0x0807DF50 + push {lr} + ldr r0, _0807DF6C @ =gUnk_02034490 + movs r1, #0 + strb r1, [r0] + ldr r0, _0807DF70 @ =gUnk_0200AF00 + strb r1, [r0, #1] + movs r0, #0 + bl sub_0801C4A0 + bl sub_080791D0 + bl sub_08079184 + pop {pc} + .align 2, 0 +_0807DF6C: .4byte gUnk_02034490 +_0807DF70: .4byte gUnk_0200AF00 + + thumb_func_start sub_0807DF74 +sub_0807DF74: @ 0x0807DF74 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r5, r1, #0 + ldr r0, [r5] + cmp r0, #0 + beq _0807DFE8 + ldrh r0, [r5, #0x10] + adds r1, r0, #0 + cmp r1, #0 + beq _0807DF92 + subs r0, #1 + strh r0, [r5, #0x10] + b _0807DFE8 +_0807DF92: + ldr r6, _0807DFF0 @ =gUnk_02033280 + strb r1, [r6, #7] +_0807DF96: + ldr r0, [r5] + bl sub_08016986 + adds r1, r0, #0 + ldr r0, _0807DFF4 @ =0x0000FFFF + cmp r1, r0 + beq _0807DFE8 + lsrs r0, r1, #0xa + strb r0, [r6, #6] + ldr r2, _0807DFF8 @ =0x000003FF + adds r0, r2, #0 + ands r1, r0 + movs r7, #0 + strh r1, [r6, #4] + ldr r4, [r5] + ldrb r1, [r6, #7] + movs r0, #0xfe + ands r0, r1 + strb r0, [r6, #7] + ldr r1, _0807DFFC @ =gUnk_0811E524 + ldrh r0, [r6, #4] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r2, [r0] + mov r0, r8 + adds r1, r5, #0 + bl _call_via_r2 + ldrb r1, [r6, #6] + lsls r1, r1, #1 + ldr r0, [r5] + adds r0, r0, r1 + str r0, [r5] + cmp r4, r0 + beq _0807DFDE + strb r7, [r5, #0x18] +_0807DFDE: + ldrb r1, [r6, #7] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _0807DF96 +_0807DFE8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807DFF0: .4byte gUnk_02033280 +_0807DFF4: .4byte 0x0000FFFF +_0807DFF8: .4byte 0x000003FF +_0807DFFC: .4byte gUnk_0811E524 + + thumb_func_start nullsub_507 +nullsub_507: @ 0x0807E000 + bx lr + .align 2, 0 + + thumb_func_start sub_0807E004 +sub_0807E004: @ 0x0807E004 + ldr r2, _0807E010 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #2 + orrs r0, r1 + strb r0, [r2, #7] + bx lr + .align 2, 0 +_0807E010: .4byte gUnk_02033280 + + thumb_func_start sub_0807E014 +sub_0807E014: @ 0x0807E014 + ldr r2, _0807E020 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #0xfd + ands r0, r1 + strb r0, [r2, #7] + bx lr + .align 2, 0 +_0807E020: .4byte gUnk_02033280 + + thumb_func_start sub_0807E024 +sub_0807E024: @ 0x0807E024 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + adds r0, #2 + str r0, [r4] + bl sub_08016986 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + lsrs r0, r0, #0x1f + adds r1, r1, r0 + asrs r1, r1, #1 + lsls r1, r1, #1 + ldr r0, [r4] + adds r0, r0, r1 + str r0, [r4] + ldr r1, _0807E04C @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + pop {r4, pc} + .align 2, 0 +_0807E04C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E050 +sub_0807E050: @ 0x0807E050 + push {lr} + adds r2, r0, #0 + ldr r0, [r1, #0x14] + cmp r0, #0 + beq _0807E060 + adds r0, r2, #0 + bl sub_0807E024 +_0807E060: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E064 +sub_0807E064: @ 0x0807E064 + push {lr} + adds r2, r0, #0 + ldr r0, [r1, #0x14] + cmp r0, #0 + bne _0807E074 + adds r0, r2, #0 + bl sub_0807E024 +_0807E074: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E078 +sub_0807E078: @ 0x0807E078 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, _0807E09C @ =gUnk_02033280 + ldrb r0, [r0, #6] + ldr r1, [r2, #4] + cmp r0, r1 + bls _0807E098 + lsls r1, r1, #1 + ldr r0, [r2] + adds r0, r0, r1 + str r0, [r2] + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807E024 +_0807E098: + pop {pc} + .align 2, 0 +_0807E09C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E0A0 +sub_0807E0A0: @ 0x0807E0A0 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + bl sub_08016998 + str r0, [r4] + ldr r1, _0807E0B4 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + pop {r4, pc} + .align 2, 0 +_0807E0B4: .4byte gUnk_02033280 + + thumb_func_start sub_0807E0B8 +sub_0807E0B8: @ 0x0807E0B8 + push {lr} + adds r2, r0, #0 + ldr r0, [r1, #0x14] + cmp r0, #0 + beq _0807E0C8 + adds r0, r2, #0 + bl sub_0807E0A0 +_0807E0C8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E0CC +sub_0807E0CC: @ 0x0807E0CC + push {lr} + adds r2, r0, #0 + ldr r0, [r1, #0x14] + cmp r0, #0 + bne _0807E0DC + adds r0, r2, #0 + bl sub_0807E0A0 +_0807E0DC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E0E0 +sub_0807E0E0: @ 0x0807E0E0 + push {r4, lr} + adds r4, r0, #0 + adds r2, r1, #0 + ldr r0, _0807E108 @ =gUnk_02033280 + ldrb r1, [r0, #6] + ldr r3, [r2, #4] + lsls r0, r3, #1 + adds r0, #1 + cmp r1, r0 + bls _0807E104 + lsls r1, r3, #2 + ldr r0, [r2] + adds r0, r0, r1 + str r0, [r2] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0807E0A0 +_0807E104: + pop {r4, pc} + .align 2, 0 +_0807E108: .4byte gUnk_02033280 + + thumb_func_start sub_0807E10C +sub_0807E10C: @ 0x0807E10C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldr r0, [r4] + bl sub_08016998 + adds r2, r0, #0 + adds r0, r5, #0 + adds r1, r4, #0 + bl _call_via_r2 + pop {r4, r5, pc} + + thumb_func_start sub_0807E124 +sub_0807E124: @ 0x0807E124 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r4, r1, #0 + ldr r0, [r4] + bl sub_08016998 + adds r5, r0, #0 + ldr r0, [r4] + adds r0, #6 + bl sub_0801698E + str r0, [r4, #4] + adds r0, r6, #0 + adds r1, r4, #0 + bl _call_via_r5 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0807E148 +sub_0807E148: @ 0x0807E148 + push {lr} + ldr r0, [r1] + bl sub_08016998 + bl sub_0804ADDC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E158 +sub_0807E158: @ 0x0807E158 + push {r4, r5, lr} + adds r4, r1, #0 + ldr r0, [r4] + bl sub_08016998 + adds r2, r0, #0 + movs r5, #0 + ldr r3, _0807E184 @ =gUnk_02033280 + ldr r1, [r3] + adds r0, r1, #0 + ands r0, r2 + cmp r0, r2 + bne _0807E174 + movs r5, #1 +_0807E174: + str r5, [r4, #0x14] + bics r1, r2 + str r1, [r3] + ldrb r1, [r3, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r3, #7] + pop {r4, r5, pc} + .align 2, 0 +_0807E184: .4byte gUnk_02033280 + + thumb_func_start sub_0807E188 +sub_0807E188: @ 0x0807E188 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + bl sub_0801698A + cmp r0, #0x51 + beq _0807E1B4 + cmp r0, #0x51 + bhi _0807E1A0 + cmp r0, #0x50 + beq _0807E1BA + b _0807E1C0 +_0807E1A0: + cmp r0, #0x52 + beq _0807E1AE + cmp r0, #0x53 + bne _0807E1C0 + bl sub_08052734 + b _0807E1C4 +_0807E1AE: + bl sub_08052764 + b _0807E1C4 +_0807E1B4: + bl sub_0805279C + b _0807E1C4 +_0807E1BA: + bl sub_080527CC + b _0807E1C4 +_0807E1C0: + bl sub_0807CA84 +_0807E1C4: + str r0, [r4, #0x14] + ldr r2, _0807E1D4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E1D4: .4byte gUnk_02033280 + + thumb_func_start sub_0807E1D8 +sub_0807E1D8: @ 0x0807E1D8 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + ldrh r0, [r0, #2] + bl sub_0807CA84 + movs r1, #0 + cmp r0, #2 + bne _0807E1EC + movs r1, #1 +_0807E1EC: + str r1, [r4, #0x14] + ldr r2, _0807E1FC @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E1FC: .4byte gUnk_02033280 + + thumb_func_start sub_0807E200 +sub_0807E200: @ 0x0807E200 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + ldrh r0, [r0, #2] + bl sub_0807CBD0 + str r0, [r4, #0x14] + ldr r2, _0807E21C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E21C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E220 +sub_0807E220: @ 0x0807E220 + push {r4, lr} + adds r4, r1, #0 + ldr r1, [r4] + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl GetProgressFlagWithOffset + str r0, [r4, #0x14] + ldr r2, _0807E23C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E23C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E240 +sub_0807E240: @ 0x0807E240 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + bl sub_0801698A + bl GetProgressFlag + str r0, [r4, #0x14] + ldr r2, _0807E25C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E25C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E260 +sub_0807E260: @ 0x0807E260 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + ldrh r0, [r0, #2] + bl sub_0807CC3C + str r0, [r4, #0x14] + ldr r2, _0807E27C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E27C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E280 +sub_0807E280: @ 0x0807E280 + push {r4, lr} + adds r4, r1, #0 + ldr r1, [r4] + ldrh r2, [r1, #6] + lsrs r3, r2, #8 + movs r0, #0xff + ands r2, r0 + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl sub_0800293E + str r0, [r4, #0x14] + ldr r2, _0807E2A4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E2A4: .4byte gUnk_02033280 + + thumb_func_start sub_0807E2A8 +sub_0807E2A8: @ 0x0807E2A8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, [r6] + ldrh r3, [r0, #2] + ldrb r2, [r0, #2] + lsrs r3, r3, #8 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r4, _0807E2DC @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + movs r7, #0x32 + ldrsh r1, [r5, r7] + ldrh r4, [r4, #8] + subs r1, r1, r4 + bl sub_0800293E + str r0, [r6, #0x14] + ldr r2, _0807E2E0 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807E2DC: .4byte gUnk_03000BF0 +_0807E2E0: .4byte gUnk_02033280 + + thumb_func_start sub_0807E2E4 +sub_0807E2E4: @ 0x0807E2E4 + push {lr} + adds r2, r0, #0 + adds r2, #0x39 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r0, #0 + beq _0807E2F8 + movs r0, #0 + strb r0, [r2] + movs r0, #1 +_0807E2F8: + str r0, [r1, #0x14] + ldr r2, _0807E308 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E308: .4byte gUnk_02033280 + + thumb_func_start sub_0807E30C +sub_0807E30C: @ 0x0807E30C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r1, [r4, #0x1a] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _0807E348 + ldr r0, _0807E374 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0807E348 + ldr r6, _0807E378 @ =gLinkEntity + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0x28 + movs r3, #0x28 + bl sub_080041A0 + cmp r0, #0 + beq _0807E348 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080045C4 + bl sub_0806F5B0 + strb r0, [r5, #0x14] +_0807E348: + ldrb r0, [r4, #0x1a] + adds r0, #1 + strb r0, [r4, #0x1a] + adds r1, r5, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0807E37C + movs r0, #0 + strb r0, [r1] + movs r0, #1 + str r0, [r4, #0x14] + ldr r1, _0807E378 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + bl sub_0806F5B0 + strb r0, [r5, #0x14] + b _0807E37E + .align 2, 0 +_0807E374: .4byte gUnk_03003F80 +_0807E378: .4byte gLinkEntity +_0807E37C: + str r0, [r4, #0x14] +_0807E37E: + ldr r2, _0807E38C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, pc} + .align 2, 0 +_0807E38C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E390 +sub_0807E390: @ 0x0807E390 + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldr r0, [r2] + ldr r1, _0807E3B4 @ =gUnk_02002A40 + adds r1, #0xc0 + ldrh r0, [r0, #2] + ldrh r1, [r1] + cmp r0, r1 + bhi _0807E3A6 + movs r3, #1 +_0807E3A6: + str r3, [r2, #0x14] + ldr r2, _0807E3B8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E3B4: .4byte gUnk_02002A40 +_0807E3B8: .4byte gUnk_02033280 + + thumb_func_start sub_0807E3BC +sub_0807E3BC: @ 0x0807E3BC + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldr r0, [r2] + ldr r1, _0807E3E0 @ =gUnk_02002A40 + adds r1, #0xc2 + ldrh r0, [r0, #2] + ldrh r1, [r1] + cmp r0, r1 + bhi _0807E3D2 + movs r3, #1 +_0807E3D2: + str r3, [r2, #0x14] + ldr r2, _0807E3E4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E3E0: .4byte gUnk_02002A40 +_0807E3E4: .4byte gUnk_02033280 + + thumb_func_start sub_0807E3E8 +sub_0807E3E8: @ 0x0807E3E8 + push {lr} + movs r2, #0 + ldr r0, _0807E404 @ =gUnk_02000040 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _0807E3F6 + movs r2, #1 +_0807E3F6: + str r2, [r1, #0x14] + ldr r2, _0807E408 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E404: .4byte gUnk_02000040 +_0807E408: .4byte gUnk_02033280 + + thumb_func_start sub_0807E40C +sub_0807E40C: @ 0x0807E40C + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + ldrh r0, [r0, #2] + bl sub_0801E7F4 + str r0, [r4, #0x14] + ldr r2, _0807E428 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E428: .4byte gUnk_02033280 + + thumb_func_start sub_0807E42C +sub_0807E42C: @ 0x0807E42C + push {r4, r5, r6, lr} + adds r5, r1, #0 + ldr r0, [r5] + ldrh r4, [r0, #2] + ldrh r6, [r0, #4] + cmp r4, #0 + bne _0807E440 + ldr r0, _0807E480 @ =gUnk_02034350 + ldrb r4, [r0, #6] + ldrb r6, [r0, #7] +_0807E440: + adds r0, r4, #0 + bl sub_08053FE0 + adds r2, r0, #0 + movs r1, #0 + ldr r0, _0807E484 @ =gUnk_02002A40 + adds r0, #0xc0 + ldrh r0, [r0] + cmp r2, r0 + bgt _0807E456 + movs r1, #1 +_0807E456: + str r1, [r5, #0x14] + cmp r1, #0 + beq _0807E474 + rsbs r0, r2, #0 + bl sub_080526CC + adds r0, r4, #0 + adds r1, r6, #0 + movs r2, #0 + bl sub_080A7C18 + ldr r1, _0807E480 @ =gUnk_02034350 + movs r0, #0 + strb r0, [r1, #6] + strb r0, [r1, #7] +_0807E474: + ldr r2, _0807E488 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, r6, pc} + .align 2, 0 +_0807E480: .4byte gUnk_02034350 +_0807E484: .4byte gUnk_02002A40 +_0807E488: .4byte gUnk_02033280 + + thumb_func_start sub_0807E48C +sub_0807E48C: @ 0x0807E48C + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + ldrh r0, [r0, #2] + bl sub_080544DC + str r0, [r4, #0x14] + ldr r2, _0807E4A8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E4A8: .4byte gUnk_02033280 + + thumb_func_start sub_0807E4AC +sub_0807E4AC: @ 0x0807E4AC + ldr r0, _0807E4C4 @ =gUnk_02034350 + ldrb r2, [r0, #6] + rsbs r0, r2, #0 + orrs r0, r2 + lsrs r0, r0, #0x1f + str r0, [r1, #0x14] + ldr r2, _0807E4C8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + bx lr + .align 2, 0 +_0807E4C4: .4byte gUnk_02034350 +_0807E4C8: .4byte gUnk_02033280 + + thumb_func_start sub_0807E4CC +sub_0807E4CC: @ 0x0807E4CC + ldr r0, [r1] + ldrh r0, [r0, #2] + ldr r2, [r1, #4] + ands r2, r0 + rsbs r0, r2, #0 + orrs r0, r2 + lsrs r0, r0, #0x1f + str r0, [r1, #0x14] + ldr r2, _0807E4E8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + bx lr + .align 2, 0 +_0807E4E8: .4byte gUnk_02033280 + + thumb_func_start sub_0807E4EC +sub_0807E4EC: @ 0x0807E4EC + push {lr} + adds r2, r1, #0 + ldr r0, [r2] + ldrh r1, [r0, #2] + movs r3, #0 + ldr r0, [r2, #4] + ands r0, r1 + cmp r1, r0 + bne _0807E500 + movs r3, #1 +_0807E500: + str r3, [r2, #0x14] + ldr r2, _0807E510 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E510: .4byte gUnk_02033280 + + thumb_func_start sub_0807E514 +sub_0807E514: @ 0x0807E514 + push {lr} + adds r2, r1, #0 + ldr r0, [r2] + ldrh r1, [r0, #2] + movs r3, #0 + ldr r0, [r2, #4] + cmp r1, r0 + bne _0807E526 + movs r3, #1 +_0807E526: + str r3, [r2, #0x14] + ldr r2, _0807E534 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E534: .4byte gUnk_02033280 + + thumb_func_start sub_0807E538 +sub_0807E538: @ 0x0807E538 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + bl sub_08016998 + ldr r1, _0807E55C @ =gUnk_03003F80 + ldr r1, [r1, #0x30] + ands r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [r4, #0x14] + ldr r2, _0807E560 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807E55C: .4byte gUnk_03003F80 +_0807E560: .4byte gUnk_02033280 + + thumb_func_start sub_0807E564 +sub_0807E564: @ 0x0807E564 + ldr r0, _0807E57C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + lsrs r0, r0, #7 + movs r2, #1 + ands r0, r2 + str r0, [r1, #0x14] + ldr r2, _0807E580 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + bx lr + .align 2, 0 +_0807E57C: .4byte gUnk_03003F80 +_0807E580: .4byte gUnk_02033280 + + thumb_func_start sub_0807E584 +sub_0807E584: @ 0x0807E584 + ldr r2, [r0, #0x34] + rsbs r0, r2, #0 + orrs r0, r2 + lsrs r0, r0, #0x1f + str r0, [r1, #0x14] + ldr r2, _0807E59C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + bx lr + .align 2, 0 +_0807E59C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E5A0 +sub_0807E5A0: @ 0x0807E5A0 + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldr r0, [r2] + ldr r1, _0807E5C4 @ =gLinkEntity + ldrh r0, [r0, #2] + ldrb r1, [r1, #0xc] + cmp r0, r1 + bne _0807E5B4 + movs r3, #1 +_0807E5B4: + str r3, [r2, #0x14] + ldr r2, _0807E5C8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E5C4: .4byte gLinkEntity +_0807E5C8: .4byte gUnk_02033280 + + thumb_func_start sub_0807E5CC +sub_0807E5CC: @ 0x0807E5CC + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldr r0, [r2] + ldr r1, _0807E5F0 @ =gLinkEntity + ldrh r0, [r0, #2] + ldrb r1, [r1, #0x14] + cmp r0, r1 + bne _0807E5E0 + movs r3, #1 +_0807E5E0: + str r3, [r2, #0x14] + ldr r2, _0807E5F4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807E5F0: .4byte gLinkEntity +_0807E5F4: .4byte gUnk_02033280 + + thumb_func_start sub_0807E5F8 +sub_0807E5F8: @ 0x0807E5F8 + push {lr} + ldr r0, [r1] + bl sub_08016998 + ldr r2, _0807E60C @ =gUnk_02033280 + ldr r1, [r2] + orrs r1, r0 + str r1, [r2] + pop {pc} + .align 2, 0 +_0807E60C: .4byte gUnk_02033280 + + thumb_func_start sub_0807E610 +sub_0807E610: @ 0x0807E610 + push {lr} + ldr r0, [r1] + bl sub_08016998 + ldr r2, _0807E624 @ =gUnk_02033280 + ldr r1, [r2] + bics r1, r0 + str r1, [r2] + pop {pc} + .align 2, 0 +_0807E624: .4byte gUnk_02033280 + + thumb_func_start sub_0807E628 +sub_0807E628: @ 0x0807E628 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_0807CCB4 + pop {pc} + + thumb_func_start sub_0807E634 +sub_0807E634: @ 0x0807E634 + push {lr} + ldr r1, [r1] + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl sub_0807CC9C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E644 +sub_0807E644: @ 0x0807E644 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_0807CD34 + pop {pc} + + thumb_func_start sub_0807E650 +sub_0807E650: @ 0x0807E650 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_0807CD04 + pop {pc} + + thumb_func_start sub_0807E65C +sub_0807E65C: @ 0x0807E65C + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_0807CD80 + pop {pc} + + thumb_func_start sub_0807E668 +sub_0807E668: @ 0x0807E668 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_0807CD10 + pop {pc} + + thumb_func_start sub_0807E674 +sub_0807E674: @ 0x0807E674 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_0807CD8C + pop {pc} + + thumb_func_start sub_0807E680 +sub_0807E680: @ 0x0807E680 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + bl sub_0801698A + strh r0, [r4, #0x10] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807E690 +sub_0807E690: @ 0x0807E690 + push {lr} + ldr r0, [r1] + bl sub_08016998 + ldr r2, _0807E6A8 @ =gUnk_02033280 + ldr r1, [r2] + ands r1, r0 + cmp r1, r0 + beq _0807E6A6 + movs r0, #0 + strb r0, [r2, #6] +_0807E6A6: + pop {pc} + .align 2, 0 +_0807E6A8: .4byte gUnk_02033280 + + thumb_func_start sub_0807E6AC +sub_0807E6AC: @ 0x0807E6AC + push {lr} + ldr r0, [r1] + bl sub_08016998 + ldr r3, _0807E6C8 @ =gUnk_02033280 + ldr r2, [r3] + adds r1, r2, #0 + ands r1, r0 + cmp r1, r0 + beq _0807E6CC + movs r0, #0 + strb r0, [r3, #6] + b _0807E6D8 + .align 2, 0 +_0807E6C8: .4byte gUnk_02033280 +_0807E6CC: + bics r2, r1 + str r2, [r3] + ldrb r1, [r3, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r3, #7] +_0807E6D8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E6DC +sub_0807E6DC: @ 0x0807E6DC + push {lr} + ldr r0, _0807E6F0 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #8 + bne _0807E6F8 + ldr r1, _0807E6F4 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + b _0807E6FC + .align 2, 0 +_0807E6F0: .4byte gLinkEntity +_0807E6F4: .4byte gUnk_02033280 +_0807E6F8: + movs r0, #0x2d + strh r0, [r1, #0x10] +_0807E6FC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E700 +sub_0807E700: @ 0x0807E700 + push {lr} + ldr r0, _0807E718 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0x17 + beq _0807E720 + ldr r2, _0807E71C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _0807E726 + .align 2, 0 +_0807E718: .4byte gLinkEntity +_0807E71C: .4byte gUnk_02033280 +_0807E720: + ldr r1, _0807E728 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807E726: + pop {pc} + .align 2, 0 +_0807E728: .4byte gUnk_02033280 + + thumb_func_start sub_0807E72C +sub_0807E72C: @ 0x0807E72C + push {lr} + ldr r0, _0807E744 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _0807E74C + ldr r1, _0807E748 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + b _0807E756 + .align 2, 0 +_0807E744: .4byte gUnk_03000BF0 +_0807E748: .4byte gUnk_02033280 +_0807E74C: + ldr r2, _0807E758 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] +_0807E756: + pop {pc} + .align 2, 0 +_0807E758: .4byte gUnk_02033280 + + thumb_func_start sub_0807E75C +sub_0807E75C: @ 0x0807E75C + push {lr} + ldr r0, _0807E770 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + beq _0807E76C + ldr r1, _0807E774 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807E76C: + pop {pc} + .align 2, 0 +_0807E770: .4byte gUnk_03000FD0 +_0807E774: .4byte gUnk_02033280 + + thumb_func_start sub_0807E778 +sub_0807E778: @ 0x0807E778 + ldr r2, _0807E784 @ =gUnk_02033280 + ldr r0, [r1] + ldrh r0, [r0, #2] + strb r0, [r2, #8] + bx lr + .align 2, 0 +_0807E784: .4byte gUnk_02033280 + + thumb_func_start sub_0807E788 +sub_0807E788: @ 0x0807E788 + push {lr} + ldr r0, [r1] + bl sub_08016998 + ldr r1, _0807E798 @ =gUnk_03000FD0 + str r0, [r1, #4] + pop {pc} + .align 2, 0 +_0807E798: .4byte gUnk_03000FD0 + + thumb_func_start sub_0807E79C +sub_0807E79C: @ 0x0807E79C + push {lr} + ldr r0, _0807E7A8 @ =gUnk_02033280 + ldrb r0, [r0, #8] + bl sub_080500F4 + pop {pc} + .align 2, 0 +_0807E7A8: .4byte gUnk_02033280 + + thumb_func_start nullsub_508 +nullsub_508: @ 0x0807E7AC + bx lr + .align 2, 0 + + thumb_func_start sub_0807E7B0 +sub_0807E7B0: @ 0x0807E7B0 + push {lr} + ldr r0, _0807E7C0 @ =gUnk_02033280 + ldrb r1, [r0, #8] + movs r0, #4 + bl sub_08050054 + pop {pc} + .align 2, 0 +_0807E7C0: .4byte gUnk_02033280 + + thumb_func_start sub_0807E7C4 +sub_0807E7C4: @ 0x0807E7C4 + push {lr} + ldr r0, _0807E7D4 @ =gUnk_02033280 + ldrb r1, [r0, #8] + movs r0, #5 + bl sub_08050054 + pop {pc} + .align 2, 0 +_0807E7D4: .4byte gUnk_02033280 + + thumb_func_start sub_0807E7D8 +sub_0807E7D8: @ 0x0807E7D8 + push {lr} + ldr r0, _0807E7E8 @ =gUnk_02033280 + ldrb r1, [r0, #8] + movs r0, #6 + bl sub_08050054 + pop {pc} + .align 2, 0 +_0807E7E8: .4byte gUnk_02033280 + + thumb_func_start sub_0807E7EC +sub_0807E7EC: @ 0x0807E7EC + push {lr} + ldr r0, _0807E7FC @ =gUnk_02033280 + ldrb r1, [r0, #8] + movs r0, #7 + bl sub_08050054 + pop {pc} + .align 2, 0 +_0807E7FC: .4byte gUnk_02033280 + + thumb_func_start sub_0807E800 +sub_0807E800: @ 0x0807E800 + push {lr} + movs r0, #0x10 + bl sub_0807E818 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E80C +sub_0807E80C: @ 0x0807E80C + push {lr} + movs r0, #0x11 + bl sub_0807E818 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E818 +sub_0807E818: @ 0x0807E818 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r2, _0807E83C @ =gUnk_03000BF0 + ldr r3, [r2, #0x30] + cmp r3, #0 + beq _0807E840 + movs r0, #0x2e + ldrsh r1, [r3, r0] + movs r4, #0xa + ldrsh r0, [r2, r4] + subs r4, r1, r0 + movs r0, #0x32 + ldrsh r1, [r3, r0] + movs r3, #0xc + ldrsh r0, [r2, r3] + subs r1, r1, r0 + b _0807E844 + .align 2, 0 +_0807E83C: .4byte gUnk_03000BF0 +_0807E840: + movs r4, #0x78 + movs r1, #0x50 +_0807E844: + ldr r0, _0807E854 @ =gUnk_02033280 + ldrb r3, [r0, #8] + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_08050110 + pop {r4, r5, pc} + .align 2, 0 +_0807E854: .4byte gUnk_02033280 + + thumb_func_start sub_0807E858 +sub_0807E858: @ 0x0807E858 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_08050038 + pop {pc} + + thumb_func_start sub_0807E864 +sub_0807E864: @ 0x0807E864 + push {lr} + ldr r0, _0807E874 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + bl sub_08078B48 + pop {pc} + .align 2, 0 +_0807E874: .4byte gUnk_03003F80 + + thumb_func_start sub_0807E878 +sub_0807E878: @ 0x0807E878 + ldr r0, _0807E884 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + bx lr + .align 2, 0 +_0807E884: .4byte gUnk_03003F80 + + thumb_func_start sub_0807E888 +sub_0807E888: @ 0x0807E888 + ldr r0, _0807E894 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + bx lr + .align 2, 0 +_0807E894: .4byte gUnk_03003F80 + + thumb_func_start sub_0807E898 +sub_0807E898: @ 0x0807E898 + push {lr} + ldr r0, [r1] + bl sub_08016998 + ldr r3, _0807E8C0 @ =gUnk_03003F80 + strb r0, [r3, #0xc] + lsrs r2, r0, #8 + adds r1, r3, #0 + adds r1, #0x38 + strb r2, [r1] + lsrs r1, r0, #0x10 + adds r2, r3, #0 + adds r2, #0x39 + strb r1, [r2] + lsrs r0, r0, #0x18 + adds r1, r3, #0 + adds r1, #0x3a + strb r0, [r1] + pop {pc} + .align 2, 0 +_0807E8C0: .4byte gUnk_03003F80 + + thumb_func_start sub_0807E8C4 +sub_0807E8C4: @ 0x0807E8C4 + push {lr} + ldr r0, [r1] + bl sub_08016998 + bl sub_0807DB2C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807E8D4 +sub_0807E8D4: @ 0x0807E8D4 + ldr r2, _0807E8E0 @ =gUnk_03003F80 + ldr r0, [r1] + ldrh r0, [r0, #2] + strh r0, [r2, #8] + bx lr + .align 2, 0 +_0807E8E0: .4byte gUnk_03003F80 + + thumb_func_start sub_0807E8E4 +sub_0807E8E4: @ 0x0807E8E4 + ldr r0, _0807E8FC @ =gUnk_08016984 + ldrh r0, [r0] + ldr r2, _0807E900 @ =0x000003FF + ands r2, r0 + ldr r3, _0807E904 @ =gLinkEntity + ldr r0, [r1] + ldrh r0, [r0] + subs r0, r0, r2 + lsls r0, r0, #1 + strb r0, [r3, #0x14] + bx lr + .align 2, 0 +_0807E8FC: .4byte gUnk_08016984 +_0807E900: .4byte 0x000003FF +_0807E904: .4byte gLinkEntity + + thumb_func_start sub_0807E908 +sub_0807E908: @ 0x0807E908 + ldr r1, [r1] + ldrh r1, [r1, #2] + movs r2, #0 + strb r1, [r0, #0xc] + strb r2, [r0, #0xd] + bx lr + + thumb_func_start sub_0807E914 +sub_0807E914: @ 0x0807E914 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + bl sub_08016998 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807E924 +sub_0807E924: @ 0x0807E924 + adds r0, #0x5a + ldrb r2, [r0] + str r2, [r1, #4] + movs r1, #0 + strb r1, [r0] + bx lr + + thumb_func_start sub_0807E930 +sub_0807E930: @ 0x0807E930 + push {lr} + ldr r3, [r1] + ldrh r2, [r3, #2] + adds r1, r0, #0 + adds r1, #0x80 + strh r2, [r1] + ldrh r1, [r3, #2] + bl sub_080042AC + pop {pc} + + thumb_func_start sub_0807E944 +sub_0807E944: @ 0x0807E944 + push {lr} + adds r2, r0, #0 + adds r2, #0x39 + movs r1, #0 + ldrsb r1, [r2, r1] + cmp r1, #0 + beq _0807E968 + movs r0, #0 + strb r0, [r2] + ldr r2, _0807E964 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _0807E96C + .align 2, 0 +_0807E964: .4byte gUnk_02033280 +_0807E968: + ldr r0, _0807E970 @ =gUnk_02033280 + strb r1, [r0, #6] +_0807E96C: + pop {pc} + .align 2, 0 +_0807E970: .4byte gUnk_02033280 + + thumb_func_start sub_0807E974 +sub_0807E974: @ 0x0807E974 + push {lr} + adds r2, r1, #0 + ldrb r1, [r2, #0x18] + cmp r1, #0 + beq _0807E990 + cmp r1, #1 + beq _0807E9AE + ldrb r0, [r2, #0x19] + subs r0, #1 + strb r0, [r2, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0807E9C8 + b _0807E9C2 +_0807E990: + adds r3, r0, #0 + adds r3, #0x39 + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + beq _0807E9C2 + strb r1, [r3] + ldrb r0, [r2, #0x18] + adds r0, #1 + strb r0, [r2, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #2] + bl sub_08056378 + b _0807E9C2 +_0807E9AE: + ldr r0, _0807E9CC @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0807E9C2 + movs r0, #2 + strb r0, [r2, #0x18] + movs r0, #0xf + strb r0, [r2, #0x19] +_0807E9C2: + ldr r1, _0807E9D0 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807E9C8: + pop {pc} + .align 2, 0 +_0807E9CC: .4byte gUnk_02000050 +_0807E9D0: .4byte gUnk_02033280 + + thumb_func_start sub_0807E9D4 +sub_0807E9D4: @ 0x0807E9D4 + push {lr} + bl sub_08078778 + pop {pc} + + thumb_func_start sub_0807E9DC +sub_0807E9DC: @ 0x0807E9DC + push {lr} + bl sub_080788E0 + pop {pc} + + thumb_func_start sub_0807E9E4 +sub_0807E9E4: @ 0x0807E9E4 + push {lr} + ldr r1, [r1] + ldrh r1, [r1, #2] + bl sub_08078784 + pop {pc} + + thumb_func_start sub_0807E9F0 +sub_0807E9F0: @ 0x0807E9F0 + push {r4, lr} + adds r4, r1, #0 + bl sub_0801E00C + movs r2, #1 + ldr r0, _0807EA18 @ =gUnk_02022740 + ldrb r0, [r0] + cmp r0, #1 + beq _0807EA24 + cmp r0, #2 + bne _0807EA40 + ldr r0, _0807EA1C @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + ldr r0, _0807EA20 @ =gUnk_02034490 + strb r2, [r0] + str r2, [r4, #0x14] + b _0807EA28 + .align 2, 0 +_0807EA18: .4byte gUnk_02022740 +_0807EA1C: .4byte gUnk_03003F80 +_0807EA20: .4byte gUnk_02034490 +_0807EA24: + movs r0, #0 + str r0, [r4, #0x14] +_0807EA28: + cmp r2, #0 + beq _0807EA40 + bl sub_0807919C + ldr r0, _0807EA3C @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + b _0807EA46 + .align 2, 0 +_0807EA3C: .4byte gUnk_03003F80 +_0807EA40: + ldr r1, _0807EA48 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807EA46: + pop {r4, pc} + .align 2, 0 +_0807EA48: .4byte gUnk_02033280 + + thumb_func_start sub_0807EA4C +sub_0807EA4C: @ 0x0807EA4C + push {r4, lr} + adds r1, r0, #0 + adds r4, r1, #0 + adds r4, #0x39 + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #2 + bne _0807EA7C + adds r0, r1, #0 + movs r1, #0 + movs r2, #0 + movs r3, #0 + bl sub_0801DFB4 + movs r0, #0 + strb r0, [r4] + ldr r2, _0807EA78 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _0807EA82 + .align 2, 0 +_0807EA78: .4byte gUnk_02033280 +_0807EA7C: + ldr r1, _0807EA84 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807EA82: + pop {r4, pc} + .align 2, 0 +_0807EA84: .4byte gUnk_02033280 + + thumb_func_start sub_0807EA88 +sub_0807EA88: @ 0x0807EA88 + push {lr} + ldr r1, [r1] + ldrh r1, [r1, #2] + bl sub_08078790 + pop {pc} + + thumb_func_start sub_0807EA94 +sub_0807EA94: @ 0x0807EA94 + push {lr} + ldr r0, _0807EAAC @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _0807EAA8 + ldr r1, _0807EAB0 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807EAA8: + pop {pc} + .align 2, 0 +_0807EAAC: .4byte gUnk_02000050 +_0807EAB0: .4byte gUnk_02033280 + + thumb_func_start sub_0807EAB4 +sub_0807EAB4: @ 0x0807EAB4 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_08056378 + pop {pc} + + thumb_func_start sub_0807EAC0 +sub_0807EAC0: @ 0x0807EAC0 + push {lr} + adds r2, r0, #0 + ldr r0, [r1] + ldrh r0, [r0, #2] + adds r1, r2, #0 + bl sub_08056398 + pop {pc} + + thumb_func_start sub_0807EAD0 +sub_0807EAD0: @ 0x0807EAD0 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + ldrh r0, [r0, #2] + bl sub_08056378 + ldr r1, _0807EAEC @ =gUnk_02000050 + movs r0, #1 + strb r0, [r1, #6] + ldr r0, [r4] + ldrh r0, [r0, #4] + strb r0, [r1, #7] + pop {r4, pc} + .align 2, 0 +_0807EAEC: .4byte gUnk_02000050 + + thumb_func_start sub_0807EAF0 +sub_0807EAF0: @ 0x0807EAF0 + push {lr} + ldr r0, _0807EB0C @ =gUnk_02033280 + ldrb r0, [r0, #6] + ldr r2, [r1, #4] + cmp r0, r2 + bls _0807EB10 + lsls r0, r2, #1 + ldr r1, [r1] + adds r1, r1, r0 + ldrh r0, [r1, #2] + bl sub_08056378 + b _0807EB16 + .align 2, 0 +_0807EB0C: .4byte gUnk_02033280 +_0807EB10: + movs r0, #0 + bl sub_08056378 +_0807EB16: + pop {pc} + + thumb_func_start sub_0807EB18 +sub_0807EB18: @ 0x0807EB18 + push {lr} + adds r2, r0, #0 + ldr r0, [r1, #4] + adds r1, r2, #0 + bl sub_08056398 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807EB28 +sub_0807EB28: @ 0x0807EB28 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + movs r1, #0 + bl sub_08078AA8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807EB38 +sub_0807EB38: @ 0x0807EB38 + ldr r0, _0807EB40 @ =gUnk_02000040 + ldrb r0, [r0, #1] + str r0, [r1, #4] + bx lr + .align 2, 0 +_0807EB40: .4byte gUnk_02000040 + + thumb_func_start sub_0807EB44 +sub_0807EB44: @ 0x0807EB44 + ldr r1, [r1] + ldrh r1, [r1, #2] + strb r1, [r0, #0x14] + bx lr + + thumb_func_start sub_0807EB4C +sub_0807EB4C: @ 0x0807EB4C + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r1] + ldrh r1, [r2, #2] + ldr r3, _0807EB70 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + adds r1, r1, r0 + ldrh r2, [r2, #4] + ldrh r0, [r3, #8] + adds r2, r2, r0 + adds r0, r4, #0 + bl sub_080045B4 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 +_0807EB70: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807EB74 +sub_0807EB74: @ 0x0807EB74 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0807EB88 @ =gLinkEntity + bl sub_080045C4 + bl sub_0806F5B0 + strb r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 +_0807EB88: .4byte gLinkEntity + + thumb_func_start sub_0807EB8C +sub_0807EB8C: @ 0x0807EB8C + push {r4, lr} + adds r1, r0, #0 + ldr r4, _0807EBA4 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5B0 + movs r1, #0xfe + ands r0, r1 + strb r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 +_0807EBA4: .4byte gLinkEntity + + thumb_func_start sub_0807EBA8 +sub_0807EBA8: @ 0x0807EBA8 + ldr r1, [r1] + ldrh r1, [r1, #2] + strb r1, [r0, #0x15] + bx lr + + thumb_func_start sub_0807EBB0 +sub_0807EBB0: @ 0x0807EBB0 + ldr r1, [r1] + ldrh r1, [r1, #2] + strb r1, [r0, #0x15] + ldrb r1, [r0, #0x15] + lsrs r1, r1, #2 + strb r1, [r0, #0x14] + bx lr + .align 2, 0 + + thumb_func_start sub_0807EBC0 +sub_0807EBC0: @ 0x0807EBC0 + ldr r1, [r1] + ldrh r1, [r1, #2] + strh r1, [r0, #0x24] + bx lr + + thumb_func_start sub_0807EBC8 +sub_0807EBC8: @ 0x0807EBC8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r1] + bl sub_08016998 + str r0, [r4, #0x20] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807EBD8 +sub_0807EBD8: @ 0x0807EBD8 + push {r4, lr} + ldr r3, _0807EBF0 @ =gUnk_03000BF0 + ldr r2, [r1] + ldrh r1, [r2, #2] + ldrh r4, [r3, #6] + adds r1, r1, r4 + strh r1, [r0, #0x2e] + ldrh r1, [r2, #4] + ldrh r3, [r3, #8] + adds r1, r1, r3 + strh r1, [r0, #0x32] + pop {r4, pc} + .align 2, 0 +_0807EBF0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807EBF4 +sub_0807EBF4: @ 0x0807EBF4 + ldr r2, [r1] + ldrh r1, [r2, #2] + ldrh r3, [r0, #0x2e] + adds r1, r1, r3 + strh r1, [r0, #0x2e] + ldrh r1, [r2, #4] + ldrh r2, [r0, #0x32] + adds r1, r1, r2 + strh r1, [r0, #0x32] + bx lr + + thumb_func_start sub_0807EC08 +sub_0807EC08: @ 0x0807EC08 + push {lr} + adds r1, r0, #0 + ldr r0, _0807EC14 @ =gLinkEntity + bl sub_0806FA24 + pop {pc} + .align 2, 0 +_0807EC14: .4byte gLinkEntity + + thumb_func_start nullsub_509 +nullsub_509: @ 0x0807EC18 + bx lr + .align 2, 0 + + thumb_func_start sub_0807EC1C +sub_0807EC1C: @ 0x0807EC1C + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _0807EC3A + movs r0, #1 + strb r0, [r2, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #2] + strh r0, [r2, #0x12] + ldr r0, [r2, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #8] +_0807EC3A: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807EC44 + pop {pc} + + thumb_func_start sub_0807EC44 +sub_0807EC44: @ 0x0807EC44 + push {r4, lr} + adds r4, r1, #0 + bl sub_0806F69C + ldrh r0, [r4, #0x12] + subs r0, #1 + strh r0, [r4, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0807EC5E + ldr r1, _0807EC60 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807EC5E: + pop {r4, pc} + .align 2, 0 +_0807EC60: .4byte gUnk_02033280 + + thumb_func_start sub_0807EC64 +sub_0807EC64: @ 0x0807EC64 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _0807EC88 + movs r0, #1 + strb r0, [r2, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #2] + movs r1, #0 + strh r0, [r2, #0x12] + strb r1, [r3, #0x14] + strb r1, [r3, #0x15] + ldr r0, [r2, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #8] +_0807EC88: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807EC44 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807EC94 +sub_0807EC94: @ 0x0807EC94 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _0807ECB8 + movs r0, #1 + strb r0, [r2, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #2] + strh r0, [r2, #0x12] + movs r1, #2 + strb r1, [r3, #0x14] + movs r0, #8 + strb r0, [r3, #0x15] + ldr r0, [r2, #8] + orrs r0, r1 + str r0, [r2, #8] +_0807ECB8: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807EC44 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807ECC4 +sub_0807ECC4: @ 0x0807ECC4 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _0807ECEA + movs r0, #1 + strb r0, [r2, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #2] + strh r0, [r2, #0x12] + movs r0, #4 + strb r0, [r3, #0x14] + movs r0, #0x10 + strb r0, [r3, #0x15] + ldr r0, [r2, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #8] +_0807ECEA: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807EC44 + pop {pc} + + thumb_func_start sub_0807ECF4 +sub_0807ECF4: @ 0x0807ECF4 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _0807ED1A + movs r0, #1 + strb r0, [r2, #0x18] + ldr r0, [r2] + ldrh r0, [r0, #2] + strh r0, [r2, #0x12] + movs r0, #6 + strb r0, [r3, #0x14] + movs r0, #0x18 + strb r0, [r3, #0x15] + ldr r0, [r2, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #8] +_0807ED1A: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_0807EC44 + pop {pc} + + thumb_func_start sub_0807ED24 +sub_0807ED24: @ 0x0807ED24 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r6, r1, #0 + ldrb r0, [r6, #0x18] + cmp r0, #0 + bne _0807ED90 + movs r0, #1 + strb r0, [r6, #0x18] + ldr r4, [r6] + ldrh r0, [r4, #6] + strh r0, [r6, #0x12] + ldrh r2, [r4, #2] + movs r1, #0x2e + ldrsh r0, [r7, r1] + ldr r5, _0807ED8C @ =gUnk_03000BF0 + ldrh r1, [r5, #6] + subs r0, r0, r1 + subs r0, r2, r0 + lsls r0, r0, #0x10 + ldrh r1, [r6, #0x12] + bl __divsi3 + str r0, [r6, #0x1c] + ldrh r2, [r4, #4] + movs r3, #0x32 + ldrsh r0, [r7, r3] + ldrh r1, [r5, #8] + subs r0, r0, r1 + subs r0, r2, r0 + lsls r0, r0, #0x10 + ldrh r1, [r6, #0x12] + bl __divsi3 + str r0, [r6, #0x20] + ldrh r1, [r4, #2] + ldrh r0, [r5, #6] + adds r1, r1, r0 + ldrh r2, [r4, #4] + ldrh r0, [r5, #8] + adds r2, r2, r0 + adds r0, r7, #0 + bl sub_080045B4 + bl sub_0806F5B0 + strb r0, [r7, #0x14] + ldr r0, [r6, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r6, #8] + b _0807EDC8 + .align 2, 0 +_0807ED8C: .4byte gUnk_03000BF0 +_0807ED90: + ldrh r0, [r6, #0x12] + subs r0, #1 + strh r0, [r6, #0x12] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0807EDB8 + ldr r2, [r6] + ldr r1, _0807EDB4 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + ldrh r3, [r2, #2] + adds r0, r0, r3 + strh r0, [r7, #0x2e] + ldrh r0, [r1, #8] + ldrh r2, [r2, #4] + adds r0, r0, r2 + strh r0, [r7, #0x32] + b _0807EDCE + .align 2, 0 +_0807EDB4: .4byte gUnk_03000BF0 +_0807EDB8: + ldr r0, [r7, #0x2c] + ldr r1, [r6, #0x1c] + adds r0, r0, r1 + str r0, [r7, #0x2c] + ldr r0, [r7, #0x30] + ldr r1, [r6, #0x20] + adds r0, r0, r1 + str r0, [r7, #0x30] +_0807EDC8: + ldr r1, _0807EDD0 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807EDCE: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807EDD0: .4byte gUnk_02033280 + + thumb_func_start sub_0807EDD4 +sub_0807EDD4: @ 0x0807EDD4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _0807EDEA + movs r0, #1 + strb r0, [r4, #0x18] + adds r0, r5, #0 + bl sub_0807EE04 +_0807EDEA: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0807EE30 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _0807EDFC + ldr r0, _0807EE00 @ =gUnk_02033280 + strb r1, [r0, #6] +_0807EDFC: + pop {r4, r5, pc} + .align 2, 0 +_0807EE00: .4byte gUnk_02033280 + + thumb_func_start sub_0807EE04 +sub_0807EE04: @ 0x0807EE04 + push {r4, r5, lr} + ldr r5, [r1] + ldrh r2, [r5, #2] + ldr r4, _0807EE28 @ =gUnk_03000BF0 + ldrh r3, [r4, #6] + adds r2, r2, r3 + ldrh r3, [r5, #4] + ldrh r4, [r4, #8] + adds r3, r3, r4 + bl sub_0807DEDC + ldr r2, _0807EE2C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, r5, pc} + .align 2, 0 +_0807EE28: .4byte gUnk_03000BF0 +_0807EE2C: .4byte gUnk_02033280 + + thumb_func_start sub_0807EE30 +sub_0807EE30: @ 0x0807EE30 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x19] + subs r0, #1 + strb r0, [r5, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0807EE60 + movs r0, #8 + strb r0, [r5, #0x19] + movs r1, #0x1e + ldrsh r0, [r5, r1] + movs r2, #0x2e + ldrsh r1, [r6, r2] + subs r0, r0, r1 + movs r3, #0x22 + ldrsh r1, [r5, r3] + movs r3, #0x32 + ldrsh r2, [r6, r3] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r6, #0x15] +_0807EE60: + movs r0, #0x2e + ldrsh r4, [r6, r0] + movs r1, #0x1e + ldrsh r0, [r5, r1] + subs r4, r4, r0 + movs r2, #0x32 + ldrsh r1, [r6, r2] + movs r3, #0x22 + ldrsh r0, [r5, r3] + subs r7, r1, r0 + movs r0, #0x24 + ldrsh r1, [r6, r0] + ldrb r2, [r6, #0x15] + adds r0, r6, #0 + bl sub_0806F62C + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r2, #0x1e + ldrsh r1, [r5, r2] + subs r0, r0, r1 + muls r4, r0, r4 + movs r3, #0x32 + ldrsh r0, [r6, r3] + movs r2, #0x22 + ldrsh r1, [r5, r2] + subs r0, r0, r1 + muls r7, r0, r7 + cmp r4, #0 + bgt _0807EEAC + cmp r7, #0 + bgt _0807EEAC + ldrh r0, [r5, #0x1e] + strh r0, [r6, #0x2e] + ldrh r0, [r5, #0x22] + strh r0, [r6, #0x32] + movs r0, #1 + b _0807EEAE +_0807EEAC: + movs r0, #0 +_0807EEAE: + str r0, [r5, #0x14] + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0807EEB4 +sub_0807EEB4: @ 0x0807EEB4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _0807EED6 + movs r0, #1 + strb r0, [r4, #0x18] + ldr r0, _0807EEEC @ =gLinkEntity + movs r1, #0x2e + ldrsh r2, [r0, r1] + movs r1, #0x32 + ldrsh r3, [r0, r1] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0807DEDC +_0807EED6: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0807EE30 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _0807EEE8 + ldr r0, _0807EEF0 @ =gUnk_02033280 + strb r1, [r0, #6] +_0807EEE8: + pop {r4, r5, pc} + .align 2, 0 +_0807EEEC: .4byte gLinkEntity +_0807EEF0: .4byte gUnk_02033280 + + thumb_func_start sub_0807EEF4 +sub_0807EEF4: @ 0x0807EEF4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _0807EF22 + movs r0, #1 + strb r0, [r4, #0x18] + movs r0, #0x2e + ldrsh r2, [r5, r0] + ldr r1, [r4] + movs r3, #2 + ldrsh r0, [r1, r3] + adds r2, r2, r0 + movs r6, #0x32 + ldrsh r3, [r5, r6] + movs r6, #4 + ldrsh r0, [r1, r6] + adds r3, r3, r0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0807DEDC +_0807EF22: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0807EE30 + ldr r1, [r4, #0x14] + cmp r1, #0 + bne _0807EF34 + ldr r0, _0807EF38 @ =gUnk_02033280 + strb r1, [r0, #6] +_0807EF34: + pop {r4, r5, r6, pc} + .align 2, 0 +_0807EF38: .4byte gUnk_02033280 + + thumb_func_start sub_0807EF3C +sub_0807EF3C: @ 0x0807EF3C + push {r4, lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldrb r0, [r2, #0x18] + cmp r0, #0 + bne _0807EF66 + movs r0, #1 + strb r0, [r2, #0x18] + ldr r1, [r2] + movs r4, #2 + ldrsh r0, [r1, r4] + lsls r0, r0, #8 + str r0, [r3, #0x20] + ldrh r0, [r1, #4] + lsls r0, r0, #8 + strh r0, [r2, #0x1c] + ldrh r1, [r2, #0x1c] + adds r0, r3, #0 + bl sub_08003FC4 + b _0807EF72 +_0807EF66: + ldrh r1, [r2, #0x1c] + adds r0, r3, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _0807EF78 +_0807EF72: + ldr r1, _0807EF7C @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807EF78: + pop {r4, pc} + .align 2, 0 +_0807EF7C: .4byte gUnk_02033280 + + thumb_func_start sub_0807EF80 +sub_0807EF80: @ 0x0807EF80 + ldr r0, [r1] + movs r2, #1 + ldrh r0, [r0, #2] + lsls r2, r0 + ldr r0, [r1, #8] + orrs r0, r2 + str r0, [r1, #8] + bx lr + + thumb_func_start sub_0807EF90 +sub_0807EF90: @ 0x0807EF90 + ldr r0, [r1] + movs r2, #1 + ldrh r0, [r0, #2] + lsls r2, r0 + ldr r0, [r1, #8] + orrs r0, r2 + str r0, [r1, #8] + bx lr + + thumb_func_start sub_0807EFA0 +sub_0807EFA0: @ 0x0807EFA0 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_080A3268 + pop {pc} + + thumb_func_start sub_0807EFAC +sub_0807EFAC: @ 0x0807EFAC + push {lr} + ldr r1, [r1] + ldrh r0, [r1, #2] + cmp r0, #0x63 + bls _0807EFCC + ldr r0, _0807EFC8 @ =gUnk_02033A90 + movs r1, #0x86 + lsls r1, r1, #4 + adds r0, r0, r1 + ldr r0, [r0] + bl sub_080A3268 + b _0807EFD2 + .align 2, 0 +_0807EFC8: .4byte gUnk_02033A90 +_0807EFCC: + ldrh r0, [r1, #2] + bl sub_080A3268 +_0807EFD2: + pop {pc} + + thumb_func_start sub_0807EFD4 +sub_0807EFD4: @ 0x0807EFD4 + push {lr} + ldr r0, [r1] + bl sub_08016998 + bl sub_080A3268 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807EFE4 +sub_0807EFE4: @ 0x0807EFE4 + push {lr} + ldr r0, _0807EFF0 @ =0x80100000 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_0807EFF0: .4byte 0x80100000 + + thumb_func_start sub_0807EFF4 +sub_0807EFF4: @ 0x0807EFF4 + push {lr} + ldr r0, [r1] + movs r1, #2 + ldrsh r0, [r0, r1] + bl sub_080526CC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F004 +sub_0807F004: @ 0x0807F004 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + bl sub_080526A0 + pop {pc} + + thumb_func_start sub_0807F010 +sub_0807F010: @ 0x0807F010 + push {lr} + ldr r3, _0807F030 @ =gUnk_02002A40 + adds r2, r3, #0 + adds r2, #0xab + ldrb r0, [r2] + adds r1, r0, #0 + adds r1, #8 + cmp r1, #0xa0 + ble _0807F024 + movs r1, #0xa0 +_0807F024: + strb r1, [r2] + adds r0, r3, #0 + adds r0, #0xaa + strb r1, [r0] + pop {pc} + .align 2, 0 +_0807F030: .4byte gUnk_02002A40 + + thumb_func_start sub_0807F034 +sub_0807F034: @ 0x0807F034 + push {lr} + movs r3, #0 + ldr r2, [r1] + ldrh r0, [r2, #2] + cmp r0, #0x3f + bne _0807F042 + ldr r3, [r1, #4] +_0807F042: + ldrh r0, [r2, #2] + adds r1, r3, #0 + movs r2, #0 + bl sub_080A7C18 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F050 +sub_0807F050: @ 0x0807F050 + push {lr} + ldr r0, [r1] + ldrh r1, [r0, #2] + movs r0, #0x5c + movs r2, #0 + bl sub_080A7C18 + pop {pc} + + thumb_func_start sub_0807F060 +sub_0807F060: @ 0x0807F060 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4] + ldrh r0, [r0, #2] + bl sub_0807CA84 + str r0, [r4, #4] + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + str r1, [r4, #0x14] + pop {r4, pc} + + thumb_func_start sub_0807F078 +sub_0807F078: @ 0x0807F078 + push {lr} + ldr r1, [r1] + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl sub_0807CAA0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F088 +sub_0807F088: @ 0x0807F088 + push {lr} + ldr r0, [r1] + ldrh r0, [r0, #2] + movs r1, #0 + movs r2, #3 + bl sub_080A7C18 + pop {pc} + + thumb_func_start sub_0807F098 +sub_0807F098: @ 0x0807F098 + ldr r1, _0807F0A0 @ =gUnk_03000BF0 + str r0, [r1, #0x30] + bx lr + .align 2, 0 +_0807F0A0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807F0A4 +sub_0807F0A4: @ 0x0807F0A4 + ldr r1, _0807F0AC @ =gUnk_03000BF0 + ldr r0, _0807F0B0 @ =gLinkEntity + str r0, [r1, #0x30] + bx lr + .align 2, 0 +_0807F0AC: .4byte gUnk_03000BF0 +_0807F0B0: .4byte gLinkEntity + + thumb_func_start sub_0807F0B4 +sub_0807F0B4: @ 0x0807F0B4 + ldr r2, _0807F0C4 @ =gUnk_03000BF0 + ldr r0, [r1] + ldrb r1, [r0, #2] + movs r0, #7 + ands r0, r1 + strb r0, [r2, #0xe] + bx lr + .align 2, 0 +_0807F0C4: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807F0C8 +sub_0807F0C8: @ 0x0807F0C8 + push {lr} + ldr r1, [r1] + ldrh r0, [r1, #2] + ldrh r1, [r1, #4] + bl sub_08080964 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F0D8 +sub_0807F0D8: @ 0x0807F0D8 + ldr r0, _0807F0E8 @ =gUnk_03000FF0 + ldrh r2, [r0, #2] + rsbs r0, r2, #0 + orrs r0, r2 + lsrs r0, r0, #0x1f + str r0, [r1, #0x14] + bx lr + .align 2, 0 +_0807F0E8: .4byte gUnk_03000FF0 + + thumb_func_start sub_0807F0EC +sub_0807F0EC: @ 0x0807F0EC + push {r4, lr} + adds r4, r1, #0 + bl sub_08000E50 + ldr r1, [r4, #4] + bl __modsi3 + str r0, [r4, #4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807F100 +sub_0807F100: @ 0x0807F100 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08000E50 + movs r2, #6 + adds r1, r0, #0 + ands r1, r2 + strb r1, [r4, #0x14] + ldr r2, _0807F124 @ =gUnk_0811E750 + lsrs r0, r0, #8 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r5, #0x1a] + pop {r4, r5, pc} + .align 2, 0 +_0807F124: .4byte gUnk_0811E750 + + thumb_func_start sub_0807F128 +sub_0807F128: @ 0x0807F128 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_08000E50 + ldr r2, _0807F150 @ =gUnk_0811E758 + movs r3, #7 + adds r1, r0, #0 + ands r1, r3 + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r4, #0x14] + ldr r1, _0807F154 @ =gUnk_0811E760 + lsrs r0, r0, #8 + ands r0, r3 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0x1a] + pop {r4, r5, pc} + .align 2, 0 +_0807F150: .4byte gUnk_0811E758 +_0807F154: .4byte gUnk_0811E760 + + thumb_func_start sub_0807F158 +sub_0807F158: @ 0x0807F158 + push {lr} + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #1 + strb r1, [r2] + bl sub_08016A04 + pop {pc} + + thumb_func_start sub_0807F168 +sub_0807F168: @ 0x0807F168 + push {lr} + ldr r0, _0807F17C @ =gLinkEntity + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #1 + strb r1, [r2] + bl sub_08016A04 + pop {pc} + .align 2, 0 +_0807F17C: .4byte gLinkEntity + + thumb_func_start sub_0807F180 +sub_0807F180: @ 0x0807F180 + push {lr} + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #2 + strb r1, [r2] + bl sub_08016A04 + pop {pc} + + thumb_func_start sub_0807F190 +sub_0807F190: @ 0x0807F190 + push {lr} + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #4 + bl sub_08050054 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F1A0 +sub_0807F1A0: @ 0x0807F1A0 + push {r4, lr} + ldr r3, _0807F1BC @ =gLinkEntity + movs r4, #0x2e + ldrsh r2, [r3, r4] + movs r4, #0x32 + ldrsh r3, [r3, r4] + bl sub_0807DEDC + ldr r2, _0807F1C0 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807F1BC: .4byte gLinkEntity +_0807F1C0: .4byte gUnk_02033280 + + thumb_func_start sub_0807F1C4 +sub_0807F1C4: @ 0x0807F1C4 + push {lr} + ldr r2, _0807F1D8 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0807F1E0 + ldr r0, _0807F1DC @ =0x00000459 + b _0807F1E4 + .align 2, 0 +_0807F1D8: .4byte gUnk_03003F80 +_0807F1DC: .4byte 0x00000459 +_0807F1E0: + movs r0, #0xde + lsls r0, r0, #1 +_0807F1E4: + strh r0, [r2, #8] + pop {pc} + + thumb_func_start sub_0807F1E8 +sub_0807F1E8: @ 0x0807F1E8 + push {lr} + ldr r2, _0807F1FC @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0807F204 + ldr r0, _0807F200 @ =0x0000045A + b _0807F206 + .align 2, 0 +_0807F1FC: .4byte gUnk_03003F80 +_0807F200: .4byte 0x0000045A +_0807F204: + ldr r0, _0807F20C @ =0x000002BD +_0807F206: + strh r0, [r2, #8] + pop {pc} + .align 2, 0 +_0807F20C: .4byte 0x000002BD + + thumb_func_start sub_0807F210 +sub_0807F210: @ 0x0807F210 + push {lr} + ldr r2, _0807F224 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0807F22C + ldr r0, _0807F228 @ =0x0000041C + b _0807F22E + .align 2, 0 +_0807F224: .4byte gUnk_03003F80 +_0807F228: .4byte 0x0000041C +_0807F22C: + ldr r0, _0807F234 @ =0x0000080C +_0807F22E: + strh r0, [r2, #8] + pop {pc} + .align 2, 0 +_0807F234: .4byte 0x0000080C + + thumb_func_start sub_0807F238 +sub_0807F238: @ 0x0807F238 + ldr r2, _0807F240 @ =gUnk_03003F80 + ldr r0, [r1, #4] + strh r0, [r2, #8] + bx lr + .align 2, 0 +_0807F240: .4byte gUnk_03003F80 + + thumb_func_start sub_0807F244 +sub_0807F244: @ 0x0807F244 + push {r4, r5, lr} + ldr r0, [r1, #4] + ldr r4, _0807F298 @ =0x0000FFFF + lsrs r5, r0, #0x10 + ands r4, r0 + cmp r4, #1 + blo _0807F28C + cmp r4, #4 + bls _0807F25A + cmp r4, #6 + bne _0807F28C +_0807F25A: + movs r4, #1 + movs r0, #2 + bl sub_0807CA84 + cmp r0, #0 + beq _0807F268 + movs r4, #2 +_0807F268: + movs r0, #3 + bl sub_0807CA84 + cmp r0, #0 + beq _0807F274 + movs r4, #3 +_0807F274: + movs r0, #4 + bl sub_0807CA84 + cmp r0, #0 + beq _0807F280 + movs r4, #4 +_0807F280: + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + beq _0807F28C + movs r4, #6 +_0807F28C: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_08054414 + pop {r4, r5, pc} + .align 2, 0 +_0807F298: .4byte 0x0000FFFF + + thumb_func_start sub_0807F29C +sub_0807F29C: @ 0x0807F29C + push {lr} + ldr r0, [r1, #4] + bl sub_0805ED14 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F2A8 +sub_0807F2A8: @ 0x0807F2A8 + push {lr} + ldr r0, _0807F2C0 @ =gUnk_03003F80 + adds r0, #0x9c + ldr r0, [r0] + cmp r0, #0 + bne _0807F2C8 + ldr r2, _0807F2C4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _0807F2CE + .align 2, 0 +_0807F2C0: .4byte gUnk_03003F80 +_0807F2C4: .4byte gUnk_02033280 +_0807F2C8: + ldr r1, _0807F2D0 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807F2CE: + pop {pc} + .align 2, 0 +_0807F2D0: .4byte gUnk_02033280 + + thumb_func_start sub_0807F2D4 +sub_0807F2D4: @ 0x0807F2D4 + push {lr} + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0807F2F8 + ldr r2, _0807F2F4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _0807F2FC + .align 2, 0 +_0807F2F4: .4byte gUnk_02033280 +_0807F2F8: + ldr r0, _0807F300 @ =gUnk_02033280 + strb r1, [r0, #6] +_0807F2FC: + pop {pc} + .align 2, 0 +_0807F300: .4byte gUnk_02033280 + + thumb_func_start sub_0807F304 +sub_0807F304: @ 0x0807F304 + push {lr} + ldr r0, _0807F324 @ =gLinkEntity + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + beq _0807F32C + ldr r2, _0807F328 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _0807F330 + .align 2, 0 +_0807F324: .4byte gLinkEntity +_0807F328: .4byte gUnk_02033280 +_0807F32C: + ldr r0, _0807F334 @ =gUnk_02033280 + strb r1, [r0, #6] +_0807F330: + pop {pc} + .align 2, 0 +_0807F334: .4byte gUnk_02033280 + + thumb_func_start sub_0807F338 +sub_0807F338: @ 0x0807F338 + movs r1, #0 + str r1, [r0, #0x48] + ldrb r2, [r0, #0x17] + movs r1, #0xfe + ands r1, r2 + strb r1, [r0, #0x17] + bx lr + .align 2, 0 + + thumb_func_start sub_0807F348 +sub_0807F348: @ 0x0807F348 + push {lr} + movs r1, #2 + bl sub_0805E3A0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F354 +sub_0807F354: @ 0x0807F354 + push {lr} + movs r1, #6 + bl sub_0805E3A0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F360 +sub_0807F360: @ 0x0807F360 + push {lr} + movs r1, #3 + bl sub_0805E3A0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F36C +sub_0807F36C: @ 0x0807F36C + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x41 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _0807F3C2 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + ldr r3, _0807F3C4 @ =0xFFF80000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + bl sub_08000E50 + movs r5, #1 + ands r0, r5 + cmp r0, #0 + beq _0807F3B0 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_0807F3B0: + bl sub_08000E50 + ands r0, r5 + cmp r0, #0 + beq _0807F3C2 + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_0807F3C2: + pop {r4, r5, pc} + .align 2, 0 +_0807F3C4: .4byte 0xFFF80000 + + thumb_func_start sub_0807F3C8 +sub_0807F3C8: @ 0x0807F3C8 + push {lr} + bl sub_0807F36C + movs r0, #0xe5 + bl sub_080A3268 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F3D8 +sub_0807F3D8: @ 0x0807F3D8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + ldr r1, [r1, #4] + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + adds r4, #0x80 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807F3F8 +sub_0807F3F8: @ 0x0807F3F8 + push {lr} + ldr r0, _0807F408 @ =gLinkEntity + movs r2, #0x18 + rsbs r2, r2, #0 + movs r1, #8 + bl sub_080A2CFC + pop {pc} + .align 2, 0 +_0807F408: .4byte gLinkEntity + + thumb_func_start sub_0807F40C +sub_0807F40C: @ 0x0807F40C + push {lr} + ldr r0, _0807F41C @ =gLinkEntity + movs r2, #0x18 + rsbs r2, r2, #0 + movs r1, #8 + bl sub_080A2D0C + pop {pc} + .align 2, 0 +_0807F41C: .4byte gLinkEntity + + thumb_func_start sub_0807F420 +sub_0807F420: @ 0x0807F420 + push {lr} + ldr r2, [r1, #4] + ldrb r0, [r1, #4] + lsrs r2, r2, #8 + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + adds r1, r2, #0 + bl sub_080A7138 + pop {pc} + + thumb_func_start sub_0807F434 +sub_0807F434: @ 0x0807F434 + push {lr} + adds r3, r0, #0 + adds r3, #0x39 + movs r2, #0 + ldrsb r2, [r3, r2] + cmp r2, #1 + beq _0807F44C + cmp r2, #2 + beq _0807F44C + movs r0, #0 + str r0, [r1, #4] + b _0807F452 +_0807F44C: + movs r0, #0 + strb r0, [r3] + str r2, [r1, #4] +_0807F452: + ldr r2, _0807F460 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807F460: .4byte gUnk_02033280 + + thumb_func_start sub_0807F464 +sub_0807F464: @ 0x0807F464 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _0807F4BC + adds r0, #1 + movs r3, #0 + strb r0, [r5, #0x18] + ldr r0, [r5, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r5, #8] + ldr r2, [r5, #4] + ldr r1, _0807F4A8 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, r0, r2 + strh r0, [r5, #0x1e] + ldrh r0, [r4, #0x32] + strh r0, [r5, #0x22] + movs r6, #0x2e + ldrsh r0, [r4, r6] + ldrh r1, [r1, #6] + subs r0, r0, r1 + cmp r2, r0 + ble _0807F4AC + movs r0, #0x40 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + movs r0, #0x80 + ands r0, r1 + movs r1, #2 + b _0807F4B8 + .align 2, 0 +_0807F4A8: .4byte gUnk_03000BF0 +_0807F4AC: + movs r0, #0xc0 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + movs r0, #0x80 + ands r0, r1 + movs r1, #6 +_0807F4B8: + orrs r0, r1 + strb r0, [r4, #0x14] +_0807F4BC: + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + movs r2, #0x1e + ldrsh r1, [r5, r2] + movs r6, #0x2e + ldrsh r0, [r4, r6] + subs r1, r1, r0 + ldrb r2, [r4, #0x15] + movs r0, #0x80 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r0, r0, #0x18 + eors r1, r0 + cmp r1, #0 + bge _0807F4EA + ldrh r0, [r5, #0x1e] + strh r0, [r4, #0x2e] + b _0807F4F0 +_0807F4EA: + ldr r1, _0807F4F4 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807F4F0: + pop {r4, r5, r6, pc} + .align 2, 0 +_0807F4F4: .4byte gUnk_02033280 + + thumb_func_start sub_0807F4F8 +sub_0807F4F8: @ 0x0807F4F8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r0, [r5, #0x18] + cmp r0, #0 + bne _0807F548 + adds r0, #1 + strb r0, [r5, #0x18] + ldr r0, [r5, #8] + movs r1, #2 + orrs r0, r1 + str r0, [r5, #8] + ldr r2, [r5, #4] + ldrh r0, [r4, #0x2e] + strh r0, [r5, #0x1e] + ldr r1, _0807F538 @ =gUnk_03000BF0 + ldrh r0, [r1, #8] + adds r0, r0, r2 + strh r0, [r5, #0x22] + movs r3, #0x32 + ldrsh r0, [r4, r3] + ldrh r1, [r1, #8] + subs r0, r0, r1 + cmp r2, r0 + ble _0807F53C + movs r0, #0x80 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + ands r0, r1 + movs r1, #4 + orrs r0, r1 + b _0807F546 + .align 2, 0 +_0807F538: .4byte gUnk_03000BF0 +_0807F53C: + movs r0, #0 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x14] + movs r0, #0x80 + ands r0, r1 +_0807F546: + strb r0, [r4, #0x14] +_0807F548: + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + movs r2, #0x22 + ldrsh r1, [r5, r2] + movs r3, #0x32 + ldrsh r0, [r4, r3] + subs r1, r1, r0 + ldrb r2, [r4, #0x15] + movs r0, #0x80 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r0, r0, #0x18 + eors r1, r0 + cmp r1, #0 + blt _0807F576 + ldrh r0, [r5, #0x22] + strh r0, [r4, #0x32] + b _0807F57C +_0807F576: + ldr r1, _0807F580 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807F57C: + pop {r4, r5, pc} + .align 2, 0 +_0807F580: .4byte gUnk_02033280 + + thumb_func_start sub_0807F584 +sub_0807F584: @ 0x0807F584 + ldr r0, _0807F590 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + str r0, [r1, #4] + bx lr + .align 2, 0 +_0807F590: .4byte gLinkEntity + + thumb_func_start sub_0807F594 +sub_0807F594: @ 0x0807F594 + push {lr} + ldr r0, _0807F5A8 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0 + beq _0807F5A6 + ldr r1, _0807F5AC @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807F5A6: + pop {pc} + .align 2, 0 +_0807F5A8: .4byte gUnk_03003F80 +_0807F5AC: .4byte gUnk_02033280 + + thumb_func_start sub_0807F5B0 +sub_0807F5B0: @ 0x0807F5B0 + ldr r0, _0807F5BC @ =gUnk_03003F80 + ldr r1, [r1, #4] + adds r0, #0x27 + strb r1, [r0] + bx lr + .align 2, 0 +_0807F5BC: .4byte gUnk_03003F80 + + thumb_func_start sub_0807F5C0 +sub_0807F5C0: @ 0x0807F5C0 + push {r4, lr} + ldr r4, _0807F620 @ =gUnk_03000BF0 + ldr r1, [r4, #0x30] + cmp r1, #0 + beq _0807F62E + movs r2, #0x2e + ldrsh r0, [r1, r2] + adds r2, r0, #0 + subs r2, #0x78 + movs r3, #0x32 + ldrsh r0, [r1, r3] + adds r3, r0, #0 + subs r3, #0x50 + ldrh r1, [r4, #6] + cmp r2, r1 + bge _0807F5E2 + adds r2, r1, #0 +_0807F5E2: + ldrh r0, [r4, #0x1e] + adds r0, r1, r0 + subs r0, #0xf0 + cmp r2, r0 + ble _0807F5EE + adds r2, r0, #0 +_0807F5EE: + ldrh r1, [r4, #8] + cmp r3, r1 + bge _0807F5F6 + adds r3, r1, #0 +_0807F5F6: + ldrh r0, [r4, #0x20] + adds r0, r1, r0 + subs r0, #0xa0 + cmp r3, r0 + ble _0807F602 + adds r3, r0, #0 +_0807F602: + movs r1, #0xa + ldrsh r0, [r4, r1] + cmp r2, r0 + bne _0807F628 + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r3, r0 + bne _0807F628 + ldr r2, _0807F624 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + b _0807F62E + .align 2, 0 +_0807F620: .4byte gUnk_03000BF0 +_0807F624: .4byte gUnk_02033280 +_0807F628: + ldr r1, _0807F630 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807F62E: + pop {r4, pc} + .align 2, 0 +_0807F630: .4byte gUnk_02033280 + + thumb_func_start sub_0807F634 +sub_0807F634: @ 0x0807F634 + push {lr} + ldr r3, [r1, #4] + ldrh r1, [r3] + ldrh r2, [r3, #2] + ldrh r3, [r3, #4] + bl sub_0801DFB4 + ldr r0, _0807F64C @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + pop {pc} + .align 2, 0 +_0807F64C: .4byte gUnk_03003F80 + + thumb_func_start sub_0807F650 +sub_0807F650: @ 0x0807F650 + push {r4, lr} + adds r4, r0, #0 + bl sub_08002632 + ldr r1, _0807F678 @ =gUnk_08001A7C + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r1, [r0] + ldrh r2, [r0, #2] + ldrh r3, [r0, #4] + adds r0, r4, #0 + bl sub_0801DFB4 + ldr r0, _0807F67C @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #3 + strb r1, [r0] + pop {r4, pc} + .align 2, 0 +_0807F678: .4byte gUnk_08001A7C +_0807F67C: .4byte gUnk_03003F80 + + thumb_func_start sub_0807F680 +sub_0807F680: @ 0x0807F680 + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldr r0, _0807F6A8 @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r0, r1] + ldr r1, _0807F6AC @ =gUnk_03000BF0 + ldrh r1, [r1, #6] + subs r0, r0, r1 + ldrh r1, [r2, #4] + cmp r0, r1 + ble _0807F69A + movs r3, #1 +_0807F69A: + str r3, [r2, #0x14] + ldr r2, _0807F6B0 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807F6A8: .4byte gLinkEntity +_0807F6AC: .4byte gUnk_03000BF0 +_0807F6B0: .4byte gUnk_02033280 + + thumb_func_start sub_0807F6B4 +sub_0807F6B4: @ 0x0807F6B4 + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldr r0, _0807F6DC @ =gLinkEntity + movs r1, #0x32 + ldrsh r0, [r0, r1] + ldr r1, _0807F6E0 @ =gUnk_03000BF0 + ldrh r1, [r1, #8] + subs r0, r0, r1 + ldrh r1, [r2, #4] + cmp r0, r1 + ble _0807F6CE + movs r3, #1 +_0807F6CE: + str r3, [r2, #0x14] + ldr r2, _0807F6E4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807F6DC: .4byte gLinkEntity +_0807F6E0: .4byte gUnk_03000BF0 +_0807F6E4: .4byte gUnk_02033280 + + thumb_func_start sub_0807F6E8 +sub_0807F6E8: @ 0x0807F6E8 + ldr r2, _0807F6F4 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, [r1, #4] + orrs r0, r1 + str r0, [r2, #0x30] + bx lr + .align 2, 0 +_0807F6F4: .4byte gUnk_03003F80 + + thumb_func_start sub_0807F6F8 +sub_0807F6F8: @ 0x0807F6F8 + ldr r2, _0807F704 @ =gUnk_03003F80 + ldr r1, [r1, #4] + ldr r0, [r2, #0x30] + bics r0, r1 + str r0, [r2, #0x30] + bx lr + .align 2, 0 +_0807F704: .4byte gUnk_03003F80 + + thumb_func_start sub_0807F708 +sub_0807F708: @ 0x0807F708 + push {lr} + ldr r1, [r1, #4] + bl sub_0806F1AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F714 +sub_0807F714: @ 0x0807F714 + push {lr} + adds r1, r0, #0 + ldr r2, _0807F734 @ =gUnk_08114F30 + ldrb r3, [r1, #0x19] + lsrs r0, r3, #6 + adds r0, r0, r2 + ldrb r2, [r0] + lsls r2, r2, #6 + movs r0, #0x3f + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0x19] + adds r0, r1, #0 + bl sub_0806FAB0 + pop {pc} + .align 2, 0 +_0807F734: .4byte gUnk_08114F30 + + thumb_func_start sub_0807F738 +sub_0807F738: @ 0x0807F738 + push {lr} + adds r1, r0, #0 + ldr r2, _0807F758 @ =gUnk_08114F34 + ldrb r3, [r1, #0x19] + lsrs r0, r3, #6 + adds r0, r0, r2 + ldrb r2, [r0] + lsls r2, r2, #6 + movs r0, #0x3f + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0x19] + adds r0, r1, #0 + bl sub_0806FAD8 + pop {pc} + .align 2, 0 +_0807F758: .4byte gUnk_08114F34 + + thumb_func_start sub_0807F75C +sub_0807F75C: @ 0x0807F75C + push {r4, lr} + ldr r2, [r1, #4] + ldr r3, _0807F774 @ =gLinkEntity + ldr r1, _0807F778 @ =gUnk_03000BF0 + asrs r0, r2, #0x10 + ldrh r4, [r1, #6] + adds r0, r0, r4 + strh r0, [r3, #0x2e] + ldrh r0, [r1, #8] + adds r0, r0, r2 + strh r0, [r3, #0x32] + pop {r4, pc} + .align 2, 0 +_0807F774: .4byte gLinkEntity +_0807F778: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807F77C +sub_0807F77C: @ 0x0807F77C + push {lr} + ldr r0, [r1, #0x14] + cmp r0, #0 + beq _0807F786 + movs r0, #1 +_0807F786: + str r0, [r1, #4] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F78C +sub_0807F78C: @ 0x0807F78C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r5, [r1, #4] + cmp r5, #0 + bne _0807F79A + ldr r0, _0807F7BC @ =gUnk_02034350 + ldrb r5, [r0, #6] +_0807F79A: + adds r0, r5, #0 + bl sub_08053FD0 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_08053FE0 + adds r5, r0, #0 + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_08056398 + ldr r0, _0807F7C0 @ =gUnk_02000050 + lsls r5, r5, #0x10 + lsrs r5, r5, #0x10 + str r5, [r0, #0x10] + pop {r4, r5, r6, pc} + .align 2, 0 +_0807F7BC: .4byte gUnk_02034350 +_0807F7C0: .4byte gUnk_02000050 + + thumb_func_start sub_0807F7C4 +sub_0807F7C4: @ 0x0807F7C4 + push {r4, lr} + adds r4, r1, #0 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0807F7D2 + ldr r0, _0807F7F4 @ =gUnk_02034350 + ldrb r0, [r0, #6] +_0807F7D2: + bl sub_08053FE0 + movs r2, #0 + ldr r1, _0807F7F8 @ =gUnk_02002A40 + adds r1, #0xc0 + ldrh r1, [r1] + cmp r0, r1 + bgt _0807F7E4 + movs r2, #1 +_0807F7E4: + str r2, [r4, #0x14] + ldr r2, _0807F7FC @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807F7F4: .4byte gUnk_02034350 +_0807F7F8: .4byte gUnk_02002A40 +_0807F7FC: .4byte gUnk_02033280 + + thumb_func_start sub_0807F800 +sub_0807F800: @ 0x0807F800 + push {r4, lr} + ldr r4, [r1, #4] + cmp r4, #0 + bne _0807F80C + ldr r0, _0807F834 @ =gUnk_02034350 + ldrb r4, [r0, #6] +_0807F80C: + adds r0, r4, #0 + bl sub_08053FE0 + rsbs r0, r0, #0 + bl sub_080526CC + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_080A7C18 + ldr r1, _0807F834 @ =gUnk_02034350 + movs r0, #0 + strb r0, [r1, #6] + ldr r2, _0807F838 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_0807F834: .4byte gUnk_02034350 +_0807F838: .4byte gUnk_02033280 + + thumb_func_start sub_0807F83C +sub_0807F83C: @ 0x0807F83C + push {lr} + bl sub_08079184 + pop {pc} + + thumb_func_start sub_0807F844 +sub_0807F844: @ 0x0807F844 + push {lr} + ldr r1, _0807F850 @ =gUnk_03000BF0 + str r0, [r1, #0x30] + bl sub_080809D4 + pop {pc} + .align 2, 0 +_0807F850: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807F854 +sub_0807F854: @ 0x0807F854 + push {lr} + ldr r1, [r1, #4] + lsrs r2, r1, #0x10 + movs r0, #3 + ands r2, r0 + ldr r3, _0807F870 @ =0x0000FFFF + ands r3, r1 + cmp r2, #4 + bhi _0807F8B4 + lsls r0, r2, #2 + ldr r1, _0807F874 @ =_0807F878 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807F870: .4byte 0x0000FFFF +_0807F874: .4byte _0807F878 +_0807F878: @ jump table + .4byte _0807F88C @ case 0 + .4byte _0807F88C @ case 1 + .4byte _0807F898 @ case 2 + .4byte _0807F8A4 @ case 3 + .4byte _0807F8B0 @ case 4 +_0807F88C: + ldr r0, _0807F894 @ =gUnk_02000050 + str r3, [r0, #0x10] + b _0807F8B4 + .align 2, 0 +_0807F894: .4byte gUnk_02000050 +_0807F898: + ldr r0, _0807F8A0 @ =gUnk_02000050 + str r3, [r0, #0x14] + b _0807F8B4 + .align 2, 0 +_0807F8A0: .4byte gUnk_02000050 +_0807F8A4: + ldr r0, _0807F8AC @ =gUnk_02000050 + str r3, [r0, #0x18] + b _0807F8B4 + .align 2, 0 +_0807F8AC: .4byte gUnk_02000050 +_0807F8B0: + ldr r0, _0807F8B8 @ =gUnk_02000050 + str r3, [r0, #0x1c] +_0807F8B4: + pop {pc} + .align 2, 0 +_0807F8B8: .4byte gUnk_02000050 + + thumb_func_start sub_0807F8BC +sub_0807F8BC: @ 0x0807F8BC + push {r4, lr} + adds r4, r1, #0 + bl sub_080040A8 + cmp r0, #0 + beq _0807F8CA + movs r0, #1 +_0807F8CA: + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0807F8D0 +sub_0807F8D0: @ 0x0807F8D0 + push {lr} + ldr r1, [r1, #4] + bl sub_08003FC4 + ldr r2, _0807F8E4 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {pc} + .align 2, 0 +_0807F8E4: .4byte gUnk_02033280 + + thumb_func_start sub_0807F8E8 +sub_0807F8E8: @ 0x0807F8E8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0xa6 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r2, r0, #0 + cmp r2, #0 + beq _0807F912 + str r4, [r2, #0x50] + ldr r0, [r5, #4] + ldr r1, _0807F914 @ =0x000003FF + ands r0, r1 + movs r3, #0x80 + lsls r3, r3, #8 + adds r1, r3, #0 + adds r2, #0x86 + orrs r0, r1 + strh r0, [r2] +_0807F912: + pop {r4, r5, pc} + .align 2, 0 +_0807F914: .4byte 0x000003FF + + thumb_func_start sub_0807F918 +sub_0807F918: @ 0x0807F918 + push {lr} + ldr r0, [r1, #4] + bl sub_08054398 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F924 +sub_0807F924: @ 0x0807F924 + push {lr} + bl sub_0807879C + pop {pc} + + thumb_func_start sub_0807F92C +sub_0807F92C: @ 0x0807F92C + push {lr} + bl sub_080787C0 + pop {pc} + + thumb_func_start sub_0807F934 +sub_0807F934: @ 0x0807F934 + push {lr} + bl sub_080787B4 + pop {pc} + + thumb_func_start sub_0807F93C +sub_0807F93C: @ 0x0807F93C + push {lr} + ldr r2, [r1, #4] + lsrs r1, r2, #8 + movs r3, #0xff + ands r1, r3 + ands r2, r3 + bl sub_080A2D1C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807F950 +sub_0807F950: @ 0x0807F950 + push {lr} + sub sp, #4 + movs r0, #2 + str r0, [sp] + movs r0, #6 + movs r1, #0x56 + movs r2, #6 + movs r3, #0 + bl sub_0805EB2C + cmp r0, #0 + beq _0807F96C + bl sub_0805E7BC +_0807F96C: + add sp, #4 + pop {pc} + + thumb_func_start sub_0807F970 +sub_0807F970: @ 0x0807F970 + push {lr} + adds r2, r1, #0 + movs r3, #0 + ldr r1, _0807F988 @ =gUnk_02022780 + ldr r0, [r2, #4] + ldrh r1, [r1, #0x28] + cmp r0, r1 + bne _0807F982 + movs r3, #1 +_0807F982: + str r3, [r2, #0x14] + pop {pc} + .align 2, 0 +_0807F988: .4byte gUnk_02022780 + + thumb_func_start sub_0807F98C +sub_0807F98C: @ 0x0807F98C + ldr r1, [r1, #4] + str r1, [r0, #0x34] + bx lr + .align 2, 0 + + thumb_func_start sub_0807F994 +sub_0807F994: @ 0x0807F994 + ldr r2, [r1, #4] + asrs r1, r2, #0x10 + adds r3, r0, #0 + adds r3, #0x62 + strb r1, [r3] + adds r0, #0x63 + strb r2, [r0] + bx lr + + thumb_func_start sub_0807F9A4 +sub_0807F9A4: @ 0x0807F9A4 + push {lr} + ldr r0, _0807F9BC @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + subs r0, #5 + cmp r0, #0x17 + bhi _0807FA30 + lsls r0, r0, #2 + ldr r1, _0807F9C0 @ =_0807F9C4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807F9BC: .4byte gUnk_03003F80 +_0807F9C0: .4byte _0807F9C4 +_0807F9C4: @ jump table + .4byte _0807FA24 @ case 0 + .4byte _0807FA30 @ case 1 + .4byte _0807FA24 @ case 2 + .4byte _0807FA24 @ case 3 + .4byte _0807FA30 @ case 4 + .4byte _0807FA24 @ case 5 + .4byte _0807FA24 @ case 6 + .4byte _0807FA24 @ case 7 + .4byte _0807FA24 @ case 8 + .4byte _0807FA24 @ case 9 + .4byte _0807FA24 @ case 10 + .4byte _0807FA24 @ case 11 + .4byte _0807FA24 @ case 12 + .4byte _0807FA24 @ case 13 + .4byte _0807FA24 @ case 14 + .4byte _0807FA24 @ case 15 + .4byte _0807FA24 @ case 16 + .4byte _0807FA24 @ case 17 + .4byte _0807FA24 @ case 18 + .4byte _0807FA24 @ case 19 + .4byte _0807FA30 @ case 20 + .4byte _0807FA30 @ case 21 + .4byte _0807FA24 @ case 22 + .4byte _0807FA24 @ case 23 +_0807FA24: + ldr r1, _0807FA2C @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + b _0807FA3A + .align 2, 0 +_0807FA2C: .4byte gUnk_02033280 +_0807FA30: + ldr r2, _0807FA3C @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] +_0807FA3A: + pop {pc} + .align 2, 0 +_0807FA3C: .4byte gUnk_02033280 + + thumb_func_start sub_0807FA40 +sub_0807FA40: @ 0x0807FA40 + push {lr} + ldr r0, _0807FA58 @ =gUnk_03003F80 + adds r0, #0xa8 + ldrb r0, [r0] + subs r0, #5 + cmp r0, #0x17 + bhi _0807FACC + lsls r0, r0, #2 + ldr r1, _0807FA5C @ =_0807FA60 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0807FA58: .4byte gUnk_03003F80 +_0807FA5C: .4byte _0807FA60 +_0807FA60: @ jump table + .4byte _0807FAC0 @ case 0 + .4byte _0807FACC @ case 1 + .4byte _0807FAC0 @ case 2 + .4byte _0807FAC0 @ case 3 + .4byte _0807FACC @ case 4 + .4byte _0807FAC0 @ case 5 + .4byte _0807FAC0 @ case 6 + .4byte _0807FAC0 @ case 7 + .4byte _0807FAC0 @ case 8 + .4byte _0807FAC0 @ case 9 + .4byte _0807FAC0 @ case 10 + .4byte _0807FAC0 @ case 11 + .4byte _0807FAC0 @ case 12 + .4byte _0807FAC0 @ case 13 + .4byte _0807FACC @ case 14 + .4byte _0807FAC0 @ case 15 + .4byte _0807FAC0 @ case 16 + .4byte _0807FAC0 @ case 17 + .4byte _0807FAC0 @ case 18 + .4byte _0807FAC0 @ case 19 + .4byte _0807FACC @ case 20 + .4byte _0807FACC @ case 21 + .4byte _0807FAC0 @ case 22 + .4byte _0807FAC0 @ case 23 +_0807FAC0: + ldr r1, _0807FAC8 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] + b _0807FAD6 + .align 2, 0 +_0807FAC8: .4byte gUnk_02033280 +_0807FACC: + ldr r2, _0807FAD8 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] +_0807FAD6: + pop {pc} + .align 2, 0 +_0807FAD8: .4byte gUnk_02033280 + + thumb_func_start sub_0807FADC +sub_0807FADC: @ 0x0807FADC + push {r4, lr} + adds r2, r0, #0 + adds r4, r1, #0 + ldrb r0, [r4, #0x18] + cmp r0, #1 + beq _0807FB06 + cmp r0, #1 + bgt _0807FAF2 + cmp r0, #0 + beq _0807FAF8 + b _0807FB1C +_0807FAF2: + cmp r0, #2 + beq _0807FB16 + b _0807FB1C +_0807FAF8: + movs r0, #1 + strb r0, [r4, #0x18] + ldr r1, [r4, #4] + adds r0, r2, #0 + bl sub_0808C650 + b _0807FB1C +_0807FB06: + bl sub_0808C67C + cmp r0, #0 + beq _0807FB1C + ldrb r0, [r4, #0x18] + adds r0, #1 + strb r0, [r4, #0x18] + b _0807FB1C +_0807FB16: + bl sub_0808C688 + b _0807FB22 +_0807FB1C: + ldr r1, _0807FB24 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807FB22: + pop {r4, pc} + .align 2, 0 +_0807FB24: .4byte gUnk_02033280 + + thumb_func_start sub_0807FB28 +sub_0807FB28: @ 0x0807FB28 + push {r4, lr} + adds r4, r1, #0 + ldrb r0, [r4, #0x18] + cmp r0, #0 + bne _0807FB3A + ldr r0, _0807FB54 @ =0x00007FFF + movs r1, #1 + bl sub_0801D7BC +_0807FB3A: + ldrb r0, [r4, #0x18] + adds r0, #1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x18] + ldr r0, [r4, #4] + cmp r1, r0 + blo _0807FB58 + movs r0, #0 + movs r1, #0 + bl sub_0801D7BC + b _0807FB5E + .align 2, 0 +_0807FB54: .4byte 0x00007FFF +_0807FB58: + ldr r1, _0807FB60 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807FB5E: + pop {r4, pc} + .align 2, 0 +_0807FB60: .4byte gUnk_02033280 + + thumb_func_start sub_0807FB64 +sub_0807FB64: @ 0x0807FB64 + ldr r0, _0807FB70 @ =gLinkEntity + ldr r1, [r1, #4] + adds r0, #0x3d + strb r1, [r0] + bx lr + .align 2, 0 +_0807FB70: .4byte gLinkEntity + + thumb_func_start sub_0807FB74 +sub_0807FB74: @ 0x0807FB74 + ldr r0, _0807FB8C @ =gUnk_03003F80 + adds r0, #0x26 + movs r1, #0 + strb r1, [r0] + ldr r1, _0807FB90 @ =gLinkEntity + adds r1, #0x3c + ldrb r2, [r1] + movs r0, #0xfb + ands r0, r2 + strb r0, [r1] + bx lr + .align 2, 0 +_0807FB8C: .4byte gUnk_03003F80 +_0807FB90: .4byte gLinkEntity + + thumb_func_start sub_0807FB94 +sub_0807FB94: @ 0x0807FB94 + push {lr} + movs r0, #4 + bl sub_08056010 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0807FBA0 +sub_0807FBA0: @ 0x0807FBA0 + ldr r2, _0807FBB0 @ =gUnk_03000BF0 + ldrh r1, [r2, #0xa] + adds r1, #0x78 + strh r1, [r0, #0x2e] + ldrh r1, [r2, #0xc] + adds r1, #0x50 + strh r1, [r0, #0x32] + bx lr + .align 2, 0 +_0807FBB0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807FBB4 +sub_0807FBB4: @ 0x0807FBB4 + ldr r2, _0807FBC0 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1a] + bx lr + .align 2, 0 +_0807FBC0: .4byte gUnk_03003F80 + + thumb_func_start sub_0807FBC4 +sub_0807FBC4: @ 0x0807FBC4 + push {lr} + bl sub_0805E4A0 + pop {pc} + + thumb_func_start sub_0807FBCC +sub_0807FBCC: @ 0x0807FBCC + push {lr} + bl sub_0805E4CC + pop {pc} + + thumb_func_start sub_0807FBD4 +sub_0807FBD4: @ 0x0807FBD4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + beq _0807FBF4 + ldr r1, _0807FBF8 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0807FBF4: + pop {r4, pc} + .align 2, 0 +_0807FBF8: .4byte gUnk_02033280 + + thumb_func_start sub_0807FBFC +sub_0807FBFC: @ 0x0807FBFC + ldr r3, _0807FC20 @ =gUnk_02002A40 + adds r0, r3, #0 + adds r0, #0xb2 + movs r1, #0 + strb r1, [r0] + adds r0, #0x12 + movs r2, #0 + strh r1, [r0] + subs r0, #0x11 + strb r2, [r0] + adds r0, #0x13 + strh r1, [r0] + subs r0, #0xc + strb r2, [r0] + adds r0, #0xe + strh r1, [r0] + bx lr + .align 2, 0 +_0807FC20: .4byte gUnk_02002A40 + + thumb_func_start sub_0807FC24 +sub_0807FC24: @ 0x0807FC24 + push {lr} + ldr r0, _0807FC3C @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + movs r1, #0xd1 + cmp r0, #1 + bne _0807FC32 + movs r1, #0xcf +_0807FC32: + adds r0, r1, #0 + bl sub_0807CCB4 + pop {pc} + .align 2, 0 +_0807FC3C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0807FC40 +sub_0807FC40: @ 0x0807FC40 + push {lr} + ldr r0, _0807FC5C @ =gUnk_03000BF0 + ldrb r2, [r0, #0xf] + movs r1, #0xfb + ands r1, r2 + strb r1, [r0, #0xf] + ldr r2, _0807FC60 @ =gUnk_0811E768 + ldrb r1, [r0, #2] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807FC5C: .4byte gUnk_03000BF0 +_0807FC60: .4byte gUnk_0811E768 + + thumb_func_start sub_0807FC64 +sub_0807FC64: @ 0x0807FC64 + push {lr} + movs r2, #0 + movs r1, #1 + strb r1, [r0, #2] + strh r2, [r0] + movs r1, #4 + strb r1, [r0, #0xe] + bl sub_0807FC7C + bl sub_080805F8 + pop {pc} + + thumb_func_start sub_0807FC7C +sub_0807FC7C: @ 0x0807FC7C + push {r4, r5, r6, r7, lr} + adds r2, r0, #0 + ldr r0, [r2, #0x30] + cmp r0, #0 + bne _0807FC88 + b _0807FDA6 +_0807FC88: + movs r1, #0xa + ldrsh r4, [r2, r1] + movs r1, #0x2e + ldrsh r0, [r0, r1] + subs r0, #0x78 + subs r3, r4, r0 + cmp r3, #0 + beq _0807FD16 + ldrh r6, [r2, #0xa] + movs r7, #7 + ands r7, r6 + mov ip, r6 + cmp r3, #0 + ble _0807FCDC + ldrh r0, [r2, #6] + adds r5, r0, #0 + cmp r5, r4 + bge _0807FD16 + ldrb r0, [r2, #0xe] + cmp r0, r3 + bgt _0807FCBC + adds r3, r0, #0 + ldrb r1, [r2, #0xf] + movs r0, #4 + orrs r0, r1 + strb r0, [r2, #0xf] +_0807FCBC: + mov r1, ip + subs r0, r1, r3 + strh r0, [r2, #0xa] + subs r0, r7, r3 + cmp r0, #0 + bgt _0807FCCE + ldr r1, _0807FCD8 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] +_0807FCCE: + movs r1, #0xa + ldrsh r0, [r2, r1] + cmp r5, r0 + blt _0807FD16 + b _0807FD14 + .align 2, 0 +_0807FCD8: .4byte gUnk_02000070 +_0807FCDC: + ldrh r0, [r2, #6] + ldrh r1, [r2, #0x1e] + adds r0, r0, r1 + adds r5, r0, #0 + subs r5, #0xf0 + cmp r4, r5 + bge _0807FD16 + ldrb r0, [r2, #0xe] + rsbs r0, r0, #0 + cmp r0, r3 + blt _0807FCFC + adds r3, r0, #0 + ldrb r1, [r2, #0xf] + movs r0, #4 + orrs r0, r1 + strb r0, [r2, #0xf] +_0807FCFC: + subs r0, r6, r3 + strh r0, [r2, #0xa] + subs r0, r7, r3 + cmp r0, #7 + ble _0807FD0C + ldr r1, _0807FD68 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] +_0807FD0C: + movs r1, #0xa + ldrsh r0, [r2, r1] + cmp r0, r5 + blt _0807FD16 +_0807FD14: + strh r5, [r2, #0xa] +_0807FD16: + movs r0, #0xc + ldrsh r4, [r2, r0] + ldr r0, [r2, #0x30] + movs r1, #0x32 + ldrsh r0, [r0, r1] + subs r0, #0x50 + subs r3, r4, r0 + cmp r3, #0 + beq _0807FDA6 + ldrh r6, [r2, #0xc] + movs r7, #7 + ands r7, r6 + mov ip, r6 + cmp r3, #0 + ble _0807FD6C + ldrh r0, [r2, #8] + adds r5, r0, #0 + cmp r5, r4 + bge _0807FDA6 + ldrb r0, [r2, #0xe] + cmp r0, r3 + bgt _0807FD4C + adds r3, r0, #0 + ldrb r1, [r2, #0xf] + movs r0, #4 + orrs r0, r1 + strb r0, [r2, #0xf] +_0807FD4C: + mov r1, ip + subs r0, r1, r3 + strh r0, [r2, #0xc] + subs r0, r7, r3 + cmp r0, #0 + bgt _0807FD5E + ldr r1, _0807FD68 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] +_0807FD5E: + movs r1, #0xc + ldrsh r0, [r2, r1] + cmp r5, r0 + blt _0807FDA6 + b _0807FDA4 + .align 2, 0 +_0807FD68: .4byte gUnk_02000070 +_0807FD6C: + ldrh r0, [r2, #8] + ldrh r1, [r2, #0x20] + adds r0, r0, r1 + adds r5, r0, #0 + subs r5, #0xa0 + cmp r4, r5 + bge _0807FDA6 + ldrb r0, [r2, #0xe] + rsbs r0, r0, #0 + cmp r0, r3 + blt _0807FD8C + adds r3, r0, #0 + ldrb r1, [r2, #0xf] + movs r0, #4 + orrs r0, r1 + strb r0, [r2, #0xf] +_0807FD8C: + subs r0, r6, r3 + strh r0, [r2, #0xc] + subs r0, r7, r3 + cmp r0, #7 + ble _0807FD9C + ldr r1, _0807FDAC @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] +_0807FD9C: + movs r1, #0xc + ldrsh r0, [r2, r1] + cmp r0, r5 + blt _0807FDA6 +_0807FDA4: + strh r5, [r2, #0xc] +_0807FDA6: + bl sub_08080BC4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0807FDAC: .4byte gUnk_02000070 + + thumb_func_start sub_0807FDB0 +sub_0807FDB0: @ 0x0807FDB0 + push {lr} + ldr r2, _0807FDC4 @ =gUnk_0811E780 + ldrb r1, [r0, #3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807FDC4: .4byte gUnk_0811E780 + + thumb_func_start sub_0807FDC8 +sub_0807FDC8: @ 0x0807FDC8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _0807FDE0 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r4] + bl sub_08000108 + movs r1, #0 + movs r0, #1 + strb r0, [r5, #3] + strb r1, [r4] + pop {r4, r5, pc} + .align 2, 0 +_0807FDE0: .4byte gUnk_02000070 + + thumb_func_start sub_0807FDE4 +sub_0807FDE4: @ 0x0807FDE4 + movs r2, #0 + movs r1, #2 + strb r1, [r0, #3] + strh r2, [r0, #0x18] + ldr r0, _0807FDF4 @ =gUnk_02000070 + strb r1, [r0] + bx lr + .align 2, 0 +_0807FDF4: .4byte gUnk_02000070 + + thumb_func_start sub_0807FDF8 +sub_0807FDF8: @ 0x0807FDF8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0807FE18 @ =gUnk_02000070 + movs r0, #2 + strb r0, [r1] + ldrh r0, [r4, #0x18] + adds r0, #1 + strh r0, [r4, #0x18] + ldrb r0, [r4, #0x10] + cmp r0, #1 + beq _0807FE44 + cmp r0, #1 + bgt _0807FE1C + cmp r0, #0 + beq _0807FE26 + b _0807FEB6 + .align 2, 0 +_0807FE18: .4byte gUnk_02000070 +_0807FE1C: + cmp r0, #2 + beq _0807FE68 + cmp r0, #3 + beq _0807FE94 + b _0807FEB6 +_0807FE26: + ldrh r0, [r4, #0xc] + subs r0, #4 + strh r0, [r4, #0xc] + ldr r1, [r4, #0x30] + ldr r0, _0807FE3C @ =gLinkEntity + cmp r1, r0 + bne _0807FE80 + ldr r0, [r1, #0x30] + ldr r2, _0807FE40 @ =0xFFFFA000 + b _0807FE7C + .align 2, 0 +_0807FE3C: .4byte gLinkEntity +_0807FE40: .4byte 0xFFFFA000 +_0807FE44: + ldrh r0, [r4, #0xa] + adds r0, #4 + strh r0, [r4, #0xa] + ldr r1, [r4, #0x30] + ldr r0, _0807FE64 @ =gLinkEntity + cmp r1, r0 + bne _0807FE5C + ldr r0, [r1, #0x2c] + movs r2, #0x80 + lsls r2, r2, #7 + adds r0, r0, r2 + str r0, [r1, #0x2c] +_0807FE5C: + ldrh r0, [r4, #0x18] + cmp r0, #0x3c + bne _0807FEB6 + b _0807FE86 + .align 2, 0 +_0807FE64: .4byte gLinkEntity +_0807FE68: + ldrh r0, [r4, #0xc] + adds r0, #4 + strh r0, [r4, #0xc] + ldr r1, [r4, #0x30] + ldr r0, _0807FE90 @ =gLinkEntity + cmp r1, r0 + bne _0807FE80 + ldr r0, [r1, #0x30] + movs r2, #0xc0 + lsls r2, r2, #7 +_0807FE7C: + adds r0, r0, r2 + str r0, [r1, #0x30] +_0807FE80: + ldrh r0, [r4, #0x18] + cmp r0, #0x28 + bne _0807FEB6 +_0807FE86: + adds r0, r4, #0 + bl sub_0807FEC8 + b _0807FEB6 + .align 2, 0 +_0807FE90: .4byte gLinkEntity +_0807FE94: + ldrh r0, [r4, #0xa] + subs r0, #4 + strh r0, [r4, #0xa] + ldr r1, [r4, #0x30] + ldr r0, _0807FEC0 @ =gLinkEntity + cmp r1, r0 + bne _0807FEAA + ldr r0, [r1, #0x2c] + ldr r2, _0807FEC4 @ =0xFFFFC000 + adds r0, r0, r2 + str r0, [r1, #0x2c] +_0807FEAA: + ldrh r0, [r4, #0x18] + cmp r0, #0x3c + bne _0807FEB6 + adds r0, r4, #0 + bl sub_0807FEC8 +_0807FEB6: + movs r0, #0 + strh r0, [r4, #0x16] + bl sub_08080BC4 + pop {r4, pc} + .align 2, 0 +_0807FEC0: .4byte gLinkEntity +_0807FEC4: .4byte 0xFFFFC000 + + thumb_func_start sub_0807FEC8 +sub_0807FEC8: @ 0x0807FEC8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0 + strb r0, [r5, #2] + subs r0, #1 + ldr r4, _0807FEEC @ =gUnk_03003FC0 + adds r1, r4, #0 + movs r2, #0x40 + bl sub_0801D610 + subs r4, #0x40 + ldr r1, [r5, #0x30] + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x16] + ldrh r0, [r1, #0x32] + strh r0, [r4, #0x18] + pop {r4, r5, pc} + .align 2, 0 +_0807FEEC: .4byte gUnk_03003FC0 + + thumb_func_start sub_0807FEF0 +sub_0807FEF0: @ 0x0807FEF0 + push {lr} + ldr r2, _0807FF04 @ =gUnk_0811E78C + ldrb r1, [r0, #3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807FF04: .4byte gUnk_0811E78C + + thumb_func_start sub_0807FF08 +sub_0807FF08: @ 0x0807FF08 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #3] + strh r2, [r0, #0x18] + ldr r1, _0807FF18 @ =gUnk_02000070 + movs r0, #3 + strb r0, [r1] + bx lr + .align 2, 0 +_0807FF18: .4byte gUnk_02000070 + + thumb_func_start sub_0807FF1C +sub_0807FF1C: @ 0x0807FF1C + push {lr} + adds r2, r0, #0 + ldr r0, _0807FF4C @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0807FF48 + ldr r1, _0807FF50 @ =gUnk_02000070 + movs r0, #3 + strb r0, [r1] + ldrh r0, [r2, #0x18] + adds r0, #1 + strh r0, [r2, #0x18] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x13 + bls _0807FF48 + movs r0, #0 + strb r0, [r2, #2] + bl sub_0805E5B4 +_0807FF48: + pop {pc} + .align 2, 0 +_0807FF4C: .4byte gUnk_030010A0 +_0807FF50: .4byte gUnk_02000070 + + thumb_func_start sub_0807FF54 +sub_0807FF54: @ 0x0807FF54 + push {lr} + ldr r2, _0807FF68 @ =gUnk_0811E794 + ldrb r1, [r0, #3] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0807FF68: .4byte gUnk_0811E794 + + thumb_func_start sub_0807FF6C +sub_0807FF6C: @ 0x0807FF6C + push {r4, lr} + movs r1, #1 + strb r1, [r0, #3] + ldr r3, _0807FFC8 @ =gUnk_03000F50 + ldrh r1, [r3] + movs r2, #0x80 + lsls r2, r2, #7 + adds r0, r2, #0 + orrs r0, r1 + strh r0, [r3] + adds r2, r3, #0 + adds r2, #0x60 + ldrb r0, [r2] + movs r4, #0xb8 + lsls r4, r4, #5 + adds r1, r4, #0 + orrs r0, r1 + strh r0, [r2] + adds r2, #2 + ldrh r1, [r2] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + movs r1, #7 + movs r4, #0 + orrs r0, r1 + strh r0, [r2] + adds r0, r3, #0 + adds r0, #0x5a + movs r1, #0xf0 + strh r1, [r0] + adds r0, #4 + strh r1, [r0] + bl sub_08077B2C + bl sub_080791D0 + ldr r0, _0807FFCC @ =gUnk_03004030 + ldrb r0, [r0, #8] + cmp r0, #0 + beq _0807FFD4 + ldr r1, _0807FFD0 @ =gLinkEntity + movs r0, #4 + strb r0, [r1, #0x14] + b _0807FFD8 + .align 2, 0 +_0807FFC8: .4byte gUnk_03000F50 +_0807FFCC: .4byte gUnk_03004030 +_0807FFD0: .4byte gLinkEntity +_0807FFD4: + ldr r0, _0807FFE0 @ =gLinkEntity + strb r4, [r0, #0x14] +_0807FFD8: + bl sub_080809D4 + pop {r4, pc} + .align 2, 0 +_0807FFE0: .4byte gLinkEntity + + thumb_func_start sub_0807FFE4 +sub_0807FFE4: @ 0x0807FFE4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #2 + strb r0, [r5, #3] + bl sub_080803D0 + adds r0, #6 + strh r0, [r5, #0x18] + ldr r4, _0808002C @ =gUnk_0200B640 + bl sub_08080278 + strh r0, [r4] + ldr r1, _08080030 @ =gUnk_08109194 + ldr r0, _08080034 @ =gUnk_03004030 + ldr r0, [r0] + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0] + bl sub_080197D4 + ldr r4, _08080038 @ =gUnk_0200B654 + ldrh r1, [r5, #0x1e] + lsrs r1, r1, #4 + ldrh r2, [r5, #0x20] + lsrs r2, r2, #4 + adds r0, r4, #0 + bl sub_0807C8B0 + ldr r0, _0808003C @ =gUnk_02002F00 + subs r4, #4 + adds r1, r4, #0 + bl sub_0801AB08 + pop {r4, r5, pc} + .align 2, 0 +_0808002C: .4byte gUnk_0200B640 +_08080030: .4byte gUnk_08109194 +_08080034: .4byte gUnk_03004030 +_08080038: .4byte gUnk_0200B654 +_0808003C: .4byte gUnk_02002F00 + + thumb_func_start sub_08080040 +sub_08080040: @ 0x08080040 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrh r4, [r5, #0x18] + subs r4, #6 + strh r4, [r5, #0x18] + ldrh r0, [r5, #0x18] + lsls r0, r0, #1 + movs r1, #3 + bl __divsi3 + strh r0, [r5, #0x1a] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #0x2a + bls _080800C6 + ldr r3, [r5, #0x30] + movs r1, #0x2e + ldrsh r0, [r3, r1] + movs r2, #0xa + ldrsh r1, [r5, r2] + subs r2, r0, r1 + ldrh r1, [r5, #0x18] + subs r0, r2, r1 + adds r7, r0, #0 + adds r7, #8 + cmp r7, #0 + bge _08080078 + movs r7, #0 +_08080078: + adds r0, r2, r1 + adds r6, r0, #0 + subs r6, #8 + cmp r6, #0xf0 + ble _08080084 + movs r6, #0xf0 +_08080084: + movs r1, #0x32 + ldrsh r0, [r3, r1] + movs r2, #0xc + ldrsh r1, [r5, r2] + subs r2, r0, r1 + ldrh r1, [r5, #0x1a] + subs r0, r2, r1 + adds r4, r0, #0 + adds r4, #8 + cmp r4, #0 + bge _0808009C + movs r4, #0 +_0808009C: + adds r0, r2, r1 + adds r3, r0, #0 + subs r3, #8 + cmp r3, #0xa0 + ble _080800A8 + movs r3, #0xa0 +_080800A8: + ldr r2, _080800F0 @ =gUnk_03000F50 + movs r1, #0xff + ands r7, r1 + lsls r0, r7, #8 + ands r6, r1 + orrs r0, r6 + adds r6, r2, #0 + adds r6, #0x5a + strh r0, [r6] + ands r4, r1 + lsls r0, r4, #8 + ands r3, r1 + orrs r0, r3 + adds r2, #0x5e + strh r0, [r2] +_080800C6: + ldrh r0, [r5, #0x18] + cmp r0, #0 + bne _080800FC + movs r0, #3 + strb r0, [r5, #3] + bl sub_0805E9F4 + bl sub_0807C810 + ldr r1, _080800F4 @ =gUnk_08109194 + ldr r0, _080800F8 @ =gUnk_03004030 + ldr r0, [r0] + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r0, [r0, #4] + bl sub_08080C80 + b _08080102 + .align 2, 0 +_080800F0: .4byte gUnk_03000F50 +_080800F4: .4byte gUnk_08109194 +_080800F8: .4byte gUnk_03004030 +_080800FC: + ldr r1, _08080104 @ =gUnk_02000070 + movs r0, #4 + strb r0, [r1] +_08080102: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08080104: .4byte gUnk_02000070 + + thumb_func_start sub_08080108 +sub_08080108: @ 0x08080108 + push {r4, r5, r6, lr} + movs r1, #4 + strb r1, [r0, #3] + ldr r5, _08080178 @ =gUnk_02025EB4 + movs r0, #0xc0 + lsls r0, r0, #6 + adds r1, r5, r0 + movs r6, #0x80 + lsls r6, r6, #6 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0801D66C + ldr r4, _0808017C @ =gUnk_0200B654 + movs r0, #0xc0 + lsls r0, r0, #6 + adds r1, r4, r0 + adds r0, r4, #0 + adds r2, r6, #0 + bl sub_0801D66C + bl sub_08080368 + ldr r1, _08080180 @ =gUnk_02034480 + ldr r0, _08080184 @ =gUnk_0200B640 + ldrh r0, [r0] + strh r0, [r1] + ldr r0, _08080188 @ =gUnk_02022830 + ldr r1, _0808018C @ =gUnk_020246B0 + movs r2, #0xc0 + lsls r2, r2, #5 + bl sub_0801D66C + subs r5, #4 + adds r0, r5, #0 + bl sub_08080B60 + subs r4, #4 + adds r0, r4, #0 + bl sub_08080B60 + bl sub_0807BBE4 + bl sub_0807BC84 + bl sub_0805E248 + ldr r0, _08080190 @ =gUnk_02019EE0 + adds r1, r5, #0 + bl sub_0801AB08 + ldr r0, _08080194 @ =gUnk_02002F00 + adds r1, r4, #0 + bl sub_0801AB08 + pop {r4, r5, r6, pc} + .align 2, 0 +_08080178: .4byte gUnk_02025EB4 +_0808017C: .4byte gUnk_0200B654 +_08080180: .4byte gUnk_02034480 +_08080184: .4byte gUnk_0200B640 +_08080188: .4byte gUnk_02022830 +_0808018C: .4byte gUnk_020246B0 +_08080190: .4byte gUnk_02019EE0 +_08080194: .4byte gUnk_02002F00 + + thumb_func_start sub_08080198 +sub_08080198: @ 0x08080198 + push {r4, lr} + movs r1, #5 + strb r1, [r0, #3] + movs r4, #0 + movs r1, #0xff + strh r1, [r0, #0x1c] + bl LoadRoom + bl sub_0804AFF4 + ldr r0, _080801B8 @ =gUnk_02000070 + strb r4, [r0] + bl sub_080805F8 + pop {r4, pc} + .align 2, 0 +_080801B8: .4byte gUnk_02000070 + + thumb_func_start sub_080801BC +sub_080801BC: @ 0x080801BC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrh r4, [r5, #0x18] + adds r4, #6 + strh r4, [r5, #0x18] + ldrh r0, [r5, #0x18] + lsls r0, r0, #1 + movs r1, #3 + bl __divsi3 + strh r0, [r5, #0x1a] + lsls r4, r4, #0x10 + lsrs r4, r4, #0x10 + cmp r4, #0x1e + bls _08080232 + ldr r2, [r5, #0x30] + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r3, #0xa + ldrsh r0, [r5, r3] + subs r0, r1, r0 + ldrh r1, [r5, #0x18] + subs r7, r0, r1 + cmp r7, #0 + bge _080801F0 + movs r7, #0 +_080801F0: + adds r6, r0, r1 + cmp r6, #0xf0 + ble _080801F8 + movs r6, #0xf0 +_080801F8: + movs r0, #0x32 + ldrsh r1, [r2, r0] + movs r2, #0xc + ldrsh r0, [r5, r2] + subs r0, r1, r0 + ldrh r1, [r5, #0x1a] + subs r4, r0, r1 + cmp r4, #0 + bge _0808020C + movs r4, #0 +_0808020C: + adds r3, r0, r1 + cmp r3, #0xa0 + ble _08080214 + movs r3, #0xa0 +_08080214: + ldr r2, _08080260 @ =gUnk_03000F50 + movs r1, #0xff + ands r7, r1 + lsls r0, r7, #8 + ands r6, r1 + orrs r0, r6 + adds r6, r2, #0 + adds r6, #0x5a + strh r0, [r6] + ands r4, r1 + lsls r0, r4, #8 + ands r3, r1 + orrs r0, r3 + adds r2, #0x5e + strh r0, [r2] +_08080232: + ldrh r0, [r5, #0x1c] + cmp r0, #0 + bne _08080268 + strb r0, [r5, #2] + strh r0, [r5] + bl sub_0805E5B4 + ldr r1, _08080260 @ =gUnk_03000F50 + ldrh r2, [r1] + ldr r0, _08080264 @ =0x0000BFFF + ands r0, r2 + strh r0, [r1] + adds r2, r1, #0 + adds r2, #0x60 + ldrb r0, [r2] + strh r0, [r2] + adds r1, #0x62 + ldrh r2, [r1] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r2 + strh r0, [r1] + b _08080272 + .align 2, 0 +_08080260: .4byte gUnk_03000F50 +_08080264: .4byte 0x0000BFFF +_08080268: + ldr r0, _08080274 @ =gUnk_02000070 + movs r1, #4 + strb r1, [r0] + movs r0, #0 + strh r0, [r5, #0x1c] +_08080272: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08080274: .4byte gUnk_02000070 + + thumb_func_start sub_08080278 +sub_08080278: @ 0x08080278 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + ldr r0, _08080344 @ =gUnk_02022830 + mov ip, r0 + ldr r1, _08080348 @ =gUnk_03000BF0 + ldrh r0, [r1, #0x1e] + lsrs r0, r0, #4 + str r0, [sp] + ldrh r0, [r1, #0x20] + lsrs r0, r0, #4 + lsls r0, r0, #6 + str r0, [sp, #4] + movs r5, #0 + mov sl, r5 + cmp r5, r0 + bhs _08080336 + mov sb, r5 +_080802A2: + movs r1, #0 + mov r8, r1 + ldr r0, [sp] + cmp r8, r0 + bhs _08080328 + ldr r4, _0808034C @ =gUnk_0200B654 + add r4, sb + ldr r7, _08080350 @ =gUnk_0200E654 + add r7, sb + ldr r3, _08080354 @ =gUnk_02025EB4 + add r3, sb + ldr r6, _08080358 @ =gUnk_02028EB4 + add r6, sb +_080802BC: + mov r2, sl + add r2, r8 + ldrh r0, [r6] + ldrh r1, [r3] + cmp r0, r1 + beq _080802EA + ldr r0, _0808035C @ =0x00003FFF + cmp r1, r0 + bhi _080802EA + adds r0, #1 + adds r1, r0, #0 + adds r0, r2, #0 + orrs r0, r1 + mov r1, ip + strh r0, [r1] + ldrh r0, [r3] + strh r0, [r1, #2] + movs r0, #4 + add ip, r0 + adds r5, #1 + ldr r0, _08080360 @ =0x000005FF + cmp r5, r0 + bhi _08080336 +_080802EA: + ldrh r0, [r7] + ldrh r1, [r4] + cmp r0, r1 + beq _08080316 + ldr r0, _0808035C @ =0x00003FFF + cmp r1, r0 + bhi _08080316 + movs r1, #0x80 + lsls r1, r1, #8 + adds r0, r1, #0 + orrs r2, r0 + mov r0, ip + strh r2, [r0] + ldrh r0, [r4] + mov r1, ip + strh r0, [r1, #2] + movs r0, #4 + add ip, r0 + adds r5, #1 + ldr r0, _08080364 @ =0x000007FF + cmp r5, r0 + bhi _08080336 +_08080316: + adds r4, #2 + adds r7, #2 + adds r3, #2 + adds r6, #2 + movs r1, #1 + add r8, r1 + ldr r0, [sp] + cmp r8, r0 + blo _080802BC +_08080328: + movs r1, #0x80 + add sb, r1 + movs r0, #0x40 + add sl, r0 + ldr r1, [sp, #4] + cmp sl, r1 + blo _080802A2 +_08080336: + adds r0, r5, #0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08080344: .4byte gUnk_02022830 +_08080348: .4byte gUnk_03000BF0 +_0808034C: .4byte gUnk_0200B654 +_08080350: .4byte gUnk_0200E654 +_08080354: .4byte gUnk_02025EB4 +_08080358: .4byte gUnk_02028EB4 +_0808035C: .4byte 0x00003FFF +_08080360: .4byte 0x000005FF +_08080364: .4byte 0x000007FF + + thumb_func_start sub_08080368 +sub_08080368: @ 0x08080368 + push {r4, r5, r6, r7, lr} + ldr r0, _08080384 @ =gUnk_03004030 + ldr r1, _08080388 @ =gUnk_03000BF0 + ldrb r0, [r0, #0xa] + ldrb r1, [r1, #4] + cmp r0, r1 + beq _08080390 + cmp r0, #0xff + beq _08080390 + ldr r1, _0808038C @ =gUnk_02034480 + movs r0, #0 + strh r0, [r1] + b _080803BE + .align 2, 0 +_08080384: .4byte gUnk_03004030 +_08080388: .4byte gUnk_03000BF0 +_0808038C: .4byte gUnk_02034480 +_08080390: + ldr r5, _080803C0 @ =gUnk_020246B0 + ldr r0, _080803C4 @ =gUnk_02034480 + ldrh r0, [r0] + lsls r6, r0, #1 + movs r4, #0 + cmp r4, r6 + bhs _080803B8 + ldr r0, _080803C8 @ =0x00000FFF + adds r7, r0, #0 +_080803A2: + ldrh r0, [r5, #2] + ldrh r2, [r5] + adds r1, r7, #0 + ands r1, r2 + lsrs r2, r2, #0xe + bl sub_0807B9B8 + adds r5, #4 + adds r4, #2 + cmp r4, r6 + blo _080803A2 +_080803B8: + ldr r1, _080803CC @ =gUnk_02000070 + movs r0, #0 + strb r0, [r1] +_080803BE: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080803C0: .4byte gUnk_020246B0 +_080803C4: .4byte gUnk_02034480 +_080803C8: .4byte 0x00000FFF +_080803CC: .4byte gUnk_02000070 + + thumb_func_start sub_080803D0 +sub_080803D0: @ 0x080803D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + ldr r1, _080804F0 @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r0, [r1, r2] + ldrh r2, [r1, #6] + subs r0, r0, r2 + str r0, [sp, #0x18] + ldr r3, [r1, #0x30] + movs r4, #0x2e + ldrsh r0, [r3, r4] + subs r0, r0, r2 + str r0, [sp, #0x10] + movs r2, #0xc + ldrsh r0, [r1, r2] + ldrh r1, [r1, #8] + subs r0, r0, r1 + str r0, [sp, #0x1c] + movs r4, #0x32 + ldrsh r0, [r3, r4] + subs r0, r0, r1 + str r0, [sp, #0x14] + movs r0, #0x3c + str r0, [sp, #8] +_08080408: + movs r7, #0 + ldr r1, [sp, #8] + adds r1, #6 + str r1, [sp, #8] + adds r2, r1, #0 + muls r2, r1, r2 + mov sl, r2 + lsls r4, r1, #1 + adds r0, r4, #0 + movs r1, #3 + bl __divsi3 + str r0, [sp, #0xc] + adds r1, r0, #0 + muls r1, r0, r1 + mov sb, r1 + movs r2, #0 + str r2, [sp, #4] + rsbs r4, r4, #0 + adds r4, #1 + mov r0, sb + muls r0, r4, r0 + mov r4, sl + lsls r5, r4, #1 + adds r4, r0, r5 + ldr r0, [sp, #8] + mov r6, sb + muls r6, r0, r6 + adds r0, r6, #0 + mov r1, sl + bl __divsi3 + adds r2, r0, #0 + cmp r7, r2 + bgt _08080506 + ldr r1, [sp, #0x18] + adds r1, #0xf8 + str r1, [sp, #0x20] + mov r1, sl + adds r0, r5, r1 + lsls r3, r0, #1 + str r6, [sp, #0x2c] + ldr r0, [sp, #8] + lsls r1, r0, #2 + rsbs r1, r1, #0 + adds r1, #4 + mov r8, r1 + rsbs r0, r0, #0 + adds r0, #8 + ldr r1, [sp, #0x10] + adds r6, r0, r1 + ldr r0, [sp, #8] + adds r5, r0, r1 + mov r0, r8 + mov r1, sb + muls r1, r0, r1 + mov r8, r1 +_0808047A: + ldr r1, [sp, #0x1c] + adds r1, #0xa8 + mov ip, r1 + ldr r0, [sp, #0x14] + ldr r1, [sp, #4] + adds r0, r0, r1 + str r0, [sp, #0x34] + cmp ip, r0 + ble _080804A0 + ldr r0, [sp, #0x20] + cmp r0, r5 + ble _08080496 + movs r0, #1 + orrs r7, r0 +_08080496: + ldr r1, [sp, #0x18] + cmp r1, r6 + bge _080804A0 + movs r0, #2 + orrs r7, r0 +_080804A0: + ldr r0, [sp, #0x14] + ldr r1, [sp, #4] + subs r0, r0, r1 + mov ip, r0 + adds r0, #8 + ldr r1, [sp, #0x1c] + cmp r1, r0 + bge _080804C4 + ldr r0, [sp, #0x20] + cmp r0, r5 + ble _080804BA + movs r0, #4 + orrs r7, r0 +_080804BA: + ldr r1, [sp, #0x18] + cmp r1, r6 + bge _080804C4 + movs r0, #8 + orrs r7, r0 +_080804C4: + cmp r4, #0 + ble _080804F4 + mov r2, r8 + adds r0, r2, r3 + adds r4, r4, r0 + ldr r0, [sp, #0x2c] + mov r1, sb + subs r0, r0, r1 + str r0, [sp, #0x2c] + lsls r0, r1, #2 + add r8, r0 + adds r6, #1 + subs r5, #1 + ldr r0, [sp, #0x2c] + mov r1, sl + str r3, [sp, #0x30] + bl __divsi3 + adds r2, r0, #0 + ldr r3, [sp, #0x30] + b _080804F6 + .align 2, 0 +_080804F0: .4byte gUnk_03000BF0 +_080804F4: + adds r4, r4, r3 +_080804F6: + mov r1, sl + lsls r0, r1, #2 + adds r3, r3, r0 + ldr r0, [sp, #4] + adds r0, #1 + str r0, [sp, #4] + cmp r0, r2 + ble _0808047A +_08080506: + movs r1, #0 + str r1, [sp] + ldr r2, [sp, #0xc] + str r2, [sp, #4] + mov r4, sb + lsls r6, r4, #1 + lsls r0, r2, #1 + rsbs r0, r0, #0 + adds r0, #1 + mov r1, sl + muls r1, r0, r1 + adds r0, r1, #0 + adds r4, r6, r0 + mov r5, sl + muls r5, r2, r5 + adds r0, r5, #0 + mov r1, sb + bl __divsi3 + adds r2, r0, #0 + ldr r0, [sp] + cmp r0, r2 + bgt _080805E4 + ldr r1, [sp, #0x18] + adds r1, #0xf8 + str r1, [sp, #0x24] + mov r1, sb + adds r0, r6, r1 + lsls r0, r0, #1 + mov r8, r0 + ldr r3, [sp, #0x10] + adds r3, #8 + ldr r6, [sp, #0x10] + str r5, [sp, #0x28] + ldr r1, [sp, #4] + lsls r0, r1, #2 + rsbs r0, r0, #0 + adds r0, #4 + mov r5, sl + muls r5, r0, r5 +_08080556: + ldr r0, [sp, #0x1c] + adds r0, #0xa8 + mov ip, r0 + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + adds r1, r1, r0 + str r1, [sp, #0x34] + cmp ip, r1 + ble _0808057C + ldr r1, [sp, #0x24] + cmp r1, r6 + ble _08080572 + movs r0, #0x10 + orrs r7, r0 +_08080572: + ldr r0, [sp, #0x18] + cmp r0, r3 + bge _0808057C + movs r0, #0x20 + orrs r7, r0 +_0808057C: + ldr r1, [sp, #0x14] + ldr r0, [sp, #4] + subs r1, r1, r0 + mov ip, r1 + mov r0, ip + adds r0, #8 + ldr r1, [sp, #0x1c] + cmp r1, r0 + bge _080805A2 + ldr r0, [sp, #0x24] + cmp r0, r6 + ble _08080598 + movs r0, #0x40 + orrs r7, r0 +_08080598: + ldr r1, [sp, #0x18] + cmp r1, r3 + bge _080805A2 + movs r0, #0x80 + orrs r7, r0 +_080805A2: + cmp r4, #0 + ble _080805CE + mov r2, r8 + adds r0, r2, r5 + adds r4, r4, r0 + ldr r0, [sp, #0x28] + mov r1, sl + subs r0, r0, r1 + str r0, [sp, #0x28] + lsls r0, r1, #2 + adds r5, r5, r0 + ldr r2, [sp, #4] + subs r2, #1 + str r2, [sp, #4] + ldr r0, [sp, #0x28] + mov r1, sb + str r3, [sp, #0x30] + bl __divsi3 + adds r2, r0, #0 + ldr r3, [sp, #0x30] + b _080805D0 +_080805CE: + add r4, r8 +_080805D0: + mov r1, sb + lsls r0, r1, #2 + add r8, r0 + subs r3, #1 + adds r6, #1 + ldr r0, [sp] + adds r0, #1 + str r0, [sp] + cmp r0, r2 + ble _08080556 +_080805E4: + cmp r7, #0 + beq _080805EA + b _08080408 +_080805EA: + ldr r0, [sp, #8] + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080805F8 +sub_080805F8: @ 0x080805F8 + push {lr} + ldr r0, _08080610 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + subs r0, #0xc + cmp r0, #0xd + bhi _0808065C + lsls r0, r0, #2 + ldr r1, _08080614 @ =_08080618 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080610: .4byte gUnk_03000BF0 +_08080614: .4byte _08080618 +_08080618: @ jump table + .4byte _08080650 @ case 0 + .4byte _0808065C @ case 1 + .4byte _0808065C @ case 2 + .4byte _08080650 @ case 3 + .4byte _0808065C @ case 4 + .4byte _0808065C @ case 5 + .4byte _0808065C @ case 6 + .4byte _08080650 @ case 7 + .4byte _08080650 @ case 8 + .4byte _0808065C @ case 9 + .4byte _08080650 @ case 10 + .4byte _08080650 @ case 11 + .4byte _0808065C @ case 12 + .4byte _08080650 @ case 13 +_08080650: + ldr r1, _08080658 @ =gUnk_03004030 + movs r0, #1 + b _08080660 + .align 2, 0 +_08080658: .4byte gUnk_03004030 +_0808065C: + ldr r1, _08080664 @ =gUnk_03004030 + movs r0, #0 +_08080660: + strb r0, [r1, #8] + pop {pc} + .align 2, 0 +_08080664: .4byte gUnk_03004030 + + thumb_func_start sub_08080668 +sub_08080668: @ 0x08080668 + push {r4, r5, lr} + ldr r5, _080806A4 @ =gUnk_03000BF0 + adds r0, r5, #0 + movs r1, #0x38 + bl sub_0801D630 + ldr r4, _080806A8 @ =gUnk_03004030 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0801D630 + ldr r0, _080806AC @ =0x0000FFFF + strh r0, [r5, #0x22] + movs r0, #0xff + strb r0, [r4, #0xa] + ldr r1, _080806B0 @ =gUnk_02034480 + movs r0, #0 + strh r0, [r1] + ldr r0, _080806B4 @ =gUnk_02019EE0 + movs r4, #0x80 + lsls r4, r4, #8 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _080806B8 @ =gUnk_02002F00 + adds r1, r4, #0 + bl sub_0801D630 + pop {r4, r5, pc} + .align 2, 0 +_080806A4: .4byte gUnk_03000BF0 +_080806A8: .4byte gUnk_03004030 +_080806AC: .4byte 0x0000FFFF +_080806B0: .4byte gUnk_02034480 +_080806B4: .4byte gUnk_02019EE0 +_080806B8: .4byte gUnk_02002F00 + + thumb_func_start sub_080806BC +sub_080806BC: @ 0x080806BC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + mov r8, r1 + adds r7, r2, #0 + adds r6, r3, #0 + ldr r0, _08080710 @ =gUnk_02033A90 + ldr r1, _08080714 @ =0x0000085C + adds r0, r0, r1 + ldr r0, [r0] + ldr r5, [r0, #0x18] + ldrh r0, [r5] + ldr r1, _08080718 @ =0x0000FFFF + cmp r0, r1 + beq _08080728 + mov sl, r1 +_080806E2: + ldrh r2, [r5] + movs r0, #1 + lsls r0, r2 + ands r0, r6 + cmp r0, #0 + beq _08080720 + ldr r1, _0808071C @ =gUnk_0811E7AC + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r4, [r0] + adds r0, r5, #0 + mov r1, sb + mov r2, r8 + adds r3, r7, #0 + bl _call_via_r4 + cmp r0, #0 + beq _08080720 + adds r0, r5, #0 + bl sub_08080840 + movs r0, #1 + b _0808072A + .align 2, 0 +_08080710: .4byte gUnk_02033A90 +_08080714: .4byte 0x0000085C +_08080718: .4byte 0x0000FFFF +_0808071C: .4byte gUnk_0811E7AC +_08080720: + adds r5, #0x14 + ldrh r0, [r5] + cmp r0, sl + bne _080806E2 +_08080728: + movs r0, #0 +_0808072A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08080734 +sub_08080734: @ 0x08080734 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r5, r1, #0 + ldr r0, _08080778 @ =gUnk_02033A90 + ldr r1, _0808077C @ =0x0000085C + adds r0, r0, r1 + ldr r0, [r0] + ldr r4, [r0, #0x18] + movs r0, #0xa + mov r8, r0 + ldrh r0, [r4] + ldr r1, _08080780 @ =0x0000FFFF + cmp r0, r1 + beq _0808078C + adds r7, r1, #0 +_08080756: + movs r0, #1 + ldrh r1, [r4] + lsls r0, r1 + mov r1, r8 + ands r0, r1 + cmp r0, #0 + beq _08080784 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + movs r3, #0 + bl sub_08080808 + cmp r0, #0 + beq _08080784 + adds r0, r4, #0 + b _0808078E + .align 2, 0 +_08080778: .4byte gUnk_02033A90 +_0808077C: .4byte 0x0000085C +_08080780: .4byte 0x0000FFFF +_08080784: + adds r4, #0x14 + ldrh r0, [r4] + cmp r0, r7 + bne _08080756 +_0808078C: + movs r0, #0 +_0808078E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08080794 +sub_08080794: @ 0x08080794 + push {r4, lr} + adds r4, r0, #0 + cmp r3, #1 + beq _080807C0 + cmp r3, #1 + blo _080807AC + cmp r3, #2 + beq _080807D4 + cmp r3, #3 + beq _080807E8 +_080807A8: + movs r0, #0 + b _08080800 +_080807AC: + ldr r0, _080807BC @ =gUnk_03000BF0 + ldrh r0, [r0, #0x1e] + lsrs r0, r0, #1 + movs r3, #1 + cmp r0, r1 + bhs _080807F6 + movs r3, #2 + b _080807F6 + .align 2, 0 +_080807BC: .4byte gUnk_03000BF0 +_080807C0: + ldr r0, _080807D0 @ =gUnk_03000BF0 + ldrh r0, [r0, #0x20] + lsrs r0, r0, #1 + movs r3, #4 + cmp r0, r2 + bhs _080807F6 + movs r3, #8 + b _080807F6 + .align 2, 0 +_080807D0: .4byte gUnk_03000BF0 +_080807D4: + ldr r0, _080807E4 @ =gUnk_03000BF0 + ldrh r0, [r0, #0x1e] + lsrs r0, r0, #1 + movs r3, #0x10 + cmp r0, r1 + bhs _080807F6 + movs r3, #0x20 + b _080807F6 + .align 2, 0 +_080807E4: .4byte gUnk_03000BF0 +_080807E8: + ldr r0, _08080804 @ =gUnk_03000BF0 + ldrh r0, [r0, #0x20] + lsrs r0, r0, #1 + movs r3, #0x40 + cmp r0, r2 + bhs _080807F6 + movs r3, #0x80 +_080807F6: + ldrb r0, [r4, #0xa] + ands r0, r3 + cmp r0, #0 + beq _080807A8 + movs r0, #1 +_08080800: + pop {r4, pc} + .align 2, 0 +_08080804: .4byte gUnk_03000BF0 + + thumb_func_start sub_08080808 +sub_08080808: @ 0x08080808 + push {r4, r5, lr} + adds r3, r0, #0 + adds r5, r2, #0 + ldrb r0, [r3, #0xa] + lsls r0, r0, #1 + ldr r2, _08080838 @ =gUnk_0811E7BC + adds r4, r0, r2 + ldrb r0, [r4] + ldrh r2, [r3, #2] + subs r1, r1, r2 + adds r1, r1, r0 + lsls r0, r0, #1 + cmp r1, r0 + bhi _0808083C + ldrb r1, [r4, #1] + ldrh r0, [r3, #4] + subs r0, r5, r0 + adds r0, r0, r1 + lsls r1, r1, #1 + cmp r0, r1 + bhi _0808083C + movs r0, #1 + b _0808083E + .align 2, 0 +_08080838: .4byte gUnk_0811E7BC +_0808083C: + movs r0, #0 +_0808083E: + pop {r4, r5, pc} + + thumb_func_start sub_08080840 +sub_08080840: @ 0x08080840 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0808085C @ =gUnk_030010A0 + movs r1, #1 + strb r1, [r0, #8] + adds r2, r0, #0 + adds r2, #0xc + ldrh r1, [r4, #6] + ldr r0, _08080860 @ =0x000003FF + cmp r1, r0 + bhi _08080864 + strh r1, [r2, #4] + b _08080872 + .align 2, 0 +_0808085C: .4byte gUnk_030010A0 +_08080860: .4byte 0x000003FF +_08080864: + ldr r0, _08080880 @ =gUnk_03000BF0 + ldr r0, [r0, #0x30] + ldrh r1, [r0, #0x2e] + ldr r3, _08080884 @ =0xFFFF8000 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2, #4] +_08080872: + ldrh r1, [r4, #8] + ldr r0, _08080888 @ =0x000003FF + cmp r1, r0 + bhi _0808088C + strh r1, [r2, #6] + b _0808089A + .align 2, 0 +_08080880: .4byte gUnk_03000BF0 +_08080884: .4byte 0xFFFF8000 +_08080888: .4byte 0x000003FF +_0808088C: + ldr r0, _080808CC @ =gUnk_03000BF0 + ldr r0, [r0, #0x30] + ldrh r1, [r0, #0x32] + ldr r3, _080808D0 @ =0xFFFF8000 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2, #6] +_0808089A: + ldrb r0, [r4, #0xb] + strb r0, [r2] + ldrb r0, [r4, #0xc] + strb r0, [r2, #1] + ldrb r0, [r4, #0xd] + strb r0, [r2, #8] + ldrb r0, [r4, #0xe] + strb r0, [r2, #3] + ldrb r0, [r4, #0xf] + strb r0, [r2, #2] + ldrh r0, [r4, #0x10] + cmp r0, #0 + beq _080808B8 + bl sub_080A3268 +_080808B8: + ldr r0, _080808D4 @ =gUnk_0811E7C4 + ldrh r1, [r4] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r4, #0xa] + ldr r1, [r1] + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080808CC: .4byte gUnk_03000BF0 +_080808D0: .4byte 0xFFFF8000 +_080808D4: .4byte gUnk_0811E7C4 + + thumb_func_start sub_080808D8 +sub_080808D8: @ 0x080808D8 + ldr r1, _080808E0 @ =gUnk_030010A0 + movs r0, #0 + strb r0, [r1, #9] + bx lr + .align 2, 0 +_080808E0: .4byte gUnk_030010A0 + + thumb_func_start sub_080808E4 +sub_080808E4: @ 0x080808E4 + push {r4, lr} + ldr r4, _080808F8 @ =gUnk_030010A0 + ldrb r0, [r4, #0xc] + bl sub_08052638 + cmp r0, #0 + beq _080808FC + movs r0, #0 + b _080808FE + .align 2, 0 +_080808F8: .4byte gUnk_030010A0 +_080808FC: + movs r0, #5 +_080808FE: + strb r0, [r4, #9] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08080904 +sub_08080904: @ 0x08080904 + ldr r1, _0808090C @ =gUnk_030010A0 + movs r0, #1 + strb r0, [r1, #9] + bx lr + .align 2, 0 +_0808090C: .4byte gUnk_030010A0 + + thumb_func_start sub_08080910 +sub_08080910: @ 0x08080910 + ldr r1, _08080918 @ =gUnk_030010A0 + movs r0, #1 + strb r0, [r1, #9] + bx lr + .align 2, 0 +_08080918: .4byte gUnk_030010A0 + + thumb_func_start sub_0808091C +sub_0808091C: @ 0x0808091C + push {r4, lr} + adds r4, r1, #0 + bl sub_08080840 + ldr r0, _0808092C @ =gUnk_030010A0 + strb r4, [r0, #9] + pop {r4, pc} + .align 2, 0 +_0808092C: .4byte gUnk_030010A0 + + thumb_func_start sub_08080930 +sub_08080930: @ 0x08080930 + push {lr} + ldr r1, _08080948 @ =gUnk_03000BF0 + movs r2, #0 + movs r0, #5 + strb r0, [r1, #2] + strb r2, [r1, #3] + movs r0, #2 + strh r0, [r1] + strb r2, [r1, #0x10] + bl sub_0805E5A8 + pop {pc} + .align 2, 0 +_08080948: .4byte gUnk_03000BF0 + + thumb_func_start sub_0808094C +sub_0808094C: @ 0x0808094C + push {lr} + cmp r0, #2 + beq _0808095C + ldr r0, _08080958 @ =gUnk_02025EB0 + b _0808095E + .align 2, 0 +_08080958: .4byte gUnk_02025EB0 +_0808095C: + ldr r0, _08080960 @ =gUnk_0200B650 +_0808095E: + pop {pc} + .align 2, 0 +_08080960: .4byte gUnk_0200B650 + + thumb_func_start sub_08080964 +sub_08080964: @ 0x08080964 + ldr r2, _08080970 @ =gUnk_03000BF0 + strh r0, [r2, #0x16] + movs r0, #7 + ands r1, r0 + strb r1, [r2, #0x14] + bx lr + .align 2, 0 +_08080970: .4byte gUnk_03000BF0 + + thumb_func_start sub_08080974 +sub_08080974: @ 0x08080974 + push {r4, lr} + adds r3, r0, #0 + adds r4, r1, #0 + ldr r1, _0808098C @ =gUnk_03000BF0 + ldrh r2, [r1, #6] + adds r0, r2, #0 + adds r0, #0x78 + cmp r3, r0 + bhi _08080990 + strh r2, [r1, #0xa] + b _080809A2 + .align 2, 0 +_0808098C: .4byte gUnk_03000BF0 +_08080990: + ldrh r0, [r1, #0x1e] + adds r2, r2, r0 + adds r0, r2, #0 + subs r0, #0x78 + cmp r3, r0 + bhs _0808099E + adds r0, r3, #0 +_0808099E: + subs r0, #0x78 + strh r0, [r1, #0xa] +_080809A2: + ldrh r2, [r1, #8] + adds r0, r2, #0 + adds r0, #0x50 + cmp r4, r0 + bhi _080809B0 + strh r2, [r1, #0xc] + b _080809C2 +_080809B0: + ldrh r0, [r1, #0x20] + adds r2, r2, r0 + adds r0, r2, #0 + subs r0, #0x50 + cmp r4, r0 + bhs _080809BE + adds r0, r4, #0 +_080809BE: + subs r0, #0x50 + strh r0, [r1, #0xc] +_080809C2: + bl sub_080809D4 + ldr r1, _080809D0 @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 +_080809D0: .4byte gUnk_02000070 + + thumb_func_start sub_080809D4 +sub_080809D4: @ 0x080809D4 + push {r4, lr} + ldr r2, _080809F4 @ =gUnk_03000BF0 + ldrb r0, [r2, #0xf] + movs r1, #0xfb + ands r1, r0 + strb r1, [r2, #0xf] + ldr r4, [r2, #0x30] + movs r0, #0x2e + ldrsh r3, [r4, r0] + ldrh r1, [r2, #6] + adds r0, r1, #0 + adds r0, #0x78 + cmp r3, r0 + bgt _080809F8 + strh r1, [r2, #0xa] + b _08080A0A + .align 2, 0 +_080809F4: .4byte gUnk_03000BF0 +_080809F8: + ldrh r0, [r2, #0x1e] + adds r1, r1, r0 + adds r0, r1, #0 + subs r0, #0x78 + cmp r3, r0 + bge _08080A06 + ldrh r0, [r4, #0x2e] +_08080A06: + subs r0, #0x78 + strh r0, [r2, #0xa] +_08080A0A: + ldr r4, [r2, #0x30] + movs r0, #0x32 + ldrsh r3, [r4, r0] + ldrh r1, [r2, #8] + adds r0, r1, #0 + adds r0, #0x50 + cmp r3, r0 + bgt _08080A1E + strh r1, [r2, #0xc] + b _08080A30 +_08080A1E: + ldrh r0, [r2, #0x20] + adds r1, r1, r0 + adds r0, r1, #0 + subs r0, #0x50 + cmp r3, r0 + bge _08080A2C + ldrh r0, [r4, #0x32] +_08080A2C: + subs r0, #0x50 + strh r0, [r2, #0xc] +_08080A30: + bl sub_08080BC4 + ldr r1, _08080A3C @ =gUnk_02000070 + movs r0, #1 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 +_08080A3C: .4byte gUnk_02000070 + + thumb_func_start sub_08080A40 +sub_08080A40: @ 0x08080A40 + push {r4, r5, r6, r7, lr} + ldr r7, _08080A70 @ =gUnk_03000BF0 + ldr r1, [r7, #0x30] + ldr r0, _08080A74 @ =gLinkEntity + adds r2, r7, #0 + cmp r1, r0 + beq _08080A50 + b _08080B5C +_08080A50: + ldr r0, _08080A78 @ =gUnk_03003F80 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _08080A5A + b _08080B5C +_08080A5A: + ldrb r0, [r1, #0xc] + subs r0, #1 + cmp r0, #0x1c + bls _08080A64 + b _08080B5C +_08080A64: + lsls r0, r0, #2 + ldr r1, _08080A7C @ =_08080A80 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080A70: .4byte gUnk_03000BF0 +_08080A74: .4byte gLinkEntity +_08080A78: .4byte gUnk_03003F80 +_08080A7C: .4byte _08080A80 +_08080A80: @ jump table + .4byte _08080AFA @ case 0 + .4byte _08080B5C @ case 1 + .4byte _08080B5C @ case 2 + .4byte _08080B5C @ case 3 + .4byte _08080B5C @ case 4 + .4byte _08080B5C @ case 5 + .4byte _08080B5C @ case 6 + .4byte _08080B5C @ case 7 + .4byte _08080AFA @ case 8 + .4byte _08080B5C @ case 9 + .4byte _08080B5C @ case 10 + .4byte _08080B5C @ case 11 + .4byte _08080B5C @ case 12 + .4byte _08080B5C @ case 13 + .4byte _08080AF4 @ case 14 + .4byte _08080B5C @ case 15 + .4byte _08080B5C @ case 16 + .4byte _08080B5C @ case 17 + .4byte _08080B5C @ case 18 + .4byte _08080B5C @ case 19 + .4byte _08080B5C @ case 20 + .4byte _08080B5C @ case 21 + .4byte _08080B5C @ case 22 + .4byte _08080AFA @ case 23 + .4byte _08080B5C @ case 24 + .4byte _08080B5C @ case 25 + .4byte _08080B5C @ case 26 + .4byte _08080B5C @ case 27 + .4byte _08080AFA @ case 28 +_08080AF4: + ldrb r0, [r2, #4] + cmp r0, #0x48 + beq _08080B5C +_08080AFA: + ldr r3, [r7, #0x30] + movs r0, #0x32 + ldrsh r1, [r3, r0] + ldrh r0, [r7, #8] + subs r6, r1, r0 + movs r0, #0x2e + ldrsh r1, [r3, r0] + ldrh r0, [r7, #6] + subs r5, r1, r0 + asrs r0, r5, #4 + movs r2, #0x3f + ands r0, r2 + asrs r1, r6, #4 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + adds r3, #0x38 + ldrb r1, [r3] + bl sub_080002C8 + adds r4, r0, #0 + ldr r0, [r7, #0x30] + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080002A8 + ldr r1, _08080B48 @ =gUnk_030010A0 + strh r0, [r1, #0xa] + cmp r4, #0x3f + beq _08080B50 + cmp r4, #0x3f + bhi _08080B4C + cmp r4, #0x29 + bhi _08080B5C + cmp r4, #0x28 + blo _08080B5C + b _08080B50 + .align 2, 0 +_08080B48: .4byte gUnk_030010A0 +_08080B4C: + cmp r4, #0xf1 + bne _08080B5C +_08080B50: + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0xff + movs r3, #0xa + bl sub_080806BC +_08080B5C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08080B60 +sub_08080B60: @ 0x08080B60 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r1, _08080B90 @ =0x00005004 + adds r4, r0, r1 + ldr r2, _08080B94 @ =gUnk_080B37A0 + mov r8, r2 + movs r3, #0 + ldr r1, _08080B98 @ =0x00003FFF + mov ip, r1 + ldr r7, _08080B9C @ =gUnk_080B7910 + ldr r2, _08080BA0 @ =0x0000B004 + adds r1, r0, r2 + adds r2, r0, #4 + ldr r6, _08080BA4 @ =0xFFFFC000 + ldr r5, _08080BA8 @ =0x00000FFF +_08080B80: + ldrh r0, [r2] + cmp r0, ip + bhi _08080BAC + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + add r0, r8 + b _08080BB0 + .align 2, 0 +_08080B90: .4byte 0x00005004 +_08080B94: .4byte gUnk_080B37A0 +_08080B98: .4byte 0x00003FFF +_08080B9C: .4byte gUnk_080B7910 +_08080BA0: .4byte 0x0000B004 +_08080BA4: .4byte 0xFFFFC000 +_08080BA8: .4byte 0x00000FFF +_08080BAC: + adds r0, r0, r6 + adds r0, r0, r7 +_08080BB0: + ldrb r0, [r0] + strb r0, [r1] + adds r1, #1 + adds r2, #2 + adds r3, #1 + cmp r3, r5 + bls _08080B80 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08080BC4 +sub_08080BC4: @ 0x08080BC4 + push {r4, r5, r6, lr} + ldr r3, _08080C40 @ =gUnk_03000BF0 + movs r0, #0xa + ldrsh r1, [r3, r0] + ldrh r0, [r3, #6] + subs r5, r1, r0 + movs r2, #0xf + ands r5, r2 + movs r1, #0xc + ldrsh r0, [r3, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + ands r0, r2 + adds r6, r0, #0 + adds r6, #8 + ldrh r2, [r3, #0x16] + adds r4, r2, #0 + cmp r4, #0 + beq _08080C50 + subs r2, #1 + strh r2, [r3, #0x16] + ldrb r0, [r3, #0x14] + lsls r0, r0, #4 + movs r1, #0xe + ands r2, r1 + adds r0, r0, r2 + ldr r1, _08080C44 @ =gUnk_080169A4 + adds r2, r0, r1 + ldr r4, _08080C48 @ =gUnk_02025EB0 + ldr r1, [r4] + cmp r1, #0 + beq _08080C16 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r0, r0, r5 + strh r0, [r1, #2] + ldr r1, [r4] + movs r0, #1 + ldrsb r0, [r2, r0] + adds r0, r0, r6 + strh r0, [r1, #4] +_08080C16: + ldr r4, _08080C4C @ =gUnk_0200B650 + ldr r1, [r4] + cmp r1, #0 + beq _08080C30 + movs r0, #0 + ldrsb r0, [r2, r0] + adds r0, r0, r5 + strh r0, [r1, #2] + ldr r1, [r4] + movs r0, #1 + ldrsb r0, [r2, r0] + adds r0, r0, r6 + strh r0, [r1, #4] +_08080C30: + ldrb r1, [r2] + adds r0, r3, #0 + adds r0, #0x24 + strb r1, [r0] + ldrb r1, [r2, #1] + adds r0, #1 + strb r1, [r0] + b _08080C76 + .align 2, 0 +_08080C40: .4byte gUnk_03000BF0 +_08080C44: .4byte gUnk_080169A4 +_08080C48: .4byte gUnk_02025EB0 +_08080C4C: .4byte gUnk_0200B650 +_08080C50: + ldr r0, _08080C78 @ =gUnk_02025EB0 + ldr r1, [r0] + cmp r1, #0 + beq _08080C5E + strh r5, [r1, #2] + ldr r0, [r0] + strh r6, [r0, #4] +_08080C5E: + ldr r0, _08080C7C @ =gUnk_0200B650 + ldr r1, [r0] + cmp r1, #0 + beq _08080C6C + strh r5, [r1, #2] + ldr r0, [r0] + strh r6, [r0, #4] +_08080C6C: + adds r0, r3, #0 + adds r0, #0x24 + strb r4, [r0] + adds r0, #1 + strb r4, [r0] +_08080C76: + pop {r4, r5, r6, pc} + .align 2, 0 +_08080C78: .4byte gUnk_02025EB0 +_08080C7C: .4byte gUnk_0200B650 + + thumb_func_start sub_08080C80 +sub_08080C80: @ 0x08080C80 + push {r4, lr} + bl sub_080197D4 + ldr r0, _08080CA8 @ =gUnk_02025EB4 + ldr r4, _08080CAC @ =gUnk_03000BF0 + ldrh r1, [r4, #0x1e] + lsrs r1, r1, #4 + ldrh r2, [r4, #0x20] + lsrs r2, r2, #4 + bl sub_0807C8B0 + ldr r0, _08080CB0 @ =gUnk_0200B654 + ldrh r1, [r4, #0x1e] + lsrs r1, r1, #4 + ldrh r2, [r4, #0x20] + lsrs r2, r2, #4 + bl sub_0807C8B0 + pop {r4, pc} + .align 2, 0 +_08080CA8: .4byte gUnk_02025EB4 +_08080CAC: .4byte gUnk_03000BF0 +_08080CB0: .4byte gUnk_0200B654 + + thumb_func_start sub_08080CB4 +sub_08080CB4: @ 0x08080CB4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x58 + ldrb r0, [r4, #0xa] + ldrb r1, [r1] + cmp r0, r1 + beq _08080CF0 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_080042AC + ldrb r0, [r4, #0xa] + cmp r0, #0x5c + beq _08080CD4 + b _08080E00 +_08080CD4: + ldrb r0, [r4, #0xb] + lsls r0, r0, #3 + ldr r1, _08080CEC @ =gUnk_080C9CBC + adds r0, r0, r1 + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + lsls r0, r0, #4 + orrs r0, r1 + strb r0, [r4, #0x1a] + b _08080E00 + .align 2, 0 +_08080CEC: .4byte gUnk_080C9CBC +_08080CF0: + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _08080D00 + b _08080E00 +_08080D00: + ldrb r0, [r4, #0xa] + subs r0, #0x40 + cmp r0, #0x22 + bhi _08080E00 + lsls r0, r0, #2 + ldr r1, _08080D14 @ =_08080D18 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080D14: .4byte _08080D18 +_08080D18: @ jump table + .4byte _08080DEE @ case 0 + .4byte _08080DEE @ case 1 + .4byte _08080DEE @ case 2 + .4byte _08080DEE @ case 3 + .4byte _08080E00 @ case 4 + .4byte _08080E00 @ case 5 + .4byte _08080E00 @ case 6 + .4byte _08080E00 @ case 7 + .4byte _08080E00 @ case 8 + .4byte _08080E00 @ case 9 + .4byte _08080E00 @ case 10 + .4byte _08080E00 @ case 11 + .4byte _08080E00 @ case 12 + .4byte _08080E00 @ case 13 + .4byte _08080E00 @ case 14 + .4byte _08080E00 @ case 15 + .4byte _08080E00 @ case 16 + .4byte _08080E00 @ case 17 + .4byte _08080E00 @ case 18 + .4byte _08080E00 @ case 19 + .4byte _08080E00 @ case 20 + .4byte _08080E00 @ case 21 + .4byte _08080E00 @ case 22 + .4byte _08080E00 @ case 23 + .4byte _08080E00 @ case 24 + .4byte _08080E00 @ case 25 + .4byte _08080E00 @ case 26 + .4byte _08080E00 @ case 27 + .4byte _08080DEE @ case 28 + .4byte _08080E00 @ case 29 + .4byte _08080E00 @ case 30 + .4byte _08080E00 @ case 31 + .4byte _08080DA4 @ case 32 + .4byte _08080E00 @ case 33 + .4byte _08080DEE @ case 34 +_08080DA4: + adds r5, r4, #0 + adds r5, #0x6a + ldrb r0, [r5] + cmp r0, #0 + beq _08080DB4 + subs r0, #1 + strb r0, [r5] + b _08080E00 +_08080DB4: + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + adds r0, #0xa + strb r0, [r5] + adds r0, r4, #0 + movs r1, #7 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08080E00 + adds r0, r4, #0 + adds r0, #0x62 + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0x62 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x63 + ldrb r0, [r0] + adds r2, #1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0806FAB0 + b _08080E00 +_08080DEE: + ldr r0, _08080E04 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _08080E00 + adds r0, r4, #0 + bl sub_080A2B80 +_08080E00: + pop {r4, r5, pc} + .align 2, 0 +_08080E04: .4byte gUnk_030010A0 + + thumb_func_start sub_08080E08 +sub_08080E08: @ 0x08080E08 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08080EDE + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x1e + bhi _08080EDE + lsls r0, r0, #2 + ldr r1, _08080E2C @ =_08080E30 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080E2C: .4byte _08080E30 +_08080E30: @ jump table + .4byte _08080ED8 @ case 0 + .4byte _08080ED8 @ case 1 + .4byte _08080EDE @ case 2 + .4byte _08080EDE @ case 3 + .4byte _08080ED8 @ case 4 + .4byte _08080ED8 @ case 5 + .4byte _08080ED8 @ case 6 + .4byte _08080EDE @ case 7 + .4byte _08080ED8 @ case 8 + .4byte _08080ED8 @ case 9 + .4byte _08080ED8 @ case 10 + .4byte _08080ED8 @ case 11 + .4byte _08080ED8 @ case 12 + .4byte _08080EDE @ case 13 + .4byte _08080EDE @ case 14 + .4byte _08080EDE @ case 15 + .4byte _08080EDE @ case 16 + .4byte _08080EDE @ case 17 + .4byte _08080EDE @ case 18 + .4byte _08080EDE @ case 19 + .4byte _08080EAC @ case 20 + .4byte _08080EDE @ case 21 + .4byte _08080EDE @ case 22 + .4byte _08080EDE @ case 23 + .4byte _08080EDE @ case 24 + .4byte _08080EDE @ case 25 + .4byte _08080EDE @ case 26 + .4byte _08080EDE @ case 27 + .4byte _08080EDE @ case 28 + .4byte _08080EDE @ case 29 + .4byte _08080ED8 @ case 30 +_08080EAC: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4, #0x4c] + str r0, [r4, #0x54] + b _08080EDE +_08080ED8: + adds r0, r4, #0 + bl sub_08081598 +_08080EDE: + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _08080EF0 + adds r0, r4, #0 + bl sub_080813BC + b _08080F00 +_08080EF0: + ldr r0, _08080F18 @ =gUnk_0811E7D4 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08080F00: + ldrb r0, [r4, #0xa] + cmp r0, #0x5c + bne _08080F0E + ldr r1, _08080F1C @ =gUnk_02034350 + ldrb r0, [r1, #4] + adds r0, #1 + strb r0, [r1, #4] +_08080F0E: + adds r0, r4, #0 + bl sub_08080CB4 + pop {r4, pc} + .align 2, 0 +_08080F18: .4byte gUnk_0811E7D4 +_08080F1C: .4byte gUnk_02034350 + + thumb_func_start sub_08080F20 +sub_08080F20: @ 0x08080F20 + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _08080F3A + bl sub_0807CBE4 + cmp r0, #0 + beq _08080F3A + bl sub_0805E780 +_08080F3A: + ldrb r0, [r4, #0xa] + cmp r0, #0x60 + bne _08080F42 + b _0808107C +_08080F42: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #7 + strb r0, [r1] + subs r1, #3 + movs r0, #0x47 + strb r0, [r1] + adds r1, #4 + movs r0, #0x44 + strb r0, [r1] + adds r1, #5 + movs r0, #0xff + strb r0, [r1] + ldr r0, _08080F9C @ =gUnk_080FD1A8 + str r0, [r4, #0x48] + ldrb r0, [r4, #0xa] + subs r0, #0x3f + cmp r0, #0x20 + bhi _08081030 + lsls r0, r0, #2 + ldr r1, _08080FA0 @ =_08080FA4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08080F9C: .4byte gUnk_080FD1A8 +_08080FA0: .4byte _08080FA4 +_08080FA4: @ jump table + .4byte _08081028 @ case 0 + .4byte _08081030 @ case 1 + .4byte _08081030 @ case 2 + .4byte _08081030 @ case 3 + .4byte _08081030 @ case 4 + .4byte _08081030 @ case 5 + .4byte _08081030 @ case 6 + .4byte _08081030 @ case 7 + .4byte _08081030 @ case 8 + .4byte _08081030 @ case 9 + .4byte _08081030 @ case 10 + .4byte _08081030 @ case 11 + .4byte _08081030 @ case 12 + .4byte _08081030 @ case 13 + .4byte _08081030 @ case 14 + .4byte _08081030 @ case 15 + .4byte _08081030 @ case 16 + .4byte _08081030 @ case 17 + .4byte _08081030 @ case 18 + .4byte _08081030 @ case 19 + .4byte _08081030 @ case 20 + .4byte _08081028 @ case 21 + .4byte _08081028 @ case 22 + .4byte _08081028 @ case 23 + .4byte _08081028 @ case 24 + .4byte _08081028 @ case 25 + .4byte _08081030 @ case 26 + .4byte _08081030 @ case 27 + .4byte _08081030 @ case 28 + .4byte _08081028 @ case 29 + .4byte _08081028 @ case 30 + .4byte _08081028 @ case 31 + .4byte _08081028 @ case 32 +_08081028: + adds r1, r4, #0 + adds r1, #0x3b + movs r0, #0x17 + b _08081036 +_08081030: + adds r1, r4, #0 + adds r1, #0x3b + movs r0, #0x11 +_08081036: + strb r0, [r1] + ldrb r0, [r4, #0xe] + adds r5, r4, #0 + adds r5, #0x69 + movs r2, #0 + strb r0, [r5] + adds r0, r4, #0 + adds r0, #0x6a + strb r2, [r0] + adds r0, #2 + movs r1, #0 + strh r2, [r0] + subs r0, #4 + strb r1, [r0] + strb r1, [r4, #0xe] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + ldrb r0, [r4, #0xa] + bl sub_0808147C + strb r0, [r4, #0x1c] + ldr r1, _08081078 @ =gUnk_0811E7E8 + ldrb r0, [r5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + b _080810A4 + .align 2, 0 +_08081078: .4byte gUnk_0811E7E8 +_0808107C: + movs r0, #0x40 + movs r1, #0x60 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _080810A4 + movs r0, #0 + strb r0, [r1, #0xe] + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _0808109A + movs r0, #2 + strb r0, [r1, #0xb] +_0808109A: + adds r0, r4, #0 + bl sub_0806FA24 + bl sub_0805E780 +_080810A4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080810A8 +sub_080810A8: @ 0x080810A8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080814A4 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080810D6 + movs r0, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080810DC + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + b _080810DC +_080810D6: + movs r0, #0xff + orrs r0, r1 + strb r0, [r4, #0x15] +_080810DC: + ldr r0, [r4, #0x20] + cmp r0, #0 + bne _080810E8 + movs r0, #0xf0 + lsls r0, r0, #9 + str r0, [r4, #0x20] +_080810E8: + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _080810F8 + adds r0, r4, #0 + bl sub_08016A30 +_080810F8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080810FC +sub_080810FC: @ 0x080810FC + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0x5f + beq _0808110E + adds r0, r2, #0 + bl sub_08081598 + b _0808112E +_0808110E: + movs r1, #0 + movs r0, #2 + strb r0, [r2, #0xc] + strb r1, [r2, #0xd] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r1, r2, #0 + adds r1, #0x3b + movs r0, #0x11 + strb r0, [r1] + ldr r0, _08081130 @ =gLinkEntity + adds r1, r2, #0 + bl sub_0806FA24 +_0808112E: + pop {pc} + .align 2, 0 +_08081130: .4byte gLinkEntity + + thumb_func_start sub_08081134 +sub_08081134: @ 0x08081134 + push {r4, lr} + adds r4, r0, #0 + bl sub_080814A4 + adds r1, r4, #0 + adds r1, #0x6c + ldrh r0, [r1] + adds r0, #0x50 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08081150 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08081150 +sub_08081150: @ 0x08081150 + push {lr} + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x80 + orrs r1, r2 + strb r1, [r0, #0x10] + ldr r1, _08081180 @ =0x0000FF80 + strh r1, [r0, #0x36] + ldrb r3, [r0, #0x1b] + movs r2, #0x3f + adds r1, r2, #0 + ands r1, r3 + movs r3, #0x40 + orrs r1, r3 + strb r1, [r0, #0x1b] + ldrb r1, [r0, #0x19] + ands r2, r1 + orrs r2, r3 + strb r2, [r0, #0x19] + ldr r0, _08081184 @ =0x0000012D + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08081180: .4byte 0x0000FF80 +_08081184: .4byte 0x0000012D + + thumb_func_start sub_08081188 +sub_08081188: @ 0x08081188 + push {lr} + adds r2, r0, #0 + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + adds r0, r2, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _080811A8 + adds r0, r2, #0 + bl sub_08016A30 +_080811A8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080811AC +sub_080811AC: @ 0x080811AC + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_080002A0 + adds r4, #0x6e + strh r0, [r4] + pop {r4, pc} + + thumb_func_start sub_080811C8 +sub_080811C8: @ 0x080811C8 + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #6 + ands r1, r2 + strb r1, [r0, #0x18] + bx lr + .align 2, 0 + + thumb_func_start sub_080811D8 +sub_080811D8: @ 0x080811D8 + push {lr} + bl sub_08081188 + ldr r0, _080811E8 @ =0x00000215 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_080811E8: .4byte 0x00000215 + + thumb_func_start sub_080811EC +sub_080811EC: @ 0x080811EC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x69 + ldrb r0, [r0] + cmp r0, #6 + beq _08081200 + adds r0, r4, #0 + bl sub_080AEFE0 + b _08081206 +_08081200: + adds r0, r4, #0 + bl sub_0806F69C +_08081206: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + ldr r0, [r4, #0x20] + cmp r0, #0 + bgt _08081228 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_080814A4 +_08081228: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808122C +sub_0808122C: @ 0x0808122C + push {lr} + ldr r2, _08081244 @ =gUnk_0811E814 + adds r1, r0, #0 + adds r1, #0x69 + ldrb r1, [r1] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08081244: .4byte gUnk_0811E814 + + thumb_func_start sub_08081248 +sub_08081248: @ 0x08081248 + push {r4, lr} + adds r4, r0, #0 + bl sub_08081500 + adds r0, r4, #0 + bl sub_080814C0 + cmp r0, #0 + beq _08081264 + adds r0, r4, #0 + movs r1, #0 + bl sub_08081404 + b _0808126A +_08081264: + adds r0, r4, #0 + bl sub_0800442E +_0808126A: + pop {r4, pc} + + thumb_func_start sub_0808126C +sub_0808126C: @ 0x0808126C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0808153C + pop {r4, pc} + + thumb_func_start sub_0808127C +sub_0808127C: @ 0x0808127C + push {r4, lr} + adds r4, r0, #0 + bl sub_080814C0 + cmp r0, #0 + beq _08081292 + adds r0, r4, #0 + movs r1, #0 + bl sub_08081404 + b _08081298 +_08081292: + adds r0, r4, #0 + bl sub_0808153C +_08081298: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_113 +nullsub_113: @ 0x0808129C + bx lr + .align 2, 0 + + thumb_func_start sub_080812A0 +sub_080812A0: @ 0x080812A0 + push {lr} + bl sub_08081500 + pop {pc} + + thumb_func_start sub_080812A8 +sub_080812A8: @ 0x080812A8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080002D0 + cmp r0, #0xf + beq _080812E4 + adds r0, r5, #0 + adds r0, #0x6e + ldrh r4, [r0] + adds r0, r5, #0 + bl sub_080002A0 + cmp r4, r0 + beq _080812E4 + movs r0, #0 + strb r0, [r5, #0x15] + movs r2, #0 + strh r0, [r5, #0x24] + ldrb r1, [r5, #0x18] + subs r0, #4 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r0, r5, #0 + adds r0, #0x69 + strb r2, [r0] + adds r0, r5, #0 + bl sub_080810A8 +_080812E4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080812E8 +sub_080812E8: @ 0x080812E8 + push {r4, lr} + adds r4, r0, #0 + ldr r3, _0808131C @ =gUnk_03003F80 + adds r0, r3, #0 + adds r0, #0x26 + ldrb r1, [r0] + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _08081318 + ldr r0, [r3, #0x30] + ands r0, r2 + cmp r0, #0 + bne _08081318 + ldr r1, _08081320 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080177A0 + cmp r0, #0 + beq _08081318 + adds r0, r4, #0 + bl sub_080810FC +_08081318: + pop {r4, pc} + .align 2, 0 +_0808131C: .4byte gUnk_03003F80 +_08081320: .4byte gLinkEntity + + thumb_func_start nullsub_510 +nullsub_510: @ 0x08081324 + bx lr + .align 2, 0 + + thumb_func_start sub_08081328 +sub_08081328: @ 0x08081328 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x54] + ldrh r1, [r2, #8] + movs r0, #0xc2 + lsls r0, r0, #2 + cmp r1, r0 + beq _08081342 + adds r0, r4, #0 + movs r1, #0 + bl sub_08081404 + b _08081364 +_08081342: + adds r0, r2, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + ldr r2, _08081368 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080177A0 + cmp r0, #0 + beq _08081364 + adds r0, r4, #0 + bl sub_080810FC +_08081364: + pop {r4, pc} + .align 2, 0 +_08081368: .4byte gLinkEntity + + thumb_func_start sub_0808136C +sub_0808136C: @ 0x0808136C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080813B2 + ldr r3, [r5, #0x54] + ldr r0, [r3, #0x2c] + str r0, [r5, #0x2c] + ldr r0, [r3, #0x30] + str r0, [r5, #0x30] + ldrb r2, [r3, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r4, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r3, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x19] + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_08003FC4 + b _080813BA +_080813B2: + adds r0, r5, #0 + movs r1, #1 + bl sub_08081404 +_080813BA: + pop {r4, r5, pc} + + thumb_func_start sub_080813BC +sub_080813BC: @ 0x080813BC + push {lr} + ldr r2, _080813D0 @ =gUnk_0811E840 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080813D0: .4byte gUnk_0811E840 + + thumb_func_start sub_080813D4 +sub_080813D4: @ 0x080813D4 + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xd] + strb r1, [r0, #0x1d] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + bx lr + + thumb_func_start sub_080813E8 +sub_080813E8: @ 0x080813E8 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_080813F0 +sub_080813F0: @ 0x080813F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08081402 + adds r0, r4, #0 + bl sub_080810FC +_08081402: + pop {r4, pc} + + thumb_func_start sub_08081404 +sub_08081404: @ 0x08081404 + push {lr} + cmp r1, #0 + beq _08081418 + adds r1, r0, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _08081418 + bl sub_0807CCC8 +_08081418: + bl sub_0805E780 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08081420 +sub_08081420: @ 0x08081420 + push {r4, lr} + adds r4, r0, #0 + bl sub_08081450 + cmp r0, #0 + bne _08081438 + ldrb r0, [r4, #0xa] + ldrb r1, [r4, #0xb] + bl sub_08053FF0 + movs r0, #0 + b _0808144C +_08081438: + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldrb r0, [r4, #0xa] + ldrb r1, [r4, #0xb] + movs r2, #0 + bl sub_080A7C00 + movs r0, #1 +_0808144C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08081450 +sub_08081450: @ 0x08081450 + push {r4, lr} + movs r4, #0 + ldr r1, _08081478 @ =gUnk_080FD5B4 + ldrb r2, [r0, #0xa] + lsls r0, r2, #3 + adds r0, r0, r1 + ldrb r1, [r0, #3] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08081470 + adds r0, r2, #0 + bl sub_0807CA84 + cmp r0, #0 + bne _08081472 +_08081470: + movs r4, #1 +_08081472: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_08081478: .4byte gUnk_080FD5B4 + + thumb_func_start sub_0808147C +sub_0808147C: @ 0x0808147C + lsls r0, r0, #3 + ldr r1, _08081488 @ =gUnk_0811E84C + adds r0, r0, r1 + ldrb r0, [r0, #4] + bx lr + .align 2, 0 +_08081488: .4byte gUnk_0811E84C + + thumb_func_start sub_0808148C +sub_0808148C: @ 0x0808148C + push {lr} + lsls r0, r0, #3 + ldr r1, _080814A0 @ =gUnk_0811E84C + adds r1, r0, r1 + ldrh r0, [r1, #2] + cmp r0, #0 + beq _0808149E + bl sub_080A3268 +_0808149E: + pop {pc} + .align 2, 0 +_080814A0: .4byte gUnk_0811E84C + + thumb_func_start sub_080814A4 +sub_080814A4: @ 0x080814A4 + push {lr} + adds r1, r0, #0 + adds r0, #0x69 + ldrb r0, [r0] + cmp r0, #0xa + bne _080814B6 + adds r1, #0x6c + movs r0, #0x78 + b _080814BC +_080814B6: + adds r1, #0x6c + movs r0, #0x96 + lsls r0, r0, #2 +_080814BC: + strh r0, [r1] + pop {pc} + + thumb_func_start sub_080814C0 +sub_080814C0: @ 0x080814C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805E40C + cmp r0, #0 + bne _080814FA + adds r0, r4, #0 + adds r0, #0x6c + ldrh r1, [r0] + subs r1, #1 + strh r1, [r0] + lsls r0, r1, #0x10 + cmp r0, #0 + bne _080814E0 + movs r0, #1 + b _080814FC +_080814E0: + lsls r0, r1, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x59 + bhi _080814FA + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_080814FA: + movs r0, #0 +_080814FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08081500 +sub_08081500: @ 0x08081500 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x68 + ldrb r0, [r5] + cmp r0, #0 + bne _08081538 + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + bne _08081522 + movs r0, #1 + strb r0, [r5] + b _08081538 +_08081522: + cmp r0, #1 + bne _08081532 + ldrb r0, [r4, #0xa] + bl sub_0808148C + adds r0, r4, #0 + bl sub_08016A04 +_08081532: + adds r0, r4, #0 + bl sub_080AEFE0 +_08081538: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808153C +sub_0808153C: @ 0x0808153C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x68 + ldrb r0, [r5] + cmp r0, #1 + bhi _08081596 + cmp r0, #0 + bne _0808157E + movs r1, #0x80 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08081596 + adds r0, r4, #0 + bl sub_0800442E + cmp r0, #0 + bne _08081596 + movs r0, #1 + strb r0, [r5] + movs r0, #0xf0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + ldrb r0, [r4, #0xa] + bl sub_0808148C + adds r0, r4, #0 + bl sub_08016A04 + b _08081596 +_0808157E: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08081596 + movs r0, #2 + strb r0, [r5] + ldrb r0, [r4, #0xa] + bl sub_0808148C +_08081596: + pop {r4, r5, pc} + + thumb_func_start sub_08081598 +sub_08081598: @ 0x08081598 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080815AC + adds r0, r4, #0 + movs r1, #1 + bl sub_08081404 +_080815AC: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xe + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + movs r1, #8 + rsbs r1, r1, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08081618 @ =gLinkEntity + str r0, [r4, #0x54] + adds r1, r4, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x36] + subs r0, #4 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xa] + cmp r0, #0x5f + beq _08081614 + adds r0, r4, #0 + bl sub_08081420 + cmp r0, #0 + beq _08081614 + adds r0, r4, #0 + movs r1, #1 + bl sub_08081404 +_08081614: + pop {r4, pc} + .align 2, 0 +_08081618: .4byte gLinkEntity + + thumb_func_start sub_0808161C +sub_0808161C: @ 0x0808161C + push {lr} + ldr r2, _08081630 @ =gUnk_0811EBFC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08081630: .4byte gUnk_0811EBFC + + thumb_func_start sub_08081634 +sub_08081634: @ 0x08081634 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x6c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808169C + movs r5, #0 + movs r0, #0x65 + strh r0, [r4, #0x12] + movs r1, #2 + strb r1, [r4, #0xc] + strb r5, [r4, #0x15] + movs r0, #0x40 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08016A04 + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0xe] + movs r2, #0x80 + cmp r0, #0 + beq _08081674 + adds r2, r0, #0 + strb r5, [r4, #0xe] +_08081674: + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl sub_080AE008 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + ldr r0, _08081698 @ =0x00000129 + bl sub_080A3268 + b _0808170C + .align 2, 0 +_08081698: .4byte 0x00000129 +_0808169C: + movs r0, #0xc + ands r0, r1 + cmp r0, #0 + beq _080816B2 + adds r0, r4, #0 + bl sub_08081790 + adds r0, r4, #0 + bl sub_0808180C + b _08081702 +_080816B2: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080816C4 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _08081702 +_080816C4: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + ldr r1, _08081718 @ =gUnk_0811EC08 + ldrb r0, [r4, #0xa] + lsrs r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0] + ldrb r0, [r4, #0xa] + movs r1, #3 + ands r0, r1 + lsls r0, r0, #1 + asrs r2, r0 + ands r2, r1 + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _080816FA + ldr r0, _0808171C @ =gUnk_0811EC20 + adds r0, r2, r0 + ldrb r0, [r0] + strb r0, [r1, #0xe] +_080816FA: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08004260 +_08081702: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + bl sub_08004488 +_0808170C: + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + pop {r4, r5, pc} + .align 2, 0 +_08081718: .4byte gUnk_0811EC08 +_0808171C: .4byte gUnk_0811EC20 + + thumb_func_start sub_08081720 +sub_08081720: @ 0x08081720 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08081744 + adds r0, r4, #0 + bl sub_08081790 + adds r0, r4, #0 + bl sub_0808180C + b _0808175E +_08081744: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808175E + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] +_0808175E: + pop {r4, pc} + + thumb_func_start sub_08081760 +sub_08081760: @ 0x08081760 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808177E + adds r0, r4, #0 + bl sub_0808180C + b _0808178C +_0808177E: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808178C + adds r0, r4, #0 + bl sub_0806F69C +_0808178C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08081790 +sub_08081790: @ 0x08081790 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x6d + ldrb r0, [r1] + cmp r0, #0xef + bhi _080817B4 + ldr r0, _080817B0 @ =gUnk_0811EC64 + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r2, #0 + bl sub_0805457C + b _080817C6 + .align 2, 0 +_080817B0: .4byte gUnk_0811EC64 +_080817B4: + ldr r0, _080817C8 @ =gUnk_0811EC24 + ldrb r1, [r1] + subs r1, #0xf0 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_080817C6: + pop {pc} + .align 2, 0 +_080817C8: .4byte gUnk_0811EC24 + + thumb_func_start sub_080817CC +sub_080817CC: @ 0x080817CC + push {lr} + movs r1, #9 + bl sub_0805457C + pop {pc} + .align 2, 0 + + thumb_func_start sub_080817D8 +sub_080817D8: @ 0x080817D8 + push {lr} + movs r1, #0xd + bl sub_0805457C + pop {pc} + .align 2, 0 + + thumb_func_start sub_080817E4 +sub_080817E4: @ 0x080817E4 + push {lr} + movs r1, #0xe + bl sub_0805457C + pop {pc} + .align 2, 0 + + thumb_func_start sub_080817F0 +sub_080817F0: @ 0x080817F0 + push {lr} + movs r1, #1 + bl sub_0805457C + pop {pc} + .align 2, 0 + + thumb_func_start sub_080817FC +sub_080817FC: @ 0x080817FC + push {lr} + adds r1, r0, #0 + adds r1, #0x6e + ldrb r1, [r1] + movs r2, #0 + bl sub_08054754 + pop {pc} + + thumb_func_start sub_0808180C +sub_0808180C: @ 0x0808180C + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_08081814 +sub_08081814: @ 0x08081814 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08081850 @ =gUnk_0811EE28 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + beq _08081838 + adds r0, r4, #0 + bl sub_08080CB4 +_08081838: + ldrb r0, [r4, #0xe] + cmp r0, #2 + bgt _0808184E + cmp r0, #1 + blt _0808184E + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _0808184E + adds r0, r4, #0 + bl sub_0800445C +_0808184E: + pop {r4, pc} + .align 2, 0 +_08081850: .4byte gUnk_0811EE28 + + thumb_func_start sub_08081854 +sub_08081854: @ 0x08081854 + push {r4, lr} + adds r4, r0, #0 + movs r3, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + strb r3, [r4, #0x16] + str r4, [r4, #0x54] + adds r0, r4, #0 + bl sub_08081A5C + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0808188E + cmp r0, #1 + beq _08081898 + b _0808189C +_0808188E: + ldr r0, _08081894 @ =gUnk_080FD328 + b _0808189A + .align 2, 0 +_08081894: .4byte gUnk_080FD328 +_08081898: + ldr r0, _080818A0 @ =gUnk_080FD198 +_0808189A: + str r0, [r4, #0x48] +_0808189C: + pop {r4, pc} + .align 2, 0 +_080818A0: .4byte gUnk_080FD198 + + thumb_func_start sub_080818A4 +sub_080818A4: @ 0x080818A4 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xd] + cmp r2, #0 + beq _080818C0 + movs r1, #2 + strb r1, [r4, #0xc] + ldr r0, _080818BC @ =gUnk_0200AF00 + adds r0, #0x2f + strb r1, [r0] + b _08081920 + .align 2, 0 +_080818BC: .4byte gUnk_0200AF00 +_080818C0: + ldrb r0, [r4, #0xa] + cmp r0, #0x36 + bne _080818F0 + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08081920 + strb r2, [r1] + movs r0, #3 + strb r0, [r4, #0xc] + ldr r1, _080818E8 @ =gUnk_02034350 + movs r0, #1 + str r0, [r1, #0x68] + ldr r1, _080818EC @ =gUnk_03003F80 + movs r0, #7 + strb r0, [r1, #0xc] + b _08081920 + .align 2, 0 +_080818E8: .4byte gUnk_02034350 +_080818EC: .4byte gUnk_03003F80 +_080818F0: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08081920 + strb r2, [r1] + movs r0, #1 + strb r0, [r4, #0xd] + bl sub_08078B48 + bl sub_08077B2C + ldr r1, _08081924 @ =gUnk_03003F80 + movs r0, #4 + strb r0, [r1, #5] + ldr r0, _08081928 @ =gLinkEntity + str r4, [r0, #0x74] + ldr r0, _0808192C @ =gUnk_0200AF00 + adds r0, #0x2f + movs r1, #2 + strb r1, [r0] + bl sub_08056360 +_08081920: + pop {r4, pc} + .align 2, 0 +_08081924: .4byte gUnk_03003F80 +_08081928: .4byte gLinkEntity +_0808192C: .4byte gUnk_0200AF00 + + thumb_func_start sub_08081930 +sub_08081930: @ 0x08081930 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _08081968 @ =gUnk_0200AF00 + adds r6, r0, #0 + adds r6, #0x2f + movs r0, #2 + strb r0, [r6] + ldr r3, _0808196C @ =gLinkEntity + ldrb r1, [r3, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + subs r0, #6 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r5, _08081970 @ =gUnk_03003F80 + ldrb r0, [r5, #5] + cmp r0, #0 + beq _0808195E + ldr r0, [r3, #0x74] + cmp r4, r0 + beq _08081974 +_0808195E: + adds r0, r4, #0 + bl sub_080819B4 + b _080819AC + .align 2, 0 +_08081968: .4byte gUnk_0200AF00 +_0808196C: .4byte gLinkEntity +_08081970: .4byte gUnk_03003F80 +_08081974: + bl sub_080784E4 + adds r1, r0, #0 + ldr r0, [r1, #8] + cmp r0, #0 + beq _08081998 + ldrb r0, [r1, #1] + cmp r0, #1 + bne _08081998 + movs r0, #7 + strb r0, [r6] + adds r0, r5, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0x88 + ands r0, r1 + cmp r0, #0 + bne _080819AC +_08081998: + ldr r0, _080819B0 @ =gUnk_03003F80 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0x98 + ands r0, r1 + cmp r0, #0 + beq _080819AC + adds r0, r4, #0 + bl sub_080819B4 +_080819AC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080819B0: .4byte gUnk_03003F80 + + thumb_func_start sub_080819B4 +sub_080819B4: @ 0x080819B4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08081A48 @ =gUnk_02034350 + ldrb r0, [r0, #6] + cmp r0, #0 + bne _080819D4 + ldr r0, [r5, #0x50] + cmp r0, #0 + beq _080819D0 + adds r0, #0x20 + ldrb r1, [r5, #0xf] + adds r0, r0, r1 + movs r1, #0xff + strb r1, [r0] +_080819D0: + bl sub_0805E780 +_080819D4: + ldr r0, _08081A4C @ =gUnk_03003F80 + movs r2, #0 + strb r2, [r0, #5] + ldr r4, _08081A50 @ =gLinkEntity + str r2, [r4, #0x74] + ldr r1, _08081A54 @ =gUnk_0200AF00 + ldr r3, _08081A48 @ =gUnk_02034350 + strb r2, [r3, #6] + adds r0, r1, #0 + adds r0, #0x2c + strb r2, [r0] + adds r1, #0x2f + strb r2, [r1] + strb r2, [r3, #7] + adds r1, r5, #0 + adds r1, #0x80 + ldr r3, _08081A58 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + ldrh r1, [r1] + adds r0, r0, r1 + movs r1, #0 + strh r0, [r5, #0x2e] + movs r6, #0x82 + ldrh r0, [r3, #8] + ldrh r3, [r6, r5] + adds r0, r0, r3 + strh r0, [r5, #0x32] + str r2, [r5, #0x34] + movs r3, #1 + strb r3, [r5, #0xc] + strb r1, [r5, #0xd] + ldrb r1, [r4, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r5, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x1b] + adds r0, r5, #0 + adds r0, #0x38 + strb r3, [r0] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + bl sub_08016A04 + adds r0, r5, #0 + bl sub_08081A5C + pop {r4, r5, r6, pc} + .align 2, 0 +_08081A48: .4byte gUnk_02034350 +_08081A4C: .4byte gUnk_03003F80 +_08081A50: .4byte gLinkEntity +_08081A54: .4byte gUnk_0200AF00 +_08081A58: .4byte gUnk_03000BF0 + + thumb_func_start sub_08081A5C +sub_08081A5C: @ 0x08081A5C + push {r4, lr} + adds r4, r0, #0 + bl sub_080787D8 + adds r2, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _08081A7A + ldr r0, _08081A7C @ =gUnk_03003DF0 + lsls r1, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r0 + movs r0, #0 + strb r0, [r1, #0xa] +_08081A7A: + pop {r4, pc} + .align 2, 0 +_08081A7C: .4byte gUnk_03003DF0 + + thumb_func_start sub_08081A80 +sub_08081A80: @ 0x08081A80 + push {lr} + adds r2, r0, #0 + ldr r0, _08081A98 @ =gUnk_02034350 + ldr r0, [r0, #0x68] + cmp r0, #0 + bne _08081A9C + bl sub_08081AB0 + bl sub_0805E780 + b _08081AAC + .align 2, 0 +_08081A98: .4byte gUnk_02034350 +_08081A9C: + cmp r0, #2 + bne _08081AAC + movs r1, #0 + movs r0, #1 + strb r0, [r2, #0xc] + strb r1, [r2, #0xd] + bl sub_08081AB0 +_08081AAC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08081AB0 +sub_08081AB0: @ 0x08081AB0 + push {lr} + ldr r1, _08081AC4 @ =gUnk_02034350 + movs r0, #0 + str r0, [r1, #0x68] + strb r0, [r1, #6] + strb r0, [r1, #7] + bl sub_08078A90 + pop {pc} + .align 2, 0 +_08081AC4: .4byte gUnk_02034350 + + thumb_func_start sub_08081AC8 +sub_08081AC8: @ 0x08081AC8 + push {lr} + ldr r2, _08081ADC @ =gUnk_0811EE38 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08081ADC: .4byte gUnk_0811EE38 + + thumb_func_start sub_08081AE0 +sub_08081AE0: @ 0x08081AE0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x84 + ldrh r1, [r0] + cmp r1, #0 + beq _08081B0E + subs r0, #0x4c + strb r1, [r0] +_08081B0E: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08081B6C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x74 + strh r1, [r5] + ldrh r0, [r5] + adds r6, r4, #0 + adds r6, #0x38 + ldrb r1, [r6] + bl sub_080002B0 + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08081B70 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08081B70 + movs r0, #5 + strb r0, [r4, #0xc] + ldrh r1, [r5] + ldrb r2, [r6] + movs r0, #0x7a + bl sub_0807B314 + b _08081B82 + .align 2, 0 +_08081B6C: .4byte gUnk_03000BF0 +_08081B70: + adds r0, r4, #0 + bl sub_08081E3C + cmp r0, #0 + beq _08081B7E + movs r0, #2 + b _08081B80 +_08081B7E: + movs r0, #1 +_08081B80: + strb r0, [r4, #0xc] +_08081B82: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08081B84 +sub_08081B84: @ 0x08081B84 + push {r4, lr} + adds r4, r0, #0 + bl sub_08081E3C + cmp r0, #0 + beq _08081BAA + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] +_08081BAA: + pop {r4, pc} + + thumb_func_start sub_08081BAC +sub_08081BAC: @ 0x08081BAC + push {r4, lr} + adds r4, r0, #0 + bl sub_08081CB0 + cmp r0, #0 + beq _08081BDC + movs r0, #0 + strb r0, [r4, #0xd] + movs r0, #0xa + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0xa + bl sub_0805E4E0 + adds r0, r4, #0 + bl sub_08081FF8 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _08081BD8 + movs r0, #3 + b _08081BDA +_08081BD8: + movs r0, #5 +_08081BDA: + strb r0, [r4, #0xc] +_08081BDC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08081BE0 +sub_08081BE0: @ 0x08081BE0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x78 + bl sub_08081F7C + cmp r0, #0 + beq _08081C2C + adds r0, r4, #0 + bl sub_08081D28 + cmp r0, #0 + bne _08081C26 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xf] + ldr r1, _08081C1C @ =gUnk_03003F80 + ldrb r0, [r1, #5] + cmp r0, #2 + beq _08081C16 + adds r0, r1, #0 + adds r0, #0x35 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08081C20 +_08081C16: + movs r0, #0x18 + strb r0, [r4, #0xe] + b _08081C2C + .align 2, 0 +_08081C1C: .4byte gUnk_03003F80 +_08081C20: + movs r0, #8 + strb r0, [r4, #0xe] + b _08081C2C +_08081C26: + adds r0, r4, #0 + bl sub_08081E6C +_08081C2C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08081C30 +sub_08081C30: @ 0x08081C30 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08081C70 + subs r0, #1 + movs r5, #0 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08081C5A + strb r5, [r4, #0xf] + ldr r0, _08081C6C @ =0x00004035 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_08081C5A: + adds r0, r4, #0 + bl sub_08081CB0 + cmp r0, #0 + beq _08081C96 + movs r0, #3 + strb r0, [r4, #0xc] + strb r5, [r4, #0xe] + b _08081C96 + .align 2, 0 +_08081C6C: .4byte 0x00004035 +_08081C70: + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CD48 + adds r0, r4, #0 + adds r0, #0x74 + ldrh r1, [r0] + subs r0, #0x3c + ldrb r2, [r0] + movs r0, #0x77 + bl sub_0807B314 + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_080A3268 +_08081C96: + pop {r4, r5, pc} + + thumb_func_start sub_08081C98 +sub_08081C98: @ 0x08081C98 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x7a + bl sub_08081F7C + cmp r0, #0 + beq _08081CAC + adds r0, r4, #0 + bl sub_08081E6C +_08081CAC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08081CB0 +sub_08081CB0: @ 0x08081CB0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08081D74 + cmp r0, #0 + beq _08081CEC + adds r1, r4, #0 + adds r1, #0x70 + ldr r0, _08081CE4 @ =0x0000FFFF + strh r0, [r1] + adds r5, r4, #0 + adds r5, #0x74 + ldrh r0, [r5] + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080002B0 + ldr r1, _08081CE8 @ =0x00004035 + cmp r0, r1 + bne _08081D1C + ldrh r1, [r5] + ldrb r2, [r4] + movs r0, #0x78 + bl sub_0807B7D8 + b _08081D1C + .align 2, 0 +_08081CE4: .4byte 0x0000FFFF +_08081CE8: .4byte 0x00004035 +_08081CEC: + adds r6, r4, #0 + adds r6, #0x74 + ldrh r0, [r6] + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080002B0 + lsls r0, r0, #0x10 + lsrs r1, r0, #0x10 + cmp r1, #0x77 + beq _08081D24 + cmp r1, #0x79 + beq _08081D24 + ldr r0, _08081D20 @ =0x00004035 + cmp r1, r0 + beq _08081D24 + ldrh r0, [r6] + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x70 + strh r0, [r1] +_08081D1C: + movs r0, #1 + b _08081D26 + .align 2, 0 +_08081D20: .4byte 0x00004035 +_08081D24: + movs r0, #0 +_08081D26: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08081D28 +sub_08081D28: @ 0x08081D28 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08081D74 + cmp r0, #0 + beq _08081D44 + adds r1, r4, #0 + adds r1, #0x70 + ldr r0, _08081D40 @ =0x0000FFFF + strh r0, [r1] + movs r0, #1 + b _08081D72 + .align 2, 0 +_08081D40: .4byte 0x0000FFFF +_08081D44: + adds r5, r4, #0 + adds r5, #0x70 + ldrh r1, [r5] + ldr r0, _08081D6C @ =0x0000FFFF + cmp r1, r0 + beq _08081D70 + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + ldrh r5, [r5] + cmp r0, r5 + bne _08081D70 + movs r0, #1 + b _08081D72 + .align 2, 0 +_08081D6C: .4byte 0x0000FFFF +_08081D70: + movs r0, #0 +_08081D72: + pop {r4, r5, pc} + + thumb_func_start sub_08081D74 +sub_08081D74: @ 0x08081D74 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002E0 + cmp r0, #0xf + bne _08081D8E + movs r0, #0 + b _08081E0A +_08081D8E: + movs r6, #0 + adds r0, r4, #0 + bl sub_08081E0C + cmp r0, #0 + beq _08081DB4 + ldr r0, _08081DAC @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x90 + ands r0, r1 + cmp r0, #0 + bne _08081E06 + ldr r6, _08081DB0 @ =gLinkEntity + b _08081E06 + .align 2, 0 +_08081DAC: .4byte gUnk_03003F80 +_08081DB0: .4byte gLinkEntity +_08081DB4: + ldr r0, _08081DD8 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _08081E06 + ldr r5, _08081DDC @ =gUnk_03004040 + ldr r1, [r5] + adds r0, r4, #0 + movs r2, #5 + movs r3, #6 + bl sub_080041A0 + cmp r0, #0 + beq _08081DE0 + ldr r6, [r5] + b _08081E06 + .align 2, 0 +_08081DD8: .4byte gUnk_03003F80 +_08081DDC: .4byte gUnk_03004040 +_08081DE0: + ldr r1, [r5, #4] + adds r0, r4, #0 + movs r2, #5 + movs r3, #6 + bl sub_080041A0 + cmp r0, #0 + beq _08081DF4 + ldr r6, [r5, #4] + b _08081E06 +_08081DF4: + ldr r1, [r5, #8] + adds r0, r4, #0 + movs r2, #5 + movs r3, #6 + bl sub_080041A0 + cmp r0, #0 + beq _08081E06 + ldr r6, [r5, #8] +_08081E06: + str r6, [r4, #0x54] + adds r0, r6, #0 +_08081E0A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08081E0C +sub_08081E0C: @ 0x08081E0C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08081E28 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08081E22 + bl sub_08079F8C + cmp r0, #0 + bne _08081E2C +_08081E22: + movs r0, #0 + b _08081E38 + .align 2, 0 +_08081E28: .4byte gLinkEntity +_08081E2C: + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #5 + movs r3, #6 + bl sub_080041A0 +_08081E38: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08081E3C +sub_08081E3C: @ 0x08081E3C + push {lr} + adds r1, r0, #0 + adds r1, #0x74 + ldrh r2, [r1] + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r2, #0 + bl sub_080002B0 + adds r2, r0, #0 + ldr r1, _08081E64 @ =gUnk_0811EE50 +_08081E52: + ldrh r0, [r1] + cmp r0, r2 + beq _08081E68 + adds r1, #2 + ldrh r0, [r1] + cmp r0, #0 + bne _08081E52 + movs r0, #0 + b _08081E6A + .align 2, 0 +_08081E64: .4byte gUnk_0811EE50 +_08081E68: + movs r0, #1 +_08081E6A: + pop {pc} + + thumb_func_start sub_08081E6C +sub_08081E6C: @ 0x08081E6C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0x74 + ldrh r6, [r0] + subs r0, #0x3c + ldrb r5, [r0] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080002B0 + adds r7, r0, #0 + ldr r0, _08081EEC @ =0x00003FFF + cmp r7, r0 + bls _08081EE8 + adds r0, r5, #0 + bl sub_0808094C + adds r1, r0, #0 + ldrb r0, [r4, #0xa] + movs r4, #0x78 + cmp r0, #0 + bne _08081E9A + movs r4, #0x7a +_08081E9A: + ldr r0, _08081EF0 @ =0x00007004 + adds r3, r1, r0 + lsls r0, r4, #1 + ldr r2, _08081EF4 @ =0x00006004 + adds r1, r1, r2 + adds r1, r1, r0 + ldrh r0, [r1] + lsls r0, r0, #3 + adds r3, r3, r0 + ldr r2, _08081EF8 @ =gUnk_02019EE0 + cmp r5, #2 + bne _08081EB4 + ldr r2, _08081EFC @ =gUnk_02002F00 +_08081EB4: + movs r0, #0x3f + ands r0, r6 + lsls r0, r0, #1 + movs r1, #0xfc + lsls r1, r1, #4 + ands r1, r6 + lsls r1, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r2, r2, r0 + adds r0, r2, #0 + adds r1, r3, #0 + bl sub_08081F00 + cmp r0, #0 + bne _08081EE8 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0807B314 + adds r0, r7, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_0800015E +_08081EE8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08081EEC: .4byte 0x00003FFF +_08081EF0: .4byte 0x00007004 +_08081EF4: .4byte 0x00006004 +_08081EF8: .4byte gUnk_02019EE0 +_08081EFC: .4byte gUnk_02002F00 + + thumb_func_start sub_08081F00 +sub_08081F00: @ 0x08081F00 + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + ldr r1, [r2] + ldr r0, [r3] + cmp r1, r0 + bne _08081F20 + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r2, r1 + ldr r1, [r0] + ldr r0, [r3, #4] + cmp r1, r0 + bne _08081F20 + movs r0, #1 + b _08081F22 +_08081F20: + movs r0, #0 +_08081F22: + pop {pc} + + thumb_func_start sub_08081F24 +sub_08081F24: @ 0x08081F24 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08081F50 + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #0x11] + ldrh r0, [r2, #0x2e] + adds r0, #7 + strh r0, [r2, #0x2e] + ldrh r0, [r2, #0x32] + adds r0, #5 + strh r0, [r2, #0x32] +_08081F50: + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08081F7A + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #0x11] + ldrh r0, [r2, #0x2e] + subs r0, #7 + strh r0, [r2, #0x2e] + ldrh r0, [r2, #0x32] + adds r0, #5 + strh r0, [r2, #0x32] +_08081F7A: + pop {r4, pc} + + thumb_func_start sub_08081F7C +sub_08081F7C: @ 0x08081F7C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r7, r1, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08081FF4 + subs r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bls _08081FA4 + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _08081FF4 + adds r1, r0, #0 + adds r1, #0x63 + movs r0, #0xfc + strb r0, [r1] + b _08081FF4 +_08081FA4: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bne _08081FF4 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + adds r6, r4, #0 + adds r6, #0x74 + ldrh r1, [r6] + adds r5, r4, #0 + adds r5, #0x38 + ldrb r2, [r5] + adds r0, r7, #0 + bl sub_0807B314 + adds r0, r4, #0 + bl sub_08081F24 + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_080A3268 + adds r2, r4, #0 + adds r2, #0x70 + ldrh r1, [r2] + ldr r0, _08081FF0 @ =0x0000FFFF + cmp r1, r0 + beq _08081FEC + adds r0, r1, #0 + ldrh r1, [r6] + ldrb r2, [r5] + bl sub_0800015E +_08081FEC: + movs r0, #0 + b _08081FF6 + .align 2, 0 +_08081FF0: .4byte 0x0000FFFF +_08081FF4: + movs r0, #1 +_08081FF6: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08081FF8 +sub_08081FF8: @ 0x08081FF8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x54] + ldr r0, _08082038 @ =gLinkEntity + cmp r1, r0 + bne _08082036 + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_080045C4 + adds r6, r0, #0 + ldr r0, [r4, #0x54] + movs r1, #0x80 + lsls r1, r1, #2 + adds r2, r6, #0 + bl sub_080044AE + movs r5, #0 + ldr r4, _0808203C @ =gUnk_03004040 +_0808201E: + ldr r0, [r4] + cmp r0, #0 + beq _0808202E + movs r1, #0x80 + lsls r1, r1, #2 + adds r2, r6, #0 + bl sub_080044AE +_0808202E: + adds r4, #4 + adds r5, #1 + cmp r5, #2 + bls _0808201E +_08082036: + pop {r4, r5, r6, pc} + .align 2, 0 +_08082038: .4byte gLinkEntity +_0808203C: .4byte gUnk_03004040 + + thumb_func_start sub_08082040 +sub_08082040: @ 0x08082040 + push {lr} + ldr r2, _08082054 @ =gUnk_0811EE5C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08082054: .4byte gUnk_0811EE5C + + thumb_func_start sub_08082058 +sub_08082058: @ 0x08082058 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_08082098 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08082098 +sub_08082098: @ 0x08082098 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _08082100 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080820AC + bl sub_0805E780 +_080820AC: + ldr r5, _08082104 @ =gLinkEntity + adds r0, r4, #0 + bl sub_08079BD8 + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r1, [r5, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r1, [r5, #0x14] + movs r0, #0xe + ands r0, r1 + strb r0, [r4, #0x14] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0x14] + lsrs r3, r0, #1 + adds r7, r3, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0x14 + beq _08082122 + cmp r0, #0x14 + bgt _08082108 + cmp r0, #0xa + beq _0808212A + b _0808212E + .align 2, 0 +_08082100: .4byte gUnk_03003F80 +_08082104: .4byte gLinkEntity +_08082108: + cmp r0, #0x16 + beq _08082112 + cmp r0, #0x18 + beq _08082126 + b _0808212E +_08082112: + ldrb r0, [r4, #0x14] + movs r3, #0xd + adds r5, r4, #0 + adds r5, #0x58 + cmp r0, #2 + bne _080821F2 + movs r3, #0xe + b _080821F2 +_08082122: + movs r3, #0xc + b _080821EE +_08082126: + adds r3, #0xf + b _080821EE +_0808212A: + movs r3, #0x13 + b _080821EE +_0808212E: + adds r0, r5, #0 + adds r0, #0x42 + ldrb r0, [r0] + cmp r0, #0 + beq _0808213E + adds r3, r7, #0 + adds r3, #8 + b _080821EE +_0808213E: + ldr r2, _0808215C @ =gUnk_03003F80 + ldrb r1, [r2, #2] + adds r6, r1, #0 + cmp r6, #0 + beq _08082160 + movs r0, #0x10 + ands r0, r1 + adds r5, r4, #0 + adds r5, #0x58 + cmp r0, #0 + bne _080821F2 + adds r3, r7, #0 + adds r3, #0x19 + b _080821F2 + .align 2, 0 +_0808215C: .4byte gUnk_03003F80 +_08082160: + adds r0, r2, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #1 + beq _0808216E + cmp r0, #0x19 + bne _080821C8 +_0808216E: + adds r3, r7, #4 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, r3 + beq _08082180 + str r6, [r4, #0x34] + b _080821BA +_08082180: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r7, #0xff + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080821F2 + adds r2, r4, #0 + adds r2, #0x63 + movs r1, #0 + ldrsb r1, [r2, r1] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080821C0 + cmp r1, r0 + bgt _080821AC + subs r0, #1 + cmp r1, r0 + beq _080821B4 + b _080821F2 +_080821AC: + cmp r1, #0 + bne _080821F2 + movs r0, #0xfe + b _080821B8 +_080821B4: + ldrb r0, [r2] + orrs r0, r7 +_080821B8: + strb r0, [r2] +_080821BA: + movs r0, #6 + strb r0, [r4, #0xe] + b _080821F2 +_080821C0: + strb r6, [r2] + movs r0, #3 + strb r0, [r4, #0xe] + b _080821F2 +_080821C8: + adds r0, r2, #0 + adds r0, #0x26 + ldrb r2, [r0] + adds r1, r2, #0 + cmp r1, #0 + beq _080821E8 + movs r0, #0x80 + ands r0, r2 + adds r3, r7, #0 + adds r3, #0x14 + adds r5, r4, #0 + adds r5, #0x58 + cmp r0, #0 + beq _080821F2 + movs r3, #0x18 + b _080821F2 +_080821E8: + adds r0, r4, #0 + adds r0, #0x63 + strb r1, [r0] +_080821EE: + adds r5, r4, #0 + adds r5, #0x58 +_080821F2: + ldrb r0, [r5] + cmp r0, r3 + beq _08082202 + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_080042AC + b _08082208 +_08082202: + adds r0, r4, #0 + bl sub_080042B8 +_08082208: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0808220C +sub_0808220C: @ 0x0808220C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08082228 @ =gUnk_0811F090 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r4, #0x41 + movs r0, #0 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_08082228: .4byte gUnk_0811F090 + + thumb_func_start sub_0808222C +sub_0808222C: @ 0x0808222C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0808224C + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808224C + bl sub_0805E780 +_0808224C: + movs r2, #1 + strb r2, [r4, #0xc] + ldr r0, _08082308 @ =gUnk_080FD338 + str r0, [r4, #0x48] + movs r1, #0 + movs r0, #0x80 + strh r0, [r4, #0x24] + ldrh r0, [r4, #0x32] + adds r0, #3 + strh r0, [r4, #0x32] + strb r1, [r4, #0x16] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x45 + strb r2, [r0] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #0x6e + strb r0, [r1] + subs r1, #4 + movs r0, #0x84 + strb r0, [r1] + movs r0, #0x12 + strb r0, [r4, #0x1c] + adds r5, r4, #0 + adds r5, #0x38 + ldrb r0, [r5] + cmp r0, #0 + bne _08082298 + adds r0, r4, #0 + bl sub_08016A30 +_08082298: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r7, _0808230C @ =gUnk_03000BF0 + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r6, #0x3f + ands r0, r6 + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r7, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r0, r1 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x70 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #7 + mov r8, r1 + cmp r0, r8 + bne _080822D6 + bl sub_0805E780 +_080822D6: + movs r2, #0x2e + ldrsh r1, [r4, r2] + ldrh r0, [r7, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r4, r2] + ldrh r2, [r7, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + ldrb r2, [r5] + mov r0, r8 + bl sub_0800015E + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08082308: .4byte gUnk_080FD338 +_0808230C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08082310 +sub_08082310: @ 0x08082310 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r6, #0x7f + adds r1, r6, #0 + ands r1, r0 + cmp r1, #0x13 + beq _08082342 + cmp r1, #0x1d + beq _0808234C + adds r0, r5, #0 + bl sub_080002A0 + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #7 + cmp r4, r0 + bne _08082338 + b _080824F0 +_08082338: + adds r0, #1 + cmp r4, r0 + bhs _08082340 + b _08082484 +_08082340: + b _080823C4 +_08082342: + movs r1, #0 + movs r0, #3 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + b _080824F6 +_0808234C: + adds r0, r5, #0 + adds r0, #0x70 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080823C0 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r7, #0x32 + ldrsh r2, [r5, r7] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r1, #0 + movs r0, #5 + strb r0, [r5, #0xc] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r5, #0x20] + adds r0, r5, #0 + adds r0, #0x63 + strb r1, [r0] + ldrb r1, [r5, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r5, #0x10] + adds r0, r6, #0 + ands r0, r1 + strb r0, [r5, #0x10] + adds r0, r5, #0 + bl sub_08082824 + b _080824F6 + .align 2, 0 +_080823C0: .4byte gUnk_03000BF0 +_080823C4: + ldr r0, _080823D4 @ =0x00004004 + cmp r4, r0 + bls _080823D8 + adds r0, #0x63 + cmp r4, r0 + beq _08082448 + b _08082484 + .align 2, 0 +_080823D4: .4byte 0x00004004 +_080823D8: + ldr r1, _08082438 @ =0xFFFFBFFF + adds r0, r4, r1 + lsls r0, r0, #3 + strb r0, [r5, #0x15] + movs r0, #0x20 + strb r0, [r5, #0xe] + movs r0, #4 + strb r0, [r5, #0xc] + ldr r0, _0808243C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08082400 + ldrh r0, [r5, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r5, #0x24] + movs r0, #0x40 + strb r0, [r5, #0xe] +_08082400: + adds r0, r5, #0 + adds r0, #0x70 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08082440 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldr r0, _08082444 @ =0x0000010F + bl sub_08004488 + b _080824F6 + .align 2, 0 +_08082438: .4byte 0xFFFFBFFF +_0808243C: .4byte gUnk_03003F80 +_08082440: .4byte gUnk_03000BF0 +_08082444: .4byte 0x0000010F +_08082448: + adds r0, r5, #0 + adds r0, #0x70 + ldrh r0, [r0] + movs r7, #0x2e + ldrsh r1, [r5, r7] + ldr r3, _08082480 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + bl sub_0805E780 + b _080824F6 + .align 2, 0 +_08082480: .4byte gUnk_03000BF0 +_08082484: + adds r0, r5, #0 + bl sub_080002B8 + cmp r0, #0xd + bne _0808249A + adds r0, r5, #0 + movs r1, #0 + movs r2, #0 + bl CreateFX + b _080824D8 +_0808249A: + ldr r0, _080824E4 @ =0x00004005 + cmp r4, r0 + bne _080824D8 + ldr r0, _080824E8 @ =gUnk_03003F80 + adds r0, #0xab + movs r1, #4 + strb r1, [r0] + adds r0, r5, #0 + adds r0, #0x70 + ldrh r0, [r0] + movs r7, #0x2e + ldrsh r1, [r5, r7] + ldr r3, _080824EC @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_080824D8: + adds r0, r5, #0 + movs r1, #0 + bl sub_08082850 + b _080824F6 + .align 2, 0 +_080824E4: .4byte 0x00004005 +_080824E8: .4byte gUnk_03003F80 +_080824EC: .4byte gUnk_03000BF0 +_080824F0: + adds r0, r5, #0 + bl sub_08078930 +_080824F6: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080824F8 +sub_080824F8: @ 0x080824F8 + push {lr} + ldr r2, _0808250C @ =gUnk_0811F0A8 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808250C: .4byte gUnk_0811F0A8 + + thumb_func_start sub_08082510 +sub_08082510: @ 0x08082510 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0x10] + movs r0, #0x80 + movs r2, #0 + orrs r0, r1 + strb r0, [r5, #0x10] + ldr r0, _08082578 @ =gUnk_080FD340 + str r0, [r5, #0x48] + adds r1, r5, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #1 + strb r0, [r1] + ldr r0, _0808257C @ =gLinkEntity + adds r0, #0x3b + ldrb r0, [r0] + subs r1, #4 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x63 + strb r2, [r0] + adds r0, #0xd + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08082580 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + pop {r4, r5, r6, pc} + .align 2, 0 +_08082578: .4byte gUnk_080FD340 +_0808257C: .4byte gLinkEntity +_08082580: .4byte gUnk_03000BF0 + + thumb_func_start nullsub_511 +nullsub_511: @ 0x08082584 + bx lr + .align 2, 0 + + thumb_func_start sub_08082588 +sub_08082588: @ 0x08082588 + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x18 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_0808259C +sub_0808259C: @ 0x0808259C + push {r4, lr} + adds r4, r0, #0 + bl sub_080043E8 + cmp r0, #2 + beq _080825B8 + cmp r0, #2 + bhi _080825B2 + cmp r0, #1 + beq _080825BE + b _080825D0 +_080825B2: + cmp r0, #3 + beq _080825C4 + b _080825D0 +_080825B8: + adds r0, r4, #0 + movs r1, #0xb + b _080825C8 +_080825BE: + adds r0, r4, #0 + movs r1, #0 + b _080825C8 +_080825C4: + adds r0, r4, #0 + movs r1, #0xc +_080825C8: + movs r2, #0 + bl CreateFX + b _080825E0 +_080825D0: + ldr r1, _080825DC @ =gLinkEntity + adds r0, r4, #0 + bl sub_08082850 + b _080825E4 + .align 2, 0 +_080825DC: .4byte gLinkEntity +_080825E0: + bl sub_0805E780 +_080825E4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080825E8 +sub_080825E8: @ 0x080825E8 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080825F0 +sub_080825F0: @ 0x080825F0 + push {lr} + adds r1, r0, #0 + ldr r0, _08082604 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _08082602 + adds r0, r1, #0 + bl sub_08082608 +_08082602: + pop {pc} + .align 2, 0 +_08082604: .4byte gUnk_03003F80 + + thumb_func_start sub_08082608 +sub_08082608: @ 0x08082608 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + strb r2, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_08082614 +sub_08082614: @ 0x08082614 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + bl sub_0800445C + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _08082638 + adds r0, r5, #0 + bl sub_0806F69C + adds r0, r5, #0 + bl sub_08016A6C + b _080826DC +_08082638: + adds r0, r5, #0 + bl sub_0800442E + cmp r0, #0 + bne _080826DC + movs r0, #1 + strb r0, [r5, #0xc] + ldr r0, _080826A4 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08082658 + ldrh r0, [r5, #0x24] + lsls r0, r0, #1 + strh r0, [r5, #0x24] +_08082658: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r2, _080826A8 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r4, #0x32 + ldrsh r1, [r5, r4] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r4, r5, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x70 + strh r0, [r1] + adds r0, r5, #0 + bl sub_080002A0 + adds r6, r4, #0 + cmp r0, #0x72 + bhi _080826AC + cmp r0, #0x71 + blo _080826AC + adds r0, r5, #0 + movs r1, #0 + bl sub_08082850 + b _080826DC + .align 2, 0 +_080826A4: .4byte gUnk_03003F80 +_080826A8: .4byte gUnk_03000BF0 +_080826AC: + movs r0, #0x80 + lsls r0, r0, #7 + movs r7, #0x2e + ldrsh r1, [r5, r7] + ldr r3, _080826E0 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r7, #0x32 + ldrsh r2, [r5, r7] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r6] + bl sub_0800015E + adds r0, r5, #0 + bl sub_08078930 +_080826DC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080826E0: .4byte gUnk_03000BF0 + + thumb_func_start sub_080826E4 +sub_080826E4: @ 0x080826E4 + push {lr} + ldr r2, _080826F8 @ =gUnk_0811F0C4 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080826F8: .4byte gUnk_0811F0C4 + + thumb_func_start sub_080826FC +sub_080826FC: @ 0x080826FC + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x30 + strb r1, [r0, #0x1d] + strb r2, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_0808270C +sub_0808270C: @ 0x0808270C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08082768 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _0808272A + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _08082770 +_0808272A: + adds r1, r5, #0 + adds r1, #0x62 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0x80 + lsls r0, r0, #7 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0808276C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + b _08082776 + .align 2, 0 +_08082768: .4byte gUnk_03003F80 +_0808276C: .4byte gUnk_03000BF0 +_08082770: + adds r0, r5, #0 + bl sub_0806F4E8 +_08082776: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08082778 +sub_08082778: @ 0x08082778 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xe] + cmp r1, #0 + bne _080827C4 + movs r0, #1 + strb r0, [r5, #0xe] + adds r0, r5, #0 + adds r0, #0x62 + strb r1, [r0] + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #0xfe + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x70 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080827E8 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_080827C4: + ldr r0, _080827EC @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _080827DE + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _080827F0 +_080827DE: + adds r0, r5, #0 + movs r1, #0 + bl sub_08082850 + b _080827F6 + .align 2, 0 +_080827E8: .4byte gUnk_03000BF0 +_080827EC: .4byte gUnk_03003F80 +_080827F0: + adds r0, r5, #0 + bl sub_0806F3E4 +_080827F6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080827F8 +sub_080827F8: @ 0x080827F8 + push {lr} + adds r1, r0, #0 + ldr r0, _08082810 @ =gUnk_03003F80 + ldrb r0, [r0, #0x1c] + cmp r0, #0 + bne _0808280C + adds r0, r1, #0 + movs r1, #0 + bl sub_08082850 +_0808280C: + pop {pc} + .align 2, 0 +_08082810: .4byte gUnk_03003F80 + + thumb_func_start nullsub_512 +nullsub_512: @ 0x08082814 + bx lr + .align 2, 0 + + thumb_func_start sub_08082818 +sub_08082818: @ 0x08082818 + push {lr} + movs r1, #0 + bl sub_08082850 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08082824 +sub_08082824: @ 0x08082824 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _08082836 + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_08082836: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0808284C + adds r0, r4, #0 + movs r1, #0 + bl sub_08082850 +_0808284C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08082850 +sub_08082850: @ 0x08082850 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrb r1, [r4, #0xa] + adds r0, #0x7d + ldrb r2, [r0] + ldrb r3, [r4, #0xb] + adds r0, r4, #0 + bl sub_0808288C + adds r2, r0, #0 + adds r0, r4, #0 + movs r1, #5 + bl CreateFX + cmp r0, #0 + beq _08082874 + str r5, [r0, #0x50] +_08082874: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _08082884 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 +_08082884: + bl sub_0805E780 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808288C +sub_0808288C: @ 0x0808288C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + mov r8, r3 + movs r6, #0 + cmp r4, #0 + beq _080828A6 + cmp r4, #0xff + bne _080828AA + b _080828D6 +_080828A6: + movs r6, #0x80 + b _080828D6 +_080828AA: + adds r0, r7, #0 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080A2988 + adds r2, r0, #0 + cmp r2, #0 + beq _080828D6 + mov r0, r8 + cmp r0, #2 + bne _080828D4 + movs r0, #5 + strb r0, [r2, #0xe] + adds r0, r7, #0 + adds r0, #0x86 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x86 + strh r1, [r0] + b _080828D6 +_080828D4: + strb r6, [r2, #0xe] +_080828D6: + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080828E0 +sub_080828E0: @ 0x080828E0 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080828F8 + ldr r0, _080828F4 @ =gUnk_0811F15C + b _08082900 + .align 2, 0 +_080828F4: .4byte gUnk_0811F15C +_080828F8: + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08082914 + ldr r0, _08082910 @ =gUnk_0811F14C +_08082900: + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08082924 + .align 2, 0 +_08082910: .4byte gUnk_0811F14C +_08082914: + ldr r0, _08082928 @ =gUnk_0811F154 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_08082924: + pop {pc} + .align 2, 0 +_08082928: .4byte gUnk_0811F154 + + thumb_func_start sub_0808292C +sub_0808292C: @ 0x0808292C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x11] + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + ldr r5, _080829C8 @ =gLinkEntity + ldrb r1, [r5, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + movs r0, #7 + ands r1, r0 + mov r0, ip + ldrb r2, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r0, [r5, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r1, [r4, #0x1a] + ands r3, r1 + orrs r3, r0 + strb r3, [r4, #0x1a] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r5, #0x14] + cmp r0, #2 + bne _080829A4 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_080829A4: + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080829CC + movs r0, #7 + strb r0, [r4, #0xf] + adds r0, r4, #0 + movs r1, #7 + bl sub_080042AC + movs r0, #0xf3 + bl sub_080A3268 + b _080829E2 + .align 2, 0 +_080829C8: .4byte gLinkEntity +_080829CC: + movs r0, #0 + strb r0, [r4, #0xe] + movs r0, #0xa + strb r0, [r4, #0xf] + ldrh r0, [r4, #0x32] + subs r0, #0xe + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #0x14 + bl sub_080042AC +_080829E2: + pop {r4, r5, pc} + + thumb_func_start sub_080829E4 +sub_080829E4: @ 0x080829E4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08082A10 @ =gLinkEntity + ldrb r1, [r0, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r5, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x1a] + ldr r3, _08082A14 @ =gUnk_02000050 + ldrb r0, [r3] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + bne _08082A18 + adds r0, r5, #0 + bl sub_0805E7BC + b _08082AB4 + .align 2, 0 +_08082A10: .4byte gLinkEntity +_08082A14: .4byte gUnk_02000050 +_08082A18: + cmp r1, #5 + beq _08082A9C + ldrb r1, [r3, #1] + adds r0, r1, #0 + cmp r0, #0xa + beq _08082A30 + cmp r0, #0 + beq _08082A30 + movs r0, #0xf + ands r0, r1 + cmp r0, #9 + bls _08082A4A +_08082A30: + adds r1, r5, #0 + adds r1, #0x58 + ldrb r2, [r5, #0xf] + movs r0, #3 + ldrb r1, [r1] + orrs r2, r0 + cmp r1, r2 + beq _08082A9C + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_080042AC + b _08082AB4 +_08082A4A: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08082A78 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x90 + ands r0, r1 + cmp r0, #0 + beq _08082A9C + bl sub_08000E50 + ldr r4, _08082A74 @ =gUnk_0811F16C + movs r1, #9 + bl __modsi3 + adds r0, r0, r4 + ldrb r0, [r0] + strb r0, [r5, #0xf] + b _08082A8C + .align 2, 0 +_08082A74: .4byte gUnk_0811F16C +_08082A78: + adds r2, r5, #0 + adds r2, #0x58 + ldr r1, _08082A98 @ =gUnk_0811F16C + ldrb r0, [r3, #1] + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r0, [r2] + cmp r0, r1 + beq _08082A9C + strb r1, [r5, #0xf] +_08082A8C: + ldrb r1, [r5, #0xf] + adds r0, r5, #0 + bl sub_080042AC + b _08082AB4 + .align 2, 0 +_08082A98: .4byte gUnk_0811F16C +_08082A9C: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #7 + bls _08082AAA + movs r0, #1 + b _08082AAC +_08082AAA: + movs r0, #0 +_08082AAC: + strb r0, [r5, #0xe] + adds r0, r5, #0 + bl sub_080042B8 +_08082AB4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08082AB8 +sub_08082AB8: @ 0x08082AB8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08082B10 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r5, #0x80 + ands r0, r5 + cmp r0, #0 + beq _08082ACC + bl sub_0805E780 +_08082ACC: + adds r0, r4, #0 + bl sub_080042B8 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _08082B5C + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08082B98 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0xa + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xe] + subs r5, r0, #1 + adds r0, r4, #0 + movs r1, #0x79 + adds r2, r5, #0 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08082B18 + cmp r5, #0 + bne _08082B14 + str r1, [r4, #0x50] + b _08082B18 + .align 2, 0 +_08082B10: .4byte gUnk_03003F80 +_08082B14: + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] +_08082B18: + ldrb r0, [r4, #0xe] + cmp r0, #6 + bne _08082B36 + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r1, [r4, #0x50] + movs r0, #1 + strb r0, [r1, #0xb] + adds r0, r4, #0 + movs r1, #0x1c + bl sub_080042AC + b _08082B98 +_08082B36: + ldr r1, _08082B58 @ =gUnk_0811F178 + ldrb r0, [r4, #0xe] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_080042AC + ldrb r0, [r4, #0xe] + cmp r0, #2 + bls _08082B98 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08082B98 + .align 2, 0 +_08082B58: .4byte gUnk_0811F178 +_08082B5C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _08082B98 + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0xe] + cmp r0, #0 + beq _08082B98 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0xe] + adds r1, #0x1b + adds r0, r4, #0 + bl sub_080042AC +_08082B98: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08082B9C +sub_08082B9C: @ 0x08082B9C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r1, [r6, #0x11] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r6, #0x11] + ldr r5, _08082C34 @ =gLinkEntity + ldrb r0, [r5, #0x1a] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + ldrb r1, [r6, #0x1a] + ands r2, r1 + orrs r2, r0 + strb r2, [r6, #0x1a] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r6, #0 + adds r0, #0x38 + movs r4, #0 + strb r1, [r0] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r6, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r6, #0x18] + movs r0, #1 + strb r0, [r6, #0xc] + adds r0, r6, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r6, #0 + movs r1, #0xc + bl sub_080042AC + adds r0, r6, #0 + adds r0, #0x82 + strh r4, [r0] + adds r4, r6, #0 + adds r4, #0x84 + ldr r1, [r4] + adds r0, r6, #0 + bl sub_0807DF74 + ldr r1, [r4] + adds r0, r6, #0 + bl sub_08082D20 + ldrb r0, [r5, #0x14] + cmp r0, #2 + bne _08082C2C + ldrb r0, [r6, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r6, #0x18] +_08082C2C: + adds r0, r6, #0 + bl sub_08082C5C + pop {r4, r5, r6, pc} + .align 2, 0 +_08082C34: .4byte gLinkEntity + + thumb_func_start sub_08082C38 +sub_08082C38: @ 0x08082C38 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x84 + ldr r1, [r4] + bl sub_0807DF74 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_08082D20 + ldrb r0, [r5, #0xc] + cmp r0, #1 + bhi _08082C5A + adds r0, r5, #0 + bl sub_08082C5C +_08082C5A: + pop {r4, r5, pc} + + thumb_func_start sub_08082C5C +sub_08082C5C: @ 0x08082C5C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xd] + cmp r0, #4 + bhi _08082D0C + lsls r0, r0, #2 + ldr r1, _08082C70 @ =_08082C74 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08082C70: .4byte _08082C74 +_08082C74: @ jump table + .4byte _08082C88 @ case 0 + .4byte _08082C9C @ case 1 + .4byte _08082CB0 @ case 2 + .4byte _08082CE4 @ case 3 + .4byte _08082CF8 @ case 4 +_08082C88: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x17 + beq _08082D0C + adds r0, r5, #0 + movs r1, #0x17 + bl sub_080042AC + b _08082D1C +_08082C9C: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x18 + beq _08082D0C + adds r0, r5, #0 + movs r1, #0x18 + bl sub_080042AC + b _08082D1C +_08082CB0: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08082D0C + bl sub_08000E50 + adds r4, r0, #0 + bl sub_08000E50 + adds r1, r0, #0 + ldr r2, _08082CE0 @ =gUnk_0811F18C + movs r0, #3 + ands r4, r0 + adds r4, r4, r2 + ands r1, r0 + ldrb r4, [r4] + adds r1, r1, r4 + adds r0, r5, #0 + bl sub_080042AC + b _08082D1C + .align 2, 0 +_08082CE0: .4byte gUnk_0811F18C +_08082CE4: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x13 + beq _08082D0C + adds r0, r5, #0 + movs r1, #0x13 + bl sub_080042AC + b _08082D1C +_08082CF8: + adds r0, r5, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x1a + beq _08082D0C + adds r0, r5, #0 + movs r1, #0x1a + bl sub_080042AC + b _08082D1C +_08082D0C: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_08003FC4 + adds r0, r5, #0 + bl sub_080042B8 +_08082D1C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08082D20 +sub_08082D20: @ 0x08082D20 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r3, r1, #0 + ldr r0, [r3, #8] + cmp r0, #0 + beq _08082E10 + movs r6, #0 + movs r5, #1 + movs r0, #4 + rsbs r0, r0, #0 + mov ip, r0 +_08082D36: + ldr r1, [r3, #8] + mvns r0, r1 + adds r2, r0, #1 + ands r2, r1 + eors r1, r2 + str r1, [r3, #8] + cmp r2, #0x80 + beq _08082DB4 + cmp r2, #0x80 + bhi _08082D66 + cmp r2, #4 + beq _08082D9E + cmp r2, #4 + bhi _08082D5C + cmp r2, #1 + beq _08082D96 + cmp r2, #2 + beq _08082D9A + b _08082E0A +_08082D5C: + cmp r2, #8 + beq _08082DA4 + cmp r2, #0x40 + beq _08082DDA + b _08082E0A +_08082D66: + movs r0, #0x80 + lsls r0, r0, #0xd + cmp r2, r0 + beq _08082DDE + cmp r2, r0 + bhi _08082D84 + movs r0, #0x80 + lsls r0, r0, #1 + cmp r2, r0 + beq _08082DAA + movs r0, #0x80 + lsls r0, r0, #0xa + cmp r2, r0 + beq _08082DC0 + b _08082E0A +_08082D84: + movs r0, #0x80 + lsls r0, r0, #0xe + cmp r2, r0 + beq _08082DE6 + movs r0, #0x80 + lsls r0, r0, #0xf + cmp r2, r0 + beq _08082DF2 + b _08082E0A +_08082D96: + strb r6, [r4, #0xd] + b _08082E0A +_08082D9A: + strb r5, [r4, #0xd] + b _08082E0A +_08082D9E: + movs r0, #2 + strb r0, [r4, #0xd] + b _08082E0A +_08082DA4: + movs r0, #3 + strb r0, [r4, #0xd] + b _08082E0A +_08082DAA: + ldrb r0, [r4, #0x18] + mov r1, ip + ands r0, r1 + strb r0, [r4, #0x18] + b _08082E0A +_08082DB4: + ldrb r0, [r4, #0x18] + mov r7, ip + ands r0, r7 + orrs r0, r5 + strb r0, [r4, #0x18] + b _08082E0A +_08082DC0: + ldrb r0, [r4, #0x18] + lsls r1, r0, #0x19 + lsrs r1, r1, #0x1f + eors r1, r5 + ands r1, r5 + lsls r1, r1, #6 + movs r7, #0x41 + rsbs r7, r7, #0 + adds r2, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08082E0A +_08082DDA: + bl sub_0805E780 +_08082DDE: + movs r0, #2 + strb r0, [r4, #0xc] + strb r6, [r4, #0xd] + b _08082E10 +_08082DE6: + movs r0, #4 + strb r0, [r4, #0xd] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + b _08082E0A +_08082DF2: + movs r0, #3 + strb r0, [r4, #0xc] + strb r6, [r4, #0xd] + adds r1, r4, #0 + adds r1, #0x62 + movs r0, #4 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #0x1b + bl sub_080042AC + b _08082E10 +_08082E0A: + ldr r0, [r3, #8] + cmp r0, #0 + bne _08082D36 +_08082E10: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08082E14 +sub_08082E14: @ 0x08082E14 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x84 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_0807DF74 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08082E38 + cmp r0, #1 + beq _08082E44 + b _08082E5E +_08082E38: + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _08082E5E + movs r0, #1 + strb r0, [r4, #0xd] + b _08082E5E +_08082E44: + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0xa + rsbs r0, r0, #0 + cmp r1, r0 + ble _08082E5E + ldr r0, _08082E68 @ =gUnk_02033280 + ldr r1, [r0] + movs r2, #2 + orrs r1, r2 + str r1, [r0] + bl sub_0805E780 +_08082E5E: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08082E68: .4byte gUnk_02033280 + + thumb_func_start sub_08082E6C +sub_08082E6C: @ 0x08082E6C + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08082E98 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x62 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0x17 + bl sub_080042AC +_08082E98: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08082E9C +sub_08082E9C: @ 0x08082E9C + push {lr} + ldr r2, _08082EB0 @ =gUnk_0811F624 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08082EB0: .4byte gUnk_0811F624 + + thumb_func_start sub_08082EB4 +sub_08082EB4: @ 0x08082EB4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r0, _08082EE0 @ =gUnk_03000BF0 + ldrb r1, [r0, #4] + adds r6, r0, #0 + cmp r1, #0x11 + bne _08082EF6 + adds r0, r4, #0 + bl sub_080AE068 + ldr r1, _08082EE4 @ =0x000001C1 + adds r0, r4, #0 + bl sub_080ADF80 + cmp r0, #0 + bne _08082EE8 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _0808308E + .align 2, 0 +_08082EE0: .4byte gUnk_03000BF0 +_08082EE4: .4byte 0x000001C1 +_08082EE8: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] +_08082EF6: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x20 + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x88 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldrh r1, [r6, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r6, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + ldrb r1, [r4, #0xa] + lsls r1, r1, #3 + ldrh r0, [r4, #0x2e] + adds r0, r1, r0 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + adds r1, r1, r0 + strh r1, [r4, #0x32] + ldr r1, _08082F6C @ =gUnk_0811F64C + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x48] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_080002B0 + str r0, [r4, #0x68] + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _08082F7A + cmp r0, #1 + bgt _08082F70 + cmp r0, #0 + beq _08082F76 + b _08082FF0 + .align 2, 0 +_08082F6C: .4byte gUnk_0811F64C +_08082F70: + cmp r0, #2 + beq _08082F9A + b _08082FF0 +_08082F76: + adds r0, r5, #0 + b _08082FE8 +_08082F7A: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #1 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x40 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x41 + b _08082FE8 +_08082F9A: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #1 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #2 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x40 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x41 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x42 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x80 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x81 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x82 +_08082FE8: + adds r1, r4, #0 + bl sub_080832D8 + b _08083088 +_08082FF0: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #1 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #2 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #3 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x40 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x41 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x42 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x43 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x80 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x81 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x82 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0x83 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0xc0 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0xc1 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0xc2 + adds r1, r4, #0 + bl sub_080832D8 + adds r0, r5, #0 + adds r0, #0xc3 + adds r1, r4, #0 + bl sub_080832D8 +_08083088: + ldr r0, _08083090 @ =0x0000010F + bl sub_08004488 +_0808308E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08083090: .4byte 0x0000010F + + thumb_func_start sub_08083094 +sub_08083094: @ 0x08083094 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_0800445C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080830B4 + adds r0, r4, #0 + bl sub_080830B8 +_080830B4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080830B8 +sub_080830B8: @ 0x080830B8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov sb, r0 + ldrb r5, [r0, #0xa] + lsls r4, r5, #3 + movs r1, #0x2e + ldrsh r0, [r0, r1] + subs r0, r0, r4 + ldr r3, _080830FC @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r7, r0, #4 + movs r2, #0x3f + ands r7, r2 + mov r6, sb + movs r1, #0x32 + ldrsh r0, [r6, r1] + subs r0, r0, r4 + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r7, r0 + cmp r5, #1 + beq _08083128 + cmp r5, #1 + bgt _08083100 + cmp r5, #0 + beq _08083106 + b _080831EC + .align 2, 0 +_080830FC: .4byte gUnk_03000BF0 +_08083100: + cmp r5, #2 + beq _08083160 + b _080831EC +_08083106: + mov r0, sb + bl sub_0800442E + cmp r0, #0 + beq _08083112 + b _080832C0 +_08083112: + ldr r0, _08083124 @ =0x00000365 + mov r1, sb + adds r1, #0x38 + ldrb r2, [r1] + adds r1, r7, #0 + bl sub_0807B7D8 + b _080832BA + .align 2, 0 +_08083124: .4byte 0x00000365 +_08083128: + mov r2, sb + ldr r0, [r2, #0x68] + mov r4, sb + adds r4, #0x38 + ldrb r2, [r4] + adds r1, r7, #0 + bl sub_0807B7D8 + ldr r0, _08083158 @ =0x0000036F + adds r1, r7, #1 + ldrb r2, [r4] + bl sub_0807B7D8 + movs r0, #0xdc + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #0x40 + ldrb r2, [r4] + bl sub_0807B7D8 + ldr r0, _0808315C @ =0x00000371 + adds r1, r7, #0 + adds r1, #0x41 + b _080831CA + .align 2, 0 +_08083158: .4byte 0x0000036F +_0808315C: .4byte 0x00000371 +_08083160: + mov r6, sb + ldr r0, [r6, #0x68] + mov r4, sb + adds r4, #0x38 + ldrb r2, [r4] + adds r1, r7, #0 + bl sub_0807B7D8 + ldr r0, _080831D4 @ =0x00000372 + adds r1, r7, #1 + ldrb r2, [r4] + bl sub_0807B7D8 + ldr r0, _080831D8 @ =0x0000036F + adds r1, r7, #2 + ldrb r2, [r4] + bl sub_0807B7D8 + movs r0, #0xdd + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #0x40 + ldrb r2, [r4] + bl sub_0807B7D8 + ldr r0, _080831DC @ =0x00000376 + adds r1, r7, #0 + adds r1, #0x41 + ldrb r2, [r4] + bl sub_0807B7D8 + ldr r0, _080831E0 @ =0x00000375 + adds r1, r7, #0 + adds r1, #0x42 + ldrb r2, [r4] + bl sub_0807B7D8 + movs r0, #0xdc + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #0x80 + ldrb r2, [r4] + bl sub_0807B7D8 + ldr r0, _080831E4 @ =0x00000373 + adds r1, r7, #0 + adds r1, #0x81 + ldrb r2, [r4] + bl sub_0807B7D8 + ldr r0, _080831E8 @ =0x00000371 + adds r1, r7, #0 + adds r1, #0x82 +_080831CA: + ldrb r2, [r4] + bl sub_0807B7D8 + b _080832BA + .align 2, 0 +_080831D4: .4byte 0x00000372 +_080831D8: .4byte 0x0000036F +_080831DC: .4byte 0x00000376 +_080831E0: .4byte 0x00000375 +_080831E4: .4byte 0x00000373 +_080831E8: .4byte 0x00000371 +_080831EC: + mov r1, sb + ldr r0, [r1, #0x68] + mov r4, sb + adds r4, #0x38 + ldrb r2, [r4] + adds r1, r7, #0 + bl sub_0807B7D8 + ldr r5, _080832C8 @ =0x00000372 + adds r1, r7, #1 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + adds r1, r7, #2 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + ldr r0, _080832CC @ =0x0000036F + adds r1, r7, #3 + ldrb r2, [r4] + bl sub_0807B7D8 + movs r2, #0xdd + lsls r2, r2, #2 + mov r8, r2 + adds r1, r7, #0 + adds r1, #0x40 + ldrb r2, [r4] + mov r0, r8 + bl sub_0807B7D8 + adds r5, #4 + adds r1, r7, #0 + adds r1, #0x41 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + adds r1, r7, #0 + adds r1, #0x42 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + ldr r6, _080832D0 @ =0x00000375 + adds r1, r7, #0 + adds r1, #0x43 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0807B7D8 + adds r1, r7, #0 + adds r1, #0x80 + ldrb r2, [r4] + mov r0, r8 + bl sub_0807B7D8 + adds r1, r7, #0 + adds r1, #0x81 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + adds r1, r7, #0 + adds r1, #0x82 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + adds r1, r7, #0 + adds r1, #0x83 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0807B7D8 + movs r0, #0xdc + lsls r0, r0, #2 + adds r1, r7, #0 + adds r1, #0xc0 + ldrb r2, [r4] + bl sub_0807B7D8 + subs r5, #3 + adds r1, r7, #0 + adds r1, #0xc1 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + adds r1, r7, #0 + adds r1, #0xc2 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0807B7D8 + ldr r0, _080832D4 @ =0x00000371 + adds r1, r7, #0 + adds r1, #0xc3 + ldrb r2, [r4] + bl sub_0807B7D8 +_080832BA: + mov r0, sb + bl sub_0805E7BC +_080832C0: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080832C8: .4byte 0x00000372 +_080832CC: .4byte 0x0000036F +_080832D0: .4byte 0x00000375 +_080832D4: .4byte 0x00000371 + + thumb_func_start sub_080832D8 +sub_080832D8: @ 0x080832D8 + push {lr} + adds r3, r0, #0 + adds r2, r1, #0 + adds r2, #0x38 + ldrb r0, [r2] + cmp r0, #2 + beq _080832FC + ldrb r1, [r1, #0x15] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080832F6 + ldrb r2, [r2] + movs r0, #0x21 + b _0808330A +_080832F6: + ldrb r2, [r2] + movs r0, #0x20 + b _0808330A +_080832FC: + ldrb r1, [r1, #0x15] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08083312 + ldrb r2, [r2] + movs r0, #0x2f +_0808330A: + adds r1, r3, #0 + bl sub_0807B7D8 + b _0808331C +_08083312: + ldrb r2, [r2] + movs r0, #0x2e + adds r1, r3, #0 + bl sub_0807B7D8 +_0808331C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08083320 +sub_08083320: @ 0x08083320 + push {lr} + ldr r2, _08083334 @ =gUnk_0811F65C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08083334: .4byte gUnk_0811F65C + + thumb_func_start sub_08083338 +sub_08083338: @ 0x08083338 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x84 + ldrh r1, [r2] + ldr r0, _08083400 @ =0x0000FFFF + cmp r1, r0 + beq _08083356 + adds r0, r1, #0 + bl sub_0807CBE4 + cmp r0, #0 + beq _08083356 + bl sub_0805E780 +_08083356: + adds r0, r4, #0 + bl sub_080837B0 + cmp r0, #0 + bne _08083362 + b _080834B2 +_08083362: + ldrb r2, [r4, #0xa] + lsrs r0, r2, #2 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0xb] + movs r7, #3 + adds r0, r7, #0 + ands r0, r2 + strb r0, [r4, #0x1e] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x70 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + ldrb r1, [r4, #0xa] + adds r0, r7, #0 + ands r0, r1 + adds r6, r4, #0 + adds r6, #0x7e + strb r0, [r6] + ldr r0, _08083404 @ =gUnk_080FD170 + str r0, [r4, #0x48] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0xa] + movs r0, #0xf + ands r0, r1 + adds r1, r4, #0 + adds r1, #0x5a + strb r0, [r1] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08083408 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x76 + strh r1, [r5] + ldrh r0, [r5] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x74 + strh r0, [r1] + ldrb r0, [r4, #0xb] + cmp r0, #1 + beq _08083438 + cmp r0, #1 + bgt _0808340C + cmp r0, #0 + beq _08083412 + b _080834AE + .align 2, 0 +_08083400: .4byte 0x0000FFFF +_08083404: .4byte gUnk_080FD170 +_08083408: .4byte gUnk_03000BF0 +_0808340C: + cmp r0, #2 + beq _08083456 + b _080834AE +_08083412: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _0808342E + ldrb r1, [r4, #0xa] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0808344E + strb r7, [r4, #0xc] + b _080834B2 +_0808342E: + ldrb r1, [r4, #0xa] + movs r0, #0xef + ands r0, r1 + strb r0, [r4, #0xa] + b _08083446 +_08083438: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _0808344E +_08083446: + adds r0, r4, #0 + bl sub_08083638 + b _080834B2 +_0808344E: + adds r0, r4, #0 + bl sub_080836A0 + b _080834B2 +_08083456: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _080834A8 + ldrb r0, [r4, #0x1e] + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x1e] + ldrb r1, [r6] + ldrh r2, [r5] + adds r0, r4, #0 + bl sub_080836DC + bl sub_08052660 + cmp r0, #0 + bne _08083484 + movs r0, #5 + strb r0, [r4, #0xc] + b _080834B2 +_08083484: + movs r0, #8 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080787CC + ldr r1, _080834A4 @ =gUnk_0811F740 + ldrb r0, [r6] + adds r0, r0, r1 + ldrb r2, [r0] + adds r0, r4, #0 + movs r1, #0 + movs r3, #0 + bl sub_08078850 + b _080834B2 + .align 2, 0 +_080834A4: .4byte gUnk_0811F740 +_080834A8: + bl sub_0805E780 + b _080834B2 +_080834AE: + bl sub_0805E780 +_080834B2: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080834B4 +sub_080834B4: @ 0x080834B4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080834E6 + movs r0, #2 + strb r0, [r2, #0xc] + movs r0, #7 + strb r0, [r2, #0xe] + adds r0, r2, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r2, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldr r0, _080834E8 @ =0x0000010B + bl sub_08004488 +_080834E6: + pop {pc} + .align 2, 0 +_080834E8: .4byte 0x0000010B + + thumb_func_start sub_080834EC +sub_080834EC: @ 0x080834EC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08083516 + ldrb r1, [r4, #0xa] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08083512 + adds r0, r4, #0 + bl sub_08083638 + b _08083516 +_08083512: + bl sub_0805E780 +_08083516: + pop {r4, pc} + + thumb_func_start sub_08083518 +sub_08083518: @ 0x08083518 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7e + ldrb r1, [r5] + bl sub_08083734 + cmp r0, #0 + beq _0808353C + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r5] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r2, [r0] + adds r0, r4, #0 + bl sub_080836DC +_0808353C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08083540 +sub_08083540: @ 0x08083540 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808358C + ldrb r1, [r4, #0xa] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08083566 + movs r0, #0xef + ands r0, r1 + strb r0, [r4, #0xa] + b _0808356E +_08083566: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08083576 +_0808356E: + adds r0, r4, #0 + bl sub_080836A0 + b _0808357A +_08083576: + movs r0, #5 + strb r0, [r4, #0xc] +_0808357A: + adds r0, r4, #0 + adds r0, #0x7e + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08083814 + ldr r0, _08083590 @ =0x0000010B + bl sub_08004488 +_0808358C: + pop {r4, pc} + .align 2, 0 +_08083590: .4byte 0x0000010B + + thumb_func_start nullsub_513 +nullsub_513: @ 0x08083594 + bx lr + .align 2, 0 + + thumb_func_start sub_08083598 +sub_08083598: @ 0x08083598 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080835B2 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080835C6 + b _080835C0 +_080835B2: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _080835C6 +_080835C0: + adds r0, r4, #0 + bl sub_08083658 +_080835C6: + pop {r4, pc} + + thumb_func_start sub_080835C8 +sub_080835C8: @ 0x080835C8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080835E2 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _080835F4 + b _080835F0 +_080835E2: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080835F4 +_080835F0: + movs r0, #3 + strb r0, [r4, #0xc] +_080835F4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080835F8 +sub_080835F8: @ 0x080835F8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _08083616 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08083636 +_08083616: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x14 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08083658 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + movs r0, #1 + rsbs r0, r0, #0 + bl sub_080526F8 +_08083636: + pop {r4, pc} + + thumb_func_start sub_08083638 +sub_08083638: @ 0x08083638 + adds r2, r0, #0 + movs r0, #7 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + subs r0, #0xb + ands r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + adds r0, #0x70 + ldrh r0, [r0] + strh r0, [r2, #0x2e] + adds r0, r2, #0 + adds r0, #0x72 + ldrh r0, [r0] + strh r0, [r2, #0x32] + bx lr + + thumb_func_start sub_08083658 +sub_08083658: @ 0x08083658 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x14 + strb r1, [r0, #0xe] + adds r2, r0, #0 + adds r2, #0x7e + ldrb r1, [r2] + lsls r1, r1, #3 + strb r1, [r0, #0x15] + ldrb r2, [r2] + lsls r2, r2, #1 + ldr r1, _08083698 @ =gUnk_0811F680 + adds r2, r2, r1 + movs r1, #0 + ldrsb r1, [r2, r1] + ldrh r3, [r0, #0x2e] + adds r1, r1, r3 + strh r1, [r0, #0x2e] + movs r1, #1 + ldrsb r1, [r2, r1] + ldrh r2, [r0, #0x32] + adds r1, r1, r2 + strh r1, [r0, #0x32] + movs r1, #0x3c + bl sub_0805E4E0 + ldr r0, _0808369C @ =0x0000010B + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08083698: .4byte gUnk_0811F680 +_0808369C: .4byte 0x0000010B + + thumb_func_start sub_080836A0 +sub_080836A0: @ 0x080836A0 + push {lr} + adds r2, r0, #0 + movs r0, #6 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + subs r0, #0xa + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + adds r0, #0x70 + ldrh r0, [r0] + strh r0, [r2, #0x2e] + adds r0, r2, #0 + adds r0, #0x72 + ldrh r0, [r0] + strh r0, [r2, #0x32] + ldr r0, _080836D8 @ =0x00004022 + adds r1, r2, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + pop {pc} + .align 2, 0 +_080836D8: .4byte 0x00004022 + + thumb_func_start sub_080836DC +sub_080836DC: @ 0x080836DC + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r1, r2, #0 + ldr r0, _0808372C @ =0x00004022 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r0, #7 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x18] + subs r0, #0xb + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + lsls r0, r4, #3 + movs r1, #0x10 + eors r0, r1 + strb r0, [r5, #0x15] + lsls r4, r4, #1 + ldr r0, _08083730 @ =gUnk_0811F688 + adds r4, r4, r0 + ldrb r0, [r5, #0xb] + cmp r0, #2 + beq _08083728 + movs r0, #0 + ldrsb r0, [r4, r0] + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x2e] + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r1, [r5, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] +_08083728: + pop {r4, r5, pc} + .align 2, 0 +_0808372C: .4byte 0x00004022 +_08083730: .4byte gUnk_0811F688 + + thumb_func_start sub_08083734 +sub_08083734: @ 0x08083734 + push {lr} + adds r2, r0, #0 + cmp r1, #1 + beq _08083760 + cmp r1, #1 + blo _0808374A + cmp r1, #2 + beq _08083774 + cmp r1, #3 + beq _08083790 + b _080837AC +_0808374A: + adds r0, r2, #0 + adds r0, #0x72 + ldrh r1, [r0] + ldr r0, _0808375C @ =gLinkEntity + movs r2, #0x32 + ldrsh r0, [r0, r2] + subs r0, #0xd + b _0808379E + .align 2, 0 +_0808375C: .4byte gLinkEntity +_08083760: + ldr r0, _08083770 @ =gLinkEntity + movs r1, #0x2e + ldrsh r0, [r0, r1] + adds r0, #0xb + adds r1, r2, #0 + adds r1, #0x70 + b _08083780 + .align 2, 0 +_08083770: .4byte gLinkEntity +_08083774: + ldr r0, _0808378C @ =gLinkEntity + movs r1, #0x32 + ldrsh r0, [r0, r1] + adds r0, #8 + adds r1, r2, #0 + adds r1, #0x72 +_08083780: + ldrh r1, [r1] + subs r0, r0, r1 + cmp r0, #0 + bge _080837AC + movs r0, #1 + b _080837AE + .align 2, 0 +_0808378C: .4byte gLinkEntity +_08083790: + adds r0, r2, #0 + adds r0, #0x70 + ldrh r1, [r0] + ldr r0, _080837A8 @ =gLinkEntity + movs r2, #0x2e + ldrsh r0, [r0, r2] + subs r0, #0xa +_0808379E: + subs r1, r1, r0 + cmp r1, #0 + bge _080837AC + movs r0, #1 + b _080837AE + .align 2, 0 +_080837A8: .4byte gLinkEntity +_080837AC: + movs r0, #0 +_080837AE: + pop {pc} + + thumb_func_start sub_080837B0 +sub_080837B0: @ 0x080837B0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _080837C8 @ =gUnk_03000BF0 + ldrb r2, [r0, #4] + cmp r2, #0x3f + bhi _080837DC + cmp r2, #0x25 + beq _080837CC + cmp r2, #0x35 + beq _080837D4 + movs r5, #0xa + b _080837E8 + .align 2, 0 +_080837C8: .4byte gUnk_03000BF0 +_080837CC: + ldr r5, _080837D0 @ =0x000001E7 + b _080837E8 + .align 2, 0 +_080837D0: .4byte 0x000001E7 +_080837D4: + ldr r5, _080837D8 @ =0x000001C3 + b _080837E8 + .align 2, 0 +_080837D8: .4byte 0x000001C3 +_080837DC: + ldr r1, _080837F8 @ =gUnk_0811F690 + adds r0, r2, #0 + subs r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r5, [r0] +_080837E8: + cmp r2, #0x68 + bne _080837FC + adds r0, r4, #0 + movs r1, #0 + bl sub_0801D2B4 + b _08083808 + .align 2, 0 +_080837F8: .4byte gUnk_0811F690 +_080837FC: + cmp r2, #0x88 + bne _08083808 + adds r0, r4, #0 + movs r1, #1 + bl sub_0801D2B4 +_08083808: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080ADF80 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08083814 +sub_08083814: @ 0x08083814 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #2 + ldr r0, _08083868 @ =gUnk_0811F730 + adds r4, r1, r0 + adds r0, r5, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08083842 + movs r0, #0 + ldrsb r0, [r4, r0] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] +_08083842: + adds r0, r5, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _08083866 + movs r0, #2 + ldrsb r0, [r4, r0] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + movs r0, #3 + ldrsb r0, [r4, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] +_08083866: + pop {r4, r5, pc} + .align 2, 0 +_08083868: .4byte gUnk_0811F730 + + thumb_func_start sub_0808386C +sub_0808386C: @ 0x0808386C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080838C8 @ =gUnk_03003F80 + adds r0, #0x27 + ldrb r1, [r0] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r2, r0, #0x1f + ldr r0, _080838CC @ =gUnk_02022740 + ldrb r0, [r0] + cmp r0, #2 + bgt _08083894 + cmp r0, #0 + blt _08083894 + ldr r0, _080838D0 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _080838AC +_08083894: + ldr r0, _080838D4 @ =gUnk_03003DF0 + ldr r0, [r0, #4] + ldrb r0, [r0, #3] + cmp r0, #0x32 + bne _080838AA + movs r0, #0x32 + bl sub_0801E7F4 + movs r2, #0 + cmp r0, #0 + beq _080838AC +_080838AA: + movs r2, #1 +_080838AC: + cmp r2, #0 + beq _080838B6 + adds r0, r4, #0 + bl sub_080838DC +_080838B6: + ldr r0, _080838D8 @ =gUnk_0811F754 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080838C8: .4byte gUnk_03003F80 +_080838CC: .4byte gUnk_02022740 +_080838D0: .4byte gUnk_02000050 +_080838D4: .4byte gUnk_03003DF0 +_080838D8: .4byte gUnk_0811F754 + + thumb_func_start sub_080838DC +sub_080838DC: @ 0x080838DC + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r0, #0x18] + ldrb r2, [r0, #0x1b] + movs r3, #0x3f + adds r1, r3, #0 + ands r1, r2 + movs r2, #0x40 + orrs r1, r2 + strb r1, [r0, #0x1b] + ldrb r1, [r0, #0x19] + ands r3, r1 + strb r3, [r0, #0x19] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + strb r1, [r3] + movs r2, #0 + movs r1, #4 + strb r1, [r0, #0xe] + str r2, [r0, #0x54] + strb r2, [r0, #0xc] + bx lr + + thumb_func_start sub_08083914 +sub_08083914: @ 0x08083914 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #1 + beq _08083942 + adds r0, r4, #0 + movs r1, #1 + movs r2, #1 + bl sub_080AE008 + adds r0, r4, #0 + adds r0, #0x60 + ldrh r1, [r0] + subs r1, #0x10 + strh r1, [r0] + ldr r1, _08083958 @ =0x01027820 + movs r0, #1 + bl sub_080ADDD8 + adds r0, r4, #0 + bl sub_080838DC +_08083942: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + pop {r4, pc} + .align 2, 0 +_08083958: .4byte 0x01027820 + + thumb_func_start sub_0808395C +sub_0808395C: @ 0x0808395C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _0808396C + subs r0, #1 + strb r0, [r2, #0xe] + b _08083992 +_0808396C: + ldr r3, _08083994 @ =gUnk_03003DF0 + ldr r0, [r3, #4] + ldr r1, [r0, #8] + cmp r1, #0 + beq _08083992 + ldrb r0, [r0, #3] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + bhi _08083992 + str r1, [r2, #0x54] + ldrb r0, [r3, #3] + adds r1, r2, #0 + adds r1, #0x39 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08083A40 +_08083992: + pop {pc} + .align 2, 0 +_08083994: .4byte gUnk_03003DF0 + + thumb_func_start sub_08083998 +sub_08083998: @ 0x08083998 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _080839C8 + ldr r0, _080839C4 @ =gUnk_03003DF0 + ldr r2, [r0, #4] + ldrb r0, [r2, #3] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + bhi _080839BA + ldr r1, [r4, #0x54] + ldr r0, [r2, #8] + cmp r1, r0 + beq _080839C8 +_080839BA: + adds r0, r4, #0 + bl sub_080838DC + b _08083A32 + .align 2, 0 +_080839C4: .4byte gUnk_03003DF0 +_080839C8: + ldr r1, [r4, #0x54] + ldr r0, [r1, #0x2c] + str r0, [r4, #0x2c] + ldr r0, [r1, #0x30] + str r0, [r4, #0x30] + ldr r0, [r1, #0x34] + str r0, [r4, #0x34] + adds r1, r4, #0 + adds r1, #0x5a + ldrb r0, [r1] + cmp r0, #1 + bne _08083A2C + movs r0, #0 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080839F8 + ldr r0, _080839F4 @ =gUnk_03003DF0 + ldr r0, [r0, #4] + ldrb r0, [r0, #3] + b _080839FA + .align 2, 0 +_080839F4: .4byte gUnk_03003DF0 +_080839F8: + ldrb r0, [r4, #0xb] +_080839FA: + lsls r0, r0, #3 + ldr r1, _08083A34 @ =gUnk_080C9CBC + adds r0, r0, r1 + ldrb r2, [r0, #6] + movs r1, #1 + ands r1, r2 + ldrb r3, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldr r0, _08083A38 @ =gUnk_0811F744 + lsls r2, r2, #2 + adds r2, r2, r0 + ldr r1, [r2] + lsrs r2, r1, #0x1f + ldr r0, _08083A3C @ =0x00FFFFFF + ands r1, r0 + orrs r1, r2 + adds r0, #1 + orrs r1, r0 + movs r0, #0 + bl sub_080ADDD8 +_08083A2C: + adds r0, r4, #0 + bl sub_08004274 +_08083A32: + pop {r4, pc} + .align 2, 0 +_08083A34: .4byte gUnk_080C9CBC +_08083A38: .4byte gUnk_0811F744 +_08083A3C: .4byte 0x00FFFFFF + + thumb_func_start sub_08083A40 +sub_08083A40: @ 0x08083A40 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #2 + strb r0, [r4, #0xc] + ldr r0, [r4, #0x54] + ldr r1, _08083A70 @ =gLinkEntity + movs r3, #0x2e + ldrsh r2, [r0, r3] + movs r3, #0x2e + ldrsh r0, [r1, r3] + cmp r2, r0 + ble _08083A74 + movs r1, #0 + adds r2, r4, #0 + adds r2, #0x62 + movs r0, #8 + b _08083A7C + .align 2, 0 +_08083A70: .4byte gLinkEntity +_08083A74: + movs r1, #1 + adds r2, r4, #0 + adds r2, #0x62 + movs r0, #0xf8 +_08083A7C: + strb r0, [r2] + adds r2, r4, #0 + adds r2, #0x63 + movs r0, #0xee + strb r0, [r2] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08083998 + pop {r4, pc} + + thumb_func_start sub_08083A94 +sub_08083A94: @ 0x08083A94 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldrb r0, [r6, #0xc] + cmp r0, #0 + bne _08083B24 + movs r0, #1 + mov r8, r0 + mov r2, r8 + strb r2, [r6, #0xc] + ldr r0, _08083B10 @ =gUnk_080FD170 + str r0, [r6, #0x48] + adds r7, r6, #0 + adds r7, #0x38 + ldrb r0, [r7] + movs r1, #0x34 + cmp r0, #1 + bne _08083ABC + movs r1, #0x26 +_08083ABC: + adds r4, r6, #0 + adds r4, #0x70 + strh r1, [r4] + adds r0, r6, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08083B1C + ldrh r0, [r4] + movs r3, #0x2e + ldrsh r1, [r6, r3] + ldr r5, _08083B14 @ =gUnk_03000BF0 + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r7] + bl sub_0807B314 + ldrh r1, [r5] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + beq _08083B08 + ldr r1, _08083B18 @ =gUnk_02000070 + movs r0, #0 + strb r0, [r1] +_08083B08: + bl sub_0805E780 + b _08083B7E + .align 2, 0 +_08083B10: .4byte gUnk_080FD170 +_08083B14: .4byte gUnk_03000BF0 +_08083B18: .4byte gUnk_02000070 +_08083B1C: + adds r0, r6, #0 + bl sub_080787CC + b _08083B7E +_08083B24: + adds r0, r6, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08083B7E + adds r0, r6, #0 + adds r0, #0x70 + ldrh r0, [r0] + movs r5, #0x2e + ldrsh r1, [r6, r5] + ldr r3, _08083B84 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r5, #0x32 + ldrsh r2, [r6, r5] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r6, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B314 + adds r0, r6, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + adds r0, r6, #0 + bl sub_080A29BC + movs r0, #1 + rsbs r0, r0, #0 + bl sub_080526F8 + bl sub_0805E780 +_08083B7E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08083B84: .4byte gUnk_03000BF0 + + thumb_func_start sub_08083B88 +sub_08083B88: @ 0x08083B88 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08083BDC @ =gUnk_0811F7D8 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r0, [r4, #0x50] + adds r0, #0x5a + ldrb r1, [r0] + lsrs r1, r1, #6 + movs r0, #1 + ands r1, r0 + ldrb r2, [r4, #0x18] + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_08080CB4 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x1b] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r2, r0 + strb r2, [r4, #0x19] + pop {r4, pc} + .align 2, 0 +_08083BDC: .4byte gUnk_0811F7D8 + + thumb_func_start sub_08083BE0 +sub_08083BE0: @ 0x08083BE0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #6 + bl sub_0805E3A0 + movs r0, #1 + strb r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start sub_08083BF0 +sub_08083BF0: @ 0x08083BF0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0x41 + bne _08083C98 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #5 + bhi _08083C98 + lsls r0, r0, #2 + ldr r1, _08083C14 @ =_08083C18 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08083C14: .4byte _08083C18 +_08083C18: @ jump table + .4byte _08083C30 @ case 0 + .4byte _08083C30 @ case 1 + .4byte _08083C4A @ case 2 + .4byte _08083C98 @ case 3 + .4byte _08083C98 @ case 4 + .4byte _08083C74 @ case 5 +_08083C30: + ldrb r0, [r4, #0xa] + ldrb r1, [r4, #0xb] + bl sub_08053FF0 + adds r1, r4, #0 + adds r1, #0x68 + strh r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0x43 + bgt _08083C62 + cmp r0, #0x40 + bge _08083C98 + b _08083C62 +_08083C4A: + ldrb r0, [r4, #0xa] + ldrb r1, [r4, #0xb] + bl sub_08053FF0 + ldr r1, _08083C6C @ =gUnk_080FD964 + ldrb r0, [r4, #0xa] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #6] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] +_08083C62: + ldr r0, _08083C70 @ =0x00000109 + bl sub_080A3268 + b _08083C98 + .align 2, 0 +_08083C6C: .4byte gUnk_080FD964 +_08083C70: .4byte 0x00000109 +_08083C74: + ldrb r0, [r4, #0xa] + bl sub_0807CA84 + ldrb r1, [r4, #0xa] + lsls r1, r1, #3 + ldr r2, _08083C8C @ =gUnk_080FD5B4 + adds r1, r1, r2 + cmp r0, #0 + bne _08083C90 + ldrh r1, [r1, #4] + b _08083C92 + .align 2, 0 +_08083C8C: .4byte gUnk_080FD5B4 +_08083C90: + ldrh r1, [r1, #6] +_08083C92: + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] +_08083C98: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08083C9C +sub_08083C9C: @ 0x08083C9C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0x42 + bne _08083D22 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #5 + bhi _08083D22 + lsls r0, r0, #2 + ldr r1, _08083CC0 @ =_08083CC4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08083CC0: .4byte _08083CC4 +_08083CC4: @ jump table + .4byte _08083CDC @ case 0 + .4byte _08083D22 @ case 1 + .4byte _08083CDC @ case 2 + .4byte _08083D22 @ case 3 + .4byte _08083D22 @ case 4 + .4byte _08083CDC @ case 5 +_08083CDC: + adds r0, r4, #0 + adds r0, #0x68 + ldrh r1, [r0] + cmp r1, #0 + beq _08083D22 + ldrb r0, [r4, #0xa] + cmp r0, #0x3f + beq _08083D00 + cmp r0, #0x63 + bne _08083D16 + ldr r0, _08083CFC @ =gUnk_02002A40 + adds r0, #0xa9 + ldrb r0, [r0] + adds r1, r1, r0 + b _08083D16 + .align 2, 0 +_08083CFC: .4byte gUnk_02002A40 +_08083D00: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bls _08083D16 + ldr r0, _08083D10 @ =0x00000577 + cmp r1, r0 + bne _08083D14 + subs r1, #1 + b _08083D16 + .align 2, 0 +_08083D10: .4byte 0x00000577 +_08083D14: + adds r1, #1 +_08083D16: + adds r0, r1, #0 + bl sub_08056378 + ldr r1, _08083D24 @ =gUnk_02000050 + ldrb r0, [r4, #0xb] + str r0, [r1, #0x10] +_08083D22: + pop {r4, pc} + .align 2, 0 +_08083D24: .4byte gUnk_02000050 + + thumb_func_start sub_08083D28 +sub_08083D28: @ 0x08083D28 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #8 + beq _08083DD4 + ldrb r0, [r4, #0xe] + cmp r0, #5 + bhi _08083DD0 + lsls r0, r0, #2 + ldr r1, _08083D44 @ =_08083D48 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08083D44: .4byte _08083D48 +_08083D48: @ jump table + .4byte _08083D60 @ case 0 + .4byte _08083D60 @ case 1 + .4byte _08083D60 @ case 2 + .4byte _08083DAC @ case 3 + .4byte _08083DD0 @ case 4 + .4byte _08083DD0 @ case 5 +_08083D60: + ldrb r0, [r4, #0xa] + cmp r0, #0x62 + beq _08083D88 + cmp r0, #0x63 + bne _08083DD0 + movs r0, #0xa0 + bl sub_080526A0 + ldr r0, _08083DA8 @ =gUnk_02002A40 + adds r1, r0, #0 + adds r1, #0xa9 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bls _08083DD0 + movs r0, #0 + strb r0, [r1] +_08083D88: + ldr r0, _08083DA8 @ =gUnk_02002A40 + adds r1, r0, #0 + adds r1, #0xab + ldrb r0, [r1] + adds r0, #8 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xa0 + bls _08083DA0 + movs r0, #0xa0 + strb r0, [r1] +_08083DA0: + movs r0, #0xa0 + bl sub_080526A0 + b _08083DD0 + .align 2, 0 +_08083DA8: .4byte gUnk_02002A40 +_08083DAC: + ldrb r0, [r4, #0xa] + bl sub_080544DC + adds r1, r0, #0 + cmp r1, #0 + beq _08083DC8 + ldr r0, _08083DC4 @ =gUnk_02002A40 + adds r0, r0, r1 + adds r0, #0xb5 + movs r1, #0x20 + strb r1, [r0] + b _08083DD0 + .align 2, 0 +_08083DC4: .4byte gUnk_02002A40 +_08083DC8: + ldrb r0, [r4, #0xa] + movs r1, #2 + bl sub_0807CAA0 +_08083DD0: + bl sub_0805E780 +_08083DD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08083DD8 +sub_08083DD8: @ 0x08083DD8 + push {lr} + ldr r2, _08083DEC @ =gUnk_0811F7E8 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08083DEC: .4byte gUnk_0811F7E8 + + thumb_func_start sub_08083DF0 +sub_08083DF0: @ 0x08083DF0 + push {lr} + ldr r2, _08083E04 @ =gUnk_0811F808 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08083E04: .4byte gUnk_0811F808 + + thumb_func_start sub_08083E08 +sub_08083E08: @ 0x08083E08 + push {lr} + ldr r2, _08083E1C @ =gUnk_0811F818 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08083E1C: .4byte gUnk_0811F818 + + thumb_func_start sub_08083E20 +sub_08083E20: @ 0x08083E20 + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + bl sub_080842D8 + adds r0, r4, #0 + bl sub_08078828 + pop {r4, pc} + + thumb_func_start sub_08083E4C +sub_08083E4C: @ 0x08083E4C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08083E80 @ =gUnk_0811F8B0 + str r0, [r4, #0x48] + ldrb r0, [r4, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + beq _08083E84 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080842D8 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08083EAC + .align 2, 0 +_08083E80: .4byte gUnk_0811F8B0 +_08083E84: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _08083E98 + ldrb r0, [r4, #0xa] + cmp r0, #4 + bne _08083EA0 +_08083E98: + adds r0, r4, #0 + bl sub_08083E20 + b _08083EA4 +_08083EA0: + movs r0, #1 + strb r0, [r4, #0xc] +_08083EA4: + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08083EAC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08083EB0 +sub_08083EB0: @ 0x08083EB0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08083F0A + ldr r1, _08083F0C @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r3, #0 + movs r0, #0xf4 + lsls r0, r0, #4 + strh r0, [r2] + adds r1, #0x68 + adds r0, #0xc0 + strh r0, [r1] + ldr r1, _08083F10 @ =gUnk_02034490 + movs r2, #1 + movs r0, #1 + strb r0, [r1] + movs r0, #2 + strb r0, [r4, #0xc] + strb r3, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x18] + subs r0, #0x22 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + movs r1, #0x1e + bl sub_0805E4E0 + bl sub_0805BC4C +_08083F0A: + pop {r4, pc} + .align 2, 0 +_08083F0C: .4byte gUnk_03000F50 +_08083F10: .4byte gUnk_02034490 + + thumb_func_start sub_08083F14 +sub_08083F14: @ 0x08083F14 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x1e + bl sub_0805E510 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _08083F78 + cmp r0, #1 + beq _08083FA4 + adds r0, r4, #0 + bl sub_0800445C + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r2, #2 + bl sub_080577AC + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08083FE6 + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + ands r2, r0 + ldr r3, _08083F74 @ =gUnk_03000F50 + movs r0, #0x10 + subs r0, r0, r2 + lsls r0, r0, #8 + movs r5, #0xff + lsls r5, r5, #8 + adds r1, r5, #0 + ands r0, r1 + orrs r0, r2 + adds r1, r3, #0 + adds r1, #0x68 + strh r0, [r1] + cmp r0, #0x10 + bne _08083FE6 + b _08083FCC + .align 2, 0 +_08083F74: .4byte gUnk_03000F50 +_08083F78: + ldr r5, _08083FA0 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x10 + movs r3, #8 + bl sub_080041A0 + cmp r0, #0 + beq _08083F98 + movs r0, #0x10 + movs r1, #0 + movs r2, #0 + bl sub_08078AC0 + movs r0, #0x10 + strb r0, [r5, #0x15] +_08083F98: + movs r0, #1 + strb r0, [r4, #0xd] + b _08083FE6 + .align 2, 0 +_08083FA0: .4byte gLinkEntity +_08083FA4: + ldrb r0, [r4, #0xa] + cmp r0, #5 + beq _08083FB2 + ldr r0, _08083FC8 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #1 + bne _08083FE6 +_08083FB2: + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #8 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + movs r0, #0xa5 + lsls r0, r0, #1 + bl sub_080A3268 + b _08083FE6 + .align 2, 0 +_08083FC8: .4byte gLinkEntity +_08083FCC: + ldr r1, _08083FE8 @ =gUnk_02034490 + movs r0, #0 + strb r0, [r1] + adds r1, r3, #0 + adds r1, #0x66 + movs r0, #0 + strh r0, [r1] + adds r0, r4, #0 + bl sub_08083E20 + movs r0, #0x73 + bl sub_080A3268 +_08083FE6: + pop {r4, r5, pc} + .align 2, 0 +_08083FE8: .4byte gUnk_02034490 + + thumb_func_start sub_08083FEC +sub_08083FEC: @ 0x08083FEC + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0808401E + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_080788E0 + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0805E4E0 + ldr r0, _08084020 @ =0x0000011B + bl sub_080A3268 +_0808401E: + pop {r4, pc} + .align 2, 0 +_08084020: .4byte 0x0000011B + + thumb_func_start sub_08084024 +sub_08084024: @ 0x08084024 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08084070 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808406A + ldrb r0, [r4, #0xe] + cmp r0, #0x18 + bne _08084060 + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0xf] + b _0808406A +_08084060: + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xb] + bl sub_08084074 +_0808406A: + ldrb r0, [r4, #0xb] + bl sub_0807CCB4 +_08084070: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08084074 +sub_08084074: @ 0x08084074 + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + bl sub_0804B128 + adds r1, r0, #0 + cmp r1, #0 + beq _080840A4 + b _0808409E +_08084086: + cmp r0, #3 + bne _0808409C + ldrb r0, [r1, #1] + cmp r4, r0 + bne _0808409C + ldrb r0, [r1, #2] + ldrb r1, [r1, #3] + movs r2, #0 + bl sub_080A7C00 + b _080840A4 +_0808409C: + adds r1, #8 +_0808409E: + ldrb r0, [r1] + cmp r0, #0 + bne _08084086 +_080840A4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080840A8 +sub_080840A8: @ 0x080840A8 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r1, #0 + ldr r4, _0808413C @ =gUnk_0811F838 + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + adds r1, r1, r4 + ldrb r1, [r1] + movs r0, #0 + movs r2, #0 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _08084138 + movs r0, #6 + strb r0, [r5, #0xe] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + adds r0, #0xc + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x15] + bl sub_08000E50 + movs r1, #0xf + ands r1, r0 + lsls r1, r1, #1 + adds r1, #0x20 + strh r1, [r5, #0x24] + bl sub_08000E50 + ldr r1, _08084140 @ =gUnk_0811F840 + movs r4, #3 + ands r0, r4 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r5, #0x20] + bl sub_08000E50 + ldr r1, _08084144 @ =gUnk_0811F850 + ands r0, r4 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r0, r0, r6 + strh r0, [r5, #0x2e] + adds r0, r7, #1 + strh r0, [r5, #0x32] + ldr r0, _08084148 @ =0x0000FFF8 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_08016A30 + adds r0, r5, #0 + movs r1, #0x11 + movs r2, #0 + bl CreateFX + adds r5, r0, #0 + cmp r5, #0 + beq _08084138 + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_080A3268 +_08084138: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808413C: .4byte gUnk_0811F838 +_08084140: .4byte gUnk_0811F840 +_08084144: .4byte gUnk_0811F850 +_08084148: .4byte 0x0000FFF8 + + thumb_func_start sub_0808414C +sub_0808414C: @ 0x0808414C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08084180 + movs r0, #8 + strb r0, [r1, #0xe] + ldrb r0, [r1, #0xf] + subs r0, #1 + strb r0, [r1, #0xf] + ands r0, r2 + cmp r0, #0 + beq _0808417C + movs r2, #0x2e + ldrsh r0, [r1, r2] + movs r2, #0x32 + ldrsh r1, [r1, r2] + bl sub_080840A8 + b _08084180 +_0808417C: + movs r0, #5 + strb r0, [r1, #0xc] +_08084180: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08084184 +sub_08084184: @ 0x08084184 + push {lr} + bl sub_0800445C + pop {pc} + + thumb_func_start nullsub_114 +nullsub_114: @ 0x0808418C + bx lr + .align 2, 0 + + thumb_func_start sub_08084190 +sub_08084190: @ 0x08084190 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08084204 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x70 + strh r1, [r5] + ldr r0, _08084208 @ =gUnk_0811F8A8 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_080002A0 + cmp r0, #0x74 + bne _080841D2 + bl sub_0805E780 +_080841D2: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08084200 + movs r0, #3 + strb r0, [r4, #0xc] + ldrh r1, [r5] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r2, [r0] + movs r0, #0x73 + bl sub_0807B7D8 + ldrb r1, [r4, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08084200 + bl sub_0805E780 +_08084200: + pop {r4, r5, pc} + .align 2, 0 +_08084204: .4byte gUnk_03000BF0 +_08084208: .4byte gUnk_0811F8A8 + + thumb_func_start sub_0808420C +sub_0808420C: @ 0x0808420C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08084220 + movs r0, #2 + strb r0, [r4, #0xc] +_08084220: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08084224 +sub_08084224: @ 0x08084224 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x70 + ldrh r1, [r0] + subs r0, #0x38 + ldrb r2, [r0] + movs r0, #0x73 + bl sub_0807B7D8 + ldrb r0, [r4, #0xa] + cmp r0, #7 + bgt _0808424C + cmp r0, #6 + blt _0808424C + ldr r0, _08084248 @ =0x00000215 + bl sub_080A3268 + b _08084258 + .align 2, 0 +_08084248: .4byte 0x00000215 +_0808424C: + movs r0, #0x72 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_080A29BC +_08084258: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xe] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #2 + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + ldrb r1, [r4, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08084278 + bl sub_0805E780 +_08084278: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808427C +sub_0808427C: @ 0x0808427C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0808428A + cmp r0, #7 + bne _080842D4 +_0808428A: + adds r0, r4, #0 + bl sub_080002A0 + cmp r0, #0x74 + bne _0808429C + adds r0, r4, #0 + bl sub_0805E7BC + b _080842D4 +_0808429C: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _080842D4 + adds r1, r4, #0 + adds r1, #0x72 + ldrh r0, [r1] + cmp r0, #0 + beq _080842BA + subs r0, #1 + strh r0, [r1] + b _080842D4 +_080842BA: + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + adds r0, r4, #0 + bl sub_080A29BC +_080842D4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080842D8 +sub_080842D8: @ 0x080842D8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r2, [r5, #0x2e] + movs r1, #8 + adds r0, r1, #0 + ands r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + rsbs r0, r0, #0 + lsrs r2, r0, #0x1f + ldrh r0, [r5, #0x32] + ands r1, r0 + cmp r1, #0 + beq _080842F6 + adds r2, #2 +_080842F6: + ldr r1, _0808432C @ =gUnk_0811F898 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08084330 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0801AF18 + pop {r4, r5, r6, pc} + .align 2, 0 +_0808432C: .4byte gUnk_0811F898 +_08084330: .4byte gUnk_03000BF0 + + thumb_func_start sub_08084334 +sub_08084334: @ 0x08084334 + push {lr} + ldr r2, _08084348 @ =gUnk_0811F908 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08084348: .4byte gUnk_0811F908 + + thumb_func_start sub_0808434C +sub_0808434C: @ 0x0808434C + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r2, #1 + movs r3, #1 + strb r3, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + adds r1, r5, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x3f + strb r3, [r0] + adds r1, #4 + movs r0, #0x47 + strb r0, [r1] + subs r1, #5 + movs r0, #2 + strb r0, [r1] + ldr r0, _080843E0 @ =gUnk_080FD188 + str r0, [r5, #0x48] + ldr r0, _080843E4 @ =0x00004050 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080843E8 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _080843C8 + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080843EC +_080843C8: + movs r0, #3 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + adds r0, r5, #0 + movs r1, #1 + bl sub_08004260 + b _080843F4 + .align 2, 0 +_080843E0: .4byte gUnk_080FD188 +_080843E4: .4byte 0x00004050 +_080843E8: .4byte gUnk_03000BF0 +_080843EC: + ldrb r1, [r5, #0xa] + adds r0, r5, #0 + bl sub_08004260 +_080843F4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080843F8 +sub_080843F8: @ 0x080843F8 + push {lr} + adds r2, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9c + bne _08084420 + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + adds r0, r2, #0 + movs r1, #0xd + movs r2, #0 + bl CreateFX + ldr r0, _08084424 @ =0x0000010D + bl sub_08004488 +_08084420: + pop {pc} + .align 2, 0 +_08084424: .4byte 0x0000010D + + thumb_func_start sub_08084428 +sub_08084428: @ 0x08084428 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08084454 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_08004488 +_08084454: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08084458 +sub_08084458: @ 0x08084458 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08084472 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x14 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08004168 + b _080844C2 +_08084472: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080844C2 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _080844C4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r2, [r0] + movs r0, #0x35 + bl sub_0807B7D8 + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x40 + bl CreateFX + movs r0, #0x93 + lsls r0, r0, #1 + bl sub_080A3268 + bl sub_0805E780 +_080844C2: + pop {r4, r5, pc} + .align 2, 0 +_080844C4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080844C8 +sub_080844C8: @ 0x080844C8 + push {lr} + ldr r2, _080844DC @ =gUnk_0811FAC0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080844DC: .4byte gUnk_0811FAC0 + + thumb_func_start sub_080844E0 +sub_080844E0: @ 0x080844E0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + adds r0, r5, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + bne _08084516 + adds r0, r5, #0 + bl sub_08016A30 +_08084516: + ldrb r0, [r5, #0xa] + cmp r0, #0x20 + bne _08084524 + ldrb r0, [r5, #0x10] + movs r1, #0x20 + orrs r0, r1 + strb r0, [r5, #0x10] +_08084524: + ldrb r4, [r5, #0xa] + cmp r4, #3 + bne _08084538 + bl sub_08000E50 + ldr r1, _080845AC @ =gUnk_0811FAC8 + ands r4, r0 + adds r1, r4, r1 + ldrb r0, [r1] + strb r0, [r5, #0xa] +_08084538: + ldrb r0, [r5, #0xa] + cmp r0, #0x17 + bne _0808454E + bl sub_08000E50 + ldr r2, _080845B0 @ =gUnk_0811FACC + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r5, #0xa] +_0808454E: + ldrb r1, [r5, #0xa] + adds r0, r5, #0 + bl sub_08004260 + ldrb r0, [r5, #0xa] + lsls r0, r0, #2 + ldr r1, _080845B4 @ =gUnk_0811F960 + adds r4, r0, r1 + ldrb r1, [r4] + movs r0, #0xf + ands r0, r1 + cmp r0, #6 + bne _0808456C + movs r0, #0x40 + strh r0, [r5, #0x24] +_0808456C: + ldrh r0, [r4, #2] + cmp r0, #0 + beq _08084582 + ldrb r1, [r5, #0xb] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08084582 + ldrh r0, [r4, #2] + bl sub_08004488 +_08084582: + ldrb r1, [r5, #0xb] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08084594 + ldrb r1, [r4, #1] + adds r0, r5, #0 + bl sub_0805457C +_08084594: + ldrb r1, [r5, #0xb] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080845AA + ldrb r0, [r5, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r5, #0x19] +_080845AA: + pop {r4, r5, pc} + .align 2, 0 +_080845AC: .4byte gUnk_0811FAC8 +_080845B0: .4byte gUnk_0811FACC +_080845B4: .4byte gUnk_0811F960 + + thumb_func_start sub_080845B8 +sub_080845B8: @ 0x080845B8 + push {lr} + ldr r3, _080845D4 @ =gUnk_0811FAD0 + ldr r2, _080845D8 @ =gUnk_0811F960 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1a + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080845D4: .4byte gUnk_0811FAD0 +_080845D8: .4byte gUnk_0811F960 + + thumb_func_start sub_080845DC +sub_080845DC: @ 0x080845DC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080845F4 + bl sub_0805E780 +_080845F4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080845F8 +sub_080845F8: @ 0x080845F8 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x2e] + movs r1, #0xf + adds r0, r1, #0 + ands r0, r2 + movs r2, #8 + subs r3, r2, r0 + ldrh r0, [r4, #0x32] + ands r1, r0 + subs r1, r2, r1 + adds r0, r3, #0 + orrs r0, r1 + cmp r0, #0 + beq _08084626 + adds r0, r3, #0 + bl sub_080045DA + lsrs r0, r0, #3 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C +_08084626: + adds r0, r4, #0 + bl sub_08084630 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08084630 +sub_08084630: @ 0x08084630 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808467E + ldrb r1, [r4, #0xb] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0808467A + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _0808467A + adds r1, #0x6a + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + ldr r0, [r4, #0x68] + cmp r0, #0 + beq _0808467A + ldr r2, [r4, #0x54] + adds r2, #0x6c + subs r0, #1 + movs r1, #0x1f + ands r0, r1 + adds r1, r3, #0 + lsls r1, r0 + ldrh r0, [r2] + bics r0, r1 + strh r0, [r2] +_0808467A: + bl sub_0805E780 +_0808467E: + pop {r4, pc} + + thumb_func_start sub_08084680 +sub_08084680: @ 0x08084680 + push {lr} + ldr r1, [r0, #0x34] + movs r2, #0x80 + lsls r2, r2, #7 + adds r1, r1, r2 + str r1, [r0, #0x34] + bl sub_080845DC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08084694 +sub_08084694: @ 0x08084694 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _080846A4 + ldr r0, [r0, #4] + cmp r0, #0 + bne _080846A8 +_080846A4: + bl sub_0805E780 +_080846A8: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080846B0 +sub_080846B0: @ 0x080846B0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080846D8 + ldrh r1, [r4, #0x24] + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0 + beq _080846CA + adds r0, r1, #0 + subs r0, #0x10 + strh r0, [r4, #0x24] +_080846CA: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080845DC + b _08084718 +_080846D8: + movs r0, #1 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x14] + movs r0, #2 + orrs r0, r1 + cmp r0, #2 + bne _080846EA + movs r0, #0x1e + b _080846EC +_080846EA: + movs r0, #2 +_080846EC: + strb r0, [r4, #0x15] + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08084712 + adds r1, r4, #0 + adds r1, #0x60 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + ldrb r0, [r4, #0x15] + movs r1, #1 + cmp r0, #0x17 + bls _08084708 + subs r1, #2 +_08084708: + adds r0, r0, r1 + strb r0, [r4, #0x15] + movs r0, #0xa0 + lsls r0, r0, #2 + b _08084716 +_08084712: + movs r0, #0xc0 + lsls r0, r0, #2 +_08084716: + strh r0, [r4, #0x24] +_08084718: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808471C +sub_0808471C: @ 0x0808471C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08084768 + movs r4, #0 +_08084734: + adds r0, r5, #0 + movs r1, #0x24 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0808475E + lsls r1, r4, #1 + ldr r0, _0808476C @ =gUnk_0811FB08 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] +_0808475E: + adds r4, #1 + cmp r4, #3 + bls _08084734 + bl sub_0805E780 +_08084768: + pop {r4, r5, pc} + .align 2, 0 +_0808476C: .4byte gUnk_0811FB08 + + thumb_func_start sub_08084770 +sub_08084770: @ 0x08084770 + push {lr} + ldr r1, [r0, #0x34] + ldr r2, _08084780 @ =0xFFFFC000 + adds r1, r1, r2 + str r1, [r0, #0x34] + bl sub_080845DC + pop {pc} + .align 2, 0 +_08084780: .4byte 0xFFFFC000 + + thumb_func_start sub_08084784 +sub_08084784: @ 0x08084784 + push {lr} + ldr r1, [r0, #0x34] + movs r2, #0x80 + lsls r2, r2, #7 + adds r1, r1, r2 + str r1, [r0, #0x34] + bl sub_080845DC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08084798 +sub_08084798: @ 0x08084798 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080847B6 + ldr r0, [r4, #0x54] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080847BA +_080847B6: + bl sub_0805E780 +_080847BA: + pop {r4, pc} + + thumb_func_start sub_080847BC +sub_080847BC: @ 0x080847BC + push {lr} + ldr r1, [r0, #0x34] + ldr r2, _080847CC @ =0xFFFFE000 + adds r1, r1, r2 + str r1, [r0, #0x34] + bl sub_080845DC + pop {pc} + .align 2, 0 +_080847CC: .4byte 0xFFFFE000 + + thumb_func_start sub_080847D0 +sub_080847D0: @ 0x080847D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080845DC + pop {r4, pc} + + thumb_func_start sub_080847E0 +sub_080847E0: @ 0x080847E0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _08084814 @ =gUnk_03000BF0 + ldrh r0, [r0] + cmp r0, #1 + bne _080847F0 + bl sub_0805E780 +_080847F0: + ldr r4, _08084818 @ =gLinkEntity + ldr r3, _0808481C @ =0xFFFD0000 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + ldr r0, _08084820 @ =0x0000FFFD + strh r0, [r5, #0x36] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FAB0 + adds r0, r5, #0 + bl sub_080845DC + pop {r4, r5, pc} + .align 2, 0 +_08084814: .4byte gUnk_03000BF0 +_08084818: .4byte gLinkEntity +_0808481C: .4byte 0xFFFD0000 +_08084820: .4byte 0x0000FFFD + + thumb_func_start sub_08084824 +sub_08084824: @ 0x08084824 + push {lr} + ldr r2, _08084838 @ =gUnk_08120560 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08084838: .4byte gUnk_08120560 + + thumb_func_start sub_0808483C +sub_0808483C: @ 0x0808483C + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrh r2, [r4, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + ands r1, r0 + orrs r1, r2 + strh r1, [r4, #0x32] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _080848C0 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x74 + strh r1, [r5] + adds r0, r4, #0 + movs r1, #8 + bl sub_08004260 + ldr r0, _080848C4 @ =0x00004016 + ldrh r1, [r5] + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + movs r0, #0x89 + lsls r0, r0, #1 + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_080848C0: .4byte gUnk_03000BF0 +_080848C4: .4byte 0x00004016 + + thumb_func_start sub_080848C8 +sub_080848C8: @ 0x080848C8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08084980 @ =gUnk_03003F80 + adds r0, #0xa0 + ldrb r0, [r0] + cmp r0, #5 + bne _08084994 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x45 + movs r5, #1 + strb r5, [r0] + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x11] + subs r0, #0x12 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + ldr r0, _08084984 @ =gUnk_08120574 + str r0, [r4, #0x48] + ldrb r1, [r4, #0xa] + adds r1, #1 + lsls r0, r1, #4 + subs r0, r0, r1 + strb r0, [r4, #0xf] + ldr r2, _08084988 @ =gLinkEntity + ldrh r0, [r4, #0x2e] + ldrh r1, [r2, #0x2e] + subs r0, r0, r1 + adds r3, r4, #0 + adds r3, #0x78 + strh r0, [r3] + ldrh r1, [r4, #0x32] + ldrh r0, [r2, #0x32] + subs r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x7a + strh r1, [r0] + ldrh r0, [r3] + cmp r0, #0 + beq _0808493C + lsls r0, r1, #0x10 + cmp r0, #0 + beq _0808493C + ldr r0, _0808498C @ =gUnk_03004040 + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r5, [r0, #0x70] +_0808493C: + ldr r0, _08084990 @ =0x00000315 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_08000152 + ldrb r1, [r4, #0xa] + adds r1, #1 + ldr r0, _08084980 @ =gUnk_03003F80 + ldr r0, [r0, #0x2c] + adds r0, #0x68 + ldrb r3, [r0] + movs r0, #1 + movs r2, #0 + bl sub_08077CF8 + str r0, [r4, #0x54] + cmp r0, #0 + beq _0808496A + str r4, [r0, #0x50] +_0808496A: + adds r0, r4, #0 + bl sub_0801766C + adds r0, r4, #0 + bl sub_0806FDA0 + adds r0, r4, #0 + bl sub_080849D8 + b _080849D6 + .align 2, 0 +_08084980: .4byte gUnk_03003F80 +_08084984: .4byte gUnk_08120574 +_08084988: .4byte gLinkEntity +_0808498C: .4byte gUnk_03004040 +_08084990: .4byte 0x00000315 +_08084994: + cmp r0, #4 + beq _080849C4 + ldr r0, _080849BC @ =0x00000315 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_08000152 + ldr r1, _080849C0 @ =gUnk_03004040 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + movs r1, #0 + str r1, [r0] + bl sub_0805E780 + b _080849D6 + .align 2, 0 +_080849BC: .4byte 0x00000315 +_080849C0: .4byte gUnk_03004040 +_080849C4: + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_080849D6: + pop {r4, r5, pc} + + thumb_func_start sub_080849D8 +sub_080849D8: @ 0x080849D8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + adds r1, r0, #0 + cmp r1, #1 + bne _080849EE + movs r0, #0x76 + bl sub_080A3268 + ldrb r0, [r4, #0xf] + b _080849F2 +_080849EE: + cmp r1, #0 + beq _080849F6 +_080849F2: + subs r0, #1 + strb r0, [r4, #0xf] +_080849F6: + ldr r2, _08084A3C @ =gUnk_03003F80 + adds r3, r2, #0 + adds r3, #0xa0 + ldrb r0, [r3] + cmp r0, #5 + beq _08084A04 + b _08084AF8 +_08084A04: + ldr r0, _08084A40 @ =gUnk_03004040 + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + cmp r0, #0 + beq _08084AF8 + adds r0, r2, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x13 + beq _08084AF8 + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _08084AF8 + ldr r5, _08084A44 @ =gLinkEntity + adds r0, r5, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + ble _08084A48 + movs r0, #1 + strb r0, [r3] + b _08084AF8 + .align 2, 0 +_08084A3C: .4byte gUnk_03003F80 +_08084A40: .4byte gUnk_03004040 +_08084A44: .4byte gLinkEntity +_08084A48: + adds r0, r4, #0 + bl sub_080002B8 + adds r0, r4, #0 + bl sub_08084B1C + adds r0, r4, #0 + adds r0, #0x78 + ldrh r0, [r0] + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + ldrh r5, [r5, #0x32] + adds r0, r0, r5 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_08084CAC + adds r0, r4, #0 + bl sub_080085B0 + ldrh r2, [r4, #0x2a] + ldr r1, _08084AB8 @ =0x00006666 + adds r0, r1, #0 + ands r0, r2 + cmp r0, r1 + beq _08084AEA + movs r3, #0 + ldr r5, _08084ABC @ =gUnk_0812056C + ldrh r1, [r5] + adds r0, r1, #0 + ands r0, r2 + cmp r1, r0 + beq _08084AA6 + adds r2, r5, #0 +_08084A94: + adds r2, #2 + adds r3, #1 + cmp r3, #3 + bhi _08084AA6 + ldrh r1, [r2] + ldrh r0, [r4, #0x2a] + ands r0, r1 + cmp r1, r0 + bne _08084A94 +_08084AA6: + cmp r3, #4 + bne _08084AC0 + movs r0, #0 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #4 + ands r0, r1 + movs r1, #1 + b _08084ADE + .align 2, 0 +_08084AB8: .4byte 0x00006666 +_08084ABC: .4byte gUnk_0812056C +_08084AC0: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08084AE4 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08084AEA + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 +_08084ADE: + orrs r0, r1 + strb r0, [r4, #0x18] + b _08084B16 +_08084AE4: + movs r0, #0x1e + strb r0, [r4, #0xe] + b _08084B16 +_08084AEA: + ldr r0, _08084AF4 @ =gUnk_03003F80 + adds r0, #0xa0 + movs r1, #1 + strb r1, [r0] + b _08084B16 + .align 2, 0 +_08084AF4: .4byte gUnk_03003F80 +_08084AF8: + bl sub_0807A108 + adds r0, r4, #0 + movs r1, #0x30 + movs r2, #0 + bl CreateFX + ldr r0, [r4, #0x54] + bl sub_0805E7BC + ldr r0, _08084B18 @ =0x0000018F + bl sub_080A3268 + bl sub_0805E780 +_08084B16: + pop {r4, r5, pc} + .align 2, 0 +_08084B18: .4byte 0x0000018F + + thumb_func_start sub_08084B1C +sub_08084B1C: @ 0x08084B1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + ldr r3, _08084CA4 @ =gLinkEntity + ldrb r0, [r3, #0x10] + strb r0, [r4, #0x10] + adds r0, r3, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + ldrb r0, [r3, #0x1e] + strb r0, [r4, #0x1e] + adds r0, r3, #0 + adds r0, #0x5b + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x5b + strb r0, [r1] + ldrh r0, [r3, #0x12] + strh r0, [r4, #0x12] + ldrb r0, [r3, #0x15] + strb r0, [r4, #0x15] + ldrb r0, [r3, #0x14] + strb r0, [r4, #0x14] + ldrb r0, [r3, #0x18] + movs r1, #1 + mov r8, r1 + movs r1, #0x40 + ands r1, r0 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + mov sb, r0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r3, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r7, #0x3f + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r3, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + movs r6, #7 + lsrs r1, r1, #0x1d + ldrb r2, [r0] + movs r0, #8 + rsbs r0, r0, #0 + mov sl, r0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r3, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x1b] + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1b] + adds r0, r3, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r3, #0 + adds r0, #0x3b + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x3b + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x3f + ldrb r0, [r0] + adds r1, #4 + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x3c + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x3c + strb r1, [r0] + adds r0, r3, #0 + adds r0, #0x40 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x40 + strb r1, [r0] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 + ldr r5, _08084CA8 @ =gUnk_03003F80 + ldrb r0, [r5, #4] + cmp r0, #0 + beq _08084C6A + ldr r1, [r4, #0x54] + ldr r0, [r5, #0x2c] + adds r0, #0x44 + ldrb r0, [r0] + adds r1, #0x44 + strb r0, [r1] + ldr r1, [r4, #0x54] + ldr r0, [r5, #0x2c] + ldrb r0, [r0, #0x1e] + strb r0, [r1, #0x1e] + ldr r3, [r4, #0x54] + ldr r0, [r5, #0x2c] + ldrb r1, [r0, #0x18] + lsls r1, r1, #0x19 + lsrs r1, r1, #0x1f + mov r0, r8 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r3, #0x18] + mov r0, sb + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + ldr r3, [r4, #0x54] + ldr r0, [r5, #0x2c] + ldrb r1, [r0, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x19] + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] + ldr r2, [r4, #0x54] + ldr r0, [r5, #0x2c] + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + adds r2, #0x29 + ands r6, r0 + ldrb r1, [r2] + mov r0, sl + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + ldr r1, [r4, #0x54] + ldrb r0, [r1, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _08084C6A + ldr r1, [r1, #0x48] + ldrb r0, [r1] + rsbs r0, r0, #0 + strb r0, [r1] +_08084C6A: + adds r0, r4, #0 + movs r1, #0 + movs r2, #0 + bl sub_0806FEBC + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_0806FEBC + adds r0, r4, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_0806FEBC + adds r0, r4, #0 + movs r1, #3 + movs r2, #0 + bl sub_0806FEBC + ldr r0, [r4, #0x54] + adds r1, r4, #0 + bl sub_08078E84 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08084CA4: .4byte gLinkEntity +_08084CA8: .4byte gUnk_03003F80 + + thumb_func_start sub_08084CAC +sub_08084CAC: @ 0x08084CAC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldr r6, _08084D18 @ =gUnk_03004040 + ldrb r0, [r5, #0xa] + lsls r0, r0, #2 + adds r0, r0, r6 + ldr r0, [r0] + ldr r0, [r0, #0x70] + cmp r0, #0 + bne _08084D32 + ldrb r0, [r5, #0x14] + movs r2, #6 + ands r2, r0 + lsls r2, r2, #1 + ldr r0, _08084D1C @ =gUnk_080B4468 + adds r2, r2, r0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r3, #0 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + ldr r4, _08084D20 @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r7, #0x32 + ldrsh r1, [r5, r7] + movs r7, #2 + ldrsh r2, [r2, r7] + adds r1, r1, r2 + ldrh r2, [r4, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + bl sub_080002E4 + cmp r0, #0x72 + bne _08084D24 + ldr r2, [r6] + movs r1, #1 + ldrb r5, [r5, #0xa] + lsls r1, r5 + ldr r0, [r2, #0x6c] + orrs r0, r1 + b _08084D30 + .align 2, 0 +_08084D18: .4byte gUnk_03004040 +_08084D1C: .4byte gUnk_080B4468 +_08084D20: .4byte gUnk_03000BF0 +_08084D24: + ldr r2, [r6] + movs r1, #1 + ldrb r5, [r5, #0xa] + lsls r1, r5 + ldr r0, [r2, #0x6c] + bics r0, r1 +_08084D30: + str r0, [r2, #0x6c] +_08084D32: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08084D34 +sub_08084D34: @ 0x08084D34 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805E3B0 + cmp r0, #0 + bne _08084D50 + ldr r0, _08084D54 @ =gUnk_0812057C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08084D50: + pop {r4, pc} + .align 2, 0 +_08084D54: .4byte gUnk_0812057C + + thumb_func_start sub_08084D58 +sub_08084D58: @ 0x08084D58 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldrb r0, [r7, #0xa] + cmp r0, #3 + bne _08084D6C + adds r0, r7, #0 + bl sub_08084F8C +_08084D6C: + adds r0, r7, #0 + bl sub_08004168 + ldrb r0, [r7, #0xa] + cmp r0, #4 + bne _08084D7E + adds r0, r7, #0 + bl sub_08084F8C +_08084D7E: + movs r0, #2 + strb r0, [r7, #0xc] + ldrb r0, [r7, #0x10] + movs r2, #0x80 + orrs r0, r2 + strb r0, [r7, #0x10] + ldrb r1, [r7, #0x19] + movs r5, #0x3f + adds r0, r5, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r7, #0x19] + ldr r0, _08084E48 @ =gUnk_08120588 + mov r8, r0 + ldrb r0, [r7, #0xa] + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #1] + strb r0, [r7, #0x1d] + ldrb r0, [r7, #0xa] + lsls r0, r0, #2 + add r0, r8 + ldrb r0, [r0, #2] + strb r0, [r7, #0x1c] + movs r2, #0 + movs r0, #0x80 + strh r0, [r7, #0x24] + ldr r0, _08084E4C @ =gLinkEntity + adds r0, #0x38 + ldrb r0, [r0] + adds r6, r7, #0 + adds r6, #0x38 + strb r0, [r6] + adds r1, r7, #0 + adds r1, #0x45 + movs r0, #1 + strb r0, [r1] + subs r1, #9 + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #0x6e + strb r0, [r1] + subs r1, #4 + movs r0, #4 + strb r0, [r1] + ldr r0, _08084E50 @ =gUnk_081205B4 + str r0, [r7, #0x48] + adds r0, r7, #0 + adds r0, #0x72 + strb r2, [r0] + movs r1, #0x2e + ldrsh r0, [r7, r1] + ldr r4, _08084E54 @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r5 + movs r2, #0x32 + ldrsh r1, [r7, r2] + ldrh r2, [r4, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r5 + lsls r1, r1, #6 + orrs r0, r1 + ldrb r1, [r6] + bl sub_080001DA + adds r1, r7, #0 + adds r1, #0x70 + strh r0, [r1] + ldr r0, _08084E58 @ =0x00004022 + movs r3, #0x2e + ldrsh r1, [r7, r3] + ldrh r2, [r4, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r5 + movs r3, #0x32 + ldrsh r2, [r7, r3] + ldrh r3, [r4, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r5 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r6] + bl sub_0800015E + ldrb r0, [r7, #0xa] + lsls r0, r0, #2 + add r0, r8 + ldrb r1, [r0] + adds r0, r7, #0 + bl sub_08004260 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08084E48: .4byte gUnk_08120588 +_08084E4C: .4byte gLinkEntity +_08084E50: .4byte gUnk_081205B4 +_08084E54: .4byte gUnk_03000BF0 +_08084E58: .4byte 0x00004022 + + thumb_func_start sub_08084E5C +sub_08084E5C: @ 0x08084E5C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08084EAC @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _08084E7A + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _08084EA8 +_08084E7A: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08084EB0 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + bl sub_0805E780 +_08084EA8: + pop {r4, r5, pc} + .align 2, 0 +_08084EAC: .4byte gUnk_03003F80 +_08084EB0: .4byte gUnk_03000BF0 + + thumb_func_start sub_08084EB4 +sub_08084EB4: @ 0x08084EB4 + push {lr} + ldr r2, _08084EC8 @ =gUnk_0812059C + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08084EC8: .4byte gUnk_0812059C + + thumb_func_start sub_08084ECC +sub_08084ECC: @ 0x08084ECC + push {lr} + movs r1, #1 + strb r1, [r0, #0xd] + bl sub_08084ED8 + pop {pc} + + thumb_func_start sub_08084ED8 +sub_08084ED8: @ 0x08084ED8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08084E5C + adds r0, r4, #0 + bl sub_0806F4E8 + ldrb r0, [r4, #0x1d] + cmp r0, #0 + beq _08084EFA + subs r0, #1 + strb r0, [r4, #0x1d] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08084EFA + movs r0, #2 + strb r0, [r4, #0xd] +_08084EFA: + pop {r4, pc} + + thumb_func_start sub_08084EFC +sub_08084EFC: @ 0x08084EFC + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x72 + ldrb r1, [r2] + cmp r1, #0 + bne _08084F42 + movs r0, #1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x62 + strb r1, [r0] + adds r0, #0xe + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08084F7C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B9B8 +_08084F42: + ldr r0, _08084F80 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _08084F5C + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _08084F62 +_08084F5C: + adds r0, r5, #0 + bl sub_08084F8C +_08084F62: + adds r0, r5, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08084F7A + ldrb r1, [r5, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _08084F7A + bl sub_0805E780 +_08084F7A: + pop {r4, r5, r6, pc} + .align 2, 0 +_08084F7C: .4byte gUnk_03000BF0 +_08084F80: .4byte gUnk_03003F80 + + thumb_func_start sub_08084F84 +sub_08084F84: @ 0x08084F84 + bx lr + .align 2, 0 + + thumb_func_start sub_08084F88 +sub_08084F88: @ 0x08084F88 + bx lr + .align 2, 0 + + thumb_func_start sub_08084F8C +sub_08084F8C: @ 0x08084F8C + push {lr} + ldrb r1, [r0, #0xb] + cmp r1, #0xf + beq _08084FA4 + cmp r1, #0xf + bgt _08084F9E + cmp r1, #0 + beq _08084FB8 + b _08084FAE +_08084F9E: + cmp r1, #0xff + bne _08084FAE + b _08084FB8 +_08084FA4: + ldrb r1, [r0, #0xe] + movs r2, #0x80 + bl CreateFX + b _08084FB8 +_08084FAE: + ldrb r1, [r0, #0xb] + ldrb r2, [r0, #0xe] + movs r3, #0 + bl sub_080A2988 +_08084FB8: + bl sub_0805E780 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08084FC0 +sub_08084FC0: @ 0x08084FC0 + push {lr} + ldr r2, _08084FD4 @ =gUnk_081205BC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08084FD4: .4byte gUnk_081205BC + + thumb_func_start sub_08084FD8 +sub_08084FD8: @ 0x08084FD8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0808500C + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08084FF4 + bl sub_0805E780 +_08084FF4: + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080850FC + b _0808501C +_0808500C: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xf0 + strb r0, [r4, #0xe] + movs r0, #0x80 + strh r0, [r4, #0x24] + movs r0, #0x18 + strb r0, [r4, #0x15] +_0808501C: + movs r0, #0 + strb r0, [r4, #0x1e] + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_115 +nullsub_115: @ 0x08085024 + bx lr + .align 2, 0 + + thumb_func_start sub_08085028 +sub_08085028: @ 0x08085028 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080850A6 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #4 + strb r0, [r1] + ldr r0, _080850A8 @ =gUnk_03000F50 + mov ip, r0 + ldrh r1, [r0] + movs r2, #0x80 + lsls r2, r2, #6 + adds r0, r2, #0 + orrs r0, r1 + mov r1, ip + strh r0, [r1] + adds r1, #0x60 + movs r0, #0x1f + strh r0, [r1] + adds r1, #2 + movs r0, #0xf + strh r0, [r1] + movs r2, #0x2e + ldrsh r0, [r4, r2] + ldr r3, _080850AC @ =gUnk_03000BF0 + movs r2, #0xa + ldrsh r1, [r3, r2] + subs r0, r0, r1 + adds r1, r0, #0 + subs r1, #0x18 + movs r2, #0xff + ands r1, r2 + lsls r1, r1, #8 + adds r0, #0x18 + ands r0, r2 + orrs r1, r0 + mov r0, ip + adds r0, #0x58 + strh r1, [r0] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r4, #0xc + ldrsh r1, [r3, r4] + subs r0, r0, r1 + adds r1, r0, #0 + subs r1, #0x18 + ands r1, r2 + lsls r1, r1, #8 + adds r0, #0x18 + ands r0, r2 + orrs r1, r0 + mov r0, ip + adds r0, #0x5c + strh r1, [r0] +_080850A6: + pop {r4, pc} + .align 2, 0 +_080850A8: .4byte gUnk_03000F50 +_080850AC: .4byte gUnk_03000BF0 + + thumb_func_start sub_080850B0 +sub_080850B0: @ 0x080850B0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080850C8 + movs r0, #4 + strb r0, [r1, #0xc] + movs r0, #0x60 + strb r0, [r1, #0xe] +_080850C8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080850CC +sub_080850CC: @ 0x080850CC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080850F0 + ldr r2, _080850F4 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _080850F8 @ =0x0000DFFF + ands r0, r1 + strh r0, [r2] + adds r0, r4, #0 + bl sub_0805E7BC +_080850F0: + pop {r4, pc} + .align 2, 0 +_080850F4: .4byte gUnk_03000F50 +_080850F8: .4byte 0x0000DFFF + + thumb_func_start sub_080850FC +sub_080850FC: @ 0x080850FC + push {r4, r5, r6, lr} + movs r1, #0x2e + ldrsh r4, [r0, r1] + ldr r2, _0808518C @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r4, r4, r1 + asrs r4, r4, #4 + movs r3, #0x3f + ands r4, r3 + movs r5, #0x32 + ldrsh r1, [r0, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r4, r1 + adds r0, #0x38 + ldrb r6, [r0] + ldr r5, _08085190 @ =0x0000403D + adds r1, r4, #0 + subs r1, #0x41 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + adds r1, r4, #0 + subs r1, #0x40 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + adds r1, r4, #0 + subs r1, #0x3f + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + subs r1, r4, #1 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0800015E + adds r1, r4, #1 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + adds r1, r4, #0 + adds r1, #0x3f + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + adds r1, r4, #0 + adds r1, #0x40 + adds r0, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + adds r4, #0x41 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0808518C: .4byte gUnk_03000BF0 +_08085190: .4byte 0x0000403D + + thumb_func_start sub_08085194 +sub_08085194: @ 0x08085194 + push {lr} + ldr r2, _080851A8 @ =gUnk_081205D0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080851A8: .4byte gUnk_081205D0 + + thumb_func_start sub_080851AC +sub_080851AC: @ 0x080851AC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r2, #1 + movs r3, #1 + strb r3, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r5, #0xb] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080851E8 + adds r1, r5, #0 + adds r1, #0x7c + ldr r0, _080851E4 @ =0x0000FFFF + strh r0, [r1] + b _080851EE + .align 2, 0 +_080851E4: .4byte 0x0000FFFF +_080851E8: + adds r0, r5, #0 + adds r0, #0x7c + strh r3, [r0] +_080851EE: + ldrb r1, [r5, #0xb] + movs r0, #2 + ands r0, r1 + strb r0, [r5, #0x14] + ldrb r4, [r5, #0xa] + cmp r4, #3 + bne _0808521E + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + adds r1, r5, #0 + adds r1, #0x7a + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0808521E + ldrb r0, [r5, #0x14] + adds r0, #2 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0x14] + strb r4, [r5, #0xc] +_0808521E: + ldrb r1, [r5, #0x14] + adds r0, r5, #0 + bl sub_08004260 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_0808094C + movs r1, #0x2e + ldrsh r2, [r5, r1] + ldr r3, _08085260 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r2, r2, r1 + asrs r2, r2, #4 + movs r4, #0x3f + ands r2, r4 + movs r6, #0x32 + ldrsh r1, [r5, r6] + ldrh r3, [r3, #8] + subs r1, r1, r3 + asrs r1, r1, #4 + ands r1, r4 + lsls r1, r1, #6 + orrs r2, r1 + lsls r2, r2, #1 + adds r2, #4 + adds r0, r0, r2 + str r0, [r5, #0x70] + adds r0, r5, #0 + bl sub_08085394 + pop {r4, r5, r6, pc} + .align 2, 0 +_08085260: .4byte gUnk_03000BF0 + + thumb_func_start sub_08085264 +sub_08085264: @ 0x08085264 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x86 + ldrh r0, [r5] + bl sub_0807CBE4 + cmp r0, #0 + beq _080852AE + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _0808528A + ldrh r0, [r5] + bl sub_0807CD48 +_0808528A: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + ldrb r1, [r4, #0x14] + adds r0, r0, r1 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0808543C + ldr r0, _080852B0 @ =0x00000151 + bl sub_08004488 +_080852AE: + pop {r4, r5, pc} + .align 2, 0 +_080852B0: .4byte 0x00000151 + + thumb_func_start sub_080852B4 +sub_080852B4: @ 0x080852B4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08085300 + movs r4, #3 + movs r0, #3 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0xe] + strb r0, [r5, #0xf] + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + adds r1, r5, #0 + adds r1, #0x7a + strh r0, [r1] + adds r0, r5, #0 + adds r0, #0x7c + ldrb r0, [r0] + ldrb r1, [r5, #0x14] + adds r0, r0, r1 + ands r0, r4 + strb r0, [r5, #0x14] + ldrb r1, [r5, #0x14] + adds r0, r5, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_08085394 + ldr r0, _08085304 @ =0x00000151 + bl sub_08004488 +_08085300: + pop {r4, r5, pc} + .align 2, 0 +_08085304: .4byte 0x00000151 + + thumb_func_start sub_08085308 +sub_08085308: @ 0x08085308 + push {r4, lr} + adds r4, r0, #0 + bl sub_080854A8 + cmp r0, #0 + bne _0808538C + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _08085324 + cmp r0, #2 + ble _08085354 + cmp r0, #3 + beq _08085338 + b _08085354 +_08085324: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _08085354 + movs r0, #1 + strb r0, [r4, #0xc] + b _0808538C +_08085338: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + adds r1, r4, #0 + adds r1, #0x7a + ldrh r1, [r1] + cmp r0, r1 + bne _08085350 + movs r0, #0xff + b _08085352 +_08085350: + movs r0, #1 +_08085352: + strb r0, [r4, #0xf] +_08085354: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808538C + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + ldrb r1, [r4, #0x14] + adds r0, r0, r1 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0808543C + ldr r0, _08085390 @ =0x00000151 + bl sub_08004488 +_0808538C: + pop {r4, pc} + .align 2, 0 +_08085390: .4byte 0x00000151 + + thumb_func_start sub_08085394 +sub_08085394: @ 0x08085394 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r7, r0, #0 + ldr r0, _08085430 @ =gUnk_081205E0 + ldrb r2, [r7, #0x14] + lsrs r2, r2, #1 + lsls r2, r2, #1 + adds r0, r2, r0 + ldrh r0, [r0] + mov sl, r0 + ldr r0, _08085434 @ =gUnk_080B4488 + adds r2, r2, r0 + ldr r0, [r7, #0x70] + mov sb, r0 + movs r1, #0x2e + ldrsh r4, [r7, r1] + ldr r1, _08085438 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r4, r4, r0 + asrs r4, r4, #4 + movs r3, #0x3f + ands r4, r3 + movs r5, #0x32 + ldrsh r0, [r7, r5] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r4, r0 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + mov r8, r2 + lsls r5, r2, #1 + mov r1, sb + subs r0, r1, r5 + ldrh r1, [r0] + adds r0, r7, #0 + adds r0, #0x74 + strh r1, [r0] + subs r1, r4, r2 + adds r6, r7, #0 + adds r6, #0x38 + ldrb r2, [r6] + mov r0, sl + bl sub_0800015E + mov r1, sb + ldrh r0, [r1] + adds r1, r7, #0 + adds r1, #0x76 + strh r0, [r1] + ldrb r2, [r6] + mov r0, sl + adds r1, r4, #0 + bl sub_0800015E + add r5, sb + ldrh r1, [r5] + adds r0, r7, #0 + adds r0, #0x78 + strh r1, [r0] + add r4, r8 + ldrb r2, [r6] + mov r0, sl + adds r1, r4, #0 + bl sub_0800015E + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08085430: .4byte gUnk_081205E0 +_08085434: .4byte gUnk_080B4488 +_08085438: .4byte gUnk_03000BF0 + + thumb_func_start sub_0808543C +sub_0808543C: @ 0x0808543C + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _080854A0 @ =gUnk_080B4488 + ldrb r2, [r7, #0x14] + lsrs r2, r2, #1 + lsls r2, r2, #1 + adds r2, r2, r0 + movs r0, #0x2e + ldrsh r4, [r7, r0] + ldr r1, _080854A4 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r4, r4, r0 + asrs r4, r4, #4 + movs r3, #0x3f + ands r4, r3 + movs r5, #0x32 + ldrsh r0, [r7, r5] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r4, r0 + adds r0, r7, #0 + adds r0, #0x74 + ldrh r0, [r0] + movs r6, #0 + ldrsb r6, [r2, r6] + subs r1, r4, r6 + adds r5, r7, #0 + adds r5, #0x38 + ldrb r2, [r5] + bl sub_0800015E + adds r0, r7, #0 + adds r0, #0x76 + ldrh r0, [r0] + ldrb r2, [r5] + adds r1, r4, #0 + bl sub_0800015E + adds r0, r7, #0 + adds r0, #0x78 + ldrh r0, [r0] + adds r4, r4, r6 + ldrb r2, [r5] + adds r1, r4, #0 + bl sub_0800015E + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080854A0: .4byte gUnk_080B4488 +_080854A4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080854A8 +sub_080854A8: @ 0x080854A8 + push {r4, lr} + ldr r2, _080854E0 @ =gUnk_081205E0 + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + lsls r1, r1, #1 + adds r2, r1, r2 + ldrh r3, [r2] + adds r4, r3, #0 + ldr r2, _080854E4 @ =gUnk_080B4488 + adds r1, r1, r2 + ldr r2, [r0, #0x70] + movs r0, #0 + ldrsb r0, [r1, r0] + lsls r1, r0, #1 + subs r0, r2, r1 + ldrh r0, [r0] + cmp r3, r0 + bne _080854E8 + ldrh r0, [r2] + cmp r3, r0 + bne _080854E8 + adds r0, r1, r2 + ldrh r0, [r0] + cmp r4, r0 + bne _080854E8 + movs r0, #0 + b _080854EA + .align 2, 0 +_080854E0: .4byte gUnk_081205E0 +_080854E4: .4byte gUnk_080B4488 +_080854E8: + movs r0, #1 +_080854EA: + pop {r4, pc} + + thumb_func_start sub_080854EC +sub_080854EC: @ 0x080854EC + push {lr} + ldr r2, _08085500 @ =gUnk_08120608 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08085500: .4byte gUnk_08120608 + + thumb_func_start sub_08085504 +sub_08085504: @ 0x08085504 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0xff + bne _08085520 + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + beq _0808551C + bl sub_0805E780 +_0808551C: + movs r0, #0 + strb r0, [r4, #0xa] +_08085520: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08085552 + ldr r0, _08085540 @ =gUnk_02033A90 + ldrb r0, [r0, #1] + cmp r0, #0x1b + beq _08085544 + ldrb r0, [r4, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + bne _08085552 + movs r0, #5 + strb r0, [r4, #0xc] + b _080855E2 + .align 2, 0 +_08085540: .4byte gUnk_02033A90 +_08085544: + ldrb r0, [r4, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + bne _08085552 + bl sub_0805E780 +_08085552: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0808556C + adds r0, r4, #0 + bl sub_080040A2 + cmp r0, #0 + bne _08085566 + bl sub_0805E780 +_08085566: + movs r0, #0 + strb r0, [r4, #0xe] + b _0808557A +_0808556C: + adds r0, r4, #0 + bl sub_0805EABC + cmp r0, #0 + beq _0808557A + bl sub_0805E780 +_0808557A: + movs r2, #1 + strb r2, [r4, #0xc] + movs r3, #0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldr r0, _080855E4 @ =gUnk_08120640 + str r0, [r4, #0x48] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3f + strb r2, [r0] + subs r1, #1 + movs r0, #4 + strb r0, [r1] + movs r0, #0x80 + lsls r0, r0, #0x11 + str r0, [r4, #0x78] + adds r1, #0x43 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x85 + strb r3, [r0] + subs r0, #1 + strb r3, [r0] + adds r0, r4, #0 + movs r1, #9 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080855E8 +_080855E2: + pop {r4, pc} + .align 2, 0 +_080855E4: .4byte gUnk_08120640 + + thumb_func_start sub_080855E8 +sub_080855E8: @ 0x080855E8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldrb r1, [r7, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r7, #0x10] + ldr r6, _0808564C @ =gLinkEntity + adds r0, r7, #0 + adds r1, r6, #0 + movs r2, #0x18 + bl sub_0806FC80 + adds r1, r0, #0 + cmp r1, #0 + beq _080856EE + ldr r3, _08085650 @ =gUnk_03003F80 + ldr r0, [r3, #0x30] + movs r1, #2 + orrs r0, r1 + str r0, [r3, #0x30] + ldr r4, [r6, #0x34] + cmp r4, #0 + beq _0808561C + b _080857CE +_0808561C: + adds r5, r3, #0 + adds r5, #0x26 + ldrb r0, [r5] + cmp r0, #0 + beq _08085634 + adds r2, r6, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0xfb + ands r0, r1 + strb r0, [r2] + strb r4, [r5] +_08085634: + adds r0, r3, #0 + adds r0, #0x84 + str r7, [r0] + adds r0, r7, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _08085654 + adds r0, r6, #0 + bl sub_0800455E + b _0808565A + .align 2, 0 +_0808564C: .4byte gLinkEntity +_08085650: .4byte gUnk_03003F80 +_08085654: + adds r0, r6, #0 + bl sub_08004542 +_0808565A: + ldrb r0, [r7, #0xf] + cmp r0, #0 + bne _0808568C + movs r0, #4 + strb r0, [r7, #0xf] +_08085664: + adds r0, r7, #0 + movs r1, #8 + movs r2, #0xa + bl sub_080A2AF4 + ldrb r0, [r7, #0xf] + subs r0, #1 + strb r0, [r7, #0xf] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _08085664 + movs r0, #1 + strb r0, [r7, #0xf] + ldrb r1, [r7, #0xe] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r7, #0xe] + str r2, [r7, #0x70] + str r2, [r7, #0x6c] +_0808568C: + ldr r2, _080856B8 @ =gUnk_03003F80 + ldrb r0, [r2, #0x1c] + cmp r0, #3 + beq _08085696 + b _080857CE +_08085696: + ldr r1, _080856BC @ =gUnk_08120620 + ldrb r0, [r2, #0x1d] + subs r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + ldr r0, _080856C0 @ =gLinkEntity + ldrb r0, [r0, #0x14] + movs r1, #6 + ands r1, r0 + cmp r1, #2 + beq _080856DE + cmp r1, #2 + bgt _080856C4 + cmp r1, #0 + beq _080856D6 + b _080857CE + .align 2, 0 +_080856B8: .4byte gUnk_03003F80 +_080856BC: .4byte gUnk_08120620 +_080856C0: .4byte gLinkEntity +_080856C4: + cmp r1, #4 + beq _080856CE + cmp r1, #6 + beq _080856E6 + b _080857CE +_080856CE: + ldr r0, [r7, #0x70] + subs r0, r0, r4 + str r0, [r7, #0x70] + b _080857CE +_080856D6: + ldr r0, [r7, #0x70] + adds r0, r0, r4 + str r0, [r7, #0x70] + b _080857CE +_080856DE: + ldr r0, [r7, #0x6c] + subs r0, r0, r4 + str r0, [r7, #0x6c] + b _080857CE +_080856E6: + ldr r0, [r7, #0x6c] + adds r0, r0, r4 + str r0, [r7, #0x6c] + b _080857CE +_080856EE: + ldrb r0, [r7, #0xf] + cmp r0, #0 + beq _080856FC + strb r1, [r7, #0xf] + movs r0, #0x83 + bl sub_080A3268 +_080856FC: + adds r2, r7, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + mov r8, r2 + cmp r0, #0x13 + bne _080857C8 + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r3, _08085758 @ =gUnk_08126EE4 + ldrb r2, [r6, #0x14] + movs r0, #0xe + ands r0, r2 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r5, r1, r0 + movs r0, #0x32 + ldrsh r1, [r6, r0] + movs r0, #1 + orrs r0, r2 + adds r0, r0, r3 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r3, r1, r0 + movs r1, #0x2e + ldrsh r0, [r7, r1] + movs r2, #0x32 + ldrsh r1, [r7, r2] + adds r2, r5, #0 + bl sub_080045D4 + strb r0, [r7, #0x15] + ldr r0, _0808575C @ =gUnk_03003F80 + ldrb r0, [r0, #0x1d] + cmp r0, #2 + beq _0808576A + cmp r0, #2 + bgt _08085760 + cmp r0, #1 + beq _08085770 + b _08085774 + .align 2, 0 +_08085758: .4byte gUnk_08126EE4 +_0808575C: .4byte gUnk_03003F80 +_08085760: + cmp r0, #3 + bne _08085774 + movs r4, #0x80 + lsls r4, r4, #3 + b _08085774 +_0808576A: + movs r4, #0xc0 + lsls r4, r4, #2 + b _08085774 +_08085770: + movs r4, #0x80 + lsls r4, r4, #2 +_08085774: + ldr r6, _080858A8 @ =gUnk_080C9160 + ldrb r0, [r7, #0x15] + lsls r0, r0, #4 + adds r0, r0, r6 + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r4, r4, #0x10 + asrs r4, r4, #0x18 + adds r1, r4, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x80 + lsls r5, r5, #1 + adds r1, r5, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r7, #0x6c] + adds r1, r1, r0 + str r1, [r7, #0x6c] + ldrb r0, [r7, #0x15] + lsls r0, r0, #4 + adds r0, #0x80 + adds r0, r0, r6 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r1, r4, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r5, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r7, #0x70] + subs r1, r1, r0 + str r1, [r7, #0x70] +_080857C8: + movs r0, #0 + mov r1, r8 + strb r0, [r1] +_080857CE: + ldr r0, [r7, #0x2c] + str r0, [r7, #0x54] + ldr r0, [r7, #0x30] + str r0, [r7, #0x50] + ldr r0, [r7, #0x6c] + cmp r0, #0 + bne _080857E4 + ldr r0, [r7, #0x70] + cmp r0, #0 + bne _080857E4 + b _080859F4 +_080857E4: + ldr r0, [r7, #0x70] + ldr r1, _080858AC @ =0xFFFF0000 + cmp r0, r1 + blt _080857F4 + movs r1, #0x80 + lsls r1, r1, #9 + cmp r0, r1 + ble _080857F6 +_080857F4: + str r1, [r7, #0x70] +_080857F6: + ldr r0, [r7, #0x6c] + ldr r1, _080858AC @ =0xFFFF0000 + cmp r0, r1 + blt _08085806 + movs r1, #0x80 + lsls r1, r1, #9 + cmp r0, r1 + ble _08085808 +_08085806: + str r1, [r7, #0x6c] +_08085808: + ldr r0, _080858B0 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0808581A + adds r0, r7, #0 + bl sub_080A2AD4 +_0808581A: + ldr r0, [r7, #0x2c] + ldr r1, [r7, #0x6c] + adds r5, r0, r1 + ldr r1, [r7, #0x30] + ldr r2, [r7, #0x70] + adds r3, r1, r2 + adds r2, r5, #0 + bl sub_080045D4 + strb r0, [r7, #0x15] + ldr r0, [r7, #0x6c] + lsls r0, r0, #8 + asrs r0, r0, #0x10 + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldr r5, _080858A8 @ =gUnk_080C9160 + ldrb r1, [r7, #0x15] + lsls r1, r1, #4 + adds r1, r1, r5 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0806FA04 + strh r0, [r7, #0x24] + ldr r0, [r7, #0x70] + lsls r0, r0, #8 + asrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + ldrb r1, [r7, #0x15] + lsls r1, r1, #4 + adds r1, #0x80 + adds r1, r1, r5 + movs r2, #0 + ldrsh r1, [r1, r2] + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + rsbs r4, r0, #0 + movs r1, #0x24 + ldrsh r0, [r7, r1] + cmp r4, r0 + ble _08085884 + strh r4, [r7, #0x24] +_08085884: + ldrb r0, [r7, #0xb] + cmp r0, #0 + beq _080858BC + adds r0, r7, #0 + adds r0, #0x7e + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r0, _080858B4 @ =0x00000FFF + cmp r1, r0 + bgt _080858B8 + movs r0, #0x24 + ldrsh r1, [r7, r0] + lsls r1, r1, #0xc + ldr r0, [r7, #0x7c] + adds r0, r0, r1 + str r0, [r7, #0x7c] + b _080858E0 + .align 2, 0 +_080858A8: .4byte gUnk_080C9160 +_080858AC: .4byte 0xFFFF0000 +_080858B0: .4byte gUnk_030010A0 +_080858B4: .4byte 0x00000FFF +_080858B8: + movs r0, #0 + b _080858DE +_080858BC: + adds r0, r7, #0 + adds r0, #0x7e + movs r2, #0 + ldrsh r1, [r0, r2] + ldr r0, _080858D8 @ =0xFFFFF000 + cmp r1, r0 + ble _080858DC + movs r0, #0x24 + ldrsh r1, [r7, r0] + lsls r1, r1, #0xc + ldr r0, [r7, #0x7c] + subs r0, r0, r1 + str r0, [r7, #0x7c] + b _080858E0 + .align 2, 0 +_080858D8: .4byte 0xFFFFF000 +_080858DC: + movs r0, #1 +_080858DE: + strb r0, [r7, #0xb] +_080858E0: + adds r0, r7, #0 + bl sub_08085EFC + adds r0, r7, #0 + bl sub_080AF134 + ldr r1, [r7, #0x54] + ldr r0, [r7, #0x2c] + cmp r1, r0 + bne _0808590C + adds r0, r7, #0 + adds r0, #0x85 + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #2 + bne _08085906 + movs r0, #0 + str r0, [r7, #0x6c] + b _08085916 +_08085906: + adds r0, r1, #1 + strb r0, [r2] + b _08085916 +_0808590C: + adds r1, r7, #0 + adds r1, #0x85 + movs r0, #0 + strb r0, [r1] + adds r2, r1, #0 +_08085916: + ldr r1, [r7, #0x50] + ldr r0, [r7, #0x30] + cmp r1, r0 + bne _0808592E + ldrb r0, [r2] + cmp r0, #2 + bne _0808592A + movs r0, #0 + str r0, [r7, #0x70] + b _08085932 +_0808592A: + adds r0, #1 + b _08085930 +_0808592E: + movs r0, #0 +_08085930: + strb r0, [r2] +_08085932: + ldr r0, _0808595C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08085944 + adds r0, r7, #0 + bl sub_08085F1C +_08085944: + ldr r1, [r7, #0x6c] + cmp r1, #0 + beq _08085998 + cmp r1, #0 + bge _0808596E + movs r0, #0x80 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08085960 + movs r0, #0 + b _08085964 + .align 2, 0 +_0808595C: .4byte gUnk_03003F80 +_08085960: + adds r0, r1, #0 + adds r0, #0x80 +_08085964: + str r0, [r7, #0x6c] + ldrh r2, [r7, #0x2a] + movs r1, #0xe0 + lsls r1, r1, #4 + b _08085982 +_0808596E: + cmp r1, #0x7f + bhi _08085976 + movs r0, #0 + b _0808597A +_08085976: + adds r0, r1, #0 + subs r0, #0x80 +_0808597A: + str r0, [r7, #0x6c] + ldrh r2, [r7, #0x2a] + movs r1, #0xe0 + lsls r1, r1, #8 +_08085982: + adds r0, r1, #0 + ands r0, r2 + cmp r0, r1 + bne _08085998 + ldr r0, [r7, #0x6c] + cmp r0, #0 + bge _08085992 + adds r0, #3 +_08085992: + asrs r0, r0, #2 + rsbs r0, r0, #0 + str r0, [r7, #0x6c] +_08085998: + ldr r1, [r7, #0x70] + cmp r1, #0 + beq _080859E6 + cmp r1, #0 + bge _080859C0 + movs r0, #0x80 + rsbs r0, r0, #0 + cmp r1, r0 + ble _080859AE + movs r0, #0 + b _080859B2 +_080859AE: + adds r0, r1, #0 + adds r0, #0x80 +_080859B2: + str r0, [r7, #0x70] + ldrh r1, [r7, #0x2a] + movs r0, #0xe + ands r0, r1 + cmp r0, #0xe + bne _080859E6 + b _080859D8 +_080859C0: + cmp r1, #0x7f + bhi _080859C8 + movs r0, #0 + b _080859CC +_080859C8: + adds r0, r1, #0 + subs r0, #0x80 +_080859CC: + str r0, [r7, #0x70] + ldrh r1, [r7, #0x2a] + movs r0, #0xe0 + ands r0, r1 + cmp r0, #0xe0 + bne _080859E6 +_080859D8: + ldr r0, [r7, #0x70] + cmp r0, #0 + bge _080859E0 + adds r0, #3 +_080859E0: + asrs r0, r0, #2 + rsbs r0, r0, #0 + str r0, [r7, #0x70] +_080859E6: + adds r0, r7, #0 + bl sub_08085D28 + adds r0, r7, #0 + bl sub_08085D60 + b _08085A0A +_080859F4: + ldr r0, _08085A18 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _08085A0A + adds r0, r7, #0 + movs r1, #8 + movs r2, #0xa + bl sub_080A2AF4 +_08085A0A: + adds r0, r7, #0 + bl sub_08085F48 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08085A18: .4byte gUnk_030010A0 + + thumb_func_start sub_08085A1C +sub_08085A1C: @ 0x08085A1C + push {lr} + ldr r2, _08085A3C @ =gUnk_0812062C + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldr r2, _08085A40 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #0x30] + bl sub_08078B48 + pop {pc} + .align 2, 0 +_08085A3C: .4byte gUnk_0812062C +_08085A40: .4byte gUnk_03003F80 + + thumb_func_start sub_08085A44 +sub_08085A44: @ 0x08085A44 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0x10 + movs r2, #0x18 + bl sub_080002B4 + cmp r0, #0x11 + beq _08085A62 + movs r0, #0x18 + strb r0, [r4, #0x15] + b _08085A82 +_08085A62: + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r4, #0 + movs r2, #0x18 + bl sub_080002B4 + cmp r0, #0x11 + beq _08085A78 + movs r0, #8 + strb r0, [r4, #0x15] + b _08085A82 +_08085A78: + movs r0, #0x10 + strb r0, [r4, #0x15] + movs r0, #1 + strb r0, [r4, #0xd] + b _08085A94 +_08085A82: + adds r0, r4, #0 + bl sub_08085EFC + adds r0, r4, #0 + bl sub_080AF134 + adds r0, r4, #0 + bl sub_08085F1C +_08085A94: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08085A98 +sub_08085A98: @ 0x08085A98 + push {r4, lr} + adds r4, r0, #0 + bl sub_08085EFC + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08085F1C + ldr r1, [r4, #0x78] + ldr r0, _08085B00 @ =0x007FFFFF + cmp r1, r0 + bls _08085ACC + ldr r2, _08085B04 @ =0xFFFE0000 + adds r0, r1, r2 + str r0, [r4, #0x78] + adds r0, r4, #0 + adds r0, #0x7a + ldrh r2, [r0] + adds r0, #4 + ldrh r3, [r0] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C +_08085ACC: + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x18 + bl sub_080002B4 + cmp r0, #0x11 + beq _08085B34 + movs r0, #2 + strb r0, [r4, #0xd] + ldr r0, _08085B08 @ =gUnk_02033A90 + ldrb r0, [r0, #1] + cmp r0, #0x1b + bne _08085B10 + ldrh r0, [r4, #0x32] + adds r0, #0xd0 + strh r0, [r4, #0x32] + ldr r0, _08085B0C @ =0x0000FF30 + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0x46 + strh r0, [r1] + movs r0, #0x73 + bl sub_0807CCB4 + b _08085B22 + .align 2, 0 +_08085B00: .4byte 0x007FFFFF +_08085B04: .4byte 0xFFFE0000 +_08085B08: .4byte gUnk_02033A90 +_08085B0C: .4byte 0x0000FF30 +_08085B10: + ldrh r0, [r4, #0x32] + adds r0, #0x40 + strh r0, [r4, #0x32] + ldr r0, _08085B38 @ =0x0000FFC0 + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0xf + strh r0, [r1] +_08085B22: + adds r0, r4, #0 + movs r1, #0x2b + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + ldr r0, _08085B3C @ =0x0000012D + bl sub_080A3268 +_08085B34: + pop {r4, pc} + .align 2, 0 +_08085B38: .4byte 0x0000FFC0 +_08085B3C: .4byte 0x0000012D + + thumb_func_start sub_08085B40 +sub_08085B40: @ 0x08085B40 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x34] + cmp r0, #0 + beq _08085BB4 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _08085BE8 + ldr r1, [r5, #0x78] + ldr r0, _08085B9C @ =0x011FFFFF + cmp r1, r0 + bhi _08085B7A + movs r2, #0x80 + lsls r2, r2, #0xd + adds r0, r1, r2 + str r0, [r5, #0x78] + adds r0, r5, #0 + adds r0, #0x7a + ldrh r2, [r0] + adds r0, #4 + ldrh r3, [r0] + adds r0, r5, #0 + adds r1, r2, #0 + bl sub_0805EC9C +_08085B7A: + ldr r4, _08085BA0 @ =gLinkEntity + ldrh r3, [r5, #0x32] + ldrh r0, [r5, #0x36] + adds r0, r3, r0 + adds r1, r5, #0 + adds r1, #0x74 + ldrh r1, [r1] + subs r2, r0, r1 + strh r2, [r4, #0x32] + ldr r0, _08085BA4 @ =gUnk_02033A90 + ldrb r0, [r0, #1] + cmp r0, #0x1b + bne _08085BA8 + subs r0, r3, r1 + adds r1, r2, #0 + adds r1, #0xd0 + b _08085BAE + .align 2, 0 +_08085B9C: .4byte 0x011FFFFF +_08085BA0: .4byte gLinkEntity +_08085BA4: .4byte gUnk_02033A90 +_08085BA8: + subs r0, r3, r1 + adds r1, r2, #0 + adds r1, #0x40 +_08085BAE: + subs r0, r0, r1 + strh r0, [r4, #0x36] + b _08085BE8 +_08085BB4: + adds r0, r5, #0 + bl sub_0800455E + adds r0, r5, #0 + bl sub_080002B8 + cmp r0, #0xd + bne _08085BE8 + ldr r4, _08085C50 @ =gLinkEntity + adds r0, r4, #0 + bl sub_0800455E + adds r0, r5, #0 + bl sub_08085CDC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] + movs r1, #0x80 + lsls r1, r1, #1 + ldrb r2, [r5, #0x15] + adds r0, r4, #0 + bl sub_0806F5BC +_08085BE8: + adds r1, r5, #0 + adds r1, #0x82 + ldrh r0, [r1] + cmp r0, #0 + bne _08085C54 + ldr r4, _08085C50 @ =gLinkEntity + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08085C58 + adds r0, r4, #0 + bl sub_0800455E + adds r0, r5, #0 + bl sub_08085F1C + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #4 + strb r0, [r5, #0xf] +_08085C16: + adds r0, r5, #0 + movs r1, #8 + movs r2, #0xa + bl sub_080A2AF4 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _08085C16 + movs r0, #1 + strb r0, [r5, #0xf] + ldrb r1, [r5, #0xe] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0xe] + str r2, [r5, #0x70] + str r2, [r5, #0x6c] + adds r0, r5, #0 + bl sub_080002B8 + cmp r0, #0xd + bne _08085C58 + movs r0, #4 + strb r0, [r5, #0xc] + b _08085C58 + .align 2, 0 +_08085C50: .4byte gLinkEntity +_08085C54: + subs r0, #1 + strh r0, [r1] +_08085C58: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08085C5C +sub_08085C5C: @ 0x08085C5C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08085CA0 @ =gLinkEntity + adds r1, r5, #0 + movs r2, #0x18 + bl sub_0806FC80 + cmp r0, #0 + beq _08085CAE + adds r0, r4, #0 + bl sub_0806F69C + ldrh r0, [r4, #0x24] + strh r0, [r5, #0x24] + ldrb r0, [r4, #0x15] + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F69C + ldr r2, _08085CA4 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #0x30] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _08085CA8 + adds r0, r5, #0 + bl sub_0800455E + b _08085CAE + .align 2, 0 +_08085CA0: .4byte gLinkEntity +_08085CA4: .4byte gUnk_03003F80 +_08085CA8: + adds r0, r5, #0 + bl sub_08004542 +_08085CAE: + ldr r3, _08085CD4 @ =gUnk_03000BF0 + ldrh r0, [r3] + cmp r0, #0 + bne _08085CD2 + ldrb r1, [r4, #0x10] + movs r0, #0xdf + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x11] + lsrs r2, r1, #4 + subs r0, #0x11 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x11] + ldr r0, _08085CD8 @ =gLinkEntity + str r0, [r3, #0x30] +_08085CD2: + pop {r4, r5, pc} + .align 2, 0 +_08085CD4: .4byte gUnk_03000BF0 +_08085CD8: .4byte gLinkEntity + + thumb_func_start sub_08085CDC +sub_08085CDC: @ 0x08085CDC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x78] + movs r1, #0x80 + lsls r1, r1, #0xd + adds r0, r0, r1 + str r0, [r4, #0x78] + ldr r1, _08085D04 @ =0x03FFFFFF + cmp r0, r1 + bhi _08085D08 + adds r0, r4, #0 + adds r0, #0x7a + ldrh r2, [r0] + adds r0, #4 + ldrh r3, [r0] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C + b _08085D0C + .align 2, 0 +_08085D04: .4byte 0x03FFFFFF +_08085D08: + bl sub_0805E780 +_08085D0C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08085D10 +sub_08085D10: @ 0x08085D10 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805EABC + cmp r0, #0 + beq _08085D26 + ldrb r0, [r4, #0xb] + bl sub_0807CCB4 + bl sub_0805E780 +_08085D26: + pop {r4, pc} + + thumb_func_start sub_08085D28 +sub_08085D28: @ 0x08085D28 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _08085D5C @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x13 + beq _08085D5A + ldr r0, [r1, #0x30] + movs r5, #2 + ands r0, r5 + cmp r0, #0 + beq _08085D5A + adds r0, r4, #0 + movs r1, #0 + movs r2, #0x18 + bl sub_080002B4 + cmp r0, #0x11 + bne _08085D5A + movs r0, #0 + strb r5, [r4, #0xc] + strb r0, [r4, #0xd] + bl sub_08078B48 +_08085D5A: + pop {r4, r5, pc} + .align 2, 0 +_08085D5C: .4byte gUnk_03003F80 + + thumb_func_start sub_08085D60 +sub_08085D60: @ 0x08085D60 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r2, _08085D94 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _08085E64 + adds r0, r2, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x12 + beq _08085E64 + ldrb r0, [r2, #2] + cmp r0, #0 + bne _08085E64 + ldrb r1, [r5, #0x15] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _08085D98 + ldrb r6, [r5, #0x15] + adds r4, r6, #0 + b _08085DB0 + .align 2, 0 +_08085D94: .4byte gUnk_03003F80 +_08085D98: + movs r0, #0x10 + ands r0, r1 + movs r4, #8 + cmp r0, #0 + beq _08085DA4 + movs r4, #0x18 +_08085DA4: + ldrb r0, [r5, #0x15] + subs r0, #8 + movs r6, #0x10 + cmp r0, #0x10 + ble _08085DB0 + movs r6, #0 +_08085DB0: + cmp r4, #0x18 + beq _08085DB8 + cmp r4, #8 + bne _08085E20 +_08085DB8: + lsrs r3, r4, #2 + ldr r1, _08085E10 @ =gUnk_08120638 + adds r0, r3, r1 + movs r7, #0 + ldrsb r7, [r0, r7] + adds r0, r3, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + mov r8, r0 + adds r0, r5, #0 + adds r1, r7, #0 + mov r2, r8 + bl sub_080002CC + cmp r0, #0xff + bne _08085E20 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r2, _08085E14 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + adds r0, r0, r7 + movs r3, #0x32 + ldrsh r1, [r5, r3] + ldrh r2, [r2, #8] + subs r1, r1, r2 + add r1, r8 + adds r2, r4, #0 + movs r3, #5 + bl sub_080806BC + cmp r0, #0 + bne _08085E1C + ldr r0, _08085E18 @ =gLinkEntity + lsrs r1, r4, #3 + bl sub_0807BD14 + cmp r0, #0 + beq _08085E20 + strb r4, [r5, #0x15] + b _08085E52 + .align 2, 0 +_08085E10: .4byte gUnk_08120638 +_08085E14: .4byte gUnk_03000BF0 +_08085E18: .4byte gLinkEntity +_08085E1C: + strb r4, [r5, #0x15] + b _08085E6C +_08085E20: + cmp r6, #0 + beq _08085E28 + cmp r6, #0x10 + bne _08085E6C +_08085E28: + lsrs r3, r6, #2 + ldr r2, _08085E5C @ =gUnk_08120638 + adds r0, r3, r2 + movs r1, #0 + ldrsb r1, [r0, r1] + adds r0, r3, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + adds r0, r5, #0 + bl sub_080002CC + cmp r0, #0xff + bne _08085E6C + ldr r0, _08085E60 @ =gLinkEntity + lsrs r1, r6, #3 + bl sub_0807BD14 + cmp r0, #0 + beq _08085E6C + strb r6, [r5, #0x15] +_08085E52: + adds r0, r5, #0 + bl sub_08085E74 + b _08085E6C + .align 2, 0 +_08085E5C: .4byte gUnk_08120638 +_08085E60: .4byte gLinkEntity +_08085E64: + ldrb r1, [r5, #0x10] + movs r0, #0xdf + ands r0, r1 + strb r0, [r5, #0x10] +_08085E6C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08085E74 +sub_08085E74: @ 0x08085E74 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2, #0x11] + movs r0, #3 + strb r0, [r2, #0xc] + ldrb r0, [r2, #0x15] + cmp r0, #8 + beq _08085EB8 + cmp r0, #8 + bgt _08085EA2 + cmp r0, #0 + beq _08085EAC + b _08085EBE +_08085EA2: + cmp r0, #0x10 + beq _08085EB2 + cmp r0, #0x18 + beq _08085EB8 + b _08085EBE +_08085EAC: + movs r0, #0x90 + lsls r0, r0, #1 + b _08085EBC +_08085EB2: + movs r0, #0x9c + lsls r0, r0, #1 + b _08085EBC +_08085EB8: + movs r0, #0x80 + lsls r0, r0, #1 +_08085EBC: + strh r0, [r2, #0x24] +_08085EBE: + movs r0, #0 + str r0, [r2, #0x70] + str r0, [r2, #0x6c] + strh r0, [r2, #0x2c] + strh r0, [r2, #0x30] + ldr r1, _08085EF0 @ =gLinkEntity + strh r0, [r1, #0x2c] + strh r0, [r1, #0x30] + ldrb r0, [r2, #0x15] + strb r0, [r1, #0x15] + ldr r1, _08085EF4 @ =gUnk_03003F80 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #8] + ldr r0, _08085EF8 @ =gUnk_03000BF0 + str r2, [r0, #0x30] + ldr r0, [r1, #0x2c] + cmp r0, #0 + beq _08085EE8 + bl sub_0805E7BC +_08085EE8: + bl sub_08077B2C + pop {pc} + .align 2, 0 +_08085EF0: .4byte gLinkEntity +_08085EF4: .4byte gUnk_03003F80 +_08085EF8: .4byte gUnk_03000BF0 + + thumb_func_start sub_08085EFC +sub_08085EFC: @ 0x08085EFC + ldr r3, _08085F18 @ =gLinkEntity + ldrh r1, [r0, #0x2e] + ldrh r2, [r3, #0x2e] + subs r1, r1, r2 + adds r2, r0, #0 + adds r2, #0x76 + strh r1, [r2] + ldrh r1, [r0, #0x32] + ldrh r2, [r3, #0x32] + subs r1, r1, r2 + adds r0, #0x74 + strh r1, [r0] + bx lr + .align 2, 0 +_08085F18: .4byte gLinkEntity + + thumb_func_start sub_08085F1C +sub_08085F1C: @ 0x08085F1C + push {lr} + adds r3, r0, #0 + ldr r2, _08085F44 @ =gLinkEntity + adds r1, r3, #0 + adds r1, #0x76 + ldrh r0, [r3, #0x2e] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2, #0x2e] + adds r1, r3, #0 + adds r1, #0x74 + ldrh r0, [r3, #0x32] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2, #0x32] + ldrb r0, [r3, #0x15] + bl sub_0807A5B8 + pop {pc} + .align 2, 0 +_08085F44: .4byte gLinkEntity + + thumb_func_start sub_08085F48 +sub_08085F48: @ 0x08085F48 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xe] + movs r0, #0x80 + ands r0, r2 + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + beq _08085F8C + ldr r5, _08085F80 @ =gUnk_03003F80 + ldrb r0, [r5, #0x12] + cmp r0, #0x17 + bne _08085F6A + bl sub_08078F60 + movs r0, #0x19 + strb r0, [r5, #0x12] +_08085F6A: + movs r0, #0x83 + bl sub_080A3268 + ldr r1, [r4, #0x78] + ldr r0, _08085F84 @ =0x0127FFFF + cmp r1, r0 + bhi _08085F88 + movs r2, #0x80 + lsls r2, r2, #0xc + b _08085FF8 + .align 2, 0 +_08085F80: .4byte gUnk_03003F80 +_08085F84: .4byte 0x0127FFFF +_08085F88: + movs r0, #0 + b _08086006 +_08085F8C: + ldr r0, _08085FAC @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + movs r0, #2 + ands r1, r0 + cmp r1, #0 + beq _08085FCC + lsls r0, r2, #0x18 + cmp r0, #0 + beq _08085FB8 + ldr r1, [r4, #0x78] + ldr r0, _08085FB0 @ =0x011FFFFF + cmp r1, r0 + bhi _08085FB4 + movs r2, #0x80 + lsls r2, r2, #8 + b _08085FF8 + .align 2, 0 +_08085FAC: .4byte gUnk_03003F80 +_08085FB0: .4byte 0x011FFFFF +_08085FB4: + strb r3, [r4, #0xe] + b _08086008 +_08085FB8: + ldr r1, [r4, #0x78] + movs r0, #0x88 + lsls r0, r0, #0x11 + cmp r1, r0 + bls _08086004 + ldr r2, _08085FC8 @ =0xFFFF8000 + b _08085FF8 + .align 2, 0 +_08085FC8: .4byte 0xFFFF8000 +_08085FCC: + lsls r0, r2, #0x18 + cmp r0, #0 + beq _08085FEC + ldr r2, [r4, #0x78] + ldr r0, _08085FE4 @ =0x010FFFFF + cmp r2, r0 + bhi _08085FE8 + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r2, r1 + str r0, [r4, #0x78] + b _08086008 + .align 2, 0 +_08085FE4: .4byte 0x010FFFFF +_08085FE8: + strb r1, [r4, #0xe] + b _08086008 +_08085FEC: + ldr r1, [r4, #0x78] + movs r0, #0x83 + lsls r0, r0, #0x11 + cmp r1, r0 + bls _08086004 + ldr r2, _08086000 @ =0xFFFFC000 +_08085FF8: + adds r0, r1, r2 + str r0, [r4, #0x78] + b _08086008 + .align 2, 0 +_08086000: .4byte 0xFFFFC000 +_08086004: + movs r0, #1 +_08086006: + strb r0, [r4, #0xe] +_08086008: + adds r0, r4, #0 + adds r0, #0x7a + ldrh r2, [r0] + adds r0, #4 + ldrh r3, [r0] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C + pop {r4, r5, pc} + + thumb_func_start sub_0808601C +sub_0808601C: @ 0x0808601C + push {lr} + ldr r2, _08086030 @ =gUnk_08120648 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08086030: .4byte gUnk_08120648 + + thumb_func_start sub_08086034 +sub_08086034: @ 0x08086034 + push {lr} + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + adds r1, r0, #0 + adds r1, #0x58 + ldrb r1, [r1] + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08086054 +sub_08086054: @ 0x08086054 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08086064 + adds r0, r4, #0 + bl sub_08004274 +_08086064: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0808607C + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0808607C: + ldrb r0, [r4, #0xe] + lsls r1, r0, #0x18 + cmp r1, #0 + blt _080860AA + cmp r1, #0 + beq _08086098 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080860AA + bl sub_0805E780 + b _080860AA +_08086098: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080860AA + bl sub_0805E780 +_080860AA: + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _080860BC + ldr r0, [r1, #0x2c] + str r0, [r4, #0x2c] + ldr r0, [r1, #0x30] + str r0, [r4, #0x30] + ldr r0, [r1, #0x34] + str r0, [r4, #0x34] +_080860BC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080860C0 +sub_080860C0: @ 0x080860C0 + push {lr} + ldr r2, _080860D4 @ =gUnk_08120650 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080860D4: .4byte gUnk_08120650 + + thumb_func_start sub_080860D8 +sub_080860D8: @ 0x080860D8 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, #0xff + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xb] + bl sub_0804B128 + str r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x54 + adds r2, r4, #0 + adds r2, #0x70 + adds r0, r4, #0 + bl sub_080A2CC0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808611C +sub_0808611C: @ 0x0808611C + push {r4, lr} + adds r4, r0, #0 + bl sub_08086168 + adds r1, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0808613C + ldr r2, [r4, #0x50] + ldrb r0, [r2, #0xe] + cmp r0, #0 + bne _08086144 + cmp r1, #0 + beq _0808613C + adds r0, #1 + strb r0, [r2, #0xe] +_0808613C: + adds r0, r4, #0 + bl sub_080A2BE4 + b _0808614C +_08086144: + adds r0, r4, #0 + movs r1, #0 + bl sub_080A2BE4 +_0808614C: + adds r2, r4, #0 + adds r2, #0x70 + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08086166 + adds r1, r4, #0 + adds r1, #0x54 + adds r0, r4, #0 + bl sub_080A2CC0 +_08086166: + pop {r4, pc} + + thumb_func_start sub_08086168 +sub_08086168: @ 0x08086168 + push {r4, lr} + ldrb r1, [r0, #0xa] + lsls r1, r1, #1 + ldr r2, _0808619C @ =gUnk_08120658 + adds r1, r1, r2 + ldr r4, _080861A0 @ =gLinkEntity + ldrb r2, [r1] + ldrb r3, [r1, #1] + adds r1, r4, #0 + bl sub_080041A0 + cmp r0, #0 + beq _080861A8 + bl sub_08079F8C + cmp r0, #0 + beq _080861A8 + ldr r0, _080861A4 @ =gUnk_03003F80 + movs r1, #1 + strb r1, [r0, #0x14] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080861A8 + movs r0, #1 + b _080861AA + .align 2, 0 +_0808619C: .4byte gUnk_08120658 +_080861A0: .4byte gLinkEntity +_080861A4: .4byte gUnk_03003F80 +_080861A8: + movs r0, #0 +_080861AA: + pop {r4, pc} + + thumb_func_start sub_080861AC +sub_080861AC: @ 0x080861AC + push {lr} + ldr r2, _080861C0 @ =gUnk_08120660 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080861C0: .4byte gUnk_08120660 + + thumb_func_start sub_080861C4 +sub_080861C4: @ 0x080861C4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r5, #1 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x80 + strh r0, [r4, #0x24] + ldr r0, _08086230 @ =gLinkEntity + mov ip, r0 + ldrb r1, [r0, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r3, [r4, #0x19] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x19] + mov r0, ip + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r6, r4, #0 + adds r6, #0x29 + lsrs r1, r1, #0x1d + ldrb r3, [r6] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r6] + mov r0, ip + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + mov r1, ip + ldrb r0, [r1, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r1, [r4, #0x1b] + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0x1b] + bl sub_08000E50 + ands r0, r5 + strb r0, [r4, #0xa] + adds r0, r4, #0 + movs r1, #0x11 + bl sub_08004260 + pop {r4, r5, r6, pc} + .align 2, 0 +_08086230: .4byte gLinkEntity + + thumb_func_start sub_08086234 +sub_08086234: @ 0x08086234 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08086258 + ldr r0, _08086254 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0808625E + adds r0, r4, #0 + bl sub_08004274 + b _0808625E + .align 2, 0 +_08086254: .4byte gUnk_030010A0 +_08086258: + adds r0, r4, #0 + bl sub_08004274 +_0808625E: + adds r0, r4, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0808626E + bl sub_0805E780 + b _0808627E +_0808626E: + ldr r0, _08086280 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + beq _0808627E + bl sub_0805E780 +_0808627E: + pop {r4, pc} + .align 2, 0 +_08086280: .4byte gUnk_03003F80 + + thumb_func_start sub_08086284 +sub_08086284: @ 0x08086284 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080862B4 @ =gUnk_08120668 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r1, r4, #0 + adds r1, #0x41 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + adds r0, #4 + ldrh r2, [r0] + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_080862B4: .4byte gUnk_08120668 + + thumb_func_start sub_080862B8 +sub_080862B8: @ 0x080862B8 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x63 + bl sub_0807CBD0 + cmp r0, #0 + beq _080862CA + bl sub_0805E780 +_080862CA: + movs r3, #1 + strb r3, [r4, #0xc] + ldr r1, _08086350 @ =gUnk_08120678 + ldrb r0, [r4, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x7c + strh r0, [r1] + adds r2, r4, #0 + adds r2, #0x76 + strh r0, [r2] + ldrh r0, [r1] + subs r1, #2 + strh r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08086354 + adds r1, #6 + ldr r0, [r4, #0x2c] + str r0, [r1] + adds r1, #4 + ldr r0, [r4, #0x30] + str r0, [r1] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + strb r0, [r4, #0x19] + str r4, [r4, #0x50] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3f + strb r3, [r0] + subs r1, #1 + movs r0, #4 + strb r0, [r1] + movs r2, #0 +_08086324: + adds r5, r2, #1 + adds r0, r4, #0 + movs r1, #0x18 + adds r2, r5, #0 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08086346 + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + ldr r0, [r4, #0x54] + str r4, [r0, #0x54] + ldr r0, [r4, #0x54] + str r0, [r4, #0x50] +_08086346: + adds r2, r5, #0 + cmp r2, #3 + bls _08086324 + b _08086360 + .align 2, 0 +_08086350: .4byte gUnk_08120678 +_08086354: + ldrb r0, [r4, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4, #0x19] +_08086360: + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08086370 + pop {r4, r5, pc} + + thumb_func_start sub_08086370 +sub_08086370: @ 0x08086370 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r2, [r6, #0xa] + cmp r2, #0 + beq _08086440 + ldr r0, [r6, #0x54] + adds r0, #0x7f + ldrb r0, [r0] + cmp r0, #0 + bne _080863B6 + adds r1, r6, #0 + adds r1, #0x7c + ldrh r0, [r1] + adds r2, r6, #0 + adds r2, #0x76 + strh r0, [r2] + ldrh r0, [r1] + subs r1, #2 + strh r0, [r1] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r6, #0x24] + ldr r2, [r6, #0x50] + ldr r0, [r2, #0x2c] + ldr r1, [r6, #0x2c] + subs r0, r0, r1 + ldr r1, [r2, #0x30] + ldr r2, [r6, #0x30] + subs r1, r1, r2 + bl sub_080045DA + movs r1, #0x80 + eors r0, r1 + strb r0, [r6, #0x15] + b _08086428 +_080863B6: + movs r0, #0xc0 + lsls r0, r0, #3 + strh r0, [r6, #0x24] + ldr r2, _080863E8 @ =gLinkEntity + ldr r0, [r2, #0x2c] + ldr r1, [r6, #0x2c] + subs r0, r0, r1 + ldr r1, [r2, #0x30] + ldr r2, [r6, #0x30] + subs r1, r1, r2 + bl sub_080045DA + adds r1, r0, #0 + movs r0, #0x80 + eors r1, r0 + ldrb r2, [r6, #0x15] + cmp r1, r2 + beq _080863F0 + subs r0, r1, r2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x80 + bls _080863EC + adds r0, r2, #3 + b _080863EE + .align 2, 0 +_080863E8: .4byte gLinkEntity +_080863EC: + subs r0, r2, #3 +_080863EE: + strb r0, [r6, #0x15] +_080863F0: + ldr r0, _0808640C @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _08086410 + adds r0, r6, #0 + adds r0, #0x7c + ldrh r0, [r0] + adds r0, #0x40 + adds r1, r6, #0 + adds r1, #0x76 + b _08086426 + .align 2, 0 +_0808640C: .4byte gLinkEntity +_08086410: + adds r0, r6, #0 + adds r0, #0x7c + ldrh r1, [r0] + subs r1, #0x20 + adds r2, r6, #0 + adds r2, #0x76 + strh r1, [r2] + ldrh r0, [r0] + adds r0, #0x50 + adds r1, r6, #0 + adds r1, #0x7a +_08086426: + strh r0, [r1] +_08086428: + ldr r1, [r6, #0x50] + ldr r0, [r1, #0x2c] + str r0, [r6, #0x2c] + ldr r0, [r1, #0x30] + str r0, [r6, #0x30] + movs r0, #0x24 + ldrsh r1, [r6, r0] + ldrb r2, [r6, #0x15] + adds r0, r6, #0 + bl sub_0806F62C + b _0808654A +_08086440: + adds r0, r6, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + bne _08086498 + ldrb r0, [r6, #0x15] + adds r0, #1 + strb r0, [r6, #0x15] + ldrb r0, [r6, #0x1d] + subs r0, #1 + strb r0, [r6, #0x1d] + adds r2, r6, #0 + adds r2, #0x7f + movs r0, #1 + strb r0, [r2] + ldr r0, _08086480 @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r0, #2 + ands r0, r1 + adds r3, r2, #0 + cmp r0, #0 + bne _08086484 + adds r0, r6, #0 + adds r0, #0x7c + ldrh r0, [r0] + adds r0, #0x10 + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + b _080864BC + .align 2, 0 +_08086480: .4byte gLinkEntity +_08086484: + adds r1, r6, #0 + adds r1, #0x7c + ldrh r0, [r1] + subs r0, #0x20 + adds r2, r6, #0 + adds r2, #0x76 + strh r0, [r2] + ldrh r0, [r1] + adds r0, #0x30 + b _080864B6 +_08086498: + ldrb r0, [r6, #0x15] + adds r0, #2 + strb r0, [r6, #0x15] + movs r0, #0xf0 + strb r0, [r6, #0x1d] + adds r3, r6, #0 + adds r3, #0x7f + strb r2, [r3] + adds r1, r6, #0 + adds r1, #0x7c + ldrh r0, [r1] + adds r2, r6, #0 + adds r2, #0x76 + strh r0, [r2] + ldrh r0, [r1] +_080864B6: + subs r1, #2 + strh r0, [r1] + adds r1, r2, #0 +_080864BC: + ldrb r2, [r6, #0x1d] + cmp r2, #0 + bne _080864CA + movs r0, #2 + strb r0, [r6, #0xc] + strb r2, [r3] + b _0808654A +_080864CA: + ldrb r0, [r6, #0x15] + adds r0, #0x40 + lsls r0, r0, #0x18 + cmp r0, #0 + blt _080864E0 + ldrh r2, [r1] + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + ble _080864EE + b _080864EA +_080864E0: + ldrh r2, [r1] + movs r3, #0 + ldrsh r0, [r1, r3] + cmp r0, #0 + bge _080864EE +_080864EA: + rsbs r0, r2, #0 + strh r0, [r1] +_080864EE: + ldr r5, _0808654C @ =gUnk_080C9160 + ldrb r0, [r6, #0x15] + lsls r0, r0, #1 + adds r0, r0, r5 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + bl sub_0806FA04 + adds r1, r6, #0 + adds r1, #0x80 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1] + adds r1, r1, r0 + str r1, [r6, #0x2c] + ldrb r0, [r6, #0x15] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r5 + movs r3, #0 + ldrsh r0, [r0, r3] + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_0806FA04 + adds r1, r6, #0 + adds r1, #0x84 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1] + subs r1, r1, r0 + str r1, [r6, #0x30] +_0808654A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808654C: .4byte gUnk_080C9160 + + thumb_func_start sub_08086550 +sub_08086550: @ 0x08086550 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _08086566 + movs r0, #3 + strb r0, [r4, #0xc] + b _08086592 +_08086566: + adds r0, r4, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _08086592 + movs r0, #0x63 + bl sub_0807CCB4 + movs r0, #0 + bl sub_0807CD10 + movs r5, #0 +_0808657E: + ldr r0, [r4, #0x54] + ldr r1, [r0, #0x50] + str r1, [r4, #0x54] + bl sub_0805E7BC + adds r5, #1 + cmp r5, #3 + bls _0808657E + bl sub_0805E780 +_08086592: + pop {r4, r5, pc} + + thumb_func_start sub_08086594 +sub_08086594: @ 0x08086594 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r0, #0x80 + ldr r0, [r0] + ldr r1, [r7, #0x2c] + subs r0, r0, r1 + adds r1, r7, #0 + adds r1, #0x84 + ldr r1, [r1] + ldr r2, [r7, #0x30] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r7, #0x15] + adds r0, r7, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + bne _08086608 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r7, #0x24] + ldrb r0, [r7, #0x1d] + subs r0, #1 + strb r0, [r7, #0x1d] + adds r2, r7, #0 + adds r2, #0x7f + movs r0, #1 + strb r0, [r2] + ldr r0, _080865EC @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080865F0 + adds r0, r7, #0 + adds r0, #0x7c + ldrh r0, [r0] + adds r0, #0x10 + adds r1, r7, #0 + adds r1, #0x76 + b _0808662A + .align 2, 0 +_080865EC: .4byte gLinkEntity +_080865F0: + adds r0, r7, #0 + adds r0, #0x7c + ldrh r1, [r0] + subs r1, #0x20 + adds r3, r7, #0 + adds r3, #0x76 + strh r1, [r3] + ldrh r0, [r0] + adds r0, #0x30 + adds r1, r7, #0 + adds r1, #0x7a + b _0808662A +_08086608: + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r7, #0x24] + movs r0, #0xf0 + strb r0, [r7, #0x1d] + adds r2, r7, #0 + adds r2, #0x7f + strb r1, [r2] + adds r1, r7, #0 + adds r1, #0x7c + ldrh r0, [r1] + adds r3, r7, #0 + adds r3, #0x76 + strh r0, [r3] + ldrh r0, [r1] + subs r1, #2 +_0808662A: + strh r0, [r1] + ldrb r1, [r7, #0x1d] + cmp r1, #0 + bne _0808663A + movs r0, #2 + strb r0, [r7, #0xc] + strb r1, [r2] + b _080866B8 +_0808663A: + movs r0, #0x24 + ldrsh r1, [r7, r0] + ldrb r2, [r7, #0x15] + adds r0, r7, #0 + bl sub_0806F62C + ldrb r0, [r7, #0x15] + movs r1, #0x80 + eors r0, r1 + strb r0, [r7, #0x15] + ldr r6, _080866BC @ =gUnk_080C9160 + ldrb r0, [r7, #0x15] + lsls r0, r0, #1 + adds r0, r0, r6 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x80 + lsls r5, r5, #1 + adds r1, r5, #0 + bl sub_0806FA04 + adds r1, r7, #0 + adds r1, #0x80 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r4, [r1] + adds r4, r4, r0 + ldrb r0, [r7, #0x15] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r6 + movs r1, #0 + ldrsh r0, [r0, r1] + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r5, #0 + bl sub_0806FA04 + adds r1, r7, #0 + adds r1, #0x84 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r2, [r1] + subs r2, r2, r0 + adds r0, r7, #0 + adds r1, r4, #0 + movs r3, #2 + bl sub_0806FCB8 + cmp r0, #0 + beq _080866B8 + movs r0, #1 + strb r0, [r7, #0xc] +_080866B8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080866BC: .4byte gUnk_080C9160 + + thumb_func_start sub_080866C0 +sub_080866C0: @ 0x080866C0 + push {lr} + ldr r2, _080866D4 @ =gUnk_081206B4 + ldrb r1, [r0, #0xb] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080866D4: .4byte gUnk_081206B4 + + thumb_func_start sub_080866D8 +sub_080866D8: @ 0x080866D8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldrb r1, [r6, #0xc] + cmp r1, #0 + bne _080866FE + movs r0, #1 + strb r0, [r6, #0xc] + str r1, [r6, #0x68] + ldrb r1, [r6, #0xe] + adds r0, r6, #0 + adds r0, #0x6c + strb r1, [r0] + adds r0, r6, #0 + movs r1, #6 + bl sub_0805E3A0 +_080866FE: + adds r0, r6, #0 + adds r0, #0x6c + ldrb r0, [r0] + bl sub_0804B128 + adds r5, r0, #0 + movs r0, #0 + mov r8, r0 + ldrh r0, [r5] + ldr r1, _080867C4 @ =0x0000FFFF + cmp r0, r1 + beq _080867BA + mov sb, r1 +_08086718: + movs r7, #1 + mov r1, r8 + lsls r7, r1 + ldr r0, [r6, #0x68] + ands r0, r7 + cmp r0, #0 + bne _080867A8 + ldrb r0, [r5, #5] + bl sub_080867CC + cmp r0, #0 + beq _080867A8 + ldrh r0, [r5] + ldrh r1, [r5, #2] + movs r2, #0x20 + movs r3, #0x20 + bl sub_080562CC + cmp r0, #0 + beq _080867A8 + ldrb r1, [r5, #7] + ldrb r2, [r5, #6] + movs r0, #0x19 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080867A8 + adds r0, #0x6c + mov r2, r8 + strb r2, [r0] + ldr r1, _080867C8 @ =gUnk_03000BF0 + ldrh r0, [r5] + ldrh r2, [r1, #6] + adds r0, r0, r2 + adds r0, #0x10 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #2] + ldrh r1, [r1, #8] + adds r0, r0, r1 + adds r0, #0x20 + strh r0, [r4, #0x32] + str r6, [r4, #0x50] + ldrh r1, [r5] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + ldrh r0, [r5, #2] + adds r1, r4, #0 + adds r1, #0x6a + strh r0, [r1] + ldrb r1, [r5, #4] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r0, [r5, #5] + strb r0, [r4, #0xd] + adds r0, r4, #0 + bl sub_08016A04 + ldr r0, [r6, #0x68] + orrs r0, r7 + str r0, [r6, #0x68] + ldr r1, [r5, #8] + cmp r1, #0 + beq _080867A8 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_080867A8: + adds r5, #0xc + movs r0, #1 + add r8, r0 + ldrh r0, [r5] + cmp r0, sb + beq _080867BA + mov r1, r8 + cmp r1, #0x1f + bls _08086718 +_080867BA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080867C4: .4byte 0x0000FFFF +_080867C8: .4byte gUnk_03000BF0 + + thumb_func_start sub_080867CC +sub_080867CC: @ 0x080867CC + push {lr} + cmp r0, #0 + beq _080867DE + cmp r0, #2 + bne _080867DE + movs r0, #0x18 + bl GetProgressFlag + b _080867E0 +_080867DE: + movs r0, #1 +_080867E0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080867E4 +sub_080867E4: @ 0x080867E4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x68 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x6a + ldrh r1, [r1] + movs r2, #0x20 + movs r3, #0x20 + bl sub_080562CC + cmp r0, #0 + bne _08086814 + ldr r2, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x6c + movs r1, #1 + ldrb r0, [r0] + lsls r1, r0 + ldr r0, [r2, #0x68] + bics r0, r1 + str r0, [r2, #0x68] + bl sub_0805E780 +_08086814: + adds r0, r4, #0 + bl sub_0808681C + pop {r4, pc} + + thumb_func_start sub_0808681C +sub_0808681C: @ 0x0808681C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xc] + cmp r4, #0 + beq _0808682C + cmp r4, #1 + beq _08086868 + b _0808688C +_0808682C: + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #8 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x18] + subs r0, #0xc + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + strb r4, [r5, #0x1e] + ldr r0, _08086864 @ =gUnk_081206AC + str r0, [r5, #0x48] + ldrb r1, [r5, #0xd] + cmp r1, #1 + bne _08086852 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r5, #0x1e] +_08086852: + ldrb r1, [r5, #0x10] + movs r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080868AA + strb r2, [r5, #0xc] + b _0808688C + .align 2, 0 +_08086864: .4byte gUnk_081206AC +_08086868: + adds r0, r5, #0 + bl sub_08086954 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808688C + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + strb r4, [r5, #0x1e] + movs r0, #0x10 + movs r1, #0 + movs r2, #1 + bl sub_08078AC0 + ldr r0, _080868AC @ =0x00000111 + bl sub_080A3268 +_0808688C: + ldrb r1, [r5, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080868AA + adds r4, r5, #0 + adds r4, #0x84 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_0807DF74 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_080868EC +_080868AA: + pop {r4, r5, pc} + .align 2, 0 +_080868AC: .4byte 0x00000111 + + thumb_func_start sub_080868B0 +sub_080868B0: @ 0x080868B0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _080868D2 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldr r0, _080868E8 @ =gUnk_081206AC + str r0, [r5, #0x48] + movs r0, #8 + strb r0, [r5, #0xe] +_080868D2: + adds r4, r5, #0 + adds r4, #0x84 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_0807DF74 + ldr r1, [r4] + adds r0, r5, #0 + bl sub_080868EC + pop {r4, r5, pc} + .align 2, 0 +_080868E8: .4byte gUnk_081206AC + + thumb_func_start sub_080868EC +sub_080868EC: @ 0x080868EC + push {r4, r5, lr} + adds r3, r0, #0 + ldr r2, [r1, #8] + movs r0, #0 + str r0, [r1, #8] + cmp r2, #0 + beq _0808691E + movs r5, #0x80 + lsls r5, r5, #1 + movs r4, #0 + movs r1, #1 +_08086902: + mvns r0, r2 + adds r0, #1 + ands r0, r2 + eors r2, r0 + cmp r0, #0x80 + beq _08086914 + cmp r0, r5 + beq _08086918 + b _0808691A +_08086914: + strb r4, [r3, #0x1e] + b _0808691A +_08086918: + strb r1, [r3, #0x1e] +_0808691A: + cmp r2, #0 + bne _08086902 +_0808691E: + ldrb r0, [r3, #0x1e] + cmp r0, #0 + bne _0808692A + adds r0, r3, #0 + bl sub_0800445C +_0808692A: + pop {r4, r5, pc} + + thumb_func_start sub_0808692C +sub_0808692C: @ 0x0808692C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #0xfd + ands r0, r1 + strb r0, [r2, #0x10] + movs r0, #2 + strb r0, [r2, #0xb] + ldrb r0, [r2, #0x1e] + movs r1, #2 + cmp r0, #0 + bne _08086946 + movs r1, #1 +_08086946: + strb r1, [r2, #0xc] + movs r0, #0 + strb r0, [r2, #0xd] + movs r0, #8 + strb r0, [r2, #0xe] + pop {pc} + .align 2, 0 + + thumb_func_start sub_08086954 +sub_08086954: @ 0x08086954 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + cmp r0, #0 + beq _0808699C + adds r0, r4, #0 + movs r1, #6 + movs r2, #0x14 + bl sub_0806ED9C + cmp r0, #0 + blt _080869A0 + ldr r0, _08086994 @ =gLinkEntity + ldrb r0, [r0, #0x14] + cmp r0, #0 + bne _080869A0 + ldr r2, _08086998 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x90 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + bne _080869A0 + ldrb r0, [r2, #2] + cmp r0, #0 + bne _080869A0 + ldrb r0, [r4, #0xe] + subs r0, #1 + b _0808699E + .align 2, 0 +_08086994: .4byte gLinkEntity +_08086998: .4byte gUnk_03003F80 +_0808699C: + movs r0, #8 +_0808699E: + strb r0, [r4, #0xe] +_080869A0: + ldrb r0, [r4, #0xe] + pop {r4, pc} + + thumb_func_start sub_080869A4 +sub_080869A4: @ 0x080869A4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #0 + str r0, [r5, #0x14] + adds r0, r4, #0 + bl sub_08086954 + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080869C2 + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #1 + str r0, [r5, #0x14] +_080869C2: + pop {r4, r5, pc} + + thumb_func_start sub_080869C4 +sub_080869C4: @ 0x080869C4 + push {lr} + ldr r2, _080869D8 @ =gUnk_081206C4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080869D8: .4byte gUnk_081206C4 + + thumb_func_start sub_080869DC +sub_080869DC: @ 0x080869DC + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, _08086A24 @ =gUnk_080FD1A8 + str r0, [r4, #0x48] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0xa] + movs r0, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08086A20 + movs r0, #0xa + strb r0, [r1, #0xe] + str r4, [r1, #0x50] + str r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + bl sub_08086A6C +_08086A20: + pop {r4, pc} + .align 2, 0 +_08086A24: .4byte gUnk_080FD1A8 + + thumb_func_start sub_08086A28 +sub_08086A28: @ 0x08086A28 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08086A3A + movs r0, #2 + strb r0, [r4, #0xc] + b _08086A5A +_08086A3A: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + bne _08086A4C + movs r0, #2 + strb r0, [r4, #0xc] +_08086A4C: + adds r0, r4, #0 + bl sub_080AEF88 + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 +_08086A5A: + pop {r4, pc} + + thumb_func_start sub_08086A5C +sub_08086A5C: @ 0x08086A5C + push {lr} + ldr r1, [r0, #0x54] + movs r0, #0 + str r0, [r1, #0x50] + bl sub_0805E780 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08086A6C +sub_08086A6C: @ 0x08086A6C + push {r4, lr} + adds r4, r0, #0 + bl sub_08000E50 + movs r1, #0xa0 + lsls r1, r1, #0xa + str r1, [r4, #0x20] + lsrs r1, r0, #0x10 + movs r2, #0x1f + ands r1, r2 + strb r1, [r4, #0x15] + movs r2, #0xf0 + lsls r2, r2, #1 + adds r1, r2, #0 + ands r0, r1 + strh r0, [r4, #0x24] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08086A90 +sub_08086A90: @ 0x08086A90 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08086AA4 + ldrb r0, [r4, #0xa] + movs r1, #0xb + bl __modsi3 + strb r0, [r4, #0xb] +_08086AA4: + ldr r0, _08086AB8 @ =gUnk_081206D0 + ldrb r1, [r4, #0xb] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08086AB8: .4byte gUnk_081206D0 + + thumb_func_start sub_08086ABC +sub_08086ABC: @ 0x08086ABC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08086AE4 @ =gUnk_081206FC + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r3, _08086AE8 @ =gLinkEntity + movs r1, #0x32 + ldrsh r0, [r3, r1] + ldr r2, _08086AEC @ =gUnk_03000BF0 + ldrh r1, [r2, #8] + subs r0, r0, r1 + cmp r0, #0xa7 + bgt _08086AF0 + str r4, [r2, #0x30] + b _08086AF2 + .align 2, 0 +_08086AE4: .4byte gUnk_081206FC +_08086AE8: .4byte gLinkEntity +_08086AEC: .4byte gUnk_03000BF0 +_08086AF0: + str r3, [r2, #0x30] +_08086AF2: + movs r0, #2 + strb r0, [r2, #0xe] + pop {r4, pc} + + thumb_func_start sub_08086AF8 +sub_08086AF8: @ 0x08086AF8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + movs r0, #0 + strb r0, [r4, #0xe] + adds r4, #0x84 + movs r0, #0x91 + lsls r0, r0, #1 + strh r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08086B10 +sub_08086B10: @ 0x08086B10 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + beq _08086B9A + adds r1, r4, #0 + adds r1, #0x84 + ldrh r0, [r1] + cmp r0, #0 + beq _08086B2C + subs r0, #1 + strh r0, [r1] +_08086B2C: + ldrh r1, [r1] + cmp r1, #0x96 + beq _08086B62 + cmp r1, #0x96 + bgt _08086B40 + cmp r1, #0 + beq _08086B5C + cmp r1, #0x82 + beq _08086B62 + b _08086B9A +_08086B40: + cmp r1, #0xd2 + beq _08086B62 + cmp r1, #0xd2 + bgt _08086B4E + cmp r1, #0xaa + beq _08086B62 + b _08086B9A +_08086B4E: + ldr r0, _08086B58 @ =0x00000121 + cmp r1, r0 + beq _08086B62 + b _08086B9A + .align 2, 0 +_08086B58: .4byte 0x00000121 +_08086B5C: + movs r0, #2 + strb r0, [r4, #0xc] + b _08086B9A +_08086B62: + adds r0, r4, #0 + movs r1, #6 + movs r2, #0 + bl sub_080873AC + adds r5, r0, #0 + cmp r5, #0 + beq _08086B9A + ldr r3, _08086B9C @ =gUnk_08120714 + ldrb r1, [r4, #0xe] + lsls r0, r1, #1 + adds r0, r0, r3 + movs r6, #0 + ldrsh r2, [r0, r6] + lsls r2, r2, #0x10 + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r3 + movs r0, #0 + ldrsh r3, [r1, r0] + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 + ldrb r0, [r4, #0xe] + adds r0, #2 + strb r0, [r4, #0xe] +_08086B9A: + pop {r4, r5, r6, pc} + .align 2, 0 +_08086B9C: .4byte gUnk_08120714 + + thumb_func_start sub_08086BA0 +sub_08086BA0: @ 0x08086BA0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #7 + movs r2, #0 + bl sub_080873AC + adds r1, r0, #0 + cmp r1, #0 + beq _08086BC2 + movs r3, #0x80 + lsls r3, r3, #0xc + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #3 + strb r0, [r4, #0xc] +_08086BC2: + pop {r4, pc} + + thumb_func_start sub_08086BC4 +sub_08086BC4: @ 0x08086BC4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08086C10 @ =gUnk_02034350 + ldr r0, [r0, #0x68] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08086C0C + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl sub_080873AC + adds r1, r0, #0 + cmp r1, #0 + beq _08086C0C + adds r0, r4, #0 + bl sub_0806FA24 + movs r0, #6 + movs r1, #4 + bl sub_08050054 + ldr r0, _08086C14 @ =0x00000145 + bl sub_080A3268 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x40 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_08086C0C: + pop {r4, pc} + .align 2, 0 +_08086C10: .4byte gUnk_02034350 +_08086C14: .4byte 0x00000145 + + thumb_func_start sub_08086C18 +sub_08086C18: @ 0x08086C18 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + adds r5, r0, #0 + cmp r5, #0 + beq _08086C2E + subs r0, #1 + strb r0, [r4, #0xe] + b _08086C52 +_08086C2E: + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_080873AC + adds r1, r0, #0 + cmp r1, #0 + beq _08086C52 + ldr r3, _08086C54 @ =0xFFEC0000 + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] +_08086C52: + pop {r4, r5, pc} + .align 2, 0 +_08086C54: .4byte 0xFFEC0000 + + thumb_func_start sub_08086C58 +sub_08086C58: @ 0x08086C58 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08086C68 + subs r0, #1 + strb r0, [r4, #0xe] + b _08086C90 +_08086C68: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08086C90 + adds r0, r4, #0 + movs r1, #9 + movs r2, #0 + bl sub_080873AC + adds r5, r0, #0 + cmp r5, #0 + beq _08086C90 + ldr r3, _08086C98 @ =0xFFB40000 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + str r4, [r5, #0x50] + movs r0, #1 + strb r0, [r4, #0xf] +_08086C90: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + .align 2, 0 +_08086C98: .4byte 0xFFB40000 + + thumb_func_start sub_08086C9C +sub_08086C9C: @ 0x08086C9C + push {lr} + ldr r2, _08086CB0 @ =gUnk_08120728 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08086CB0: .4byte gUnk_08120728 + + thumb_func_start sub_08086CB4 +sub_08086CB4: @ 0x08086CB4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x19] + ldr r1, _08086D10 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xf4 + lsls r0, r0, #4 + strh r0, [r2] + adds r1, #0x68 + ldr r0, _08086D14 @ =0x00000809 + strh r0, [r1] + movs r1, #0x80 + lsls r1, r1, #3 + strh r1, [r4, #0x24] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_08086D10: .4byte gUnk_03000F50 +_08086D14: .4byte 0x00000809 + + thumb_func_start sub_08086D18 +sub_08086D18: @ 0x08086D18 + push {lr} + adds r3, r0, #0 + ldrh r0, [r3, #0x24] + subs r0, #0x20 + strh r0, [r3, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x80 + lsls r2, r2, #1 + cmp r0, r2 + bne _08086D58 + movs r0, #2 + strb r0, [r3, #0xc] + adds r0, r3, #0 + bl sub_0805EC60 + ldr r2, _08086D50 @ =gUnk_02034350 + ldr r0, [r2, #0x68] + movs r1, #0x20 + orrs r0, r1 + str r0, [r2, #0x68] + ldr r2, _08086D54 @ =gUnk_02033280 + ldr r0, [r2] + movs r1, #4 + orrs r0, r1 + str r0, [r2] + b _08086D64 + .align 2, 0 +_08086D50: .4byte gUnk_02034350 +_08086D54: .4byte gUnk_02033280 +_08086D58: + movs r0, #0x24 + ldrsh r1, [r3, r0] + adds r0, r3, #0 + movs r3, #0 + bl sub_0805EC9C +_08086D64: + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_116 +nullsub_116: @ 0x08086D68 + bx lr + .align 2, 0 + + thumb_func_start sub_08086D6C +sub_08086D6C: @ 0x08086D6C + push {lr} + ldr r2, _08086D80 @ =gUnk_08120734 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08086D80: .4byte gUnk_08120734 + + thumb_func_start sub_08086D84 +sub_08086D84: @ 0x08086D84 + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_08086DAC +sub_08086DAC: @ 0x08086DAC + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_08086DB4 +sub_08086DB4: @ 0x08086DB4 + push {lr} + ldr r2, _08086DC8 @ =gUnk_0812073C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08086DC8: .4byte gUnk_0812073C + + thumb_func_start sub_08086DCC +sub_08086DCC: @ 0x08086DCC + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #4 + movs r2, #0 + bl sub_080873AC + adds r4, r0, #0 + cmp r4, #0 + beq _08086E00 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r5, [r4, #0x50] + adds r0, r5, #0 + bl sub_08087380 + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + movs r0, #0 + strb r0, [r5, #0xf] +_08086E00: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08086E04 +sub_08086E04: @ 0x08086E04 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r0, [r4, #0x34] + ldr r1, _08086E2C @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r4, #0x34] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x14 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08086E34 + movs r0, #2 + strb r0, [r4, #0xc] + ldr r0, _08086E30 @ =0x00000141 + bl sub_080A3268 + b _08086E62 + .align 2, 0 +_08086E2C: .4byte 0xFFFF8000 +_08086E30: .4byte 0x00000141 +_08086E34: + movs r0, #0xa + rsbs r0, r0, #0 + cmp r1, r0 + bne _08086E62 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08086E62 + adds r0, r4, #0 + movs r1, #5 + movs r2, #0 + bl sub_080873AC + adds r1, r0, #0 + cmp r1, #0 + beq _08086E62 + movs r3, #0x80 + lsls r3, r3, #0xb + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #1 + strb r0, [r4, #0xf] +_08086E62: + pop {r4, pc} + + thumb_func_start sub_08086E64 +sub_08086E64: @ 0x08086E64 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080873D0 + ldr r0, _08086E88 @ =gUnk_02034350 + ldr r0, [r0, #0x68] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _08086E84 + adds r0, r4, #0 + bl sub_0805E7BC +_08086E84: + pop {r4, pc} + .align 2, 0 +_08086E88: .4byte gUnk_02034350 + + thumb_func_start sub_08086E8C +sub_08086E8C: @ 0x08086E8C + push {lr} + ldr r2, _08086EA0 @ =gUnk_08120748 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08086EA0: .4byte gUnk_08120748 + + thumb_func_start sub_08086EA4 +sub_08086EA4: @ 0x08086EA4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08086ED0 +sub_08086ED0: @ 0x08086ED0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x14 + rsbs r0, r0, #0 + cmp r1, r0 + bne _08086F0C + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C +_08086F0C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08086F10 +sub_08086F10: @ 0x08086F10 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08086F3C + ldr r2, _08086F38 @ =gUnk_02034350 + ldr r0, [r2, #0x68] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #0x68] + movs r0, #3 + strb r0, [r3, #0xc] + adds r0, r3, #0 + bl sub_0805EC60 + b _08086F52 + .align 2, 0 +_08086F38: .4byte gUnk_02034350 +_08086F3C: + ldrh r2, [r3, #0x24] + subs r2, #0x18 + strh r2, [r3, #0x24] + movs r1, #0x80 + lsls r1, r1, #1 + lsls r2, r2, #0x10 + asrs r2, r2, #0x14 + adds r0, r3, #0 + movs r3, #0 + bl sub_0805EC9C +_08086F52: + pop {pc} + + thumb_func_start sub_08086F54 +sub_08086F54: @ 0x08086F54 + push {lr} + ldr r2, _08086F68 @ =gUnk_08120758 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08086F68: .4byte gUnk_08120758 + + thumb_func_start sub_08086F6C +sub_08086F6C: @ 0x08086F6C + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0 + strh r0, [r4, #0x36] + adds r4, #0x29 + ldrb r1, [r4] + subs r0, #8 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r4] + movs r0, #0xa0 + lsls r0, r0, #1 + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08086FA0 +sub_08086FA0: @ 0x08086FA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08086FBC + adds r0, r4, #0 + bl sub_0805E7BC +_08086FBC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08086FC0 +sub_08086FC0: @ 0x08086FC0 + push {lr} + ldr r2, _08086FD4 @ =gUnk_08120760 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08086FD4: .4byte gUnk_08120760 + + thumb_func_start sub_08086FD8 +sub_08086FD8: @ 0x08086FD8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_08087000 +sub_08087000: @ 0x08087000 + push {lr} + adds r2, r0, #0 + ldr r0, _08087018 @ =gUnk_02034350 + ldr r0, [r0, #0x68] + movs r1, #2 + ands r0, r1 + cmp r0, #0 + beq _0808701C + adds r0, r2, #0 + bl sub_0805E7BC + b _08087022 + .align 2, 0 +_08087018: .4byte gUnk_02034350 +_0808701C: + adds r0, r2, #0 + bl sub_08004274 +_08087022: + pop {pc} + + thumb_func_start sub_08087024 +sub_08087024: @ 0x08087024 + push {lr} + ldr r2, _08087038 @ =gUnk_08120768 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08087038: .4byte gUnk_08120768 + + thumb_func_start sub_0808703C +sub_0808703C: @ 0x0808703C + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + movs r0, #0x78 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x7c + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r4] + movs r0, #0xf9 + bl sub_080A3268 + pop {r4, pc} + + thumb_func_start sub_0808706C +sub_0808706C: @ 0x0808706C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08087080 + subs r0, #1 + strb r0, [r4, #0xe] + b _080870AA +_08087080: + adds r0, r4, #0 + movs r1, #3 + movs r2, #0 + bl sub_080873AC + adds r1, r0, #0 + cmp r1, #0 + beq _080870AA + ldr r3, _080870AC @ =0xFFF80000 + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldr r2, _080870B0 @ =gUnk_02034350 + ldr r0, [r2, #0x68] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #0x68] + adds r0, r4, #0 + bl sub_0805E7BC +_080870AA: + pop {r4, pc} + .align 2, 0 +_080870AC: .4byte 0xFFF80000 +_080870B0: .4byte gUnk_02034350 + + thumb_func_start sub_080870B4 +sub_080870B4: @ 0x080870B4 + push {lr} + ldr r2, _080870C8 @ =gUnk_08120770 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080870C8: .4byte gUnk_08120770 + + thumb_func_start sub_080870CC +sub_080870CC: @ 0x080870CC + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r4] + pop {r4, pc} + + thumb_func_start sub_080870F4 +sub_080870F4: @ 0x080870F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08087110 + adds r0, r4, #0 + bl sub_0805E7BC +_08087110: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08087114 +sub_08087114: @ 0x08087114 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08087134 + ldr r0, _08087130 @ =gUnk_08120778 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _0808714A + .align 2, 0 +_08087130: .4byte gUnk_08120778 +_08087134: + ldr r0, _0808714C @ =gUnk_08120788 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08004274 +_0808714A: + pop {r4, pc} + .align 2, 0 +_0808714C: .4byte gUnk_08120788 + + thumb_func_start sub_08087150 +sub_08087150: @ 0x08087150 + push {r4, lr} + adds r4, r0, #0 + bl sub_08087380 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + strb r1, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x80 + strh r0, [r4, #0x24] + movs r0, #0x10 + strb r0, [r4, #0x15] + ldr r0, _080871A0 @ =gUnk_0812079C + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + lsls r0, r0, #4 + orrs r0, r1 + strb r0, [r4, #0x1a] + pop {r4, pc} + .align 2, 0 +_080871A0: .4byte gUnk_0812079C + + thumb_func_start nullsub_516 +nullsub_516: @ 0x080871A4 + bx lr + .align 2, 0 + + thumb_func_start sub_080871A8 +sub_080871A8: @ 0x080871A8 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080871CA + movs r0, #3 + strb r0, [r1, #0xc] + movs r0, #0x3c + strb r0, [r1, #0xe] + ldr r2, _080871CC @ =gUnk_02034350 + ldr r0, [r2, #0x68] + movs r1, #4 + orrs r0, r1 + str r0, [r2, #0x68] +_080871CA: + pop {pc} + .align 2, 0 +_080871CC: .4byte gUnk_02034350 + + thumb_func_start sub_080871D0 +sub_080871D0: @ 0x080871D0 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080871F0 + ldr r0, _080871F4 @ =gUnk_02034350 + ldr r1, [r0, #0x68] + movs r2, #8 + orrs r1, r2 + str r1, [r0, #0x68] + adds r0, r3, #0 + bl sub_0805E7BC +_080871F0: + pop {pc} + .align 2, 0 +_080871F4: .4byte gUnk_02034350 + + thumb_func_start sub_080871F8 +sub_080871F8: @ 0x080871F8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x54] + movs r0, #0x2e + ldrsh r1, [r3, r0] + movs r2, #0x2e + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0808721E + movs r5, #0x32 + ldrsh r0, [r3, r5] + subs r0, #0x20 + movs r2, #0x32 + ldrsh r1, [r4, r2] + cmp r0, r1 + bne _0808721E + movs r0, #2 + strb r0, [r4, #0xc] + b _0808723C +_0808721E: + movs r5, #0x2e + ldrsh r0, [r4, r5] + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r5, #0x2e + ldrsh r2, [r3, r5] + movs r5, #0x32 + ldrsh r3, [r3, r5] + subs r3, #0x20 + bl sub_080045D4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C +_0808723C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08087240 +sub_08087240: @ 0x08087240 + push {lr} + adds r2, r0, #0 + ldr r0, _08087260 @ =gUnk_02034350 + ldr r0, [r0, #0x68] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _0808725C + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #0x14 + strb r0, [r2, #0xe] + movs r0, #0x10 + strb r0, [r2, #0x15] +_0808725C: + pop {pc} + .align 2, 0 +_08087260: .4byte gUnk_02034350 + + thumb_func_start sub_08087264 +sub_08087264: @ 0x08087264 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + cmp r0, #0 + beq _08087278 + subs r0, #1 + strb r0, [r1, #0xe] + adds r0, r1, #0 + bl sub_0806F69C +_08087278: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808727C +sub_0808727C: @ 0x0808727C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08087292 + adds r0, r1, #0 + bl sub_0805E7BC +_08087292: + pop {pc} + + thumb_func_start sub_08087294 +sub_08087294: @ 0x08087294 + push {lr} + ldr r2, _080872A8 @ =gUnk_081207A4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080872A8: .4byte gUnk_081207A4 + + thumb_func_start sub_080872AC +sub_080872AC: @ 0x080872AC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x1b] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r2, r0 + strb r2, [r4, #0x19] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x6a + strh r0, [r1] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_08087380 + pop {r4, pc} + + thumb_func_start sub_080872F8 +sub_080872F8: @ 0x080872F8 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x68 + ldrh r0, [r2] + ldrh r1, [r4, #0x2e] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc + bhi _0808732A + adds r0, r4, #0 + adds r0, #0x6a + ldrh r0, [r0] + ldrh r1, [r4, #0x32] + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xc + bls _0808735C +_0808732A: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r3, #0x32 + ldrsh r1, [r4, r3] + movs r5, #0 + ldrsh r2, [r2, r5] + adds r3, r4, #0 + adds r3, #0x6a + movs r5, #0 + ldrsh r3, [r3, r5] + bl sub_080045D4 + strb r0, [r4, #0x15] + bl sub_08000E50 + ldr r2, _08087378 @ =gUnk_081207AC + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_0808735C: + ldr r1, _0808737C @ =gUnk_080C9160 + ldrb r0, [r4, #0xe] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r3, #0 + ldrsh r0, [r0, r3] + asrs r0, r0, #6 + subs r0, #8 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + pop {r4, r5, pc} + .align 2, 0 +_08087378: .4byte gUnk_081207AC +_0808737C: .4byte gUnk_080C9160 + + thumb_func_start sub_08087380 +sub_08087380: @ 0x08087380 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + movs r1, #0xb + bl __modsi3 + strb r0, [r4, #0xb] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldrb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + pop {r4, pc} + + thumb_func_start sub_080873AC +sub_080873AC: @ 0x080873AC + push {r4, r5, r6, lr} + adds r5, r1, #0 + adds r6, r2, #0 + ldrb r0, [r0, #0xa] + movs r4, #0xb + movs r1, #0xb + bl __divsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + muls r1, r4, r1 + adds r1, r1, r5 + movs r0, #0x1b + adds r2, r6, #0 + bl sub_080A2960 + pop {r4, r5, r6, pc} + + thumb_func_start sub_080873D0 +sub_080873D0: @ 0x080873D0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080873DE + subs r0, #1 + b _080873F6 +_080873DE: + adds r0, r4, #0 + movs r1, #8 + movs r2, #0 + bl sub_080873AC + adds r1, r0, #0 + cmp r1, #0 + beq _080873F8 + adds r0, r4, #0 + bl sub_0806FA24 + movs r0, #0x30 +_080873F6: + strb r0, [r4, #0xe] +_080873F8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080873FC +sub_080873FC: @ 0x080873FC + push {lr} + movs r0, #0xf7 + bl sub_080A3268 + ldr r1, _0808740C @ =gUnk_03000BF0 + movs r0, #0 + str r0, [r1, #0x30] + b _08087414 + .align 2, 0 +_0808740C: .4byte gUnk_03000BF0 +_08087410: + bl sub_0805E7BC +_08087414: + movs r0, #6 + movs r1, #0x1b + movs r2, #6 + bl sub_0805EB00 + cmp r0, #0 + bne _08087410 + pop {pc} + + thumb_func_start sub_08087424 +sub_08087424: @ 0x08087424 + push {r4, r5, lr} + adds r5, r1, #0 + bl sub_080791D0 + movs r0, #0x64 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0808744E + ldr r0, _0808745C @ =gLinkEntity + str r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 +_0808744E: + ldr r1, [r5, #4] + cmp r1, #0 + beq _08087460 + cmp r1, #1 + beq _0808746C + b _08087474 + .align 2, 0 +_0808745C: .4byte gLinkEntity +_08087460: + ldr r0, _08087468 @ =gUnk_02002A40 + adds r0, #0xad + b _08087472 + .align 2, 0 +_08087468: .4byte gUnk_02002A40 +_0808746C: + ldr r0, _08087478 @ =gUnk_02002A40 + adds r0, #0xac + movs r1, #0 +_08087472: + strb r1, [r0] +_08087474: + pop {r4, r5, pc} + .align 2, 0 +_08087478: .4byte gUnk_02002A40 + + thumb_func_start sub_0808747C +sub_0808747C: @ 0x0808747C + push {r4, lr} + sub sp, #4 + adds r4, r1, #0 + movs r0, #0 + str r0, [sp] + movs r0, #6 + movs r1, #0xf + movs r2, #6 + movs r3, #0xb + bl sub_0805EB2C + cmp r0, #0 + beq _08087498 + movs r0, #1 +_08087498: + str r0, [r4, #0x14] + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080874A0 +sub_080874A0: @ 0x080874A0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080874AE + movs r0, #1 + strb r0, [r4, #0xc] +_080874AE: + adds r0, r4, #0 + adds r0, #0x80 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r4, #0 + adds r1, #0x82 + movs r2, #0 + ldrsh r1, [r1, r2] + movs r2, #0x10 + movs r3, #0x10 + bl sub_0800290E + cmp r0, #0 + bne _080874DC + ldr r2, [r4, #0x50] + movs r1, #1 + ldrb r4, [r4, #0xb] + lsls r1, r4 + ldr r0, [r2, #0x20] + bics r0, r1 + str r0, [r2, #0x20] + bl sub_0805E780 +_080874DC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080874E0 +sub_080874E0: @ 0x080874E0 + push {lr} + ldr r2, _080874F4 @ =gUnk_081208A0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080874F4: .4byte gUnk_081208A0 + + thumb_func_start sub_080874F8 +sub_080874F8: @ 0x080874F8 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start nullsub_117 +nullsub_117: @ 0x08087500 + bx lr + .align 2, 0 + + thumb_func_start sub_08087504 +sub_08087504: @ 0x08087504 + push {r4, lr} + adds r4, r0, #0 + bl sub_0805E3B0 + cmp r0, #0 + bne _08087520 + ldr r0, _08087524 @ =gUnk_081208B8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 +_08087520: + pop {r4, pc} + .align 2, 0 +_08087524: .4byte gUnk_081208B8 + + thumb_func_start sub_08087528 +sub_08087528: @ 0x08087528 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _08087590 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r0, r0, #1 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x19] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r4, #0x1b] + lsrs r0, r1, #6 + subs r0, #1 + lsls r0, r0, #6 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0x1b] + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08087594 + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r0, [r4, #0x14] + cmp r0, #1 + bne _08087588 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_08087588: + adds r0, r4, #0 + bl sub_08087640 + b _080875DC + .align 2, 0 +_08087590: .4byte gLinkEntity +_08087594: + ldr r0, _080875B4 @ =gUnk_02033A90 + ldrb r0, [r0, #1] + movs r1, #4 + cmp r0, #0x10 + bne _080875A2 + movs r1, #0xb5 + lsls r1, r1, #1 +_080875A2: + adds r0, r4, #0 + bl sub_0801D2B4 + ldrb r0, [r4, #0x14] + cmp r0, #1 + beq _080875B8 + cmp r0, #3 + bne _080875CE + b _080875C0 + .align 2, 0 +_080875B4: .4byte gUnk_02033A90 +_080875B8: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_080875C0: + ldrb r0, [r4, #0xa] + cmp r0, #0x40 + bne _080875DC + ldrh r0, [r4, #0x32] + adds r0, #4 + strh r0, [r4, #0x32] + b _080875DC +_080875CE: + ldrb r0, [r4, #0xa] + cmp r0, #0x40 + bne _080875DC + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_080875DC: + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + ldrb r1, [r4, #0xb] + lsls r1, r1, #2 + ldrb r0, [r4, #0x14] + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_080875F4 +sub_080875F4: @ 0x080875F4 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808760E + bl sub_0805E780 +_0808760E: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08087638 + ldr r0, _0808763C @ =gLinkEntity + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + ldrb r0, [r5] + subs r0, #1 + subs r1, r1, r0 + adds r3, r4, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08087638: + pop {r4, r5, pc} + .align 2, 0 +_0808763C: .4byte gLinkEntity + + thumb_func_start sub_08087640 +sub_08087640: @ 0x08087640 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r5, [r4, r0] + movs r1, #0x32 + ldrsh r6, [r4, r1] + ldrb r1, [r4, #0x14] + lsls r1, r1, #1 + ldr r0, _08087684 @ =gUnk_081208C0 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r2, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldr r0, _08087688 @ =gUnk_03000BF0 + ldrh r1, [r0, #4] + ldr r0, _0808768C @ =0x00000403 + movs r2, #0x16 + cmp r1, r0 + bne _08087676 + movs r2, #0x17 +_08087676: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805457C + strh r5, [r4, #0x2e] + strh r6, [r4, #0x32] + pop {r4, r5, r6, pc} + .align 2, 0 +_08087684: .4byte gUnk_081208C0 +_08087688: .4byte gUnk_03000BF0 +_0808768C: .4byte 0x00000403 + + thumb_func_start sub_08087690 +sub_08087690: @ 0x08087690 + push {lr} + ldr r2, _080876A4 @ =gUnk_08120A0C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080876A4: .4byte gUnk_08120A0C + + thumb_func_start sub_080876A8 +sub_080876A8: @ 0x080876A8 + push {lr} + mov ip, r0 + movs r0, #1 + mov r1, ip + strb r0, [r1, #0xc] + movs r0, #0xb0 + lsls r0, r0, #0xa + str r0, [r1, #0x20] + ldrb r2, [r1, #0x14] + lsls r0, r2, #2 + movs r1, #0x10 + eors r0, r1 + mov r3, ip + strb r0, [r3, #0x15] + lsls r2, r2, #0x18 + cmp r2, #0 + bne _080876E2 + adds r3, #0x29 + ldrb r2, [r3] + lsls r1, r2, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + movs r0, #7 + ands r1, r0 + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080876E2: + ldr r1, _08087760 @ =gUnk_08120A20 + mov r2, ip + ldrb r0, [r2, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrb r0, [r2, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldr r3, _08087764 @ =gUnk_08120A18 + ldrb r0, [r2, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #3] + mov r0, ip + adds r0, #0x60 + strh r1, [r0] + ldrb r0, [r2, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xf + ands r1, r0 + ldrb r2, [r2, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r2, ip + strb r0, [r2, #0x1a] + ldrb r0, [r2, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #2] + str r0, [r2, #0x6c] + ldr r0, _08087768 @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + mov r0, ip + adds r0, #0x38 + strb r1, [r0] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r2, #0x24] + ldrb r0, [r2, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + mov r0, ip + bl sub_08004260 + pop {pc} + .align 2, 0 +_08087760: .4byte gUnk_08120A20 +_08087764: .4byte gUnk_08120A18 +_08087768: .4byte gLinkEntity + + thumb_func_start sub_0808776C +sub_0808776C: @ 0x0808776C + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x6c] + cmp r0, #0 + beq _08087788 + subs r0, #1 + str r0, [r4, #0x6c] + ldr r0, _08087784 @ =gUnk_03003F80 + adds r0, #0x3d + ldrb r0, [r0] + b _08087798 + .align 2, 0 +_08087784: .4byte gUnk_03003F80 +_08087788: + adds r0, r4, #0 + bl sub_080AEFE0 + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 +_08087798: + cmp r0, #0 + bne _080877A0 + movs r0, #2 + strb r0, [r4, #0xc] +_080877A0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080877A4 +sub_080877A4: @ 0x080877A4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080002D0 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, r0, #0 + cmp r0, #0x25 + beq _080877D0 + cmp r0, #0x25 + bgt _080877C4 + cmp r0, #0x21 + beq _080877CA + cmp r0, #0x24 + beq _080877D6 + b _080877E2 +_080877C4: + cmp r1, #0x30 + beq _080877D6 + b _080877E2 +_080877CA: + adds r0, r4, #0 + movs r1, #0 + b _080877DA +_080877D0: + adds r0, r4, #0 + movs r1, #0xc + b _080877DA +_080877D6: + adds r0, r4, #0 + movs r1, #0xb +_080877DA: + movs r2, #0 + bl CreateFX + b _08087804 +_080877E2: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08087804 + cmp r0, #0xf + bne _080877F8 + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + movs r2, #0x80 + bl CreateFX + b _08087804 +_080877F8: + ldrb r1, [r4, #0xb] + ldrb r2, [r4, #0xe] + adds r0, r4, #0 + movs r3, #0 + bl sub_080A2988 +_08087804: + bl sub_0805E780 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808780C +sub_0808780C: @ 0x0808780C + push {lr} + ldr r2, _08087820 @ =gUnk_08120A28 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08087820: .4byte gUnk_08120A28 + + thumb_func_start sub_08087824 +sub_08087824: @ 0x08087824 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + bne _08087836 + adds r0, r4, #0 + bl sub_08016A30 +_08087836: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #0x13 + strb r0, [r1] + adds r1, #9 + movs r0, #0xff + strb r0, [r1] + subs r1, #6 + movs r0, #0xa9 + strb r0, [r1] + adds r1, #1 + movs r0, #0x16 + strb r0, [r1] + ldr r0, _08087884 @ =gUnk_08120A54 + ldr r0, [r0] + str r0, [r4, #0x48] + subs r1, #5 + movs r0, #0x8b + strb r0, [r1] + adds r0, r4, #0 + bl sub_080878CC + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0801766C + movs r0, #0xfd + bl sub_08004488 + pop {r4, pc} + .align 2, 0 +_08087884: .4byte gUnk_08120A54 + + thumb_func_start sub_08087888 +sub_08087888: @ 0x08087888 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080878A4 + bl sub_0805E780 + b _080878C8 +_080878A4: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _080878C0 + ldr r0, _080878BC @ =gUnk_08120A54 + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r4, #0x48] + b _080878C8 + .align 2, 0 +_080878BC: .4byte gUnk_08120A54 +_080878C0: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_080878C8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080878CC +sub_080878CC: @ 0x080878CC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x10 + adds r7, r0, #0 + movs r1, #0x2e + ldrsh r0, [r7, r1] + str r0, [sp] + movs r0, #0x32 + ldrsh r2, [r7, r0] + str r2, [sp, #4] + adds r0, r7, #0 + adds r0, #0x38 + ldrb r0, [r0] + mov r8, r0 + movs r0, #0x10 + rsbs r0, r0, #0 + mov r1, r8 + lsls r1, r1, #0x18 + str r1, [sp, #8] +_080878F8: + movs r2, #0x10 + rsbs r2, r2, #0 + mov sb, r2 + ldr r1, [sp] + adds r1, r1, r0 + mov sl, r1 + adds r0, #0x10 + str r0, [sp, #0xc] + mov r6, sl +_0808790A: + ldr r2, _0808795C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r0, r6, r0 + lsrs r4, r0, #4 + movs r0, #0x3f + ands r4, r0 + ldr r5, [sp, #4] + add r5, sb + ldrh r0, [r2, #8] + subs r0, r5, r0 + lsrs r0, r0, #4 + movs r1, #0x3f + ands r0, r1 + lsls r0, r0, #6 + orrs r4, r0 + adds r0, r4, #0 + ldr r2, [sp, #8] + lsrs r1, r2, #0x18 + bl sub_080002C8 + cmp r0, #0x2e + bne _08087970 + adds r0, r4, #0 + mov r1, r8 + bl sub_080002B0 + adds r1, r0, #0 + movs r0, #0xda + lsls r0, r0, #2 + cmp r1, r0 + bhi _08087960 + subs r0, #1 + cmp r1, r0 + blo _08087960 + adds r0, r7, #0 + movs r1, #3 + adds r2, r6, #0 + adds r3, r5, #0 + bl sub_08008796 + b _0808797C + .align 2, 0 +_0808795C: .4byte gUnk_03000BF0 +_08087960: + ldr r0, _0808796C @ =0x00004022 + adds r1, r4, #0 + mov r2, r8 + bl sub_0800015E + b _0808797C + .align 2, 0 +_0808796C: .4byte 0x00004022 +_08087970: + adds r0, r7, #0 + movs r1, #3 + mov r2, sl + adds r3, r5, #0 + bl sub_08008796 +_0808797C: + movs r0, #0x10 + add sb, r0 + mov r1, sb + cmp r1, #0x10 + ble _0808790A + ldr r0, [sp, #0xc] + cmp r0, #0x10 + ble _080878F8 + add sp, #0x10 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08087998 +sub_08087998: @ 0x08087998 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080879C0 @ =gUnk_08120A68 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080879C4 + subs r0, #1 + strb r0, [r4, #0xe] + b _080879EA + .align 2, 0 +_080879C0: .4byte gUnk_08120A68 +_080879C4: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0xa + bne _080879D8 + adds r0, r4, #0 + movs r1, #0xd + bl sub_08004260 + b _080879EA +_080879D8: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080879EA + bl sub_0805E780 +_080879EA: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + beq _08087A0C + adds r0, r4, #0 + bl sub_0806F69C + ldrh r1, [r4, #0x24] + movs r2, #0x24 + ldrsh r0, [r4, r2] + cmp r0, #0x10 + ble _08087A08 + adds r0, r1, #0 + subs r0, #0x10 + b _08087A0A +_08087A08: + movs r0, #0 +_08087A0A: + strh r0, [r4, #0x24] +_08087A0C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08087A10 +sub_08087A10: @ 0x08087A10 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08087A26 + adds r0, r4, #0 + movs r1, #3 + bl sub_0801D2B4 +_08087A26: + ldrb r0, [r4, #0xa] + cmp r0, #2 + bls _08087A3C + ldr r0, _08087A4C @ =gUnk_08120A78 + ldrb r1, [r4, #0xa] + subs r1, #3 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_0801D2B4 +_08087A3C: + ldrb r0, [r4, #0xa] + cmp r0, #4 + bhi _08087AF0 + lsls r0, r0, #2 + ldr r1, _08087A50 @ =_08087A54 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08087A4C: .4byte gUnk_08120A78 +_08087A50: .4byte _08087A54 +_08087A54: @ jump table + .4byte _08087A76 @ case 0 + .4byte _08087AF0 @ case 1 + .4byte _08087AA0 @ case 2 + .4byte _08087A76 @ case 3 + .4byte _08087A68 @ case 4 +_08087A68: + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 +_08087A76: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + movs r2, #0 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #1 + strb r0, [r1] + subs r1, #9 + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #0xaa + strb r0, [r1] + subs r1, #4 + movs r0, #0xe + strb r0, [r1] + ldr r0, _08087AE4 @ =gUnk_08120A8C + str r0, [r4, #0x48] + strb r2, [r4, #0x1c] +_08087AA0: + bl sub_08000E50 + ldr r2, _08087AE8 @ =gUnk_08120A7A + movs r3, #3 + adds r1, r0, #0 + ands r1, r3 + adds r1, r1, r2 + ldrb r1, [r1] + strb r1, [r4, #0xe] + lsrs r2, r0, #8 + ands r2, r3 + movs r1, #0x10 + ands r1, r0 + cmp r1, #0 + beq _08087AC0 + rsbs r2, r2, #0 +_08087AC0: + ldrh r0, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r4, #0x32] + ldr r0, _08087AEC @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0xa + bl sub_08004260 + b _08087AF8 + .align 2, 0 +_08087AE4: .4byte gUnk_08120A8C +_08087AE8: .4byte gUnk_08120A7A +_08087AEC: .4byte gLinkEntity +_08087AF0: + adds r0, r4, #0 + movs r1, #0x10 + bl sub_08004260 +_08087AF8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08087AFC +sub_08087AFC: @ 0x08087AFC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08087B56 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x16 + beq _08087B3C + cmp r0, #0x16 + bgt _08087B1E + cmp r0, #0x13 + beq _08087B4E + b _08087B56 +_08087B1E: + cmp r0, #0x1c + bgt _08087B56 + cmp r0, #0x1b + blt _08087B56 + ldr r1, [r4, #0x4c] + adds r0, r1, #0 + adds r0, #0x84 + ldr r0, [r0] + adds r1, #0x80 + ldr r1, [r1] + ldr r2, [r4, #0x2c] + ldr r3, [r4, #0x30] + bl sub_080045D4 + b _08087B44 +_08087B3C: + ldr r0, [r4, #0x4c] + adds r1, r4, #0 + bl sub_080045C4 +_08087B44: + strb r0, [r4, #0x15] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + b _08087B56 +_08087B4E: + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] +_08087B56: + pop {r4, pc} + + thumb_func_start sub_08087B58 +sub_08087B58: @ 0x08087B58 + push {lr} + adds r2, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08087B80 + ldr r0, _08087B7C @ =gUnk_08120A80 + ldrb r1, [r2, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08087B84 + .align 2, 0 +_08087B7C: .4byte gUnk_08120A80 +_08087B80: + movs r0, #1 + strb r0, [r2, #0xc] +_08087B84: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08087B88 +sub_08087B88: @ 0x08087B88 + adds r2, r0, #0 + adds r2, #0x46 + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r2] + movs r1, #1 + strb r1, [r0, #0xd] + strb r1, [r0, #0x1d] + bx lr + .align 2, 0 + + thumb_func_start sub_08087B9C +sub_08087B9C: @ 0x08087B9C + push {lr} + bl sub_0806F3E4 + cmp r0, #0 + beq _08087BAA + bl sub_0805E780 +_08087BAA: + pop {pc} + + thumb_func_start sub_08087BAC +sub_08087BAC: @ 0x08087BAC + push {lr} + ldr r2, _08087BC0 @ =gUnk_08120A94 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08087BC0: .4byte gUnk_08120A94 + + thumb_func_start sub_08087BC4 +sub_08087BC4: @ 0x08087BC4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + adds r0, #1 + movs r5, #0 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _08087C04 + cmp r0, #1 + bgt _08087BE0 + cmp r0, #0 + beq _08087BEA + b _08087CA6 +_08087BE0: + cmp r0, #2 + beq _08087C64 + cmp r0, #3 + beq _08087C7C + b _08087CA6 +_08087BEA: + movs r0, #0x5e + bl sub_0807CBD0 + cmp r0, #0 + beq _08087C16 + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080787B4 + b _08087C1C +_08087C04: + movs r0, #0x22 + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _08087C16 + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_08087C16: + adds r0, r4, #0 + adds r0, #0x7a + strb r5, [r0] +_08087C1C: + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08087C60 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x78 + strh r1, [r0] + adds r0, r4, #0 + bl sub_08087F58 + b _08087CA6 + .align 2, 0 +_08087C60: .4byte gUnk_03000BF0 +_08087C64: + adds r0, r4, #0 + adds r0, #0x7a + strb r5, [r0] + adds r0, r4, #0 + movs r1, #7 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08087CA6 +_08087C7C: + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7a + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #5 + strb r5, [r0] + adds r0, r4, #0 + bl sub_0808804C + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 +_08087CA6: + pop {r4, r5, pc} + + thumb_func_start sub_08087CA8 +sub_08087CA8: @ 0x08087CA8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7a + ldrb r0, [r5] + cmp r0, #1 + beq _08087CCA + cmp r0, #1 + bgt _08087D02 + cmp r0, #0 + bne _08087D02 + movs r0, #1 + strb r0, [r5] + adds r0, r4, #0 + bl sub_080787B4 + b _08087D1A +_08087CCA: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08087D1A + movs r0, #0 + strb r0, [r1] + bl sub_080791D0 + movs r0, #0x5e + bl sub_0807CBD0 + cmp r0, #0 + beq _08087CFA + movs r0, #2 + strb r0, [r5] + bl sub_0807CD10 + movs r0, #7 + movs r1, #0xff + bl sub_080A7138 + b _08087D1A +_08087CFA: + movs r0, #5 + bl sub_0807CD10 + b _08087D1A +_08087D02: + movs r0, #2 + bl sub_0807CC3C + cmp r0, #0 + bne _08087D1A + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080787B4 +_08087D1A: + pop {r4, r5, pc} + + thumb_func_start sub_08087D1C +sub_08087D1C: @ 0x08087D1C + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x7a + ldrb r0, [r4] + cmp r0, #1 + beq _08087D60 + cmp r0, #1 + bgt _08087D34 + cmp r0, #0 + beq _08087D3A + b _08087DB0 +_08087D34: + cmp r0, #2 + beq _08087D5A + b _08087DB0 +_08087D3A: + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + beq _08087DB0 + movs r0, #0x5e + bl sub_0807CBD0 + cmp r0, #0 + beq _08087D54 + movs r0, #1 + strb r0, [r4] + b _08087DB0 +_08087D54: + movs r0, #2 + strb r0, [r4] + b _08087DB0 +_08087D5A: + movs r0, #0x5e + bl sub_0807CCB4 +_08087D60: + adds r1, r5, #0 + adds r1, #0x7a + movs r0, #0 + strb r0, [r1] + ldr r0, [r5, #0x54] + bl sub_08088328 + movs r0, #0 + bl sub_0807CD8C + movs r0, #0x22 + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08087DAA + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r0, #0x7d + ldrb r0, [r0] + strb r0, [r4, #0xf] + ldr r1, _08087DB4 @ =gUnk_080FC3E4 + ldrb r0, [r4, #0xf] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #7] + strb r0, [r4, #0xb] + movs r2, #0x80 + lsls r2, r2, #0xc + movs r3, #0xe0 + lsls r3, r3, #0xb + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 +_08087DAA: + ldr r0, _08087DB8 @ =0x00000111 + bl sub_08004488 +_08087DB0: + pop {r4, r5, pc} + .align 2, 0 +_08087DB4: .4byte gUnk_080FC3E4 +_08087DB8: .4byte 0x00000111 + + thumb_func_start sub_08087DBC +sub_08087DBC: @ 0x08087DBC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x7a + ldrb r0, [r2] + cmp r0, #1 + beq _08087E10 + cmp r0, #1 + bgt _08087E3C + cmp r0, #0 + bne _08087E3C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08087E5A + movs r0, #1 + strb r0, [r2] + movs r0, #0x28 + strb r0, [r4, #0xe] + ldr r1, _08087E0C @ =gUnk_08120AA8 + ldrb r0, [r4, #0xb] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_0801D2B4 + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + movs r0, #0x88 + lsls r0, r0, #1 + bl sub_080A3268 + b _08087E5A + .align 2, 0 +_08087E0C: .4byte gUnk_08120AA8 +_08087E10: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08087E5A + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08087E5A + movs r0, #2 + strb r0, [r2] + bl sub_0807CD10 + ldrb r1, [r4, #0xf] + movs r0, #7 + bl sub_080A7138 + b _08087E5A +_08087E3C: + movs r0, #2 + bl sub_0807CC3C + cmp r0, #0 + bne _08087E5A + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #4 + bl sub_0807CD8C + bl sub_0805E780 +_08087E5A: + pop {r4, pc} + + thumb_func_start sub_08087E5C +sub_08087E5C: @ 0x08087E5C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7a + ldrb r1, [r5] + cmp r1, #1 + beq _08087EAC + cmp r1, #1 + bgt _08087E74 + cmp r1, #0 + beq _08087E7A + b _08087F4E +_08087E74: + cmp r1, #2 + beq _08087F24 + b _08087F4E +_08087E7A: + adds r0, r4, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #4 + bne _08087EA4 + movs r0, #1 + bl sub_0807CC3C + cmp r0, #0 + beq _08087F4E + movs r0, #1 + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0x81 + strb r0, [r1] + bl sub_0807CD8C + adds r0, r4, #0 + bl sub_0808826C + b _08087F1C +_08087EA4: + adds r0, r4, #0 + bl sub_080880D8 + b _08087F4E +_08087EAC: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08087EB6 + subs r0, #1 + strb r0, [r4, #0xe] +_08087EB6: + ldr r6, _08087ED4 @ =gUnk_03000FF0 + ldrh r0, [r6, #2] + ands r1, r0 + cmp r1, #0 + beq _08087ED8 + movs r0, #0x6a + bl sub_080A3268 + movs r0, #2 + strb r0, [r5] + movs r0, #0x3c + strb r0, [r4, #0xe] + bl sub_08050384 + b _08087F4E + .align 2, 0 +_08087ED4: .4byte gUnk_03000FF0 +_08087ED8: + adds r2, r4, #0 + adds r2, #0x81 + ldrb r7, [r2] + ldrh r1, [r6] + movs r0, #0x80 + lsls r0, r0, #1 + ands r0, r1 + movs r3, #1 + adds r5, r2, #0 + cmp r0, #0 + beq _08087EF0 + movs r3, #0xa +_08087EF0: + ldrh r1, [r6, #4] + ldr r0, _08087F00 @ =0xFFFFFEFF + ands r1, r0 + cmp r1, #0x40 + beq _08087F04 + cmp r1, #0x80 + beq _08087F0E + b _08087F16 + .align 2, 0 +_08087F00: .4byte 0xFFFFFEFF +_08087F04: + adds r0, r4, #0 + adds r1, r3, #0 + bl sub_08087F94 + b _08087F16 +_08087F0E: + rsbs r1, r3, #0 + adds r0, r4, #0 + bl sub_08087F94 +_08087F16: + ldrb r5, [r5] + cmp r7, r5 + beq _08087F4E +_08087F1C: + adds r0, r4, #0 + bl sub_080882A8 + b _08087F4E +_08087F24: + movs r0, #0 + strb r0, [r5] + adds r1, r4, #0 + adds r1, #0x7b + movs r0, #4 + strb r0, [r1] + movs r0, #3 + bl sub_0807CD10 + ldr r0, _08087F50 @ =0x0000431A + bl sub_08056378 + ldr r1, _08087F54 @ =gUnk_02000050 + movs r0, #1 + strb r0, [r1, #6] + movs r0, #0xc + strb r0, [r1, #7] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + str r0, [r1, #0x10] +_08087F4E: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08087F50: .4byte 0x0000431A +_08087F54: .4byte gUnk_02000050 + + thumb_func_start sub_08087F58 +sub_08087F58: @ 0x08087F58 + push {r4, r5, lr} + ldrb r1, [r0, #0xa] + cmp r1, #1 + bgt _08087F8C + cmp r1, #0 + blt _08087F8C + ldr r5, _08087F90 @ =0x00004022 + adds r4, r0, #0 + adds r4, #0x78 + ldrh r1, [r4] + subs r1, #1 + adds r0, r5, #0 + movs r2, #1 + bl sub_0800015E + ldrh r1, [r4] + adds r0, r5, #0 + movs r2, #1 + bl sub_0800015E + ldrh r1, [r4] + adds r1, #1 + adds r0, r5, #0 + movs r2, #1 + bl sub_0800015E +_08087F8C: + pop {r4, r5, pc} + .align 2, 0 +_08087F90: .4byte 0x00004022 + + thumb_func_start sub_08087F94 +sub_08087F94: @ 0x08087F94 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + movs r0, #0x5f + bl sub_0807CBD0 + cmp r0, #0 + bne _08088014 + adds r0, r5, #0 + adds r0, #0x83 + movs r1, #0 + ldrsb r1, [r0, r1] + mov ip, r1 + adds r3, r1, r4 + adds r7, r0, #0 + cmp r4, #0 + bge _08087FEA + adds r2, r5, #0 + adds r2, #0x82 + movs r0, #0 + ldrsb r0, [r2, r0] + cmp r3, r0 + bge _08087FD6 + movs r1, #0 + ldrsb r1, [r7, r1] + ldrb r3, [r2] + cmp r1, r0 + beq _08088014 + strb r3, [r7] + adds r1, r5, #0 + adds r1, #0x81 + movs r0, #1 + b _08087FE0 +_08087FD6: + strb r3, [r7] + adds r1, r5, #0 + adds r1, #0x81 + ldrb r0, [r1] + adds r0, r0, r4 +_08087FE0: + strb r0, [r1] + movs r0, #0x69 + bl sub_080A3268 + b _08088032 +_08087FEA: + adds r1, r5, #0 + adds r1, #0x81 + ldrb r6, [r1] + adds r2, r6, r4 + ldr r0, _0808801C @ =gUnk_02002A40 + adds r0, #0xc2 + ldrh r0, [r0] + cmp r2, r0 + ble _08088008 + cmp r0, r6 + beq _08088014 + adds r2, r0, #0 + subs r4, r2, r6 + mov r0, ip + adds r3, r0, r4 +_08088008: + cmp r3, #0x64 + ble _08088028 + movs r0, #0 + ldrsb r0, [r7, r0] + cmp r0, #0x64 + bne _08088020 +_08088014: + adds r0, r5, #0 + bl sub_08088034 + b _08088032 + .align 2, 0 +_0808801C: .4byte gUnk_02002A40 +_08088020: + movs r3, #0x64 + mov r0, ip + subs r4, r3, r0 + adds r2, r6, r4 +_08088028: + strb r3, [r7] + strb r2, [r1] + movs r0, #0x69 + bl sub_080A3268 +_08088032: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08088034 +sub_08088034: @ 0x08088034 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + cmp r0, #0 + bne _08088048 + movs r0, #0x14 + strb r0, [r1, #0xe] + movs r0, #0x6d + bl sub_080A3268 +_08088048: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808804C +sub_0808804C: @ 0x0808804C + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + ldr r0, _08088060 @ =gUnk_02002A40 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _08088064 + movs r4, #9 + b _080880D0 + .align 2, 0 +_08088060: .4byte gUnk_02002A40 +_08088064: + movs r0, #6 + bl GetProgressFlag + cmp r0, #0 + beq _08088072 + movs r4, #7 + b _080880D0 +_08088072: + movs r0, #0x80 + lsls r0, r0, #4 + movs r1, #0x77 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08088084 + movs r4, #6 + b _080880D0 +_08088084: + movs r0, #0xc0 + lsls r0, r0, #2 + movs r1, #0x32 + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _08088096 + movs r4, #5 + b _080880D0 +_08088096: + movs r0, #5 + bl GetProgressFlag + cmp r0, #0 + beq _080880A4 + movs r4, #4 + b _080880D0 +_080880A4: + movs r0, #4 + bl GetProgressFlag + cmp r0, #0 + beq _080880B2 + movs r4, #3 + b _080880D0 +_080880B2: + movs r0, #0x80 + lsls r0, r0, #1 + movs r1, #0x9c + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _080880C4 + movs r4, #2 + b _080880D0 +_080880C4: + movs r0, #3 + bl GetProgressFlag + cmp r0, #0 + beq _080880D0 + movs r4, #1 +_080880D0: + adds r0, r5, #0 + adds r0, #0x7c + strb r4, [r0] + pop {r4, r5, pc} + + thumb_func_start sub_080880D8 +sub_080880D8: @ 0x080880D8 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r0, #0x7b + ldrb r1, [r0] + ldr r0, _08088158 @ =gUnk_08120AAC + adds r6, r1, r0 + ldrb r4, [r6] + ldrb r0, [r6, #1] + cmp r4, r0 + bhs _0808810A + adds r5, r7, #0 + adds r5, #0x80 +_080880F0: + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_08088160 + cmp r0, #0 + beq _08088102 + ldrb r0, [r5] + adds r0, #1 + strb r0, [r5] +_08088102: + adds r4, #1 + ldrb r0, [r6, #1] + cmp r4, r0 + blo _080880F0 +_0808810A: + adds r1, r7, #0 + adds r1, #0x7b + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bne _08088156 + ldr r5, _0808815C @ =gUnk_02002A40 + adds r0, r7, #0 + adds r0, #0x80 + ldrb r1, [r5, #9] + adds r4, r0, #0 + ldrb r0, [r4] + cmp r1, r0 + beq _0808813A + cmp r1, #0 + beq _08088136 + movs r0, #6 + bl sub_0807CD10 +_08088136: + ldrb r0, [r4] + strb r0, [r5, #9] +_0808813A: + movs r0, #0x5f + bl sub_0807CBD0 + cmp r0, #0 + beq _08088156 + ldr r0, _0808815C @ =gUnk_02002A40 + adds r0, #0xb0 + ldrb r1, [r4] + ldrb r0, [r0] + cmp r1, r0 + beq _08088156 + movs r0, #0x5f + bl sub_0807CD34 +_08088156: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08088158: .4byte gUnk_08120AAC +_0808815C: .4byte gUnk_02002A40 + + thumb_func_start sub_08088160 +sub_08088160: @ 0x08088160 + push {r4, lr} + adds r2, r0, #0 + lsls r1, r1, #3 + ldr r0, _08088188 @ =gUnk_080FC3E4 + adds r1, r1, r0 + movs r4, #0 + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + ldrb r3, [r1, #6] + cmp r0, r3 + bhs _08088266 + ldrb r0, [r1, #6] + cmp r0, #0x10 + beq _0808819E + cmp r0, #0x10 + bgt _0808818C + cmp r0, #8 + beq _08088194 + b _08088268 + .align 2, 0 +_08088188: .4byte gUnk_080FC3E4 +_0808818C: + cmp r0, #0x20 + beq _080881A6 + cmp r0, #0x40 + bne _08088268 +_08088194: + ldr r0, [r1] + ldrh r1, [r1, #4] + bl GetProgressFlagWithOffset + b _08088262 +_0808819E: + ldrh r0, [r1, #4] + bl sub_0801E7F4 + b _08088262 +_080881A6: + ldrh r0, [r1, #4] + cmp r0, #5 + bhi _08088268 + lsls r0, r0, #2 + ldr r1, _080881B8 @ =_080881BC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080881B8: .4byte _080881BC +_080881BC: @ jump table + .4byte _080881D4 @ case 0 + .4byte _080881F0 @ case 1 + .4byte _080881FE @ case 2 + .4byte _0808821A @ case 3 + .4byte _08088236 @ case 4 + .4byte _08088252 @ case 5 +_080881D4: + movs r0, #0x20 + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0x10 + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0x19 +_080881EA: + bl sub_0801E7F4 + b _08088262 +_080881F0: + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #4 + bls _08088268 + movs r0, #0x28 + b _080881EA +_080881FE: + movs r0, #0x54 + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0x56 + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0x3d + bl sub_0801E7F4 + b _08088262 +_0808821A: + movs r0, #0x3b + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0x4a + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0xd + bl sub_0801E7F4 + b _08088262 +_08088236: + movs r0, #0x49 + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0x55 + bl sub_0801E7F4 + cmp r0, #0 + bne _08088266 + movs r0, #0x3c + bl sub_0801E7F4 + b _08088262 +_08088252: + adds r0, r2, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #1 + bls _08088268 + movs r0, #0x12 + bl GetProgressFlag +_08088262: + cmp r0, #0 + beq _08088268 +_08088266: + movs r4, #1 +_08088268: + adds r0, r4, #0 + pop {r4, pc} + + thumb_func_start sub_0808826C +sub_0808826C: @ 0x0808826C + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0x64 + adds r0, #0x80 + ldrb r1, [r0] + ldr r0, _080882A4 @ =gUnk_02002A40 + adds r0, #0xb0 + ldrb r0, [r0] + subs r0, r1, r0 + muls r4, r0, r4 + adds r0, r4, #0 + bl __divsi3 + adds r4, r0, #0 + cmp r4, #0 + bne _08088298 + movs r0, #0x5f + bl sub_0807CBD0 + cmp r0, #0 + bne _08088298 + movs r4, #1 +_08088298: + adds r0, r5, #0 + adds r0, #0x83 + strb r4, [r0] + subs r0, #1 + strb r4, [r0] + pop {r4, r5, pc} + .align 2, 0 +_080882A4: .4byte gUnk_02002A40 + + thumb_func_start sub_080882A8 +sub_080882A8: @ 0x080882A8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + bl sub_08050384 + adds r0, r6, #0 + adds r0, #0x81 + ldrb r0, [r0] + ldr r4, _080882F4 @ =gUnk_020227E8 + ldr r5, _080882F8 @ =0x00202020 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08057044 + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r4, #8 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08057044 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _08088304 + ldr r1, _080882FC @ =gUnk_08120AE4 + ldrb r0, [r6, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _08088300 @ =gUnk_08120AB4 + bl sub_0805F46C + b _08088314 + .align 2, 0 +_080882F4: .4byte gUnk_020227E8 +_080882F8: .4byte 0x00202020 +_080882FC: .4byte gUnk_08120AE4 +_08088300: .4byte gUnk_08120AB4 +_08088304: + ldr r1, _0808831C @ =gUnk_08120AE4 + ldrb r0, [r6, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldr r1, _08088320 @ =gUnk_08120ACC + bl sub_0805F46C +_08088314: + ldr r1, _08088324 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] + pop {r4, r5, r6, pc} + .align 2, 0 +_0808831C: .4byte gUnk_08120AE4 +_08088320: .4byte gUnk_08120ACC +_08088324: .4byte gUnk_03000F50 + + thumb_func_start sub_08088328 +sub_08088328: @ 0x08088328 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r4, #0x7f +_08088332: + bl sub_08000E50 + adds r5, r0, #0 + ands r5, r4 + cmp r5, #0x63 + bhi _08088332 + adds r0, r6, #0 + adds r0, #0x81 + ldrb r0, [r0] + rsbs r0, r0, #0 + bl sub_080542C0 + bl sub_08000E50 + movs r1, #0x7f + ands r1, r0 + adds r4, r1, #1 + adds r7, r4, #0 + adds r0, r6, #0 + bl sub_08088424 + adds r0, r6, #0 + adds r0, #0x83 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r5, r0 + bhs _080883A4 + movs r5, #0 + movs r0, #0x7d + adds r0, r0, r6 + mov r8, r0 +_08088372: + cmp r5, #0 + bne _080883E2 + cmp r4, #0x88 + bls _0808837C + movs r4, #1 +_0808837C: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08088160 + cmp r0, #0 + beq _0808839C + ldr r0, _08088398 @ =gUnk_02002B0E + adds r1, r4, #0 + bl sub_0801D5A8 + cmp r0, #0 + bne _0808839C + movs r5, #1 + b _0808839E + .align 2, 0 +_08088398: .4byte gUnk_02002B0E +_0808839C: + adds r4, #1 +_0808839E: + cmp r7, r4 + bne _08088372 + b _080883DE +_080883A4: + movs r5, #1 + movs r0, #0x7d + adds r0, r0, r6 + mov r8, r0 +_080883AC: + cmp r5, #0 + beq _08088414 + cmp r4, #0x88 + bls _080883B6 + movs r4, #1 +_080883B6: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_08088160 + cmp r0, #0 + beq _080883D8 + ldr r0, _080883D4 @ =gUnk_02002B0E + adds r1, r4, #0 + bl sub_0801D5A8 + cmp r0, #0 + beq _080883D8 + movs r5, #0 + b _080883DA + .align 2, 0 +_080883D4: .4byte gUnk_02002B0E +_080883D8: + adds r4, #1 +_080883DA: + cmp r7, r4 + bne _080883AC +_080883DE: + cmp r5, #0 + beq _08088414 +_080883E2: + ldr r0, _08088404 @ =gUnk_02002A40 + adds r0, #0xb0 + ldrb r1, [r0] + adds r1, #1 + strb r1, [r0] + adds r0, r6, #0 + adds r0, #0x80 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + ldrb r0, [r0] + cmp r1, r0 + beq _08088408 + movs r0, #7 + bl sub_0807CD10 + b _08088414 + .align 2, 0 +_08088404: .4byte gUnk_02002A40 +_08088408: + movs r0, #0x5f + bl sub_0807CCB4 + movs r0, #8 + bl sub_0807CD10 +_08088414: + mov r0, r8 + strb r4, [r0] + ldr r0, [r6, #0x50] + adds r0, #0x7d + strb r4, [r0] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08088424 +sub_08088424: @ 0x08088424 + push {lr} + adds r1, r0, #0 + ldr r0, _08088440 @ =gUnk_02002A40 + adds r0, #0xb0 + ldrb r0, [r0] + cmp r0, #0x31 + bhi _08088444 + adds r1, #0x83 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0xe + bgt _08088476 + movs r0, #0xf + b _08088474 + .align 2, 0 +_08088440: .4byte gUnk_02002A40 +_08088444: + cmp r0, #0x4f + bhi _08088456 + adds r1, #0x83 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0xb + bgt _08088476 + movs r0, #0xc + b _08088474 +_08088456: + cmp r0, #0x6d + bhi _08088468 + adds r1, #0x83 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #8 + bgt _08088476 + movs r0, #9 + b _08088474 +_08088468: + adds r1, #0x83 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #5 + bgt _08088476 + movs r0, #6 +_08088474: + strb r0, [r1] +_08088476: + pop {pc} + + thumb_func_start sub_08088478 +sub_08088478: @ 0x08088478 + push {r4, lr} + movs r4, #0 + movs r0, #8 + bl sub_0807CC3C + cmp r0, #0 + bne _080884A4 + movs r0, #7 + bl sub_0807CC3C + cmp r0, #0 + bne _0808849C + ldr r1, _08088498 @ =0x00004322 + movs r4, #1 + b _080884D2 + .align 2, 0 +_08088498: .4byte 0x00004322 +_0808849C: + ldr r1, _080884A0 @ =0x00004325 + b _080884D2 + .align 2, 0 +_080884A0: .4byte 0x00004325 +_080884A4: + ldr r1, _080884C0 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xb0 + ldrb r0, [r0] + cmp r0, #0x82 + beq _080884C8 + cmp r0, #0x88 + bne _080884D0 + adds r1, #0xb1 + movs r0, #0xff + strb r0, [r1] + ldr r1, _080884C4 @ =0x00004329 + b _080884D2 + .align 2, 0 +_080884C0: .4byte gUnk_02002A40 +_080884C4: .4byte 0x00004329 +_080884C8: + ldrb r0, [r1, #6] + ldr r1, _080884F4 @ =0x00004328 + cmp r0, #0 + beq _080884D2 +_080884D0: + ldr r1, _080884F8 @ =0x00004327 +_080884D2: + adds r0, r1, #0 + bl sub_08056378 + ldr r1, _080884FC @ =gUnk_02000050 + movs r0, #1 + strb r0, [r1, #6] + movs r0, #0xc + strb r0, [r1, #7] + cmp r4, #0 + beq _080884EA + movs r0, #5 + str r0, [r1, #0x10] +_080884EA: + ldr r1, _08088500 @ =gLinkEntity + movs r0, #6 + strb r0, [r1, #0x14] + pop {r4, pc} + .align 2, 0 +_080884F4: .4byte 0x00004328 +_080884F8: .4byte 0x00004327 +_080884FC: .4byte gUnk_02000050 +_08088500: .4byte gLinkEntity + + thumb_func_start sub_08088504 +sub_08088504: @ 0x08088504 + push {lr} + ldr r0, _08088518 @ =gUnk_02002A40 + adds r0, #0xb0 + ldrb r0, [r0] + cmp r0, #0x82 + beq _08088520 + cmp r0, #0x88 + bne _08088528 + ldr r0, _0808851C @ =0x0000432F + b _0808852A + .align 2, 0 +_08088518: .4byte gUnk_02002A40 +_0808851C: .4byte 0x0000432F +_08088520: + ldr r0, _08088524 @ =0x00004314 + b _0808852A + .align 2, 0 +_08088524: .4byte 0x00004314 +_08088528: + ldr r0, _0808853C @ =0x00004311 +_0808852A: + bl sub_08056378 + ldr r0, _08088540 @ =gUnk_02000050 + movs r1, #1 + strb r1, [r0, #6] + movs r1, #0xc + strb r1, [r0, #7] + pop {pc} + .align 2, 0 +_0808853C: .4byte 0x00004311 +_08088540: .4byte gUnk_02000050 + + thumb_func_start sub_08088544 +sub_08088544: @ 0x08088544 + push {lr} + ldr r0, _08088568 @ =gUnk_02002A40 + adds r0, #0xb0 + ldrb r0, [r0] + ldr r1, _0808856C @ =0x00004315 + cmp r0, #0x82 + beq _08088554 + subs r1, #7 +_08088554: + adds r0, r1, #0 + bl sub_08056378 + ldr r0, _08088570 @ =gUnk_02000050 + movs r1, #1 + strb r1, [r0, #6] + movs r1, #0xc + strb r1, [r0, #7] + pop {pc} + .align 2, 0 +_08088568: .4byte gUnk_02002A40 +_0808856C: .4byte 0x00004315 +_08088570: .4byte gUnk_02000050 + + thumb_func_start sub_08088574 +sub_08088574: @ 0x08088574 + push {lr} + movs r0, #9 + bl sub_0807CC3C + cmp r0, #0 + beq _08088594 + movs r0, #0x5f + bl sub_0807CBD0 + ldr r1, _08088590 @ =0x0000430C + cmp r0, #0 + beq _08088596 + adds r1, #7 + b _08088596 + .align 2, 0 +_08088590: .4byte 0x0000430C +_08088594: + ldr r1, _080885A8 @ =0x0000430B +_08088596: + adds r0, r1, #0 + bl sub_08056378 + ldr r0, _080885AC @ =gUnk_02000050 + movs r1, #1 + strb r1, [r0, #6] + movs r1, #0xc + strb r1, [r0, #7] + pop {pc} + .align 2, 0 +_080885A8: .4byte 0x0000430B +_080885AC: .4byte gUnk_02000050 + + thumb_func_start sub_080885B0 +sub_080885B0: @ 0x080885B0 + push {lr} + movs r0, #8 + bl sub_0807CC3C + cmp r0, #0 + bne _080885E8 + movs r0, #7 + bl sub_0807CC3C + cmp r0, #0 + bne _0808860A + movs r0, #5 + bl sub_080526CC + ldr r0, _080885E0 @ =0x00004326 + bl sub_08056378 + ldr r1, _080885E4 @ =gUnk_02000050 + movs r0, #1 + strb r0, [r1, #6] + movs r0, #0xc + strb r0, [r1, #7] + b _0808860A + .align 2, 0 +_080885E0: .4byte 0x00004326 +_080885E4: .4byte gUnk_02000050 +_080885E8: + ldr r1, _08088618 @ =gUnk_02002A40 + adds r0, r1, #0 + adds r0, #0xb1 + ldrb r0, [r0] + cmp r0, #0 + beq _0808860A + adds r1, #0xbb + movs r0, #1 + strb r0, [r1] + movs r0, #0x3e + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 + movs r0, #0x59 + bl sub_0807CD04 +_0808860A: + movs r0, #8 + bl sub_0807CD8C + movs r0, #7 + bl sub_0807CD8C + pop {pc} + .align 2, 0 +_08088618: .4byte gUnk_02002A40 + + thumb_func_start sub_0808861C +sub_0808861C: @ 0x0808861C + push {r4, lr} + adds r4, r1, #0 + movs r0, #0xa8 + movs r1, #0x54 + movs r2, #0xc + movs r3, #8 + bl sub_0800293E + str r0, [r4, #0x14] + ldr r1, _08088650 @ =gLinkEntity + ldrb r0, [r1, #0x14] + cmp r0, #0 + bne _0808863E + movs r2, #0x36 + ldrsh r0, [r1, r2] + cmp r0, #0 + beq _08088642 +_0808863E: + movs r0, #0 + str r0, [r4, #0x14] +_08088642: + ldr r2, _08088654 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_08088650: .4byte gLinkEntity +_08088654: .4byte gUnk_02033280 + + thumb_func_start sub_08088658 +sub_08088658: @ 0x08088658 + push {r4, lr} + adds r4, r1, #0 + movs r0, #0x78 + movs r1, #0x78 + movs r2, #0x10 + movs r3, #8 + bl sub_0800293E + str r0, [r4, #0x14] + ldr r0, _08088684 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08088678 + movs r0, #0 + str r0, [r4, #0x14] +_08088678: + ldr r2, _08088688 @ =gUnk_02033280 + ldrb r1, [r2, #7] + movs r0, #1 + orrs r0, r1 + strb r0, [r2, #7] + pop {r4, pc} + .align 2, 0 +_08088684: .4byte gLinkEntity +_08088688: .4byte gUnk_02033280 + + thumb_func_start sub_0808868C +sub_0808868C: @ 0x0808868C + push {lr} + ldr r2, _080886A0 @ =gUnk_08120B20 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080886A0: .4byte gUnk_08120B20 + + thumb_func_start sub_080886A4 +sub_080886A4: @ 0x080886A4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + movs r6, #3 + adds r0, r6, #0 + ands r0, r1 + strb r0, [r4, #0x14] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3f + movs r5, #1 + strb r5, [r0] + subs r1, #5 + movs r0, #2 + strb r0, [r1] + ldr r0, _08088700 @ =gUnk_080FD168 + str r0, [r4, #0x48] + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08088704 + strb r6, [r4, #0xc] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + b _08088716 + .align 2, 0 +_08088700: .4byte gUnk_080FD168 +_08088704: + strb r5, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_08088716: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08088718 +sub_08088718: @ 0x08088718 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x95 + beq _08088728 + cmp r0, #0x8e + bne _0808875A +_08088728: + ldr r0, [r4, #0x4c] + ldrb r1, [r0, #0x15] + adds r1, #4 + movs r0, #0x18 + ands r1, r0 + asrs r1, r1, #3 + ldrb r2, [r4, #0x14] + movs r0, #3 + ands r0, r2 + cmp r1, r0 + bne _0808875A + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r0, _0808875C @ =0x00000111 + bl sub_08004488 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 +_0808875A: + pop {r4, pc} + .align 2, 0 +_0808875C: .4byte 0x00000111 + + thumb_func_start sub_08088760 +sub_08088760: @ 0x08088760 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808878E + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + lsls r0, r0, #1 + adds r1, r4, #0 + adds r1, #0x70 + strh r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 +_0808878E: + pop {r4, pc} + + thumb_func_start sub_08088790 +sub_08088790: @ 0x08088790 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080887D6 + adds r0, r4, #0 + adds r0, #0x86 + adds r2, r4, #0 + adds r2, #0x84 + ldrh r1, [r0] + adds r5, r0, #0 + ldrh r0, [r2] + cmp r1, r0 + beq _080887BC + ldrh r0, [r2] + bl sub_0807CBE4 + cmp r0, #0 + beq _080887BC + movs r0, #0 + strb r0, [r4, #0xe] + b _080887D6 +_080887BC: + adds r1, r4, #0 + adds r1, #0x70 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080887D6 + movs r0, #4 + strb r0, [r4, #0xc] + ldrh r0, [r5] + bl sub_0807CD48 +_080887D6: + pop {r4, r5, pc} + + thumb_func_start sub_080887D8 +sub_080887D8: @ 0x080887D8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08088802 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_08088802: + pop {r4, pc} + + thumb_func_start sub_08088804 +sub_08088804: @ 0x08088804 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _08088828 + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08088828 + ldrb r0, [r4, #0x14] + adds r1, r4, #0 + adds r1, #0x72 + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_08088828: + ldr r0, _0808883C @ =gUnk_08120BE0 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_0808883C: .4byte gUnk_08120BE0 + + thumb_func_start sub_08088840 +sub_08088840: @ 0x08088840 + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r2, #7 + orrs r1, r2 + strb r1, [r3] + ldr r1, _08088868 @ =gUnk_080FD1D4 + str r1, [r0, #0x48] + ldrb r1, [r0, #0x14] + adds r0, #0x72 + strb r1, [r0] + bx lr + .align 2, 0 +_08088868: .4byte gUnk_080FD1D4 + + thumb_func_start sub_0808886C +sub_0808886C: @ 0x0808886C + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08088938 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_080889A8 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r1, [r5, #0xa] + adds r0, r1, #2 + cmp r0, r4 + bgt _080888B8 + movs r1, #0 + movs r0, #2 + strb r0, [r5, #0xc] + strb r1, [r5, #0xf] + movs r0, #4 + strb r0, [r5, #0x14] + strh r1, [r5, #0x36] + adds r0, r5, #0 + movs r1, #4 + bl sub_08004260 + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + ldr r0, _080888B4 @ =0x0000016B + bl sub_08004488 + b _080888F2 + .align 2, 0 +_080888B4: .4byte 0x0000016B +_080888B8: + ldrb r0, [r5, #0x14] + cmp r4, r0 + bls _080888E4 + adds r0, r1, #1 + cmp r0, r4 + bne _080888D2 + movs r0, #4 + strb r0, [r5, #0xf] + adds r1, r4, #1 + adds r0, r5, #0 + bl sub_08004260 + b _080888DA +_080888D2: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08004260 +_080888DA: + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_08004488 + b _080888F0 +_080888E4: + cmp r4, r0 + bhs _080888F0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08004260 +_080888F0: + strb r4, [r5, #0x14] +_080888F2: + pop {r4, r5, pc} + + thumb_func_start sub_080888F4 +sub_080888F4: @ 0x080888F4 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x70 + ldrh r0, [r0] + cmp r0, #0 + beq _08088934 + adds r0, r5, #0 + bl sub_08088938 + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_080889A8 + adds r4, r4, r0 + lsls r4, r4, #0x18 + lsrs r4, r4, #0x18 + ldrb r0, [r5, #0xa] + adds r0, #2 + cmp r0, r4 + ble _08088934 + movs r0, #1 + strb r0, [r5, #0xc] + strb r4, [r5, #0x14] + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CD48 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08004260 +_08088934: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08088938 +sub_08088938: @ 0x08088938 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + movs r5, #0 + ldrh r1, [r0, #0x2e] + subs r1, #8 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + mov ip, r1 + ldrh r1, [r0, #0x32] + subs r1, #8 + lsls r1, r1, #0x10 + lsrs r7, r1, #0x10 + movs r4, #0 + ldr r1, _080889A0 @ =gUnk_02034350 + ldr r2, _080889A4 @ =gUnk_08120BEC + mov r8, r2 + adds r3, r1, #0 + adds r3, #0xac + adds r6, r0, #0 + adds r6, #0x72 +_08088962: + ldr r2, [r3] + cmp r2, #0 + beq _08088990 + ldrh r0, [r2, #0x2e] + mov r1, ip + subs r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x10 + bhi _08088990 + ldrh r0, [r2, #0x32] + subs r0, r0, r7 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x10 + bhi _08088990 + ldrb r0, [r6] + add r0, r8 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x63 + strb r1, [r0] + adds r5, #1 +_08088990: + adds r3, #4 + adds r4, #1 + cmp r4, #7 + bls _08088962 + adds r0, r5, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080889A0: .4byte gUnk_02034350 +_080889A4: .4byte gUnk_08120BEC + + thumb_func_start sub_080889A8 +sub_080889A8: @ 0x080889A8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r5, #0 + bl sub_08017850 + cmp r0, #0 + beq _080889CA + ldr r1, _08088A40 @ =gLinkEntity + ldr r2, _08088A44 @ =gUnk_08120BEC + adds r0, r4, #0 + adds r0, #0x72 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, #0x63 + strb r0, [r1] + movs r5, #1 +_080889CA: + ldr r0, _08088A48 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xf + ands r0, r1 + cmp r0, #0 + beq _08088A3A + ldr r6, _08088A4C @ =gUnk_03004040 + ldr r1, [r6] + adds r0, r4, #0 + bl sub_080177A0 + cmp r0, #0 + beq _080889FA + ldr r1, [r6] + ldr r2, _08088A44 @ =gUnk_08120BEC + adds r0, r4, #0 + adds r0, #0x72 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, #0x63 + strb r0, [r1] + adds r5, #1 +_080889FA: + ldr r1, [r6, #4] + adds r0, r4, #0 + bl sub_080177A0 + cmp r0, #0 + beq _08088A1A + ldr r1, [r6, #4] + ldr r2, _08088A44 @ =gUnk_08120BEC + adds r0, r4, #0 + adds r0, #0x72 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, #0x63 + strb r0, [r1] + adds r5, #1 +_08088A1A: + ldr r1, [r6, #8] + adds r0, r4, #0 + bl sub_080177A0 + cmp r0, #0 + beq _08088A3A + ldr r1, [r6, #8] + ldr r2, _08088A44 @ =gUnk_08120BEC + adds r0, r4, #0 + adds r0, #0x72 + ldrb r0, [r0] + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, #0x63 + strb r0, [r1] + adds r5, #1 +_08088A3A: + adds r0, r5, #0 + pop {r4, r5, r6, pc} + .align 2, 0 +_08088A40: .4byte gLinkEntity +_08088A44: .4byte gUnk_08120BEC +_08088A48: .4byte gUnk_03003F80 +_08088A4C: .4byte gUnk_03004040 + + thumb_func_start sub_08088A50 +sub_08088A50: @ 0x08088A50 + push {lr} + ldr r2, _08088A64 @ =gUnk_08120C34 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08088A64: .4byte gUnk_08120C34 + + thumb_func_start sub_08088A68 +sub_08088A68: @ 0x08088A68 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08088AE4 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x18] + movs r2, #3 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x11] + movs r0, #0x17 + bl GetProgressFlag + cmp r0, #0 + beq _08088AA0 + ldr r0, _08088A9C @ =gUnk_02002A40 + ldrb r0, [r0, #7] + adds r0, #1 + b _08088AA4 + .align 2, 0 +_08088A9C: .4byte gUnk_02002A40 +_08088AA0: + ldr r0, _08088AD8 @ =gUnk_02002A40 + ldrb r0, [r0, #7] +_08088AA4: + strb r0, [r4, #0x1e] + adds r0, r4, #0 + bl sub_08088BE0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08088ADC @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r4, r3] + ldrh r2, [r2, #8] + subs r1, r1, r2 + movs r2, #0x80 + movs r3, #0x60 + bl sub_0800293E + cmp r0, #0 + beq _08088B82 + ldr r0, _08088AE0 @ =gUnk_02034350 + ldr r1, [r0, #0x68] + movs r2, #4 + orrs r1, r2 + str r1, [r0, #0x68] + b _08088B82 + .align 2, 0 +_08088AD8: .4byte gUnk_02002A40 +_08088ADC: .4byte gUnk_03000BF0 +_08088AE0: .4byte gUnk_02034350 +_08088AE4: + ldr r5, _08088B70 @ =gUnk_02034350 + ldr r1, [r5, #0x68] + movs r6, #1 + adds r0, r1, #0 + ands r0, r6 + cmp r0, #0 + beq _08088B06 + movs r0, #2 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r5, #0x68] + strb r6, [r4, #0xe] + ldr r0, _08088B74 @ =gUnk_08120C1C + str r0, [r4, #0x68] + movs r0, #0x8a + bl sub_080A3268 +_08088B06: + ldr r1, [r5, #0x68] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08088B24 + movs r0, #3 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r5, #0x68] + strb r6, [r4, #0xe] + ldr r0, _08088B78 @ =gUnk_08120C25 + str r0, [r4, #0x68] + movs r0, #0x89 + bl sub_080A3268 +_08088B24: + ldr r1, [r5, #0x68] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08088B42 + movs r0, #5 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r5, #0x68] + strb r6, [r4, #0xe] + ldr r0, _08088B7C @ =gUnk_08120C2E + str r0, [r4, #0x68] + movs r0, #0x8a + bl sub_080A3268 +_08088B42: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08088B82 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _08088B82 + ldr r1, [r4, #0x68] + ldrb r0, [r1] + adds r2, r4, #0 + adds r2, #0x63 + strb r0, [r2] + adds r1, #1 + ldrb r0, [r1] + cmp r0, #0xff + beq _08088B80 + movs r0, #8 + strb r0, [r4, #0xe] + str r1, [r4, #0x68] + b _08088B82 + .align 2, 0 +_08088B70: .4byte gUnk_02034350 +_08088B74: .4byte gUnk_08120C1C +_08088B78: .4byte gUnk_08120C25 +_08088B7C: .4byte gUnk_08120C2E +_08088B80: + strb r3, [r2] +_08088B82: + adds r5, r4, #0 + adds r5, #0x29 + ldrb r1, [r5] + movs r6, #8 + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5] + movs r1, #0x2e + ldrsh r0, [r4, r1] + subs r0, #0x50 + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r1, #0x50 + movs r2, #0xa0 + movs r3, #0x30 + bl sub_0806FBFC + cmp r0, #0 + beq _08088BBA + ldrb r0, [r5] + adds r1, r6, #0 + ands r1, r0 + movs r0, #5 + orrs r1, r0 + strb r1, [r5] +_08088BBA: + movs r3, #0x2e + ldrsh r0, [r4, r3] + subs r0, #0x50 + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r1, #0x30 + movs r2, #0xa0 + movs r3, #0x30 + bl sub_0806FBFC + cmp r0, #0 + beq _08088BDE + ldrb r0, [r5] + adds r1, r6, #0 + ands r1, r0 + movs r0, #5 + orrs r1, r0 + strb r1, [r5] +_08088BDE: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08088BE0 +sub_08088BE0: @ 0x08088BE0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x15 + bl sub_0807CBD0 + cmp r0, #0 + bne _08088C1C + movs r3, #0x78 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl sub_08088C78 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0x15 + movs r3, #0 + bl sub_08088C78 + adds r2, r0, #0 + cmp r2, #0 + beq _08088C1C + ldr r0, _08088C74 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + adds r1, #0x48 + strh r1, [r2, #0x2e] + ldrh r0, [r0, #8] + adds r0, #0xc8 + strh r0, [r2, #0x32] +_08088C1C: + movs r0, #0x16 + bl sub_0807CBD0 + cmp r0, #0 + bne _08088C58 + adds r0, r4, #0 + movs r1, #2 + movs r2, #1 + movs r3, #0x78 + bl sub_08088C78 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0x16 + movs r3, #0 + bl sub_08088C78 + adds r2, r0, #0 + cmp r2, #0 + beq _08088C58 + ldr r0, _08088C74 @ =gUnk_03000BF0 + movs r3, #0xc4 + lsls r3, r3, #1 + adds r1, r3, #0 + ldrh r3, [r0, #6] + adds r1, r1, r3 + strh r1, [r2, #0x2e] + ldrh r0, [r0, #8] + adds r0, #0xc8 + strh r0, [r2, #0x32] +_08088C58: + movs r3, #0x78 + rsbs r3, r3, #0 + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_08088C78 + adds r0, r4, #0 + movs r1, #1 + movs r2, #1 + movs r3, #0x78 + bl sub_08088C78 + pop {r4, pc} + .align 2, 0 +_08088C74: .4byte gUnk_03000BF0 + + thumb_func_start sub_08088C78 +sub_08088C78: @ 0x08088C78 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r3, #0 + movs r0, #0x25 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08088C96 + ldrh r0, [r4, #0x2e] + adds r0, r0, r5 + strh r0, [r1, #0x2e] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] + str r4, [r1, #0x50] +_08088C96: + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08088C9C +sub_08088C9C: @ 0x08088C9C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08088CEC @ =gUnk_08120C48 + ldr r0, [r4, #0x50] + adds r0, #0x29 + ldrb r0, [r0] + lsls r0, r0, #0x1d + lsrs r0, r0, #0x1d + adds r0, r0, r1 + ldrb r0, [r0] + adds r3, r4, #0 + adds r3, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldr r0, [r4, #0x50] + adds r0, #0x63 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + adds r1, r4, #0 + adds r1, #0x63 + strb r0, [r1] + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08088D4C + cmp r0, #1 + bgt _08088CF0 + cmp r0, #0 + beq _08088CFA + b _08088DB0 + .align 2, 0 +_08088CEC: .4byte gUnk_08120C48 +_08088CF0: + cmp r0, #2 + beq _08088D5A + cmp r0, #3 + beq _08088D7A + b _08088DB0 +_08088CFA: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r2, [r4, #0xb] + adds r0, r2, #4 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + lsls r2, r2, #0x18 + movs r0, #0x16 + cmp r2, #0 + bne _08088D28 + movs r0, #0x15 +_08088D28: + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xf] + bl sub_0807CBD0 + cmp r0, #0 + beq _08088DB0 + ldr r1, _08088D48 @ =gUnk_08120C50 + ldrb r0, [r4, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + b _08088DAC + .align 2, 0 +_08088D48: .4byte gUnk_08120C50 +_08088D4C: + ldrb r0, [r4, #0xf] + bl sub_0807CBD0 + cmp r0, #0 + beq _08088DB0 + movs r0, #2 + b _08088DAE +_08088D5A: + ldr r2, _08088D98 @ =gUnk_02034350 + ldr r1, [r2, #0x68] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08088DB0 + movs r0, #0x21 + rsbs r0, r0, #0 + ands r1, r0 + str r1, [r2, #0x68] + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xd] + movs r0, #1 + strb r0, [r4, #0xe] +_08088D7A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08088DB0 + movs r0, #8 + strb r0, [r4, #0xe] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08088D9C + subs r0, r1, #2 + b _08088D9E + .align 2, 0 +_08088D98: .4byte gUnk_02034350 +_08088D9C: + adds r0, r1, #2 +_08088D9E: + strh r0, [r4, #0x2e] + ldrb r0, [r4, #0xd] + subs r0, #1 + strb r0, [r4, #0xd] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08088DB0 +_08088DAC: + movs r0, #4 +_08088DAE: + strb r0, [r4, #0xc] +_08088DB0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08088DB4 +sub_08088DB4: @ 0x08088DB4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08088E28 + cmp r0, #1 + bgt _08088DC8 + cmp r0, #0 + beq _08088DEC + b _08088E50 +_08088DC8: + cmp r0, #4 + bgt _08088E50 + ldr r0, _08088DE8 @ =gUnk_02034350 + ldr r0, [r0, #0x68] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _08088E6E + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08088E6E + b _08088E3E + .align 2, 0 +_08088DE8: .4byte gUnk_02034350 +_08088DEC: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, #6 + strb r0, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + ldrb r0, [r4, #0xb] + movs r1, #0x16 + cmp r0, #0 + bne _08088E1E + movs r1, #0x15 +_08088E1E: + strb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08016A04 + b _08088E6E +_08088E28: + ldrb r0, [r4, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + beq _08088E6E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xa + strb r0, [r4, #0xe] + b _08088E6E +_08088E3E: + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x1e] + adds r0, #1 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + b _08088E6E +_08088E50: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08088E6E + ldr r0, _08088E70 @ =gUnk_02034350 + ldr r1, [r0, #0x68] + movs r2, #9 + rsbs r2, r2, #0 + ands r1, r2 + str r1, [r0, #0x68] + adds r0, r4, #0 + bl sub_0805E7BC +_08088E6E: + pop {r4, pc} + .align 2, 0 +_08088E70: .4byte gUnk_02034350 + + thumb_func_start sub_08088E74 +sub_08088E74: @ 0x08088E74 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08088E94 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldr r2, _08088EB0 @ =gUnk_02034350 + ldr r0, [r2, #0x68] + movs r1, #8 + orrs r0, r1 + str r0, [r2, #0x68] +_08088E94: + adds r0, r4, #0 + bl sub_0806FB38 + cmp r0, #0 + beq _08088EB4 + ldr r0, _08088EB0 @ =gUnk_02034350 + ldr r1, [r0, #0x68] + movs r2, #0x10 + orrs r1, r2 + str r1, [r0, #0x68] + adds r0, r4, #0 + bl sub_0805E7BC + b _08088F14 + .align 2, 0 +_08088EB0: .4byte gUnk_02034350 +_08088EB4: + ldr r0, _08088F18 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _08088F14 + adds r0, r4, #0 + movs r1, #0x2a + movs r2, #0 + movs r3, #0x1e + bl sub_080A2988 + adds r4, r0, #0 + cmp r4, #0 + beq _08088F14 + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x19] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + ldrb r0, [r4, #0x1b] + ands r1, r0 + strb r1, [r4, #0x1b] + bl sub_08000E50 + ldr r2, _08088F1C @ =gUnk_08120C52 + movs r1, #3 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_08088F14: + pop {r4, pc} + .align 2, 0 +_08088F18: .4byte gUnk_030010A0 +_08088F1C: .4byte gUnk_08120C52 + + thumb_func_start sub_08088F20 +sub_08088F20: @ 0x08088F20 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08088F62 + cmp r0, #1 + bgt _08088F34 + cmp r0, #0 + beq _08088F3E + b _08089020 +_08088F34: + cmp r0, #2 + beq _08088FEC + cmp r0, #3 + beq _08089004 + b _08089020 +_08088F3E: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x11] + subs r0, #0x11 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + ldrb r0, [r4, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + bne _08088F5A + b _0808908E +_08088F5A: + adds r0, r4, #0 + bl sub_0805E7BC + b _0808908E +_08088F62: + ldrb r0, [r4, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + bne _08088F6E + b _0808908E +_08088F6E: + movs r5, #2 + strb r5, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r1, #0x87 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_0805E4E0 + movs r0, #0x2a + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08088FBC + ldrb r1, [r2, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2, #0x11] + ldrh r0, [r4, #0x2e] + strh r0, [r2, #0x2e] + ldrh r0, [r4, #0x32] + strh r0, [r2, #0x32] + adds r0, r2, #0 + adds r0, #0x38 + strb r5, [r0] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] +_08088FBC: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08088FE8 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + movs r0, #0x76 + movs r2, #2 + bl sub_0807B314 + b _0808908E + .align 2, 0 +_08088FE8: .4byte gUnk_03000BF0 +_08088FEC: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808908E + adds r0, r4, #0 + bl sub_08089094 + movs r0, #3 + strb r0, [r4, #0xc] + b _0808908E +_08089004: + ldr r0, _0808901C @ =gUnk_02034350 + ldr r0, [r0, #0x68] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0808908E + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + b _0808908E + .align 2, 0 +_0808901C: .4byte gUnk_02034350 +_08089020: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x5a + bne _0808905C + movs r0, #0x15 + movs r1, #2 + bl sub_0807CC60 + cmp r0, #0 + beq _08089048 + ldr r0, _08089044 @ =gUnk_02034350 + ldr r1, [r0, #0x68] + movs r2, #2 + b _0808904E + .align 2, 0 +_08089044: .4byte gUnk_02034350 +_08089048: + ldr r0, _08089090 @ =gUnk_02034350 + ldr r1, [r0, #0x68] + movs r2, #1 +_0808904E: + orrs r1, r2 + str r1, [r0, #0x68] + adds r2, r0, #0 + ldr r0, [r2, #0x68] + movs r1, #0x20 + orrs r0, r1 + str r0, [r2, #0x68] +_0808905C: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0808908E + ldr r2, _08089090 @ =gUnk_02034350 + ldr r0, [r2, #0x68] + movs r1, #0x11 + rsbs r1, r1, #0 + ands r0, r1 + str r0, [r2, #0x68] + movs r0, #0x15 + movs r1, #2 + bl sub_0807CC60 + cmp r0, #0 + beq _08089088 + adds r0, r4, #0 + movs r1, #0x3c + bl sub_0805E4E0 + movs r0, #0x72 + bl sub_080A3268 +_08089088: + adds r0, r4, #0 + bl sub_0805E7BC +_0808908E: + pop {r4, r5, pc} + .align 2, 0 +_08089090: .4byte gUnk_02034350 + + thumb_func_start sub_08089094 +sub_08089094: @ 0x08089094 + push {r4, r5, lr} + adds r5, r0, #0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r1, _080890C4 @ =gUnk_03000BF0 + ldrh r1, [r1, #6] + subs r0, r0, r1 + cmp r0, #0xff + bgt _080890CC + ldr r4, _080890C8 @ =gUnk_08120C56 + movs r2, #8 + rsbs r2, r2, #0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080890EC + adds r4, #4 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #4 + bl sub_080890EC + b _080890E6 + .align 2, 0 +_080890C4: .4byte gUnk_03000BF0 +_080890C8: .4byte gUnk_08120C56 +_080890CC: + ldr r4, _080890E8 @ =gUnk_08120C5E + movs r2, #8 + rsbs r2, r2, #0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080890EC + adds r4, #4 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #4 + bl sub_080890EC +_080890E6: + pop {r4, r5, pc} + .align 2, 0 +_080890E8: .4byte gUnk_08120C5E + + thumb_func_start sub_080890EC +sub_080890EC: @ 0x080890EC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + movs r0, #0x25 + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08089132 + movs r1, #3 + bl sub_0805E3A0 + ldrh r0, [r5, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x32] + adds r0, r0, r6 + strh r0, [r4, #0x32] + str r5, [r4, #0x50] + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0 + ldrsh r0, [r7, r2] + adds r1, r1, r0 + movs r3, #0x32 + ldrsh r2, [r4, r3] + movs r3, #2 + ldrsh r0, [r7, r3] + adds r2, r2, r0 + adds r0, r4, #0 + movs r3, #0x5a + bl sub_0806FB00 +_08089132: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08089134 +sub_08089134: @ 0x08089134 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0808919C + movs r2, #1 + movs r3, #1 + strb r3, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + strb r0, [r5, #0x1e] + movs r0, #0x10 + strb r0, [r5, #0xe] + strb r3, [r5, #0xf] + ldrb r0, [r5, #0xa] + lsls r3, r0, #1 + adds r3, r3, r0 + ldr r0, _080891D4 @ =gUnk_08120C80 + adds r3, r3, r0 + ldrb r1, [r3] + lsls r1, r1, #6 + ldrb r4, [r5, #0x19] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r4 + orrs r0, r1 + strb r0, [r5, #0x19] + ldrb r0, [r3, #1] + movs r1, #0x29 + adds r1, r1, r5 + mov ip, r1 + movs r1, #7 + ands r1, r0 + mov r0, ip + ldrb r4, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r4 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r0, [r3, #2] + lsls r0, r0, #6 + ldrb r1, [r5, #0x1b] + ands r2, r1 + orrs r2, r0 + strb r2, [r5, #0x1b] +_0808919C: + ldrb r0, [r5, #0xa] + cmp r0, #4 + bne _080891D0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _080891D0 + movs r0, #0x10 + strb r0, [r5, #0xe] + ldr r2, _080891D8 @ =gUnk_08120C92 + ldrb r0, [r5, #0xf] + adds r1, r0, #1 + strb r1, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r5, #0x1e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #3 + bne _080891D0 + strb r3, [r5, #0xf] +_080891D0: + pop {r4, r5, pc} + .align 2, 0 +_080891D4: .4byte gUnk_08120C80 +_080891D8: .4byte gUnk_08120C92 + + thumb_func_start sub_080891DC +sub_080891DC: @ 0x080891DC + push {lr} + ldr r2, _080891F0 @ =gUnk_08120C98 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080891F0: .4byte gUnk_08120C98 + + thumb_func_start sub_080891F4 +sub_080891F4: @ 0x080891F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808965C + cmp r0, #0 + beq _08089236 + movs r3, #0 + movs r2, #1 + strb r2, [r4, #0xc] + movs r0, #0x80 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x11] + subs r0, #0x90 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + ldr r0, _08089238 @ =gUnk_080FD1F4 + str r0, [r4, #0x48] + strb r2, [r4, #0x16] + adds r0, r4, #0 + adds r0, #0x86 + strh r3, [r0] + adds r0, r4, #0 + bl sub_08089454 + adds r0, r4, #0 + bl sub_080894C8 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08089236: + pop {r4, pc} + .align 2, 0 +_08089238: .4byte gUnk_080FD1F4 + + thumb_func_start sub_0808923C +sub_0808923C: @ 0x0808923C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0800442E + cmp r0, #0 + bne _080892C0 + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + ldr r0, _08089278 @ =0x0000400B + cmp r5, r0 + beq _080892BA + adds r0, r5, #0 + bl sub_0808968C + cmp r0, #1 + beq _0808927C + cmp r0, #1 + blo _08089294 + cmp r0, #2 + beq _080892B2 + b _080892C0 + .align 2, 0 +_08089278: .4byte 0x0000400B +_0808927C: + movs r1, #3 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r5, #0 + subs r0, #0xc + ands r0, r1 + lsls r0, r0, #3 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08089538 + b _080892C0 +_08089294: + movs r0, #0xf + movs r1, #4 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _080892AA + adds r0, r4, #0 + bl sub_0806FA24 +_080892AA: + adds r0, r4, #0 + bl sub_080894FC + b _080892C0 +_080892B2: + adds r0, r4, #0 + adds r0, #0x80 + strh r5, [r0] + b _080892C0 +_080892BA: + adds r0, r4, #0 + bl sub_08078930 +_080892C0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080892C4 +sub_080892C4: @ 0x080892C4 + push {lr} + adds r2, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + cmp r0, #0 + beq _080892D8 + adds r0, r2, #0 + bl sub_080895C0 + b _080892F6 +_080892D8: + ldr r0, _080892F8 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _080892E4 + movs r0, #6 + strb r0, [r2, #0xd] +_080892E4: + ldr r0, _080892FC @ =gUnk_08120CAC + ldrb r1, [r2, #0xd] + subs r1, #5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_080892F6: + pop {pc} + .align 2, 0 +_080892F8: .4byte gUnk_03003F80 +_080892FC: .4byte gUnk_08120CAC + + thumb_func_start sub_08089300 +sub_08089300: @ 0x08089300 + push {r4, r5, lr} + adds r5, r0, #0 + adds r1, r5, #0 + adds r1, #0x83 + ldrb r0, [r1] + cmp r0, #0 + bne _0808932C + movs r0, #1 + strb r0, [r1] + ldr r1, _0808935C @ =gLinkEntity + ldrb r0, [r1, #0x14] + ldr r2, _08089360 @ =gUnk_08120CB4 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r5, #0 + bl sub_0806FA48 +_0808932C: + adds r0, r5, #0 + adds r0, #0x84 + ldrh r0, [r0] + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r0, _08089364 @ =0x0000400B + cmp r4, r0 + beq _080893A0 + adds r0, r4, #0 + bl sub_0808968C + cmp r0, #1 + beq _08089368 + cmp r0, #1 + blo _0808937C + cmp r0, #2 + beq _0808939A + b _080893A0 + .align 2, 0 +_0808935C: .4byte gLinkEntity +_08089360: .4byte gUnk_08120CB4 +_08089364: .4byte 0x0000400B +_08089368: + adds r0, r4, #0 + subs r0, #0xc + movs r1, #3 + ands r0, r1 + lsls r0, r0, #3 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_08089538 + b _080893A0 +_0808937C: + movs r0, #0xf + movs r1, #4 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08089392 + adds r0, r5, #0 + bl sub_0806FA24 +_08089392: + adds r0, r5, #0 + bl sub_080894FC + b _080893D6 +_0808939A: + adds r0, r5, #0 + adds r0, #0x80 + strh r4, [r0] +_080893A0: + bl sub_080896B0 + cmp r0, #0 + beq _080893D6 + ldr r2, _080893D8 @ =gUnk_03003F80 + movs r3, #0 + movs r0, #0x10 + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #0x20 + strb r0, [r1] + ldr r0, [r2, #0x30] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r0, _080893DC @ =gLinkEntity + strh r3, [r0, #0x2c] + strh r3, [r0, #0x30] + ldrb r0, [r0, #0x14] + movs r1, #4 + eors r0, r1 + lsls r0, r0, #2 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_08089538 +_080893D6: + pop {r4, r5, pc} + .align 2, 0 +_080893D8: .4byte gUnk_03003F80 +_080893DC: .4byte gLinkEntity + + thumb_func_start sub_080893E0 +sub_080893E0: @ 0x080893E0 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + adds r0, #0x83 + strb r2, [r0] + bx lr + + thumb_func_start sub_080893EC +sub_080893EC: @ 0x080893EC + push {r4, lr} + adds r4, r0, #0 + bl sub_080895C0 + cmp r0, #0 + beq _080893FC + movs r0, #1 + strb r0, [r4, #0xc] +_080893FC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08089400 +sub_08089400: @ 0x08089400 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _08089424 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + b _0808944E +_08089424: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _08089450 @ =0x0000400B + adds r1, r4, #0 + adds r1, #0x84 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + adds r0, r4, #0 + bl sub_080894C8 +_0808944E: + pop {r4, pc} + .align 2, 0 +_08089450: .4byte 0x0000400B + + thumb_func_start sub_08089454 +sub_08089454: @ 0x08089454 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _080894C0 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r6, r5, #0 + adds r6, #0x84 + strh r1, [r6] + ldrh r0, [r6] + adds r4, r5, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x80 + strh r0, [r1] + ldr r5, _080894C4 @ =0x0000400B + ldrh r1, [r6] + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrb r0, [r4] + cmp r0, #2 + bne _080894BC + ldrh r0, [r6] + movs r1, #1 + bl sub_080002B0 + movs r1, #0xc4 + lsls r1, r1, #2 + cmp r0, r1 + bne _080894BC + ldrh r1, [r6] + adds r0, r5, #0 + movs r2, #1 + bl sub_0800015E +_080894BC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080894C0: .4byte gUnk_03000BF0 +_080894C4: .4byte 0x0000400B + + thumb_func_start sub_080894C8 +sub_080894C8: @ 0x080894C8 + push {r4, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r1, _080894E0 @ =gUnk_02034350 + adds r4, r1, #0 + adds r4, #0xac + ldr r0, [r4] + mov ip, r1 + cmp r0, #0 + bne _080894E4 + str r3, [r4] + b _080894FA + .align 2, 0 +_080894E0: .4byte gUnk_02034350 +_080894E4: + adds r2, #1 + cmp r2, #7 + bhi _080894FA + lsls r0, r2, #2 + mov r1, ip + adds r1, #0xac + adds r1, r0, r1 + ldr r0, [r1] + cmp r0, #0 + bne _080894E4 + str r3, [r1] +_080894FA: + pop {r4, pc} + + thumb_func_start sub_080894FC +sub_080894FC: @ 0x080894FC + push {r4, lr} + adds r3, r0, #0 + movs r2, #0 + ldr r1, _08089514 @ =gUnk_02034350 + adds r4, r1, #0 + adds r4, #0xac + ldr r0, [r4] + mov ip, r1 + cmp r3, r0 + bne _08089518 + str r2, [r4] + b _08089530 + .align 2, 0 +_08089514: .4byte gUnk_02034350 +_08089518: + adds r2, #1 + cmp r2, #7 + bhi _08089530 + lsls r0, r2, #2 + mov r1, ip + adds r1, #0xac + adds r1, r0, r1 + ldr r0, [r1] + cmp r3, r0 + bne _08089518 + movs r0, #0 + str r0, [r1] +_08089530: + adds r0, r3, #0 + bl sub_0805E7BC + pop {r4, pc} + + thumb_func_start sub_08089538 +sub_08089538: @ 0x08089538 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r1, r5, #0 + adds r1, #0x86 + movs r0, #0x20 + strh r0, [r1] + adds r0, #0xef + bl sub_08004488 + adds r0, r5, #0 + adds r0, #0x80 + ldrh r0, [r0] + adds r6, r5, #0 + adds r6, #0x84 + ldrh r1, [r6] + adds r4, r5, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + ldrb r0, [r4] + cmp r0, #2 + bne _08089580 + ldrh r0, [r6] + movs r1, #1 + bl sub_080002B0 + ldr r1, _080895B8 @ =0x0000400B + cmp r0, r1 + bne _08089580 + movs r0, #0xc4 + lsls r0, r0, #2 + ldrh r1, [r6] + movs r2, #1 + bl sub_08000152 +_08089580: + adds r2, r5, #0 + adds r2, #0x84 + ldr r1, _080895BC @ =gUnk_080B4488 + ldrb r0, [r5, #0x15] + lsrs r0, r0, #3 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + ldrh r2, [r2] + adds r0, r0, r2 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x79 + beq _080895AC + cmp r0, #0x77 + bne _080895B4 +_080895AC: + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #0xfe + strb r0, [r1] +_080895B4: + pop {r4, r5, r6, pc} + .align 2, 0 +_080895B8: .4byte 0x0000400B +_080895BC: .4byte gUnk_080B4488 + + thumb_func_start sub_080895C0 +sub_080895C0: @ 0x080895C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r1, r4, #0 + adds r1, #0x86 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0808964C + adds r0, r4, #0 + bl sub_0800442E + cmp r0, #0 + bne _0808964C + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080002D0 + cmp r0, #0 + bne _080895FE + adds r0, r4, #0 + bl sub_08089454 + movs r0, #1 + b _08089654 +_080895FE: + movs r0, #0xf + movs r1, #4 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08089614 + adds r0, r4, #0 + bl sub_0806FA24 +_08089614: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r2, _08089658 @ =gUnk_08120CBC + ldrb r1, [r4, #0x15] + lsrs r1, r1, #2 + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + ldrh r3, [r4, #0x2e] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_08089454 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] +_0808964C: + adds r0, r4, #0 + bl sub_0800445C + movs r0, #0 +_08089654: + pop {r4, pc} + .align 2, 0 +_08089658: .4byte gUnk_08120CBC + + thumb_func_start sub_0808965C +sub_0808965C: @ 0x0808965C + push {lr} + adds r2, r0, #0 + ldr r3, _08089678 @ =gUnk_03000BF0 + ldrb r0, [r3, #4] + cmp r0, #0x3f + bls _08089680 + ldr r1, _0808967C @ =gUnk_08120CCC + subs r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r2, #0 + b _08089684 + .align 2, 0 +_08089678: .4byte gUnk_03000BF0 +_0808967C: .4byte gUnk_08120CCC +_08089680: + adds r0, r2, #0 + movs r1, #0xe9 +_08089684: + bl sub_080ADF80 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808968C +sub_0808968C: @ 0x0808968C + push {lr} + adds r2, r0, #0 + ldr r1, _08089694 @ =gUnk_08120D6C + b _080896A4 + .align 2, 0 +_08089694: .4byte gUnk_08120D6C +_08089698: + ldrh r0, [r1] + cmp r0, r2 + bne _080896A2 + ldrh r0, [r1, #2] + b _080896AC +_080896A2: + adds r1, #4 +_080896A4: + ldrh r0, [r1] + cmp r0, #0 + bne _08089698 + movs r0, #0 +_080896AC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080896B0 +sub_080896B0: @ 0x080896B0 + push {r4, r5, r6, r7, lr} + ldr r0, _08089750 @ =gUnk_03003F80 + ldrb r1, [r0, #5] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0x12 + bne _08089768 + ldr r6, _08089754 @ =gLinkEntity + adds r0, r6, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08089768 + ldrb r3, [r6, #0x14] + movs r2, #6 + ands r2, r3 + lsls r2, r2, #1 + ldr r0, _08089758 @ =gUnk_080B4468 + adds r2, r2, r0 + ldr r0, _0808975C @ =gUnk_080B4488 + lsrs r3, r3, #1 + lsls r3, r3, #1 + adds r3, r3, r0 + movs r0, #0x2e + ldrsh r1, [r6, r0] + movs r4, #0 + ldrsh r0, [r2, r4] + adds r1, r1, r0 + ldr r5, _08089760 @ =gUnk_03000BF0 + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r7, #0x32 + ldrsh r0, [r6, r7] + movs r7, #2 + ldrsh r2, [r2, r7] + adds r0, r0, r2 + ldrh r2, [r5, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r1, r0 + movs r0, #0 + ldrsh r7, [r3, r0] + subs r1, r1, r7 + lsls r4, r1, #0x10 + lsrs r0, r4, #0x10 + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080002C8 + adds r1, r0, #0 + subs r0, #0x26 + cmp r0, #1 + bls _08089768 + cmp r1, #0x29 + beq _08089768 + ldrb r0, [r5] + bl sub_0808094C + asrs r1, r4, #0x10 + ldr r2, _08089764 @ =0x00002004 + adds r0, r0, r2 + adds r2, r0, r1 + ldrb r2, [r2] + subs r1, r1, r7 + adds r0, r0, r1 + ldrb r0, [r0] + cmp r2, #0 + bne _08089768 + cmp r0, #0 + bne _08089768 + movs r0, #1 + b _0808976A + .align 2, 0 +_08089750: .4byte gUnk_03003F80 +_08089754: .4byte gLinkEntity +_08089758: .4byte gUnk_080B4468 +_0808975C: .4byte gUnk_080B4488 +_08089760: .4byte gUnk_03000BF0 +_08089764: .4byte 0x00002004 +_08089768: + movs r0, #0 +_0808976A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0808976C +sub_0808976C: @ 0x0808976C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080897D0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _080897AE + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #6 + orrs r1, r0 + strb r1, [r2] + b _080897BA +_080897AE: + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] +_080897BA: + ldrh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x68 + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r1, #2 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 +_080897D0: + ldrb r1, [r4, #0x10] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + bne _08089840 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08089844 @ =gUnk_03000BF0 + movs r3, #0xa + ldrsh r0, [r2, r3] + subs r5, r1, r0 + adds r3, r5, #0 + subs r3, #0x78 + movs r6, #0x32 + ldrsh r1, [r4, r6] + movs r6, #0xc + ldrsh r0, [r2, r6] + subs r1, r1, r0 + adds r2, r1, #0 + subs r2, #0x50 + adds r0, r3, #0 + cmp r0, #0 + bge _08089802 + adds r0, r5, #0 + subs r0, #0x75 +_08089802: + asrs r3, r0, #2 + adds r0, r2, #0 + cmp r0, #0 + bge _0808980E + adds r0, r1, #0 + subs r0, #0x4d +_0808980E: + asrs r2, r0, #2 + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r3, r0 + bge _0808981A + adds r3, r0, #0 +_0808981A: + cmp r3, #0x10 + ble _08089820 + movs r3, #0x10 +_08089820: + cmp r2, r0 + bge _08089826 + adds r2, r0, #0 +_08089826: + cmp r2, #0x10 + ble _0808982C + movs r2, #0x10 +_0808982C: + adds r0, r4, #0 + adds r0, #0x68 + ldrh r0, [r0] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x6a + ldrh r0, [r0] + adds r0, r0, r2 + strh r0, [r4, #0x32] +_08089840: + pop {r4, r5, r6, pc} + .align 2, 0 +_08089844: .4byte gUnk_03000BF0 + + thumb_func_start sub_08089848 +sub_08089848: @ 0x08089848 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08089870 @ =gUnk_08120D90 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004276 + pop {r4, pc} + .align 2, 0 +_08089870: .4byte gUnk_08120D90 + + thumb_func_start sub_08089874 +sub_08089874: @ 0x08089874 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08089940 + adds r0, r4, #0 + adds r0, #0x38 + movs r2, #3 + strb r2, [r0] + ldrb r1, [r4, #0xb] + adds r5, r0, #0 + cmp r1, #0 + bne _08089900 + ldrb r0, [r4, #0xa] + cmp r0, #0x80 + bne _080898B4 + strb r2, [r4, #0xc] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08089AE0 + b _08089940 +_080898B4: + str r1, [r4, #0x50] + adds r0, r4, #0 + movs r1, #0x29 + movs r2, #0 + movs r3, #0xff + bl sub_080A2988 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080898FA +_080898C8: + ldrb r3, [r4, #0xa] + adds r0, r4, #0 + movs r1, #0x29 + movs r2, #0 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _080898EE + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _080898EA + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] +_080898EA: + ldr r0, [r4, #0x54] + str r0, [r4, #0x50] +_080898EE: + ldrb r0, [r4, #0xa] + subs r0, #1 + strb r0, [r4, #0xa] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080898C8 +_080898FA: + bl sub_0805E780 + b _08089940 +_08089900: + strb r3, [r4, #0xc] + ldr r0, [r4, #0x50] + cmp r0, #0 + bne _08089912 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0808991A +_08089912: + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0808991A: + ldrb r0, [r4, #0xb] + cmp r0, #0xff + bne _08089934 + movs r0, #1 + strb r0, [r5] + adds r0, r4, #0 + bl sub_08016A30 + adds r0, r4, #0 + movs r1, #0x15 + bl sub_0801D2B4 + b _08089940 +_08089934: + ldrb r1, [r4, #0xb] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + rsbs r0, r0, #0 + strh r0, [r4, #0x36] +_08089940: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08089944 +sub_08089944: @ 0x08089944 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xb] + cmp r3, #0xff + bne _08089964 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + b _08089A76 +_08089964: + ldrb r1, [r4, #0x1b] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r2, r0 + strb r2, [r4, #0x19] + cmp r3, #1 + beq _08089984 + ldr r0, [r4, #0x54] + ldrb r0, [r0, #0xc] + cmp r0, #2 + bne _08089A76 +_08089984: + ldr r0, _08089998 @ =gLinkEntity + movs r1, #0x36 + ldrsh r2, [r0, r1] + movs r1, #0x24 + rsbs r1, r1, #0 + adds r6, r0, #0 + cmp r2, r1 + bge _0808999C + movs r0, #1 + b _0808999E + .align 2, 0 +_08089998: .4byte gLinkEntity +_0808999C: + movs r0, #0 +_0808999E: + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xb] + subs r0, #1 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldrh r0, [r4, #0x32] + subs r0, r0, r1 + strh r0, [r4, #0x32] + adds r5, r6, #0 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0xf + movs r3, #0xf + bl sub_080041A0 + cmp r0, #0 + beq _08089A62 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08089A62 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0xb] + cmp r0, #1 + beq _080899EC + ldr r1, [r4, #0x54] + movs r0, #1 + strb r0, [r1, #0xc] +_080899EC: + ldr r1, _08089A78 @ =gUnk_03003F80 + movs r0, #1 + strb r0, [r1, #0x14] + ldrh r0, [r5, #0x32] + subs r0, #0x24 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x36] + adds r0, #0x24 + strh r0, [r5, #0x36] + adds r0, r5, #0 + bl sub_0807AA80 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08089A62 + adds r0, r5, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08089A20 + ldrh r0, [r1, #0x2e] + adds r0, #8 + strh r0, [r1, #0x2e] +_08089A20: + adds r0, r5, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08089A36 + ldrh r0, [r1, #0x2e] + subs r0, #8 + strh r0, [r1, #0x2e] +_08089A36: + adds r0, r5, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08089A4C + ldrh r0, [r1, #0x32] + adds r0, #8 + strh r0, [r1, #0x32] +_08089A4C: + adds r0, r6, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08089A62 + ldrh r0, [r1, #0x32] + subs r0, #8 + strh r0, [r1, #0x32] +_08089A62: + ldrb r0, [r4, #0xb] + subs r0, #1 + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldrh r0, [r4, #0x32] + adds r1, r1, r0 + strh r1, [r4, #0x32] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0xf] +_08089A76: + pop {r4, r5, r6, pc} + .align 2, 0 +_08089A78: .4byte gUnk_03003F80 + + thumb_func_start sub_08089A7C +sub_08089A7C: @ 0x08089A7C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + lsls r1, r0, #3 + adds r1, r1, r0 + lsls r1, r1, #2 + ldrh r0, [r4, #0x32] + subs r0, r0, r1 + strh r0, [r4, #0x32] + ldr r5, _08089AB0 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0xf + movs r3, #0xf + bl sub_080041A0 + cmp r0, #0 + beq _08089AB8 + ldr r2, _08089AB4 @ =gUnk_03003F80 + movs r0, #1 + strb r0, [r2, #0x14] + ldr r0, [r2, #0x30] + movs r1, #2 + orrs r0, r1 + str r0, [r2, #0x30] + b _08089AD0 + .align 2, 0 +_08089AB0: .4byte gLinkEntity +_08089AB4: .4byte gUnk_03003F80 +_08089AB8: + movs r2, #1 + strb r2, [r4, #0xc] + ldrh r1, [r4, #0x36] + ldrh r3, [r5, #0x36] + adds r0, r1, r3 + strh r0, [r5, #0x36] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + strh r0, [r5, #0x32] + adds r0, r5, #0 + adds r0, #0x38 + strb r2, [r0] +_08089AD0: + ldrb r1, [r4, #0xb] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + pop {r4, r5, pc} + + thumb_func_start sub_08089AE0 +sub_08089AE0: @ 0x08089AE0 + push {lr} + ldr r1, _08089AF8 @ =gLinkEntity + movs r2, #0xf + movs r3, #0xf + bl sub_080041A0 + cmp r0, #0 + beq _08089AF6 + ldr r1, _08089AFC @ =gUnk_03003F80 + movs r0, #1 + strb r0, [r1, #0x14] +_08089AF6: + pop {pc} + .align 2, 0 +_08089AF8: .4byte gLinkEntity +_08089AFC: .4byte gUnk_03003F80 + + thumb_func_start sub_08089B00 +sub_08089B00: @ 0x08089B00 + push {lr} + ldr r2, _08089B14 @ =gUnk_08120DD0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08089B14: .4byte gUnk_08120DD0 + + thumb_func_start sub_08089B18 +sub_08089B18: @ 0x08089B18 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r2, #1 + movs r6, #1 + strb r6, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r5, #4 + rsbs r5, r5, #0 + adds r0, r5, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08089B38 + strb r0, [r4, #0xe] +_08089B38: + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _08089B66 + cmp r0, #2 + bgt _08089B50 + cmp r0, #1 + beq _08089B5A + b _08089B96 +_08089B50: + cmp r0, #3 + beq _08089B72 + cmp r0, #4 + beq _08089B7C + b _08089B96 +_08089B5A: + ldrh r0, [r4, #0x32] + subs r0, #8 + strh r0, [r4, #0x32] + movs r0, #0x28 + strb r0, [r4, #0xe] + b _08089B96 +_08089B66: + movs r0, #0xf + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08004168 + b _08089B96 +_08089B72: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + b _08089B96 +_08089B7C: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _08089B96 + ldrb r1, [r4, #0x18] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r4, #0x18] + strb r6, [r4, #0xd] + b _08089B9E +_08089B96: + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_08004488 +_08089B9E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08089BA0 +sub_08089BA0: @ 0x08089BA0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_08004274 + ldrb r0, [r5, #0xa] + cmp r0, #4 + bhi _08089BD0 + lsls r0, r0, #2 + ldr r1, _08089BB8 @ =_08089BBC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08089BB8: .4byte _08089BBC +_08089BBC: @ jump table + .4byte _08089BD0 @ case 0 + .4byte _08089BD6 @ case 1 + .4byte _08089BD6 @ case 2 + .4byte _08089C4C @ case 3 + .4byte _08089C72 @ case 4 +_08089BD0: + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _08089CBA +_08089BD6: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08089CBA + ldrb r0, [r5, #0xa] + cmp r0, #2 + bne _08089C42 + ldr r0, [r5, #0x54] + ldrh r0, [r0, #6] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08089C48 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 + adds r0, r5, #0 + movs r1, #0 + movs r2, #0x10 + bl sub_0807AB44 + subs r4, #0x4f + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_0807AB44 + adds r0, r5, #0 + movs r1, #0x10 + movs r2, #0 + bl sub_0807AB44 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0807AB44 +_08089C42: + bl sub_0805E780 + b _08089CBA + .align 2, 0 +_08089C48: .4byte gUnk_03000BF0 +_08089C4C: + ldr r0, [r5, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08089C58 + bl sub_0805E780 +_08089C58: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08089C68 + bl sub_0805E780 +_08089C68: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FA24 + b _08089CBA +_08089C72: + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + adds r1, r0, #0 + ldrb r0, [r5, #0xd] + cmp r0, #0 + bne _08089C96 + cmp r1, #0 + bne _08089CBA + movs r0, #1 + strb r0, [r5, #0xd] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r5, #0x18] + b _08089CBA +_08089C96: + cmp r1, #0 + beq _08089CBA + movs r0, #0 + strb r0, [r5, #0xd] + ldrb r1, [r5, #0x18] + subs r0, #4 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_08004488 +_08089CBA: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08089CBC +sub_08089CBC: @ 0x08089CBC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _08089CDC + movs r0, #1 + strb r0, [r4, #0xc] + str r1, [r4, #0x34] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + movs r1, #9 + bl sub_08004260 +_08089CDC: + ldr r1, [r4, #0x50] + ldr r0, [r1, #0x34] + cmp r0, #0 + bne _08089CEA + bl sub_0805E780 + b _08089D02 +_08089CEA: + movs r2, #0x36 + ldrsh r0, [r1, r2] + movs r2, #0x90 + lsls r2, r2, #1 + subs r2, r2, r0 + adds r0, r1, #0 + adds r0, #0x7e + ldrh r3, [r0] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C +_08089D02: + pop {r4, pc} + + thumb_func_start sub_08089D04 +sub_08089D04: @ 0x08089D04 + push {lr} + ldr r2, _08089D18 @ =gUnk_08120DF4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08089D18: .4byte gUnk_08120DF4 + + thumb_func_start sub_08089D1C +sub_08089D1C: @ 0x08089D1C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0x19] + movs r4, #0x3f + adds r0, r4, #0 + ands r0, r1 + movs r6, #0x80 + orrs r0, r6 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x1b] + adds r0, r4, #0 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r5, #0x1b] + adds r0, r5, #0 + movs r1, #4 + bl sub_0805E3A0 + ldrb r0, [r5, #0xa] + cmp r0, #7 + bne _08089D90 + ldrb r1, [r5, #0x10] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08089D54 + b _08089F06 +_08089D54: + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _08089D74 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _08089D74 + bl sub_0807CBD0 + cmp r0, #0 + bne _08089D6A + b _08089F06 +_08089D6A: + ldrb r1, [r5, #0x1b] + adds r0, r4, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r5, #0x1b] +_08089D74: + ldr r4, _08089D8C @ =gUnk_08120E3C + ldrb r0, [r5, #0xb] + lsls r0, r0, #2 + adds r0, r0, r4 + ldrb r1, [r0] + adds r0, r5, #0 + bl sub_08004260 + ldrb r0, [r5, #0xb] + lsls r0, r0, #2 + adds r0, r0, r4 + b _08089DCE + .align 2, 0 +_08089D8C: .4byte gUnk_08120E3C +_08089D90: + cmp r0, #0 + beq _08089DAC + ldr r0, _08089DA8 @ =gUnk_08120E14 + ldrb r1, [r5, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r5, #0 + bl sub_08004260 + b _08089DC6 + .align 2, 0 +_08089DA8: .4byte gUnk_08120E14 +_08089DAC: + adds r0, r5, #0 + movs r1, #1 + movs r2, #2 + bl sub_080AE008 + ldr r0, _08089E08 @ =gUnk_08120E14 + ldrb r1, [r5, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r5, #0 + bl sub_080042AC +_08089DC6: + ldr r1, _08089E08 @ =gUnk_08120E14 + ldrb r0, [r5, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 +_08089DCE: + ldrb r0, [r0, #1] + adds r3, r5, #0 + adds r3, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + cmp r0, #1 + bge _08089DFC + b _08089F00 +_08089DFC: + cmp r0, #6 + ble _08089E0C + cmp r0, #7 + beq _08089E1C + b _08089F00 + .align 2, 0 +_08089E08: .4byte gUnk_08120E14 +_08089E0C: + adds r0, r5, #0 + adds r0, #0x60 + movs r2, #0 + movs r1, #0xe0 + lsls r1, r1, #1 + strh r1, [r0] + strb r2, [r5, #0xe] + b _08089F00 +_08089E1C: + ldrb r1, [r5, #0xb] + cmp r1, #3 + bgt _08089E2C + cmp r1, #2 + bge _08089EEC + cmp r1, #0 + beq _08089E32 + b _08089F00 +_08089E2C: + cmp r1, #4 + beq _08089EF8 + b _08089F00 +_08089E32: + movs r0, #0x10 + str r0, [r5, #0x6c] + strb r1, [r5, #0xe] +_08089E38: + movs r0, #0x2c + movs r1, #7 + movs r2, #1 + bl sub_080A2960 + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _08089EC8 + ldrh r0, [r5, #0x2e] + strh r0, [r1, #0x2e] + ldr r2, [r5, #0x54] + ldr r1, [r5, #0x6c] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + strh r0, [r2, #0x32] + movs r0, #3 + strb r0, [r5, #0xf] +_08089E5C: + ldrb r0, [r5, #0xe] + lsls r0, r0, #2 + ldr r1, _08089EE4 @ =gUnk_08120DFC + adds r4, r0, r1 + ldrb r2, [r4] + subs r2, #2 + movs r0, #0x2c + movs r1, #7 + bl sub_080A2960 + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _08089EAA + movs r0, #1 + ldrsb r0, [r4, r0] + ldrh r2, [r5, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + ldr r2, [r5, #0x54] + ldr r1, [r5, #0x6c] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + movs r1, #2 + ldrsb r1, [r4, r1] + subs r0, r0, r1 + strh r0, [r2, #0x32] + ldr r3, [r5, #0x54] + ldrb r2, [r4, #3] + movs r0, #1 + ands r2, r0 + lsls r2, r2, #6 + ldrb r0, [r3, #0x18] + movs r4, #0x41 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] +_08089EAA: + ldrb r0, [r5, #0xe] + adds r2, r0, #1 + strb r2, [r5, #0xe] + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _08089E5C + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _08089EC8 + strb r1, [r5, #0xe] +_08089EC8: + ldr r0, [r5, #0x6c] + adds r0, #0x38 + str r0, [r5, #0x6c] + ldrh r1, [r5, #0x32] + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + ldr r0, _08089EE8 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + cmp r1, r0 + bge _08089E38 + movs r0, #1 + strb r0, [r5, #0xe] + b _08089F00 + .align 2, 0 +_08089EE4: .4byte gUnk_08120DFC +_08089EE8: .4byte gUnk_03000BF0 +_08089EEC: + ldrb r0, [r5, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r5, #0x19] +_08089EF8: + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] +_08089F00: + adds r0, r5, #0 + bl sub_08089F08 +_08089F06: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08089F08 +sub_08089F08: @ 0x08089F08 + push {lr} + ldr r2, _08089F1C @ =gUnk_08120E50 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08089F1C: .4byte gUnk_08120E50 + + thumb_func_start sub_08089F20 +sub_08089F20: @ 0x08089F20 + push {lr} + ldr r2, _08089F34 @ =gUnk_08120E78 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08089F34: .4byte gUnk_08120E78 + + thumb_func_start sub_08089F38 +sub_08089F38: @ 0x08089F38 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08089F6C + ldrb r0, [r4, #0xe] + cmp r0, #1 + bhi _08089F5A + adds r0, #1 + strb r0, [r4, #0xe] + b _08089F6C +_08089F5A: + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + movs r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] +_08089F6C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08089F70 +sub_08089F70: @ 0x08089F70 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08089F8E + movs r0, #0x10 + strb r0, [r4, #0xe] + movs r0, #0xcc + lsls r0, r0, #1 + bl sub_080A3268 +_08089F8E: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08089FEC + movs r0, #0x2c + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08089FBE + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r4, #0x54] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] +_08089FBE: + movs r0, #0x2c + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08089FDC + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r4, #0x54] + ldrh r0, [r4, #0x32] + subs r0, #0x10 + strh r0, [r1, #0x32] +_08089FDC: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + strb r1, [r4, #0x18] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] +_08089FEC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08089FF0 +sub_08089FF0: @ 0x08089FF0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0808A00E + movs r0, #0x10 + strb r0, [r1, #0xe] + movs r0, #0xcc + lsls r0, r0, #1 + bl sub_080A3268 +_0808A00E: + pop {pc} + + thumb_func_start sub_0808A010 +sub_0808A010: @ 0x0808A010 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808A07E + ldrb r0, [r4, #0xe] + lsls r0, r0, #2 + ldr r1, _0808A0BC @ =gUnk_08120DFC + adds r5, r0, r1 + ldrb r1, [r5] + movs r0, #0x2c + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0808A06C + movs r0, #1 + ldrsb r0, [r5, r0] + ldrh r2, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + ldr r2, [r4, #0x54] + movs r1, #2 + ldrsb r1, [r5, r1] + ldrh r0, [r4, #0x32] + subs r0, r0, r1 + strh r0, [r2, #0x32] + ldr r3, [r4, #0x54] + ldrb r1, [r5, #3] + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r3, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] +_0808A06C: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #5 + bls _0808A07E + movs r0, #0 + strb r0, [r4, #0xe] +_0808A07E: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808A0BA + movs r0, #0x2c + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0808A0A8 + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r4, #0x54] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] +_0808A0A8: + ldrh r0, [r4, #0x32] + subs r0, #0x38 + strh r0, [r4, #0x32] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0808A0BA + adds r0, r4, #0 + bl sub_0805E7BC +_0808A0BA: + pop {r4, r5, pc} + .align 2, 0 +_0808A0BC: .4byte gUnk_08120DFC + + thumb_func_start sub_0808A0C0 +sub_0808A0C0: @ 0x0808A0C0 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0808A0D6 + adds r0, r2, #0 + bl sub_08004274 +_0808A0D6: + pop {pc} + + thumb_func_start nullsub_517 +nullsub_517: @ 0x0808A0D8 + bx lr + .align 2, 0 + + thumb_func_start sub_0808A0DC +sub_0808A0DC: @ 0x0808A0DC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + cmp r0, #1 + bne _0808A0EC + b _0808A202 +_0808A0EC: + cmp r0, #1 + bgt _0808A0F6 + cmp r0, #0 + beq _0808A120 + b _0808A202 +_0808A0F6: + cmp r0, #4 + ble _0808A0FC + b _0808A202 +_0808A0FC: + ldr r0, _0808A118 @ =gUnk_03003F80 + ldrb r0, [r0, #0x12] + cmp r0, #0x1e + bne _0808A1DA + ldr r1, _0808A11C @ =gLinkEntity + adds r0, r5, #0 + movs r2, #0 + movs r3, #8 + bl sub_080041A0 + cmp r0, #0 + beq _0808A1DC + b _0808A1B0 + .align 2, 0 +_0808A118: .4byte gUnk_03003F80 +_0808A11C: .4byte gLinkEntity +_0808A120: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0808A202 + ldr r4, _0808A1A8 @ =gUnk_03000BF0 + ldrh r0, [r4, #8] + str r0, [r5, #0x6c] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldrh r2, [r4, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + ldrh r2, [r4, #8] + subs r0, r0, r2 + lsrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + adds r0, #0x70 + strh r1, [r0] + adds r6, r4, #0 + mov r8, r3 + adds r4, r0, #0 + ldr r7, _0808A1AC @ =0x00004017 +_0808A154: + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldrh r0, [r6, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + mov r2, r8 + ands r1, r2 + ldrh r2, [r6, #8] + ldr r0, [r5, #0x6c] + subs r0, r0, r2 + lsrs r0, r0, #4 + mov r2, r8 + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4] + ldrh r1, [r4] + adds r0, r7, #0 + movs r2, #2 + bl sub_0800015E + ldrh r1, [r4] + adds r0, r7, #0 + movs r2, #1 + bl sub_0800015E + ldr r0, [r5, #0x6c] + adds r2, r0, #0 + adds r2, #0x10 + str r2, [r5, #0x6c] + ldrh r0, [r6, #8] + ldrh r1, [r6, #0x20] + adds r0, r0, r1 + cmp r2, r0 + bhs _0808A1A2 + movs r1, #0x32 + ldrsh r0, [r5, r1] + cmp r2, r0 + bls _0808A154 +_0808A1A2: + movs r0, #0 + strb r0, [r5, #0xe] + b _0808A202 + .align 2, 0 +_0808A1A8: .4byte gUnk_03000BF0 +_0808A1AC: .4byte 0x00004017 +_0808A1B0: + adds r3, r5, #0 + adds r3, #0x58 + ldrb r2, [r3] + ldrb r1, [r5, #0xb] + subs r1, #1 + lsls r0, r1, #1 + adds r0, r0, r1 + adds r0, #1 + cmp r2, r0 + bne _0808A1DE + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _0808A1DE + movs r0, #1 + strb r0, [r5, #0xe] + ldrb r1, [r3] + adds r1, #1 + adds r0, r5, #0 + bl sub_08004260 + b _0808A1DE +_0808A1DA: + movs r0, #0 +_0808A1DC: + strb r0, [r5, #0xe] +_0808A1DE: + adds r0, r5, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808A202 + ldrb r0, [r5, #0xb] + subs r0, #1 + lsls r1, r0, #1 + adds r1, r1, r0 + adds r1, #1 + adds r0, r5, #0 + bl sub_08004260 +_0808A202: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0808A208 +sub_0808A208: @ 0x0808A208 + push {lr} + ldr r2, _0808A21C @ =gUnk_08120E84 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808A21C: .4byte gUnk_08120E84 + + thumb_func_start sub_0808A220 +sub_0808A220: @ 0x0808A220 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x1b] + movs r6, #0x3f + adds r0, r6, #0 + ands r0, r1 + movs r5, #0x80 + orrs r0, r5 + strb r0, [r4, #0x1b] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0808A2E4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r7, #0x32 + ldrsh r0, [r4, r7] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r2, r4, #0 + adds r2, #0x70 + strh r1, [r2] + ldr r0, _0808A2E8 @ =0x00004017 + ldrh r1, [r2] + movs r2, #1 + bl sub_0800015E + movs r7, #1 + strb r7, [r4, #0xd] + adds r0, r4, #0 + movs r1, #0x15 + movs r2, #0 + movs r3, #0 + bl sub_080A2988 + adds r3, r0, #0 + cmp r3, #0 + beq _0808A2D4 + ldrh r0, [r4, #0x32] + adds r0, #0x38 + strh r0, [r3, #0x32] + ldrh r0, [r4, #0x12] + strh r0, [r3, #0x12] + adds r0, r4, #0 + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r3, #0 + adds r0, #0x60 + strh r1, [r0] + ldrb r1, [r4, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r3, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x1a] + adds r1, r3, #0 + adds r1, #0x58 + movs r0, #2 + strb r0, [r1] + movs r0, #0x80 + strb r0, [r3, #0xe] + strb r7, [r3, #0xa] + ldrb r1, [r3, #0x19] + adds r0, r6, #0 + ands r0, r1 + orrs r0, r5 + strb r0, [r3, #0x19] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r3, #0x1b] + adds r0, r6, #0 + ands r0, r1 + orrs r0, r5 + strb r0, [r3, #0x1b] +_0808A2D4: + adds r0, r4, #0 + movs r1, #0x2c + movs r2, #9 + movs r3, #0 + bl sub_080A2988 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808A2E4: .4byte gUnk_03000BF0 +_0808A2E8: .4byte 0x00004017 + + thumb_func_start nullsub_518 +nullsub_518: @ 0x0808A2EC + bx lr + .align 2, 0 + + thumb_func_start sub_0808A2F0 +sub_0808A2F0: @ 0x0808A2F0 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xd] + cmp r0, #0 + bne _0808A316 + movs r0, #1 + strb r0, [r5, #0xd] + ldrh r0, [r5, #0x32] + adds r0, #0x28 + strh r0, [r5, #0x32] + movs r2, #0x18 + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #0 + bl sub_0800029C + adds r1, r5, #0 + adds r1, #0x72 + strh r0, [r1] +_0808A316: + ldr r3, _0808A38C @ =gLinkEntity + ldrb r1, [r3, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r5, #0x1b] + movs r7, #0x3f + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x1b] + ldrb r1, [r3, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r5, #0x19] + adds r0, r7, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x19] + ldr r0, _0808A390 @ =gUnk_03003F80 + ldrb r0, [r0, #0x12] + cmp r0, #0x1e + bne _0808A39C + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r2, #0x18 + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #0 + bl sub_0800029C + ldr r3, _0808A394 @ =0x00004014 + cmp r0, r3 + beq _0808A3EC + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _0808A398 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r7 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + adds r2, #0x18 + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r7 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r3, #0 + movs r2, #1 + bl sub_0800015E + b _0808A3EC + .align 2, 0 +_0808A38C: .4byte gLinkEntity +_0808A390: .4byte gUnk_03003F80 +_0808A394: .4byte 0x00004014 +_0808A398: .4byte gUnk_03000BF0 +_0808A39C: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + adds r6, r5, #0 + adds r6, #0x72 + ldrh r4, [r6] + movs r2, #0x18 + rsbs r2, r2, #0 + adds r0, r5, #0 + movs r1, #0 + bl sub_0800029C + cmp r4, r0 + beq _0808A3EC + ldrh r0, [r6] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0808A3F0 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r7 + movs r4, #0x32 + ldrsh r2, [r5, r4] + ldrh r3, [r3, #8] + adds r3, #0x18 + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r7 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #1 + bl sub_0800015E +_0808A3EC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808A3F0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0808A3F4 +sub_0808A3F4: @ 0x0808A3F4 + push {lr} + ldr r2, _0808A408 @ =gUnk_08121060 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808A408: .4byte gUnk_08121060 + + thumb_func_start sub_0808A40C +sub_0808A40C: @ 0x0808A40C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0808A41E + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x28 + strb r0, [r4, #0xe] +_0808A41E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808A466 + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + movs r1, #0x40 + subs r1, r1, r0 + strb r1, [r4, #0xe] + movs r0, #0x2d + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _0808A466 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + bl sub_08000E50 + ldr r2, _0808A468 @ =gUnk_08121068 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x2e] +_0808A466: + pop {r4, r5, pc} + .align 2, 0 +_0808A468: .4byte gUnk_08121068 + + thumb_func_start sub_0808A46C +sub_0808A46C: @ 0x0808A46C + push {lr} + ldr r2, _0808A480 @ =gUnk_08121070 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808A480: .4byte gUnk_08121070 + + thumb_func_start sub_0808A484 +sub_0808A484: @ 0x0808A484 + push {r4, lr} + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + movs r1, #0x40 + strh r1, [r0, #0x24] + movs r1, #6 + strb r1, [r0, #0x15] + ldrb r3, [r0, #0x19] + movs r2, #0x3f + adds r1, r2, #0 + ands r1, r3 + movs r4, #0x40 + orrs r1, r4 + strb r1, [r0, #0x19] + movs r1, #0x29 + adds r1, r1, r0 + mov ip, r1 + ldrb r3, [r1] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r3 + mov r3, ip + strb r1, [r3] + ldrb r1, [r0, #0x1b] + ands r2, r1 + orrs r2, r4 + strb r2, [r0, #0x1b] + movs r1, #0x28 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808A4D0 +sub_0808A4D0: @ 0x0808A4D0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808A4F2 + adds r0, r4, #0 + bl sub_0805E7BC +_0808A4F2: + pop {r4, pc} + + thumb_func_start sub_0808A4F4 +sub_0808A4F4: @ 0x0808A4F4 + push {lr} + ldr r2, _0808A508 @ =gUnk_08121078 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808A508: .4byte gUnk_08121078 + + thumb_func_start sub_0808A50C +sub_0808A50C: @ 0x0808A50C + push {lr} + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + ldrb r1, [r0, #0xc] + adds r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x19] + movs r1, #0x3f + ands r1, r2 + movs r2, #0x80 + orrs r1, r2 + strb r1, [r0, #0x19] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + movs r2, #0x39 + rsbs r2, r2, #0 + ands r1, r2 + movs r2, #0x18 + orrs r1, r2 + strb r1, [r3] + bl sub_0808A644 + pop {pc} + + thumb_func_start sub_0808A550 +sub_0808A550: @ 0x0808A550 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + adds r1, r0, #0 + ldr r0, _0808A58C @ =0x0000401F + cmp r1, r0 + bhi _0808A5CC + subs r0, #3 + cmp r1, r0 + blo _0808A5CC + adds r0, r1, #0 + subs r0, #0x1c + lsls r1, r0, #1 + strb r1, [r4, #0x14] + lsls r1, r0, #3 + strb r1, [r4, #0x15] + lsls r0, r0, #0x19 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _0808A590 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + b _0808A598 + .align 2, 0 +_0808A58C: .4byte 0x0000401F +_0808A590: + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 +_0808A598: + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x74 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 + ldr r0, _0808A5C8 @ =0x0000010F + bl sub_08004488 + b _0808A5DE + .align 2, 0 +_0808A5C8: .4byte 0x0000010F +_0808A5CC: + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + beq _0808A5DE + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0808A5DE: + pop {r4, pc} + + thumb_func_start sub_0808A5E0 +sub_0808A5E0: @ 0x0808A5E0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0800445C + ldr r2, _0808A618 @ =gUnk_08121088 + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #0xf + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808A616 + movs r0, #0 + strb r0, [r4, #0xc] +_0808A616: + pop {r4, r5, pc} + .align 2, 0 +_0808A618: .4byte gUnk_08121088 + + thumb_func_start sub_0808A61C +sub_0808A61C: @ 0x0808A61C + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0808A634 + adds r0, r2, #0 + bl sub_08004274 + b _0808A640 +_0808A634: + adds r0, r2, #0 + adds r0, #0x29 + ldrb r1, [r0] + movs r2, #7 + orrs r1, r2 + strb r1, [r0] +_0808A640: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808A644 +sub_0808A644: @ 0x0808A644 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0808A6D0 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x74 + strh r1, [r5] + ldrh r0, [r5] + adds r6, r4, #0 + adds r6, #0x38 + ldrb r1, [r6] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x70 + strh r0, [r1] + ldrh r0, [r5] + ldrb r1, [r6] + bl sub_080002E0 + adds r1, r4, #0 + adds r1, #0x72 + strb r0, [r1] + ldrh r0, [r5] + ldrb r1, [r6] + bl sub_080002C8 + cmp r0, #0x19 + beq _0808A69E + cmp r0, #0xf0 + bne _0808A6E2 +_0808A69E: + ldr r0, _0808A6D4 @ =0x00004015 + ldrh r1, [r5] + ldrb r2, [r6] + bl sub_0800015E + movs r0, #3 + strb r0, [r4, #0xc] + adds r5, r4, #0 + adds r5, #0x86 + ldrh r0, [r5] + bl sub_0807CBE4 + cmp r0, #0 + bne _0808A6D8 + ldrh r0, [r5] + bl sub_0807CCC8 + movs r0, #0xcd + bl sub_080A3268 + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + b _0808A6EC + .align 2, 0 +_0808A6D0: .4byte gUnk_03000BF0 +_0808A6D4: .4byte 0x00004015 +_0808A6D8: + adds r0, r4, #0 + movs r1, #6 + bl sub_08004260 + b _0808A6EC +_0808A6E2: + ldr r0, _0808A6F0 @ =0x0000401B + ldrh r1, [r5] + ldrb r2, [r6] + bl sub_0800015E +_0808A6EC: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808A6F0: .4byte 0x0000401B + + thumb_func_start sub_0808A6F4 +sub_0808A6F4: @ 0x0808A6F4 + push {lr} + adds r2, r0, #0 + adds r0, #0x3d + movs r1, #0 + ldrsb r1, [r0, r1] + cmp r1, #0 + bne _0808A706 + adds r0, #0x33 + strh r1, [r0] +_0808A706: + ldr r0, _0808A718 @ =gUnk_08121178 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808A718: .4byte gUnk_08121178 + + thumb_func_start sub_0808A71C +sub_0808A71C: @ 0x0808A71C + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #1 + strb r5, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #0x8f + strb r0, [r1] + subs r1, #4 + movs r0, #0xa + strb r0, [r1] + ldr r0, _0808A75C @ =gUnk_08121180 + str r0, [r4, #0x48] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0808A764 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808A760 + strb r5, [r4, #0xa] + b _0808A76E + .align 2, 0 +_0808A75C: .4byte gUnk_08121180 +_0808A760: + strb r0, [r4, #0xa] + b _0808A76E +_0808A764: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 +_0808A76E: + adds r0, r4, #0 + bl sub_0808A7D8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808A778 +sub_0808A778: @ 0x0808A778 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808A7D0 + adds r1, r5, #0 + adds r1, #0x70 + ldrh r0, [r1] + cmp r0, #0 + bne _0808A7D0 + movs r0, #1 + strh r0, [r1] + ldrb r0, [r5, #0xa] + movs r1, #1 + eors r0, r1 + strb r0, [r5, #0xa] + adds r1, r5, #0 + adds r1, #0x3d + movs r0, #0xe8 + strb r0, [r1] + adds r0, r5, #0 + bl sub_0808A7D8 + adds r4, r5, #0 + adds r4, #0x86 + ldrh r0, [r4] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808A7C2 + ldrh r0, [r4] + bl sub_0807CD48 + b _0808A7C8 +_0808A7C2: + ldrh r0, [r4] + bl sub_0807CCC8 +_0808A7C8: + ldr r1, _0808A7D4 @ =0x00000117 + adds r0, r5, #0 + bl sub_0800449C +_0808A7D0: + pop {r4, r5, pc} + .align 2, 0 +_0808A7D4: .4byte 0x00000117 + + thumb_func_start sub_0808A7D8 +sub_0808A7D8: @ 0x0808A7D8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + beq _0808A818 + movs r0, #0xde + lsls r0, r0, #2 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0808A814 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 + b _0808A844 + .align 2, 0 +_0808A814: .4byte gUnk_03000BF0 +_0808A818: + ldr r0, _0808A848 @ =0x00000377 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0808A84C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 +_0808A844: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808A848: .4byte 0x00000377 +_0808A84C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0808A850 +sub_0808A850: @ 0x0808A850 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0808A86C @ =gUnk_08121188 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08080CB4 + pop {r4, pc} + .align 2, 0 +_0808A86C: .4byte gUnk_08121188 + + thumb_func_start sub_0808A870 +sub_0808A870: @ 0x0808A870 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _0808A8BE + cmp r0, #1 + bgt _0808A884 + cmp r0, #0 + beq _0808A896 + b _0808A8C4 +_0808A884: + cmp r0, #3 + bgt _0808A8C4 + adds r0, r5, #0 + bl sub_0808A968 + adds r0, r5, #0 + bl sub_0808A8E0 + b _0808A8C4 +_0808A896: + adds r0, r5, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_0808094C + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_0806F798 + lsls r0, r0, #1 + adds r0, #4 + adds r4, r4, r0 + str r4, [r5, #0x6c] + ldrh r1, [r4] + adds r0, r5, #0 + adds r0, #0x68 + strh r1, [r0] + movs r0, #1 + strb r0, [r5, #0xc] + b _0808A8C4 +_0808A8BE: + adds r0, r5, #0 + bl sub_0808A968 +_0808A8C4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808A8C8 +sub_0808A8C8: @ 0x0808A8C8 + push {lr} + adds r2, r0, #0 + adds r0, #0x68 + ldr r1, [r2, #0x6c] + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _0808A8DE + adds r0, r2, #0 + bl sub_0808A968 +_0808A8DE: + pop {pc} + + thumb_func_start sub_0808A8E0 +sub_0808A8E0: @ 0x0808A8E0 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xa] + cmp r2, #0 + beq _0808A8F0 + cmp r2, #1 + beq _0808A930 + b _0808A954 +_0808A8F0: + ldr r0, [r4, #0x70] + cmp r0, #0 + beq _0808A930 + ldr r3, [r4, #0x20] + cmp r3, #0 + bge _0808A926 + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0808A90C + str r2, [r4, #0x70] + b _0808A926 +_0808A90C: + ldr r0, _0808A918 @ =0xFFFFC000 + cmp r3, r0 + bge _0808A920 + ldr r0, _0808A91C @ =0xFFFFFC00 + b _0808A924 + .align 2, 0 +_0808A918: .4byte 0xFFFFC000 +_0808A91C: .4byte 0xFFFFFC00 +_0808A920: + movs r0, #0x80 + lsls r0, r0, #3 +_0808A924: + str r0, [r4, #0x70] +_0808A926: + ldr r1, [r4, #0x70] + adds r0, r4, #0 + bl sub_08003FC4 + b _0808A962 +_0808A930: + ldr r2, _0808A964 @ =gUnk_08121194 + ldrb r0, [r4, #0xf] + adds r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x1b + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08017850 + cmp r0, #0 + beq _0808A962 +_0808A954: + ldrb r1, [r4, #0xb] + movs r0, #0x5c + movs r2, #0 + bl sub_080A7C00 + bl sub_0805E780 +_0808A962: + pop {r4, pc} + .align 2, 0 +_0808A964: .4byte gUnk_08121194 + + thumb_func_start sub_0808A968 +sub_0808A968: @ 0x0808A968 + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x22 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xa0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r2, #0x13 + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0808A9C0 @ =gUnk_08121C58 + str r0, [r4, #0x48] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + movs r0, #0xa0 + lsls r0, r0, #6 + str r0, [r4, #0x70] + pop {r4, pc} + .align 2, 0 +_0808A9C0: .4byte gUnk_08121C58 + + thumb_func_start sub_0808A9C4 +sub_0808A9C4: @ 0x0808A9C4 + push {lr} + ldr r2, _0808A9D8 @ =gUnk_0812119C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808A9D8: .4byte gUnk_0812119C + + thumb_func_start sub_0808A9DC +sub_0808A9DC: @ 0x0808A9DC + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r1, [r0, #0xa] + strb r1, [r0, #0x1e] + ldrb r1, [r0, #0x19] + movs r2, #0xc0 + orrs r1, r2 + strb r1, [r0, #0x19] + adds r0, #0x29 + ldrb r1, [r0] + movs r2, #7 + orrs r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start nullsub_519 +nullsub_519: @ 0x0808A9F8 + bx lr + .align 2, 0 + + thumb_func_start sub_0808A9FC +sub_0808A9FC: @ 0x0808A9FC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0808AA18 @ =gUnk_081211A4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r4, #0x41 + movs r0, #0 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_0808AA18: .4byte gUnk_081211A4 + + thumb_func_start sub_0808AA1C +sub_0808AA1C: @ 0x0808AA1C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r4, #0 + movs r6, #1 + strb r6, [r5, #0xc] + bl sub_08052660 + cmp r0, #0 + bne _0808AA36 + adds r0, r5, #0 + movs r1, #0 + bl sub_0801D2B4 +_0808AA36: + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _0808AACC + cmp r0, #1 + bgt _0808AA46 + cmp r0, #0 + beq _0808AA4C + b _0808AB5E +_0808AA46: + cmp r0, #2 + beq _0808AB20 + b _0808AB5E +_0808AA4C: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0808AAC0 @ =gUnk_080FD224 + str r0, [r5, #0x48] + strb r6, [r5, #0x16] + ldr r0, _0808AAC4 @ =0x00004022 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0808AAC8 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r7, #0x32 + ldrsh r2, [r5, r7] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + adds r0, r5, #0 + adds r0, #0x45 + strb r6, [r0] + adds r1, r5, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #0x6e + strb r0, [r1] + subs r1, #4 + movs r0, #0xe + strb r0, [r1] + strb r6, [r5, #0x1c] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #4 + strb r0, [r1] + b _0808AB5E + .align 2, 0 +_0808AAC0: .4byte gUnk_080FD224 +_0808AAC4: .4byte 0x00004022 +_0808AAC8: .4byte gUnk_03000BF0 +_0808AACC: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0808AB10 + ldr r0, _0808AB1C @ =gUnk_080FD224 + str r0, [r5, #0x48] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r0, r5, #0 + adds r0, #0x45 + strb r6, [r0] + adds r1, r5, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #0x6e + strb r0, [r1] + subs r1, #4 + movs r0, #4 + strb r0, [r1] + strb r6, [r5, #0x1c] + movs r0, #3 + strb r0, [r5, #0xc] +_0808AB10: + ldrb r1, [r5, #0x14] + adds r1, #9 + adds r0, r5, #0 + bl sub_08004260 + b _0808AB5E + .align 2, 0 +_0808AB1C: .4byte gUnk_080FD224 +_0808AB20: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r5, #0x19] + ldrb r1, [r5, #0x14] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0808AB52 + movs r0, #0x80 + lsls r0, r0, #2 + str r0, [r5, #0x74] + movs r0, #0x80 + lsls r0, r0, #1 + str r0, [r5, #0x78] + b _0808AB5E +_0808AB52: + movs r0, #0x80 + lsls r0, r0, #2 + str r0, [r5, #0x78] + movs r0, #0x80 + lsls r0, r0, #1 + str r0, [r5, #0x74] +_0808AB5E: + adds r0, r5, #0 + bl sub_0808AB68 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0808AB68 +sub_0808AB68: @ 0x0808AB68 + push {lr} + ldr r2, _0808AB7C @ =gUnk_081211B4 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808AB7C: .4byte gUnk_081211B4 + + thumb_func_start sub_0808AB80 +sub_0808AB80: @ 0x0808AB80 + push {lr} + ldr r2, _0808AB94 @ =gUnk_081211C0 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808AB94: .4byte gUnk_081211C0 + + thumb_func_start sub_0808AB98 +sub_0808AB98: @ 0x0808AB98 + push {lr} + adds r3, r0, #0 + ldr r2, [r3, #0x50] + ldrh r1, [r2, #0xc] + ldr r0, _0808ABB0 @ =0x00000201 + cmp r1, r0 + bne _0808ABB4 + movs r0, #0 + str r0, [r2, #0x54] + bl sub_0805E780 + b _0808ABC2 + .align 2, 0 +_0808ABB0: .4byte 0x00000201 +_0808ABB4: + ldrb r0, [r2, #0xc] + cmp r0, #2 + bne _0808ABC2 + adds r0, r3, #0 + movs r1, #0 + bl sub_0808B168 +_0808ABC2: + pop {pc} + + thumb_func_start sub_0808ABC4 +sub_0808ABC4: @ 0x0808ABC4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0xc] + ldr r0, _0808AC38 @ =0x00000201 + cmp r1, r0 + bne _0808ABD6 + bl sub_0805E780 +_0808ABD6: + ldr r0, [r4, #0x54] + ldr r1, [r4, #0x50] + bl sub_0808B1F0 + adds r2, r0, #0 + cmp r2, #7 + bhi _0808ABE6 + movs r2, #0 +_0808ABE6: + ldrb r3, [r4, #0x14] + lsls r1, r3, #2 + ldr r0, _0808AC3C @ =gUnk_081211CC + adds r5, r1, r0 + cmp r2, #0x1f + bhi _0808AC5A + cmp r2, #0 + beq _0808ABF8 + subs r2, #6 +_0808ABF8: + ldrh r0, [r5] + str r0, [r4, #0x70] + ldr r1, [r4, #0x50] + movs r0, #2 + ldrsb r0, [r5, r0] + ldrh r3, [r1, #0x2e] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + movs r0, #3 + ldrsb r0, [r5, r0] + ldrh r1, [r1, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrb r1, [r4, #0x14] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808AC40 + lsls r1, r2, #4 + movs r0, #0x80 + lsls r0, r0, #2 + subs r0, r0, r1 + str r0, [r4, #0x74] + lsls r0, r2, #3 + movs r1, #0x90 + lsls r1, r1, #1 + adds r0, r0, r1 + str r0, [r4, #0x78] + movs r0, #0xf + strb r0, [r4, #0x1e] + b _0808ACDE + .align 2, 0 +_0808AC38: .4byte 0x00000201 +_0808AC3C: .4byte gUnk_081211CC +_0808AC40: + lsls r1, r2, #4 + movs r0, #0x80 + lsls r0, r0, #2 + subs r0, r0, r1 + str r0, [r4, #0x78] + lsls r0, r2, #3 + movs r3, #0x90 + lsls r3, r3, #1 + adds r0, r0, r3 + str r0, [r4, #0x74] + movs r0, #0x14 + strb r0, [r4, #0x1e] + b _0808ACDE +_0808AC5A: + movs r0, #1 + ands r3, r0 + cmp r3, #0 + beq _0808AC9E + adds r1, r2, #0 + subs r1, #0x20 + lsls r1, r1, #2 + adds r0, #0xff + subs r0, r0, r1 + str r0, [r4, #0x74] + lsls r0, r2, #3 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + str r0, [r4, #0x78] + movs r0, #0x10 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808AC92 + ldr r0, [r4, #0x50] + lsrs r1, r2, #1 + ldrh r0, [r0, #0x2e] + subs r0, r0, r1 + strh r0, [r4, #0x2e] + b _0808ACDE +_0808AC92: + ldr r1, [r4, #0x50] + lsrs r0, r2, #1 + ldrh r1, [r1, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + b _0808ACDE +_0808AC9E: + adds r1, r2, #0 + subs r1, #0x20 + lsls r1, r1, #2 + movs r0, #0x80 + lsls r0, r0, #1 + subs r0, r0, r1 + str r0, [r4, #0x78] + lsls r0, r2, #3 + movs r3, #0xa0 + lsls r3, r3, #1 + adds r0, r0, r3 + str r0, [r4, #0x74] + movs r0, #0x15 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808ACCE + ldr r0, [r4, #0x50] + lsrs r1, r2, #1 + ldrh r0, [r0, #0x32] + adds r1, r1, r0 + b _0808ACD6 +_0808ACCE: + ldr r0, [r4, #0x50] + lsrs r2, r2, #1 + ldrh r1, [r0, #0x32] + subs r1, r1, r2 +_0808ACD6: + movs r0, #3 + ldrsb r0, [r5, r0] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_0808ACDE: + ldr r1, [r4, #0x74] + ldr r2, [r4, #0x78] + ldr r3, [r4, #0x70] + adds r0, r4, #0 + bl sub_0805EC9C + pop {r4, r5, pc} + + thumb_func_start sub_0808ACEC +sub_0808ACEC: @ 0x0808ACEC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0 + beq _0808AD00 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0808AD00: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + subs r0, #4 + cmp r0, #0x12 + bhi _0808AD92 + lsls r0, r0, #2 + ldr r1, _0808AD1C @ =_0808AD20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808AD1C: .4byte _0808AD20 +_0808AD20: @ jump table + .4byte _0808AD6C @ case 0 + .4byte _0808AD6C @ case 1 + .4byte _0808AD6C @ case 2 + .4byte _0808AD92 @ case 3 + .4byte _0808AD6C @ case 4 + .4byte _0808AD6C @ case 5 + .4byte _0808AD6C @ case 6 + .4byte _0808AD6C @ case 7 + .4byte _0808AD6C @ case 8 + .4byte _0808AD6C @ case 9 + .4byte _0808AD92 @ case 10 + .4byte _0808AD92 @ case 11 + .4byte _0808AD6C @ case 12 + .4byte _0808AD6C @ case 13 + .4byte _0808AD6C @ case 14 + .4byte _0808AD88 @ case 15 + .4byte _0808AD6C @ case 16 + .4byte _0808AD92 @ case 17 + .4byte _0808AD6C @ case 18 +_0808AD6C: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + bl sub_0806F5A4 + strb r0, [r4, #0x14] + movs r0, #2 + strb r0, [r4, #0xd] + strb r0, [r4, #0xe] + b _0808AD9E +_0808AD88: + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _0808AD9E +_0808AD92: + movs r0, #0 + strb r0, [r4, #0xf] + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_08078930 +_0808AD9E: + pop {r4, pc} + + thumb_func_start sub_0808ADA0 +sub_0808ADA0: @ 0x0808ADA0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x54] + bl sub_0808B1F0 + cmp r0, #7 + bls _0808ADB4 + ldr r1, [r4, #0x54] + cmp r1, #0 + bne _0808ADE2 +_0808ADB4: + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r2, #2 + movs r0, #2 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0x14] + eors r0, r2 + strb r0, [r4, #0x14] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + b _0808ADEE +_0808ADE2: + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1, #0x24] + ldr r0, [r4, #0x54] + bl sub_0806F69C +_0808ADEE: + pop {r4, pc} + + thumb_func_start sub_0808ADF0 +sub_0808ADF0: @ 0x0808ADF0 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0x14] + adds r1, r2, #0 + adds r1, #0xd + adds r0, #0x58 + ldrb r0, [r0] + cmp r1, r0 + bne _0808AE26 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808AE1E + movs r0, #0 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + b _0808AE80 +_0808AE1E: + adds r0, r4, #0 + bl sub_08004274 + b _0808AE80 +_0808AE26: + adds r1, r2, #1 + cmp r1, r0 + beq _0808AE54 + adds r0, r4, #0 + bl sub_08004260 + ldrb r0, [r4, #0x14] + cmp r0, #3 + bne _0808AE42 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _0808AE48 +_0808AE42: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 +_0808AE48: + strb r0, [r4, #0x18] + movs r0, #0x97 + lsls r0, r0, #1 + bl sub_080A3268 + b _0808AE80 +_0808AE54: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808AE80 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0808AE80 + ldrb r1, [r4, #0x14] + adds r1, #0xd + adds r0, r4, #0 + bl sub_08004260 +_0808AE80: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808AE84 +sub_0808AE84: @ 0x0808AE84 + push {lr} + adds r2, r0, #0 + ldr r0, _0808AEA8 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _0808AE94 + movs r0, #6 + strb r0, [r2, #0xd] +_0808AE94: + ldr r0, _0808AEAC @ =gUnk_081211DC + ldrb r1, [r2, #0xd] + subs r1, #5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808AEA8: .4byte gUnk_03003F80 +_0808AEAC: .4byte gUnk_081211DC + + thumb_func_start sub_0808AEB0 +sub_0808AEB0: @ 0x0808AEB0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0808AF68 + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0808B1F0 + adds r6, r0, #0 + ldr r5, _0808AF10 @ =gUnk_03003F80 + adds r2, r5, #0 + adds r2, #0x90 + ldr r1, _0808AF14 @ =gUnk_081211E4 + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r2] + ldrh r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _0808AF20 + adds r0, r4, #0 + bl sub_08004274 + cmp r6, #0x3f + bhi _0808AF08 + ldr r0, _0808AF18 @ =gLinkEntity + ldrb r2, [r4, #0x15] + movs r1, #0x40 + bl sub_080044AE + ldr r0, [r4, #0x7c] + subs r0, #1 + str r0, [r4, #0x7c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0808AF08 + movs r0, #4 + str r0, [r4, #0x7c] + ldr r0, _0808AF1C @ =0x0000012F + bl sub_080A3268 +_0808AF08: + movs r0, #1 + strb r0, [r4, #0xf] + b _0808AFD0 + .align 2, 0 +_0808AF10: .4byte gUnk_03003F80 +_0808AF14: .4byte gUnk_081211E4 +_0808AF18: .4byte gLinkEntity +_0808AF1C: .4byte 0x0000012F +_0808AF20: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0808AFD0 + ldr r2, _0808AF64 @ =gLinkEntity + ldrb r0, [r2, #0xc] + cmp r0, #1 + bne _0808AFD0 + adds r0, r5, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _0808AFD0 + movs r0, #0x1b + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x38 + strb r6, [r0] + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + adds r1, r5, #0 + adds r1, #0x39 + strb r0, [r1] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0808B1F0 + adds r1, r5, #0 + adds r1, #0x3a + strb r0, [r1] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _0808AFD0 + .align 2, 0 +_0808AF64: .4byte gLinkEntity +_0808AF68: + movs r6, #1 + strb r6, [r4, #0xe] + str r6, [r4, #0x7c] + ldr r5, _0808AFC8 @ =gLinkEntity + ldrb r0, [r5, #0x14] + lsrs r0, r0, #1 + movs r1, #2 + eors r0, r1 + strb r0, [r4, #0x14] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r5, #0x18] + movs r1, #0x40 + ands r1, r0 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x14] + adds r1, #5 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #0 + bl sub_0808B21C + cmp r0, #0 + beq _0808AFB6 + ldr r0, [r4, #0x54] + movs r1, #0 + bl sub_0808B168 +_0808AFB6: + ldrb r1, [r4, #0x14] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _0808AFCC + ldrh r0, [r4, #0x32] + strh r0, [r5, #0x32] + b _0808AFD0 + .align 2, 0 +_0808AFC8: .4byte gLinkEntity +_0808AFCC: + ldrh r0, [r4, #0x2e] + strh r0, [r5, #0x2e] +_0808AFD0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808AFD4 +sub_0808AFD4: @ 0x0808AFD4 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + strb r1, [r0, #0xd] + ldr r2, [r0, #0x54] + ldrb r0, [r0, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r2, #0x15] + movs r0, #0x98 + lsls r0, r0, #1 + bl sub_080A3268 + pop {pc} + + thumb_func_start sub_0808AFF0 +sub_0808AFF0: @ 0x0808AFF0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r1, _0808B054 @ =gUnk_081211EC + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r0, _0808B058 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _0808B01E + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _0808B050 +_0808B01E: + ldrb r5, [r4, #0xa] + cmp r5, #1 + bne _0808B050 + ldr r0, [r4, #0x50] + strb r5, [r0, #0xc] + ldr r0, [r4, #0x50] + strb r5, [r0, #0xd] + ldr r2, [r4, #0x50] + ldrb r0, [r2, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r4, #0x15] + ldrb r3, [r2, #0x10] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r3 + strb r0, [r2, #0x10] + ldrb r0, [r4, #0x10] + ands r1, r0 + strb r1, [r4, #0x10] + strb r5, [r4, #0xc] + movs r0, #0x98 + lsls r0, r0, #1 + bl sub_080A3268 +_0808B050: + pop {r4, r5, pc} + .align 2, 0 +_0808B054: .4byte gUnk_081211EC +_0808B058: .4byte gUnk_03003F80 + + thumb_func_start sub_0808B05C +sub_0808B05C: @ 0x0808B05C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0808B0AE + ldr r2, _0808B0B8 @ =gLinkEntity + ldrb r0, [r2, #0x14] + lsrs r0, r0, #1 + movs r1, #2 + eors r0, r1 + strb r0, [r4, #0x14] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + ldrb r0, [r2, #0x18] + movs r1, #0x40 + ands r1, r0 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x14] + adds r1, #5 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #1 + bl sub_0808B21C + cmp r0, #0 + beq _0808B0AE + ldr r0, [r4, #0x54] + movs r1, #1 + bl sub_0808B168 +_0808B0AE: + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + pop {r4, pc} + .align 2, 0 +_0808B0B8: .4byte gLinkEntity + + thumb_func_start sub_0808B0BC +sub_0808B0BC: @ 0x0808B0BC + push {r4, r5, r6, r7, lr} + sub sp, #0x88 + adds r5, r0, #0 + ldr r1, [r5, #0x50] + bl sub_0808B1F0 + adds r7, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + beq _0808B0D6 + cmp r0, #1 + beq _0808B0DE + b _0808B162 +_0808B0D6: + adds r0, r5, #0 + bl sub_08004274 + b _0808B162 +_0808B0DE: + ldr r6, _0808B148 @ =gLinkEntity + ldrb r0, [r6, #0x14] + movs r1, #0xe + ands r1, r0 + ldr r0, _0808B14C @ =gUnk_08126EE4 + adds r1, r1, r0 + mov r2, sp + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r6, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r6, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + mov r0, sp + adds r1, r5, #0 + movs r2, #7 + movs r3, #7 + bl sub_0800419C + cmp r0, #0 + beq _0808B154 + ldrb r0, [r6, #0xc] + cmp r0, #1 + bne _0808B162 + ldr r4, _0808B150 @ =gUnk_03003F80 + adds r0, r4, #0 + adds r0, #0x26 + ldrb r0, [r0] + cmp r0, #0 + bne _0808B162 + movs r0, #0x1b + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x38 + strb r7, [r0] + ldrb r0, [r5, #0x15] + movs r1, #0x10 + eors r0, r1 + adds r1, r4, #0 + adds r1, #0x39 + strb r0, [r1] + ldr r0, [r5, #0x50] + adds r1, r6, #0 + bl sub_0808B1F0 + adds r1, r4, #0 + adds r1, #0x3a + strb r0, [r1] + b _0808B162 + .align 2, 0 +_0808B148: .4byte gLinkEntity +_0808B14C: .4byte gUnk_08126EE4 +_0808B150: .4byte gUnk_03003F80 +_0808B154: + movs r0, #0x40 + strh r0, [r5, #0x24] + cmp r7, #0x3f + bhi _0808B162 + adds r0, r5, #0 + bl sub_0806F69C +_0808B162: + add sp, #0x88 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0808B168 +sub_0808B168: @ 0x0808B168 + push {r4, r5, lr} + adds r3, r0, #0 + cmp r1, #0 + beq _0808B188 + ldrb r0, [r3, #0x14] + movs r1, #2 + eors r1, r0 + lsls r1, r1, #1 + ldr r0, _0808B184 @ =gUnk_081211F4 + adds r2, r1, r0 + adds r1, r2, #1 + ldr r4, [r3, #0x50] + adds r5, r4, #0 + b _0808B1CE + .align 2, 0 +_0808B184: .4byte gUnk_081211F4 +_0808B188: + ldrb r1, [r3, #0x14] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808B1B8 + ldr r5, _0808B1AC @ =gLinkEntity + ldr r4, [r3, #0x50] + ldrb r1, [r3, #0x14] + lsls r2, r1, #1 + ldr r0, _0808B1B0 @ =gUnk_081211FC + adds r2, r2, r0 + movs r0, #2 + eors r1, r0 + lsls r1, r1, #1 + ldr r0, _0808B1B4 @ =gUnk_081211F5 + adds r1, r1, r0 + b _0808B1CE + .align 2, 0 +_0808B1AC: .4byte gLinkEntity +_0808B1B0: .4byte gUnk_081211FC +_0808B1B4: .4byte gUnk_081211F5 +_0808B1B8: + ldr r5, [r3, #0x50] + ldr r4, _0808B1E4 @ =gLinkEntity + movs r0, #2 + eors r0, r1 + lsls r0, r0, #1 + ldr r1, _0808B1E8 @ =gUnk_081211F4 + adds r2, r0, r1 + ldrb r0, [r3, #0x14] + lsls r0, r0, #1 + ldr r1, _0808B1EC @ =gUnk_081211FD + adds r1, r0, r1 +_0808B1CE: + movs r0, #0 + ldrsb r0, [r2, r0] + ldrh r5, [r5, #0x2e] + adds r0, r0, r5 + strh r0, [r3, #0x2e] + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r4, [r4, #0x32] + adds r0, r0, r4 + strh r0, [r3, #0x32] + pop {r4, r5, pc} + .align 2, 0 +_0808B1E4: .4byte gLinkEntity +_0808B1E8: .4byte gUnk_081211F4 +_0808B1EC: .4byte gUnk_081211FD + + thumb_func_start sub_0808B1F0 +sub_0808B1F0: @ 0x0808B1F0 + push {lr} + adds r2, r0, #0 + adds r3, r1, #0 + ldrb r1, [r2, #0x14] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808B20A + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r2, #0x2e + ldrsh r0, [r3, r2] + b _0808B212 +_0808B20A: + movs r0, #0x32 + ldrsh r1, [r2, r0] + movs r2, #0x32 + ldrsh r0, [r3, r2] +_0808B212: + subs r0, r1, r0 + cmp r0, #0 + bge _0808B21A + rsbs r0, r0, #0 +_0808B21A: + pop {pc} + + thumb_func_start sub_0808B21C +sub_0808B21C: @ 0x0808B21C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #6 + orrs r1, r0 + strb r1, [r2] + adds r0, r4, #0 + movs r1, #0x32 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _0808B26E + ldrb r0, [r4, #0x14] + strb r0, [r1, #0x14] + ldr r1, [r4, #0x54] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] + ldr r3, [r4, #0x54] + ldrb r0, [r4, #0x18] + movs r1, #0x40 + ands r1, r0 + ldrb r2, [r3, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] + ldr r0, [r4, #0x54] + strb r5, [r0, #0xb] +_0808B26E: + adds r0, r4, #0 + movs r1, #0x32 + movs r2, #2 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r4, #0x50] + cmp r1, #0 + bne _0808B286 + movs r0, #0 + b _0808B292 +_0808B286: + ldrb r0, [r4, #0x14] + strb r0, [r1, #0x14] + ldr r1, [r4, #0x50] + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] + movs r0, #1 +_0808B292: + pop {r4, r5, pc} + + thumb_func_start sub_0808B294 +sub_0808B294: @ 0x0808B294 + push {lr} + ldr r2, _0808B2A8 @ =gUnk_08121300 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808B2A8: .4byte gUnk_08121300 + + thumb_func_start sub_0808B2AC +sub_0808B2AC: @ 0x0808B2AC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0808B2C4 + adds r0, r4, #0 + bl sub_0808B41C + adds r0, r4, #0 + bl sub_0808B3AC + b _0808B2CA +_0808B2C4: + adds r0, r4, #0 + bl sub_0808B42C +_0808B2CA: + pop {r4, pc} + + thumb_func_start sub_0808B2CC +sub_0808B2CC: @ 0x0808B2CC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0808B2E6 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808B31C + b _0808B2F4 +_0808B2E6: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _0808B31C +_0808B2F4: + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x70 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldr r0, _0808B320 @ =0x000001A5 + bl sub_08004488 +_0808B31C: + pop {r4, pc} + .align 2, 0 +_0808B320: .4byte 0x000001A5 + + thumb_func_start sub_0808B324 +sub_0808B324: @ 0x0808B324 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808B340 + adds r0, r4, #0 + bl sub_0808B42C +_0808B340: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808B344 +sub_0808B344: @ 0x0808B344 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0808B35E + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _0808B384 + b _0808B36C +_0808B35E: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808B384 +_0808B36C: + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0808B3AC + ldr r0, _0808B388 @ =0x000001A5 + bl sub_08004488 +_0808B384: + pop {r4, pc} + .align 2, 0 +_0808B388: .4byte 0x000001A5 + + thumb_func_start sub_0808B38C +sub_0808B38C: @ 0x0808B38C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808B3A8 + adds r0, r4, #0 + bl sub_0808B41C +_0808B3A8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808B3AC +sub_0808B3AC: @ 0x0808B3AC + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _0808B414 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r6, #0 + adds r4, #0x70 + strh r1, [r4] + ldrh r0, [r4] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x72 + strh r0, [r1] + ldrh r0, [r4] + ldrb r1, [r5] + bl sub_080002E0 + adds r1, r6, #0 + adds r1, #0x74 + strb r0, [r1] + ldr r0, _0808B418 @ =0x0000400B + ldrh r1, [r4] + ldrb r2, [r5] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0808B414: .4byte gUnk_03000BF0 +_0808B418: .4byte 0x0000400B + + thumb_func_start sub_0808B41C +sub_0808B41C: @ 0x0808B41C + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808B42C +sub_0808B42C: @ 0x0808B42C + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r2, #7 + orrs r1, r2 + strb r1, [r3] + movs r1, #1 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808B448 +sub_0808B448: @ 0x0808B448 + push {lr} + adds r2, r0, #0 + adds r0, #0x70 + ldrb r0, [r0] + cmp r0, #0 + bne _0808B46C + ldr r0, _0808B468 @ =gUnk_08121368 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _0808B472 + .align 2, 0 +_0808B468: .4byte gUnk_08121368 +_0808B46C: + adds r0, r2, #0 + bl sub_0808B73C +_0808B472: + pop {pc} + + thumb_func_start sub_0808B474 +sub_0808B474: @ 0x0808B474 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xf] + ldr r1, _0808B4D8 @ =gUnk_08121380 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + movs r0, #0xf + ands r1, r0 + ldrb r3, [r4, #0x1a] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x1a] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r3] + ldr r0, _0808B4DC @ =gUnk_080FD168 + str r0, [r4, #0x48] + ldrb r0, [r4, #0x11] + ands r2, r0 + movs r0, #3 + orrs r2, r0 + strb r2, [r4, #0x11] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808B4E0 + adds r0, r4, #0 + bl sub_0808B830 + b _0808B4F8 + .align 2, 0 +_0808B4D8: .4byte gUnk_08121380 +_0808B4DC: .4byte gUnk_080FD168 +_0808B4E0: + bl sub_08052660 + cmp r0, #0 + beq _0808B4F8 + ldrb r0, [r4, #0xa] + bl sub_0807CAEC + cmp r0, #0 + beq _0808B4F8 + adds r0, r4, #0 + bl sub_0808B830 +_0808B4F8: + adds r0, r4, #0 + bl sub_0808B7C8 + cmp r0, #0 + beq _0808B528 + movs r2, #4 + strb r2, [r4, #0xc] + movs r0, #0x60 + strb r0, [r4, #0xf] + ldr r1, _0808B52C @ =gLinkEntity + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] + strb r2, [r1, #0x14] + movs r0, #0x89 + lsls r0, r0, #1 + bl sub_08004488 + ldrb r1, [r4, #0xf] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_0805E4E0 +_0808B528: + pop {r4, pc} + .align 2, 0 +_0808B52C: .4byte gLinkEntity + + thumb_func_start sub_0808B530 +sub_0808B530: @ 0x0808B530 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808B562 + adds r0, r4, #0 + bl sub_0808B830 + bl sub_08052660 + cmp r0, #0 + beq _0808B554 + ldrb r0, [r4, #0xa] + bl sub_0807CAC8 +_0808B554: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xf] + adds r0, #0xd6 + bl sub_08004488 +_0808B562: + pop {r4, pc} + + thumb_func_start sub_0808B564 +sub_0808B564: @ 0x0808B564 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xf] + subs r1, r0, #1 + strb r1, [r3, #0xf] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0808B57A + movs r0, #3 + strb r0, [r3, #0xc] + b _0808B58E +_0808B57A: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x19 + movs r1, #1 + bics r1, r0 + ldrb r2, [r3, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] +_0808B58E: + pop {pc} + + thumb_func_start sub_0808B590 +sub_0808B590: @ 0x0808B590 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0808B7C8 + cmp r0, #0 + beq _0808B5E4 + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0808B5E6 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0x60 + strb r0, [r4, #0xf] + bl sub_08077B20 + ldr r1, _0808B5DC @ =gLinkEntity + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] + movs r0, #4 + strb r0, [r1, #0x14] + ldrb r2, [r1, #0x10] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #0x10] + ldrb r1, [r4, #0xf] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_0805E4E0 + ldr r0, _0808B5E0 @ =0x00000113 + bl sub_080A3268 + b _0808B5E6 + .align 2, 0 +_0808B5DC: .4byte gLinkEntity +_0808B5E0: .4byte 0x00000113 +_0808B5E4: + strb r0, [r4, #0xe] +_0808B5E6: + pop {r4, pc} + + thumb_func_start sub_0808B5E8 +sub_0808B5E8: @ 0x0808B5E8 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _0808B610 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xe] + ldr r1, _0808B60C @ =gLinkEntity + movs r0, #4 + strb r0, [r1, #0x14] + movs r0, #0x10 + strb r0, [r1, #0x15] + b _0808B67E + .align 2, 0 +_0808B60C: .4byte gLinkEntity +_0808B610: + movs r5, #0 + movs r0, #0x60 + ands r0, r1 + cmp r0, #0x20 + beq _0808B644 + cmp r0, #0x20 + bgt _0808B624 + cmp r0, #0 + beq _0808B64E + b _0808B66E +_0808B624: + cmp r0, #0x40 + bne _0808B66E + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x58 + bne _0808B638 + movs r0, #0x8a + lsls r0, r0, #1 + bl sub_080A3268 +_0808B638: + ldrb r1, [r4, #0xf] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0808B66E + b _0808B672 +_0808B644: + movs r0, #3 + ands r1, r0 + cmp r1, #0 + bne _0808B66E + b _0808B672 +_0808B64E: + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _0808B66E + ldr r0, _0808B668 @ =gLinkEntity + ldrb r0, [r0, #0x14] + cmp r0, #4 + bne _0808B66C + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x18 + bls _0808B66E + b _0808B672 + .align 2, 0 +_0808B668: .4byte gLinkEntity +_0808B66C: + movs r5, #1 +_0808B66E: + cmp r5, #0 + beq _0808B67E +_0808B672: + ldr r0, _0808B680 @ =gLinkEntity + ldrb r1, [r0, #0x14] + adds r1, #2 + movs r2, #6 + ands r1, r2 + strb r1, [r0, #0x14] +_0808B67E: + pop {r4, r5, pc} + .align 2, 0 +_0808B680: .4byte gLinkEntity + + thumb_func_start sub_0808B684 +sub_0808B684: @ 0x0808B684 + push {lr} + mov ip, r0 + ldrb r0, [r0, #0xf] + subs r1, r0, #1 + mov r0, ip + strb r1, [r0, #0xf] + lsls r0, r1, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + bne _0808B6E8 + ldr r3, _0808B6E4 @ =gUnk_030010A0 + movs r0, #1 + strb r0, [r3, #8] + strb r2, [r3, #9] + mov r0, ip + adds r0, #0x7c + ldrb r0, [r0] + strb r0, [r3, #0xc] + mov r0, ip + adds r0, #0x7d + ldrb r0, [r0] + strb r0, [r3, #0xd] + mov r0, ip + adds r0, #0x84 + ldrh r1, [r0] + movs r0, #0x3f + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + movs r2, #0 + strh r0, [r3, #0x10] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r1 + lsrs r0, r0, #2 + adds r0, #8 + strh r0, [r3, #0x12] + strb r2, [r3, #0x14] + movs r0, #4 + strb r0, [r3, #0xe] + strb r2, [r3, #0xf] + mov r1, ip + ldrb r0, [r1, #0xa] + cmp r0, #2 + bne _0808B736 + strb r0, [r3, #9] + b _0808B736 + .align 2, 0 +_0808B6E4: .4byte gUnk_030010A0 +_0808B6E8: + movs r0, #0x60 + ands r0, r1 + cmp r0, #0x20 + beq _0808B702 + cmp r0, #0x20 + bgt _0808B6FA + cmp r0, #0 + beq _0808B706 + b _0808B724 +_0808B6FA: + cmp r0, #0x40 + bne _0808B724 + movs r0, #7 + b _0808B710 +_0808B702: + movs r0, #3 + b _0808B710 +_0808B706: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + bls _0808B718 + movs r0, #1 +_0808B710: + ands r1, r0 + cmp r1, #0 + bne _0808B724 + b _0808B72A +_0808B718: + ldr r2, _0808B738 @ =gLinkEntity + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] +_0808B724: + movs r0, #0 + cmp r0, #0 + beq _0808B736 +_0808B72A: + ldr r0, _0808B738 @ =gLinkEntity + ldrb r1, [r0, #0x14] + adds r1, #2 + movs r2, #6 + ands r1, r2 + strb r1, [r0, #0x14] +_0808B736: + pop {pc} + .align 2, 0 +_0808B738: .4byte gLinkEntity + + thumb_func_start sub_0808B73C +sub_0808B73C: @ 0x0808B73C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0808B766 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, [r4, #0x50] + ldrb r1, [r0, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0808B766: + ldr r5, _0808B78C @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #0x28 + bl sub_0806FCB8 + cmp r0, #0 + beq _0808B790 + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + b _0808B7C0 + .align 2, 0 +_0808B78C: .4byte gLinkEntity +_0808B790: + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0x32 + ldrsh r2, [r5, r0] + adds r0, r4, #0 + movs r3, #0x2e + bl sub_0806FCB8 + cmp r0, #0 + beq _0808B7B6 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + b _0808B7BE +_0808B7B6: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 +_0808B7BE: + strb r0, [r4, #0x18] +_0808B7C0: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + + thumb_func_start sub_0808B7C8 +sub_0808B7C8: @ 0x0808B7C8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r2, _0808B824 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0808B82C + adds r0, r2, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x12 + beq _0808B82C + ldr r4, _0808B828 @ =gLinkEntity + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _0808B82C + bl sub_08079F8C + cmp r0, #0 + beq _0808B82C + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #5 + movs r3, #5 + bl sub_080041A0 + cmp r0, #0 + beq _0808B82C + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0808B82C + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _0808B81E + ldrb r0, [r4, #0xc] + cmp r0, #0x1b + bne _0808B81E + bl sub_080791D0 +_0808B81E: + movs r0, #1 + b _0808B82E + .align 2, 0 +_0808B824: .4byte gUnk_03003F80 +_0808B828: .4byte gLinkEntity +_0808B82C: + movs r0, #0 +_0808B82E: + pop {r4, r5, pc} + + thumb_func_start sub_0808B830 +sub_0808B830: @ 0x0808B830 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x34 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0808B86A + adds r1, r2, #0 + adds r1, #0x70 + movs r0, #1 + strb r0, [r1] + str r4, [r2, #0x50] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0806FA24 +_0808B86A: + pop {r4, pc} + + thumb_func_start sub_0808B86C +sub_0808B86C: @ 0x0808B86C + push {lr} + ldr r2, _0808B880 @ =gUnk_081213C4 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808B880: .4byte gUnk_081213C4 + + thumb_func_start sub_0808B884 +sub_0808B884: @ 0x0808B884 + push {lr} + ldr r2, _0808B898 @ =gUnk_081213D0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808B898: .4byte gUnk_081213D0 + + thumb_func_start sub_0808B89C +sub_0808B89C: @ 0x0808B89C + push {r4, lr} + adds r4, r0, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r0, [r4, #0xb] + adds r1, r4, #0 + adds r1, #0x38 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + movs r0, #0xb4 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808B8D4 +sub_0808B8D4: @ 0x0808B8D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808B904 + movs r0, #0xb4 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xb] + adds r0, #1 + strb r0, [r4, #0xb] + ldrb r0, [r4, #0xb] + movs r1, #3 + bl __modsi3 + strb r0, [r4, #0xb] + ldrb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08004260 +_0808B904: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808B908 +sub_0808B908: @ 0x0808B908 + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0808B910 +sub_0808B910: @ 0x0808B910 + push {lr} + ldr r2, _0808B92C @ =gUnk_081213DC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + ldr r2, _0808B930 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1a] + pop {pc} + .align 2, 0 +_0808B92C: .4byte gUnk_081213DC +_0808B930: .4byte gUnk_03003F80 + + thumb_func_start sub_0808B934 +sub_0808B934: @ 0x0808B934 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r7, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + strb r7, [r4, #0x1e] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x70 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0808B9B8 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x76 + strh r1, [r5] + ldrh r0, [r5] + adds r6, r4, #0 + adds r6, #0x38 + ldrb r1, [r6] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x74 + strh r0, [r1] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0808B9C0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xf] + ldr r0, _0808B9BC @ =0x00004022 + ldrh r1, [r5] + ldrb r2, [r6] + bl sub_0800015E + b _0808B9D2 + .align 2, 0 +_0808B9B8: .4byte gUnk_03000BF0 +_0808B9BC: .4byte 0x00004022 +_0808B9C0: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r7, [r4, #0xe] +_0808B9D2: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0808B9D4 +sub_0808B9D4: @ 0x0808B9D4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + beq _0808BA0A + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #7 + strb r0, [r4, #0xe] + strb r1, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldr r0, _0808BA0C @ =0x0000010B + bl sub_08004488 +_0808BA0A: + pop {r4, pc} + .align 2, 0 +_0808BA0C: .4byte 0x0000010B + + thumb_func_start sub_0808BA10 +sub_0808BA10: @ 0x0808BA10 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BA44 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0xc + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + strh r0, [r4, #0x32] +_0808BA44: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808BA48 +sub_0808BA48: @ 0x0808BA48 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08083734 + cmp r0, #0 + beq _0808BA68 + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r2, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_080836DC +_0808BA68: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808BA6C +sub_0808BA6C: @ 0x0808BA6C + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BAA4 + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08083814 + ldr r0, _0808BAA8 @ =0x0000010B + bl sub_08004488 + ldr r0, _0808BAAC @ =0x00004022 + adds r1, r4, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0808BAA4: + pop {r4, pc} + .align 2, 0 +_0808BAA8: .4byte 0x0000010B +_0808BAAC: .4byte 0x00004022 + + thumb_func_start nullsub_520 +nullsub_520: @ 0x0808BAB0 + bx lr + .align 2, 0 + + thumb_func_start sub_0808BAB4 +sub_0808BAB4: @ 0x0808BAB4 + push {lr} + ldr r2, _0808BAC8 @ =gUnk_081213F4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808BAC8: .4byte gUnk_081213F4 + + thumb_func_start sub_0808BACC +sub_0808BACC: @ 0x0808BACC + push {r4, lr} + adds r2, r0, #0 + movs r4, #1 + strb r4, [r2, #0xc] + movs r3, #0x10 + strb r3, [r2, #0xe] + ldrh r0, [r2, #0x36] + subs r0, #0x10 + strh r0, [r2, #0x36] + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _0808BAEA + movs r0, #2 + strb r0, [r2, #0x1e] + b _0808BAFC +_0808BAEA: + movs r0, #0 + strb r0, [r2, #0x1e] + ldr r0, [r2, #0x50] + ldrh r1, [r0, #0x2e] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0808BAFC + strb r4, [r2, #0x1e] +_0808BAFC: + adds r0, r2, #0 + bl sub_080A29BC + pop {r4, pc} + + thumb_func_start sub_0808BB04 +sub_0808BB04: @ 0x0808BB04 + push {lr} + ldrb r1, [r0, #0xe] + subs r1, #1 + strb r1, [r0, #0xe] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _0808BB16 + bl sub_0805E780 +_0808BB16: + pop {pc} + + thumb_func_start sub_0808BB18 +sub_0808BB18: @ 0x0808BB18 + push {lr} + ldr r2, _0808BB2C @ =gUnk_08121440 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808BB2C: .4byte gUnk_08121440 + + thumb_func_start sub_0808BB30 +sub_0808BB30: @ 0x0808BB30 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x17 + bl GetProgressFlag + adds r1, r0, #0 + cmp r1, #0 + beq _0808BB4C + movs r0, #0x4a + bl sub_0801D7EC + bl sub_0805E780 + b _0808BBD4 +_0808BB4C: + movs r3, #1 + strb r3, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x10] + movs r0, #0x78 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x1b] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x3f + strb r3, [r0] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + subs r1, #5 + movs r0, #4 + strb r0, [r1] + ldr r0, _0808BBD8 @ =gUnk_080FD150 + str r0, [r4, #0x48] + movs r0, #2 + strb r0, [r4, #0x1e] + ldr r0, _0808BBDC @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r4, #0 + bl sub_0808BDB0 + ldr r0, [r4, #0x50] + ldr r1, [r0, #0x20] + movs r2, #0xb8 + lsls r2, r2, #1 + adds r0, r2, #0 + subs r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0808BBE0 +_0808BBD4: + pop {r4, pc} + .align 2, 0 +_0808BBD8: .4byte gUnk_080FD150 +_0808BBDC: .4byte gLinkEntity + + thumb_func_start sub_0808BBE0 +sub_0808BBE0: @ 0x0808BBE0 + push {lr} + adds r3, r0, #0 + movs r1, #0x32 + ldrsh r0, [r3, r1] + ldr r1, _0808BC20 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r1, [r1, r2] + subs r1, r0, r1 + cmp r1, #0x9f + bhi _0808BC2C + adds r0, r1, #0 + cmp r1, #0 + bge _0808BBFC + adds r0, #0xf +_0808BBFC: + asrs r1, r0, #4 + ldr r0, _0808BC24 @ =gUnk_08121474 + adds r0, r1, r0 + ldrb r0, [r0] + adds r2, r3, #0 + adds r2, #0x63 + strb r0, [r2] + lsls r0, r1, #2 + ldr r1, _0808BC28 @ =gUnk_0812144C + adds r0, r0, r1 + ldrh r1, [r0] + ldrh r2, [r0, #2] + adds r0, r3, #0 + movs r3, #0 + bl sub_0805EC9C + b _0808BC38 + .align 2, 0 +_0808BC20: .4byte gUnk_03000BF0 +_0808BC24: .4byte gUnk_08121474 +_0808BC28: .4byte gUnk_0812144C +_0808BC2C: + adds r2, r3, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] +_0808BC38: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808BC3C +sub_0808BC3C: @ 0x0808BC3C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r2, _0808BC98 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + adds r0, #0x78 + movs r4, #0 + strh r0, [r5, #0x2e] + ldr r0, [r5, #0x50] + ldr r1, [r0, #0x20] + ldr r0, _0808BC9C @ =0xFFFFFE90 + adds r1, r1, r0 + ldrh r0, [r2, #8] + subs r0, r0, r1 + strh r0, [r5, #0x32] + adds r0, r5, #0 + bl sub_0808BBE0 + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x93 + bne _0808BCE4 + ldrb r0, [r5, #0xe] + subs r2, r0, #1 + strb r2, [r5, #0xe] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + lsls r0, r2, #0x18 + cmp r0, #0 + bne _0808BCA0 + movs r0, #0x17 + bl sub_0807CD04 + movs r0, #2 + strb r0, [r5, #0xc] + movs r0, #0x80 + strb r0, [r5, #0xf] + adds r0, r5, #0 + adds r0, #0x63 + strb r4, [r0] + b _0808BCFE + .align 2, 0 +_0808BC98: .4byte gUnk_03000BF0 +_0808BC9C: .4byte 0xFFFFFE90 +_0808BCA0: + movs r6, #1 + ands r2, r6 + cmp r2, #0 + beq _0808BCCA + bl sub_08000E50 + movs r4, #3 + ands r0, r4 + ldr r1, _0808BCDC @ =0x0000FFFE + adds r0, r0, r1 + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x2e] + bl sub_08000E50 + ands r0, r4 + ldr r1, _0808BCE0 @ =0x0000FFFF + adds r0, r0, r1 + ldrh r1, [r5, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] +_0808BCCA: + ldrb r0, [r5, #0xf] + cmp r0, #1 + beq _0808BCFE + strb r6, [r5, #0xf] + movs r0, #0x4a + bl sub_0801D7EC + b _0808BCFE + .align 2, 0 +_0808BCDC: .4byte 0x0000FFFE +_0808BCE0: .4byte 0x0000FFFF +_0808BCE4: + movs r0, #0x78 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x18] + subs r0, #0x7c + ands r0, r1 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _0808BCFE + strb r4, [r5, #0xf] + movs r0, #0x49 + bl sub_0801D7EC +_0808BCFE: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808BD00 +sub_0808BD00: @ 0x0808BD00 + push {lr} + movs r0, #0x17 + bl sub_0807CD04 + movs r0, #0x72 + bl sub_080A3268 + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_0808BD14 +sub_0808BD14: @ 0x0808BD14 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _0808BD34 + subs r0, #8 + strb r0, [r5, #0xf] + ldrb r0, [r5, #0xf] + movs r2, #0x80 + lsls r2, r2, #2 + subs r2, r2, r0 + adds r0, r5, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C +_0808BD34: + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x93 + bne _0808BD74 + ldr r4, _0808BD70 @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F69C + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x32 + ldrsh r2, [r4, r0] + subs r2, #6 + adds r0, r5, #0 + movs r3, #0x1c + bl sub_0806FCB8 + cmp r0, #0 + beq _0808BDAE + adds r0, r5, #0 + bl sub_0808BD00 + b _0808BDAE + .align 2, 0 +_0808BD70: .4byte gLinkEntity +_0808BD74: + ldrb r1, [r5, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808BD8A + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + movs r0, #0x1e + strb r0, [r5, #0xe] + b _0808BDAE +_0808BD8A: + ldrb r2, [r5, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808BDAE + adds r0, r5, #0 + bl sub_0808BD00 +_0808BDAE: + pop {r4, r5, pc} + + thumb_func_start sub_0808BDB0 +sub_0808BDB0: @ 0x0808BDB0 + push {r4, r5, r6, lr} + adds r3, r0, #0 + ldr r4, _0808BDD4 @ =gUnk_03003DA0 + ldr r2, [r4, #4] + movs r0, #0 + str r0, [r3, #0x50] + cmp r2, r4 + beq _0808BDE6 + ldr r6, _0808BDD8 @ =0x0000FFFF + ldr r5, _0808BDDC @ =0x00000C09 +_0808BDC4: + ldrh r1, [r2, #8] + adds r0, r6, #0 + ands r0, r1 + cmp r0, r5 + bne _0808BDE0 + str r2, [r3, #0x50] + b _0808BDE6 + .align 2, 0 +_0808BDD4: .4byte gUnk_03003DA0 +_0808BDD8: .4byte 0x0000FFFF +_0808BDDC: .4byte 0x00000C09 +_0808BDE0: + ldr r2, [r2, #4] + cmp r2, r4 + bne _0808BDC4 +_0808BDE6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808BDE8 +sub_0808BDE8: @ 0x0808BDE8 + push {lr} + ldr r2, _0808BDFC @ =gUnk_08121480 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808BDFC: .4byte gUnk_08121480 + + thumb_func_start sub_0808BE00 +sub_0808BE00: @ 0x0808BE00 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_0808094C + adds r4, r0, #0 + adds r0, r5, #0 + bl sub_0806F798 + lsls r0, r0, #1 + adds r0, #4 + adds r4, r4, r0 + str r4, [r5, #0x78] + ldrh r1, [r4] + adds r0, r5, #0 + adds r0, #0x70 + strh r1, [r0] + movs r0, #1 + strb r0, [r5, #0xc] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808BE2C +sub_0808BE2C: @ 0x0808BE2C + push {r4, lr} + adds r2, r0, #0 + ldr r0, _0808BE78 @ =gUnk_02002A40 + ldr r1, _0808BE7C @ =0x0000024E + adds r4, r0, r1 + ldrb r0, [r4] + cmp r0, #0 + beq _0808BE74 + adds r0, r2, #0 + adds r0, #0x70 + ldr r1, [r2, #0x78] + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + beq _0808BE74 + adds r0, r2, #0 + movs r1, #0x58 + movs r2, #0 + bl sub_080A2A20 + adds r1, r0, #0 + cmp r1, #0 + beq _0808BE6C + ldr r0, _0808BE80 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsls r0, r0, #2 + strb r0, [r1, #0x15] + movs r0, #0x80 + strh r0, [r1, #0x24] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r1, #0x20] +_0808BE6C: + movs r0, #1 + strb r0, [r4] + bl sub_0805E780 +_0808BE74: + pop {r4, pc} + .align 2, 0 +_0808BE78: .4byte gUnk_02002A40 +_0808BE7C: .4byte 0x0000024E +_0808BE80: .4byte gLinkEntity + + thumb_func_start sub_0808BE84 +sub_0808BE84: @ 0x0808BE84 + push {lr} + ldr r2, _0808BE98 @ =gUnk_08121488 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808BE98: .4byte gUnk_08121488 + + thumb_func_start sub_0808BE9C +sub_0808BE9C: @ 0x0808BE9C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + movs r2, #0 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x3f + movs r5, #1 + strb r5, [r0] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #0x47 + strb r0, [r1] + adds r1, #4 + movs r0, #0x44 + strb r0, [r1] + subs r1, #5 + movs r0, #0x80 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x68 + strb r2, [r0] + ldrb r0, [r4, #0xa] + bl sub_0807CBD0 + cmp r0, #0 + beq _0808BEEE + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + bne _0808BEF8 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + b _0808BF10 +_0808BEEE: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + bne _0808BF04 +_0808BEF8: + strb r5, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _0808BF10 +_0808BF04: + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_0808BF10: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808BF14 +sub_0808BF14: @ 0x0808BF14 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808C128 + cmp r0, #0 + beq _0808BF4C + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0808C13C + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + bne _0808BF3E + ldrb r0, [r4, #0xa] + bl sub_0807CCB4 + b _0808BF44 +_0808BF3E: + ldrb r0, [r4, #0xa] + bl sub_0807CD34 +_0808BF44: + adds r0, r4, #0 + movs r1, #0 + bl sub_0808C148 +_0808BF4C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0808C01C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808BF58 +sub_0808BF58: @ 0x0808BF58 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _0808BF94 + cmp r0, #1 + bgt _0808BF74 + cmp r0, #0 + beq _0808BF7A + b _0808BFD6 +_0808BF74: + cmp r0, #2 + beq _0808BFB0 + b _0808BFD6 +_0808BF7A: + ldr r1, [r4, #0x20] + ldr r0, _0808BF90 @ =0x00017FFF + cmp r1, r0 + bgt _0808BFD6 + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + b _0808BFD6 + .align 2, 0 +_0808BF90: .4byte 0x00017FFF +_0808BF94: + adds r0, r4, #0 + bl sub_080042B8 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0808BFD6 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r4, #0x20] + b _0808BFD6 +_0808BFB0: + adds r0, r4, #0 + bl sub_080042B8 + movs r0, #0x36 + ldrsh r1, [r4, r0] + cmp r1, #0 + bne _0808BFD6 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xf] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + adds r0, r4, #0 + movs r1, #1 + bl sub_0808C148 +_0808BFD6: + pop {r4, pc} + + thumb_func_start sub_0808BFD8 +sub_0808BFD8: @ 0x0808BFD8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808C128 + cmp r0, #0 + beq _0808C010 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0808C13C + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + bne _0808C002 + ldrb r0, [r4, #0xa] + bl sub_0807CD34 + b _0808C008 +_0808C002: + ldrb r0, [r4, #0xa] + bl sub_0807CCB4 +_0808C008: + adds r0, r4, #0 + movs r1, #0 + bl sub_0808C148 +_0808C010: + adds r0, r4, #0 + movs r1, #1 + bl sub_0808C01C + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808C01C +sub_0808C01C: @ 0x0808C01C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + subs r0, #0x18 + movs r2, #0x32 + ldrsh r1, [r4, r2] + subs r1, #0x18 + movs r2, #0x30 + movs r3, #0x30 + bl sub_0806FBFC + cmp r0, #0 + beq _0808C0A6 + ldr r2, _0808C06C @ =gUnk_02033A90 + ldrh r0, [r4, #0x2e] + strh r0, [r2, #0x12] + ldrh r0, [r4, #0x32] + strh r0, [r2, #0x14] + movs r6, #2 + strb r6, [r2, #0x16] + movs r0, #4 + cmp r5, #0 + beq _0808C050 + movs r0, #2 +_0808C050: + strb r0, [r2, #0x17] + cmp r5, #1 + bne _0808C0A6 + ldr r3, _0808C070 @ =gUnk_03003F80 + ldr r0, [r3, #0x30] + movs r1, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0808C074 + ldrb r0, [r3, #2] + cmp r0, #0 + bne _0808C074 + strb r6, [r2, #0x18] + b _0808C082 + .align 2, 0 +_0808C06C: .4byte gUnk_02033A90 +_0808C070: .4byte gUnk_03003F80 +_0808C074: + bl sub_08057810 + cmp r0, #0 + beq _0808C082 + ldr r1, _0808C0A8 @ =gUnk_02033A90 + movs r0, #3 + strb r0, [r1, #0x18] +_0808C082: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_080577AC + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0808C0A6 + movs r0, #1 + strb r0, [r4, #0xf] + movs r0, #0xa9 + lsls r0, r0, #1 + bl sub_080A3268 +_0808C0A6: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808C0A8: .4byte gUnk_02033A90 + + thumb_func_start sub_0808C0AC +sub_0808C0AC: @ 0x0808C0AC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x80 + lsls r1, r1, #6 + bl sub_08003FC4 + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _0808C0E8 + cmp r0, #1 + bgt _0808C0C8 + cmp r0, #0 + beq _0808C0CE + b _0808C126 +_0808C0C8: + cmp r0, #2 + beq _0808C104 + b _0808C126 +_0808C0CE: + ldr r1, [r4, #0x20] + ldr r0, _0808C0E4 @ =0x00017FFF + cmp r1, r0 + bgt _0808C126 + movs r0, #1 + strb r0, [r4, #0xd] + adds r0, r4, #0 + movs r1, #3 + bl sub_080042AC + b _0808C126 + .align 2, 0 +_0808C0E4: .4byte 0x00017FFF +_0808C0E8: + adds r0, r4, #0 + bl sub_080042B8 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0808C126 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r4, #0x20] + b _0808C126 +_0808C104: + adds r0, r4, #0 + bl sub_080042B8 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _0808C126 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + adds r0, r4, #0 + movs r1, #1 + bl sub_0808C148 +_0808C126: + pop {r4, pc} + + thumb_func_start sub_0808C128 +sub_0808C128: @ 0x0808C128 + push {lr} + movs r1, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _0808C136 + movs r1, #1 +_0808C136: + adds r0, r1, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808C13C +sub_0808C13C: @ 0x0808C13C + movs r1, #0 + strb r1, [r0, #0xd] + movs r1, #0xa0 + lsls r1, r1, #0xa + str r1, [r0, #0x20] + bx lr + + thumb_func_start sub_0808C148 +sub_0808C148: @ 0x0808C148 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r2, #0x2e + ldrsh r0, [r6, r2] + ldr r4, _0808C1A4 @ =gUnk_03000BF0 + ldrh r2, [r4, #6] + subs r0, r0, r2 + asrs r5, r0, #4 + movs r3, #0x3f + ands r5, r3 + movs r2, #0x32 + ldrsh r0, [r6, r2] + ldrh r2, [r4, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r5, r0 + cmp r1, #0 + bne _0808C1B8 + ldr r0, _0808C1A8 @ =0x00004092 + subs r1, r5, #1 + adds r4, r6, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _0808C1AC @ =0x00004093 + ldrb r2, [r4] + adds r1, r5, #0 + bl sub_0800015E + ldr r0, _0808C1B0 @ =0x00004094 + adds r1, r5, #0 + adds r1, #0x3f + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _0808C1B4 @ =0x00004095 + adds r1, r5, #0 + adds r1, #0x40 + ldrb r2, [r4] + bl sub_0800015E + b _0808C1E0 + .align 2, 0 +_0808C1A4: .4byte gUnk_03000BF0 +_0808C1A8: .4byte 0x00004092 +_0808C1AC: .4byte 0x00004093 +_0808C1B0: .4byte 0x00004094 +_0808C1B4: .4byte 0x00004095 +_0808C1B8: + subs r0, r5, #1 + adds r4, r6, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_0807BA8C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C +_0808C1E0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808C1E4 +sub_0808C1E4: @ 0x0808C1E4 + push {lr} + ldr r2, _0808C1F8 @ =gUnk_081214D8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808C1F8: .4byte gUnk_081214D8 + + thumb_func_start sub_0808C1FC +sub_0808C1FC: @ 0x0808C1FC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x84 + ldrh r1, [r2] + ldr r0, _0808C2B0 @ =0x0000FFFF + cmp r1, r0 + beq _0808C21A + adds r0, r1, #0 + bl sub_0807CBE4 + cmp r0, #0 + beq _0808C21A + bl sub_0805E780 +_0808C21A: + adds r1, r4, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _0808C230 + bl sub_0807CBE4 + cmp r0, #0 + beq _0808C230 + bl sub_0805E780 +_0808C230: + ldrb r0, [r4, #0xa] + lsrs r0, r0, #2 + strb r0, [r4, #0xb] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x70 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + ldr r0, _0808C2B4 @ =gUnk_080FD180 + str r0, [r4, #0x48] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0xa] + movs r0, #3 + ands r0, r1 + adds r5, r4, #0 + adds r5, #0x76 + strh r0, [r5] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0808C2B8 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r6, #0x32 + ldrsh r0, [r4, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrb r0, [r4, #0xa] + movs r1, #0x1f + ands r1, r0 + adds r0, r4, #0 + bl sub_08004260 + ldrb r0, [r4, #0xb] + cmp r0, #1 + beq _0808C2F8 + cmp r0, #1 + bgt _0808C2BC + cmp r0, #0 + beq _0808C2C2 + b _0808C31C + .align 2, 0 +_0808C2B0: .4byte 0x0000FFFF +_0808C2B4: .4byte gUnk_080FD180 +_0808C2B8: .4byte gUnk_03000BF0 +_0808C2BC: + cmp r0, #2 + beq _0808C306 + b _0808C31C +_0808C2C2: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0808C500 + adds r0, r4, #0 + bl sub_08078800 + ldr r1, _0808C2F4 @ =gUnk_0811F740 + ldrh r0, [r5] + adds r0, r0, r1 + ldrb r2, [r0] + adds r0, r4, #0 + movs r1, #0 + movs r3, #0 + bl sub_08078850 + b _0808C31C + .align 2, 0 +_0808C2F4: .4byte gUnk_0811F740 +_0808C2F8: + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #8 + ands r0, r1 + strb r0, [r4, #0x18] + b _0808C31C +_0808C306: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0808C500 +_0808C31C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808C320 +sub_0808C320: @ 0x0808C320 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _0808C344 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080788E0 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 +_0808C344: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808C348 +sub_0808C348: @ 0x0808C348 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0808C37C + ldr r0, _0808C374 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0808C36A + ldr r0, _0808C378 @ =0x00000185 + bl sub_080A3268 +_0808C36A: + adds r0, r4, #0 + bl sub_08004274 + b _0808C382 + .align 2, 0 +_0808C374: .4byte gUnk_030010A0 +_0808C378: .4byte 0x00000185 +_0808C37C: + adds r0, r4, #0 + bl sub_0808C4BC +_0808C382: + pop {r4, pc} + + thumb_func_start sub_0808C384 +sub_0808C384: @ 0x0808C384 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808C3B4 + ldrb r0, [r4, #0xa] + cmp r0, #3 + bhi _0808C3B0 + movs r0, #0x40 + movs r1, #0 + movs r2, #1 + bl sub_08078AC0 + ldr r1, _0808C3B8 @ =gLinkEntity + ldrb r0, [r4, #0xa] + lsls r0, r0, #3 + strb r0, [r1, #0x15] +_0808C3B0: + bl sub_0805E780 +_0808C3B4: + pop {r4, pc} + .align 2, 0 +_0808C3B8: .4byte gLinkEntity + + thumb_func_start sub_0808C3BC +sub_0808C3BC: @ 0x0808C3BC + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x76 + ldrh r1, [r5] + bl sub_08083734 + cmp r0, #0 + beq _0808C40E + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #0xc + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x10 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r5] + lsls r0, r0, #3 + movs r1, #0x10 + eors r0, r1 + strb r0, [r4, #0x15] + ldrh r1, [r5] + lsls r1, r1, #1 + ldr r0, _0808C410 @ =gUnk_081214F4 + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r2, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_0808C500 +_0808C40E: + pop {r4, r5, pc} + .align 2, 0 +_0808C410: .4byte gUnk_081214F4 + + thumb_func_start sub_0808C414 +sub_0808C414: @ 0x0808C414 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808C49A + movs r0, #6 + strb r0, [r4, #0xc] + strh r1, [r4, #0x36] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + lsls r0, r0, #2 + ldr r1, _0808C49C @ =gUnk_081214FC + adds r5, r0, r1 + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0808C470 + movs r0, #0 + ldrsb r0, [r5, r0] + ldrh r2, [r1, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + movs r0, #1 + ldrsb r0, [r5, r0] + ldrh r2, [r1, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x32] +_0808C470: + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0808C494 + movs r0, #2 + ldrsb r0, [r5, r0] + ldrh r2, [r1, #0x2e] + adds r0, r0, r2 + strh r0, [r1, #0x2e] + movs r0, #3 + ldrsb r0, [r5, r0] + ldrh r2, [r1, #0x32] + adds r0, r0, r2 + strh r0, [r1, #0x32] +_0808C494: + ldr r0, _0808C4A0 @ =0x0000010B + bl sub_08004488 +_0808C49A: + pop {r4, r5, pc} + .align 2, 0 +_0808C49C: .4byte gUnk_081214FC +_0808C4A0: .4byte 0x0000010B + + thumb_func_start sub_0808C4A4 +sub_0808C4A4: @ 0x0808C4A4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808C4B8 + movs r0, #2 + strb r0, [r4, #0xc] +_0808C4B8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808C4BC +sub_0808C4BC: @ 0x0808C4BC + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #0xc + strb r1, [r0, #0xe] + adds r2, r0, #0 + adds r2, #0x76 + ldrh r1, [r2] + lsls r1, r1, #3 + strb r1, [r0, #0x15] + ldrh r2, [r2] + lsls r2, r2, #1 + ldr r1, _0808C4F8 @ =gUnk_0812150C + adds r2, r2, r1 + movs r1, #0 + ldrsb r1, [r2, r1] + ldrh r3, [r0, #0x2e] + adds r1, r1, r3 + strh r1, [r0, #0x2e] + movs r1, #1 + ldrsb r1, [r2, r1] + ldrh r2, [r0, #0x32] + adds r1, r1, r2 + strh r1, [r0, #0x32] + bl sub_0808C5D0 + ldr r0, _0808C4FC @ =0x0000010B + bl sub_080A3268 + pop {pc} + .align 2, 0 +_0808C4F8: .4byte gUnk_0812150C +_0808C4FC: .4byte 0x0000010B + + thumb_func_start sub_0808C500 +sub_0808C500: @ 0x0808C500 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x76 + ldrh r0, [r0] + cmp r0, #0 + beq _0808C510 + cmp r0, #2 + bne _0808C570 +_0808C510: + adds r6, r4, #0 + adds r6, #0x74 + ldrh r0, [r6] + subs r0, #1 + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + ldrh r0, [r6] + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + ldrh r0, [r6] + adds r0, #1 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x7c + strh r0, [r1] + ldr r4, _0808C56C @ =0x00004022 + ldrh r1, [r6] + subs r1, #1 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #1 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + b _0808C5CA + .align 2, 0 +_0808C56C: .4byte 0x00004022 +_0808C570: + adds r6, r4, #0 + adds r6, #0x74 + ldrh r0, [r6] + subs r0, #0x40 + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + ldrh r0, [r6] + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + ldrh r0, [r6] + adds r0, #0x40 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x7c + strh r0, [r1] + ldr r4, _0808C5CC @ =0x00004022 + ldrh r1, [r6] + subs r1, #0x40 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x40 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E +_0808C5CA: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808C5CC: .4byte 0x00004022 + + thumb_func_start sub_0808C5D0 +sub_0808C5D0: @ 0x0808C5D0 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r0, #0x76 + ldrh r0, [r0] + cmp r0, #0 + beq _0808C5E0 + cmp r0, #2 + bne _0808C618 +_0808C5E0: + adds r0, r6, #0 + adds r0, #0x78 + ldrh r0, [r0] + adds r5, r6, #0 + adds r5, #0x74 + ldrh r1, [r5] + subs r1, #1 + adds r4, r6, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x7a + ldrh r0, [r0] + ldrh r1, [r5] + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x7c + ldrh r0, [r0] + ldrh r1, [r5] + adds r1, #1 + ldrb r2, [r4] + bl sub_0800015E + b _0808C64E +_0808C618: + adds r0, r6, #0 + adds r0, #0x78 + ldrh r0, [r0] + adds r5, r6, #0 + adds r5, #0x74 + ldrh r1, [r5] + subs r1, #0x40 + adds r4, r6, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x7a + ldrh r0, [r0] + ldrh r1, [r5] + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x7c + ldrh r0, [r0] + ldrh r1, [r5] + adds r1, #0x40 + ldrb r2, [r4] + bl sub_0800015E +_0808C64E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808C650 +sub_0808C650: @ 0x0808C650 + push {r4, lr} + adds r4, r0, #0 + adds r2, r1, #0 + movs r0, #0x3a + movs r1, #0 + bl sub_080A2960 + cmp r0, #0 + beq _0808C670 + str r4, [r0, #0x50] + ldr r1, _0808C66C @ =gUnk_02036BB8 + movs r0, #0 + b _0808C674 + .align 2, 0 +_0808C66C: .4byte gUnk_02036BB8 +_0808C670: + ldr r1, _0808C678 @ =gUnk_02036BB8 + movs r0, #1 +_0808C674: + str r0, [r1] + pop {r4, pc} + .align 2, 0 +_0808C678: .4byte gUnk_02036BB8 + + thumb_func_start sub_0808C67C +sub_0808C67C: @ 0x0808C67C + ldr r0, _0808C684 @ =gUnk_02036BB8 + ldr r0, [r0] + bx lr + .align 2, 0 +_0808C684: .4byte gUnk_02036BB8 + + thumb_func_start sub_0808C688 +sub_0808C688: @ 0x0808C688 + push {lr} + bl sub_0801E104 + ldr r1, _0808C698 @ =gUnk_02036BB8 + movs r0, #1 + str r0, [r1] + pop {pc} + .align 2, 0 +_0808C698: .4byte gUnk_02036BB8 + + thumb_func_start sub_0808C69C +sub_0808C69C: @ 0x0808C69C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _0808C6BC + ldr r0, _0808C6B8 @ =gUnk_08121638 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _0808C6CC + .align 2, 0 +_0808C6B8: .4byte gUnk_08121638 +_0808C6BC: + ldr r0, _0808C6D0 @ =gUnk_08121640 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_0808C6CC: + pop {pc} + .align 2, 0 +_0808C6D0: .4byte gUnk_08121640 + + thumb_func_start sub_0808C6D4 +sub_0808C6D4: @ 0x0808C6D4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xb] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _0808C744 @ =gUnk_081215E8 + adds r4, r0, r1 + ldrh r0, [r4, #4] + adds r1, r5, #0 + adds r1, #0x86 + strh r0, [r1] + ldrh r0, [r4, #6] + subs r1, #1 + strb r0, [r1] + ldrh r1, [r4, #8] + adds r0, r5, #0 + adds r0, #0x84 + strb r1, [r0] + ldrh r0, [r4, #0xa] + adds r1, r5, #0 + adds r1, #0x83 + strb r0, [r1] + ldrh r0, [r4, #0xc] + subs r1, #1 + strb r0, [r1] + ldrh r0, [r4, #0xe] + subs r1, #1 + strb r0, [r1] + ldr r0, _0808C748 @ =gUnk_03000F50 + adds r0, #0x60 + ldrh r1, [r0] + movs r0, #0xff + lsls r0, r0, #8 + ands r0, r1 + ldrh r1, [r4, #0x10] + orrs r0, r1 + ldrh r1, [r4, #0x12] + bl sub_0801E1B8 + movs r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + bl sub_0808C74C + ldrh r2, [r4] + movs r0, #0x3a + movs r1, #1 + bl sub_080A2960 + cmp r0, #0 + beq _0808C742 + ldrh r1, [r4, #2] + adds r0, #0x6a + strh r1, [r0] +_0808C742: + pop {r4, r5, pc} + .align 2, 0 +_0808C744: .4byte gUnk_081215E8 +_0808C748: .4byte gUnk_03000F50 + + thumb_func_start sub_0808C74C +sub_0808C74C: @ 0x0808C74C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x50] + cmp r3, #0 + beq _0808C76C + ldr r2, _0808C768 @ =gUnk_03000BF0 + ldrh r0, [r3, #0x2e] + ldrh r1, [r2, #0xa] + subs r0, r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r3, #0x32] + ldrh r1, [r2, #0xc] + subs r0, r0, r1 + b _0808C772 + .align 2, 0 +_0808C768: .4byte gUnk_03000BF0 +_0808C76C: + movs r0, #0x78 + strh r0, [r4, #0x2e] + movs r0, #0x50 +_0808C772: + strh r0, [r4, #0x32] + adds r5, r4, #0 + adds r5, #0x86 + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bge _0808C79C + movs r2, #0x2e + ldrsh r0, [r4, r2] + movs r3, #0x32 + ldrsh r1, [r4, r3] + movs r2, #0 + movs r3, #0 + bl sub_0801E49C + ldr r1, _0808C83C @ =gUnk_02036BB8 + movs r0, #1 + str r0, [r1] + adds r0, r4, #0 + bl sub_0808C840 +_0808C79C: + movs r6, #0 + ldrsh r0, [r5, r6] + movs r2, #0xfa + lsls r2, r2, #1 + cmp r0, r2 + ble _0808C7C2 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r3, #0x32 + ldrsh r1, [r4, r3] + movs r3, #0 + bl sub_0801E49C + ldr r1, _0808C83C @ =gUnk_02036BB8 + movs r0, #1 + str r0, [r1] + adds r0, r4, #0 + bl sub_0808C840 +_0808C7C2: + adds r1, r4, #0 + adds r1, #0x85 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r6, [r5] + adds r0, r0, r6 + strh r0, [r5] + adds r0, r4, #0 + adds r0, #0x84 + ldrb r0, [r0] + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x10 + ble _0808C7E8 + movs r0, #0x10 + strb r0, [r1] +_0808C7E8: + movs r0, #0 + ldrsb r0, [r1, r0] + movs r2, #0x10 + rsbs r2, r2, #0 + cmp r0, r2 + bge _0808C7F6 + strb r2, [r1] +_0808C7F6: + adds r3, r4, #0 + adds r3, #0x83 + adds r1, r4, #0 + adds r1, #0x82 + ldrb r0, [r1] + ldrb r6, [r3] + adds r0, r0, r6 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + ldrb r6, [r1] + adds r0, r0, r6 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x10 + ble _0808C81E + movs r0, #0x10 + strb r0, [r1] +_0808C81E: + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, r2 + bge _0808C828 + strb r2, [r1] +_0808C828: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r4, #0 + ldrsh r2, [r5, r4] + ldrb r3, [r3] + bl sub_0801E49C + pop {r4, r5, r6, pc} + .align 2, 0 +_0808C83C: .4byte gUnk_02036BB8 + + thumb_func_start sub_0808C840 +sub_0808C840: @ 0x0808C840 + push {lr} + ldr r0, _0808C854 @ =gUnk_03000F50 + adds r0, #0x66 + movs r1, #0 + strh r1, [r0] + bl sub_0801E104 + bl sub_0805E780 + pop {pc} + .align 2, 0 +_0808C854: .4byte gUnk_03000F50 + + thumb_func_start sub_0808C858 +sub_0808C858: @ 0x0808C858 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0xb] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808C878 + ldr r1, _0808C870 @ =gUnk_03000F50 + adds r3, r1, #0 + adds r3, #0x66 + ldr r0, _0808C874 @ =0x00003FBF + b _0808C880 + .align 2, 0 +_0808C870: .4byte gUnk_03000F50 +_0808C874: .4byte 0x00003FBF +_0808C878: + ldr r1, _0808C898 @ =gUnk_03000F50 + adds r3, r1, #0 + adds r3, #0x66 + ldr r0, _0808C89C @ =0x00003FFF +_0808C880: + strh r0, [r3] + adds r3, r1, #0 + ldrb r1, [r2, #0xb] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808C8A0 + adds r1, r3, #0 + adds r1, #0x6a + movs r0, #0 + b _0808C8A6 + .align 2, 0 +_0808C898: .4byte gUnk_03000F50 +_0808C89C: .4byte 0x00003FFF +_0808C8A0: + adds r1, r3, #0 + adds r1, #0x6a + movs r0, #0x10 +_0808C8A6: + strh r0, [r1] + movs r0, #1 + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x68 + adds r0, #0xff + strh r0, [r1] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808C8B8 +sub_0808C8B8: @ 0x0808C8B8 + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x68 + adds r1, r3, #0 + adds r1, #0x6a + ldrh r0, [r2] + ldrh r1, [r1] + subs r0, r0, r1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _0808C8D6 + movs r0, #0 + strh r0, [r2] +_0808C8D6: + ldrb r1, [r3, #0xb] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808C8F8 + ldr r0, _0808C8F4 @ =gUnk_03000F50 + ldrh r1, [r2] + lsls r1, r1, #0x10 + asrs r1, r1, #0x14 + movs r2, #0x10 + subs r2, r2, r1 + adds r0, #0x6a + strh r2, [r0] + b _0808C904 + .align 2, 0 +_0808C8F4: .4byte gUnk_03000F50 +_0808C8F8: + ldr r1, _0808C918 @ =gUnk_03000F50 + ldrh r0, [r2] + lsls r0, r0, #0x10 + asrs r0, r0, #0x14 + adds r1, #0x6a + strh r0, [r1] +_0808C904: + adds r0, r3, #0 + adds r0, #0x68 + movs r1, #0 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _0808C914 + bl sub_0805E780 +_0808C914: + pop {pc} + .align 2, 0 +_0808C918: .4byte gUnk_03000F50 + + thumb_func_start sub_0808C91C +sub_0808C91C: @ 0x0808C91C + push {lr} + ldr r2, _0808C930 @ =gUnk_08121668 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808C930: .4byte gUnk_08121668 + + thumb_func_start sub_0808C934 +sub_0808C934: @ 0x0808C934 + push {lr} + ldr r2, _0808C948 @ =gUnk_08121670 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808C948: .4byte gUnk_08121670 + + thumb_func_start sub_0808C94C +sub_0808C94C: @ 0x0808C94C + push {lr} + ldr r2, _0808C960 @ =gUnk_08121678 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808C960: .4byte gUnk_08121678 + + thumb_func_start sub_0808C964 +sub_0808C964: @ 0x0808C964 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + strb r1, [r4, #0x1e] + ldrb r0, [r4, #9] + cmp r0, #0x76 + bne _0808C982 + ldr r0, _0808CA08 @ =gUnk_02032EC0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #2 + beq _0808C982 + adds r0, r1, #0 + subs r0, #9 + strb r0, [r4, #0xa] +_0808C982: + ldrb r0, [r4, #0xa] + cmp r0, #4 + bls _0808C996 + ldr r0, _0808CA0C @ =gUnk_02033A90 + ldrb r0, [r0, #0x16] + ldrb r1, [r4, #0xb] + cmp r0, r1 + beq _0808C996 + bl sub_0805E780 +_0808C996: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + ldrb r0, [r4, #0xb] + adds r3, r4, #0 + adds r3, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r4, #9] + cmp r0, #0x75 + beq _0808CA04 + ldrb r2, [r4, #0xa] + subs r0, r2, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bhi _0808CA04 + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + movs r2, #0x80 + lsls r2, r2, #1 + cmp r0, #1 + bne _0808C9FA + movs r2, #0xe0 +_0808C9FA: + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C +_0808CA04: + pop {r4, pc} + .align 2, 0 +_0808CA08: .4byte gUnk_02032EC0 +_0808CA0C: .4byte gUnk_02033A90 + + thumb_func_start sub_0808CA10 +sub_0808CA10: @ 0x0808CA10 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _0808CA40 + cmp r0, #2 + bgt _0808CA24 + cmp r0, #1 + beq _0808CA2A + b _0808CA78 +_0808CA24: + cmp r0, #3 + beq _0808CA60 + b _0808CA78 +_0808CA2A: + ldr r2, _0808CA3C @ =gUnk_02018EB0 + ldrb r0, [r2, #0x18] + cmp r0, #0 + beq _0808CA78 + movs r0, #0 + movs r1, #0x20 + strb r1, [r4, #0xe] + strb r0, [r2, #0x18] + b _0808CA50 + .align 2, 0 +_0808CA3C: .4byte gUnk_02018EB0 +_0808CA40: + ldr r2, _0808CA5C @ =gUnk_02018EB0 + ldrb r0, [r2, #0x19] + cmp r0, #0 + beq _0808CA78 + movs r0, #0 + movs r1, #0x20 + strb r1, [r4, #0xe] + strb r0, [r2, #0x19] +_0808CA50: + movs r0, #0x97 + lsls r0, r0, #1 + bl sub_080A3268 + b _0808CA78 + .align 2, 0 +_0808CA5C: .4byte gUnk_02018EB0 +_0808CA60: + ldr r2, _0808CABC @ =gUnk_02018EB0 + ldrb r0, [r2, #0x1a] + cmp r0, #0 + beq _0808CA78 + movs r0, #0 + movs r1, #0x20 + strb r1, [r4, #0xe] + strb r0, [r2, #0x1a] + movs r0, #0x97 + lsls r0, r0, #1 + bl sub_080A3268 +_0808CA78: + ldrb r0, [r4, #9] + cmp r0, #0x75 + beq _0808CAE0 + ldrb r1, [r4, #0xa] + subs r0, r1, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r1, #0 + cmp r0, #2 + bhi _0808CAE0 + ldrb r1, [r4, #0xe] + cmp r1, #0 + beq _0808CAE0 + subs r1, #1 + strb r1, [r4, #0xe] + ldrb r0, [r4, #0xf] + adds r2, r0, #1 + strb r2, [r4, #0xf] + lsls r1, r1, #0x18 + cmp r1, #0 + beq _0808CAC4 + ldr r0, _0808CAC0 @ =gUnk_08121648 + movs r1, #0xe + ands r1, r2 + lsls r2, r1, #1 + adds r2, r2, r0 + movs r6, #0 + ldrsh r3, [r2, r6] + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r0 + movs r0, #0 + ldrsh r2, [r1, r0] + b _0808CACA + .align 2, 0 +_0808CABC: .4byte gUnk_02018EB0 +_0808CAC0: .4byte gUnk_08121648 +_0808CAC4: + movs r2, #0x80 + lsls r2, r2, #1 + adds r3, r2, #0 +_0808CACA: + lsls r0, r5, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _0808CAD6 + subs r3, #0x20 + subs r2, #0x20 +_0808CAD6: + adds r0, r4, #0 + adds r1, r3, #0 + movs r3, #0 + bl sub_0805EC9C +_0808CAE0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808CAE4 +sub_0808CAE4: @ 0x0808CAE4 + push {lr} + ldr r2, _0808CAF8 @ =gUnk_08121680 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808CAF8: .4byte gUnk_08121680 + + thumb_func_start sub_0808CAFC +sub_0808CAFC: @ 0x0808CAFC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0808CB18 @ =gUnk_08121688 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0808CB9C + pop {r4, pc} + .align 2, 0 +_0808CB18: .4byte gUnk_08121688 + + thumb_func_start sub_0808CB1C +sub_0808CB1C: @ 0x0808CB1C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0808CB70 + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xa7 + strh r0, [r4, #0x12] + movs r0, #0xd + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x60 + strh r2, [r0] + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x19] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + strb r0, [r3] + ldrb r0, [r4, #0x1b] + ands r1, r0 + movs r0, #0x80 + orrs r1, r0 + strb r1, [r4, #0x1b] +_0808CB70: + ldr r0, [r4, #0x50] + ldr r1, [r0, #0x2c] + str r1, [r4, #0x2c] + ldr r1, [r0, #0x30] + str r1, [r4, #0x30] + movs r5, #0 + str r5, [r4, #0x34] + adds r1, r4, #0 + bl sub_0806FAD8 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0808CB98 + adds r0, r4, #0 + adds r0, #0x60 + movs r1, #0 + strh r5, [r0] + strb r1, [r4, #0xd] + movs r0, #4 + strb r0, [r4, #0x1e] +_0808CB98: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808CB9C +sub_0808CB9C: @ 0x0808CB9C + push {r4, r5, lr} + adds r3, r0, #0 + adds r0, #0x68 + ldrh r1, [r0] + ldrb r4, [r0] + lsrs r5, r1, #8 + movs r2, #0 + ldrb r0, [r3, #0x14] + cmp r0, #4 + bls _0808CBB2 + movs r2, #1 +_0808CBB2: + lsls r2, r2, #6 + ldrb r1, [r3, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + cmp r4, #0xb7 + bhi _0808CBCA + ldrb r0, [r3, #0x14] + lsrs r0, r0, #1 + adds r4, r4, r0 +_0808CBCA: + ldrh r0, [r3, #0x12] + cmp r5, r0 + bne _0808CBDA + adds r0, r3, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r4, r0 + beq _0808CBE4 +_0808CBDA: + strh r5, [r3, #0x12] + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_080042AC +_0808CBE4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808CBE8 +sub_0808CBE8: @ 0x0808CBE8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r3, #4 + strb r3, [r4, #0x14] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x19] + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + ldrb r2, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + mov r2, ip + strb r0, [r2] + ldrb r0, [r4, #0x1b] + ands r1, r0 + movs r0, #0x80 + orrs r1, r0 + strb r1, [r4, #0x1b] + adds r1, r4, #0 + adds r1, #0x68 + movs r0, #0x8a + lsls r0, r0, #1 + strh r0, [r1] + subs r1, #0x10 + movs r0, #0xff + strb r0, [r1] + ldr r0, _0808CC80 @ =0x0000FF50 + strh r0, [r4, #0x36] + adds r0, r4, #0 + adds r0, #0x6a + strh r3, [r0] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + movs r1, #4 + movs r2, #4 + movs r3, #0 + bl sub_0805EC9C + ldr r0, _0808CC84 @ =gUnk_02018EB0 + str r4, [r0, #0x14] + movs r0, #0 + bl sub_0807A094 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0801D2B4 + movs r0, #0x3c + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _0808CC7C + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_0808CC7C: + pop {r4, pc} + .align 2, 0 +_0808CC80: .4byte 0x0000FF50 +_0808CC84: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CC88 +sub_0808CC88: @ 0x0808CC88 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x6a + ldrh r1, [r4] + ldr r0, _0808CCB8 @ =0x000003FF + cmp r1, r0 + bhi _0808CCB4 + adds r0, r1, #4 + strh r0, [r4] + ldrh r2, [r4] + adds r0, r5, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + ldrh r1, [r4] + adds r0, r5, #0 + movs r2, #8 + movs r3, #2 + bl sub_0806FCF4 +_0808CCB4: + pop {r4, r5, pc} + .align 2, 0 +_0808CCB8: .4byte 0x000003FF + + thumb_func_start sub_0808CCBC +sub_0808CCBC: @ 0x0808CCBC + push {r4, lr} + adds r4, r0, #0 + bl sub_0808CC88 + movs r1, #0x80 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0808CCFA + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x14 + strb r0, [r4, #0x15] + adds r0, #0xec + strh r0, [r4, #0x24] + movs r0, #0xc0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x54] + movs r1, #1 + strb r1, [r0, #0xd] + ldr r0, _0808CCFC @ =gUnk_02018EB0 + strb r1, [r0, #0x18] +_0808CCFA: + pop {r4, pc} + .align 2, 0 +_0808CCFC: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CD00 +sub_0808CD00: @ 0x0808CD00 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808CC88 + adds r0, r4, #0 + bl sub_080042B8 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _0808CD24 + adds r0, r4, #0 + bl sub_0806F69C + b _0808CD3E +_0808CD24: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xa + strb r0, [r4, #0x15] + movs r0, #0xc0 + strh r0, [r4, #0x24] + movs r0, #0xa0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldr r1, _0808CD40 @ =gUnk_02018EB0 + movs r0, #1 + strb r0, [r1, #0x19] +_0808CD3E: + pop {r4, pc} + .align 2, 0 +_0808CD40: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CD44 +sub_0808CD44: @ 0x0808CD44 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808CC88 + adds r0, r4, #0 + bl sub_080042B8 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _0808CD68 + adds r0, r4, #0 + bl sub_0806F69C + b _0808CD82 +_0808CD68: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x11 + strb r0, [r4, #0x15] + adds r0, #0xef + strh r0, [r4, #0x24] + movs r0, #0x90 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldr r1, _0808CD84 @ =gUnk_02018EB0 + movs r0, #1 + strb r0, [r1, #0x1a] +_0808CD82: + pop {r4, pc} + .align 2, 0 +_0808CD84: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CD88 +sub_0808CD88: @ 0x0808CD88 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808CC88 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _0808CDB8 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x7f + bgt _0808CDD6 + movs r0, #0x80 + strh r0, [r4, #0x2e] + b _0808CDD6 +_0808CDB8: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x68 + ldr r0, _0808CDD8 @ =0x00000C04 + strh r0, [r1] + ldr r0, [r4, #0x54] + bl sub_0805E7BC + adds r0, r4, #0 + bl sub_0805EC60 +_0808CDD6: + pop {r4, pc} + .align 2, 0 +_0808CDD8: .4byte 0x00000C04 + + thumb_func_start sub_0808CDDC +sub_0808CDDC: @ 0x0808CDDC + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808CDF6 + ldrb r0, [r1, #0xc] + adds r0, #1 + strb r0, [r1, #0xc] + movs r0, #0x10 + strb r0, [r1, #0xe] +_0808CDF6: + pop {pc} + + thumb_func_start sub_0808CDF8 +sub_0808CDF8: @ 0x0808CDF8 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808CE2C + ldr r0, _0808CE30 @ =gUnk_02033A90 + ldrb r1, [r0, #0x16] + ldrb r0, [r3, #0xc] + adds r0, #1 + adds r0, r0, r1 + strb r0, [r3, #0xc] + ldr r2, _0808CE34 @ =gUnk_081216B4 + lsls r1, r1, #1 + adds r0, r1, r2 + ldrb r0, [r0] + strb r0, [r3, #0x14] + adds r1, #1 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r3, #0x15] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r3, #0x24] +_0808CE2C: + pop {pc} + .align 2, 0 +_0808CE30: .4byte gUnk_02033A90 +_0808CE34: .4byte gUnk_081216B4 + + thumb_func_start sub_0808CE38 +sub_0808CE38: @ 0x0808CE38 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0xc7 + bgt _0808CE52 + movs r0, #0x18 + strb r0, [r4, #0x15] +_0808CE52: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0x2f + bgt _0808CE60 + ldr r1, _0808CE64 @ =gUnk_02018EB0 + movs r0, #1 + strb r0, [r1, #0x1b] +_0808CE60: + pop {r4, pc} + .align 2, 0 +_0808CE64: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CE68 +sub_0808CE68: @ 0x0808CE68 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0xc7 + bgt _0808CE82 + movs r0, #8 + strb r0, [r4, #0x15] +_0808CE82: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0xd0 + ble _0808CE90 + ldr r1, _0808CE94 @ =gUnk_02018EB0 + movs r0, #1 + strb r0, [r1, #0x1b] +_0808CE90: + pop {r4, pc} + .align 2, 0 +_0808CE94: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CE98 +sub_0808CE98: @ 0x0808CE98 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r0, #0x90 + lsls r0, r0, #1 + cmp r1, r0 + ble _0808CEB8 + ldr r1, _0808CEBC @ =gUnk_02018EB0 + movs r0, #1 + strb r0, [r1, #0x1b] +_0808CEB8: + pop {r4, pc} + .align 2, 0 +_0808CEBC: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CEC0 +sub_0808CEC0: @ 0x0808CEC0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x32 + ldrsh r0, [r4, r1] + cmp r0, #0xc7 + bgt _0808CEDA + movs r0, #0x18 + strb r0, [r4, #0x15] +_0808CEDA: + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r0, #0xf + bgt _0808CEE8 + ldr r1, _0808CEEC @ =gUnk_02018EB0 + movs r0, #1 + strb r0, [r1, #0x1b] +_0808CEE8: + pop {r4, pc} + .align 2, 0 +_0808CEEC: .4byte gUnk_02018EB0 + + thumb_func_start sub_0808CEF0 +sub_0808CEF0: @ 0x0808CEF0 + push {lr} + ldr r2, _0808CF04 @ =gUnk_081216BC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808CF04: .4byte gUnk_081216BC + + thumb_func_start sub_0808CF08 +sub_0808CF08: @ 0x0808CF08 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _0808CF50 @ =gUnk_02033A90 + ldr r3, _0808CF54 @ =gUnk_03000BF0 + ldrh r0, [r2, #0x12] + ldrh r1, [r3, #0xa] + subs r0, r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r2, #0x14] + ldrh r1, [r3, #0xc] + subs r0, r0, r1 + strh r0, [r4, #0x32] + adds r5, r4, #0 + adds r5, #0x68 + movs r0, #0x80 + strh r0, [r5] + ldrb r1, [r4, #0x11] + subs r0, #0x90 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + ldr r0, _0808CF58 @ =0x00001F17 + movs r1, #0 + bl sub_0801E1B8 + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r5] + bl sub_0801E1EC + pop {r4, r5, pc} + .align 2, 0 +_0808CF50: .4byte gUnk_02033A90 +_0808CF54: .4byte gUnk_03000BF0 +_0808CF58: .4byte 0x00001F17 + + thumb_func_start sub_0808CF5C +sub_0808CF5C: @ 0x0808CF5C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x68 + ldrh r0, [r2] + subs r0, #2 + strh r0, [r2] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x14 + bls _0808CF82 + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r3, #0x32 + ldrsh r1, [r5, r3] + ldrh r2, [r2] + bl sub_0801E1EC + b _0808D01E +_0808CF82: + ldr r0, _0808D020 @ =gUnk_03000F50 + adds r0, #0x62 + movs r1, #0x10 + strh r1, [r0] + bl sub_0808D030 + movs r0, #0 + bl sub_0801CFA8 + bl sub_080ADD30 + ldr r0, _0808D024 @ =gUnk_02024490 + movs r6, #1 + strb r6, [r0] + ldrb r0, [r5, #0xa] + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #1 + ldr r0, _0808D028 @ =gUnk_081216C8 + adds r4, r4, r0 + ldrh r1, [r4] + adds r0, r5, #0 + bl sub_080ADF80 + ldrh r1, [r4, #2] + adds r0, r5, #0 + bl sub_0801D040 + ldrh r0, [r4, #4] + strh r0, [r5, #0x12] + ldrb r0, [r5, #0xa] + cmp r0, #2 + bne _0808CFC6 + strb r0, [r5, #0x1e] +_0808CFC6: + movs r2, #2 + movs r0, #2 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #6 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r2, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r5, #0x19] + ands r1, r0 + strb r1, [r5, #0x19] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #0x1e + strb r0, [r5, #0xe] + movs r0, #0xff + strb r0, [r5, #0xf] + ldrb r0, [r5, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r5, #0x19] + movs r2, #0x80 + lsls r2, r2, #1 + adds r0, r5, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + ldr r0, _0808D02C @ =gUnk_02033A90 + strh r6, [r0, #0x10] + movs r0, #5 + movs r1, #8 + bl sub_08050054 +_0808D01E: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808D020: .4byte gUnk_03000F50 +_0808D024: .4byte gUnk_02024490 +_0808D028: .4byte gUnk_081216C8 +_0808D02C: .4byte gUnk_02033A90 + + thumb_func_start sub_0808D030 +sub_0808D030: @ 0x0808D030 + push {r4, r5, lr} + ldr r4, _0808D058 @ =gUnk_03000020 + movs r5, #0x80 + adds r0, r4, #0 + subs r0, #0x20 + ldr r1, _0808D05C @ =0x00000B74 + bl sub_0801D630 + movs r1, #0xa8 + lsls r1, r1, #2 + adds r0, r1, #0 +_0808D046: + strh r0, [r4] + adds r4, #8 + subs r5, #1 + cmp r5, #0 + bne _0808D046 + ldr r1, _0808D060 @ =gUnk_03000000 + movs r0, #1 + strb r0, [r1] + pop {r4, r5, pc} + .align 2, 0 +_0808D058: .4byte gUnk_03000020 +_0808D05C: .4byte 0x00000B74 +_0808D060: .4byte gUnk_03000000 + + thumb_func_start sub_0808D064 +sub_0808D064: @ 0x0808D064 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + adds r1, r0, #0 + adds r1, #0xff + strb r1, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r2, r0, #0x18 + cmp r2, #0 + beq _0808D0B4 + adds r0, r4, #0 + adds r0, #0x68 + ldrh r3, [r0] + adds r1, r3, #0 + adds r2, r0, #0 + cmp r1, #0 + beq _0808D08C + subs r0, r3, #2 + strh r0, [r2] + b _0808D08E +_0808D08C: + strh r1, [r2] +_0808D08E: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r3, #0x32 + ldrsh r1, [r4, r3] + ldrh r2, [r2] + bl sub_0801E1EC + ldrb r0, [r4, #0xf] + cmp r0, #0x80 + bls _0808D0A6 + subs r0, #8 + strb r0, [r4, #0xf] +_0808D0A6: + ldrb r2, [r4, #0xf] + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + b _0808D0C2 +_0808D0B4: + ldr r1, _0808D0C4 @ =gUnk_02033A90 + ldrb r0, [r1, #0xe] + adds r0, #1 + strb r0, [r1, #0xe] + strh r2, [r1, #0x10] + bl sub_0805E780 +_0808D0C2: + pop {r4, pc} + .align 2, 0 +_0808D0C4: .4byte gUnk_02033A90 + + thumb_func_start sub_0808D0C8 +sub_0808D0C8: @ 0x0808D0C8 + push {lr} + ldr r2, _0808D0DC @ =gUnk_081216DC + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808D0DC: .4byte gUnk_081216DC + + thumb_func_start sub_0808D0E0 +sub_0808D0E0: @ 0x0808D0E0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r6, [r5, #0xc] + cmp r6, #1 + beq _0808D12C + cmp r6, #1 + bgt _0808D0F4 + cmp r6, #0 + beq _0808D0FA + b _0808D192 +_0808D0F4: + cmp r6, #2 + beq _0808D150 + b _0808D192 +_0808D0FA: + movs r4, #1 + strb r4, [r5, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + movs r1, #0x40 + subs r1, r1, r0 + strb r1, [r5, #0xe] + strb r6, [r5, #0x1e] + strb r6, [r5, #0x14] + ldrb r0, [r5, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r5, #0x19] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x38 + strb r4, [r0] + b _0808D192 +_0808D12C: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D192 + movs r0, #8 + strb r0, [r5, #0xe] + movs r0, #4 + strb r0, [r5, #0xf] + movs r0, #2 + strb r0, [r5, #0xc] + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0x14] + b _0808D192 +_0808D150: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D192 + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + ands r0, r1 + cmp r0, #0 + bne _0808D180 + strb r0, [r5, #0x1e] + movs r0, #1 + strb r0, [r5, #0xc] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + movs r1, #0x40 + subs r1, r1, r0 + strb r1, [r5, #0xe] + b _0808D192 +_0808D180: + movs r0, #8 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x14] + ldrb r0, [r5, #0x1e] + movs r2, #0 + cmp r0, r1 + beq _0808D190 + adds r2, r1, #0 +_0808D190: + strb r2, [r5, #0x1e] +_0808D192: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808D194 +sub_0808D194: @ 0x0808D194 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xc] + cmp r1, #1 + beq _0808D234 + cmp r1, #1 + bgt _0808D1A8 + cmp r1, #0 + beq _0808D1AE + b _0808D234 +_0808D1A8: + cmp r1, #2 + beq _0808D1FC + b _0808D234 +_0808D1AE: + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #8 + strb r0, [r5, #0xe] + strb r1, [r5, #0xf] + strb r1, [r5, #0x1e] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r0, _0808D1F4 @ =0x00004069 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0808D1F8 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + subs r1, #0x40 + movs r2, #1 + bl sub_0800015E + b _0808D234 + .align 2, 0 +_0808D1F4: .4byte 0x00004069 +_0808D1F8: .4byte gUnk_03000BF0 +_0808D1FC: + ldr r0, _0808D274 @ =gUnk_030010A0 + ldr r3, [r0] + movs r0, #3 + ands r3, r0 + cmp r3, #0 + bne _0808D234 + ldr r4, _0808D278 @ =gUnk_03000F50 + ldrb r2, [r5, #0xd] + lsls r1, r2, #8 + movs r0, #0x10 + subs r0, r0, r2 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + lsls r1, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #0x15 + cmp r1, r0 + bne _0808D234 + adds r0, r4, #0 + adds r0, #0x66 + strh r3, [r0] + bl sub_0805E780 +_0808D234: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D272 + movs r0, #8 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0xa] + cmp r0, #9 + bne _0808D24E + movs r0, #2 + strb r0, [r5, #0xe] +_0808D24E: + ldr r4, _0808D27C @ =gUnk_08121704 + ldrb r0, [r5, #0xf] + adds r1, r0, #1 + strb r1, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r1, [r0] + adds r0, r5, #0 + bl sub_0801D2B4 + ldrb r0, [r5, #0xf] + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + bne _0808D272 + strb r0, [r5, #0xf] +_0808D272: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808D274: .4byte gUnk_030010A0 +_0808D278: .4byte gUnk_03000F50 +_0808D27C: .4byte gUnk_08121704 + + thumb_func_start sub_0808D280 +sub_0808D280: @ 0x0808D280 + push {r4, lr} + sub sp, #4 + movs r4, #0 + str r4, [sp] + movs r0, #6 + movs r1, #0x3e + movs r2, #6 + movs r3, #9 + bl sub_0805EB2C + adds r2, r0, #0 + cmp r2, #0 + beq _0808D2C4 + movs r0, #2 + strb r0, [r2, #0xc] + strb r4, [r2, #0xd] + ldrb r1, [r2, #0x19] + subs r0, #0xf + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #0x19] + ldr r1, _0808D2C8 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xc8 + lsls r0, r0, #3 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x10 + strh r0, [r1] + movs r0, #0xf6 + bl sub_080A3268 +_0808D2C4: + add sp, #4 + pop {r4, pc} + .align 2, 0 +_0808D2C8: .4byte gUnk_03000F50 + + thumb_func_start sub_0808D2CC +sub_0808D2CC: @ 0x0808D2CC + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + movs r0, #6 + movs r1, #0x3e + movs r2, #6 + movs r3, #1 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _0808D2F2 + movs r0, #9 + strb r0, [r1, #0xa] + adds r0, r1, #0 + movs r1, #2 + bl sub_0805E3A0 +_0808D2F2: + add sp, #4 + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_521 +nullsub_521: @ 0x0808D2F8 + bx lr + .align 2, 0 + + thumb_func_start sub_0808D2FC +sub_0808D2FC: @ 0x0808D2FC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0808D31C + strb r0, [r4, #0xc] + strb r0, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0807DD64 +_0808D31C: + movs r0, #0x2e + ldrsh r5, [r4, r0] + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + ldr r0, _0808D354 @ =gUnk_03000BF0 + ldrh r0, [r0, #0x16] + cmp r0, #0 + beq _0808D350 + movs r1, #0x2e + ldrsh r0, [r4, r1] + cmp r5, r0 + beq _0808D350 + ldr r0, _0808D358 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + bne _0808D350 + ldr r0, _0808D35C @ =0x0000010F + bl sub_080A3268 +_0808D350: + pop {r4, r5, pc} + .align 2, 0 +_0808D354: .4byte gUnk_03000BF0 +_0808D358: .4byte gUnk_030010A0 +_0808D35C: .4byte 0x0000010F + + thumb_func_start sub_0808D360 +sub_0808D360: @ 0x0808D360 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0808D382 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0807DD64 +_0808D382: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808D394 +sub_0808D394: @ 0x0808D394 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0808D3C4 + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #8 + strb r0, [r5, #0xe] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0808D3FC @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xc8 + lsls r0, r0, #3 + strh r0, [r2] + adds r1, #0x68 + ldr r0, _0808D400 @ =0x00001003 + strh r0, [r1] +_0808D3C4: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D3F8 + movs r0, #2 + strb r0, [r5, #0xe] + ldr r4, _0808D404 @ =gUnk_08121720 + ldrb r0, [r5, #0xf] + adds r1, r0, #1 + strb r1, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r1, [r0] + adds r0, r5, #0 + bl sub_0801D28C + ldrb r0, [r5, #0xf] + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + bne _0808D3F8 + strb r0, [r5, #0xf] +_0808D3F8: + pop {r4, r5, pc} + .align 2, 0 +_0808D3FC: .4byte gUnk_03000F50 +_0808D400: .4byte 0x00001003 +_0808D404: .4byte gUnk_08121720 + + thumb_func_start sub_0808D408 +sub_0808D408: @ 0x0808D408 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xc] + cmp r0, #0 + bne _0808D458 + movs r1, #1 + strb r1, [r3, #0xc] + ldrb r0, [r3, #0x19] + movs r2, #0xc0 + orrs r0, r2 + strb r0, [r3, #0x19] + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + ldrb r0, [r0] + movs r2, #7 + orrs r0, r2 + mov r2, ip + strb r0, [r2] + ldrb r2, [r3, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #4 + orrs r0, r2 + strb r0, [r3, #0x19] + ldrb r0, [r3, #0xb] + strb r0, [r3, #0x1e] + ldrb r0, [r3, #0xb] + subs r1, r1, r0 + lsls r1, r1, #9 + movs r0, #0x80 + lsls r0, r0, #1 + adds r1, r1, r0 + movs r2, #0xc0 + rsbs r2, r2, #0 + adds r0, r3, #0 + movs r3, #0 + bl sub_0805EC9C +_0808D458: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808D45C +sub_0808D45C: @ 0x0808D45C + push {lr} + ldr r2, _0808D470 @ =gUnk_0812172C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808D470: .4byte gUnk_0812172C + + thumb_func_start sub_0808D474 +sub_0808D474: @ 0x0808D474 + push {r4, r5, lr} + adds r5, r0, #0 + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0xb] + strb r0, [r5, #0x1e] + movs r1, #2 + strb r1, [r5, #0xc] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D4D4 + movs r0, #0x7c + bl sub_0807CBD0 + adds r1, r0, #0 + cmp r1, #0 + bne _0808D4D4 + movs r0, #1 + strb r0, [r5, #0xc] + strb r1, [r5, #0xe] + ldrb r1, [r5, #0x19] + subs r0, #0xe + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #0x19] + ldr r1, _0808D4CC @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xc8 + lsls r0, r0, #3 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + ldr r0, _0808D4D0 @ =0x00000179 + bl sub_080A3268 + b _0808D50E + .align 2, 0 +_0808D4CC: .4byte gUnk_03000F50 +_0808D4D0: .4byte 0x00000179 +_0808D4D4: + movs r0, #8 + strb r0, [r5, #0xe] + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r3, _0808D510 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0808D500 + subs r4, #0x40 +_0808D500: + ldr r0, _0808D514 @ =0x00004069 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r2, [r1] + adds r1, r4, #0 + bl sub_0800015E +_0808D50E: + pop {r4, r5, pc} + .align 2, 0 +_0808D510: .4byte gUnk_03000BF0 +_0808D514: .4byte 0x00004069 + + thumb_func_start sub_0808D518 +sub_0808D518: @ 0x0808D518 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _0808D58C @ =gUnk_030010A0 + ldr r2, [r0] + movs r0, #3 + ands r2, r0 + cmp r2, #0 + bne _0808D58A + ldr r3, _0808D590 @ =gUnk_03000F50 + ldrb r0, [r5, #0xe] + movs r1, #0x10 + subs r1, r1, r0 + lsls r1, r1, #8 + orrs r1, r0 + adds r0, r3, #0 + adds r0, #0x68 + strh r1, [r0] + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + cmp r1, #0x10 + bne _0808D58A + movs r0, #2 + strb r0, [r5, #0xc] + movs r0, #8 + strb r0, [r5, #0xe] + ldrb r1, [r5, #0x19] + subs r0, #0x15 + ands r0, r1 + strb r0, [r5, #0x19] + adds r0, r3, #0 + adds r0, #0x66 + strh r2, [r0] + ldr r0, _0808D594 @ =0x00004069 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0808D598 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0808D58A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0808D58C: .4byte gUnk_030010A0 +_0808D590: .4byte gUnk_03000F50 +_0808D594: .4byte 0x00004069 +_0808D598: .4byte gUnk_03000BF0 + + thumb_func_start sub_0808D59C +sub_0808D59C: @ 0x0808D59C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D5D4 + movs r0, #8 + strb r0, [r5, #0xe] + ldr r4, _0808D5D8 @ =gUnk_08121738 + ldrb r0, [r5, #0xf] + adds r1, r0, #1 + strb r1, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x17 + adds r0, r0, r4 + ldrh r1, [r0] + adds r0, r5, #0 + bl sub_0801D2B4 + ldrb r0, [r5, #0xf] + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + cmp r0, #0 + bne _0808D5D4 + strb r0, [r5, #0xf] +_0808D5D4: + pop {r4, r5, pc} + .align 2, 0 +_0808D5D8: .4byte gUnk_08121738 + + thumb_func_start sub_0808D5DC +sub_0808D5DC: @ 0x0808D5DC + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xc] + cmp r0, #0 + bne _0808D614 + movs r2, #1 + movs r0, #1 + strb r0, [r3, #0xc] + ldrb r1, [r3, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + ldrb r0, [r3, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r3, #0x19] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r3, #0xa] + strb r0, [r3, #0x1e] + adds r0, r3, #0 + bl sub_0808D618 +_0808D614: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808D618 +sub_0808D618: @ 0x0808D618 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + ldr r7, _0808D664 @ =gUnk_08121750 + cmp r0, #0 + beq _0808D626 + ldr r7, _0808D668 @ =gUnk_0812176A +_0808D626: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r3, _0808D66C @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + movs r6, #0 + adds r4, r7, #0 +_0808D64A: + movs r0, #0 + ldrsh r1, [r4, r0] + adds r1, r5, r1 + ldr r0, _0808D670 @ =0x00004074 + movs r2, #1 + bl sub_0800015E + adds r4, #2 + adds r6, #1 + cmp r6, #0xc + bls _0808D64A + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808D664: .4byte gUnk_08121750 +_0808D668: .4byte gUnk_0812176A +_0808D66C: .4byte gUnk_03000BF0 +_0808D670: .4byte 0x00004074 + + thumb_func_start sub_0808D674 +sub_0808D674: @ 0x0808D674 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808D750 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x1f + bhi _0808D750 + lsls r0, r0, #2 + ldr r1, _0808D698 @ =_0808D69C + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808D698: .4byte _0808D69C +_0808D69C: @ jump table + .4byte _0808D740 @ case 0 + .4byte _0808D740 @ case 1 + .4byte _0808D750 @ case 2 + .4byte _0808D750 @ case 3 + .4byte _0808D740 @ case 4 + .4byte _0808D740 @ case 5 + .4byte _0808D740 @ case 6 + .4byte _0808D750 @ case 7 + .4byte _0808D740 @ case 8 + .4byte _0808D740 @ case 9 + .4byte _0808D740 @ case 10 + .4byte _0808D740 @ case 11 + .4byte _0808D740 @ case 12 + .4byte _0808D750 @ case 13 + .4byte _0808D750 @ case 14 + .4byte _0808D750 @ case 15 + .4byte _0808D750 @ case 16 + .4byte _0808D750 @ case 17 + .4byte _0808D750 @ case 18 + .4byte _0808D748 @ case 19 + .4byte _0808D71C @ case 20 + .4byte _0808D750 @ case 21 + .4byte _0808D750 @ case 22 + .4byte _0808D750 @ case 23 + .4byte _0808D750 @ case 24 + .4byte _0808D750 @ case 25 + .4byte _0808D750 @ case 26 + .4byte _0808D750 @ case 27 + .4byte _0808D750 @ case 28 + .4byte _0808D750 @ case 29 + .4byte _0808D740 @ case 30 + .4byte _0808D73C @ case 31 +_0808D71C: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r4, #0x4c] + str r0, [r4, #0x54] + b _0808D750 +_0808D73C: + bl sub_0805E780 +_0808D740: + adds r0, r4, #0 + bl sub_0808DAD0 + b _0808D750 +_0808D748: + adds r0, r4, #0 + bl sub_0808D76C + b _0808D766 +_0808D750: + ldr r0, _0808D768 @ =gUnk_08121784 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08080CB4 +_0808D766: + pop {r4, pc} + .align 2, 0 +_0808D768: .4byte gUnk_08121784 + + thumb_func_start sub_0808D76C +sub_0808D76C: @ 0x0808D76C + push {lr} + ldr r2, _0808D780 @ =gUnk_08121798 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808D780: .4byte gUnk_08121798 + + thumb_func_start sub_0808D784 +sub_0808D784: @ 0x0808D784 + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xd] + strb r1, [r0, #0x1d] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + bx lr + + thumb_func_start sub_0808D798 +sub_0808D798: @ 0x0808D798 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_0808D7A0 +sub_0808D7A0: @ 0x0808D7A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0808D7B2 + adds r0, r4, #0 + bl sub_0808DB2C +_0808D7B2: + pop {r4, pc} + + thumb_func_start sub_0808D7B4 +sub_0808D7B4: @ 0x0808D7B4 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3c + movs r2, #0x17 + strb r2, [r0] + adds r1, #8 + movs r0, #0x49 + strb r0, [r1] + subs r1, #1 + movs r0, #7 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3b + strb r2, [r0] + adds r1, #6 + movs r0, #0xff + strb r0, [r1] + ldr r0, _0808D818 @ =gUnk_080FD1A8 + str r0, [r4, #0x48] + movs r0, #1 + strb r0, [r4, #0x1c] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + movs r0, #0x9b + lsls r0, r0, #1 + bl sub_08004488 + ldrb r0, [r4, #0xb] + cmp r0, #2 + beq _0808D834 + cmp r0, #2 + bgt _0808D81C + cmp r0, #0 + beq _0808D822 + b _0808D82E + .align 2, 0 +_0808D818: .4byte gUnk_080FD1A8 +_0808D81C: + cmp r0, #3 + beq _0808D83C + b _0808D82E +_0808D822: + movs r0, #0xf0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] +_0808D82E: + movs r0, #1 + strb r0, [r4, #0xc] + b _0808D842 +_0808D834: + adds r0, r4, #0 + bl sub_0808DAD0 + b _0808D842 +_0808D83C: + adds r0, r4, #0 + bl sub_0808DB2C +_0808D842: + pop {r4, pc} + + thumb_func_start sub_0808D844 +sub_0808D844: @ 0x0808D844 + push {lr} + adds r3, r0, #0 + ldr r0, [r3, #0x34] + ldr r1, _0808D870 @ =0xFFFF2000 + adds r0, r0, r1 + str r0, [r3, #0x34] + adds r0, r3, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _0808D88A + ldrb r0, [r3, #0xe] + cmp r0, #0 + beq _0808D874 + adds r2, r3, #0 + adds r2, #0x78 + ldrh r1, [r2] + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #1 + strh r0, [r2] + b _0808D87E + .align 2, 0 +_0808D870: .4byte 0xFFFF2000 +_0808D874: + adds r1, r3, #0 + adds r1, #0x78 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r1] +_0808D87E: + movs r0, #2 + strb r0, [r3, #0xc] + movs r0, #1 + strb r0, [r3, #0xf] + movs r0, #0x80 + strh r0, [r3, #0x24] +_0808D88A: + pop {pc} + + thumb_func_start sub_0808D88C +sub_0808D88C: @ 0x0808D88C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808D910 + bl sub_08000E50 + adds r5, r0, #0 + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x20 + strb r0, [r4, #0xf] + ldr r2, _0808D8D0 @ =gUnk_081217A4 + lsrs r0, r5, #8 + movs r1, #1 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0808DAA0 + cmp r0, #0 + beq _0808D8D4 + movs r0, #0x1f + ands r5, r0 + strb r5, [r4, #0x15] + b _0808D8EE + .align 2, 0 +_0808D8D0: .4byte gUnk_081217A4 +_0808D8D4: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r4, #0 + adds r2, #0x74 + ldrh r2, [r2] + adds r3, r4, #0 + adds r3, #0x76 + ldrh r3, [r3] + bl sub_080045D4 + strb r0, [r4, #0x15] +_0808D8EE: + ldrb r1, [r4, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _0808D910 + movs r0, #0x10 + eors r1, r0 + lsrs r1, r1, #4 + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0808D910: + adds r0, r4, #0 + bl sub_080AEFB4 + bl sub_0805E40C + cmp r0, #0 + bne _0808D954 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0808D954 + adds r5, r4, #0 + adds r5, #0x78 + ldrh r0, [r5] + subs r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0808D93C + adds r0, r4, #0 + movs r1, #0 + bl sub_08081404 +_0808D93C: + ldrh r0, [r5] + cmp r0, #0x77 + bhi _0808D954 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0808D954: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808D958 +sub_0808D958: @ 0x0808D958 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x54] + ldrh r1, [r2, #8] + movs r0, #0xc2 + lsls r0, r0, #2 + cmp r1, r0 + beq _0808D972 + adds r0, r4, #0 + movs r1, #0 + bl sub_08081404 + b _0808D992 +_0808D972: + adds r0, r2, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + ldr r1, _0808D994 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080177A0 + cmp r0, #0 + beq _0808D992 + adds r0, r4, #0 + bl sub_0808DB2C +_0808D992: + pop {r4, pc} + .align 2, 0 +_0808D994: .4byte gLinkEntity + + thumb_func_start sub_0808D998 +sub_0808D998: @ 0x0808D998 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, [r5, #0x54] + ldr r2, _0808DA28 @ =gUnk_080C9160 + ldrb r0, [r5, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + movs r3, #0 + ldrsh r1, [r0, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + cmp r0, #0 + bge _0808D9B8 + ldr r1, _0808DA2C @ =0x0000FFFF + adds r0, r0, r1 +_0808D9B8: + asrs r0, r0, #0x10 + ldrh r3, [r6, #0x2e] + adds r0, r0, r3 + strh r0, [r5, #0x2e] + ldrb r0, [r5, #0xe] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #8 + cmp r0, #0 + bge _0808D9DA + ldr r3, _0808DA2C @ =0x0000FFFF + adds r0, r0, r3 +_0808D9DA: + asrs r1, r0, #0x10 + ldrh r0, [r6, #0x32] + subs r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r3, [r5, #0xe] + adds r0, r3, #0 + adds r0, #8 + strb r0, [r5, #0xe] + ldrh r0, [r6, #0x36] + strh r0, [r5, #0x36] + ldrb r2, [r6, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r4, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r6, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x19] + subs r3, #0x39 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + cmp r3, #0x7e + bhi _0808DA30 + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #3 + b _0808DA3E + .align 2, 0 +_0808DA28: .4byte gUnk_080C9160 +_0808DA2C: .4byte 0x0000FFFF +_0808DA30: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #5 +_0808DA3E: + orrs r1, r0 + strb r1, [r2] + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + adds r4, r5, #0 + adds r4, #0x63 + cmp r0, #0 + bne _0808DA70 + movs r0, #6 + strb r0, [r5, #0xf] + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x16 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0808DA70 + adds r0, r5, #0 + movs r1, #1 + bl sub_08081404 +_0808DA70: + movs r1, #0 + ldrsb r1, [r4, r1] + movs r0, #0x11 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0808DA8E + ldrb r2, [r5, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] +_0808DA8E: + adds r1, r5, #0 + adds r1, #0x87 + ldrb r0, [r1] + cmp r0, #0xa + bls _0808DA9C + movs r0, #0xa + strb r0, [r1] +_0808DA9C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808DAA0 +sub_0808DAA0: @ 0x0808DAA0 + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + adds r1, r2, #0 + adds r1, #0x74 + ldrh r1, [r1] + subs r0, r0, r1 + adds r0, #0x30 + cmp r0, #0x60 + bhi _0808DACC + movs r1, #0x32 + ldrsh r0, [r2, r1] + adds r1, r2, #0 + adds r1, #0x76 + ldrh r1, [r1] + subs r0, r0, r1 + adds r0, #0x30 + cmp r0, #0x60 + bhi _0808DACC + movs r0, #1 + b _0808DACE +_0808DACC: + movs r0, #0 +_0808DACE: + pop {pc} + + thumb_func_start sub_0808DAD0 +sub_0808DAD0: @ 0x0808DAD0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0808DAE0 + bl sub_0805E780 +_0808DAE0: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x80 + strb r0, [r4, #0xe] + movs r0, #6 + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xfb + strb r0, [r1] + ldr r0, _0808DB28 @ =gLinkEntity + str r0, [r4, #0x54] + adds r1, r4, #0 + bl sub_0806FA24 + pop {r4, pc} + .align 2, 0 +_0808DB28: .4byte gLinkEntity + + thumb_func_start sub_0808DB2C +sub_0808DB2C: @ 0x0808DB2C + push {lr} + adds r1, r0, #0 + movs r2, #0 + movs r0, #2 + strb r0, [r1, #0xc] + strb r2, [r1, #0xd] + ldrb r2, [r1, #0x10] + movs r0, #0x80 + orrs r0, r2 + strb r0, [r1, #0x10] + adds r2, r1, #0 + adds r2, #0x3b + movs r0, #1 + strb r0, [r2] + ldr r0, _0808DB50 @ =gLinkEntity + bl sub_0806FA24 + pop {pc} + .align 2, 0 +_0808DB50: .4byte gLinkEntity + + thumb_func_start sub_0808DB54 +sub_0808DB54: @ 0x0808DB54 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldrb r0, [r7, #0xc] + cmp r0, #1 + beq _0808DBE8 + cmp r0, #1 + bgt _0808DB6C + cmp r0, #0 + beq _0808DB72 + b _0808DC46 +_0808DB6C: + cmp r0, #2 + beq _0808DC2C + b _0808DC46 +_0808DB72: + ldrb r0, [r7, #0xe] + movs r1, #3 + cmp r0, #0 + beq _0808DB7C + movs r1, #1 +_0808DB7C: + strb r1, [r7, #0xc] + adds r1, r7, #0 + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #8 + strb r0, [r1] + adds r0, r7, #0 + movs r1, #0xa + bl sub_08004260 + ldrb r0, [r7, #0xc] + cmp r0, #1 + bne _0808DB9A + ldr r0, _0808DBDC @ =0x0000FF80 + strh r0, [r7, #0x36] +_0808DB9A: + ldrb r0, [r7, #0xb] + cmp r0, #0 + beq _0808DBA2 + b _0808DD72 +_0808DBA2: + ldrh r1, [r7, #0x32] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + adds r0, #0xc + strh r0, [r7, #0x32] + ldr r0, _0808DBE0 @ =0x00004023 + movs r2, #0x2e + ldrsh r1, [r7, r2] + ldr r3, _0808DBE4 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r5, #0x32 + ldrsh r2, [r7, r5] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r7, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + b _0808DD72 + .align 2, 0 +_0808DBDC: .4byte 0x0000FF80 +_0808DBE0: .4byte 0x00004023 +_0808DBE4: .4byte gUnk_03000BF0 +_0808DBE8: + movs r1, #0x80 + lsls r1, r1, #5 + adds r0, r7, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _0808DBF8 + b _0808DD72 +_0808DBF8: + adds r0, r7, #0 + movs r1, #0x46 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0808DC0E + ldrh r0, [r1, #0x32] + adds r0, #8 + strh r0, [r1, #0x32] +_0808DC0E: + movs r0, #0x1e + movs r1, #0 + bl sub_08080964 + ldr r0, _0808DC28 @ =0x0000010B + bl sub_080A3268 + movs r0, #2 + strb r0, [r7, #0xc] + movs r0, #0x3c + strb r0, [r7, #0xe] + b _0808DD72 + .align 2, 0 +_0808DC28: .4byte 0x0000010B +_0808DC2C: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0808DC3A + b _0808DD72 +_0808DC3A: + movs r0, #3 + strb r0, [r7, #0xc] + movs r0, #0x73 + bl sub_080A3268 + b _0808DD72 +_0808DC46: + ldrb r0, [r7, #0xb] + cmp r0, #0 + beq _0808DC4E + b _0808DD72 +_0808DC4E: + ldr r0, _0808DCC8 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r0, [r7, r3] + cmp r1, r0 + bge _0808DCDC + ldr r0, _0808DCCC @ =gUnk_03003F80 + ldrb r0, [r0, #0x12] + cmp r0, #0x1e + bne _0808DC66 + b _0808DD72 +_0808DC66: + adds r0, r7, #0 + bl sub_080002A0 + ldr r1, _0808DCD0 @ =0x00004017 + cmp r0, r1 + beq _0808DC74 + b _0808DD72 +_0808DC74: + ldr r0, _0808DCD4 @ =0x00004023 + movs r5, #0x2e + ldrsh r1, [r7, r5] + ldr r4, _0808DCD8 @ =gUnk_03000BF0 + ldrh r2, [r4, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r5, #0x3f + ands r1, r5 + movs r3, #0x32 + ldrsh r2, [r7, r3] + ldrh r3, [r4, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r5 + lsls r2, r2, #6 + orrs r1, r2 + adds r6, r7, #0 + adds r6, #0x38 + ldrb r2, [r6] + bl sub_0800015E + movs r1, #0x2e + ldrsh r0, [r7, r1] + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r5 + movs r2, #0x32 + ldrsh r1, [r7, r2] + ldrh r2, [r4, #8] + adds r2, #0x10 + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r5 + lsls r1, r1, #6 + orrs r0, r1 + ldrb r1, [r6] + bl sub_0807BA8C + b _0808DD72 + .align 2, 0 +_0808DCC8: .4byte gLinkEntity +_0808DCCC: .4byte gUnk_03003F80 +_0808DCD0: .4byte 0x00004017 +_0808DCD4: .4byte 0x00004023 +_0808DCD8: .4byte gUnk_03000BF0 +_0808DCDC: + adds r0, r7, #0 + bl sub_080002A0 + ldr r3, _0808DD44 @ =0x00004017 + mov r8, r3 + cmp r0, r8 + beq _0808DD72 + movs r5, #0x2e + ldrsh r1, [r7, r5] + ldr r5, _0808DD48 @ =gUnk_03000BF0 + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r6, #0x3f + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r7, r2] + ldrh r2, [r5, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r7, #0 + adds r4, #0x38 + ldrb r2, [r4] + mov r0, r8 + bl sub_0800015E + ldrb r0, [r7, #0xa] + cmp r0, #0 + bne _0808DD4C + movs r3, #0x2e + ldrsh r1, [r7, r3] + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r6 + movs r2, #0x32 + ldrsh r0, [r7, r2] + ldrh r2, [r5, #8] + adds r2, #0x10 + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r1, r0 + ldrb r2, [r4] + mov r0, r8 + bl sub_0800015E + b _0808DD72 + .align 2, 0 +_0808DD44: .4byte 0x00004017 +_0808DD48: .4byte gUnk_03000BF0 +_0808DD4C: + ldr r0, _0808DD78 @ =0x00004014 + movs r3, #0x2e + ldrsh r1, [r7, r3] + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + movs r3, #0x32 + ldrsh r2, [r7, r3] + ldrh r3, [r5, #8] + adds r3, #0x10 + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r4] + bl sub_0800015E +_0808DD72: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808DD78: .4byte 0x00004014 + + thumb_func_start sub_0808DD7C +sub_0808DD7C: @ 0x0808DD7C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + beq _0808DD9C + ldr r0, _0808DD98 @ =gUnk_081217B0 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _0808DDAC + .align 2, 0 +_0808DD98: .4byte gUnk_081217B0 +_0808DD9C: + ldr r0, _0808DDB0 @ =gUnk_081217A8 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_0808DDAC: + pop {pc} + .align 2, 0 +_0808DDB0: .4byte gUnk_081217A8 + + thumb_func_start sub_0808DDB4 +sub_0808DDB4: @ 0x0808DDB4 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0808DDDC + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x6c + movs r0, #0xf0 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0808DDE8 +_0808DDDC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808DDE0 +sub_0808DDE0: @ 0x0808DDE0 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_0808DDE8 +sub_0808DDE8: @ 0x0808DDE8 + push {r4, r5, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x6c + ldrh r0, [r4] + subs r0, #1 + strh r0, [r4] + bl sub_0807953C + cmp r0, #0 + beq _0808DE04 + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] +_0808DE04: + ldrb r0, [r5, #0xf] + cmp r0, #0x1e + bhi _0808DE1C + ldr r0, _0808DE8C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + ldr r1, _0808DE90 @ =0x00001810 + ands r0, r1 + cmp r0, #0 + bne _0808DE1C + ldrh r0, [r4] + cmp r0, #0 + bne _0808DE2A +_0808DE1C: + ldr r0, _0808DE8C @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + ldr r2, _0808DE94 @ =0xFFFFFBFF + ands r1, r2 + str r1, [r0, #0x30] + bl sub_0805E780 +_0808DE2A: + ldr r3, _0808DE98 @ =gLinkEntity + ldr r1, _0808DE9C @ =gUnk_081217B8 + ldrb r0, [r3, #0x14] + lsrs r0, r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r3, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x2e] + ldrh r0, [r3, #0x32] + subs r0, #6 + strh r0, [r5, #0x32] + ldr r0, [r3, #0x34] + str r0, [r5, #0x34] + adds r0, r3, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r2, [r3, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r4, [r5, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r5, #0x19] + ldrb r0, [r3, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x1b] + ldr r0, _0808DE8C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #3 + ands r0, r1 + cmp r0, #0 + beq _0808DEA0 + adds r0, r5, #0 + bl sub_08004274 + b _0808DEA4 + .align 2, 0 +_0808DE8C: .4byte gUnk_03003F80 +_0808DE90: .4byte 0x00001810 +_0808DE94: .4byte 0xFFFFFBFF +_0808DE98: .4byte gLinkEntity +_0808DE9C: .4byte gUnk_081217B8 +_0808DEA0: + bl sub_0805E780 +_0808DEA4: + ldr r1, _0808DEC0 @ =gLinkEntity + ldrb r0, [r1, #0x14] + lsrs r0, r0, #1 + cmp r0, #2 + bne _0808DEC4 + adds r0, r1, #0 + movs r1, #3 + adds r2, r5, #0 + bl sub_0806FEBC + ldrh r0, [r5, #0x32] + subs r0, #5 + strh r0, [r5, #0x32] + b _0808DECE + .align 2, 0 +_0808DEC0: .4byte gLinkEntity +_0808DEC4: + adds r0, r1, #0 + movs r1, #0 + adds r2, r5, #0 + bl sub_0806FEBC +_0808DECE: + pop {r4, r5, pc} + + thumb_func_start sub_0808DED0 +sub_0808DED0: @ 0x0808DED0 + push {lr} + ldr r2, _0808DEE4 @ =gUnk_081217BC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808DEE4: .4byte gUnk_081217BC + + thumb_func_start sub_0808DEE8 +sub_0808DEE8: @ 0x0808DEE8 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r5, #0x10] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldr r3, _0808DF74 @ =gLinkEntity + ldrb r1, [r3, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r5, #0x1b] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x1b] + ldrb r0, [r3, #0x14] + lsrs r0, r0, #1 + strb r0, [r5, #0x14] + adds r0, #1 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #3 + strb r0, [r5, #0x15] + movs r3, #6 + movs r0, #6 + strb r0, [r5, #0xf] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + adds r1, r5, #0 + adds r1, #0x60 + movs r0, #0x3c + strh r0, [r1] + ldrb r1, [r5, #0x1a] + movs r2, #0x10 + rsbs r2, r2, #0 + adds r0, r2, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r5, #0x1a] + adds r0, r5, #0 + adds r0, #0x72 + strh r4, [r0] + subs r0, #6 + strh r4, [r0] + ldrb r0, [r5, #0x11] + ands r2, r0 + orrs r2, r3 + strb r2, [r5, #0x11] + adds r0, r5, #0 + movs r1, #7 + bl sub_08004260 + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0808DF78 + movs r0, #0x28 + strb r0, [r5, #0xe] + b _0808DFAA + .align 2, 0 +_0808DF74: .4byte gLinkEntity +_0808DF78: + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + ldr r0, _0808DF9C @ =gUnk_03003F80 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808DFA0 + movs r0, #0x28 + b _0808DFA2 + .align 2, 0 +_0808DF9C: .4byte gUnk_03003F80 +_0808DFA0: + movs r0, #0x50 +_0808DFA2: + strb r0, [r5, #0xe] + adds r0, r5, #0 + bl sub_0808DFAC +_0808DFAA: + pop {r4, r5, pc} + + thumb_func_start sub_0808DFAC +sub_0808DFAC: @ 0x0808DFAC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0808E00E + ldr r1, _0808DFF0 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + cmp r0, #0 + beq _0808DFCC + ldrb r1, [r1, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808DFD0 +_0808DFCC: + bl sub_0805E780 +_0808DFD0: + ldr r0, _0808DFF0 @ =gUnk_03003F80 + adds r2, r0, #0 + adds r2, #0x21 + ldrb r0, [r2] + cmp r0, #0x4f + bls _0808DFF8 + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + ldrb r6, [r2] + ldr r7, _0808DFF4 @ =gUnk_081217D8 + b _0808E038 + .align 2, 0 +_0808DFF0: .4byte gUnk_03003F80 +_0808DFF4: .4byte gUnk_081217D8 +_0808DFF8: + cmp r0, #0 + beq _0808E008 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _0808E1BA +_0808E008: + bl sub_0805E780 + b _0808E038 +_0808E00E: + ldr r5, _0808E02C @ =gUnk_03003F80 + ldrb r0, [r5, #4] + cmp r0, #0 + bne _0808E01A + bl sub_0805E780 +_0808E01A: + ldrb r1, [r5, #0x1b] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808E034 + ldrb r6, [r5, #0x1b] + ldr r7, _0808E030 @ =gUnk_081217D0 + b _0808E038 + .align 2, 0 +_0808E02C: .4byte gUnk_03003F80 +_0808E030: .4byte gUnk_081217D0 +_0808E034: + bl sub_0805E780 +_0808E038: + cmp r6, #0 + bne _0808E03E + b _0808E1B6 +_0808E03E: + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0808E084 + subs r0, #1 + strb r0, [r4, #0xe] + movs r2, #3 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0808E068 + ldr r0, _0808E080 @ =gUnk_03003F80 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + bne _0808E068 + movs r2, #7 +_0808E068: + ldrb r0, [r4, #0xe] + ands r0, r2 + adds r5, r4, #0 + adds r5, #0x6c + adds r6, r4, #0 + adds r6, #0x38 + cmp r0, #0 + bne _0808E0E4 + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _0808E0E4 + .align 2, 0 +_0808E080: .4byte gUnk_03003F80 +_0808E084: + adds r5, r4, #0 + adds r5, #0x72 + ldrh r0, [r5] + cmp r0, #0 + beq _0808E0BC + ldr r0, _0808E0B8 @ =gUnk_030010A0 + ldr r1, [r0] + movs r0, #0x1f + ands r1, r0 + subs r5, #6 + adds r6, r4, #0 + adds r6, #0x38 + cmp r1, #0 + bne _0808E0E4 + adds r0, r4, #0 + movs r1, #7 + movs r2, #0 + bl CreateFX + cmp r0, #0 + beq _0808E0E4 + ldrb r1, [r6] + adds r0, #0x38 + strb r1, [r0] + b _0808E0E4 + .align 2, 0 +_0808E0B8: .4byte gUnk_030010A0 +_0808E0BC: + ldr r0, _0808E140 @ =0x00000115 + bl sub_08004488 + adds r0, r4, #0 + movs r1, #0x12 + movs r2, #0 + bl CreateFX + adds r6, r4, #0 + adds r6, #0x38 + cmp r0, #0 + beq _0808E0DA + ldrb r1, [r6] + adds r0, #0x38 + strb r1, [r0] +_0808E0DA: + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + adds r5, r4, #0 + adds r5, #0x6c +_0808E0E4: + ldr r2, _0808E144 @ =gLinkEntity + ldrb r1, [r2, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r3, [r4, #0x19] + movs r0, #0x3f + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + adds r0, r7, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + adds r0, r0, r7 + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrh r0, [r2, #0x36] + strh r0, [r4, #0x36] + adds r2, #0x38 + ldrb r0, [r2] + strb r0, [r6] + ldrb r0, [r4, #0x14] + cmp r0, #1 + beq _0808E148 + cmp r0, #1 + ble _0808E136 + cmp r0, #2 + beq _0808E150 + cmp r0, #3 + beq _0808E15A +_0808E136: + ldrh r0, [r4, #0x32] + ldrh r1, [r5] + subs r0, r0, r1 + strh r0, [r4, #0x32] + b _0808E162 + .align 2, 0 +_0808E140: .4byte 0x00000115 +_0808E144: .4byte gLinkEntity +_0808E148: + ldrh r0, [r5] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + b _0808E160 +_0808E150: + ldrh r0, [r5] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + b _0808E162 +_0808E15A: + ldrh r0, [r4, #0x2e] + ldrh r1, [r5] + subs r0, r0, r1 +_0808E160: + strh r0, [r4, #0x2e] +_0808E162: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808E17A + movs r0, #6 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r4, #0x15] +_0808E17A: + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0808E1BA + ldr r0, _0808E1AC @ =gUnk_03003F80 + ldrb r1, [r0, #0x1b] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0808E1BA + ldrb r0, [r4, #0x10] + movs r1, #0xdf + ands r1, r0 + strb r1, [r4, #0x10] + movs r0, #6 + bl sub_0807CA84 + cmp r0, #1 + bne _0808E1B0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + b _0808E1BA + .align 2, 0 +_0808E1AC: .4byte gUnk_03003F80 +_0808E1B0: + bl sub_0805E780 + b _0808E1BA +_0808E1B6: + bl sub_0805E780 +_0808E1BA: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0808E1BC +sub_0808E1BC: @ 0x0808E1BC + push {r4, lr} + adds r4, r0, #0 + bl sub_08079BD8 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r2, #0 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r0, _0808E204 @ =gLinkEntity + ldrb r0, [r0, #0x14] + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x60 + strh r2, [r0] + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x1a] + movs r0, #0xaf + strh r0, [r4, #0x12] + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_0808E204: .4byte gLinkEntity + + thumb_func_start sub_0808E208 +sub_0808E208: @ 0x0808E208 + push {r4, lr} + adds r4, r0, #0 + bl sub_08079BD8 + adds r0, r4, #0 + bl sub_08004274 + ldr r0, _0808E240 @ =gUnk_03003F80 + ldrb r0, [r0, #0x1b] + cmp r0, #0 + beq _0808E248 + ldr r0, _0808E244 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0808E24C + ldrb r2, [r4, #0x1a] + lsls r1, r2, #0x1c + lsrs r1, r1, #0x1c + movs r0, #4 + eors r1, r0 + subs r0, #0x14 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + b _0808E24C + .align 2, 0 +_0808E240: .4byte gUnk_03003F80 +_0808E244: .4byte gUnk_030010A0 +_0808E248: + bl sub_0805E780 +_0808E24C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808E260 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0808E260: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808E264 +sub_0808E264: @ 0x0808E264 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808E27C + bl sub_0805E780 +_0808E27C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808E280 +sub_0808E280: @ 0x0808E280 + push {lr} + ldr r2, _0808E294 @ =gUnk_08121B8C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808E294: .4byte gUnk_08121B8C + + thumb_func_start sub_0808E298 +sub_0808E298: @ 0x0808E298 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x38 + movs r1, #2 + strb r1, [r0] + movs r0, #1 + strb r0, [r4, #0xc] + movs r5, #0 + movs r6, #0 + adds r0, r4, #0 + bl sub_080002A0 + adds r1, r0, #0 + movs r0, #0xd1 + lsls r0, r0, #2 + cmp r1, r0 + beq _0808E2DA + cmp r1, r0 + bhi _0808E2C6 + subs r0, #1 + cmp r1, r0 + beq _0808E2D8 + b _0808E2E2 +_0808E2C6: + ldr r0, _0808E2D4 @ =0x00000345 + cmp r1, r0 + beq _0808E2DE + adds r0, #1 + cmp r1, r0 + beq _0808E2E6 + b _0808E2E2 + .align 2, 0 +_0808E2D4: .4byte 0x00000345 +_0808E2D8: + movs r5, #0x10 +_0808E2DA: + movs r6, #0x10 + b _0808E2E6 +_0808E2DE: + movs r5, #0x10 + b _0808E2E6 +_0808E2E2: + bl sub_0805E780 +_0808E2E6: + ldrh r0, [r4, #0x2e] + adds r0, r0, r5 + movs r2, #0x10 + rsbs r2, r2, #0 + adds r1, r2, #0 + ands r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, r0, r6 + ands r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldr r1, _0808E314 @ =0x00000347 + adds r0, r4, #0 + bl sub_0808E354 + adds r0, r4, #0 + bl sub_0808E318 + pop {r4, r5, r6, pc} + .align 2, 0 +_0808E314: .4byte 0x00000347 + + thumb_func_start sub_0808E318 +sub_0808E318: @ 0x0808E318 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808E340 + ldr r1, _0808E33C @ =0x00000343 + adds r0, r4, #0 + bl sub_0808E354 + bl sub_0805E780 + b _0808E34E + .align 2, 0 +_0808E33C: .4byte 0x00000343 +_0808E340: + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808E34E + ldr r0, _0808E350 @ =0x0000018B + bl sub_08004488 +_0808E34E: + pop {r4, pc} + .align 2, 0 +_0808E350: .4byte 0x0000018B + + thumb_func_start sub_0808E354 +sub_0808E354: @ 0x0808E354 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r6, r0, #0 + lsls r1, r1, #0x10 + mov r8, r1 + mov r0, r8 + lsrs r0, r0, #0x10 + mov r8, r0 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldr r5, _0808E410 @ =gUnk_03000BF0 + ldrh r0, [r5, #6] + adds r0, #0x10 + subs r1, r1, r0 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r3, #0x32 + ldrsh r0, [r6, r3] + ldrh r2, [r5, #8] + adds r2, #0x10 + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, r8 + movs r2, #2 + bl sub_0807B7D8 + mov r0, r8 + adds r0, #1 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + adds r3, #0x10 + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #2 + bl sub_0807B7D8 + mov r0, r8 + adds r0, #2 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldrh r2, [r5, #6] + adds r2, #0x10 + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #2 + bl sub_0807B7D8 + movs r0, #3 + add r8, r0 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r4 + movs r3, #0x32 + ldrsh r0, [r6, r3] + ldrh r2, [r5, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, r8 + movs r2, #2 + bl sub_0807B7D8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_0808E410: .4byte gUnk_03000BF0 + + thumb_func_start sub_0808E414 +sub_0808E414: @ 0x0808E414 + push {lr} + ldr r2, _0808E428 @ =gUnk_08121BD8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808E428: .4byte gUnk_08121BD8 + + thumb_func_start sub_0808E42C +sub_0808E42C: @ 0x0808E42C + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x11] + subs r1, #0x11 + ands r1, r2 + movs r2, #6 + orrs r1, r2 + strb r1, [r0, #0x11] + ldrb r1, [r0, #0xa] + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808E448 +sub_0808E448: @ 0x0808E448 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x10 + bl sub_0805436C + cmp r0, #1 + bls _0808E45A + bl sub_0805E780 +_0808E45A: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #1 + beq _0808E472 + cmp r0, #0x80 + bne _0808E486 + bl sub_0805E780 +_0808E472: + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + b _0808E494 +_0808E486: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] +_0808E494: + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0808E4A2 + ldr r0, [r4, #0x34] + ldr r1, _0808E4A4 @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r4, #0x34] +_0808E4A2: + pop {r4, pc} + .align 2, 0 +_0808E4A4: .4byte 0xFFFF8000 + + thumb_func_start sub_0808E4A8 +sub_0808E4A8: @ 0x0808E4A8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xa] + lsls r1, r2, #1 + ldr r0, _0808E540 @ =gUnk_08121C40 + adds r3, r1, r0 + ldrb r6, [r4, #0xc] + cmp r6, #0 + bne _0808E54C + movs r5, #1 + strb r5, [r4, #0xc] + movs r2, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0808E4C8 + movs r2, #1 +_0808E4C8: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x38 + strb r5, [r0] + ldrb r1, [r3] + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r3, #1] + adds r3, r4, #0 + adds r3, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x76 + strh r6, [r0] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0808E544 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + adds r0, r4, #0 + bl sub_0808E55C + ldr r1, _0808E548 @ =sub_0808E55C + adds r0, r4, #0 + movs r2, #0 + bl sub_08052D74 + b _0808E55A + .align 2, 0 +_0808E540: .4byte gUnk_08121C40 +_0808E544: .4byte gUnk_03000BF0 +_0808E548: .4byte sub_0808E55C +_0808E54C: + movs r0, #1 + ands r2, r0 + cmp r2, #0 + bne _0808E55A + adds r0, r4, #0 + bl sub_0808E670 +_0808E55A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808E55C +sub_0808E55C: @ 0x0808E55C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r0 + ldrb r0, [r0, #0xa] + cmp r0, #1 + beq _0808E614 + cmp r0, #1 + bgt _0808E576 + cmp r0, #0 + beq _0808E57A + b _0808E63A +_0808E576: + cmp r0, #2 + bne _0808E63A +_0808E57A: + mov r0, r8 + adds r0, #0x74 + ldrh r6, [r0] + ldr r0, _0808E5FC @ =0xFFFFFEFF + adds r7, r6, r0 + ldr r4, _0808E600 @ =0x0000408F + mov r5, r8 + adds r5, #0x38 + ldrb r2, [r5] + adds r0, r4, #0 + adds r1, r7, #0 + bl sub_0800015E + ldr r2, _0808E604 @ =0xFFFFFF00 + adds r1, r6, r2 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldr r0, _0808E608 @ =0x0000406C + ldr r2, _0808E60C @ =0xFFFFFEFE + adds r1, r6, r2 + ldrb r2, [r5] + bl sub_0800015E + ldr r0, _0808E610 @ =0x0000406D + adds r1, r6, #0 + subs r1, #0xff + ldrb r2, [r5] + bl sub_0800015E + mov r1, r8 + ldrb r0, [r1, #0xa] + movs r2, #6 + mov sb, r2 + cmp r0, #0 + beq _0808E63A + movs r0, #4 + mov sb, r0 + subs r4, #0x1d + adds r1, r6, #0 + adds r1, #0x3f + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x40 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x7f + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x80 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + b _0808E63A + .align 2, 0 +_0808E5FC: .4byte 0xFFFFFEFF +_0808E600: .4byte 0x0000408F +_0808E604: .4byte 0xFFFFFF00 +_0808E608: .4byte 0x0000406C +_0808E60C: .4byte 0xFFFFFEFE +_0808E610: .4byte 0x0000406D +_0808E614: + mov r0, r8 + adds r0, #0x74 + ldrh r6, [r0] + subs r7, r6, #1 + ldr r5, _0808E66C @ =0x0000408E + mov r4, r8 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r5, #0 + adds r1, r7, #0 + bl sub_0800015E + ldrb r2, [r4] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0800015E + movs r1, #2 + mov sb, r1 +_0808E63A: + movs r5, #0 + cmp r5, sb + bhs _0808E662 + ldr r6, _0808E66C @ =0x0000408E + mov r4, r8 + adds r4, #0x38 +_0808E646: + adds r7, #0x40 + ldrb r2, [r4] + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_0800015E + adds r1, r7, #1 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + adds r5, #1 + cmp r5, sb + blo _0808E646 +_0808E662: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808E66C: .4byte 0x0000408E + + thumb_func_start sub_0808E670 +sub_0808E670: @ 0x0808E670 + push {lr} + adds r0, #0x74 + ldrh r0, [r0] + ldr r1, _0808E684 @ =0xFFFFFEFF + adds r0, r0, r1 + movs r1, #1 + bl sub_080002B0 + pop {pc} + .align 2, 0 +_0808E684: .4byte 0xFFFFFEFF + + thumb_func_start sub_0808E688 +sub_0808E688: @ 0x0808E688 + push {lr} + ldr r2, _0808E69C @ =gUnk_08121C48 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808E69C: .4byte gUnk_08121C48 + + thumb_func_start sub_0808E6A0 +sub_0808E6A0: @ 0x0808E6A0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x84 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808E6B4 + bl sub_0805E780 +_0808E6B4: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x62 + strb r0, [r4, #0xa] + ldrb r1, [r4, #0x18] + subs r0, #0x66 + ands r0, r1 + strb r0, [r4, #0x18] + ldr r0, _0808E6E0 @ =gUnk_08121C58 + str r0, [r4, #0x48] + adds r1, r4, #0 + adds r1, #0x38 + movs r2, #3 + movs r0, #3 + strb r0, [r1] + ldrb r1, [r4, #0x11] + subs r0, #0x13 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x11] + pop {r4, pc} + .align 2, 0 +_0808E6E0: .4byte gUnk_08121C58 + + thumb_func_start sub_0808E6E4 +sub_0808E6E4: @ 0x0808E6E4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0808E712 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + bl sub_0808E714 +_0808E712: + pop {r4, pc} + + thumb_func_start sub_0808E714 +sub_0808E714: @ 0x0808E714 + push {r4, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xf] + lsls r0, r3, #3 + movs r1, #0x80 + lsls r1, r1, #3 + subs r2, r1, r0 + movs r0, #0x80 + lsls r0, r0, #1 + cmp r2, r0 + ble _0808E73A + adds r0, r3, #1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + b _0808E756 +_0808E73A: + movs r0, #3 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x3c + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0805EC60 + ldr r0, _0808E760 @ =0x00000141 + bl sub_080A3268 +_0808E756: + adds r0, r4, #0 + bl sub_08080CB4 + pop {r4, pc} + .align 2, 0 +_0808E760: .4byte 0x00000141 + + thumb_func_start sub_0808E764 +sub_0808E764: @ 0x0808E764 + push {r4, lr} + adds r4, r0, #0 + bl sub_08080CB4 + ldr r0, _0808E79C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0808E79A + adds r0, r4, #0 + bl sub_08017850 + cmp r0, #0 + beq _0808E79A + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + bl sub_0807CCC8 + movs r0, #0x62 + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 + bl sub_0805E780 +_0808E79A: + pop {r4, pc} + .align 2, 0 +_0808E79C: .4byte gUnk_03003F80 + + thumb_func_start sub_0808E7A0 +sub_0808E7A0: @ 0x0808E7A0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _0808E7B2 + adds r0, r4, #0 + bl sub_0808EFF0 +_0808E7B2: + ldr r1, _0808E7D4 @ =gUnk_08121C64 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #0x3f + bhi _0808E7D2 + adds r0, r4, #0 + bl sub_080042B8 +_0808E7D2: + pop {r4, pc} + .align 2, 0 +_0808E7D4: .4byte gUnk_08121C64 + + thumb_func_start sub_0808E7D8 +sub_0808E7D8: @ 0x0808E7D8 + push {lr} + ldr r2, _0808E7EC @ =gUnk_08121CCC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808E7EC: .4byte gUnk_08121CCC + + thumb_func_start sub_0808E7F0 +sub_0808E7F0: @ 0x0808E7F0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #1 + movs r2, #2 + bl sub_080AE008 + ldrb r0, [r4, #0x1a] + movs r1, #0xf + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xff + strb r0, [r4, #0xb] + movs r0, #1 + strb r0, [r4, #0xc] + pop {r4, pc} + + thumb_func_start sub_0808E818 +sub_0808E818: @ 0x0808E818 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_0808E950 + cmp r0, #0 + bne _0808E840 + movs r1, #1 + rsbs r1, r1, #0 + strb r1, [r4, #0xb] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _0808E94E +_0808E840: + ldr r0, _0808E8C0 @ =gUnk_02019EE0 + ldrb r1, [r0, #6] + ldrb r0, [r4, #0xb] + adds r6, r4, #0 + adds r6, #0x68 + adds r5, r4, #0 + adds r5, #0x70 + cmp r0, r1 + beq _0808E894 + strb r1, [r4, #0xb] + movs r0, #0x14 + bl GetProgressFlag + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r2, #0 + cmp r0, #0 + bne _0808E86A + movs r0, #0x80 + lsls r0, r0, #3 + adds r1, r0, #0 +_0808E86A: + strh r1, [r6] + movs r0, #4 + strb r0, [r5] + movs r0, #2 + strb r0, [r4, #0x14] + movs r0, #1 + bl sub_0807A094 + ldr r1, _0808E8C4 @ =gUnk_08133368 + subs r0, #0x16 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldr r1, _0808E8C8 @ =0x00FFFFFF + ands r0, r1 + ldr r1, _0808E8CC @ =gUnk_085A2E80 + adds r0, r0, r1 + movs r1, #0x1f + movs r2, #1 + bl sub_0801D754 +_0808E894: + ldr r0, _0808E8D0 @ =gUnk_02032EC0 + ldrb r2, [r0, #2] + cmp r2, #0 + bne _0808E904 + ldr r3, _0808E8D4 @ =gUnk_03000FF0 + ldrh r1, [r3] + movs r0, #0x80 + lsls r0, r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808E904 + ldrh r1, [r3, #2] + cmp r1, #0x20 + beq _0808E8F2 + cmp r1, #0x20 + bgt _0808E8D8 + cmp r1, #2 + beq _0808E8F8 + cmp r1, #0x10 + beq _0808E8E6 + b _0808E904 + .align 2, 0 +_0808E8C0: .4byte gUnk_02019EE0 +_0808E8C4: .4byte gUnk_08133368 +_0808E8C8: .4byte 0x00FFFFFF +_0808E8CC: .4byte gUnk_085A2E80 +_0808E8D0: .4byte gUnk_02032EC0 +_0808E8D4: .4byte gUnk_03000FF0 +_0808E8D8: + cmp r1, #0x40 + beq _0808E8E2 + cmp r1, #0x80 + beq _0808E8EC + b _0808E904 +_0808E8E2: + strb r2, [r4, #0x14] + b _0808E904 +_0808E8E6: + movs r0, #1 + strb r0, [r4, #0x14] + b _0808E904 +_0808E8EC: + movs r0, #2 + strb r0, [r4, #0x14] + b _0808E904 +_0808E8F2: + movs r0, #3 + strb r0, [r4, #0x14] + b _0808E904 +_0808E8F8: + ldrb r0, [r5] + movs r1, #0 + cmp r0, #0 + bne _0808E902 + movs r1, #4 +_0808E902: + strb r1, [r5] +_0808E904: + movs r2, #0 + ldrb r0, [r4, #0x14] + cmp r0, #3 + bne _0808E90E + movs r2, #1 +_0808E90E: + lsls r2, r2, #6 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrh r0, [r6] + ldrb r1, [r5] + adds r0, r0, r1 + ldrb r2, [r4, #0x14] + adds r1, r0, r2 + adds r2, r4, #0 + adds r2, #0x6a + ldrh r0, [r2] + cmp r0, r1 + beq _0808E940 + strh r1, [r2] + lsrs r0, r1, #8 + strh r0, [r4, #0x12] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_080042AC +_0808E940: + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #2 + orrs r1, r0 + strb r1, [r4, #0x18] +_0808E94E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808E950 +sub_0808E950: @ 0x0808E950 + push {lr} + movs r2, #0 + ldr r0, _0808E980 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #0 + beq _0808E968 + cmp r0, #0 + blt _0808E97C + cmp r0, #7 + bgt _0808E97C + cmp r0, #4 + blt _0808E97C +_0808E968: + ldr r0, _0808E984 @ =gUnk_02019EE0 + adds r1, r0, #0 + adds r1, #8 + ldrb r0, [r0, #6] + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #1 + bne _0808E97C + movs r2, #1 +_0808E97C: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_0808E980: .4byte gUnk_02032EC0 +_0808E984: .4byte gUnk_02019EE0 + + thumb_func_start sub_0808E988 +sub_0808E988: @ 0x0808E988 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0808E9AA + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0xa1 + lsls r0, r0, #1 + strh r0, [r5, #0x12] + movs r0, #0xff + strb r0, [r5, #0xb] + adds r0, r5, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 +_0808E9AA: + bl sub_0808E950 + cmp r0, #0 + beq _0808E9E8 + movs r4, #6 + b _0808E9BC +_0808E9B6: + subs r4, #1 + cmp r4, #0 + beq _0808E9E8 +_0808E9BC: + adds r0, r4, #0 + bl sub_0807CA84 + cmp r0, #0 + beq _0808E9B6 + cmp r4, #0 + beq _0808E9E8 + ldrb r0, [r5, #0xb] + cmp r0, r4 + beq _0808E9D8 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080042AC +_0808E9D8: + ldrb r0, [r5, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #2 + orrs r1, r0 + strb r1, [r5, #0x18] + b _0808E9F2 +_0808E9E8: + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #0x18] +_0808E9F2: + pop {r4, r5, pc} + + thumb_func_start sub_0808E9F4 +sub_0808E9F4: @ 0x0808E9F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0808E950 + cmp r0, #0 + beq _0808EA1C + ldr r0, _0808EA18 @ =gUnk_02002A40 + ldrb r0, [r0, #6] + cmp r0, #0 + beq _0808EA1C + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #2 + orrs r1, r0 + strb r1, [r4, #0x18] + b _0808EA26 + .align 2, 0 +_0808EA18: .4byte gUnk_02002A40 +_0808EA1C: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0808EA26: + pop {r4, pc} + + thumb_func_start sub_0808EA28 +sub_0808EA28: @ 0x0808EA28 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _0808EA56 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #1 + bls _0808EA4C + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #2 + orrs r1, r0 + strb r1, [r4, #0x18] + b _0808EA56 +_0808EA4C: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0808EA56: + ldr r2, _0808EA68 @ =gUnk_02019EE0 + ldrb r1, [r4, #0xa] + ldrb r0, [r2, #6] + cmp r1, r0 + bne _0808EA6C + movs r3, #0xc + movs r2, #1 + b _0808EA88 + .align 2, 0 +_0808EA68: .4byte gUnk_02019EE0 +_0808EA6C: + ldr r0, _0808EA80 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #5 + bne _0808EA84 + ldrb r2, [r2, #7] + cmp r1, r2 + bne _0808EA84 + movs r3, #0xd + b _0808EA86 + .align 2, 0 +_0808EA80: .4byte gUnk_02032EC0 +_0808EA84: + movs r3, #0xe +_0808EA86: + movs r2, #2 +_0808EA88: + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r4, #0x1a] + lsls r2, r2, #6 + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x19] + adds r0, r4, #0 + bl sub_0808EABC + adds r0, r4, #0 + bl sub_0808EF6C + ldr r2, _0808EAB8 @ =gUnk_02019EE0 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + pop {r4, pc} + .align 2, 0 +_0808EAB8: .4byte gUnk_02019EE0 + + thumb_func_start sub_0808EABC +sub_0808EABC: @ 0x0808EABC + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0x48 + rsbs r4, r4, #0 + ldrb r1, [r5, #0xa] + lsls r0, r1, #5 + adds r2, r0, #0 + adds r2, #0x28 + movs r3, #0 + ldr r0, _0808EAEC @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + cmp r0, r1 + bne _0808EAD8 + movs r3, #1 +_0808EAD8: + ldr r0, _0808EAF0 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #7 + bhi _0808EB60 + lsls r0, r0, #2 + ldr r1, _0808EAF4 @ =_0808EAF8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808EAEC: .4byte gUnk_02019EE0 +_0808EAF0: .4byte gUnk_02032EC0 +_0808EAF4: .4byte _0808EAF8 +_0808EAF8: @ jump table + .4byte _0808EB18 @ case 0 + .4byte _0808EB60 @ case 1 + .4byte _0808EB56 @ case 2 + .4byte _0808EB1C @ case 3 + .4byte _0808EB1C @ case 4 + .4byte _0808EB26 @ case 5 + .4byte _0808EB1C @ case 6 + .4byte _0808EB1C @ case 7 +_0808EB18: + movs r4, #0x18 + b _0808EB68 +_0808EB1C: + cmp r3, #0 + beq _0808EB68 + movs r4, #0x2a + movs r2, #0x38 + b _0808EB68 +_0808EB26: + ldr r3, _0808EB3C @ =gUnk_02000080 + adds r0, r3, #0 + adds r0, #0x10 + ldrb r1, [r5, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #0 + bne _0808EB40 + movs r4, #0x2a + movs r2, #0x28 + b _0808EB68 + .align 2, 0 +_0808EB3C: .4byte gUnk_02000080 +_0808EB40: + cmp r1, #0 + blt _0808EB68 + cmp r1, #2 + bgt _0808EB68 + movs r4, #0x14 + movs r2, #0x90 + ldrb r0, [r3, #0x16] + subs r0, r0, r1 + lsls r0, r0, #5 + subs r2, r2, r0 + b _0808EB68 +_0808EB56: + cmp r3, #0 + beq _0808EB68 + movs r4, #0x1a + movs r2, #0x2a + b _0808EB68 +_0808EB60: + cmp r3, #0 + beq _0808EB68 + movs r4, #8 + movs r2, #0x23 +_0808EB68: + adds r0, r5, #0 + adds r0, #0x68 + strh r4, [r0] + adds r0, #2 + strh r2, [r0] + pop {r4, r5, pc} + + thumb_func_start sub_0808EB74 +sub_0808EB74: @ 0x0808EB74 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0808EBA8 @ =gUnk_02019EE0 + ldrb r0, [r0, #6] + bl sub_0808EC80 + adds r3, r0, #0 + cmp r3, #0 + beq _0808EBAC + ldr r0, [r3, #0x2c] + str r0, [r4, #0x2c] + ldr r0, [r3, #0x30] + str r0, [r4, #0x30] + ldrb r1, [r3, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_0806FAD8 + b _0808EBB4 + .align 2, 0 +_0808EBA8: .4byte gUnk_02019EE0 +_0808EBAC: + movs r0, #0xf0 + lsls r0, r0, #8 + strh r0, [r4, #0x2e] + strh r0, [r4, #0x32] +_0808EBB4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808EBB8 +sub_0808EBB8: @ 0x0808EBB8 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + ldr r0, _0808EBD0 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + subs r0, #2 + cmp r0, #5 + bhi _0808EC1C + lsls r0, r0, #2 + ldr r1, _0808EBD4 @ =_0808EBD8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0808EBD0: .4byte gUnk_02032EC0 +_0808EBD4: .4byte _0808EBD8 +_0808EBD8: @ jump table + .4byte _0808EC18 @ case 0 + .4byte _0808EC1C @ case 1 + .4byte _0808EBF0 @ case 2 + .4byte _0808EBFC @ case 3 + .4byte _0808EC00 @ case 4 + .4byte _0808EC14 @ case 5 +_0808EBF0: + ldr r0, _0808EBF8 @ =gUnk_02000080 + ldrb r0, [r0, #1] + adds r1, r0, #4 + b _0808EC1E + .align 2, 0 +_0808EBF8: .4byte gUnk_02000080 +_0808EBFC: + movs r1, #2 + b _0808EC1E +_0808EC00: + ldr r0, _0808EC10 @ =gUnk_02000080 + ldrb r0, [r0, #1] + movs r1, #6 + cmp r0, #0 + bne _0808EC1E + movs r1, #7 + b _0808EC1E + .align 2, 0 +_0808EC10: .4byte gUnk_02000080 +_0808EC14: + movs r1, #4 + b _0808EC1E +_0808EC18: + movs r1, #1 + b _0808EC1E +_0808EC1C: + movs r1, #0 +_0808EC1E: + movs r5, #0xf0 + lsls r5, r5, #8 + adds r6, r5, #0 + cmp r1, #1 + beq _0808EC32 + cmp r1, #1 + blo _0808EC76 + cmp r1, #2 + beq _0808EC42 + b _0808EC4C +_0808EC32: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + lsls r0, r0, #4 + adds r5, r0, #0 + adds r5, #0x18 + movs r6, #0x70 + b _0808EC76 +_0808EC42: + ldr r0, _0808EC7C @ =gUnk_02019EE0 + ldrb r1, [r0, #7] + cmp r1, #4 + bne _0808EC4C + movs r1, #7 +_0808EC4C: + adds r0, r1, #0 + bl sub_0808EC80 + adds r4, r0, #0 + cmp r4, #0 + beq _0808EC76 + adds r1, r7, #0 + bl sub_0806FAD8 + ldrb r0, [r4, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r7, #0x19] + movs r1, #0x3f + ands r1, r2 + orrs r1, r0 + strb r1, [r7, #0x19] + movs r0, #0x2e + ldrsh r6, [r4, r0] + movs r0, #0x32 + ldrsh r5, [r4, r0] +_0808EC76: + strh r6, [r7, #0x2e] + strh r5, [r7, #0x32] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0808EC7C: .4byte gUnk_02019EE0 + + thumb_func_start sub_0808EC80 +sub_0808EC80: @ 0x0808EC80 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r3, _0808ECA4 @ =gUnk_03003DA0 + ldr r2, [r3, #4] + cmp r2, r3 + beq _0808ECB6 + ldr r6, _0808ECA8 @ =0x0000FFFF + ldr r5, _0808ECAC @ =0x00004806 +_0808EC90: + ldrh r1, [r2, #8] + adds r0, r6, #0 + ands r0, r1 + cmp r0, r5 + bne _0808ECB0 + ldrb r0, [r2, #0xa] + cmp r4, r0 + bne _0808ECB0 + adds r0, r2, #0 + b _0808ECB8 + .align 2, 0 +_0808ECA4: .4byte gUnk_03003DA0 +_0808ECA8: .4byte 0x0000FFFF +_0808ECAC: .4byte 0x00004806 +_0808ECB0: + ldr r2, [r2, #4] + cmp r2, r3 + bne _0808EC90 +_0808ECB6: + movs r0, #0 +_0808ECB8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808ECBC +sub_0808ECBC: @ 0x0808ECBC + push {r4, lr} + adds r3, r0, #0 + ldr r0, _0808ECD8 @ =gUnk_02000080 + ldrb r4, [r0, #1] + ldr r0, _0808ECDC @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #5 + beq _0808ECEE + cmp r0, #5 + bgt _0808ECE0 + cmp r0, #4 + beq _0808ECEA + b _0808ED04 + .align 2, 0 +_0808ECD8: .4byte gUnk_02000080 +_0808ECDC: .4byte gUnk_02032EC0 +_0808ECE0: + cmp r0, #6 + beq _0808ECFC + cmp r0, #7 + beq _0808ED00 + b _0808ED04 +_0808ECEA: + movs r0, #1 + b _0808ED06 +_0808ECEE: + ldr r0, _0808ECF8 @ =gUnk_02019EE0 + ldrb r4, [r0, #7] + movs r0, #2 + b _0808ED06 + .align 2, 0 +_0808ECF8: .4byte gUnk_02019EE0 +_0808ECFC: + movs r0, #3 + b _0808ED06 +_0808ED00: + movs r0, #4 + b _0808ED06 +_0808ED04: + movs r0, #0 +_0808ED06: + ldrb r2, [r3, #0xa] + subs r2, #4 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + lsls r0, r2, #1 + adds r0, r0, r2 + ldr r2, _0808ED3C @ =gUnk_08121CD4 + adds r0, r0, r2 + adds r1, r1, r0 + ldrb r2, [r1, #1] + adds r0, r3, #0 + adds r0, #0x68 + strh r2, [r0] + ldrb r0, [r1, #2] + adds r2, r3, #0 + adds r2, #0x6a + strh r0, [r2] + ldrb r0, [r1] + cmp r0, r4 + bne _0808ED40 + ldrb r0, [r3, #0x1a] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0xd + b _0808ED4A + .align 2, 0 +_0808ED3C: .4byte gUnk_08121CD4 +_0808ED40: + ldrb r0, [r3, #0x1a] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0xe +_0808ED4A: + orrs r1, r0 + strb r1, [r3, #0x1a] + adds r0, r3, #0 + bl sub_0808EF6C + ldr r2, _0808ED60 @ =gUnk_02019EE0 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + pop {r4, pc} + .align 2, 0 +_0808ED60: .4byte gUnk_02019EE0 + + thumb_func_start sub_0808ED64 +sub_0808ED64: @ 0x0808ED64 + push {lr} + adds r2, r0, #0 + movs r3, #0xff + ldr r0, _0808ED90 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #1 + bne _0808ED8A + ldr r1, _0808ED94 @ =gUnk_02000080 + ldrb r0, [r1, #0x11] + cmp r0, #5 + beq _0808ED8A + ldrb r0, [r1, #0x10] + lsls r0, r0, #4 + adds r0, #0x1c + strh r0, [r2, #0x2e] + ldrb r0, [r1, #0x11] + lsls r0, r0, #4 + adds r3, r0, #0 + adds r3, #0x3a +_0808ED8A: + strh r3, [r2, #0x32] + pop {pc} + .align 2, 0 +_0808ED90: .4byte gUnk_02032EC0 +_0808ED94: .4byte gUnk_02000080 + + thumb_func_start sub_0808ED98 +sub_0808ED98: @ 0x0808ED98 + push {lr} + adds r3, r0, #0 + ldr r0, _0808EDB4 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #1 + beq _0808EDB8 + adds r1, r3, #0 + adds r1, #0x68 + movs r0, #0x1b + strh r0, [r1] + movs r1, #0xa + rsbs r1, r1, #0 + b _0808EDCE + .align 2, 0 +_0808EDB4: .4byte gUnk_02032EC0 +_0808EDB8: + ldr r0, _0808EDF8 @ =gUnk_02000080 + ldrb r0, [r0, #0x13] + cmp r0, #5 + bls _0808EDC2 + movs r0, #5 +_0808EDC2: + lsls r0, r0, #3 + adds r0, #0x1b + adds r1, r3, #0 + adds r1, #0x68 + strh r0, [r1] + movs r1, #0x18 +_0808EDCE: + strh r1, [r3, #0x32] + adds r0, r3, #0 + adds r0, #0x6a + strh r1, [r0] + ldrb r0, [r3, #0xf] + adds r0, #1 + strb r0, [r3, #0xf] + ldr r2, _0808EDFC @ =gUnk_08121D10 + ldrb r0, [r3, #0xf] + lsrs r0, r0, #2 + movs r1, #7 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + adds r1, r3, #0 + adds r1, #0x63 + strb r0, [r1] + adds r0, r3, #0 + bl sub_0808EF6C + pop {pc} + .align 2, 0 +_0808EDF8: .4byte gUnk_02000080 +_0808EDFC: .4byte gUnk_08121D10 + + thumb_func_start sub_0808EE00 +sub_0808EE00: @ 0x0808EE00 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + rsbs r2, r0, #0 + orrs r2, r0 + lsrs r2, r2, #0x1f + ldrb r0, [r4, #0xa] + adds r5, r0, #0 + subs r5, #0xa + ldr r1, _0808EE48 @ =gUnk_08121D38 + lsls r0, r2, #3 + adds r0, r5, r0 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0x1e] + ldr r3, _0808EE4C @ =gUnk_08121D18 + lsls r0, r5, #1 + lsls r1, r2, #4 + adds r0, r0, r1 + adds r0, r0, r3 + ldrh r1, [r0] + strh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + subs r5, r5, r2 + ldr r0, _0808EE50 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #1 + beq _0808EE54 + movs r5, #0x80 + movs r1, #0xb0 + b _0808EE56 + .align 2, 0 +_0808EE48: .4byte gUnk_08121D38 +_0808EE4C: .4byte gUnk_08121D18 +_0808EE50: .4byte gUnk_02032EC0 +_0808EE54: + movs r1, #0x8c +_0808EE56: + adds r0, r4, #0 + adds r0, #0x6a + strh r1, [r0] + ldr r1, _0808EE8C @ =gUnk_02000080 + ldrb r0, [r1, #0x11] + movs r2, #9 + cmp r0, #5 + bne _0808EE6E + ldrb r1, [r1, #0x12] + cmp r5, r1 + bne _0808EE6E + movs r2, #0xb +_0808EE6E: + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x1a] + adds r0, r4, #0 + bl sub_0808EF6C + ldr r2, _0808EE90 @ =gUnk_02019EE0 + ldrb r1, [r2] + orrs r0, r1 + strb r0, [r2] + pop {r4, r5, pc} + .align 2, 0 +_0808EE8C: .4byte gUnk_02000080 +_0808EE90: .4byte gUnk_02019EE0 + + thumb_func_start nullsub_522 +nullsub_522: @ 0x0808EE94 + bx lr + .align 2, 0 + + thumb_func_start sub_0808EE98 +sub_0808EE98: @ 0x0808EE98 + push {lr} + adds r3, r0, #0 + ldr r0, _0808EEBC @ =gUnk_02032EC0 + ldrb r1, [r0, #2] + strb r1, [r3, #0xe] + ldr r2, _0808EEC0 @ =gUnk_08121D48 + ldrb r0, [r3, #0xe] + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r3, #0x1e] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #2 + beq _0808EEC4 + adds r1, r3, #0 + adds r1, #0x68 + movs r0, #0x60 + b _0808EECA + .align 2, 0 +_0808EEBC: .4byte gUnk_02032EC0 +_0808EEC0: .4byte gUnk_08121D48 +_0808EEC4: + adds r1, r3, #0 + adds r1, #0x68 + ldr r0, _0808EED4 @ =0x0000FFA0 +_0808EECA: + strh r0, [r1] + adds r0, r3, #0 + bl sub_0808EF6C + pop {pc} + .align 2, 0 +_0808EED4: .4byte 0x0000FFA0 + + thumb_func_start sub_0808EED8 +sub_0808EED8: @ 0x0808EED8 + push {lr} + adds r2, r0, #0 + ldr r0, _0808EEF0 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #3 + beq _0808EEF4 + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + b _0808EF1E + .align 2, 0 +_0808EEF0: .4byte gUnk_02032EC0 +_0808EEF4: + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x18] + ldrb r1, [r2, #0xa] + subs r1, #0x13 + ldr r0, _0808EF20 @ =gUnk_02000080 + ldrb r0, [r0, #1] + movs r3, #3 + cmp r0, r1 + bne _0808EF12 + movs r3, #4 +_0808EF12: + ldrb r1, [r2, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2, #0x1a] +_0808EF1E: + pop {pc} + .align 2, 0 +_0808EF20: .4byte gUnk_02000080 + + thumb_func_start sub_0808EF24 +sub_0808EF24: @ 0x0808EF24 + push {lr} + adds r2, r0, #0 + ldr r0, _0808EF3C @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + cmp r0, #3 + beq _0808EF40 + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + b _0808EF68 + .align 2, 0 +_0808EF3C: .4byte gUnk_02032EC0 +_0808EF40: + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x18] + ldrb r0, [r2, #0xa] + cmp r0, #0x15 + bne _0808EF5C + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r1, [r0, #5] + b _0808EF62 +_0808EF5C: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r1, [r0, #6] +_0808EF62: + ldrb r0, [r2, #0x1f] + adds r0, r0, r1 + strb r0, [r2, #0x1e] +_0808EF68: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808EF6C +sub_0808EF6C: @ 0x0808EF6C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, #0x68 + movs r2, #0 + ldrsh r1, [r0, r2] + movs r2, #0x2e + ldrsh r0, [r5, r2] + subs r6, r1, r0 + adds r0, r6, #0 + cmp r6, #0 + bge _0808EF84 + rsbs r0, r6, #0 +_0808EF84: + cmp r0, #1 + bhi _0808EF8E + lsls r0, r1, #0x10 + str r0, [r5, #0x2c] + movs r6, #0 +_0808EF8E: + adds r0, r5, #0 + adds r0, #0x6a + movs r2, #0 + ldrsh r1, [r0, r2] + movs r2, #0x32 + ldrsh r0, [r5, r2] + subs r4, r1, r0 + adds r0, r4, #0 + cmp r4, #0 + bge _0808EFA4 + rsbs r0, r4, #0 +_0808EFA4: + cmp r0, #1 + bhi _0808EFAE + lsls r0, r1, #0x10 + str r0, [r5, #0x30] + movs r4, #0 +_0808EFAE: + adds r0, r6, #0 + orrs r0, r4 + cmp r0, #0 + bne _0808EFBA + movs r0, #0 + b _0808EFEC +_0808EFBA: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080041EC + adds r1, r0, #0 + adds r0, #0x80 + lsls r1, r1, #4 + adds r1, r0, r1 + adds r0, r5, #0 + adds r0, #0x6c + ldrh r0, [r0] + cmp r0, r1 + bge _0808EFD6 + adds r1, r0, #0 +_0808EFD6: + strh r1, [r5, #0x24] + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_080045DA + lsrs r0, r0, #3 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F69C + movs r0, #1 +_0808EFEC: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808EFF0 +sub_0808EFF0: @ 0x0808EFF0 + push {r4, r5, lr} + mov ip, r0 + ldrb r1, [r0, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x18] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1, #0x24] + adds r1, #0x45 + movs r0, #1 + strb r0, [r1] + movs r0, #0xff + mov r3, ip + strb r0, [r3, #0x1e] + adds r1, #0x13 + movs r0, #1 + rsbs r0, r0, #0 + strb r0, [r1] + ldrb r4, [r3, #0xa] + lsls r4, r4, #3 + ldr r0, _0808F094 @ =gUnk_08121D54 + adds r4, r4, r0 + ldrh r0, [r4, #2] + strh r0, [r3, #0x2e] + ldrh r1, [r4, #2] + mov r0, ip + adds r0, #0x68 + strh r1, [r0] + ldrh r0, [r4, #4] + strh r0, [r3, #0x32] + ldrh r0, [r4, #4] + mov r1, ip + adds r1, #0x6a + strh r0, [r1] + ldrb r1, [r4, #6] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x17 + ldrb r3, [r3, #0x19] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r3 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x19] + ldrb r1, [r4, #6] + lsls r1, r1, #0x1a + mov r5, ip + adds r5, #0x29 + lsrs r1, r1, #0x1d + ldrb r3, [r5] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r5] + ldrb r0, [r4, #6] + lsrs r0, r0, #6 + lsls r0, r0, #6 + mov r3, ip + ldrb r1, [r3, #0x1b] + ands r2, r1 + orrs r2, r0 + strb r2, [r3, #0x1b] + ldrh r1, [r4] + mov r0, ip + adds r0, #0x6c + strh r1, [r0] + ldrb r1, [r4, #7] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808F098 + movs r0, #0x7f + ands r1, r0 + strb r1, [r3, #0x1e] + strb r1, [r3, #0x1f] + b _0808F09E + .align 2, 0 +_0808F094: .4byte gUnk_08121D54 +_0808F098: + mov r0, ip + bl sub_080042AC +_0808F09E: + pop {r4, r5, pc} + + thumb_func_start sub_0808F0A0 +sub_0808F0A0: @ 0x0808F0A0 + push {lr} + ldr r2, _0808F0B4 @ =gUnk_08121E5C + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808F0B4: .4byte gUnk_08121E5C + + thumb_func_start sub_0808F0B8 +sub_0808F0B8: @ 0x0808F0B8 + push {lr} + ldr r2, _0808F0CC @ =gUnk_08121E88 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808F0CC: .4byte gUnk_08121E88 + + thumb_func_start sub_0808F0D0 +sub_0808F0D0: @ 0x0808F0D0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r1, #0x49 + movs r2, #2 + movs r3, #0 + bl sub_080A2988 + str r0, [r5, #0x54] + cmp r0, #0 + bne _0808F0E8 + bl sub_0805E780 +_0808F0E8: + movs r6, #1 + strb r6, [r5, #0xc] + ldr r0, _0808F148 @ =0x0000FF40 + strh r0, [r5, #0x36] + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #0x3f + ands r4, r0 + bl sub_08000E50 + ands r0, r6 + cmp r0, #0 + beq _0808F106 + rsbs r4, r4, #0 +_0808F106: + ldr r0, [r5, #0x50] + ldrh r0, [r0, #0x2e] + adds r0, r0, r4 + strh r0, [r5, #0x2e] + bl sub_08000E50 + adds r4, r0, #0 + movs r0, #0x1f + ands r4, r0 + bl sub_08000E50 + ands r0, r6 + cmp r0, #0 + beq _0808F124 + rsbs r4, r4, #0 +_0808F124: + ldr r0, [r5, #0x50] + ldrh r0, [r0, #0x32] + adds r0, r0, r4 + strh r0, [r5, #0x32] + movs r0, #0x90 + lsls r0, r0, #2 + str r0, [r5, #0x74] + movs r0, #0xa0 + lsls r0, r0, #1 + str r0, [r5, #0x78] + adds r0, r5, #0 + movs r1, #3 + bl sub_08004260 + adds r0, r5, #0 + bl sub_0808F14C + pop {r4, r5, r6, pc} + .align 2, 0 +_0808F148: .4byte 0x0000FF40 + + thumb_func_start sub_0808F14C +sub_0808F14C: @ 0x0808F14C + push {r4, lr} + adds r4, r0, #0 + bl sub_0808F2B0 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0808F16E + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x84 + bl sub_080A3268 +_0808F16E: + pop {r4, pc} + + thumb_func_start sub_0808F170 +sub_0808F170: @ 0x0808F170 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x74] + subs r0, #0x20 + str r0, [r4, #0x74] + ldr r1, [r4, #0x78] + adds r1, #0x20 + str r1, [r4, #0x78] + adds r0, r4, #0 + movs r2, #8 + movs r3, #2 + bl sub_0806FCF4 + ldr r1, [r4, #0x78] + ldr r0, _0808F1A0 @ =0x000001FF + cmp r1, r0 + bls _0808F198 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0808F198: + adds r0, r4, #0 + bl sub_0808F2B0 + pop {r4, pc} + .align 2, 0 +_0808F1A0: .4byte 0x000001FF + + thumb_func_start sub_0808F1A4 +sub_0808F1A4: @ 0x0808F1A4 + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x78] + adds r1, #0x10 + str r1, [r4, #0x78] + ldr r0, [r4, #0x74] + adds r0, #0x10 + str r0, [r4, #0x74] + adds r0, r4, #0 + movs r2, #8 + movs r3, #2 + bl sub_0806FCF4 + ldr r1, [r4, #0x78] + ldr r0, _0808F1D4 @ =0x000003FF + cmp r1, r0 + bls _0808F1D8 + ldr r1, [r4, #0x54] + movs r0, #0xff + strb r0, [r1, #0xc] + bl sub_0805E780 + b _0808F1DE + .align 2, 0 +_0808F1D4: .4byte 0x000003FF +_0808F1D8: + adds r0, r4, #0 + bl sub_0808F2B0 +_0808F1DE: + pop {r4, pc} + + thumb_func_start sub_0808F1E0 +sub_0808F1E0: @ 0x0808F1E0 + push {lr} + ldr r2, _0808F1F4 @ =gUnk_08121E98 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808F1F4: .4byte gUnk_08121E98 + + thumb_func_start sub_0808F1F8 +sub_0808F1F8: @ 0x0808F1F8 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0x19] + movs r0, #3 + orrs r2, r0 + strb r2, [r4, #0x19] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r3, [r4, #0x50] + ldrb r1, [r3, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + movs r0, #0x3f + ands r2, r0 + orrs r2, r1 + strb r2, [r4, #0x19] + ldrb r1, [r3, #0x1b] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r4, #0x1b] + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1b] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0808F244 + pop {r4, pc} + + thumb_func_start sub_0808F244 +sub_0808F244: @ 0x0808F244 + push {r4, lr} + adds r4, r0, #0 + ldr r3, [r4, #0x50] + ldrb r1, [r3, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrh r0, [r3, #0x32] + adds r0, #3 + movs r2, #0 + strh r0, [r4, #0x32] + ldr r1, [r4, #0x54] + adds r0, r1, #0 + adds r0, #0x62 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r1, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + str r2, [r4, #0x34] + movs r0, #0x36 + ldrsh r1, [r3, r0] + movs r0, #0x80 + subs r0, r0, r1 + str r0, [r4, #0x74] + movs r0, #0x36 + ldrsh r1, [r3, r0] + movs r0, #0x80 + lsls r0, r0, #1 + subs r0, r0, r1 + str r0, [r4, #0x78] + adds r3, #0x7f + ldrb r0, [r3] + str r0, [r4, #0x70] + adds r0, r4, #0 + bl sub_0808F2B0 + ldr r0, [r4, #0x50] + adds r0, #0x6d + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0808F2AC + bl sub_0805E780 +_0808F2AC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808F2B0 +sub_0808F2B0: @ 0x0808F2B0 + push {lr} + ldr r1, [r0, #0x74] + ldr r2, [r0, #0x78] + ldr r3, [r0, #0x70] + bl sub_0805EC9C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808F2C0 +sub_0808F2C0: @ 0x0808F2C0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + adds r6, r0, #0 + cmp r6, #0 + bne _0808F322 + adds r0, #1 + strb r0, [r5, #0xc] + ldr r4, [r5, #0x50] + ldrb r2, [r4, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x19] + ldrb r0, [r4, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x1b] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + str r6, [r5, #0x34] + ldr r1, [r5, #0x50] + ldrh r0, [r1, #0x32] + adds r0, #3 + strh r0, [r5, #0x32] + ldrh r0, [r1, #0x2e] + strh r0, [r5, #0x2e] + adds r0, r5, #0 + movs r1, #3 + bl sub_08004260 +_0808F322: + ldr r2, [r5, #0x50] + movs r1, #0x36 + ldrsh r0, [r2, r1] + cmp r0, #0 + bne _0808F334 + ldr r0, [r2, #0x74] + str r0, [r5, #0x74] + ldr r0, [r2, #0x78] + b _0808F34C +_0808F334: + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #0x80 + lsls r0, r0, #2 + subs r0, r0, r1 + str r0, [r5, #0x74] + movs r0, #0x36 + ldrsh r1, [r2, r0] + lsls r1, r1, #1 + movs r0, #0xc0 + lsls r0, r0, #2 + subs r0, r0, r1 +_0808F34C: + str r0, [r5, #0x78] + movs r0, #0 + str r0, [r5, #0x70] + adds r0, r5, #0 + bl sub_0808F2B0 + ldr r1, [r5, #0x78] + adds r0, r5, #0 + movs r2, #8 + movs r3, #2 + bl sub_0806FCF4 + ldrb r0, [r5, #0xc] + cmp r0, #0xff + bne _0808F36E + bl sub_0805E780 +_0808F36E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808F370 +sub_0808F370: @ 0x0808F370 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _0808F388 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xd] + cmp r0, #1 + bne _0808F3DA + strb r0, [r4, #0xc] + str r1, [r4, #0x70] + b _0808F3CC +_0808F388: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xd] + subs r0, #1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #4 + bhi _0808F3D4 + ldr r0, [r4, #0x70] + cmp r0, #0 + bne _0808F3C4 + ldr r0, [r4, #0x74] + subs r0, #1 + str r0, [r4, #0x74] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0808F3DA + bl sub_08000E50 + ldr r2, _0808F3C0 @ =gUnk_08121EA0 + movs r1, #1 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r0, [r1] + str r0, [r4, #0x70] + b _0808F3DA + .align 2, 0 +_0808F3C0: .4byte gUnk_08121EA0 +_0808F3C4: + subs r0, #1 + str r0, [r4, #0x70] + cmp r0, #0 + bne _0808F3DA +_0808F3CC: + adds r0, r4, #0 + bl sub_0808F5EC + b _0808F3DA +_0808F3D4: + movs r0, #0 + strb r0, [r4, #0xc] + str r0, [r4, #0x74] +_0808F3DA: + pop {r4, pc} + + thumb_func_start sub_0808F3DC +sub_0808F3DC: @ 0x0808F3DC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0808F438 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0xa] + adds r1, #1 + adds r0, r4, #0 + bl sub_08004260 + ldrb r0, [r4, #0xa] + cmp r0, #8 + beq _0808F41A + cmp r0, #7 + bne _0808F42E + ldr r0, [r4, #0x54] + adds r1, r4, #0 + bl sub_0806FAD8 + b _0808F494 +_0808F41A: + ldr r0, [r4, #0x54] + adds r0, #0x3f + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x3f + strb r0, [r1] + ldr r0, [r4, #0x54] + adds r0, #0x3f + movs r1, #0x7e + strb r1, [r0] +_0808F42E: + ldr r0, [r4, #0x54] + adds r1, r4, #0 + bl sub_0806FAB0 + b _0808F494 +_0808F438: + ldr r0, [r4, #0x50] + ldr r0, [r0, #0x74] + cmp r0, #0 + bne _0808F456 + ldrb r0, [r4, #0xa] + cmp r0, #8 + bne _0808F452 + ldr r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x3f + ldrb r1, [r1] + adds r0, #0x3f + strb r1, [r0] +_0808F452: + bl sub_0805E780 +_0808F456: + ldrb r0, [r4, #0xa] + cmp r0, #5 + bne _0808F486 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0808F486 + ldr r0, [r4, #0x54] + movs r1, #0x49 + movs r2, #8 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _0808F486 + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + ldr r0, [r4, #0x50] + ldr r0, [r0, #0x50] + str r0, [r1, #0x54] +_0808F486: + adds r0, r4, #0 + bl sub_08004274 + ldr r0, [r4, #0x54] + adds r1, r4, #0 + bl sub_0806FA6C +_0808F494: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808F498 +sub_0808F498: @ 0x0808F498 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _0808F4EC + adds r0, r5, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0808F4C2 + ldr r0, _0808F4E4 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0808F4BE + movs r0, #0xef + bl sub_080A3268 +_0808F4BE: + bl sub_0805E780 +_0808F4C2: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0808F4D4 + bl sub_0805E780 +_0808F4D4: + ldr r0, _0808F4E8 @ =gUnk_03003F80 + ldrb r0, [r0, #0x1c] + cmp r0, #1 + beq _0808F550 + bl sub_0805E780 + b _0808F550 + .align 2, 0 +_0808F4E4: .4byte gUnk_030010A0 +_0808F4E8: .4byte gUnk_03003F80 +_0808F4EC: + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0x40 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0xb] + movs r6, #0x2b + cmp r0, #0 + beq _0808F4FE + movs r6, #0x2c +_0808F4FE: + ldr r0, [r5, #0x50] + ldr r0, [r0, #0x48] + ldrb r1, [r0, #6] + ldrh r0, [r5, #0x2e] + subs r0, r0, r1 + strh r0, [r5, #0x2e] + bl sub_08000E50 + ldr r4, [r5, #0x50] + ldr r1, [r4, #0x48] + ldrb r1, [r1, #6] + lsls r1, r1, #1 + bl __modsi3 + ldrh r1, [r5, #0x2e] + adds r1, r1, r0 + strh r1, [r5, #0x2e] + ldr r0, [r4, #0x48] + ldrb r1, [r0, #7] + ldrh r0, [r5, #0x32] + subs r0, r0, r1 + strh r0, [r5, #0x32] + bl sub_08000E50 + ldr r1, [r5, #0x50] + ldr r1, [r1, #0x48] + ldrb r1, [r1, #7] + lsls r1, r1, #1 + bl __modsi3 + ldrh r1, [r5, #0x32] + adds r1, r1, r0 + strh r1, [r5, #0x32] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #4 + bl sub_08004260 +_0808F550: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0808F554 +sub_0808F554: @ 0x0808F554 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FA6C + adds r1, r5, #0 + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #0x18 + strb r0, [r1] + ldr r0, [r5, #0x50] + adds r1, r0, #0 + adds r1, #0x62 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0808F588 + adds r2, r5, #0 + adds r2, #0x62 + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + ldrb r1, [r2] + adds r0, r0, r1 + strb r0, [r2] +_0808F588: + ldrb r0, [r5, #0xc] + cmp r0, #0 + beq _0808F5AC + adds r1, r5, #0 + adds r1, #0x84 + ldr r0, [r1] + cmp r0, #0 + beq _0808F5A4 + subs r0, #1 + str r0, [r1] + cmp r0, #0 + bne _0808F5A4 + bl sub_0805E780 +_0808F5A4: + adds r0, r5, #0 + bl sub_08004274 + b _0808F5E8 +_0808F5AC: + movs r0, #1 + strb r0, [r5, #0xc] + ldr r4, [r5, #0x50] + ldrb r2, [r4, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x19] + ldrb r0, [r4, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x1b] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r5, #0 + movs r1, #3 + bl sub_08004260 +_0808F5E8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0808F5EC +sub_0808F5EC: @ 0x0808F5EC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + movs r1, #0x49 + movs r2, #5 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _0808F608 + str r4, [r1, #0x50] + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] +_0808F608: + ldr r0, [r4, #0x54] + movs r1, #0x49 + movs r2, #6 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _0808F620 + str r4, [r1, #0x50] + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] +_0808F620: + ldr r0, [r4, #0x54] + movs r1, #0x49 + movs r2, #7 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _0808F638 + str r4, [r1, #0x50] + ldr r0, [r4, #0x54] + str r0, [r1, #0x54] +_0808F638: + movs r0, #0x96 + lsls r0, r0, #2 + str r0, [r4, #0x74] + pop {r4, pc} + + thumb_func_start sub_0808F640 +sub_0808F640: @ 0x0808F640 + push {lr} + ldr r2, _0808F654 @ =gUnk_08121EA4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808F654: .4byte gUnk_08121EA4 + + thumb_func_start sub_0808F658 +sub_0808F658: @ 0x0808F658 + push {r4, r5, lr} + adds r5, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r5, #0x1b] + ldrb r0, [r5, #0x19] + orrs r0, r1 + strb r0, [r5, #0x19] + ldrb r0, [r5, #0xa] + adds r3, r5, #0 + adds r3, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r5, #0xa] + strb r0, [r5, #0x1e] + movs r0, #8 + strb r0, [r5, #0x15] + ldr r1, _0808F6D8 @ =gUnk_08121EB0 + ldrb r0, [r5, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + movs r4, #0 + strh r0, [r5, #0x24] + ldr r3, _0808F6DC @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + adds r2, r1, #0 + subs r2, #0x60 + adds r0, r5, #0 + adds r0, #0x78 + strh r2, [r0] + ldrh r0, [r3, #0x1e] + adds r1, r1, r0 + adds r1, #0x60 + adds r0, r5, #0 + adds r0, #0x7a + strh r1, [r0] + strb r4, [r5, #0x14] + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #4 + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x2e] + strb r4, [r5, #0xe] + strb r4, [r5, #0xd] + pop {r4, r5, pc} + .align 2, 0 +_0808F6D8: .4byte gUnk_08121EB0 +_0808F6DC: .4byte gUnk_03000BF0 + + thumb_func_start sub_0808F6E0 +sub_0808F6E0: @ 0x0808F6E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + adds r0, #0x78 + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r1, r0 + blt _0808F704 + adds r0, r4, #0 + adds r0, #0x7a + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r1, r0 + ble _0808F708 +_0808F704: + movs r0, #2 + strb r0, [r4, #0xc] +_0808F708: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808F70C +sub_0808F70C: @ 0x0808F70C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _0808F75C + movs r0, #1 + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #3 + adds r0, #0x1f + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0808F738 + adds r0, r4, #0 + adds r0, #0x7a + b _0808F73C +_0808F738: + adds r0, r4, #0 + adds r0, #0x78 +_0808F73C: + ldrh r0, [r0] + strh r0, [r4, #0x2e] + ldrb r0, [r4, #0xa] + cmp r0, #2 + bne _0808F75C + bl sub_08000E50 + ldr r3, _0808F778 @ =gUnk_08121EB3 + ldrb r1, [r4, #0xb] + lsls r1, r1, #1 + movs r2, #1 + ands r2, r0 + adds r1, r1, r2 + adds r1, r1, r3 + ldrb r0, [r1] + strh r0, [r4, #0x32] +_0808F75C: + ldrb r1, [r4, #0xd] + cmp r1, #1 + bne _0808F774 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0808F774 + strb r1, [r4, #0xc] + strb r0, [r4, #0xd] +_0808F774: + pop {r4, pc} + .align 2, 0 +_0808F778: .4byte gUnk_08121EB3 + + thumb_func_start sub_0808F77C +sub_0808F77C: @ 0x0808F77C + push {lr} + ldr r2, _0808F790 @ =gUnk_08121EB8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0808F790: .4byte gUnk_08121EB8 + + thumb_func_start sub_0808F794 +sub_0808F794: @ 0x0808F794 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x3c + strb r1, [r0, #0xe] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808F7A8 +sub_0808F7A8: @ 0x0808F7A8 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F7D0 + movs r0, #0x78 + strb r0, [r2, #0xe] + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] +_0808F7D0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0808F7D4 +sub_0808F7D4: @ 0x0808F7D4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808F80A + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_0808F80A: + pop {r4, pc} + + thumb_func_start sub_0808F80C +sub_0808F80C: @ 0x0808F80C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0808F850 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0x15] + movs r2, #0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + strb r0, [r4, #0x1b] + strb r2, [r4, #0xe] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + ldr r0, _0808F854 @ =0x0000012B + bl sub_080A3268 +_0808F850: + pop {r4, pc} + .align 2, 0 +_0808F854: .4byte 0x0000012B + + thumb_func_start sub_0808F858 +sub_0808F858: @ 0x0808F858 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0808F884 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0808F88A + adds r0, r4, #0 + bl sub_08004274 + b _0808F88A +_0808F884: + adds r0, r4, #0 + bl sub_08004274 +_0808F88A: + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldr r1, _0808F8C4 @ =gUnk_03000BF0 + ldrh r2, [r1, #8] + subs r0, r0, r2 + movs r1, #0x8c + lsls r1, r1, #2 + cmp r0, r1 + bgt _0808F8C8 + adds r0, r2, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808F8EA + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _0808F8EA + .align 2, 0 +_0808F8C4: .4byte gUnk_03000BF0 +_0808F8C8: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808F8EA + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 + ldr r0, _0808F8EC @ =0x0000012B + bl sub_080A3268 +_0808F8EA: + pop {r4, pc} + .align 2, 0 +_0808F8EC: .4byte 0x0000012B + + thumb_func_start sub_0808F8F0 +sub_0808F8F0: @ 0x0808F8F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F912 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 +_0808F912: + pop {r4, pc} + + thumb_func_start sub_0808F914 +sub_0808F914: @ 0x0808F914 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808F93C + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0808F93C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808F940 +sub_0808F940: @ 0x0808F940 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808F960 + ldr r1, _0808F964 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + bl sub_0805E780 +_0808F960: + pop {r4, pc} + .align 2, 0 +_0808F964: .4byte gUnk_02000080 + + thumb_func_start sub_0808F968 +sub_0808F968: @ 0x0808F968 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0808F98C @ =gUnk_08121ED8 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _0808F988 + adds r0, r4, #0 + bl sub_08090514 +_0808F988: + pop {r4, pc} + .align 2, 0 +_0808F98C: .4byte gUnk_08121ED8 + + thumb_func_start sub_0808F990 +sub_0808F990: @ 0x0808F990 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r2, #1 + strb r2, [r4, #0xc] + movs r3, #0 + movs r0, #0x80 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0xe] + strb r0, [r4, #0xf] + strb r3, [r4, #0xe] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + adds r0, r4, #0 + adds r0, #0x81 + strb r3, [r0] + adds r0, #2 + strb r3, [r0] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _0808F9E8 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x80 + strb r3, [r0] + b _0808FA1C +_0808F9E8: + adds r0, r4, #0 + adds r0, #0x80 + strb r2, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _0808FA0A + cmp r0, #4 + bne _0808FA1C +_0808FA0A: + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xfe + strb r0, [r1] + strb r3, [r4, #0xd] + strb r3, [r4, #0x1e] +_0808FA1C: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0808FAC4 + movs r6, #0 + cmp r0, #0x80 + beq _0808FA84 + ldrh r1, [r4, #0xa] + ldr r0, _0808FA38 @ =0x00000101 + cmp r1, r0 + bne _0808FA3C + movs r0, #0xf + ldrsb r0, [r4, r0] + ldrh r1, [r4, #0x32] + b _0808FA42 + .align 2, 0 +_0808FA38: .4byte 0x00000101 +_0808FA3C: + movs r0, #0xf + ldrsb r0, [r4, r0] + ldrh r1, [r4, #0x2e] +_0808FA42: + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x7e + strh r0, [r1] + adds r5, r1, #0 + ldr r3, [r4, #0x50] + cmp r3, #0 + bne _0808FA5E + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + b _0808FA7C +_0808FA5E: + adds r2, r4, #0 + adds r2, #0x82 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808FA76 + ldrb r0, [r3, #0xc] + cmp r0, #2 + bne _0808FAA2 + adds r6, #1 + b _0808FAA2 +_0808FA76: + ldrb r0, [r2] + bl sub_0807CBD0 +_0808FA7C: + cmp r0, #0 + beq _0808FAA2 + adds r6, #1 + b _0808FAA2 +_0808FA84: + movs r6, #1 + ldrh r1, [r4, #0xa] + ldr r0, _0808FA94 @ =0x00000101 + cmp r1, r0 + bne _0808FA98 + ldrh r1, [r4, #0x32] + b _0808FA9A + .align 2, 0 +_0808FA94: .4byte 0x00000101 +_0808FA98: + ldrh r1, [r4, #0x2e] +_0808FA9A: + adds r0, r4, #0 + adds r0, #0x7e + strh r1, [r0] + adds r5, r0, #0 +_0808FAA2: + cmp r6, #0 + beq _0808FAC4 + adds r1, r4, #0 + adds r1, #0x81 + movs r0, #1 + strb r0, [r1] + ldrh r1, [r4, #0xa] + ldr r0, _0808FABC @ =0x00000101 + cmp r1, r0 + bne _0808FAC0 + ldrh r0, [r5] + strh r0, [r4, #0x32] + b _0808FAC4 + .align 2, 0 +_0808FABC: .4byte 0x00000101 +_0808FAC0: + ldrh r0, [r5] + strh r0, [r4, #0x2e] +_0808FAC4: + adds r0, r4, #0 + bl sub_0808FF50 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0808FACC +sub_0808FACC: @ 0x0808FACC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0 + bne _0808FAF2 + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0808FAEA + adds r0, r4, #0 + bl sub_0808FBFC + b _0808FB0A +_0808FAEA: + adds r0, r4, #0 + bl sub_0808FB68 + b _0808FB0A +_0808FAF2: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0808FB0A + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808FB0A + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_08004488 +_0808FB0A: + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _0808FB14 + cmp r0, #4 + bne _0808FB64 +_0808FB14: + ldrb r1, [r4, #0xd] + cmp r1, #1 + beq _0808FB3E + cmp r1, #1 + bgt _0808FB24 + cmp r1, #0 + beq _0808FB2A + b _0808FB64 +_0808FB24: + cmp r1, #2 + beq _0808FB5E + b _0808FB64 +_0808FB2A: + adds r0, r4, #0 + bl sub_0808FECC + cmp r0, #0 + beq _0808FB64 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xc + strb r0, [r4, #0xe] + b _0808FB64 +_0808FB3E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0808FB64 + strb r1, [r4, #0x1e] + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x80 + bl sub_08004488 + adds r0, r4, #0 + bl sub_0808FF20 + b _0808FB64 +_0808FB5E: + adds r0, r4, #0 + bl nullsub_1 +_0808FB64: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808FB68 +sub_0808FB68: @ 0x0808FB68 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r0, #0 + ldr r0, _0808FBAC @ =0x00004031 + cmp r1, r0 + bhi _0808FBB0 + subs r0, #1 + cmp r1, r0 + blo _0808FBB0 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r1, #0 + subs r0, #0x30 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #4 + movs r1, #8 + orrs r0, r1 + strb r0, [r4, #0x15] + movs r0, #1 + bl sub_08078A90 + adds r0, r4, #0 + movs r1, #0 + bl sub_0808FD44 + b _0808FBF6 + .align 2, 0 +_0808FBAC: .4byte 0x00004031 +_0808FBB0: + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r0, #0 + ldr r0, _0808FBF8 @ =0x00004031 + cmp r1, r0 + bhi _0808FBF0 + subs r0, #1 + cmp r1, r0 + blo _0808FBF0 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r1, #0 + subs r0, #0x30 + movs r1, #1 + ands r0, r1 + lsls r0, r0, #4 + movs r1, #8 + orrs r0, r1 + strb r0, [r4, #0x15] + movs r0, #1 + bl sub_08078A90 + adds r0, r4, #0 + movs r1, #1 + bl sub_0808FD44 +_0808FBF0: + adds r0, r4, #0 + bl sub_0808FDE8 +_0808FBF6: + pop {r4, pc} + .align 2, 0 +_0808FBF8: .4byte 0x00004031 + + thumb_func_start sub_0808FBFC +sub_0808FBFC: @ 0x0808FBFC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7c + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + adds r1, r0, #0 + ldr r0, _0808FC38 @ =0x0000404A + cmp r1, r0 + beq _0808FC34 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r1, #0 + subs r0, #0x4b + movs r1, #3 + ands r0, r1 + lsls r0, r0, #3 + strb r0, [r4, #0x15] + movs r0, #1 + bl sub_08078A90 + adds r0, r4, #0 + movs r1, #0 + bl sub_0808FD44 +_0808FC34: + pop {r4, pc} + .align 2, 0 +_0808FC38: .4byte 0x0000404A + + thumb_func_start sub_0808FC3C +sub_0808FC3C: @ 0x0808FC3C + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_0808FC5C + cmp r0, #0 + beq _0808FC58 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0 + bl sub_08078A90 +_0808FC58: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0808FC5C +sub_0808FC5C: @ 0x0808FC5C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0808FD40 + ldrb r1, [r4, #0xa] + cmp r1, #2 + beq _0808FC7C + cmp r1, #4 + bne _0808FC84 +_0808FC7C: + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xfe + b _0808FC88 +_0808FC84: + adds r1, r4, #0 + adds r1, #0x63 +_0808FC88: + strb r0, [r1] + adds r0, r4, #0 + bl sub_080002D0 + cmp r0, #0 + bne _0808FD40 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0808FD30 + movs r2, #0 + ldrh r1, [r4, #0xa] + ldr r0, _0808FCB4 @ =0x00000101 + cmp r1, r0 + bne _0808FCB8 + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r1, r4, #0 + adds r1, #0x7e + ldrh r1, [r1] + cmp r0, r1 + bne _0808FCC8 + b _0808FCCC + .align 2, 0 +_0808FCB4: .4byte 0x00000101 +_0808FCB8: + movs r1, #0x2e + ldrsh r0, [r4, r1] + adds r1, r4, #0 + adds r1, #0x7e + ldrh r1, [r1] + cmp r0, r1 + bne _0808FCC8 + movs r2, #1 +_0808FCC8: + cmp r2, #0 + beq _0808FD30 +_0808FCCC: + adds r0, r4, #0 + adds r0, #0x81 + movs r5, #1 + strb r5, [r0] + ldr r3, [r4, #0x50] + cmp r3, #0 + bne _0808FCE4 + adds r0, #5 + ldrh r0, [r0] + bl sub_0807CCC8 + b _0808FD0C +_0808FCE4: + adds r2, r4, #0 + adds r2, #0x82 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808FD06 + adds r0, r3, #0 + adds r0, #0x28 + subs r2, #8 + adds r1, r5, #0 + ldrh r2, [r2] + lsls r1, r2 + ldrb r2, [r0] + orrs r1, r2 + strb r1, [r0] + b _0808FD0C +_0808FD06: + ldrb r0, [r2] + bl sub_0807CCB4 +_0808FD0C: + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + bne _0808FD1A + movs r0, #4 + b _0808FD1C +_0808FD1A: + movs r0, #0x18 +_0808FD1C: + strb r0, [r4, #0xe] + ldr r0, _0808FD3C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0808FD30 + ldrb r0, [r4, #0xe] + adds r0, #0x10 + strb r0, [r4, #0xe] +_0808FD30: + adds r0, r4, #0 + bl sub_0808FF50 + movs r0, #1 + b _0808FD42 + .align 2, 0 +_0808FD3C: .4byte gUnk_03003F80 +_0808FD40: + movs r0, #0 +_0808FD42: + pop {r4, r5, pc} + + thumb_func_start sub_0808FD44 +sub_0808FD44: @ 0x0808FD44 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #1 + bne _0808FD8E + adds r0, r4, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r0, #0 + beq _0808FD62 + adds r0, r4, #0 + bl sub_08090498 +_0808FD62: + cmp r5, #0 + beq _0808FD6C + adds r0, r4, #0 + adds r0, #0x72 + b _0808FD70 +_0808FD6C: + adds r0, r4, #0 + adds r0, #0x70 +_0808FD70: + ldrh r5, [r0] + ldr r0, _0808FD84 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808FD88 + movs r0, #0x40 + strh r0, [r4, #0x24] + b _0808FDB2 + .align 2, 0 +_0808FD84: .4byte gUnk_03003F80 +_0808FD88: + strh r1, [r4, #0x24] + movs r0, #0x10 + b _0808FDB4 +_0808FD8E: + adds r0, r4, #0 + adds r0, #0x7c + ldrh r5, [r0] + ldr r0, _0808FDAC @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0808FDB0 + movs r1, #0x40 + movs r0, #0x40 + strh r0, [r4, #0x24] + strb r1, [r4, #0xe] + b _0808FDB6 + .align 2, 0 +_0808FDAC: .4byte gUnk_03003F80 +_0808FDB0: + strh r1, [r4, #0x24] +_0808FDB2: + movs r0, #0x20 +_0808FDB4: + strb r0, [r4, #0xe] +_0808FDB6: + ldr r0, _0808FDE0 @ =0x0000010F + bl sub_08004488 + adds r0, r4, #0 + bl sub_08090254 + ldr r1, _0808FDE4 @ =gUnk_080B4488 + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r0, r5, r0 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080001DA + pop {r4, r5, pc} + .align 2, 0 +_0808FDE0: .4byte 0x0000010F +_0808FDE4: .4byte gUnk_080B4488 + + thumb_func_start sub_0808FDE8 +sub_0808FDE8: @ 0x0808FDE8 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r0, #0x70 + ldrh r5, [r0] + subs r0, r5, #1 + movs r1, #1 + bl sub_080002E0 + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #1 + bl sub_080001DA + ldr r6, _0808FE28 @ =0x0000402E + cmp r0, r6 + bne _0808FE30 + movs r0, #0xf0 + ands r0, r4 + cmp r0, #0 + beq _0808FE14 + cmp r0, #0x50 + bne _0808FE1C +_0808FE14: + movs r0, #5 + ands r0, r4 + cmp r0, #0 + bne _0808FE58 +_0808FE1C: + ldr r0, _0808FE2C @ =0x0000402C + adds r1, r5, #0 + movs r2, #1 + bl sub_0800015E + b _0808FE58 + .align 2, 0 +_0808FE28: .4byte 0x0000402E +_0808FE2C: .4byte 0x0000402C +_0808FE30: + adds r0, r5, #0 + movs r1, #1 + bl sub_080002E0 + cmp r0, #5 + bne _0808FE58 + movs r1, #0xf0 + ands r1, r4 + cmp r1, #0 + beq _0808FE48 + cmp r1, #0x50 + bne _0808FE58 +_0808FE48: + ands r4, r0 + cmp r4, #0 + beq _0808FE58 + adds r0, r6, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_0800015E +_0808FE58: + adds r0, r7, #0 + adds r0, #0x72 + ldrh r5, [r0] + adds r0, r5, #1 + movs r1, #1 + bl sub_080002E0 + adds r4, r0, #0 + adds r0, r5, #0 + movs r1, #1 + bl sub_080001DA + ldr r6, _0808FE98 @ =0x0000402F + cmp r0, r6 + bne _0808FEA0 + movs r0, #0xf0 + ands r0, r4 + cmp r0, #0 + beq _0808FE82 + cmp r0, #0x50 + bne _0808FE8A +_0808FE82: + movs r0, #0xa + ands r0, r4 + cmp r0, #0 + bne _0808FEC8 +_0808FE8A: + ldr r0, _0808FE9C @ =0x0000402D + adds r1, r5, #0 + movs r2, #1 + bl sub_0800015E + b _0808FEC8 + .align 2, 0 +_0808FE98: .4byte 0x0000402F +_0808FE9C: .4byte 0x0000402D +_0808FEA0: + adds r0, r5, #0 + movs r1, #1 + bl sub_080002E0 + cmp r0, #0xa + bne _0808FEC8 + movs r1, #0xf0 + ands r1, r4 + cmp r1, #0 + beq _0808FEB8 + cmp r1, #0x50 + bne _0808FEC8 +_0808FEB8: + ands r4, r0 + cmp r4, #0 + beq _0808FEC8 + adds r0, r6, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_0800015E +_0808FEC8: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0808FECC +sub_0808FECC: @ 0x0808FECC + push {r4, r5, lr} + adds r2, r0, #0 + movs r4, #1 + ldr r0, _0808FF18 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0808FF10 + ldr r3, _0808FF1C @ =gLinkEntity + ldrb r0, [r3, #0xc] + cmp r0, #6 + bne _0808FF10 + ldrb r0, [r3, #0x14] + cmp r0, #0 + bne _0808FF10 + movs r1, #0x32 + ldrsh r0, [r3, r1] + movs r5, #0x32 + ldrsh r1, [r2, r5] + subs r0, r0, r1 + cmp r0, #0x13 + bgt _0808FF10 + movs r0, #0x2e + ldrsh r2, [r2, r0] + adds r0, r2, #0 + adds r0, #0xc + movs r5, #0x2e + ldrsh r1, [r3, r5] + cmp r0, r1 + ble _0808FF10 + subs r0, #0x18 + cmp r0, r1 + blt _0808FF12 +_0808FF10: + movs r4, #0 +_0808FF12: + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 +_0808FF18: .4byte gUnk_03003F80 +_0808FF1C: .4byte gLinkEntity + + thumb_func_start sub_0808FF20 +sub_0808FF20: @ 0x0808FF20 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xb] + cmp r1, #0 + beq _0808FF4A + cmp r1, #0 + blt _0808FF4A + cmp r1, #2 + bgt _0808FF4A + subs r1, #1 + movs r0, #0x63 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0808FF4A + str r4, [r1, #0x50] + adds r0, r4, #0 + bl sub_0806FA24 +_0808FF4A: + pop {r4, pc} + + thumb_func_start nullsub_1 +nullsub_1: @ 0x0808FF4C + bx lr + .align 2, 0 + + thumb_func_start sub_0808FF50 +sub_0808FF50: @ 0x0808FF50 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _0808FF98 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r2, r6, #0 + adds r2, #0x7c + strh r1, [r2] + ldrh r0, [r6, #0x2e] + movs r1, #0xf + ands r1, r0 + ldrh r7, [r2] + adds r0, r6, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #0 + beq _0808FF9C + cmp r0, #1 + beq _0808FFC0 + b _0809008A + .align 2, 0 +_0808FF98: .4byte gUnk_03000BF0 +_0808FF9C: + adds r0, r6, #0 + adds r0, #0x70 + strh r7, [r0] + ldrh r0, [r0] + movs r1, #1 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x74 + strh r0, [r1] + ldr r0, _0808FFBC @ =0x0000404A + adds r1, r7, #0 + movs r2, #1 + bl sub_0800015E + b _0809008A + .align 2, 0 +_0808FFBC: .4byte 0x0000404A +_0808FFC0: + movs r0, #8 + ands r1, r0 + cmp r1, #0 + beq _0809002C + adds r0, r6, #0 + adds r0, #0x70 + strh r7, [r0] + ldrh r0, [r0] + movs r1, #1 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x74 + strh r0, [r1] + ldr r4, _08090028 @ =gUnk_08121EE4 + movs r0, #0x81 + adds r0, r0, r6 + mov r8, r0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + adds r1, r7, #0 + movs r2, #1 + bl sub_0800015E + adds r0, r7, #1 + adds r5, r6, #0 + adds r5, #0x72 + strh r0, [r5] + ldrh r0, [r5] + movs r1, #1 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + mov r1, r8 + ldrb r0, [r1] + adds r0, #4 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r1, [r0] + ldrh r2, [r5] + adds r0, r6, #0 + bl sub_08090094 + adds r0, r6, #0 + movs r1, #1 + bl sub_0809028C + b _0809008A + .align 2, 0 +_08090028: .4byte gUnk_08121EE4 +_0809002C: + adds r0, r6, #0 + adds r0, #0x72 + strh r7, [r0] + ldrh r0, [r0] + movs r1, #1 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r5, _08090090 @ =gUnk_08121EE4 + movs r4, #0x81 + adds r4, r4, r6 + mov r8, r4 + ldrb r0, [r4] + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r0, [r0] + adds r1, r7, #0 + movs r2, #1 + bl sub_0800015E + subs r0, r7, #1 + adds r4, r6, #0 + adds r4, #0x70 + strh r0, [r4] + ldrh r0, [r4] + movs r1, #1 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x74 + strh r0, [r1] + mov r1, r8 + ldrb r0, [r1] + adds r0, #2 + lsls r0, r0, #1 + adds r0, r0, r5 + ldrh r1, [r0] + ldrh r2, [r4] + adds r0, r6, #0 + bl sub_08090094 + adds r0, r6, #0 + movs r1, #0 + bl sub_0809028C +_0809008A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08090090: .4byte gUnk_08121EE4 + + thumb_func_start sub_08090094 +sub_08090094: @ 0x08090094 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + adds r0, r7, #0 + movs r1, #1 + bl sub_080002E0 + adds r4, r0, #0 + adds r0, r7, #0 + movs r1, #1 + bl sub_080001DA + adds r3, r0, #0 + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r3 + cmp r0, #0 + bne _0809012C + adds r3, r5, #0 + ldr r1, _080900D0 @ =0xFFFFBFDC + adds r0, r3, r1 + cmp r0, #0xb + bhi _0809011A + lsls r0, r0, #2 + ldr r1, _080900D4 @ =_080900D8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080900D0: .4byte 0xFFFFBFDC +_080900D4: .4byte _080900D8 +_080900D8: @ jump table + .4byte _08090114 @ case 0 + .4byte _08090108 @ case 1 + .4byte _0809011A @ case 2 + .4byte _0809011A @ case 3 + .4byte _0809011A @ case 4 + .4byte _0809011A @ case 5 + .4byte _0809011A @ case 6 + .4byte _0809011A @ case 7 + .4byte _08090114 @ case 8 + .4byte _0809010E @ case 9 + .4byte _08090114 @ case 10 + .4byte _0809010E @ case 11 +_08090108: + cmp r4, #5 + bne _0809011A + b _08090118 +_0809010E: + cmp r4, #5 + bne _0809011A + b _08090118 +_08090114: + cmp r4, #0xa + bne _0809011A +_08090118: + ldr r3, _08090128 @ =0x00004022 +_0809011A: + adds r0, r3, #0 + adds r1, r7, #0 + movs r2, #1 + bl sub_0800015E + b _08090242 + .align 2, 0 +_08090128: .4byte 0x00004022 +_0809012C: + ldr r1, _08090140 @ =0xFFFFBFDE + adds r0, r3, r1 + cmp r0, #0xd + bls _08090136 + b _08090242 +_08090136: + lsls r0, r0, #2 + ldr r1, _08090144 @ =_08090148 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08090140: .4byte 0xFFFFBFDE +_08090144: .4byte _08090148 +_08090148: @ jump table + .4byte _08090242 @ case 0 + .4byte _08090242 @ case 1 + .4byte _080901EC @ case 2 + .4byte _08090180 @ case 3 + .4byte _08090242 @ case 4 + .4byte _08090242 @ case 5 + .4byte _08090242 @ case 6 + .4byte _08090242 @ case 7 + .4byte _08090242 @ case 8 + .4byte _08090242 @ case 9 + .4byte _08090210 @ case 10 + .4byte _080901B4 @ case 11 + .4byte _08090210 @ case 12 + .4byte _080901B4 @ case 13 +_08090180: + ldr r0, _080901A8 @ =0x00004024 + cmp r5, r0 + bne _08090194 + ldr r3, _080901AC @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] +_08090194: + ldr r0, _080901B0 @ =0x0000402C + cmp r5, r0 + bne _08090238 + ldr r3, _080901AC @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + b _08090234 + .align 2, 0 +_080901A8: .4byte 0x00004024 +_080901AC: .4byte 0x00004022 +_080901B0: .4byte 0x0000402C +_080901B4: + ldr r0, _080901DC @ =0x0000402C + cmp r5, r0 + bne _080901C8 + ldr r3, _080901E0 @ =0x0000402B + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + orrs r0, r1 + strb r0, [r2] +_080901C8: + ldr r0, _080901E4 @ =0x00004024 + cmp r5, r0 + bne _08090238 + ldr r3, _080901E8 @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x10 + b _08090234 + .align 2, 0 +_080901DC: .4byte 0x0000402C +_080901E0: .4byte 0x0000402B +_080901E4: .4byte 0x00004024 +_080901E8: .4byte 0x00004022 +_080901EC: + ldr r0, _08090204 @ =0x00004025 + cmp r5, r0 + bne _08090200 + ldr r3, _08090208 @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r2] +_08090200: + ldr r0, _0809020C @ =0x0000402D + b _08090226 + .align 2, 0 +_08090204: .4byte 0x00004025 +_08090208: .4byte 0x00004022 +_0809020C: .4byte 0x0000402D +_08090210: + ldr r0, _08090244 @ =0x0000402D + cmp r5, r0 + bne _08090224 + ldr r3, _08090248 @ =0x0000402B + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r2] +_08090224: + ldr r0, _0809024C @ =0x00004025 +_08090226: + cmp r5, r0 + bne _08090238 + ldr r3, _08090250 @ =0x00004022 + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x20 +_08090234: + orrs r0, r1 + strb r0, [r2] +_08090238: + adds r0, r3, #0 + adds r1, r7, #0 + movs r2, #1 + bl sub_0800015E +_08090242: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08090244: .4byte 0x0000402D +_08090248: .4byte 0x0000402B +_0809024C: .4byte 0x00004025 +_08090250: .4byte 0x00004022 + + thumb_func_start sub_08090254 +sub_08090254: @ 0x08090254 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x70 + ldrh r1, [r1] + adds r5, r4, #0 + adds r5, #0x38 + ldrb r2, [r5] + bl sub_0807B9B8 + adds r0, r4, #0 + adds r0, #0x80 + ldrb r0, [r0] + cmp r0, #1 + bne _08090288 + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x72 + ldrh r1, [r1] + ldrb r2, [r5] + bl sub_0807B9B8 +_08090288: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809028C +sub_0809028C: @ 0x0809028C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + adds r4, r6, #0 + adds r4, #0x83 + ldrb r0, [r4] + movs r2, #0x30 + ands r2, r0 + movs r0, #0 + mov sb, r0 + strb r2, [r4] + adds r0, r6, #0 + adds r0, #0x70 + ldrh r5, [r0] + adds r7, r5, #0 + subs r7, #0x80 + adds r0, #2 + ldrh r3, [r0] + movs r0, #0x80 + rsbs r0, r0, #0 + adds r0, r0, r3 + mov r8, r0 + cmp r1, #1 + bne _0809039A + movs r0, #0x20 + ands r0, r2 + cmp r0, #0 + beq _080902D4 + adds r1, r3, #0 + subs r1, #0x7f + movs r0, #0 + bl sub_08090480 + b _080902FE +_080902D4: + mov r0, r8 + movs r1, #2 + bl sub_080002B0 + adds r1, r0, #0 + ldr r0, _080902EC @ =0x00000301 + cmp r1, r0 + beq _080902F0 + adds r0, #7 + cmp r1, r0 + beq _080902F6 + b _080902FE + .align 2, 0 +_080902EC: .4byte 0x00000301 +_080902F0: + ldrb r0, [r4] + movs r1, #8 + b _080902FA +_080902F6: + ldrb r0, [r4] + movs r1, #2 +_080902FA: + orrs r0, r1 + strb r0, [r4] +_080902FE: + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x2a + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _0809031E + movs r0, #0 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #0 + mov r1, r8 + bl sub_08090480 +_0809031E: + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0809034E + subs r4, r7, #1 + adds r0, r4, #0 + movs r1, #1 + bl sub_080002B0 + movs r1, #0xc0 + lsls r1, r1, #2 + cmp r0, r1 + bne _0809033C + b _08090478 +_0809033C: + movs r0, #0 + adds r1, r4, #0 + bl sub_08090480 + subs r1, r7, #2 + movs r0, #2 + bl sub_08090480 + b _08090478 +_0809034E: + subs r0, r7, #1 + movs r1, #2 + bl sub_080002B0 + adds r1, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + cmp r1, r0 + beq _08090368 + adds r0, #8 + cmp r1, r0 + beq _0809036E + b _08090376 +_08090368: + ldrb r1, [r4] + movs r0, #4 + b _08090372 +_0809036E: + ldrb r1, [r4] + movs r0, #1 +_08090372: + orrs r0, r1 + strb r0, [r4] +_08090376: + ldrb r1, [r4] + movs r0, #0x15 + ands r0, r1 + cmp r0, #0 + beq _08090478 + movs r0, #0x2a + ands r0, r1 + cmp r0, #0 + bne _08090478 + movs r0, #0 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #1 + mov r1, r8 + bl sub_08090480 + b _08090478 +_0809039A: + movs r0, #0x10 + ands r0, r2 + cmp r0, #0 + beq _080903AE + adds r1, r5, #0 + subs r1, #0x81 + movs r0, #0 + bl sub_08090480 + b _080903DA +_080903AE: + adds r0, r7, #0 + movs r1, #2 + bl sub_080002B0 + adds r1, r0, #0 + ldr r0, _080903C8 @ =0x00000302 + cmp r1, r0 + beq _080903CC + adds r0, #4 + cmp r1, r0 + beq _080903D2 + b _080903DA + .align 2, 0 +_080903C8: .4byte 0x00000302 +_080903CC: + ldrb r0, [r4] + movs r1, #4 + b _080903D6 +_080903D2: + ldrb r0, [r4] + movs r1, #1 +_080903D6: + orrs r0, r1 + strb r0, [r4] +_080903DA: + adds r2, r6, #0 + adds r2, #0x83 + ldrb r1, [r2] + movs r0, #0x15 + ands r0, r1 + adds r4, r2, #0 + cmp r0, #0 + beq _080903FA + movs r0, #0 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #0 + mov r1, r8 + bl sub_08090480 +_080903FA: + ldrb r1, [r4] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0809042C + mov r4, r8 + adds r4, #1 + adds r0, r4, #0 + movs r1, #1 + bl sub_080002B0 + movs r1, #0xc0 + lsls r1, r1, #2 + cmp r0, r1 + beq _08090478 + movs r0, #0 + adds r1, r4, #0 + bl sub_08090480 + mov r1, r8 + adds r1, #2 + movs r0, #1 + bl sub_08090480 + b _08090478 +_0809042C: + mov r0, r8 + adds r0, #1 + movs r1, #2 + bl sub_080002B0 + adds r1, r0, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + cmp r1, r0 + beq _08090448 + adds r0, #6 + cmp r1, r0 + beq _0809044E + b _08090456 +_08090448: + ldrb r1, [r4] + movs r0, #8 + b _08090452 +_0809044E: + ldrb r1, [r4] + movs r0, #2 +_08090452: + orrs r0, r1 + strb r0, [r4] +_08090456: + ldrb r1, [r4] + movs r0, #0x2a + ands r0, r1 + cmp r0, #0 + beq _08090478 + movs r0, #0x15 + ands r0, r1 + cmp r0, #0 + bne _08090478 + movs r0, #2 + adds r1, r7, #0 + bl sub_08090480 + movs r0, #0 + mov r1, r8 + bl sub_08090480 +_08090478: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08090480 +sub_08090480: @ 0x08090480 + push {lr} + ldr r2, _08090494 @ =gUnk_08121EF0 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + movs r2, #1 + bl sub_0800015E + pop {pc} + .align 2, 0 +_08090494: .4byte gUnk_08121EF0 + + thumb_func_start sub_08090498 +sub_08090498: @ 0x08090498 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r4, r0, #0 + subs r4, #0x80 + adds r0, r4, #0 + movs r1, #1 + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x83 + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080904D2 + adds r0, r4, #0 + movs r1, #2 + bl sub_080002B0 + ldr r1, _08090510 @ =0x00000306 + cmp r0, r1 + bne _080904D2 + movs r0, #0x62 + adds r1, r4, #0 + movs r2, #1 + bl sub_08000148 +_080904D2: + adds r0, r5, #0 + adds r0, #0x72 + ldrh r0, [r0] + adds r4, r0, #0 + subs r4, #0x80 + adds r0, r4, #0 + movs r1, #1 + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x83 + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _0809050C + adds r0, r4, #0 + movs r1, #2 + bl sub_080002B0 + movs r1, #0xc2 + lsls r1, r1, #2 + cmp r0, r1 + bne _0809050C + movs r0, #0x63 + adds r1, r4, #0 + movs r2, #1 + bl sub_08000148 +_0809050C: + pop {r4, r5, pc} + .align 2, 0 +_08090510: .4byte 0x00000306 + + thumb_func_start sub_08090514 +sub_08090514: @ 0x08090514 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x50] + cmp r0, #0 + beq _0809059E + ldrb r0, [r0, #0xd] + cmp r0, #1 + beq _08090552 + cmp r0, #1 + bgt _0809052E + cmp r0, #0 + beq _08090538 + b _0809059E +_0809052E: + cmp r0, #2 + beq _08090568 + cmp r0, #3 + beq _08090582 + b _0809059E +_08090538: + ldrb r1, [r2, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x19] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + b _0809059A +_08090552: + ldrb r0, [r2, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r2, #0x19] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + b _0809059A +_08090568: + ldrb r1, [r2, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x19] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + b _0809059A +_08090582: + ldrb r1, [r2, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x19] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 +_0809059A: + orrs r0, r1 + strb r0, [r2] +_0809059E: + pop {pc} + + thumb_func_start sub_080905A0 +sub_080905A0: @ 0x080905A0 + push {lr} + ldr r2, _080905B4 @ =gUnk_08122218 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080905B4: .4byte gUnk_08122218 + + thumb_func_start sub_080905B8 +sub_080905B8: @ 0x080905B8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r7, r0, #0 + movs r0, #1 + mov sb, r0 + mov r1, sb + strb r1, [r7, #0xc] + movs r5, #0x2e + ldrsh r2, [r7, r5] + ldr r6, _08090618 @ =gUnk_03000BF0 + ldrh r0, [r6, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r4, #0x3f + ands r2, r4 + movs r1, #0x32 + ldrsh r0, [r7, r1] + ldrh r1, [r6, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r2, r0 + adds r5, r7, #0 + adds r5, #0x78 + movs r0, #0 + mov r8, r0 + strh r2, [r5] + adds r0, r7, #0 + bl sub_08090DC4 + adds r0, r7, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldr r1, _0809061C @ =0x00007FFF + ands r1, r0 + cmp r1, #0x80 + beq _08090680 + cmp r1, #0x80 + bgt _08090620 + cmp r1, #0x20 + beq _080906E6 + cmp r1, #0x40 + beq _08090650 + b _080906E0 + .align 2, 0 +_08090618: .4byte gUnk_03000BF0 +_0809061C: .4byte 0x00007FFF +_08090620: + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + beq _080906E6 + cmp r1, r0 + bgt _08090636 + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _08090640 + b _080906E0 +_08090636: + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + beq _080906C4 + b _080906E0 +_08090640: + adds r1, r7, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r7, #0 + bl sub_08016A04 + b _080906E6 +_08090650: + ldrh r1, [r7, #0x32] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strh r0, [r7, #0x32] + ldr r4, _0809067C @ =0x00004017 + ldrh r1, [r5] + subs r1, #0x80 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldrh r1, [r5] + subs r1, #0x40 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + b _080906E6 + .align 2, 0 +_0809067C: .4byte 0x00004017 +_08090680: + mov r1, r8 + strb r1, [r7, #0x1e] + ldrh r1, [r7, #0x32] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strh r0, [r7, #0x32] + movs r2, #0x2e + ldrsh r1, [r7, r2] + ldrh r0, [r6, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r4 + movs r2, #0x32 + ldrsh r0, [r7, r2] + ldrh r2, [r6, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r5] + ldr r0, _080906C0 @ =0x00004026 + ldrh r1, [r5] + adds r2, r7, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + b _080906E6 + .align 2, 0 +_080906C0: .4byte 0x00004026 +_080906C4: + adds r0, r7, #0 + bl sub_08090E64 + ldrb r0, [r7, #0xb] + cmp r0, #0 + beq _080906E0 + adds r0, r7, #0 + adds r0, #0x62 + mov r5, sb + strb r5, [r0] + adds r1, r7, #0 + adds r1, #0x80 + movs r0, #0x30 + strb r0, [r1] +_080906E0: + adds r0, r7, #0 + bl sub_08090B6C +_080906E6: + adds r0, r7, #0 + adds r0, #0x81 + ldrb r1, [r0] + cmp r1, #0x10 + beq _0809075C + movs r0, #0x70 + ands r0, r1 + adds r4, r7, #0 + adds r4, #0x78 + cmp r0, #0x20 + beq _0809072E + cmp r0, #0x30 + bne _0809073A + ldrh r0, [r4] + subs r0, #0x40 + strh r0, [r4] + adds r0, r7, #0 + bl sub_08090B6C + movs r0, #0x2e + ldrsh r1, [r7, r0] + ldr r2, _08090778 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r7, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4] +_0809072E: + ldrh r0, [r4] + adds r0, #0x40 + strh r0, [r4] + adds r0, r7, #0 + bl sub_08090B6C +_0809073A: + movs r0, #0x2e + ldrsh r1, [r7, r0] + ldr r2, _08090778 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r7, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4] +_0809075C: + adds r0, r7, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldr r1, _0809077C @ =0x00007FFF + ands r1, r0 + cmp r1, #2 + beq _08090780 + cmp r1, #4 + bne _080907C8 + adds r0, r7, #0 + movs r1, #0x7e + bl sub_0801D2B4 + b _080907C8 + .align 2, 0 +_08090778: .4byte gUnk_03000BF0 +_0809077C: .4byte 0x00007FFF +_08090780: + adds r0, r7, #0 + adds r0, #0x78 + ldrh r0, [r0] + adds r4, r0, #0 + subs r4, #0x81 + ldrb r0, [r7, #0xa] + movs r1, #2 + mov r8, r1 + cmp r0, #0x1a + beq _08090798 + movs r2, #3 + mov r8, r2 +_08090798: + movs r5, #0 + cmp r5, r8 + bhs _080907C8 + ldr r6, _080907DC @ =0x00004026 +_080907A0: + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #2 + bl sub_0800015E + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r4, #0 + adds r1, #0x40 + movs r0, #0 + movs r2, #1 + bl sub_080001D0 + adds r5, #1 + adds r4, #1 + cmp r5, r8 + blo _080907A0 +_080907C8: + ldrb r0, [r7, #0xa] + subs r0, #1 + cmp r0, #0x3b + bls _080907D2 + b _080909DC +_080907D2: + lsls r0, r0, #2 + ldr r1, _080907E0 @ =_080907E4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080907DC: .4byte 0x00004026 +_080907E0: .4byte _080907E4 +_080907E4: @ jump table + .4byte _080908D4 @ case 0 + .4byte _080909DC @ case 1 + .4byte _080909DC @ case 2 + .4byte _080909DC @ case 3 + .4byte _080909DC @ case 4 + .4byte _080909DC @ case 5 + .4byte _080909DC @ case 6 + .4byte _080909DC @ case 7 + .4byte _080908F0 @ case 8 + .4byte _080909DC @ case 9 + .4byte _080909DC @ case 10 + .4byte _080909DC @ case 11 + .4byte _080909DC @ case 12 + .4byte _080909DC @ case 13 + .4byte _080909DC @ case 14 + .4byte _080909DC @ case 15 + .4byte _080909DC @ case 16 + .4byte _080909DC @ case 17 + .4byte _080909DC @ case 18 + .4byte _080909DC @ case 19 + .4byte _080909DC @ case 20 + .4byte _080909DC @ case 21 + .4byte _080909DC @ case 22 + .4byte _080909DC @ case 23 + .4byte _080909DC @ case 24 + .4byte _080909DC @ case 25 + .4byte _080909DC @ case 26 + .4byte _080909DC @ case 27 + .4byte _080909DC @ case 28 + .4byte _08090920 @ case 29 + .4byte _08090938 @ case 30 + .4byte _080909DC @ case 31 + .4byte _080909DC @ case 32 + .4byte _080909DC @ case 33 + .4byte _080909DC @ case 34 + .4byte _080909DC @ case 35 + .4byte _080909DC @ case 36 + .4byte _080909DC @ case 37 + .4byte _080909DC @ case 38 + .4byte _08090984 @ case 39 + .4byte _080909DC @ case 40 + .4byte _080909DC @ case 41 + .4byte _080909DC @ case 42 + .4byte _080909DC @ case 43 + .4byte _080909DC @ case 44 + .4byte _080909DC @ case 45 + .4byte _080909DC @ case 46 + .4byte _080909DC @ case 47 + .4byte _080909DC @ case 48 + .4byte _080909DC @ case 49 + .4byte _080909DC @ case 50 + .4byte _080909DC @ case 51 + .4byte _080909DC @ case 52 + .4byte _080909DC @ case 53 + .4byte _080909DC @ case 54 + .4byte _080909DC @ case 55 + .4byte _080909DC @ case 56 + .4byte _080909DC @ case 57 + .4byte _08090994 @ case 58 + .4byte _080909C8 @ case 59 +_080908D4: + ldrb r0, [r7, #0xb] + cmp r0, #0 + bne _080908DC + b _080909DC +_080908DC: + adds r2, r7, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + b _080909DC +_080908F0: + movs r0, #0x4d + movs r1, #0x3e + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080909DC + movs r3, #0x80 + lsls r3, r3, #0xd + adds r0, r7, #0 + adds r1, r4, #0 + adds r2, r3, #0 + bl sub_0806FA48 + movs r0, #1 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x11] + subs r0, #0x11 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #0x11] + b _080909DC +_08090920: + ldr r0, _08090934 @ =0x00000306 + adds r1, r7, #0 + adds r1, #0x78 + ldrh r1, [r1] + adds r1, #0x41 + movs r2, #2 + bl sub_0807B7D8 + b _080909DC + .align 2, 0 +_08090934: .4byte 0x00000306 +_08090938: + adds r5, r7, #0 + adds r5, #0x38 + movs r0, #1 + strb r0, [r5] + ldrb r1, [r7, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r7, #0x1b] + ldr r0, _0809097C @ =0x00004074 + adds r4, r7, #0 + adds r4, #0x78 + ldrh r1, [r4] + subs r1, #0x40 + ldrb r2, [r5] + bl sub_0800015E + ldrh r1, [r4] + subs r1, #0x40 + ldrb r2, [r5] + movs r0, #0x3f + bl sub_080001D0 + ldr r6, _08090980 @ =0x00004017 + ldrh r1, [r4] + ldrb r2, [r5] + adds r0, r6, #0 + bl sub_0800015E + ldrh r1, [r4] + adds r1, #0x40 + ldrb r2, [r5] + b _080909BC + .align 2, 0 +_0809097C: .4byte 0x00004074 +_08090980: .4byte 0x00004017 +_08090984: + ldrb r0, [r7, #0xb] + cmp r0, #0 + beq _080909DC + adds r1, r7, #0 + adds r1, #0x62 + movs r0, #0xfc + strb r0, [r1] + b _080909DC +_08090994: + ldr r6, _080909C4 @ =0x00004023 + adds r5, r7, #0 + adds r5, #0x78 + ldrh r1, [r5] + subs r1, #0x41 + adds r4, r7, #0 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + ldrh r1, [r5] + subs r1, #0x40 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + ldrh r1, [r5] + subs r1, #0x3f + ldrb r2, [r4] +_080909BC: + adds r0, r6, #0 + bl sub_0800015E + b _080909DC + .align 2, 0 +_080909C4: .4byte 0x00004023 +_080909C8: + ldr r0, _080909E4 @ =0x00004022 + adds r1, r7, #0 + adds r1, #0x78 + ldrh r1, [r1] + adds r1, #0x41 + adds r2, r7, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_080909DC: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080909E4: .4byte 0x00004022 + + thumb_func_start sub_080909E8 +sub_080909E8: @ 0x080909E8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldr r1, _08090A04 @ =0x00007FFF + ands r1, r0 + cmp r1, #8 + beq _08090A42 + cmp r1, #8 + bgt _08090A08 + cmp r1, #1 + beq _08090A12 + b _08090B60 + .align 2, 0 +_08090A04: .4byte 0x00007FFF +_08090A08: + cmp r1, #0x10 + beq _08090A68 + cmp r1, #0x80 + beq _08090AB0 + b _08090B60 +_08090A12: + ldr r2, _08090A34 @ =gLinkEntity + movs r0, #0x32 + ldrsh r1, [r2, r0] + movs r3, #0x32 + ldrsh r0, [r5, r3] + cmp r1, r0 + blt _08090A26 + adds r0, #0x18 + cmp r1, r0 + ble _08090A38 +_08090A26: + ldrb r0, [r5, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x80 + orrs r1, r0 + strb r1, [r5, #0x19] + b _08090B60 + .align 2, 0 +_08090A34: .4byte gLinkEntity +_08090A38: + ldrb r0, [r5, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r5, #0x19] + b _08090B60 +_08090A42: + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x10 + beq _08090A52 + b _08090B60 +_08090A52: + movs r0, #0 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0xf] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0xf] + adds r0, r5, #0 + bl sub_08090E4C + b _08090B60 +_08090A68: + ldrb r0, [r5, #0xa] + cmp r0, #0x3e + beq _08090A8C + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x14 + bne _08090B60 + ldrb r0, [r5, #0x1e] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0x1e] + movs r0, #0 + strb r0, [r5, #0xe] + b _08090B60 +_08090A8C: + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe + bne _08090B60 + movs r0, #0 + strb r0, [r5, #0xe] + ldrb r0, [r5, #0xf] + adds r0, #1 + movs r1, #3 + bl __modsi3 + strb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0x1e] + b _08090B60 +_08090AB0: + ldr r2, _08090B00 @ =gLinkEntity + movs r3, #0x32 + ldrsh r1, [r2, r3] + movs r3, #0x32 + ldrsh r0, [r5, r3] + adds r0, #8 + cmp r1, r0 + bge _08090B14 + ldr r0, _08090B04 @ =gUnk_03003F80 + ldrb r0, [r0, #0x12] + cmp r0, #0x1e + beq _08090B60 + adds r0, r5, #0 + bl sub_080002A0 + ldr r1, _08090B08 @ =0x00004017 + cmp r0, r1 + bne _08090B60 + ldr r0, _08090B0C @ =0x00004026 + adds r4, r5, #0 + adds r4, #0x78 + ldrh r1, [r4] + adds r5, #0x38 + ldrb r2, [r5] + bl sub_0800015E + ldr r6, _08090B10 @ =0x0000403D + ldrh r1, [r4] + subs r1, #0x40 + ldrb r2, [r5] + adds r0, r6, #0 + bl sub_0800015E + ldrh r1, [r4] + subs r1, #0x80 + ldrb r2, [r5] + adds r0, r6, #0 + bl sub_0800015E + b _08090B60 + .align 2, 0 +_08090B00: .4byte gLinkEntity +_08090B04: .4byte gUnk_03003F80 +_08090B08: .4byte 0x00004017 +_08090B0C: .4byte 0x00004026 +_08090B10: .4byte 0x0000403D +_08090B14: + adds r3, r2, #0 + adds r3, #0x38 + ldrb r1, [r3] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08090B2C + movs r0, #1 + strb r0, [r3] + adds r0, r2, #0 + bl sub_08016A04 +_08090B2C: + adds r0, r5, #0 + bl sub_080002A0 + ldr r6, _08090B64 @ =0x00004017 + cmp r0, r6 + beq _08090B60 + adds r4, r5, #0 + adds r4, #0x78 + ldrh r1, [r4] + adds r5, #0x38 + ldrb r2, [r5] + adds r0, r6, #0 + bl sub_0800015E + ldrh r1, [r4] + subs r1, #0x40 + ldrb r2, [r5] + adds r0, r6, #0 + bl sub_0800015E + ldr r0, _08090B68 @ =0x00004014 + ldrh r1, [r4] + subs r1, #0x80 + ldrb r2, [r5] + bl sub_0800015E +_08090B60: + pop {r4, r5, r6, pc} + .align 2, 0 +_08090B64: .4byte 0x00004017 +_08090B68: .4byte 0x00004014 + + thumb_func_start sub_08090B6C +sub_08090B6C: @ 0x08090B6C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r1, r0, #0 + adds r0, #0x80 + ldrb r0, [r0] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08090B80 + b _08090CD2 +_08090B80: + lsrs r0, r0, #0x1b + lsls r2, r0, #0x18 + lsrs r3, r2, #0x18 + ldrh r0, [r1, #0x2e] + movs r4, #0xf + mov r8, r4 + ands r4, r0 + mov r8, r4 + adds r0, r1, #0 + adds r0, #0x78 + ldrh r6, [r0] + subs r0, #0x40 + ldrb r7, [r0] + movs r0, #3 + ands r0, r3 + cmp r0, #1 + beq _08090BF8 + cmp r0, #1 + blo _08090BB0 + cmp r0, #2 + beq _08090C48 + cmp r0, #3 + beq _08090C90 + b _08090CD2 +_08090BB0: + lsrs r5, r2, #0x1b + cmp r3, #0xc + bne _08090BB8 + movs r5, #2 +_08090BB8: + rsbs r4, r5, #0 + cmp r4, r5 + bgt _08090BCE +_08090BBE: + adds r1, r6, r4 + ldr r0, _08090BE4 @ =0x00004022 + adds r2, r7, #0 + bl sub_0800015E + adds r4, #1 + cmp r4, r5 + ble _08090BBE +_08090BCE: + movs r0, #8 + mov r1, r8 + ands r1, r0 + cmp r1, #0 + beq _08090BEC + ldr r0, _08090BE8 @ =0x00004024 + subs r1, r6, r4 + adds r2, r7, #0 + bl sub_08090CDC + b _08090CB2 + .align 2, 0 +_08090BE4: .4byte 0x00004022 +_08090BE8: .4byte 0x00004024 +_08090BEC: + ldr r0, _08090BF4 @ =0x00004022 + subs r1, r6, r4 + b _08090C6E + .align 2, 0 +_08090BF4: .4byte 0x00004022 +_08090BF8: + lsrs r5, r2, #0x1b + rsbs r4, r5, #0 + cmp r4, r5 + bgt _08090C10 +_08090C00: + adds r1, r6, r4 + ldr r0, _08090C2C @ =0x00004022 + adds r2, r7, #0 + bl sub_0800015E + adds r4, #1 + cmp r4, r5 + ble _08090C00 +_08090C10: + movs r0, #8 + mov r1, r8 + ands r1, r0 + cmp r1, #0 + beq _08090C34 + ldr r0, _08090C30 @ =0x00004024 + subs r1, r6, r4 + adds r2, r7, #0 + bl sub_08090CDC + cmp r4, #0 + beq _08090CD2 + b _08090C6A + .align 2, 0 +_08090C2C: .4byte 0x00004022 +_08090C30: .4byte 0x00004024 +_08090C34: + cmp r4, #0 + beq _08090CB2 + ldr r0, _08090C44 @ =0x00004022 + subs r1, r6, r4 + adds r2, r7, #0 + bl sub_0800015E + b _08090CB2 + .align 2, 0 +_08090C44: .4byte 0x00004022 +_08090C48: + lsrs r5, r2, #0x1a + rsbs r4, r5, #0 + cmp r4, r5 + bge _08090C60 +_08090C50: + adds r1, r6, r4 + ldr r0, _08090C78 @ =0x00004022 + adds r2, r7, #0 + bl sub_0800015E + adds r4, #1 + cmp r4, r5 + blt _08090C50 +_08090C60: + movs r0, #8 + mov r1, r8 + ands r1, r0 + cmp r1, #0 + beq _08090C7C +_08090C6A: + ldr r0, _08090C78 @ =0x00004022 + adds r1, r6, r4 +_08090C6E: + adds r2, r7, #0 + bl sub_0800015E + b _08090CD2 + .align 2, 0 +_08090C78: .4byte 0x00004022 +_08090C7C: + ldr r0, _08090C8C @ =0x00004024 + subs r1, r6, r4 + subs r1, #1 + adds r2, r7, #0 + bl sub_08090CDC + b _08090CB2 + .align 2, 0 +_08090C8C: .4byte 0x00004024 +_08090C90: + lsrs r5, r2, #0x1a + rsbs r4, r5, #0 + cmp r4, r5 + bgt _08090CA8 +_08090C98: + adds r1, r6, r4 + ldr r0, _08090CC0 @ =0x00004022 + adds r2, r7, #0 + bl sub_0800015E + adds r4, #1 + cmp r4, r5 + ble _08090C98 +_08090CA8: + movs r0, #8 + mov r1, r8 + ands r1, r0 + cmp r1, #0 + beq _08090CC8 +_08090CB2: + ldr r0, _08090CC4 @ =0x00004025 + adds r1, r6, r4 + adds r2, r7, #0 + bl sub_08090CDC + b _08090CD2 + .align 2, 0 +_08090CC0: .4byte 0x00004022 +_08090CC4: .4byte 0x00004025 +_08090CC8: + ldr r0, _08090CD8 @ =0x00004024 + subs r1, r6, r4 + adds r2, r7, #0 + bl sub_08090CDC +_08090CD2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08090CD8: .4byte 0x00004024 + + thumb_func_start sub_08090CDC +sub_08090CDC: @ 0x08090CDC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_080001DA + lsls r0, r0, #0x10 + lsrs r2, r0, #0x10 + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r2 + cmp r0, #0 + bne _08090D06 + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0800015E + b _08090DB2 +_08090D06: + ldr r1, _08090D18 @ =0xFFFFBFDE + adds r0, r2, r1 + cmp r0, #0xb + bhi _08090DB2 + lsls r0, r0, #2 + ldr r1, _08090D1C @ =_08090D20 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08090D18: .4byte 0xFFFFBFDE +_08090D1C: .4byte _08090D20 +_08090D20: @ jump table + .4byte _08090DB2 @ case 0 + .4byte _08090DB2 @ case 1 + .4byte _08090D80 @ case 2 + .4byte _08090D50 @ case 3 + .4byte _08090DB2 @ case 4 + .4byte _08090DB2 @ case 5 + .4byte _08090DB2 @ case 6 + .4byte _08090DB2 @ case 7 + .4byte _08090DB2 @ case 8 + .4byte _08090DB2 @ case 9 + .4byte _08090D98 @ case 10 + .4byte _08090D68 @ case 11 +_08090D50: + ldr r0, _08090D5C @ =0x00004024 + cmp r4, r0 + bne _08090D58 + ldr r2, _08090D60 @ =0x00004022 +_08090D58: + ldr r0, _08090D64 @ =0x0000402C + b _08090DA2 + .align 2, 0 +_08090D5C: .4byte 0x00004024 +_08090D60: .4byte 0x00004022 +_08090D64: .4byte 0x0000402C +_08090D68: + ldr r0, _08090D74 @ =0x0000402C + cmp r4, r0 + bne _08090D70 + ldr r2, _08090D78 @ =0x0000402B +_08090D70: + ldr r0, _08090D7C @ =0x00004024 + b _08090DA2 + .align 2, 0 +_08090D74: .4byte 0x0000402C +_08090D78: .4byte 0x0000402B +_08090D7C: .4byte 0x00004024 +_08090D80: + ldr r0, _08090D8C @ =0x00004025 + cmp r4, r0 + bne _08090D88 + ldr r2, _08090D90 @ =0x00004022 +_08090D88: + ldr r0, _08090D94 @ =0x0000402D + b _08090DA2 + .align 2, 0 +_08090D8C: .4byte 0x00004025 +_08090D90: .4byte 0x00004022 +_08090D94: .4byte 0x0000402D +_08090D98: + ldr r0, _08090DB4 @ =0x0000402D + cmp r4, r0 + bne _08090DA0 + ldr r2, _08090DB8 @ =0x0000402B +_08090DA0: + ldr r0, _08090DBC @ =0x00004025 +_08090DA2: + cmp r4, r0 + bne _08090DA8 + ldr r2, _08090DC0 @ =0x00004022 +_08090DA8: + adds r0, r2, #0 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0800015E +_08090DB2: + pop {r4, r5, r6, pc} + .align 2, 0 +_08090DB4: .4byte 0x0000402D +_08090DB8: .4byte 0x0000402B +_08090DBC: .4byte 0x00004025 +_08090DC0: .4byte 0x00004022 + + thumb_func_start sub_08090DC4 +sub_08090DC4: @ 0x08090DC4 + push {r4, lr} + mov ip, r0 + ldrb r0, [r0, #0xa] + lsls r0, r0, #3 + ldr r1, _08090E44 @ =gUnk_08121EF8 + adds r3, r0, r1 + ldrh r1, [r3, #6] + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08090DF4 + ldr r1, _08090E48 @ =gUnk_08122220 + movs r0, #3 + ldrsb r0, [r3, r0] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r3, [r0] + mov r0, ip + ldrb r1, [r0, #0xb] + lsls r0, r1, #3 + adds r3, r3, r0 + mov r0, ip + strb r1, [r0, #0x1e] +_08090DF4: + ldrb r1, [r3] + mov r0, ip + adds r0, #0x80 + strb r1, [r0] + ldrb r0, [r3, #1] + mov r1, ip + adds r1, #0x81 + strb r0, [r1] + ldrb r0, [r3, #2] + subs r1, #0x1f + strb r0, [r1] + ldrb r0, [r3, #3] + adds r1, #1 + strb r0, [r1] + ldrb r1, [r3, #4] + lsls r1, r1, #6 + mov r0, ip + ldrb r2, [r0, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1, #0x19] + ldrb r0, [r3, #5] + mov r4, ip + adds r4, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrh r1, [r3, #6] + mov r0, ip + adds r0, #0x82 + strh r1, [r0] + pop {r4, pc} + .align 2, 0 +_08090E44: .4byte gUnk_08121EF8 +_08090E48: .4byte gUnk_08122220 + + thumb_func_start sub_08090E4C +sub_08090E4C: @ 0x08090E4C + push {lr} + ldr r2, _08090E60 @ =gUnk_08122244 + ldrb r1, [r0, #0xf] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_0801D2B4 + pop {pc} + .align 2, 0 +_08090E60: .4byte gUnk_08122244 + + thumb_func_start sub_08090E64 +sub_08090E64: @ 0x08090E64 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x2a + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08090EA0 + ldr r0, _08090EA4 @ =0x0000FFFE + adds r2, r0, #0 + ldrb r0, [r5, #0xb] + adds r2, r2, r0 + lsls r2, r2, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #0 + bl sub_0806FA48 + ldrh r0, [r4, #0x36] + subs r0, #0x10 + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 +_08090EA0: + pop {r4, r5, pc} + .align 2, 0 +_08090EA4: .4byte 0x0000FFFE + + thumb_func_start sub_08090EA8 +sub_08090EA8: @ 0x08090EA8 + push {lr} + ldr r2, _08090EBC @ =gUnk_08122254 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08090EBC: .4byte gUnk_08122254 + + thumb_func_start sub_08090EC0 +sub_08090EC0: @ 0x08090EC0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x1e] + bl sub_08052660 + cmp r0, #0 + beq _08090EFE + ldrb r0, [r4, #0x1e] + adds r0, #4 + strb r0, [r4, #0x1e] + adds r0, r4, #0 + bl sub_080AE068 + movs r1, #0xc2 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_080ADF80 +_08090EFE: + pop {r4, pc} + + thumb_func_start sub_08090F00 +sub_08090F00: @ 0x08090F00 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + cmp r1, #1 + bne _08090F1C + ldr r0, [r4, #0x50] + ldrb r2, [r4, #0xf] + lsls r1, r2 + ldr r0, [r0, #0x20] + ands r0, r1 + cmp r0, #0 + bne _08090F1C + bl sub_0805E780 +_08090F1C: + ldr r6, _08090F64 @ =gUnk_03003F80 + ldr r0, [r6, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08090F62 + ldr r5, _08090F68 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + movs r3, #4 + bl sub_080041A0 + cmp r0, #0 + beq _08090F62 + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + bne _08090F62 + adds r2, r6, #0 + adds r2, #0x90 + ldr r1, _08090F6C @ =gUnk_0812225C + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r2] + ldrh r0, [r0] + ands r0, r1 + cmp r0, #0 + beq _08090F62 + ldrb r0, [r4, #0xe] + bl sub_0804B128 + bl sub_08080840 +_08090F62: + pop {r4, r5, r6, pc} + .align 2, 0 +_08090F64: .4byte gUnk_03003F80 +_08090F68: .4byte gLinkEntity +_08090F6C: .4byte gUnk_0812225C + + thumb_func_start sub_08090F70 +sub_08090F70: @ 0x08090F70 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08090FB4 + movs r5, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r5 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + bl sub_08052660 + cmp r0, #0 + beq _08090FB4 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r5 + strb r0, [r2] +_08090FB4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08090FB8 +sub_08090FB8: @ 0x08090FB8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08090FF6 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 +_08090FF6: + pop {r4, pc} + + thumb_func_start sub_08090FF8 +sub_08090FF8: @ 0x08090FF8 + push {lr} + ldr r2, _0809100C @ =gUnk_08122278 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809100C: .4byte gUnk_08122278 + + thumb_func_start sub_08091010 +sub_08091010: @ 0x08091010 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08091094 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r3, r4, #0 + adds r3, #0x74 + strh r1, [r3] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r5, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3] + subs r0, #0x80 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + ldr r6, _08091098 @ =0x00004022 + movs r7, #4 +_0809105C: + subs r1, r4, #2 + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_0800015E + subs r1, r4, #1 + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_0800015E + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0800015E + adds r1, r4, #1 + adds r0, r6, #0 + adds r2, r5, #0 + bl sub_0800015E + adds r0, r4, #0 + adds r0, #0x40 + lsls r0, r0, #0x10 + lsrs r4, r0, #0x10 + subs r7, #1 + cmp r7, #0 + bge _0809105C + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08091094: .4byte gUnk_03000BF0 +_08091098: .4byte 0x00004022 + + thumb_func_start nullsub_523 +nullsub_523: @ 0x0809109C + bx lr + .align 2, 0 + + thumb_func_start sub_080910A0 +sub_080910A0: @ 0x080910A0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080910C8 + ldrb r0, [r4, #0xa] + bl sub_0807CBD0 + cmp r0, #0 + beq _080910B8 + bl sub_0805E780 +_080910B8: + movs r1, #1 + strb r1, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08078828 +_080910C8: + adds r0, r4, #0 + adds r0, #0x39 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _08091100 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08091104 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #2 + bl sub_080A7C8C + bl sub_0805E780 +_08091100: + pop {r4, r5, pc} + .align 2, 0 +_08091104: .4byte gUnk_03000BF0 + + thumb_func_start sub_08091108 +sub_08091108: @ 0x08091108 + push {lr} + ldr r2, _0809111C @ =gUnk_08122280 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809111C: .4byte gUnk_08122280 + + thumb_func_start sub_08091120 +sub_08091120: @ 0x08091120 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r3, _08091194 @ =gUnk_08122288 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #2] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xf + ands r1, r0 + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r0, [r0, #3] + strh r0, [r4, #0x12] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08004168 + pop {r4, pc} + .align 2, 0 +_08091194: .4byte gUnk_08122288 + + thumb_func_start sub_08091198 +sub_08091198: @ 0x08091198 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _080911AA + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_080911AA: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080911E8 + ldrb r1, [r4, #0xb] + cmp r1, #0xf + beq _080911CE + cmp r1, #0xf + bgt _080911C8 + cmp r1, #0 + beq _080911E4 + b _080911DA +_080911C8: + cmp r1, #0xff + bne _080911DA + b _080911E4 +_080911CE: + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + movs r2, #0x80 + bl CreateFX + b _080911E4 +_080911DA: + ldrb r2, [r4, #0xe] + adds r0, r4, #0 + movs r3, #0 + bl sub_080A2988 +_080911E4: + bl sub_0805E780 +_080911E8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080911EC +sub_080911EC: @ 0x080911EC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x72 + ldrh r0, [r0] + cmp r0, #1 + beq _0809123C + cmp r0, #1 + bgt _08091202 + cmp r0, #0 + beq _08091208 + b _08091260 +_08091202: + cmp r0, #2 + beq _08091254 + b _08091260 +_08091208: + ldr r1, _08091234 @ =gUnk_08122294 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0800445C + ldr r1, _08091238 @ =gUnk_02021F00 + adds r0, r4, #0 + adds r0, #0x74 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x70 + ldrh r1, [r1] + strh r1, [r0] + b _08091260 + .align 2, 0 +_08091234: .4byte gUnk_08122294 +_08091238: .4byte gUnk_02021F00 +_0809123C: + ldr r0, _08091250 @ =gUnk_081222A0 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + b _08091260 + .align 2, 0 +_08091250: .4byte gUnk_081222A0 +_08091254: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08091260 + adds r0, r4, #0 + bl sub_08091504 +_08091260: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08091264 +sub_08091264: @ 0x08091264 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldr r0, _080912C4 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x45 + bhi _0809132C + ldrb r1, [r6, #0xa] + ldrb r2, [r6, #0xb] + movs r0, #0x54 + bl sub_080A2960 + adds r7, r0, #0 + ldrb r1, [r6, #0xa] + ldrb r2, [r6, #0xb] + movs r0, #0x54 + bl sub_080A2960 + adds r1, r0, #0 + str r6, [r7, #0x50] + str r6, [r1, #0x50] + adds r0, r7, #0 + adds r0, #0x72 + movs r5, #1 + movs r4, #1 + strh r4, [r0] + adds r2, r1, #0 + adds r2, #0x72 + movs r0, #2 + strh r0, [r2] + adds r0, r6, #0 + bl sub_0806FA24 + movs r2, #1 + strb r5, [r6, #0xc] + ldrb r1, [r6, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r6, #0x18] + movs r0, #0x60 + strh r0, [r6, #0x24] + ldrb r0, [r6, #0xb] + ands r4, r0 + cmp r4, #0 + beq _080912CC + ldr r0, _080912C8 @ =gUnk_080FD278 + b _080912CE + .align 2, 0 +_080912C4: .4byte gUnk_03003DBC +_080912C8: .4byte gUnk_080FD278 +_080912CC: + ldr r0, _08091330 @ =gUnk_080FD270 +_080912CE: + str r0, [r6, #0x48] + movs r0, #1 + strb r0, [r6, #0x16] + ldr r2, _08091334 @ =gUnk_081222A8 + ldrb r0, [r6, #0xb] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r6, #0x2e] + adds r0, r0, r1 + strh r0, [r6, #0x2e] + adds r1, r6, #0 + adds r1, #0x80 + strh r0, [r1] + ldrb r0, [r6, #0xb] + lsls r0, r0, #1 + adds r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r6, #0x32] + adds r0, r0, r1 + strh r0, [r6, #0x32] + adds r1, r6, #0 + adds r1, #0x82 + strh r0, [r1] + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_0806FA24 + adds r0, r6, #0 + adds r0, #0x7e + ldrb r0, [r0] + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + ldrb r1, [r6, #0xe] + adds r0, r6, #0 + adds r0, #0x74 + strb r1, [r0] + ldrb r1, [r6, #0xb] + adds r0, r6, #0 + bl sub_08004260 +_0809132C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08091330: .4byte gUnk_080FD270 +_08091334: .4byte gUnk_081222A8 + + thumb_func_start sub_08091338 +sub_08091338: @ 0x08091338 + push {r4, lr} + adds r4, r0, #0 + bl sub_08078930 + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + cmp r0, #0 + beq _0809135C + ldrb r0, [r4, #0xb] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08091660 +_0809135C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08091360 +sub_08091360: @ 0x08091360 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806FBB4 + ldr r1, _0809137C @ =gUnk_081222B0 + ldrb r0, [r4, #0xd] + subs r0, #5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_0809137C: .4byte gUnk_081222B0 + + thumb_func_start sub_08091380 +sub_08091380: @ 0x08091380 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r7, _0809142C @ =gLinkEntity + adds r0, #0x75 + ldrb r0, [r0] + cmp r0, #0 + bne _080913E0 + ldrb r0, [r4, #0xb] + lsls r2, r0, #1 + ldrb r0, [r7, #0x14] + cmp r2, r0 + bne _080913D4 + ldr r1, _08091430 @ =gUnk_081222B8 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r4, #0x2e] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r7, #0 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080002D4 + subs r0, #0xf + cmp r0, #0x10 + bls _080913D4 + strh r6, [r7, #0x2e] + strh r5, [r7, #0x32] +_080913D4: + adds r1, r4, #0 + adds r1, #0x75 + movs r0, #1 + strb r0, [r1] + movs r0, #2 + strb r0, [r4, #0xf] +_080913E0: + ldrb r0, [r7, #0x14] + lsrs r0, r0, #1 + ldrb r3, [r4, #0xb] + cmp r0, r3 + bne _0809142A + ldr r1, _08091434 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x1a + bne _0809142A + ldrb r1, [r1, #5] + movs r5, #2 + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0809142A + ldr r0, _0809142C @ =gLinkEntity + adds r0, #0x5a + ldrb r1, [r0] + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + beq _0809142A + adds r0, r4, #0 + bl sub_0809153C + adds r1, r4, #0 + adds r1, #0x75 + ldrb r0, [r1] + cmp r0, #1 + bne _0809142A + strb r5, [r1] + movs r0, #0xcf + lsls r0, r0, #1 + bl sub_08004488 +_0809142A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809142C: .4byte gLinkEntity +_08091430: .4byte gUnk_081222B8 +_08091434: .4byte gUnk_03003F80 + + thumb_func_start sub_08091438 +sub_08091438: @ 0x08091438 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + adds r0, #0x75 + strb r2, [r0] + bx lr + + thumb_func_start sub_08091444 +sub_08091444: @ 0x08091444 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldr r0, [r4, #0x50] + ldrb r1, [r0, #0xb] + adds r1, #8 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08016A04 + pop {r4, pc} + + thumb_func_start sub_08091470 +sub_08091470: @ 0x08091470 + push {r4, lr} + adds r2, r0, #0 + ldr r4, [r2, #0x50] + adds r3, r4, #0 + adds r3, #0x70 + ldrh r0, [r3] + cmp r0, #7 + bhi _0809148C + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + b _08091502 +_0809148C: + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + ldrh r0, [r3] + adds r1, r0, #0 + subs r1, #8 + movs r0, #7 + ands r1, r0 + ldrb r3, [r2, #0xb] + cmp r3, #1 + beq _080914C8 + cmp r3, #1 + bgt _080914B4 + cmp r3, #0 + beq _080914BE + b _080914E2 +_080914B4: + cmp r3, #2 + beq _080914D0 + cmp r3, #3 + beq _080914DA + b _080914E2 +_080914BE: + ldrh r0, [r4, #0x32] + subs r0, r0, r1 + subs r0, #0x11 + strh r0, [r2, #0x32] + b _080914E2 +_080914C8: + ldrh r0, [r4, #0x2e] + adds r0, r1, r0 + adds r0, #0x11 + b _080914E0 +_080914D0: + ldrh r0, [r4, #0x32] + adds r0, r1, r0 + adds r0, #0x11 + strh r0, [r2, #0x32] + b _080914E2 +_080914DA: + ldrh r0, [r4, #0x2e] + subs r0, r0, r1 + subs r0, #0x11 +_080914E0: + strh r0, [r2, #0x2e] +_080914E2: + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + subs r0, #8 + lsls r0, r0, #0xc + lsrs r1, r0, #0x10 + ldrb r0, [r2, #0x14] + cmp r1, r0 + beq _08091502 + strb r1, [r2, #0x14] + lsls r1, r1, #2 + adds r1, r1, r3 + adds r1, #8 + adds r0, r2, #0 + bl sub_08004260 +_08091502: + pop {r4, pc} + + thumb_func_start sub_08091504 +sub_08091504: @ 0x08091504 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0xb] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08016A04 + pop {r4, pc} + + thumb_func_start sub_0809153C +sub_0809153C: @ 0x0809153C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + sub sp, #4 + adds r5, r0, #0 + ldr r6, _080915A8 @ =gLinkEntity + ldr r1, _080915AC @ =gUnk_081222C0 + ldrb r0, [r5, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + mov r8, r0 + adds r0, r5, #0 + adds r0, #0x76 + adds r1, r5, #0 + adds r1, #0x70 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bls _08091656 + ldrh r4, [r6, #0x2e] + ldrh r0, [r6, #0x32] + mov sb, r0 + movs r2, #0x24 + ldrsh r1, [r5, r2] + adds r0, r6, #0 + mov r2, r8 + str r3, [sp] + bl sub_080044AE + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + ldrh r2, [r6, #0x2e] + movs r7, #0x2e + ldrsh r0, [r6, r7] + ldr r3, [sp] + cmp r4, r0 + bne _08091596 + mov r1, sb + lsls r0, r1, #0x10 + asrs r0, r0, #0x10 + movs r7, #0x32 + ldrsh r1, [r6, r7] + cmp r0, r1 + beq _08091656 +_08091596: + ldrb r0, [r5, #0xb] + cmp r0, #1 + beq _080915CA + cmp r0, #1 + bgt _080915B0 + cmp r0, #0 + beq _080915BA + b _080915E0 + .align 2, 0 +_080915A8: .4byte gLinkEntity +_080915AC: .4byte gUnk_081222C0 +_080915B0: + cmp r0, #2 + beq _080915CE + cmp r0, #3 + beq _080915DA + b _080915E0 +_080915BA: + ldrh r1, [r6, #0x32] + mov r2, sb + lsls r0, r2, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + lsls r1, r1, #0x10 + lsrs r3, r1, #0x10 + b _080915E0 +_080915CA: + subs r0, r4, r2 + b _080915DC +_080915CE: + ldrh r1, [r6, #0x32] + mov r7, sb + lsls r0, r7, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + b _080915DC +_080915DA: + subs r0, r2, r4 +_080915DC: + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 +_080915E0: + lsls r2, r3, #0x18 + ldr r3, _0809163C @ =gUnk_080C9160 + mov r1, r8 + lsls r0, r1, #4 + adds r0, r0, r3 + movs r7, #0 + ldrsh r0, [r0, r7] + asrs r2, r2, #0x10 + adds r1, r0, #0 + muls r1, r2, r1 + ldr r0, [r5, #0x2c] + adds r0, r0, r1 + str r0, [r5, #0x2c] + mov r1, r8 + lsls r0, r1, #4 + adds r0, #0x80 + adds r0, r0, r3 + movs r7, #0 + ldrsh r0, [r0, r7] + adds r1, r0, #0 + muls r1, r2, r1 + ldr r0, [r5, #0x30] + subs r0, r0, r1 + str r0, [r5, #0x30] + adds r0, r5, #0 + bl sub_08091660 + adds r0, r5, #0 + adds r0, #0x76 + adds r1, r5, #0 + adds r1, #0x70 + ldrh r0, [r0] + ldrh r1, [r1] + cmp r0, r1 + bhi _08091640 + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + b _08091656 + .align 2, 0 +_0809163C: .4byte gUnk_080C9160 +_08091640: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091656 + movs r0, #0x10 + strb r0, [r5, #0xf] + adds r0, #0xff + bl sub_08004488 +_08091656: + add sp, #4 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08091660 +sub_08091660: @ 0x08091660 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #1 + beq _08091686 + cmp r0, #1 + bgt _08091674 + cmp r0, #0 + beq _0809167E + b _080916AA +_08091674: + cmp r0, #2 + beq _08091690 + cmp r0, #3 + beq _0809169A + b _080916AA +_0809167E: + adds r1, r4, #0 + adds r1, #0x82 + ldrh r0, [r4, #0x32] + b _080916A0 +_08091686: + adds r0, r4, #0 + adds r0, #0x80 + ldrh r0, [r0] + ldrh r1, [r4, #0x2e] + b _080916A2 +_08091690: + adds r0, r4, #0 + adds r0, #0x82 + ldrh r0, [r0] + ldrh r1, [r4, #0x32] + b _080916A2 +_0809169A: + adds r1, r4, #0 + adds r1, #0x80 + ldrh r0, [r4, #0x2e] +_080916A0: + ldrh r1, [r1] +_080916A2: + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x70 + strh r0, [r1] +_080916AA: + adds r5, r4, #0 + adds r5, #0x86 + ldrh r0, [r5] + bl sub_0807CBE4 + cmp r0, #0 + beq _080916C8 + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + cmp r0, #0 + bne _080916C8 + ldrh r0, [r5] + bl sub_0807CD48 +_080916C8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080916CC +sub_080916CC: @ 0x080916CC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080916E8 @ =gUnk_081223A8 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r4, #0x41 + movs r0, #0 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_080916E8: .4byte gUnk_081223A8 + + thumb_func_start sub_080916EC +sub_080916EC: @ 0x080916EC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0xe] + lsls r0, r0, #3 + ldr r1, _080917C8 @ =gUnk_030010EC + adds r7, r0, r1 + adds r0, r6, #0 + adds r0, #0x84 + str r7, [r0] + ldr r0, _080917CC @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + ldrb r1, [r7, #4] + cmp r0, r1 + bne _08091716 + ldr r0, _080917D0 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + beq _0809171A +_08091716: + bl sub_0805E780 +_0809171A: + ldr r4, _080917CC @ =gUnk_03000BF0 + ldrh r1, [r7] + movs r5, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + ldrh r2, [r4, #6] + adds r0, r0, r2 + adds r0, #8 + strh r0, [r6, #0x2e] + ldrh r1, [r7] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r1 + lsrs r0, r0, #2 + ldrh r3, [r4, #8] + adds r0, r0, r3 + adds r0, #8 + strh r0, [r6, #0x32] + ldrb r0, [r7, #5] + strb r0, [r6, #0x14] + ldrb r0, [r7, #6] + strb r0, [r6, #0xb] + movs r2, #1 + strb r2, [r6, #0xc] + ldr r0, _080917D4 @ =gUnk_080FD310 + str r0, [r6, #0x48] + ldrb r1, [r6, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r6, #0x10] + adds r0, r6, #0 + adds r0, #0x3f + strb r2, [r0] + adds r1, r6, #0 + adds r1, #0x3c + movs r0, #0x47 + strb r0, [r1] + adds r1, #4 + movs r0, #0x44 + strb r0, [r1] + subs r1, #5 + movs r0, #0x80 + strb r0, [r1] + ldrb r0, [r6, #0x14] + lsls r0, r0, #3 + strb r0, [r6, #0x15] + movs r0, #0xe0 + lsls r0, r0, #3 + strh r0, [r6, #0x24] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r6, #0x14] + adds r1, #4 + ldrb r0, [r6, #0xb] + adds r1, r1, r0 + adds r0, r6, #0 + bl sub_080042AC + ldr r0, _080917D8 @ =0x00004022 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldrh r2, [r4, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r5 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r4, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r5 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r6, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080917C8: .4byte gUnk_030010EC +_080917CC: .4byte gUnk_03000BF0 +_080917D0: .4byte gUnk_03003F80 +_080917D4: .4byte gUnk_080FD310 +_080917D8: .4byte 0x00004022 + + thumb_func_start sub_080917DC +sub_080917DC: @ 0x080917DC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x1d + bne _08091810 + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #7 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x14] + adds r1, #4 + ldrb r0, [r4, #0xb] + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_080042AC + ldr r0, _0809180C @ =0x0000013B + bl sub_080A3268 + b _080918A0 + .align 2, 0 +_0809180C: .4byte 0x0000013B +_08091810: + adds r0, r4, #0 + bl sub_0800445C + cmp r0, #0 + beq _0809184A + ldr r2, _08091840 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _08091844 @ =0x00040080 + ands r0, r1 + cmp r0, #0 + bne _08091848 + ldrb r0, [r2, #0x1c] + cmp r0, #0 + bne _08091848 + ldrb r0, [r2, #5] + cmp r0, #0 + bne _08091848 + ldrb r0, [r2, #2] + cmp r0, #0 + bne _08091848 + ldrb r0, [r4, #0xe] + adds r0, #1 + b _0809184A + .align 2, 0 +_08091840: .4byte gUnk_03003F80 +_08091844: .4byte 0x00040080 +_08091848: + movs r0, #0 +_0809184A: + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0809189C + ldrb r0, [r4, #0xe] + cmp r0, #8 + bls _080918A0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r2, _08091894 @ =gUnk_03003F80 + movs r0, #0x81 + strb r0, [r2, #2] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x13 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r1, _08091898 @ =gLinkEntity + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r1, #0x20] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #0x24] + ldrb r2, [r1, #0x10] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #0x10] + bl sub_08077B2C + bl sub_0807A108 + movs r0, #0x7c + bl sub_080A3268 + b _080918A0 + .align 2, 0 +_08091894: .4byte gUnk_03003F80 +_08091898: .4byte gLinkEntity +_0809189C: + movs r0, #0 + strb r0, [r4, #0xe] +_080918A0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080918A4 +sub_080918A4: @ 0x080918A4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08091964 @ =gLinkEntity + adds r1, r5, #0 + movs r2, #2 + movs r3, #2 + bl sub_080041A0 + cmp r0, #0 + beq _08091974 + ldrh r0, [r4, #0x2e] + strh r0, [r5, #0x2e] + ldrh r0, [r4, #0x32] + strh r0, [r5, #0x32] + movs r0, #0x36 + ldrsh r1, [r5, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0809197E + ldr r0, [r5, #0x20] + cmp r0, #0 + bge _080919A4 + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + strb r0, [r5, #0x14] + ldr r2, _08091968 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x13 + eors r0, r1 + movs r1, #0x80 + lsls r1, r1, #5 + orrs r0, r1 + str r0, [r2, #0x30] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r4, #0x10] + movs r2, #0x20 + orrs r0, r2 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x97 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x3c + ldrb r0, [r0] + adds r0, #1 + subs r1, #3 + orrs r0, r2 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x3b + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x3b + strb r0, [r2] + adds r1, #4 + movs r0, #0x18 + strb r0, [r1] + adds r1, #4 + movs r0, #8 + strb r0, [r1] + adds r0, r4, #0 + bl sub_0801766C + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0809196C @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + ldr r0, _08091970 @ =0x00000137 + bl sub_080A3268 + b _0809197E + .align 2, 0 +_08091964: .4byte gLinkEntity +_08091968: .4byte gUnk_03003F80 +_0809196C: .4byte gUnk_03000BF0 +_08091970: .4byte 0x00000137 +_08091974: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] +_0809197E: + ldr r3, _080919A8 @ =gLinkEntity + ldr r0, [r3, #0x20] + cmp r0, #0 + bge _080919A4 + adds r0, r4, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080919A4: + pop {r4, r5, pc} + .align 2, 0 +_080919A8: .4byte gLinkEntity + + thumb_func_start sub_080919AC +sub_080919AC: @ 0x080919AC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldr r1, _080919D4 @ =gUnk_03000BF0 + movs r0, #0 + mov r8, r0 + movs r0, #7 + strb r0, [r1, #0xe] + ldr r0, _080919D8 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + bne _080919DC + movs r0, #1 + strb r0, [r5, #0xc] + b _08091C04 + .align 2, 0 +_080919D4: .4byte gUnk_03000BF0 +_080919D8: .4byte gUnk_03003F80 +_080919DC: + ldr r4, _08091A14 @ =gLinkEntity + adds r6, r4, #0 + adds r6, #0x5a + ldrb r1, [r6] + movs r7, #0xf + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _08091A22 + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r1, [r6] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x10 + bne _08091A18 + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #1 + strb r0, [r1] + b _08091C04 + .align 2, 0 +_08091A14: .4byte gLinkEntity +_08091A18: + adds r0, r5, #0 + adds r0, #0x63 + mov r1, r8 + strb r1, [r0] + b _08091C04 +_08091A22: + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + mov r0, r8 + strh r0, [r4, #0x24] + adds r0, r5, #0 + bl sub_0806F69C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, r4, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + adds r0, r5, #0 + bl sub_08091DDC + cmp r0, #0 + beq _08091A68 + b _08091C04 +_08091A68: + ldr r0, _08091AD8 @ =gUnk_030010A0 + ldr r0, [r0] + ands r0, r7 + cmp r0, #0 + bne _08091A7A + movs r0, #0x9c + lsls r0, r0, #1 + bl sub_080A3268 +_08091A7A: + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08091A92 + movs r0, #0x7b + bl sub_080A3268 + movs r0, #0x3c + strb r0, [r5, #0xf] +_08091A92: + ldr r2, _08091ADC @ =gUnk_081223C8 + ldrb r0, [r5, #0x14] + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + adds r0, r5, #0 + bl sub_080002B4 + adds r4, r0, #0 + ldr r1, _08091AE0 @ =gUnk_081223D8 + ldrb r0, [r5, #0x14] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl sub_08007DD6 + cmp r0, #0 + bne _08091AE4 + ldrb r0, [r5, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r5, #0x15] + ldrb r0, [r5, #0x14] + movs r1, #2 + eors r0, r1 + strb r0, [r5, #0x14] + b _08091BD8 + .align 2, 0 +_08091AD8: .4byte gUnk_030010A0 +_08091ADC: .4byte gUnk_081223C8 +_08091AE0: .4byte gUnk_081223D8 +_08091AE4: + adds r0, r4, #0 + subs r0, #0x64 + cmp r0, #0xb + bhi _08091BD8 + lsls r0, r0, #2 + ldr r1, _08091AF8 @ =_08091AFC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08091AF8: .4byte _08091AFC +_08091AFC: @ jump table + .4byte _08091B2C @ case 0 + .4byte _08091BD8 @ case 1 + .4byte _08091BD8 @ case 2 + .4byte _08091BB8 @ case 3 + .4byte _08091BB8 @ case 4 + .4byte _08091BB8 @ case 5 + .4byte _08091BB8 @ case 6 + .4byte _08091BD8 @ case 7 + .4byte _08091BB8 @ case 8 + .4byte _08091BB8 @ case 9 + .4byte _08091BB8 @ case 10 + .4byte _08091BB8 @ case 11 +_08091B2C: + ldrb r1, [r5, #0x10] + movs r0, #0xdf + ands r0, r1 + strb r0, [r5, #0x10] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #1 + strb r0, [r1] + subs r1, #3 + movs r0, #0x47 + strb r0, [r1] + adds r1, #4 + movs r0, #0x44 + strb r0, [r1] + subs r1, #5 + movs r4, #0x80 + movs r0, #0x80 + strb r0, [r1] + movs r0, #6 + strb r0, [r5, #0xc] + adds r0, r5, #0 + bl sub_08017744 + ldr r2, _08091BAC @ =gUnk_03003F80 + movs r0, #0x41 + strb r0, [r2, #2] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #5 + eors r0, r1 + movs r1, #0x80 + lsls r1, r1, #0x13 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r1, _08091BB0 @ =gLinkEntity + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r1, #0x20] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r1, #0x24] + ldrb r0, [r5, #0x14] + lsls r0, r0, #1 + strb r0, [r1, #0x14] + ldrb r0, [r5, #0x15] + strb r0, [r1, #0x15] + ldrb r0, [r1, #0x10] + orrs r4, r0 + strb r4, [r1, #0x10] + adds r0, r5, #0 + bl sub_08004168 + ldrb r1, [r5, #0x14] + adds r1, #0xc + adds r0, r5, #0 + bl sub_080042AC + movs r0, #0x78 + bl sub_080A3268 + ldr r0, _08091BB4 @ =0x00000139 + bl sub_080A3268 + b _08091C04 + .align 2, 0 +_08091BAC: .4byte gUnk_03003F80 +_08091BB0: .4byte gLinkEntity +_08091BB4: .4byte 0x00000139 +_08091BB8: + adds r0, r5, #0 + bl sub_080002B8 + cmp r4, r0 + bne _08091BD8 + adds r0, r5, #0 + bl sub_08091C0C + ldr r1, _08091BD4 @ =gLinkEntity + ldrb r0, [r5, #0x14] + lsls r0, r0, #1 + strb r0, [r1, #0x14] + b _08091C04 + .align 2, 0 +_08091BD4: .4byte gLinkEntity +_08091BD8: + ldr r2, _08091BF8 @ =gLinkEntity + ldrb r0, [r5, #0x14] + lsls r1, r0, #1 + strb r1, [r2, #0x14] + adds r1, r5, #0 + adds r1, #0x58 + ldrb r1, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + bne _08091BFC + adds r0, r5, #0 + bl sub_080042B8 + b _08091C04 + .align 2, 0 +_08091BF8: .4byte gLinkEntity +_08091BFC: + ldrb r1, [r5, #0x14] + adds r0, r5, #0 + bl sub_080042AC +_08091C04: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08091C0C +sub_08091C0C: @ 0x08091C0C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004168 + ldr r1, _08091C30 @ =gLinkEntity + adds r0, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + bl sub_080002B8 + cmp r0, #0x68 + beq _08091C46 + cmp r0, #0x68 + bhi _08091C34 + cmp r0, #0x67 + beq _08091C3E + b _08091C80 + .align 2, 0 +_08091C30: .4byte gLinkEntity +_08091C34: + cmp r0, #0x69 + beq _08091C4E + cmp r0, #0x6a + beq _08091C66 + b _08091C80 +_08091C3E: + ldrb r0, [r4, #0x15] + cmp r0, #0x18 + beq _08091C54 + b _08091C76 +_08091C46: + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _08091C6C + b _08091C5C +_08091C4E: + ldrb r0, [r4, #0x15] + cmp r0, #8 + bne _08091C5C +_08091C54: + movs r0, #0 + strb r0, [r4, #0x15] + strb r0, [r4, #0x14] + b _08091C86 +_08091C5C: + movs r0, #0x18 + strb r0, [r4, #0x15] + movs r0, #3 + strb r0, [r4, #0x14] + b _08091C86 +_08091C66: + ldrb r0, [r4, #0x15] + cmp r0, #0x18 + bne _08091C76 +_08091C6C: + movs r0, #0x10 + strb r0, [r4, #0x15] + movs r0, #2 + strb r0, [r4, #0x14] + b _08091C86 +_08091C76: + movs r0, #8 + strb r0, [r4, #0x15] + movs r0, #1 + strb r0, [r4, #0x14] + b _08091C86 +_08091C80: + movs r0, #3 + strb r0, [r4, #0xc] + b _08091C92 +_08091C86: + movs r0, #3 + strb r0, [r4, #0xc] + ldr r1, _08091C94 @ =gLinkEntity + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + strb r0, [r1, #0x14] +_08091C92: + pop {r4, pc} + .align 2, 0 +_08091C94: .4byte gLinkEntity + + thumb_func_start sub_08091C98 +sub_08091C98: @ 0x08091C98 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldr r5, _08091CC0 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + ldr r1, _08091CC4 @ =gUnk_03000BF0 + ldrh r0, [r1] + cmp r0, #0 + bne _08091CBE + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0xe0 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + str r5, [r1, #0x30] +_08091CBE: + pop {r4, r5, pc} + .align 2, 0 +_08091CC0: .4byte gLinkEntity +_08091CC4: .4byte gUnk_03000BF0 + + thumb_func_start sub_08091CC8 +sub_08091CC8: @ 0x08091CC8 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r2, _08091D58 @ =gUnk_03003F80 + ldrb r0, [r2, #2] + cmp r0, #0 + bne _08091D64 + movs r0, #1 + strb r0, [r6, #0xc] + ldrb r0, [r6, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r6, #0x15] + ldrb r0, [r6, #0x14] + movs r1, #2 + eors r0, r1 + strb r0, [r6, #0x14] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x13 + eors r0, r1 + str r0, [r2, #0x30] + adds r0, r6, #0 + adds r0, #0x84 + ldr r4, [r0] + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r5, _08091D5C @ =gUnk_03000BF0 + ldrh r0, [r5, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r2, #0x32 + ldrsh r0, [r6, r2] + ldrh r2, [r5, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + strh r1, [r4] + ldrb r0, [r5, #5] + strb r0, [r4, #4] + ldrb r0, [r6, #0x14] + strb r0, [r4, #5] + ldrb r1, [r6, #0x14] + adds r1, #0x10 + adds r0, r6, #0 + bl sub_080042AC + ldr r0, _08091D60 @ =0x00004022 + movs r3, #0x2e + ldrsh r1, [r6, r3] + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r6, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + b _08091D8A + .align 2, 0 +_08091D58: .4byte gUnk_03003F80 +_08091D5C: .4byte gUnk_03000BF0 +_08091D60: .4byte 0x00004022 +_08091D64: + adds r0, r6, #0 + bl sub_080042B8 + ldr r3, _08091D8C @ =gLinkEntity + adds r0, r6, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_08091D8A: + pop {r4, r5, r6, pc} + .align 2, 0 +_08091D8C: .4byte gLinkEntity + + thumb_func_start sub_08091D90 +sub_08091D90: @ 0x08091D90 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _08091DA0 + adds r0, r4, #0 + bl sub_080042B8 +_08091DA0: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _08091DD8 + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08091DD8 + ldrb r1, [r4, #0xb] + movs r0, #4 + eors r1, r0 + strb r1, [r4, #0xb] + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + strb r1, [r0, #6] + movs r0, #0x9e + lsls r0, r0, #1 + bl sub_080A3268 +_08091DD8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08091DDC +sub_08091DDC: @ 0x08091DDC + push {r4, lr} + adds r4, r0, #0 + ldr r2, _08091E30 @ =gUnk_081223D0 + ldrb r0, [r4, #0x14] + lsls r0, r0, #1 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + adds r0, r4, #0 + bl sub_080002CC + cmp r0, #0xff + bne _08091E5C + ldr r0, _08091E34 @ =gLinkEntity + ldrb r1, [r4, #0x14] + bl sub_0807BD14 + cmp r0, #0 + beq _08091E5C + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + movs r0, #5 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x15] + cmp r0, #8 + beq _08091E40 + cmp r0, #8 + bgt _08091E38 + cmp r0, #0 + beq _08091E40 + b _08091E44 + .align 2, 0 +_08091E30: .4byte gUnk_081223D0 +_08091E34: .4byte gLinkEntity +_08091E38: + cmp r0, #0x10 + beq _08091E40 + cmp r0, #0x18 + bne _08091E44 +_08091E40: + movs r0, #0xa0 + strh r0, [r4, #0x24] +_08091E44: + ldr r0, _08091E54 @ =gLinkEntity + ldrb r1, [r4, #0x15] + strb r1, [r0, #0x15] + ldr r0, _08091E58 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + movs r0, #1 + b _08091E5E + .align 2, 0 +_08091E54: .4byte gLinkEntity +_08091E58: .4byte gUnk_03000BF0 +_08091E5C: + movs r0, #0 +_08091E5E: + pop {r4, pc} + + thumb_func_start sub_08091E60 +sub_08091E60: @ 0x08091E60 + push {lr} + ldr r2, _08091E74 @ =gUnk_08122598 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08091E74: .4byte gUnk_08122598 + + thumb_func_start sub_08091E78 +sub_08091E78: @ 0x08091E78 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08091E96 + movs r0, #0x2d + strb r0, [r4, #0xe] +_08091E96: + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08004260 + ldr r1, _08091EBC @ =gUnk_08122590 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_08091EBC: .4byte gUnk_08122590 + + thumb_func_start sub_08091EC0 +sub_08091EC0: @ 0x08091EC0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _08091ED6 + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r1, #0x32] + strh r0, [r4, #0x32] + ldrh r0, [r1, #0x36] + strh r0, [r4, #0x36] +_08091ED6: + ldrb r0, [r4, #0xb] + cmp r0, #2 + beq _08091EEC + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08091EEC + bl sub_0805E780 +_08091EEC: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_08091EF4 +sub_08091EF4: @ 0x08091EF4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #1 + bhi _08091F0E + ldr r0, _08091F10 @ =gUnk_08122604 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_08091F0E: + pop {pc} + .align 2, 0 +_08091F10: .4byte gUnk_08122604 + + thumb_func_start sub_08091F14 +sub_08091F14: @ 0x08091F14 + push {r4, r5, lr} + adds r4, r0, #0 + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x58 + strb r2, [r0] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08091FEC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x70 + strh r1, [r5] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08091FEA + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0xd1 + lsls r0, r0, #1 + ldrh r1, [r5] + subs r1, #0x41 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0807B314 + ldr r0, _08091FF0 @ =0x000001A3 + ldrh r1, [r5] + subs r1, #0x40 + ldrb r2, [r4] + bl sub_0807B314 + movs r0, #0xd2 + lsls r0, r0, #1 + ldrh r1, [r5] + subs r1, #0x3f + ldrb r2, [r4] + bl sub_0807B314 + ldr r0, _08091FF4 @ =0x000001A5 + ldrh r1, [r5] + subs r1, #1 + ldrb r2, [r4] + bl sub_0807B314 + movs r0, #0xd3 + lsls r0, r0, #1 + ldrh r1, [r5] + ldrb r2, [r4] + bl sub_0807B314 + ldr r0, _08091FF8 @ =0x000001A7 + ldrh r1, [r5] + adds r1, #1 + ldrb r2, [r4] + bl sub_0807B314 + movs r0, #0xd4 + lsls r0, r0, #1 + ldrh r1, [r5] + adds r1, #0x3f + ldrb r2, [r4] + bl sub_0807B314 + ldr r0, _08091FFC @ =0x000001A9 + ldrh r1, [r5] + adds r1, #0x40 + ldrb r2, [r4] + bl sub_0807B314 + movs r0, #0xd5 + lsls r0, r0, #1 + ldrh r1, [r5] + adds r1, #0x41 + ldrb r2, [r4] + bl sub_0807B314 +_08091FEA: + pop {r4, r5, pc} + .align 2, 0 +_08091FEC: .4byte gUnk_03000BF0 +_08091FF0: .4byte 0x000001A3 +_08091FF4: .4byte 0x000001A5 +_08091FF8: .4byte 0x000001A7 +_08091FFC: .4byte 0x000001A9 + + thumb_func_start sub_08092000 +sub_08092000: @ 0x08092000 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + movs r1, #0xd3 + lsls r1, r1, #1 + cmp r0, r1 + bne _08092034 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 +_08092034: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08092038 +sub_08092038: @ 0x08092038 + push {lr} + ldr r2, _0809204C @ =gUnk_0812260C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809204C: .4byte gUnk_0812260C + + thumb_func_start sub_08092050 +sub_08092050: @ 0x08092050 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809207A + movs r0, #3 + strb r0, [r6, #0xc] + ldrh r0, [r6, #0x2e] + adds r0, #2 + strh r0, [r6, #0x2e] + adds r0, r6, #0 + bl sub_0809223C + adds r0, r6, #0 + movs r1, #1 + bl sub_080042AC + b _08092148 +_0809207A: + ldrb r0, [r6, #0xd] + cmp r0, #0 + bne _08092138 + movs r1, #1 + strb r1, [r6, #0xd] + adds r0, r6, #0 + adds r0, #0x38 + strb r1, [r0] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r6, #0x2e] + adds r0, #2 + strh r0, [r6, #0x2e] + adds r0, r6, #0 + bl sub_08016A04 + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldr r3, _08092130 @ =gUnk_03000BF0 + ldrh r0, [r3, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r4, #0x3f + ands r2, r4 + movs r1, #0x32 + ldrsh r0, [r6, r1] + ldrh r1, [r3, #8] + adds r1, #8 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r2, r0 + adds r5, r6, #0 + adds r5, #0x70 + strh r2, [r5] + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldrh r0, [r3, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + ands r2, r4 + movs r1, #0x32 + ldrsh r0, [r6, r1] + ldrh r1, [r3, #8] + subs r1, #8 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r2, r0 + adds r7, r6, #0 + adds r7, #0x72 + strh r2, [r7] + ldrh r0, [r5] + movs r1, #1 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x74 + strh r0, [r1] + ldrh r0, [r7] + movs r1, #1 + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r4, _08092134 @ =0x00004022 + ldrh r1, [r5] + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldrh r1, [r7] + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r0, r6, #0 + movs r1, #0 + bl sub_080042AC + b _08092148 + .align 2, 0 +_08092130: .4byte gUnk_03000BF0 +_08092134: .4byte 0x00004022 +_08092138: + movs r0, #1 + strb r0, [r6, #0xc] + adds r0, r6, #0 + bl sub_080921BC + adds r0, r6, #0 + bl sub_080921F0 +_08092148: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0809214C +sub_0809214C: @ 0x0809214C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08092160 + movs r0, #2 + strb r0, [r4, #0xc] +_08092160: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08092164 +sub_08092164: @ 0x08092164 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080921B6 + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x70 + ldrh r1, [r1] + movs r2, #1 + bl sub_0800015E + adds r0, r4, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x72 + ldrh r1, [r1] + movs r2, #1 + bl sub_0800015E + adds r0, r4, #0 + bl sub_08092214 + adds r0, r4, #0 + bl sub_0809223C + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_080921B6: + pop {r4, pc} + + thumb_func_start nullsub_118 +nullsub_118: @ 0x080921B8 + bx lr + .align 2, 0 + + thumb_func_start sub_080921BC +sub_080921BC: @ 0x080921BC + push {lr} + adds r2, r0, #0 + ldr r1, _080921DC @ =gUnk_030011E8 + ldr r0, _080921E0 @ =0x000029F8 + adds r3, r1, r0 +_080921C6: + ldrb r0, [r1, #8] + cmp r0, #6 + bne _080921E4 + ldrb r0, [r1, #9] + cmp r0, #0x6f + bne _080921E4 + ldrb r0, [r1, #0xa] + cmp r0, #2 + bne _080921E4 + str r1, [r2, #0x54] + b _080921EE + .align 2, 0 +_080921DC: .4byte gUnk_030011E8 +_080921E0: .4byte 0x000029F8 +_080921E4: + adds r1, #0x88 + cmp r1, r3 + blo _080921C6 + movs r0, #0 + str r0, [r2, #0x54] +_080921EE: + pop {pc} + + thumb_func_start sub_080921F0 +sub_080921F0: @ 0x080921F0 + push {lr} + ldr r2, [r0, #0x54] + cmp r2, #0 + beq _08092212 + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] + adds r0, r2, #0 + bl sub_08016A04 +_08092212: + pop {pc} + + thumb_func_start sub_08092214 +sub_08092214: @ 0x08092214 + push {lr} + ldr r2, [r0, #0x54] + cmp r2, #0 + beq _0809223A + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0xa + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r3] + adds r0, r2, #0 + bl sub_08016A04 +_0809223A: + pop {pc} + + thumb_func_start sub_0809223C +sub_0809223C: @ 0x0809223C + push {lr} + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #2 + strb r1, [r2] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + subs r1, #0xa + ands r1, r2 + movs r2, #3 + orrs r1, r2 + strb r1, [r3] + bl sub_08016A04 + pop {pc} + + thumb_func_start sub_0809225C +sub_0809225C: @ 0x0809225C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _0809226E + adds r0, r1, #0 + bl sub_08092278 + b _08092274 +_0809226E: + adds r0, r1, #0 + bl sub_08092344 +_08092274: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08092278 +sub_08092278: @ 0x08092278 + push {lr} + ldr r2, _0809228C @ =gUnk_08122644 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809228C: .4byte gUnk_08122644 + + thumb_func_start sub_08092290 +sub_08092290: @ 0x08092290 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + bl sub_080925A4 + pop {pc} + + thumb_func_start sub_0809229C +sub_0809229C: @ 0x0809229C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x70 + ldrb r0, [r0] + cmp r0, #0 + beq _080922E0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xb0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_08016A04 + ldr r0, [r4, #0x54] + ldrb r1, [r0, #0x14] + adds r0, r4, #0 + bl sub_080042AC + movs r0, #0xbf + lsls r0, r0, #1 + bl sub_08004488 + ldr r0, [r4, #0x54] + movs r1, #3 + bl sub_08004260 +_080922E0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080922E4 +sub_080922E4: @ 0x080922E4 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x90 + lsls r1, r1, #6 + bl sub_08003FC4 + adds r2, r0, #0 + cmp r2, #0 + bne _08092322 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x70 + strb r2, [r0] + ldr r0, [r4, #0x54] + adds r0, #0x63 + strb r2, [r0] + ldr r0, [r4, #0x54] + ldrb r1, [r0, #0x14] + bl sub_08004260 + adds r0, r4, #0 + movs r1, #0x36 + movs r2, #0 + bl CreateFX + b _0809233E +_08092322: + ldr r1, [r4, #0x20] + ldr r0, _08092340 @ =0x00017FFF + cmp r1, r0 + bgt _0809233E + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0809233E + adds r0, r4, #0 + bl sub_080042B8 +_0809233E: + pop {r4, pc} + .align 2, 0 +_08092340: .4byte 0x00017FFF + + thumb_func_start sub_08092344 +sub_08092344: @ 0x08092344 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + strb r0, [r4, #0xf] + ldr r1, _08092364 @ =gUnk_08122650 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080926E4 + pop {r4, pc} + .align 2, 0 +_08092364: .4byte gUnk_08122650 + + thumb_func_start sub_08092368 +sub_08092368: @ 0x08092368 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xb] + strb r0, [r2, #0x14] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + adds r1, #0x40 + movs r0, #0x48 + strb r0, [r1] + subs r1, #4 + movs r0, #7 + strb r0, [r1] + subs r1, #1 + movs r0, #0x81 + strb r0, [r1] + ldr r0, _0809239C @ =gUnk_080FD280 + str r0, [r2, #0x48] + adds r0, r2, #0 + bl sub_0809264C + pop {pc} + .align 2, 0 +_0809239C: .4byte gUnk_080FD280 + + thumb_func_start sub_080923A0 +sub_080923A0: @ 0x080923A0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #3 + beq _080923E2 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080923C6 + movs r1, #1 + movs r0, #1 + strb r0, [r4, #0xd] + ldrb r0, [r4, #0x14] + eors r0, r1 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_080923C6: + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #3 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080923E2 + adds r0, r4, #0 + bl sub_0809264C +_080923E2: + pop {r4, pc} + + thumb_func_start sub_080923E4 +sub_080923E4: @ 0x080923E4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _080923F8 + adds r0, r4, #0 + bl sub_08092620 + b _0809241A +_080923F8: + adds r0, r4, #0 + bl sub_0809269C + cmp r0, #0 + beq _0809241A + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x14 + strb r0, [r4, #0xe] + ldr r0, _0809241C @ =gUnk_03003F80 + adds r0, #0x3f + movs r1, #0xfd + strb r1, [r0] +_0809241A: + pop {r4, pc} + .align 2, 0 +_0809241C: .4byte gUnk_03003F80 + + thumb_func_start sub_08092420 +sub_08092420: @ 0x08092420 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809269C + cmp r0, #0 + beq _08092434 + ldr r0, _08092464 @ =gUnk_03003F80 + adds r0, #0x3f + movs r1, #0xfd + strb r1, [r0] +_08092434: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08092462 + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r1, [r0] + subs r0, #2 + movs r2, #0 + strh r1, [r0] + subs r0, #0xd + strb r2, [r0] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + ldr r0, _08092468 @ =0x0000017B + bl sub_08004488 +_08092462: + pop {r4, pc} + .align 2, 0 +_08092464: .4byte gUnk_03003F80 +_08092468: .4byte 0x0000017B + + thumb_func_start sub_0809246C +sub_0809246C: @ 0x0809246C + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0809269C + adds r5, r4, #0 + adds r5, #0x70 + ldrh r0, [r5] + cmp r0, #0 + beq _08092482 + subs r0, #1 + strh r0, [r5] +_08092482: + ldrh r0, [r5] + cmp r0, #0x8c + bhi _080924DC + adds r0, r4, #0 + bl sub_08004274 + adds r3, r4, #0 + adds r3, #0x5a + ldrb r1, [r3] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080924B8 + movs r0, #5 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + strh r0, [r5] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + b _080924DC +_080924B8: + movs r2, #1 + ands r2, r1 + cmp r2, #0 + beq _080924CC + strb r0, [r3] + movs r0, #0xbe + lsls r0, r0, #1 + bl sub_08004488 + b _080924DC +_080924CC: + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080924DC + strb r2, [r3] + ldr r0, _080924E0 @ =0x0000017D + bl sub_08004488 +_080924DC: + pop {r4, r5, pc} + .align 2, 0 +_080924E0: .4byte 0x0000017D + + thumb_func_start sub_080924E4 +sub_080924E4: @ 0x080924E4 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x70 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809252C + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0 + strb r0, [r1] + ldrb r1, [r4, #0x14] + adds r1, #4 + adds r0, r4, #0 + bl sub_08004260 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _0809252C + adds r0, r4, #0 + bl sub_0809269C +_0809252C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08092530 +sub_08092530: @ 0x08092530 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x14] + cmp r0, #0 + bne _08092544 + adds r0, r4, #0 + bl sub_0809269C + adds r5, r0, #0 + b _08092546 +_08092544: + movs r5, #0 +_08092546: + adds r0, r4, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08092570 + movs r0, #0 + strb r0, [r2] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0xac + strb r0, [r1] + b _0809258A +_08092570: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809258A + adds r0, r4, #0 + bl sub_0809264C + cmp r5, #0 + beq _0809258A + ldr r0, _0809258C @ =gUnk_03003F80 + adds r0, #0x3f + movs r1, #0xfd + strb r1, [r0] +_0809258A: + pop {r4, r5, pc} + .align 2, 0 +_0809258C: .4byte gUnk_03003F80 + + thumb_func_start sub_08092590 +sub_08092590: @ 0x08092590 + push {lr} + adds r1, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _080925A2 + adds r0, r1, #0 + bl sub_08092620 +_080925A2: + pop {pc} + + thumb_func_start sub_080925A4 +sub_080925A4: @ 0x080925A4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrb r0, [r6, #0xb] + bl sub_0804B128 + adds r5, r0, #0 + ldrb r0, [r5, #9] + cmp r0, #0xff + beq _0809261A + ldr r7, _0809261C @ =gUnk_03000BF0 +_080925B8: + ldrb r2, [r5, #9] + movs r0, #0x59 + movs r1, #1 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08092612 + movs r0, #0xff + strb r0, [r4, #0x15] + movs r0, #0 + strh r0, [r4, #0x24] + str r6, [r4, #0x50] + ldrh r0, [r7, #6] + ldrh r1, [r5, #4] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r7, #8] + ldrh r1, [r5, #6] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrb r1, [r5, #8] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + ldrh r0, [r5, #0xa] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + ldrh r1, [r5, #0xc] + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldr r0, [r5] + str r0, [r4, #0x78] + adds r0, r4, #0 + bl sub_08016A04 + adds r1, r4, #0 + adds r1, #0x78 + adds r2, r4, #0 + adds r2, #0x76 + adds r0, r4, #0 + bl sub_080A2CC0 +_08092612: + adds r5, #0x10 + ldrb r0, [r5, #9] + cmp r0, #0xff + bne _080925B8 +_0809261A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809261C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08092620 +sub_08092620: @ 0x08092620 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r1, [r5, #0x50] + adds r0, r1, #0 + adds r0, #0x70 + ldrb r6, [r0] + cmp r6, #0 + bne _08092648 + movs r4, #1 + strb r4, [r0] + str r5, [r1, #0x54] + adds r0, r5, #0 + bl sub_0806FA24 + strb r4, [r5, #0xc] + strb r6, [r5, #0xd] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0xac + strb r0, [r1] +_08092648: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0809264C +sub_0809264C: @ 0x0809264C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x14] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0809266A + movs r0, #7 + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x3f + movs r0, #0xac + strb r0, [r1] + b _08092674 +_0809266A: + movs r0, #2 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x3f + strb r3, [r0] +_08092674: + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r1, r2, #0 + adds r1, #0x63 + movs r0, #0xfd + strb r0, [r1] + ldrb r1, [r2, #0x14] + adds r0, r2, #0 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0809269C +sub_0809269C: @ 0x0809269C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, _080926D8 @ =gUnk_03003F80 + ldr r0, [r6, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080926E0 + ldr r5, _080926DC @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0x10 + movs r3, #0x10 + bl sub_080041A0 + cmp r0, #0 + beq _080926E0 + bl sub_08079F8C + cmp r0, #0 + beq _080926E0 + movs r1, #1 + strb r1, [r6, #0x14] + movs r2, #0x36 + ldrsh r0, [r5, r2] + cmp r0, #0 + bne _080926E0 + strb r1, [r4, #0xf] + movs r0, #1 + b _080926E2 + .align 2, 0 +_080926D8: .4byte gUnk_03003F80 +_080926DC: .4byte gLinkEntity +_080926E0: + movs r0, #0 +_080926E2: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080926E4 +sub_080926E4: @ 0x080926E4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xf] + bl sub_080A2BE4 + ldrb r0, [r4, #0xc] + cmp r0, #1 + bne _08092700 + ldr r1, [r4, #0x50] + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldr r1, [r4, #0x50] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] +_08092700: + adds r2, r4, #0 + adds r2, #0x76 + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809271A + adds r1, r4, #0 + adds r1, #0x78 + adds r0, r4, #0 + bl sub_080A2CC0 +_0809271A: + pop {r4, pc} + + thumb_func_start sub_0809271C +sub_0809271C: @ 0x0809271C + push {lr} + ldr r2, _08092730 @ =gUnk_08122780 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08092730: .4byte gUnk_08122780 + + thumb_func_start sub_08092734 +sub_08092734: @ 0x08092734 + push {lr} + ldr r2, _08092748 @ =gUnk_08122788 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08092748: .4byte gUnk_08122788 + + thumb_func_start sub_0809274C +sub_0809274C: @ 0x0809274C + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x19] + movs r5, #0x3f + adds r0, r5, #0 + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrh r0, [r4, #0x36] + subs r0, #8 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xb] + cmp r0, #1 + beq _0809277C + cmp r0, #2 + bne _080927A2 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0809277C: + ldr r0, _080927A4 @ =0x00004051 + movs r2, #0x2e + ldrsh r1, [r4, r2] + ldr r3, _080927A8 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r5 + movs r6, #0x32 + ldrsh r2, [r4, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r5 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #1 + bl sub_0800015E +_080927A2: + pop {r4, r5, r6, pc} + .align 2, 0 +_080927A4: .4byte 0x00004051 +_080927A8: .4byte gUnk_03000BF0 + + thumb_func_start sub_080927AC +sub_080927AC: @ 0x080927AC + push {lr} + adds r1, r0, #0 + movs r0, #1 + strb r0, [r1, #0xc] + ldrb r0, [r1, #0xb] + strb r0, [r1, #0x1e] + ldrb r0, [r1, #0xb] + cmp r0, #0 + beq _080927C4 + cmp r0, #2 + beq _080927CA + b _080927D0 +_080927C4: + adds r1, #0x63 + movs r0, #2 + b _080927CE +_080927CA: + adds r1, #0x63 + movs r0, #0xfe +_080927CE: + strb r0, [r1] +_080927D0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080927D4 +sub_080927D4: @ 0x080927D4 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xff + strb r0, [r1] + ldr r0, _08092848 @ =0x00004051 + mov r8, r0 + movs r2, #0x2e + ldrsh r1, [r4, r2] + ldr r6, _0809284C @ =gUnk_03000BF0 + ldrh r0, [r6, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r5, #0x3f + ands r1, r5 + movs r2, #0x32 + ldrsh r0, [r4, r2] + ldrh r2, [r6, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r5 + lsls r0, r0, #6 + orrs r1, r0 + subs r1, #1 + mov r0, r8 + movs r2, #1 + bl sub_0800015E + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldrh r0, [r6, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + ands r1, r5 + movs r2, #0x32 + ldrsh r0, [r4, r2] + ldrh r2, [r6, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r5 + lsls r0, r0, #6 + orrs r1, r0 + mov r0, r8 + movs r2, #1 + bl sub_0800015E + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_08092848: .4byte 0x00004051 +_0809284C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08092850 +sub_08092850: @ 0x08092850 + push {r4, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08092888 + ldr r3, _08092878 @ =gLinkEntity + movs r0, #0x32 + ldrsh r1, [r3, r0] + movs r4, #0x32 + ldrsh r0, [r2, r4] + cmp r1, r0 + blt _0809286E + adds r0, #0x18 + cmp r1, r0 + ble _0809287C +_0809286E: + ldrb r0, [r2, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + b _08092884 + .align 2, 0 +_08092878: .4byte gLinkEntity +_0809287C: + ldrb r0, [r2, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x80 +_08092884: + orrs r1, r0 + strb r1, [r2, #0x19] +_08092888: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809288C +sub_0809288C: @ 0x0809288C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080928B0 + ldr r0, _080928AC @ =gUnk_0812279C + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _080928C0 + .align 2, 0 +_080928AC: .4byte gUnk_0812279C +_080928B0: + ldr r0, _080928C4 @ =gUnk_08122794 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_080928C0: + pop {pc} + .align 2, 0 +_080928C4: .4byte gUnk_08122794 + + thumb_func_start sub_080928C8 +sub_080928C8: @ 0x080928C8 + push {lr} + adds r3, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r3, #0xc] + ldrb r1, [r3, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + ldrb r0, [r3, #0xa] + strb r0, [r3, #0x1e] + ldrb r0, [r3, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r3, #0x19] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r3, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r3, #0x1b] + ldrb r0, [r3, #0xa] + cmp r0, #2 + beq _08092912 + cmp r0, #4 + beq _08092920 + b _08092928 +_08092912: + adds r0, r3, #0 + movs r1, #0x5b + movs r2, #4 + movs r3, #0 + bl sub_080A2988 + b _08092928 +_08092920: + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] +_08092928: + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_119 +nullsub_119: @ 0x0809292C + bx lr + .align 2, 0 + + thumb_func_start sub_08092930 +sub_08092930: @ 0x08092930 + push {r4, lr} + adds r4, r0, #0 + bl sub_080928C8 + adds r4, #0x82 + movs r0, #0 + strh r0, [r4] + pop {r4, pc} + + thumb_func_start sub_08092940 +sub_08092940: @ 0x08092940 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x84 + ldr r1, [r5] + bl sub_0807DF74 + ldr r1, [r5] + adds r0, r4, #0 + bl sub_08092958 + pop {r4, r5, pc} + + thumb_func_start sub_08092958 +sub_08092958: @ 0x08092958 + push {r4, lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r0, [r2, #8] + cmp r0, #0 + beq _0809298A + movs r4, #0 +_08092966: + ldr r1, [r2, #8] + mvns r0, r1 + adds r0, #1 + ands r0, r1 + eors r1, r0 + str r1, [r2, #8] + cmp r0, #1 + beq _0809297C + cmp r0, #2 + beq _08092980 + b _08092984 +_0809297C: + strb r4, [r3, #0x1e] + b _08092984 +_08092980: + ldr r0, [r2, #4] + strb r0, [r3, #0x1e] +_08092984: + ldr r0, [r2, #8] + cmp r0, #0 + bne _08092966 +_0809298A: + pop {r4, pc} + + thumb_func_start sub_0809298C +sub_0809298C: @ 0x0809298C + push {lr} + ldr r2, _080929A0 @ =gUnk_081227A4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080929A0: .4byte gUnk_081227A4 + + thumb_func_start sub_080929A4 +sub_080929A4: @ 0x080929A4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xb] + movs r6, #0xc0 + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + beq _08092A08 + adds r4, r5, #0 + adds r4, #0x86 + ldrh r0, [r4] + bl sub_0807CBE4 + cmp r0, #0 + beq _08092A08 + ldrb r0, [r5, #0xb] + adds r1, r6, #0 + ands r1, r0 + cmp r1, #0x40 + beq _080929D2 + cmp r1, #0x80 + beq _08092A04 + b _08092A08 +_080929D2: + ldr r0, _080929F4 @ =gUnk_030010A0 + ldrh r1, [r0, #0xa] + movs r0, #0xc1 + lsls r0, r0, #1 + cmp r1, r0 + beq _080929EE + cmp r1, r0 + blt _080929FC + ldr r0, _080929F8 @ =0x0000044F + cmp r1, r0 + bgt _080929FC + subs r0, #2 + cmp r1, r0 + blt _080929FC +_080929EE: + bl sub_0805E780 + b _08092A08 + .align 2, 0 +_080929F4: .4byte gUnk_030010A0 +_080929F8: .4byte 0x0000044F +_080929FC: + ldrh r0, [r4] + bl sub_0807CD48 + b _08092A08 +_08092A04: + bl sub_0805E780 +_08092A08: + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r5, #0x20] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #0xa + movs r2, #0x80 + lsls r2, r2, #6 + adds r1, r2, #0 + adds r2, r5, #0 + adds r2, #0x78 + movs r3, #0 + orrs r0, r1 + strh r0, [r2] + ldrb r0, [r5, #0xe] + lsrs r0, r0, #1 + strb r0, [r5, #0xf] + strb r3, [r5, #0xe] + ldrb r1, [r5, #0xb] + movs r0, #0x3f + ands r0, r1 + strb r0, [r5, #0x1e] + movs r4, #0x2e + ldrsh r1, [r5, r4] + ldr r2, _08092A8C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r5, #0 + adds r4, #0x7e + strh r1, [r4] + ldrh r0, [r4] + movs r1, #1 + bl sub_080001DA + adds r1, r5, #0 + adds r1, #0x7c + strh r0, [r1] + ldrh r0, [r4] + movs r1, #1 + bl sub_080002E0 + adds r1, r5, #0 + adds r1, #0x7a + strh r0, [r1] + ldr r0, _08092A90 @ =0x00004022 + ldrh r1, [r4] + movs r2, #1 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_08092A8C: .4byte gUnk_03000BF0 +_08092A90: .4byte 0x00004022 + + thumb_func_start sub_08092A94 +sub_08092A94: @ 0x08092A94 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r2, _08092B08 @ =gLinkEntity + ldrb r0, [r2, #0xc] + cmp r0, #6 + bne _08092B04 + ldrb r0, [r2, #0x14] + cmp r0, #0 + bne _08092B04 + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r0, #0x28 + movs r3, #0x32 + ldrsh r1, [r2, r3] + cmp r0, r1 + blt _08092B04 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r3, #0x2e + ldrsh r0, [r2, r3] + subs r1, r1, r0 + ldrb r0, [r4, #0xf] + cmp r1, r0 + bge _08092B04 + cmn r1, r0 + ble _08092B04 + adds r0, r4, #0 + adds r0, #0x7c + ldrh r0, [r0] + adds r5, r4, #0 + adds r5, #0x7e + ldrh r1, [r5] + movs r2, #1 + bl sub_0800015E + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + ldrh r1, [r5] + movs r2, #1 + bl sub_08000148 + movs r0, #2 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x36] + subs r0, #0x20 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x32] + adds r0, #0x20 + strh r0, [r4, #0x32] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] +_08092B04: + pop {r4, r5, pc} + .align 2, 0 +_08092B08: .4byte gLinkEntity + + thumb_func_start sub_08092B0C +sub_08092B0C: @ 0x08092B0C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _08092B50 + movs r0, #0 + movs r1, #3 + strb r1, [r4, #0xc] + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xb] + movs r1, #0xc0 + ands r1, r0 + cmp r1, #0x40 + beq _08092B32 + cmp r1, #0x80 + bne _08092B3C + movs r0, #0x72 + bl sub_08004488 +_08092B32: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 +_08092B3C: + adds r0, r4, #0 + movs r1, #5 + movs r2, #0 + bl CreateFX + adds r0, r4, #0 + movs r1, #3 + bl sub_0805457C + b _08092B6A +_08092B50: + adds r0, r4, #0 + adds r0, #0x78 + ldrh r1, [r0] + adds r0, r4, #0 + bl sub_080044EC + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08092B6A + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] +_08092B6A: + pop {r4, pc} + + thumb_func_start sub_08092B6C +sub_08092B6C: @ 0x08092B6C + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_08092B74 +sub_08092B74: @ 0x08092B74 + push {lr} + ldr r2, _08092B88 @ =gUnk_081227C0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08092B88: .4byte gUnk_081227C0 + + thumb_func_start sub_08092B8C +sub_08092B8C: @ 0x08092B8C + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _08092BA6 + bl sub_0807CBE4 + cmp r0, #0 + beq _08092BA6 + bl sub_0805E780 +_08092BA6: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x7d + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08092BE8 @ =gUnk_081227EC + str r0, [r4, #0x48] + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xa] + lsls r0, r0, #1 + ldr r1, _08092BEC @ =gUnk_081227B4 + adds r2, r0, r1 + ldrb r1, [r2] + adds r0, r1, #0 + cmp r0, #0xff + bne _08092BF0 + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x1e] + b _08092BF6 + .align 2, 0 +_08092BE8: .4byte gUnk_081227EC +_08092BEC: .4byte gUnk_081227B4 +_08092BF0: + strb r1, [r4, #0x1e] + ldrb r0, [r2, #1] + strb r0, [r4, #0xb] +_08092BF6: + pop {r4, pc} + + thumb_func_start sub_08092BF8 +sub_08092BF8: @ 0x08092BF8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _08092C20 + bl sub_0807CBE4 + cmp r0, #0 + beq _08092C20 + movs r0, #2 + strb r0, [r4, #0xc] + ldr r0, _08092C1C @ =0x00000111 + bl sub_080A3268 + b _08092C92 + .align 2, 0 +_08092C1C: .4byte 0x00000111 +_08092C20: + adds r0, r4, #0 + bl sub_0800445C + cmp r0, #0 + beq _08092C74 + adds r0, r4, #0 + adds r0, #0x7d + ldrb r0, [r0] + cmp r0, #0 + bne _08092C74 + ldrb r0, [r4, #0xb] + lsls r0, r0, #3 + ldr r1, _08092C68 @ =gUnk_081227CC + adds r5, r0, r1 + ldrh r1, [r5, #4] + ldrh r2, [r5, #6] + adds r0, r4, #0 + bl sub_0806ED9C + cmp r0, #0 + blt _08092C78 + ldr r1, _08092C6C @ =gLinkEntity + ldrh r0, [r5] + ldrb r1, [r1, #0x14] + cmp r0, r1 + bne _08092C78 + ldr r0, _08092C70 @ =gUnk_03003F80 + adds r0, #0x90 + ldrh r1, [r0] + ldrh r0, [r5, #2] + ands r0, r1 + cmp r0, #0 + beq _08092C78 + ldrb r0, [r4, #0xe] + subs r0, #1 + b _08092C76 + .align 2, 0 +_08092C68: .4byte gUnk_081227CC +_08092C6C: .4byte gLinkEntity +_08092C70: .4byte gUnk_03003F80 +_08092C74: + movs r0, #8 +_08092C76: + strb r0, [r4, #0xe] +_08092C78: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08092C92 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #8 + movs r1, #0 + movs r2, #0 + bl sub_08078AC0 + ldr r0, _08092C94 @ =0x00000111 + bl sub_080A3268 +_08092C92: + pop {r4, r5, pc} + .align 2, 0 +_08092C94: .4byte 0x00000111 + + thumb_func_start sub_08092C98 +sub_08092C98: @ 0x08092C98 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_08092CA0 +sub_08092CA0: @ 0x08092CA0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _08092CC0 + ldr r0, _08092CD4 @ =gUnk_020342F8 + subs r1, #1 + bl sub_0801D5A8 + cmp r0, #0 + bne _08092CC0 + bl sub_0805E780 +_08092CC0: + ldr r0, _08092CD8 @ =gUnk_081227F4 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08092CD4: .4byte gUnk_020342F8 +_08092CD8: .4byte gUnk_081227F4 + + thumb_func_start sub_08092CDC +sub_08092CDC: @ 0x08092CDC + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + strb r2, [r4, #0xc] + ldr r0, _08092D48 @ =gUnk_080FD320 + str r0, [r4, #0x48] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + adds r0, #0x3f + strb r2, [r0] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #0x47 + strb r0, [r1] + adds r1, #4 + movs r0, #0x44 + strb r0, [r1] + subs r1, #5 + movs r0, #0x80 + strb r0, [r1] + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x14] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + movs r0, #0xe0 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _08092D50 + ldr r1, _08092D4C @ =0x00000161 + adds r0, r4, #0 + bl sub_0801D2B4 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _08092D5C + .align 2, 0 +_08092D48: .4byte gUnk_080FD320 +_08092D4C: .4byte 0x00000161 +_08092D50: + ldr r0, _08092D78 @ =0x0000FFE8 + strh r0, [r4, #0x36] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08092D5C: + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08092D74 + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC +_08092D74: + pop {r4, pc} + .align 2, 0 +_08092D78: .4byte 0x0000FFE8 + + thumb_func_start sub_08092D7C +sub_08092D7C: @ 0x08092D7C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08092D92 + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC +_08092D92: + ldrb r0, [r5, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + beq _08092E84 + adds r0, r5, #0 + bl sub_08004274 + ldr r6, _08092E04 @ =gUnk_03003F80 + ldr r0, [r6, #0x30] + movs r3, #0x80 + ands r0, r3 + cmp r0, #0 + bne _08092E84 + adds r0, r6, #0 + adds r0, #0x3c + ldrb r0, [r0] + cmp r0, #0 + bne _08092E84 + ldr r4, _08092E08 @ =gLinkEntity + ldrb r2, [r4, #0xc] + cmp r2, #4 + beq _08092DC8 + ldrb r1, [r4, #0x10] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _08092E84 +_08092DC8: + cmp r2, #6 + beq _08092E84 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0xc + movs r3, #0xc + bl sub_0800419C + cmp r0, #0 + beq _08092E84 + ldr r0, [r6, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _08092E0C + ldrb r0, [r4, #0xc] + cmp r0, #4 + beq _08092E0C + ldrb r0, [r5, #0xb] + cmp r0, #1 + beq _08092E16 + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + bgt _08092E84 + b _08092E16 + .align 2, 0 +_08092E04: .4byte gUnk_03003F80 +_08092E08: .4byte gLinkEntity +_08092E0C: + ldr r0, _08092E88 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r0, r1] + cmp r0, #0 + beq _08092E84 +_08092E16: + ldr r4, _08092E88 @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + bl sub_08004542 + adds r0, r4, #0 + bl sub_08004542 + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r1, _08092E8C @ =gUnk_03003F80 + movs r0, #0x1f + strb r0, [r1, #0xc] + ldrb r2, [r5, #0xb] + adds r0, r1, #0 + adds r0, #0x38 + strb r2, [r0] + adds r1, #0x39 + movs r0, #0xff + strb r0, [r1] + adds r4, #0x29 + ldrb r1, [r4] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, r5, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + bl sub_08077B20 + ldr r0, _08092E90 @ =0x00000153 + bl sub_080A3268 + movs r0, #0x79 + bl sub_080A3268 +_08092E84: + pop {r4, r5, r6, pc} + .align 2, 0 +_08092E88: .4byte gLinkEntity +_08092E8C: .4byte gUnk_03003F80 +_08092E90: .4byte 0x00000153 + + thumb_func_start sub_08092E94 +sub_08092E94: @ 0x08092E94 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + ldr r1, _08092ED0 @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0xc + movs r3, #0xc + bl sub_0800419C + cmp r0, #0 + bne _08092ECE + adds r0, r4, #0 + bl sub_0800455E + ldrb r2, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r4, #0x19] + ldrb r0, [r4, #0xc] + subs r0, #1 + strb r0, [r4, #0xc] +_08092ECE: + pop {r4, pc} + .align 2, 0 +_08092ED0: .4byte gLinkEntity + + thumb_func_start sub_08092ED4 +sub_08092ED4: @ 0x08092ED4 + push {lr} + ldr r2, _08092EE8 @ =gUnk_0812283C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08092EE8: .4byte gUnk_0812283C + + thumb_func_start sub_08092EEC +sub_08092EEC: @ 0x08092EEC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_080932D8 + cmp r0, #1 + beq _08092F2C + cmp r0, #2 + beq _08092F3A + movs r0, #1 + strb r0, [r4, #0xc] + movs r1, #0 + movs r2, #0x80 + strh r2, [r4, #0x24] + strb r0, [r4, #0x16] + strb r1, [r4, #0xe] + strb r1, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0x20 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x7b + strb r2, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08092F48 + ldr r0, _08092F28 @ =gUnk_080FD288 + str r0, [r4, #0x48] + b _08092F48 + .align 2, 0 +_08092F28: .4byte gUnk_080FD288 +_08092F2C: + movs r0, #4 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x2e] + subs r0, #0x20 + strh r0, [r4, #0x2e] + movs r5, #2 + b _08092F5E +_08092F3A: + movs r0, #4 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x2e] + adds r0, #0x20 + strh r0, [r4, #0x2e] + movs r5, #3 + b _08092F5E +_08092F48: + movs r5, #0 + adds r1, r4, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _08092F5E + bl sub_0807CBE4 + cmp r0, #0 + bne _08092F5E + movs r5, #1 +_08092F5E: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080931A4 + pop {r4, r5, pc} + + thumb_func_start sub_08092F68 +sub_08092F68: @ 0x08092F68 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldr r0, _08092FA4 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r2, #0x2e + ldrsh r0, [r6, r2] + subs r1, r1, r0 + mov r8, r1 + adds r1, r6, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _08092FA8 + bl sub_0807CBE4 + cmp r0, #0 + bne _08092F92 + b _080930E6 +_08092F92: + adds r0, r6, #0 + adds r0, #0x7a + ldrb r0, [r0] + cmp r0, #0 + beq _08092FA8 + adds r0, r6, #0 + bl sub_080932A8 + b _080930E6 + .align 2, 0 +_08092FA4: .4byte gLinkEntity +_08092FA8: + adds r1, r6, #0 + adds r1, #0x7b + ldrb r2, [r1] + movs r0, #0x3f + ands r0, r2 + adds r7, r1, #0 + cmp r0, #0 + bne _08092FD6 + movs r0, #0xf + movs r4, #0 + orrs r0, r2 + strb r0, [r7] + adds r0, r6, #0 + movs r1, #0 + bl sub_080931A4 + mov r0, r8 + cmp r0, #0 + bge _08092FD6 + ldrb r0, [r7] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r7] +_08092FD6: + ldrb r1, [r7] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _08092FEA + adds r5, r6, #0 + adds r5, #0x78 + ldrh r0, [r5] + subs r0, #1 + b _08092FF2 +_08092FEA: + adds r5, r6, #0 + adds r5, #0x78 + ldrh r0, [r5] + adds r0, #1 +_08092FF2: + adds r4, r6, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080002B0 + adds r1, r0, #0 + ldr r0, _08093034 @ =0x00004031 + cmp r1, r0 + bhi _08093040 + subs r0, #1 + cmp r1, r0 + blo _08093040 + movs r0, #3 + strb r0, [r6, #0xc] + ldr r0, _08093038 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsls r0, r0, #2 + strb r0, [r6, #0x15] + movs r0, #0x80 + strh r0, [r6, #0x24] + movs r0, #0x40 + strb r0, [r6, #0xe] + adds r0, r6, #0 + movs r1, #0x50 + bl sub_0805E4E0 + ldr r0, _0809303C @ =0x0000010F + bl sub_08004488 + adds r0, r6, #0 + bl sub_08093248 + b _080930E6 + .align 2, 0 +_08093034: .4byte 0x00004031 +_08093038: .4byte gLinkEntity +_0809303C: .4byte 0x0000010F +_08093040: + ldr r0, _0809307C @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080930E6 + adds r0, r6, #0 + bl sub_08078930 + adds r3, r7, #0 + ldrb r2, [r3] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08093088 + movs r1, #0x7f + ands r1, r2 + strb r1, [r3] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _0809309C + ldr r0, _08093080 @ =0x0000402C + ldrh r1, [r5] + subs r1, #1 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _08093084 @ =0x0000403D + b _080930AA + .align 2, 0 +_0809307C: .4byte gLinkEntity +_08093080: .4byte 0x0000402C +_08093084: .4byte 0x0000403D +_08093088: + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _080930C0 + mov r1, r8 + cmp r1, #4 + ble _080930E6 + movs r0, #0x3f + ands r0, r2 + strb r0, [r3] +_0809309C: + ldr r0, _080930B8 @ =0x0000403D + ldrh r1, [r5] + subs r1, #1 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _080930BC @ =0x0000402D +_080930AA: + ldrh r1, [r5] + adds r1, #1 + ldrb r2, [r4] + bl sub_0800015E + b _080930E6 + .align 2, 0 +_080930B8: .4byte 0x0000403D +_080930BC: .4byte 0x0000402D +_080930C0: + mov r1, r8 + rsbs r0, r1, #0 + cmp r0, #4 + ble _080930E6 + movs r0, #0x40 + orrs r0, r2 + strb r0, [r7] + ldr r0, _080930EC @ =0x0000402C + ldrh r1, [r5] + subs r1, #1 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _080930F0 @ =0x0000403D + ldrh r1, [r5] + adds r1, #1 + ldrb r2, [r4] + bl sub_0800015E +_080930E6: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080930EC: .4byte 0x0000402C +_080930F0: .4byte 0x0000403D + + thumb_func_start sub_080930F4 +sub_080930F4: @ 0x080930F4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r3, [r4, #0xe] + cmp r3, #0 + beq _08093104 + bl sub_08093280 + b _08093174 +_08093104: + ldr r5, _0809315C @ =gUnk_03003F80 + ldrb r0, [r5, #5] + cmp r0, #0x12 + bne _08093168 + ldr r6, _08093160 @ =gLinkEntity + adds r0, r6, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08093174 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bls _08093174 + movs r0, #0x10 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x38 + movs r2, #0x40 + strb r2, [r0] + ldr r0, [r5, #0x30] + movs r1, #1 + orrs r0, r1 + str r0, [r5, #0x30] + strh r3, [r6, #0x2c] + strh r3, [r6, #0x30] + ldrb r0, [r6, #0x14] + movs r1, #4 + eors r0, r1 + lsls r0, r0, #2 + strb r0, [r4, #0x15] + strb r2, [r4, #0xe] + ldr r0, _08093164 @ =0x0000010F + bl sub_08004488 + adds r0, r4, #0 + bl sub_08093248 + b _08093174 + .align 2, 0 +_0809315C: .4byte gUnk_03003F80 +_08093160: .4byte gLinkEntity +_08093164: .4byte 0x0000010F +_08093168: + ldrb r0, [r4, #0xd] + cmp r0, #6 + bne _08093174 + movs r0, #1 + strb r0, [r4, #0xc] + strb r3, [r4, #0xf] +_08093174: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08093178 +sub_08093178: @ 0x08093178 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093198 + adds r0, r4, #0 + bl sub_08093334 +_08093198: + adds r0, r4, #0 + bl sub_08093364 + pop {r4, pc} + + thumb_func_start nullsub_120 +nullsub_120: @ 0x080931A0 + bx lr + .align 2, 0 + + thumb_func_start sub_080931A4 +sub_080931A4: @ 0x080931A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r1, #0 + movs r1, #0x2e + ldrsh r2, [r0, r1] + ldr r3, _080931F0 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r2, r2, r1 + asrs r2, r2, #4 + movs r4, #0x3f + ands r2, r4 + movs r6, #0x32 + ldrsh r1, [r0, r6] + ldrh r3, [r3, #8] + subs r1, r1, r3 + asrs r1, r1, #4 + ands r1, r4 + lsls r1, r1, #6 + orrs r2, r1 + adds r1, r0, #0 + adds r1, #0x78 + strh r2, [r1] + ldrh r1, [r1] + subs r1, #0x40 + mov r8, r1 + adds r0, #0x38 + ldrb r7, [r0] + cmp r5, #1 + beq _080931F4 + cmp r5, #1 + blo _0809320C + cmp r5, #2 + beq _080931FC + cmp r5, #3 + beq _08093204 + b _0809320C + .align 2, 0 +_080931F0: .4byte gUnk_03000BF0 +_080931F4: + ldr r0, _080931F8 @ =gUnk_08122862 + b _0809320E + .align 2, 0 +_080931F8: .4byte gUnk_08122862 +_080931FC: + ldr r0, _08093200 @ =gUnk_08122874 + b _0809320E + .align 2, 0 +_08093200: .4byte gUnk_08122874 +_08093204: + ldr r0, _08093208 @ =gUnk_08122886 + b _0809320E + .align 2, 0 +_08093208: .4byte gUnk_08122886 +_0809320C: + ldr r0, _08093230 @ =gUnk_08122850 +_0809320E: + movs r4, #0 + movs r6, #0 + adds r5, r0, #0 +_08093214: + mov r0, r8 + adds r1, r0, r6 + adds r1, r1, r4 + subs r1, #1 + ldrh r0, [r5] + adds r2, r7, #0 + bl sub_0800015E + cmp r4, #2 + beq _08093234 + cmp r4, #5 + beq _08093238 + b _0809323A + .align 2, 0 +_08093230: .4byte gUnk_08122850 +_08093234: + movs r6, #0x3d + b _0809323A +_08093238: + movs r6, #0x7a +_0809323A: + adds r5, #2 + adds r4, #1 + cmp r4, #8 + bls _08093214 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08093248 +sub_08093248: @ 0x08093248 + push {r4, r5, r6, r7, lr} + adds r1, r0, #0 + adds r1, #0x78 + ldrh r1, [r1] + adds r7, r1, #0 + subs r7, #0x40 + adds r0, #0x38 + ldrb r6, [r0] + movs r4, #0 + movs r5, #0 +_0809325C: + adds r0, r7, r5 + adds r0, r0, r4 + subs r0, #1 + adds r1, r6, #0 + bl sub_0807BA8C + cmp r4, #2 + beq _08093272 + cmp r4, #5 + beq _08093276 + b _08093278 +_08093272: + movs r5, #0x3d + b _08093278 +_08093276: + movs r5, #0x7a +_08093278: + adds r4, #1 + cmp r4, #8 + bls _0809325C + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08093280 +sub_08093280: @ 0x08093280 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080932A0 + adds r0, r4, #0 + bl sub_08093334 +_080932A0: + adds r0, r4, #0 + bl sub_08093364 + pop {r4, pc} + + thumb_func_start sub_080932A8 +sub_080932A8: @ 0x080932A8 + push {lr} + adds r1, r0, #0 + adds r2, r1, #0 + adds r2, #0x7a + ldrb r0, [r2] + subs r0, #1 + strb r0, [r2] + movs r2, #3 + ands r2, r0 + cmp r2, #1 + beq _080932C8 + cmp r2, #3 + beq _080932D0 + adds r1, #0x62 + movs r0, #0 + b _080932D4 +_080932C8: + adds r0, r1, #0 + adds r0, #0x62 + strb r2, [r0] + b _080932D6 +_080932D0: + adds r1, #0x62 + movs r0, #0xff +_080932D4: + strb r0, [r1] +_080932D6: + pop {pc} + + thumb_func_start sub_080932D8 +sub_080932D8: @ 0x080932D8 + push {r4, lr} + lsls r0, r0, #3 + ldr r1, _080932F0 @ =gUnk_08122898 + adds r4, r0, r1 + ldr r0, [r4] + ldrh r1, [r4, #4] + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _080932F4 + movs r0, #1 + b _08093306 + .align 2, 0 +_080932F0: .4byte gUnk_08122898 +_080932F4: + ldr r0, [r4] + ldrh r1, [r4, #6] + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _08093304 + movs r0, #0 + b _08093306 +_08093304: + movs r0, #2 +_08093306: + pop {r4, pc} + + thumb_func_start sub_08093308 +sub_08093308: @ 0x08093308 + push {lr} + adds r2, r1, #0 + lsls r0, r0, #3 + ldr r1, _08093320 @ =gUnk_08122898 + adds r1, r0, r1 + cmp r2, #1 + bne _08093324 + ldr r0, [r1] + ldrh r1, [r1, #4] + bl sub_0807CC9C + b _08093330 + .align 2, 0 +_08093320: .4byte gUnk_08122898 +_08093324: + cmp r2, #2 + bne _08093330 + ldr r0, [r1] + ldrh r1, [r1, #6] + bl sub_0807CC9C +_08093330: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08093334 +sub_08093334: @ 0x08093334 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x15] + movs r0, #0x10 + ands r0, r1 + movs r5, #2 + cmp r0, #0 + beq _0809334A + movs r5, #1 +_0809334A: + adds r1, r5, #1 + adds r0, r4, #0 + bl sub_080931A4 + ldrb r0, [r4, #0xa] + adds r1, r5, #0 + bl sub_08093308 + movs r0, #0x72 + bl sub_08004488 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08093364 +sub_08093364: @ 0x08093364 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xe] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080933BC + movs r0, #0xf + movs r1, #0x11 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080933BC + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r1, [r5, #0x15] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0809339C + ldrh r0, [r4, #0x2e] + adds r0, #0x12 + b _080933A0 +_0809339C: + ldrh r0, [r4, #0x2e] + subs r0, #0x12 +_080933A0: + strh r0, [r4, #0x2e] + movs r0, #0x32 + ldrsh r2, [r4, r0] + ldrb r1, [r5, #0xe] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080933B6 + adds r0, r2, #0 + adds r0, #8 + b _080933BA +_080933B6: + adds r0, r2, #0 + subs r0, #8 +_080933BA: + strh r0, [r4, #0x32] +_080933BC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080933C0 +sub_080933C0: @ 0x080933C0 + push {lr} + ldr r2, _080933D4 @ =gUnk_081228B0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080933D4: .4byte gUnk_081228B0 + + thumb_func_start sub_080933D8 +sub_080933D8: @ 0x080933D8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x1e] + adds r0, r4, #0 + bl sub_08016A04 + ldr r0, _080933F8 @ =gUnk_081228A8 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_080787B4 + pop {r4, pc} + .align 2, 0 +_080933F8: .4byte gUnk_081228A8 + + thumb_func_start sub_080933FC +sub_080933FC: @ 0x080933FC + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08093420 + movs r0, #0 + strb r0, [r1] + ldr r1, _08093424 @ =gUnk_081228B8 + ldrb r0, [r2, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r1, r2, #0 + bl sub_08056398 +_08093420: + pop {pc} + .align 2, 0 +_08093424: .4byte gUnk_081228B8 + + thumb_func_start sub_08093428 +sub_08093428: @ 0x08093428 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0809345C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x11 + ands r0, r1 + cmp r0, #0 + bne _0809344A + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08093446 + ldr r1, _08093460 @ =gUnk_03000BF0 + ldr r0, _08093464 @ =gLinkEntity + str r0, [r1, #0x30] +_08093446: + bl sub_0805E780 +_0809344A: + ldr r0, _08093468 @ =gUnk_081228C8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_0809345C: .4byte gUnk_03003F80 +_08093460: .4byte gUnk_03000BF0 +_08093464: .4byte gLinkEntity +_08093468: .4byte gUnk_081228C8 + + thumb_func_start sub_0809346C +sub_0809346C: @ 0x0809346C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x1f] + ldr r0, _080934C0 @ =gLinkEntity + ldrb r1, [r0, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080934B8 + ldr r0, _080934C4 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r1, r4, #0 + adds r1, #0x6e + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + adds r1, #4 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0x61 + movs r2, #1 + movs r3, #0 + bl sub_080A2988 +_080934B8: + adds r0, r4, #0 + bl sub_080934C8 + pop {r4, pc} + .align 2, 0 +_080934C0: .4byte gLinkEntity +_080934C4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080934C8 +sub_080934C8: @ 0x080934C8 + push {lr} + ldr r2, _080934DC @ =gUnk_081228D0 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080934DC: .4byte gUnk_081228D0 + + thumb_func_start sub_080934E0 +sub_080934E0: @ 0x080934E0 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r5, #0 + adds r4, #0x6e + ldrh r1, [r4] + movs r2, #0 + ldrsh r0, [r4, r2] + cmp r0, #0 + bge _080934F6 + rsbs r0, r1, #0 + strh r0, [r4] +_080934F6: + ldr r0, _08093518 @ =gLinkEntity + ldrb r0, [r0, #0xd] + cmp r0, #2 + beq _0809351C + cmp r0, #2 + bgt _080935B0 + cmp r0, #1 + bne _080935B0 + adds r1, r5, #0 + adds r1, #0x72 + ldrh r0, [r1] + subs r0, #4 + strh r0, [r1] + adds r6, r4, #0 + adds r7, r1, #0 + b _080935BE + .align 2, 0 +_08093518: .4byte gLinkEntity +_0809351C: + ldrb r2, [r5, #0xf] + adds r0, r2, #0 + cmp r0, #0 + bne _08093560 + adds r0, r5, #0 + adds r0, #0x72 + ldrh r1, [r0] + adds r7, r0, #0 + cmp r1, #0x80 + bls _08093538 + adds r0, r1, #0 + subs r0, #0x20 + strh r0, [r7] + b _08093544 +_08093538: + adds r0, r2, #1 + strb r0, [r5, #0xf] + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_080A3268 +_08093544: + adds r0, r5, #0 + adds r0, #0x6e + ldrh r2, [r0] + ldr r1, _0809355C @ =0x0000011F + adds r6, r0, #0 + cmp r2, r1 + bhi _080935BE + adds r0, r2, #0 + adds r0, #0x40 + strh r0, [r6] + b _080935BE + .align 2, 0 +_0809355C: .4byte 0x0000011F +_08093560: + cmp r0, #0xff + beq _080935A6 + adds r0, r5, #0 + adds r0, #0x72 + ldrh r1, [r0] + adds r7, r0, #0 + cmp r1, #0xff + bhi _08093576 + adds r0, r1, #0 + adds r0, #0x20 + b _0809357A +_08093576: + movs r0, #0x80 + lsls r0, r0, #1 +_0809357A: + strh r0, [r7] + adds r0, r5, #0 + adds r0, #0x6e + ldrh r1, [r0] + movs r2, #0x80 + lsls r2, r2, #1 + adds r6, r0, #0 + cmp r1, r2 + bls _08093594 + adds r0, r1, #0 + subs r0, #0x20 + strh r0, [r6] + b _08093596 +_08093594: + strh r2, [r6] +_08093596: + ldrh r1, [r6] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + bne _080935BE + movs r0, #0xff + strb r0, [r5, #0xf] + b _080935BE +_080935A6: + adds r0, r5, #0 + bl sub_080936C8 + adds r6, r4, #0 + b _080935BA +_080935B0: + adds r0, r5, #0 + bl sub_080936C8 + adds r6, r5, #0 + adds r6, #0x6e +_080935BA: + adds r7, r5, #0 + adds r7, #0x72 +_080935BE: + ldr r0, _080935E4 @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _080935E8 + movs r0, #1 + strb r0, [r5, #0x1e] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #2 + bne _080935EA + ldrh r0, [r6] + rsbs r0, r0, #0 + strh r0, [r6] + b _080935EA + .align 2, 0 +_080935E4: .4byte gLinkEntity +_080935E8: + strb r0, [r5, #0x1e] +_080935EA: + ldrb r0, [r5, #0x1e] + ldrb r1, [r5, #0x1f] + cmp r0, r1 + beq _080935FE + strb r0, [r5, #0x1f] + ldrb r1, [r5, #0x1e] + ldrh r2, [r5, #0x12] + adds r0, r5, #0 + bl sub_080042D0 +_080935FE: + ldr r4, _0809364C @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + ldrb r2, [r4, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r4, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x19] + ldrh r1, [r7] + adds r0, r5, #0 + movs r2, #0xa + movs r3, #2 + bl sub_0806FCF4 + ldrh r1, [r6] + ldrh r2, [r7] + adds r0, r5, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r4, #0 + movs r1, #1 + adds r2, r5, #0 + bl sub_0806FEBC + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809364C: .4byte gLinkEntity + + thumb_func_start sub_08093650 +sub_08093650: @ 0x08093650 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080936C4 @ =gLinkEntity + ldrb r0, [r5, #0x15] + lsrs r1, r0, #1 + adds r0, r0, r1 + asrs r0, r0, #2 + adds r0, #2 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x1f] + cmp r0, r1 + beq _08093674 + strb r0, [r4, #0x1f] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_08093674: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r2, [r5, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x19] + ldr r0, [r4, #0x50] + adds r0, #0x72 + ldrh r1, [r0] + adds r0, r4, #0 + movs r2, #0x18 + movs r3, #0 + bl sub_0806FCF4 + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + rsbs r0, r0, #0 + strb r0, [r1] + adds r0, r5, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_0806FEBC + pop {r4, r5, pc} + .align 2, 0 +_080936C4: .4byte gLinkEntity + + thumb_func_start sub_080936C8 +sub_080936C8: @ 0x080936C8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _08093714 @ =gLinkEntity + ldr r0, [r0, #0x7c] + lsrs r2, r0, #2 + movs r3, #0x9c + lsls r3, r3, #1 + adds r1, r3, #0 + subs r1, r1, r2 + adds r5, r4, #0 + adds r5, #0x76 + strh r1, [r5] + movs r1, #0x3c + bl __divsi3 + movs r1, #8 + subs r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + ldrb r3, [r4, #0xe] + cmp r3, #0 + bne _0809372C + adds r1, r4, #0 + adds r1, #0x6e + ldrh r2, [r1] + ldrh r0, [r5] + cmp r0, r2 + bhs _08093718 + adds r0, r2, #0 + subs r0, #8 + strh r0, [r1] + adds r1, #4 + ldrh r0, [r1] + adds r0, #8 + strh r0, [r1] + b _0809375C + .align 2, 0 +_08093714: .4byte gLinkEntity +_08093718: + adds r0, r3, #1 + strb r0, [r4, #0xe] + ldrh r0, [r5] + strh r0, [r1] + ldrh r0, [r5] + adds r0, #0x30 + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + b _0809375C +_0809372C: + ldrh r0, [r5] + adds r0, #0x30 + adds r1, r4, #0 + adds r1, #0x6e + ldrh r2, [r1] + cmp r0, r2 + ble _0809374A + adds r0, r2, #0 + adds r0, #8 + strh r0, [r1] + adds r1, #4 + ldrh r0, [r1] + subs r0, #8 + strh r0, [r1] + b _0809375C +_0809374A: + movs r0, #0 + strb r0, [r4, #0xe] + ldrh r0, [r5] + adds r0, #0x30 + strh r0, [r1] + ldrh r1, [r5] + adds r0, r4, #0 + adds r0, #0x72 + strh r1, [r0] +_0809375C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08093760 +sub_08093760: @ 0x08093760 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #2 + beq _08093794 + cmp r0, #2 + bgt _08093778 + cmp r0, #0 + beq _08093784 + cmp r0, #1 + beq _0809378C + b _080937BC +_08093778: + cmp r0, #3 + beq _080937AC + cmp r0, #0x41 + bgt _080937BC + cmp r0, #0x40 + blt _080937BC +_08093784: + ldr r0, _08093788 @ =gUnk_081228D8 + b _08093796 + .align 2, 0 +_08093788: .4byte gUnk_081228D8 +_0809378C: + ldr r0, _08093790 @ =gUnk_081228E0 + b _08093796 + .align 2, 0 +_08093790: .4byte gUnk_081228E0 +_08093794: + ldr r0, _080937A8 @ =gUnk_081228E8 +_08093796: + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _080937BC + .align 2, 0 +_080937A8: .4byte gUnk_081228E8 +_080937AC: + ldr r0, _080937C0 @ =gUnk_081228F0 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_080937BC: + pop {pc} + .align 2, 0 +_080937C0: .4byte gUnk_081228F0 + + thumb_func_start sub_080937C4 +sub_080937C4: @ 0x080937C4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r5, #1 + strb r5, [r4, #0xc] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08093808 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r6, #0x32 + ldrsh r0, [r4, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x76 + strh r1, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0x41 + beq _0809386A + cmp r0, #0x41 + bgt _0809387A + cmp r0, #0 + beq _0809380C + cmp r0, #0x40 + beq _08093840 + b _0809387A + .align 2, 0 +_08093808: .4byte gUnk_03000BF0 +_0809380C: + strb r5, [r4, #0x1e] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x78 + strh r5, [r0] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0x3c + strh r0, [r1] + movs r0, #0x62 + movs r1, #0x40 + b _08093854 +_08093840: + movs r0, #2 + strb r0, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x62 + movs r1, #0x41 +_08093854: + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0809387A + str r4, [r1, #0x50] + adds r0, r4, #0 + bl sub_0806FA24 + b _0809387A +_0809386A: + movs r0, #0 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x1b] +_0809387A: + adds r0, r4, #0 + bl sub_08093A1C + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08093884 +sub_08093884: @ 0x08093884 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _080938B8 + ldr r0, _080938A8 @ =gLinkEntity + movs r3, #0x32 + ldrsh r1, [r0, r3] + movs r3, #0x32 + ldrsh r0, [r2, r3] + adds r0, #0x20 + cmp r1, r0 + bge _080938AC + ldrb r0, [r2, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + b _080938B4 + .align 2, 0 +_080938A8: .4byte gLinkEntity +_080938AC: + ldrb r0, [r2, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x80 +_080938B4: + orrs r1, r0 + strb r1, [r2, #0x19] +_080938B8: + adds r0, r2, #0 + bl sub_08093C70 + pop {pc} + + thumb_func_start sub_080938C0 +sub_080938C0: @ 0x080938C0 + push {r4, r5, lr} + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0xb] + ands r1, r2 + adds r1, #3 + strb r1, [r0, #0x1e] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r2, #7 + orrs r1, r2 + strb r1, [r3] + movs r1, #0x2e + ldrsh r2, [r0, r1] + ldr r3, _08093908 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r2, r2, r1 + asrs r2, r2, #4 + movs r4, #0x3f + ands r2, r4 + movs r5, #0x32 + ldrsh r1, [r0, r5] + ldrh r3, [r3, #8] + subs r1, r1, r3 + asrs r1, r1, #4 + ands r1, r4 + lsls r1, r1, #6 + orrs r2, r1 + adds r1, r0, #0 + adds r1, #0x76 + strh r2, [r1] + bl sub_08093A1C + pop {r4, r5, pc} + .align 2, 0 +_08093908: .4byte gUnk_03000BF0 + + thumb_func_start nullsub_524 +nullsub_524: @ 0x0809390C + bx lr + .align 2, 0 + + thumb_func_start sub_08093910 +sub_08093910: @ 0x08093910 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r3, #1 + strb r3, [r5, #0xc] + ldrb r1, [r5, #0xb] + adds r0, r3, #0 + ands r0, r1 + adds r0, #5 + strb r0, [r5, #0x1e] + ldrb r0, [r5, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r5, #0x19] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _0809397C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r0, [r5, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r4 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + adds r0, #0x76 + strh r1, [r0] + ldrb r0, [r5, #0xb] + ands r3, r0 + cmp r3, #0 + beq _0809396C + adds r1, r5, #0 + adds r1, #0x62 + movs r0, #8 + strb r0, [r1] +_0809396C: + adds r0, r5, #0 + bl sub_08093984 + adds r0, r5, #0 + movs r1, #0x7b + bl sub_0801D2B4 + pop {r4, r5, r6, pc} + .align 2, 0 +_0809397C: .4byte gUnk_03000BF0 + + thumb_func_start nullsub_525 +nullsub_525: @ 0x08093980 + bx lr + .align 2, 0 + + thumb_func_start sub_08093984 +sub_08093984: @ 0x08093984 + push {r4, r5, r6, lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xb] + ldr r2, _080939B4 @ =gUnk_0812291E + cmp r0, #0 + beq _08093992 + ldr r2, _080939B8 @ =gUnk_081228F8 +_08093992: + movs r5, #0 + adds r6, r1, #0 + adds r6, #0x76 + adds r4, r2, #0 +_0809399A: + movs r0, #0 + ldrsh r1, [r4, r0] + ldrh r0, [r6] + adds r1, r1, r0 + ldr r0, _080939BC @ =0x00004074 + movs r2, #1 + bl sub_0800015E + adds r4, #2 + adds r5, #1 + cmp r5, #0x12 + bls _0809399A + pop {r4, r5, r6, pc} + .align 2, 0 +_080939B4: .4byte gUnk_0812291E +_080939B8: .4byte gUnk_081228F8 +_080939BC: .4byte 0x00004074 + + thumb_func_start sub_080939C0 +sub_080939C0: @ 0x080939C0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xb] + movs r0, #3 + ands r0, r1 + adds r0, #7 + strb r0, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08093A14 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x76 + strh r1, [r0] + adds r0, r4, #0 + bl sub_08093A1C + adds r0, r4, #0 + movs r1, #0x7a + bl sub_0801D2B4 + pop {r4, r5, pc} + .align 2, 0 +_08093A14: .4byte gUnk_03000BF0 + + thumb_func_start nullsub_526 +nullsub_526: @ 0x08093A18 + bx lr + .align 2, 0 + + thumb_func_start sub_08093A1C +sub_08093A1C: @ 0x08093A1C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r2, r0, #0 + ldrb r1, [r2, #0xa] + cmp r1, #1 + beq _08093B0C + cmp r1, #1 + bgt _08093A34 + cmp r1, #0 + beq _08093A3C + b _08093C64 +_08093A34: + cmp r1, #3 + bne _08093A3A + b _08093C54 +_08093A3A: + b _08093C64 +_08093A3C: + ldr r0, _08093AF0 @ =0x00004024 + adds r7, r2, #0 + adds r7, #0x76 + ldrh r1, [r7] + adds r1, #0x3c + adds r4, r2, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + ldr r5, _08093AF4 @ =0x00004022 + ldrh r1, [r7] + adds r1, #0x3d + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x3e + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _08093AF8 @ =0x00004029 + mov r8, r0 + ldrh r1, [r7] + adds r1, #0x7c + ldrb r2, [r4] + bl sub_0800015E + ldr r6, _08093AFC @ =0x00004026 + ldrh r1, [r7] + adds r1, #0x7d + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x7e + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + adds r5, #0x1b + ldrh r1, [r7] + adds r1, #0x40 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x80 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _08093B00 @ =0x00004027 + ldrh r1, [r7] + adds r1, #0x41 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _08093B04 @ =0x00004023 + ldrh r1, [r7] + adds r1, #0x42 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _08093B08 @ =0x0000406D + ldrh r1, [r7] + adds r1, #0x43 + ldrb r2, [r4] + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x81 + ldrb r2, [r4] + mov r0, r8 + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x82 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + ldrh r1, [r7] + adds r1, #0x83 + b _08093B94 + .align 2, 0 +_08093AF0: .4byte 0x00004024 +_08093AF4: .4byte 0x00004022 +_08093AF8: .4byte 0x00004029 +_08093AFC: .4byte 0x00004026 +_08093B00: .4byte 0x00004027 +_08093B04: .4byte 0x00004023 +_08093B08: .4byte 0x0000406D +_08093B0C: + ldrb r0, [r2, #0xb] + ands r1, r0 + cmp r1, #0 + beq _08093BB4 + ldr r6, _08093BA0 @ =0x0000406D + movs r0, #0x76 + adds r0, r0, r2 + mov r8, r0 + ldrh r1, [r0] + subs r1, #0x81 + adds r4, r2, #0 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + ldr r5, _08093BA4 @ =0x00004022 + mov r2, r8 + ldrh r1, [r2] + subs r1, #0x41 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _08093BA8 @ =0x00004029 + mov r2, r8 + ldrh r1, [r2] + subs r1, #2 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _08093BAC @ =0x00004026 + mov r2, r8 + ldrh r1, [r2] + subs r1, #1 + ldrb r2, [r4] + bl sub_0800015E + mov r0, r8 + ldrh r1, [r0] + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2] + adds r1, #1 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + ldr r0, _08093BB0 @ =0x0000406E + mov r2, r8 + ldrh r1, [r2] + adds r1, #0x40 + ldrb r2, [r4] + bl sub_0800015E + mov r0, r8 + ldrh r1, [r0] + adds r1, #0x41 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2] + adds r1, #0x42 +_08093B94: + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + b _08093C64 + .align 2, 0 +_08093BA0: .4byte 0x0000406D +_08093BA4: .4byte 0x00004022 +_08093BA8: .4byte 0x00004029 +_08093BAC: .4byte 0x00004026 +_08093BB0: .4byte 0x0000406E +_08093BB4: + ldr r6, _08093C40 @ =0x0000406C + movs r0, #0x76 + adds r0, r0, r2 + mov r8, r0 + ldrh r1, [r0] + subs r1, #0x7f + adds r4, r2, #0 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + ldr r5, _08093C44 @ =0x00004022 + mov r2, r8 + ldrh r1, [r2] + subs r1, #0x3f + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + mov r0, r8 + ldrh r1, [r0] + subs r1, #1 + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2] + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _08093C48 @ =0x00004026 + mov r2, r8 + ldrh r1, [r2] + adds r1, #1 + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _08093C4C @ =0x0000402A + mov r2, r8 + ldrh r1, [r2] + adds r1, #2 + ldrb r2, [r4] + bl sub_0800015E + mov r0, r8 + ldrh r1, [r0] + adds r1, #0x3e + ldrb r2, [r4] + adds r0, r6, #0 + bl sub_0800015E + mov r2, r8 + ldrh r1, [r2] + adds r1, #0x3f + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _08093C50 @ =0x0000406F + mov r2, r8 + ldrh r1, [r2] + adds r1, #0x40 + ldrb r2, [r4] + bl sub_0800015E + b _08093C64 + .align 2, 0 +_08093C40: .4byte 0x0000406C +_08093C44: .4byte 0x00004022 +_08093C48: .4byte 0x00004026 +_08093C4C: .4byte 0x0000402A +_08093C50: .4byte 0x0000406F +_08093C54: + ldr r0, _08093C6C @ =0x00004022 + adds r1, r2, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_08093C64: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08093C6C: .4byte 0x00004022 + + thumb_func_start sub_08093C70 +sub_08093C70: @ 0x08093C70 + push {r4, r5, r6, lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x78 + ldrh r0, [r3] + cmp r0, #0 + beq _08093CE8 + ldr r0, _08093CE0 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + beq _08093D5C + movs r0, #0 + strh r0, [r3] + ldr r4, _08093CE4 @ =0x00004022 + adds r6, r2, #0 + adds r6, #0x76 + ldrh r1, [r6] + adds r1, #0x3f + adds r5, r2, #0 + adds r5, #0x38 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x40 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x41 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + adds r4, #4 + ldrh r1, [r6] + adds r1, #0x7f + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x80 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x81 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + b _08093D5C + .align 2, 0 +_08093CE0: .4byte gUnk_03003F80 +_08093CE4: .4byte 0x00004022 +_08093CE8: + ldr r0, _08093D60 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _08093D5C + adds r1, r2, #0 + adds r1, #0x7a + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08093D5C + ldrh r0, [r3] + adds r0, #1 + strh r0, [r3] + movs r0, #0x3c + strh r0, [r1] + ldr r5, _08093D64 @ =0x0000403D + adds r6, r2, #0 + adds r6, #0x76 + ldrh r1, [r6] + adds r1, #0x3f + adds r4, r2, #0 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x40 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _08093D68 @ =0x00004027 + ldrh r1, [r6] + adds r1, #0x41 + ldrb r2, [r4] + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x7f + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #0x80 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _08093D6C @ =0x00004029 + ldrh r1, [r6] + adds r1, #0x81 + ldrb r2, [r4] + bl sub_0800015E +_08093D5C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08093D60: .4byte gUnk_03003F80 +_08093D64: .4byte 0x0000403D +_08093D68: .4byte 0x00004027 +_08093D6C: .4byte 0x00004029 + + thumb_func_start sub_08093D70 +sub_08093D70: @ 0x08093D70 + push {lr} + ldr r2, _08093D84 @ =gUnk_08122944 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08093D84: .4byte gUnk_08122944 + + thumb_func_start sub_08093D88 +sub_08093D88: @ 0x08093D88 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r0, [r4, #0x36] + subs r0, #8 + strh r0, [r4, #0x36] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #0x20 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08093DAC + cmp r0, #1 + beq _08093DC4 + b _08093DDE +_08093DAC: + adds r0, r4, #0 + movs r1, #4 + bl sub_0805457C + cmp r0, #0 + bne _08093DBC + movs r0, #2 + strb r0, [r4, #0xc] +_08093DBC: + ldr r1, [r4, #0x54] + ldr r0, [r4, #0x20] + str r0, [r1, #0x20] + b _08093DDE +_08093DC4: + movs r0, #0 + movs r1, #0x5f + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08093DDE + movs r0, #5 + strb r0, [r1, #0xe] + adds r0, r4, #0 + bl sub_08093E10 +_08093DDE: + pop {r4, pc} + + thumb_func_start sub_08093DE0 +sub_08093DE0: @ 0x08093DE0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08093DF4 + movs r0, #2 + strb r0, [r2, #0xc] +_08093DF4: + ldrb r1, [r2, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08093E06 + ldr r1, [r2, #0x54] + ldrh r0, [r1, #0x32] + adds r0, #1 + strh r0, [r1, #0x32] +_08093E06: + pop {pc} + + thumb_func_start sub_08093E08 +sub_08093E08: @ 0x08093E08 + push {lr} + bl sub_0805E7BC + pop {pc} + + thumb_func_start sub_08093E10 +sub_08093E10: @ 0x08093E10 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + bl sub_0806FA24 + str r4, [r5, #0x50] + str r5, [r4, #0x54] + ldr r0, [r4, #0x20] + str r0, [r5, #0x20] + pop {r4, r5, pc} + + thumb_func_start sub_08093E24 +sub_08093E24: @ 0x08093E24 + push {lr} + ldr r2, _08093E38 @ =gUnk_0812295C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08093E38: .4byte gUnk_0812295C + + thumb_func_start sub_08093E3C +sub_08093E3C: @ 0x08093E3C + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #0 + bne _08093E6A + adds r0, r4, #0 + bl sub_08016A30 +_08093E6A: + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + ldr r1, _08093EA8 @ =gUnk_08122950 + adds r2, r0, r1 + ldrh r0, [r2] + cmp r0, #0 + beq _08093E90 + ldrb r1, [r4, #0xb] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _08093E90 + ldrh r0, [r2] + bl sub_08004488 +_08093E90: + ldrb r1, [r4, #0xb] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _08093EA6 + ldrb r0, [r4, #0x19] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4, #0x19] +_08093EA6: + pop {r4, pc} + .align 2, 0 +_08093EA8: .4byte gUnk_08122950 + + thumb_func_start sub_08093EAC +sub_08093EAC: @ 0x08093EAC + push {lr} + ldr r3, _08093EC8 @ =gUnk_08122964 + ldr r2, _08093ECC @ =gUnk_08122950 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldrb r1, [r1, #2] + lsrs r1, r1, #4 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08093EC8: .4byte gUnk_08122964 +_08093ECC: .4byte gUnk_08122950 + + thumb_func_start sub_08093ED0 +sub_08093ED0: @ 0x08093ED0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08093EEC + adds r0, r4, #0 + bl sub_0805E7BC +_08093EEC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08093EF0 +sub_08093EF0: @ 0x08093EF0 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xa] + cmp r4, #1 + beq _08093F40 + cmp r4, #1 + bgt _08093F04 + cmp r4, #0 + beq _08093F0A + b _08093FB0 +_08093F04: + cmp r4, #2 + beq _08093F98 + b _08093FB0 +_08093F0A: + ldrb r0, [r5, #0xd] + cmp r0, #0 + bne _08093FB0 + adds r0, r5, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08093FB0 + movs r0, #0x64 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08093F8E + ldr r0, [r5, #0x50] + str r0, [r1, #0x50] + adds r0, r5, #0 + bl sub_0806FA24 + b _08093F8E +_08093F40: + adds r0, r5, #0 + bl sub_08004274 + adds r1, r5, #0 + adds r1, #0x5a + ldrb r0, [r1] + ands r4, r0 + adds r6, r1, #0 + cmp r4, #0 + beq _08093F72 + movs r0, #0 + strb r0, [r6] + movs r0, #0x64 + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08093F72 + ldr r0, [r5, #0x50] + str r0, [r1, #0x50] + adds r0, r5, #0 + bl sub_0806FA24 +_08093F72: + ldrb r1, [r6] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08093FB0 + ldr r1, [r5, #0x50] + ldr r0, _08093F94 @ =gLinkEntity + cmp r1, r0 + bne _08093F8E + movs r0, #0x7a + bl sub_080A3268 + bl sub_08079D84 +_08093F8E: + bl sub_0805E780 + b _08093FB0 + .align 2, 0 +_08093F94: .4byte gLinkEntity +_08093F98: + adds r0, r5, #0 + bl sub_08004274 + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08093FB0 + bl sub_0805E780 +_08093FB0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08093FB4 +sub_08093FB4: @ 0x08093FB4 + push {lr} + ldr r2, _08093FC8 @ =gUnk_081229B4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08093FC8: .4byte gUnk_081229B4 + + thumb_func_start sub_08093FCC +sub_08093FCC: @ 0x08093FCC + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #2 + strb r1, [r2] + bl sub_08016A04 + pop {pc} + + thumb_func_start sub_08093FE0 +sub_08093FE0: @ 0x08093FE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08094064 + cmp r0, #0 + beq _08094062 + adds r3, r4, #0 + adds r3, #0x38 + ldrb r0, [r3] + cmp r0, #2 + bne _08094024 + ldr r0, _08094020 @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0x1e + bgt _08094002 + cmp r0, #0x1d + bge _08094062 +_08094002: + movs r0, #1 + strb r0, [r3] + adds r0, r4, #0 + bl sub_08016A04 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + b _08094060 + .align 2, 0 +_08094020: .4byte gLinkEntity +_08094024: + ldr r0, _0809404C @ =gLinkEntity + ldrb r2, [r0, #0xc] + cmp r2, #0x1e + bgt _08094050 + cmp r2, #0x1d + blt _08094050 + movs r0, #2 + strb r0, [r3] + adds r0, r4, #0 + bl sub_08016A04 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + b _08094060 + .align 2, 0 +_0809404C: .4byte gLinkEntity +_08094050: + adds r2, r0, #0 + adds r2, #0x38 + ldrb r1, [r2] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08094062 + movs r0, #1 +_08094060: + strb r0, [r2] +_08094062: + pop {r4, pc} + + thumb_func_start sub_08094064 +sub_08094064: @ 0x08094064 + push {lr} + movs r2, #1 + ldr r1, _08094080 @ =gLinkEntity + movs r3, #0x2e + ldrsh r1, [r1, r3] + movs r3, #0x2e + ldrsh r0, [r0, r3] + subs r1, r1, r0 + adds r1, #0x1c + cmp r1, #0x38 + bls _0809407C + movs r2, #0 +_0809407C: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_08094080: .4byte gLinkEntity + + thumb_func_start sub_08094084 +sub_08094084: @ 0x08094084 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + movs r1, #0x36 + ldrsh r0, [r5, r1] + cmp r0, #0 + beq _0809412A + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080940CA + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #5 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_080940CA: + ldrh r0, [r5, #0x2e] + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x32] + strh r0, [r4, #0x32] + ldrb r2, [r5, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x19] + movs r0, #0x36 + ldrsh r1, [r5, r0] + movs r0, #0x40 + rsbs r0, r0, #0 + cmp r1, r0 + ble _08094108 + movs r3, #0x80 + lsls r3, r3, #1 + movs r2, #0x80 + lsls r2, r2, #2 + b _0809411E +_08094108: + movs r1, #0x36 + ldrsh r0, [r5, r1] + adds r0, #0x40 + lsls r2, r0, #1 + movs r1, #0x80 + lsls r1, r1, #1 + subs r3, r1, r2 + lsls r0, r0, #2 + movs r1, #0x80 + lsls r1, r1, #2 + subs r2, r1, r0 +_0809411E: + adds r0, r4, #0 + adds r1, r3, #0 + movs r3, #0 + bl sub_0805EC9C + b _0809412E +_0809412A: + bl sub_0805E780 +_0809412E: + pop {r4, r5, pc} + + thumb_func_start sub_08094130 +sub_08094130: @ 0x08094130 + push {lr} + ldr r2, _08094144 @ =gUnk_081229BC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08094144: .4byte gUnk_081229BC + + thumb_func_start sub_08094148 +sub_08094148: @ 0x08094148 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _08094154 + b _08094254 +_08094154: + cmp r0, #1 + bgt _0809415E + cmp r0, #0 + beq _080941A8 + b _0809438A +_0809415E: + cmp r0, #2 + beq _08094164 + b _0809438A +_08094164: + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _08094180 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0xb4 + lsls r0, r0, #1 + str r0, [r4, #0x78] + ldr r0, _0809417C @ =gUnk_03000BF0 + str r4, [r0, #0x30] + b _08094198 + .align 2, 0 +_0809417C: .4byte gUnk_03000BF0 +_08094180: + ldr r0, [r4, #0x78] + subs r0, #1 + str r0, [r4, #0x78] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _08094198 + ldr r1, _080941A0 @ =gUnk_03000BF0 + ldr r0, _080941A4 @ =gLinkEntity + str r0, [r1, #0x30] + bl sub_0805E780 +_08094198: + bl sub_08078B48 + b _08094394 + .align 2, 0 +_080941A0: .4byte gUnk_03000BF0 +_080941A4: .4byte gLinkEntity +_080941A8: + ldr r1, _08094228 @ =gUnk_081229D0 + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #1] + strb r0, [r4, #0x15] + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #2] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #3] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r4, #0x32] + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r2, [r0] + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _080941F0 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_080941F0: + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + beq _08094200 + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_08094200: + ldrb r0, [r4, #0xb] + cmp r0, #3 + bhi _08094230 + bl sub_08000E50 + ldr r1, _0809422C @ =0x0001FFFF + ands r1, r0 + movs r0, #0xa0 + lsls r0, r0, #0xa + orrs r0, r1 + str r0, [r4, #0x20] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0x56 + bl sub_08004260 + b _0809438A + .align 2, 0 +_08094228: .4byte gUnk_081229D0 +_0809422C: .4byte 0x0001FFFF +_08094230: + movs r0, #0xa0 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + ldrb r1, [r4, #0x15] + orrs r0, r1 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0x57 + bl sub_08004260 + b _0809438A +_08094254: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08094272 + adds r0, r4, #0 + movs r1, #0x67 + movs r2, #1 + movs r3, #0x80 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _08094272 + ldr r0, [r4, #0x50] + str r0, [r1, #0x54] +_08094272: + ldrb r0, [r4, #0xb] + cmp r0, #0x80 + bne _0809427A + b _08094380 +_0809427A: + movs r2, #0 + movs r0, #0x4b + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x19] + subs r0, #0x58 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + movs r1, #0xe0 + lsls r1, r1, #7 + strh r1, [r4, #0x24] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0xb] + lsls r0, r0, #3 + ldr r1, _080942E8 @ =gUnk_081229F0 + adds r3, r0, r1 + movs r0, #0 + ldrsb r0, [r3, r0] + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + movs r0, #1 + ldrsb r0, [r3, r0] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrb r0, [r3, #2] + strb r0, [r4, #0xe] + ldrb r0, [r3, #3] + strb r0, [r4, #0xf] + movs r0, #0xce + str r0, [r4, #0x7c] + str r2, [r4, #0x74] + ldrb r1, [r3, #4] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080942EC + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0xff + lsls r0, r0, #8 + b _080942F4 + .align 2, 0 +_080942E8: .4byte gUnk_081229F0 +_080942EC: + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #0x80 + lsls r0, r0, #1 +_080942F4: + strh r0, [r1] + ldrb r1, [r3, #4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809430A + adds r1, r4, #0 + adds r1, #0x86 + movs r0, #0xff + lsls r0, r0, #8 + b _08094312 +_0809430A: + adds r1, r4, #0 + adds r1, #0x86 + movs r0, #0x80 + lsls r0, r0, #1 +_08094312: + strh r0, [r1] + adds r0, r4, #0 + bl sub_0806FBD8 + cmp r0, #0 + beq _0809438A + ldr r2, [r4, #0x48] + ldr r1, _0809437C @ =gUnk_080FD2E8 + ldrb r0, [r1] + strb r0, [r2] + ldr r2, [r4, #0x48] + ldrb r0, [r1, #1] + strb r0, [r2, #1] + ldr r2, [r4, #0x48] + ldrb r0, [r1, #2] + strb r0, [r2, #2] + ldr r2, [r4, #0x48] + ldrb r0, [r1, #3] + strb r0, [r2, #3] + ldr r2, [r4, #0x48] + ldrb r0, [r1, #4] + strb r0, [r2, #4] + ldr r2, [r4, #0x48] + ldrb r0, [r1, #5] + strb r0, [r2, #5] + ldr r2, [r4, #0x48] + ldrb r0, [r1, #6] + strb r0, [r2, #6] + ldr r2, [r4, #0x48] + ldrb r0, [r1, #7] + strb r0, [r2, #7] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r1, #4 + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + subs r1, #1 + movs r0, #0x7a + strb r0, [r1] + subs r1, #4 + movs r0, #1 + strb r0, [r1] + b _0809438A + .align 2, 0 +_0809437C: .4byte gUnk_080FD2E8 +_08094380: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0809438A: + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08094398 +_08094394: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08094398 +sub_08094398: @ 0x08094398 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080943A8 + cmp r0, #1 + beq _080943D8 + b _08094420 +_080943A8: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08094420 + ldrb r0, [r4, #0xb] + cmp r0, #3 + bhi _080943D2 + adds r0, r4, #0 + movs r1, #0xc + movs r2, #0 + bl CreateFX +_080943D2: + bl sub_0805E780 + b _08094420 +_080943D8: + ldrb r1, [r4, #0xb] + cmp r1, #0x80 + beq _0809440A + ldr r0, [r4, #0x7c] + subs r0, #1 + str r0, [r4, #0x7c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080943F6 + movs r0, #0x96 + lsls r0, r0, #2 + str r0, [r4, #0x7c] + movs r0, #2 + strb r0, [r4, #0xc] +_080943F6: + adds r0, r4, #0 + adds r0, #0x82 + ldrh r1, [r0] + adds r0, #4 + ldrh r2, [r0] + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + b _08094420 +_0809440A: + ldr r0, [r4, #0x54] + adds r0, #0x79 + ldrb r0, [r0] + ands r1, r0 + cmp r1, #0 + bne _0809441A + bl sub_0805E780 +_0809441A: + adds r0, r4, #0 + bl sub_08094660 +_08094420: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08094424 +sub_08094424: @ 0x08094424 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r3, r6, #0 + adds r3, #0x82 + movs r1, #0 + ldrsh r0, [r3, r1] + cmp r0, #0 + bge _08094452 + adds r1, r6, #0 + adds r1, #0x80 + movs r0, #0x24 + ldrsh r2, [r6, r0] + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] + movs r2, #0 + ldrsh r0, [r3, r2] + rsbs r0, r0, #0 + mov r8, r0 + adds r5, r1, #0 + b _08094466 +_08094452: + adds r0, r6, #0 + adds r0, #0x80 + movs r1, #0x24 + ldrsh r2, [r6, r1] + ldr r1, [r0] + subs r1, r1, r2 + str r1, [r0] + ldrh r3, [r3] + mov r8, r3 + adds r5, r0, #0 +_08094466: + adds r0, r6, #0 + adds r0, #0x86 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r4, r0, #0 + cmp r1, #0 + bge _0809448C + adds r1, r6, #0 + adds r1, #0x84 + movs r0, #0x24 + ldrsh r2, [r6, r0] + ldr r0, [r1] + adds r0, r0, r2 + str r0, [r1] + movs r2, #0 + ldrsh r0, [r4, r2] + rsbs r7, r0, #0 + adds r3, r1, #0 + b _0809449E +_0809448C: + adds r0, r6, #0 + adds r0, #0x84 + movs r1, #0x24 + ldrsh r2, [r6, r1] + ldr r1, [r0] + subs r1, r1, r2 + str r1, [r0] + ldrh r7, [r4] + adds r3, r0, #0 +_0809449E: + ldrh r2, [r6, #0x24] + movs r0, #0x24 + ldrsh r1, [r6, r0] + movs r0, #0x80 + lsls r0, r0, #6 + cmp r1, r0 + ble _080944B2 + ldr r1, _080944D0 @ =0xFFFFFF00 + adds r0, r2, r1 + strh r0, [r6, #0x24] +_080944B2: + ldr r0, [r6, #0x7c] + subs r0, #1 + str r0, [r6, #0x7c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080944D4 + movs r0, #0 + strh r0, [r5] + strh r0, [r3] + movs r0, #3 + strb r0, [r6, #0xc] + movs r0, #0x78 + str r0, [r6, #0x7c] + b _08094500 + .align 2, 0 +_080944D0: .4byte 0xFFFFFF00 +_080944D4: + adds r5, r6, #0 + adds r5, #0x82 + movs r2, #0 + ldrsh r1, [r5, r2] + ldrb r3, [r6, #0xe] + adds r0, r6, #0 + movs r2, #0x20 + bl sub_0806FCF4 + movs r0, #0 + ldrsh r1, [r4, r0] + ldrb r3, [r6, #0xf] + adds r0, r6, #0 + movs r2, #0x20 + bl sub_0806FCF4 + ldrh r1, [r5] + ldrh r2, [r4] + adds r0, r6, #0 + movs r3, #0 + bl sub_0805EC9C +_08094500: + ldr r5, [r6, #0x48] + cmp r5, #0 + beq _08094538 + movs r4, #0x80 + lsls r4, r4, #9 + adds r0, r4, #0 + mov r1, r8 + bl __divsi3 + lsrs r0, r0, #3 + strb r0, [r5, #6] + ldr r5, [r6, #0x48] + adds r0, r4, #0 + adds r1, r7, #0 + bl __divsi3 + lsrs r0, r0, #3 + strb r0, [r5, #7] + ldr r1, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x62 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x63 + ldrb r0, [r0] + strb r0, [r1, #1] +_08094538: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_08094540 +sub_08094540: @ 0x08094540 + push {lr} + adds r3, r0, #0 + ldr r0, [r3, #0x7c] + subs r0, #1 + str r0, [r3, #0x7c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0809455A + movs r0, #4 + strb r0, [r3, #0xc] + movs r0, #2 + str r0, [r3, #0x7c] +_0809455A: + adds r0, r3, #0 + adds r0, #0x82 + ldrh r1, [r0] + adds r0, #4 + ldrh r2, [r0] + adds r0, r3, #0 + movs r3, #0 + bl sub_0805EC9C + pop {pc} + .align 2, 0 + + thumb_func_start sub_08094570 +sub_08094570: @ 0x08094570 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + adds r2, r6, #0 + adds r2, #0x82 + ldrh r1, [r2] + lsls r3, r1, #0x10 + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _08094590 + asrs r3, r3, #0x10 + ldr r0, _080945B0 @ =0xFFFFFF00 + cmp r3, r0 + bne _080945BA +_08094590: + ldr r1, [r6, #0x7c] + cmp r1, #0 + bne _080945B4 + ldr r0, [r6, #0x50] + adds r0, #0x7c + strh r1, [r0] + ldr r0, [r6, #0x50] + adds r0, #0x79 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _08094622 + bl sub_0805E780 + b _08094622 + .align 2, 0 +_080945B0: .4byte 0xFFFFFF00 +_080945B4: + subs r0, r1, #1 + str r0, [r6, #0x7c] + b _08094622 +_080945BA: + cmp r3, #0 + bge _080945CC + subs r0, r1, #1 + strh r0, [r2] + movs r1, #0 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + mov r8, r0 + b _080945D4 +_080945CC: + adds r0, r1, #1 + strh r0, [r2] + ldrh r2, [r2] + mov r8, r2 +_080945D4: + adds r0, r6, #0 + adds r0, #0x86 + ldrh r2, [r0] + movs r3, #0 + ldrsh r1, [r0, r3] + adds r4, r0, #0 + cmp r1, #0 + bge _080945F0 + subs r0, r2, #1 + strh r0, [r4] + movs r1, #0 + ldrsh r0, [r4, r1] + rsbs r7, r0, #0 + b _080945F6 +_080945F0: + adds r0, r2, #1 + strh r0, [r4] + ldrh r7, [r4] +_080945F6: + adds r5, r6, #0 + adds r5, #0x82 + movs r3, #0 + ldrsh r1, [r5, r3] + ldrb r3, [r6, #0xe] + adds r0, r6, #0 + movs r2, #0x20 + bl sub_0806FCF4 + movs r0, #0 + ldrsh r1, [r4, r0] + ldrb r3, [r6, #0xf] + adds r0, r6, #0 + movs r2, #0x20 + bl sub_0806FCF4 + ldrh r1, [r5] + ldrh r2, [r4] + adds r0, r6, #0 + movs r3, #0 + bl sub_0805EC9C +_08094622: + ldr r5, [r6, #0x48] + cmp r5, #0 + beq _0809465A + movs r4, #0x80 + lsls r4, r4, #9 + adds r0, r4, #0 + mov r1, r8 + bl __divsi3 + lsrs r0, r0, #3 + strb r0, [r5, #6] + ldr r5, [r6, #0x48] + adds r0, r4, #0 + adds r1, r7, #0 + bl __divsi3 + lsrs r0, r0, #3 + strb r0, [r5, #7] + ldr r1, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x62 + ldrb r0, [r0] + strb r0, [r1] + ldr r1, [r6, #0x48] + adds r0, r6, #0 + adds r0, #0x63 + ldrb r0, [r0] + strb r0, [r1, #1] +_0809465A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08094660 +sub_08094660: @ 0x08094660 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldr r0, [r6, #0x50] + adds r0, #0x62 + movs r7, #0 + ldrsb r7, [r0, r7] + cmp r7, #0 + bge _08094678 + rsbs r7, r7, #0 +_08094678: + lsls r7, r7, #1 + adds r0, r7, #0 + cmp r7, #0 + bge _08094682 + adds r0, #0xf +_08094682: + asrs r1, r0, #4 + ldr r0, [r6, #0x74] + cmp r0, r1 + bhs _08094700 + str r1, [r6, #0x74] + movs r1, #0x2e + ldrsh r0, [r6, r1] + subs r0, r0, r7 + adds r4, r0, #0 + subs r4, #0x40 + movs r1, #0x32 + ldrsh r0, [r6, r1] + subs r0, r0, r7 + adds r5, r0, #0 + subs r5, #0x40 + movs r0, #0x10 + mov sb, r0 + str r0, [r6, #0x78] + movs r1, #0 + mov r8, r1 + str r1, [r6, #0x7c] + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08094708 + mov r0, r8 + str r0, [r6, #0x78] + mov r1, sb + str r1, [r6, #0x7c] + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08094708 + movs r1, #0x2e + ldrsh r0, [r6, r1] + adds r0, r0, r7 + adds r4, r0, #0 + adds r4, #0x30 + movs r1, #0x32 + ldrsh r0, [r6, r1] + adds r0, r0, r7 + adds r5, r0, #0 + adds r5, #0x30 + movs r7, #0x10 + rsbs r7, r7, #0 + str r7, [r6, #0x78] + mov r0, r8 + str r0, [r6, #0x7c] + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08094708 + mov r1, r8 + str r1, [r6, #0x78] + str r7, [r6, #0x7c] + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_08094708 +_08094700: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08094708 +sub_08094708: @ 0x08094708 + push {r4, r5, r6, r7, lr} + sub sp, #8 + adds r7, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + ldr r0, [r7, #0x74] + lsls r0, r0, #1 + adds r4, r0, #0 + adds r4, #8 + cmp r4, #0 + beq _08094752 + ldr r3, _08094758 @ =gUnk_03000BF0 + movs r2, #0x3f +_08094722: + ldrh r0, [r3, #6] + subs r0, r6, r0 + lsrs r0, r0, #4 + ands r0, r2 + ldrh r1, [r3, #8] + subs r1, r5, r1 + lsrs r1, r1, #4 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #2 + str r2, [sp] + str r3, [sp, #4] + bl sub_0807BA8C + ldr r0, [r7, #0x78] + adds r6, r6, r0 + ldr r0, [r7, #0x7c] + adds r5, r5, r0 + subs r4, #1 + ldr r2, [sp] + ldr r3, [sp, #4] + cmp r4, #0 + bne _08094722 +_08094752: + add sp, #8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08094758: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809475C +sub_0809475C: @ 0x0809475C + push {lr} + ldr r2, _08094770 @ =gUnk_08122A10 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08094770: .4byte gUnk_08122A10 + + thumb_func_start sub_08094774 +sub_08094774: @ 0x08094774 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0xa] + cmp r0, #8 + bls _08094784 + b _080948C6 +_08094784: + lsls r0, r0, #2 + ldr r1, _08094790 @ =_08094794 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08094790: .4byte _08094794 +_08094794: @ jump table + .4byte _080947B8 @ case 0 + .4byte _08094824 @ case 1 + .4byte _080948B0 @ case 2 + .4byte _080948C6 @ case 3 + .4byte _080948C6 @ case 4 + .4byte _080948C6 @ case 5 + .4byte _080948C6 @ case 6 + .4byte _080948C6 @ case 7 + .4byte _080948C6 @ case 8 +_080947B8: + adds r0, r5, #0 + movs r1, #0xb + movs r2, #0 + bl CreateFX + adds r6, r0, #0 + str r6, [r5, #0x54] + cmp r6, #0 + beq _080947EE + ldr r0, _0809480C @ =gLinkEntity + ldr r4, _08094810 @ =gUnk_08122A18 + ldrb r3, [r0, #0x14] + movs r1, #6 + ands r1, r3 + adds r1, r1, r4 + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + movs r1, #1 + orrs r1, r3 + adds r1, r1, r4 + movs r3, #0 + ldrsb r3, [r1, r3] + lsls r3, r3, #0x10 + adds r1, r6, #0 + bl sub_0806FA48 +_080947EE: + ldr r0, [r5, #0x54] + adds r1, r5, #0 + bl sub_0806FA24 + ldr r1, _08094814 @ =0x00004032 + ldr r2, _08094818 @ =0x00004033 + adds r0, r5, #0 + bl sub_08094980 + ldr r1, _0809481C @ =0x00004061 + ldr r2, _08094820 @ =0x00004022 + adds r0, r5, #0 + bl sub_08094980 + b _080948C6 + .align 2, 0 +_0809480C: .4byte gLinkEntity +_08094810: .4byte gUnk_08122A18 +_08094814: .4byte 0x00004032 +_08094818: .4byte 0x00004033 +_0809481C: .4byte 0x00004061 +_08094820: .4byte 0x00004022 +_08094824: + adds r0, r5, #0 + movs r1, #0x2b + movs r2, #0 + bl CreateFX + adds r6, r0, #0 + str r6, [r5, #0x54] + cmp r6, #0 + beq _0809485A + ldr r0, _08094898 @ =gLinkEntity + ldr r4, _0809489C @ =gUnk_08122A18 + ldrb r3, [r0, #0x14] + movs r1, #6 + ands r1, r3 + adds r1, r1, r4 + movs r2, #0 + ldrsb r2, [r1, r2] + lsls r2, r2, #0x10 + movs r1, #1 + orrs r1, r3 + adds r1, r1, r4 + movs r3, #0 + ldrsb r3, [r1, r3] + lsls r3, r3, #0x10 + adds r1, r6, #0 + bl sub_0806FA48 +_0809485A: + ldrb r4, [r5, #0xb] + cmp r4, #0 + bne _080948C6 + ldr r0, [r5, #0x54] + adds r1, r5, #0 + bl sub_0806FA24 + strb r4, [r5, #0xe] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r1, [r5, #0x19] + movs r0, #0x3f + ands r0, r1 + strb r0, [r5, #0x19] + ldr r1, _080948A0 @ =0x0000403B + ldr r2, _080948A4 @ =0x0000403C + adds r0, r5, #0 + bl sub_08094980 + ldr r1, _080948A8 @ =0x00004061 + ldr r2, _080948AC @ =0x00004022 + adds r0, r5, #0 + bl sub_08094980 + b _080948CA + .align 2, 0 +_08094898: .4byte gLinkEntity +_0809489C: .4byte gUnk_08122A18 +_080948A0: .4byte 0x0000403B +_080948A4: .4byte 0x0000403C +_080948A8: .4byte 0x00004061 +_080948AC: .4byte 0x00004022 +_080948B0: + ldr r0, _080948CC @ =gLinkEntity + movs r1, #0x60 + movs r2, #0 + bl sub_080A2A20 + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _080948C6 + movs r0, #1 + strb r0, [r1, #0xe] +_080948C6: + bl sub_0805E780 +_080948CA: + pop {r4, r5, r6, pc} + .align 2, 0 +_080948CC: .4byte gLinkEntity + + thumb_func_start sub_080948D0 +sub_080948D0: @ 0x080948D0 + push {lr} + ldr r2, _080948E4 @ =gUnk_08122A20 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080948E4: .4byte gUnk_08122A20 + + thumb_func_start sub_080948E8 +sub_080948E8: @ 0x080948E8 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xe] + cmp r1, #0x3b + bhi _08094978 + ldr r0, [r4, #0x34] + ldr r2, _0809495C @ =0xFFFFC000 + adds r0, r0, r2 + str r0, [r4, #0x34] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08094970 + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r3, r0, #0 + str r3, [r4, #0x54] + cmp r3, #0 + beq _08094970 + ldrb r1, [r4, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r2, [r3, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x19] + ldr r2, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r2, #0x29 + lsrs r1, r1, #0x1d + ldrb r3, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + strb r0, [r2] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08094960 + bl sub_08000E50 + ldr r2, [r4, #0x54] + movs r1, #0xf + ands r0, r1 + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + b _08094970 + .align 2, 0 +_0809495C: .4byte 0xFFFFC000 +_08094960: + bl sub_08000E50 + ldr r2, [r4, #0x54] + movs r1, #0xf + ands r0, r1 + ldrh r1, [r2, #0x2e] + subs r1, r1, r0 + strh r1, [r2, #0x2e] +_08094970: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + b _0809497C +_08094978: + bl sub_0805E780 +_0809497C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08094980 +sub_08094980: @ 0x08094980 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + adds r6, r0, #0 + str r1, [sp] + str r2, [sp, #4] + movs r0, #0 + mov r8, r0 + ldr r1, _08094A04 @ =gUnk_03000BF0 + mov sl, r1 + movs r2, #0x3f + mov sb, r2 + ldr r7, _08094A08 @ =gUnk_08122A28 +_080949A0: + movs r4, #0 + ldrsb r4, [r7, r4] + movs r5, #1 + ldrsb r5, [r7, r5] + adds r0, r6, #0 + adds r1, r4, #0 + adds r2, r5, #0 + bl sub_0800029C + ldr r3, [sp] + cmp r3, r0 + bne _080949EC + movs r0, #0x2e + ldrsh r1, [r6, r0] + adds r1, r1, r4 + mov r2, sl + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + mov r3, sb + ands r1, r3 + movs r2, #0x32 + ldrsh r0, [r6, r2] + adds r0, r0, r5 + mov r3, sl + ldrh r2, [r3, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + mov r2, sb + ands r0, r2 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r6, #0 + adds r0, #0x38 + ldrb r2, [r0] + ldr r0, [sp, #4] + bl sub_0800015E +_080949EC: + adds r7, #2 + movs r3, #2 + add r8, r3 + mov r0, r8 + cmp r0, #9 + bls _080949A0 + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08094A04: .4byte gUnk_03000BF0 +_08094A08: .4byte gUnk_08122A28 + + thumb_func_start sub_08094A0C +sub_08094A0C: @ 0x08094A0C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0x10] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _08094A3E + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _08094A34 + movs r0, #1 + strb r0, [r2, #0xc] + ldr r0, _08094A30 @ =gUnk_080FD170 + str r0, [r2, #0x48] + adds r0, r2, #0 + bl sub_0807DD50 + b _08094A42 + .align 2, 0 +_08094A30: .4byte gUnk_080FD170 +_08094A34: + adds r0, r2, #0 + movs r1, #0 + bl sub_0807DD94 + b _08094A42 +_08094A3E: + movs r0, #1 + strb r0, [r2, #0xc] +_08094A42: + pop {pc} + + thumb_func_start sub_08094A44 +sub_08094A44: @ 0x08094A44 + push {lr} + ldr r2, _08094A58 @ =gUnk_08122A34 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08094A58: .4byte gUnk_08122A34 + + thumb_func_start sub_08094A5C +sub_08094A5C: @ 0x08094A5C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08094A78 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 +_08094A78: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08094A90 +sub_08094A90: @ 0x08094A90 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08094ACE + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + ldr r1, _08094AE4 @ =gUnk_08114F30 + ldrb r2, [r4, #0x19] + lsrs r0, r2, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0807DD64 +_08094ACE: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08094AE4: .4byte gUnk_08114F30 + + thumb_func_start sub_08094AE8 +sub_08094AE8: @ 0x08094AE8 + push {r4, r5, lr} + adds r5, r1, #0 + movs r0, #0x6a + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08094B08 + ldr r1, [r5, #4] + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08094B08: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08094B0C +sub_08094B0C: @ 0x08094B0C + push {lr} + adds r2, r0, #0 + ldrh r0, [r2, #0x36] + subs r0, #1 + movs r3, #0 + strh r0, [r2, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x20 + rsbs r1, r1, #0 + cmp r0, r1 + bgt _08094B30 + ldr r0, _08094B2C @ =0x0000FFE0 + strh r0, [r2, #0x36] + b _08094B34 + .align 2, 0 +_08094B2C: .4byte 0x0000FFE0 +_08094B30: + ldr r0, _08094B38 @ =gUnk_02033280 + strb r3, [r0, #6] +_08094B34: + pop {pc} + .align 2, 0 +_08094B38: .4byte gUnk_02033280 + + thumb_func_start sub_08094B3C +sub_08094B3C: @ 0x08094B3C + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x34] + movs r1, #0x80 + lsls r1, r1, #8 + adds r0, r0, r1 + str r0, [r2, #0x34] + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #0xd + rsbs r0, r0, #0 + cmp r1, r0 + blt _08094B60 + ldr r0, _08094B5C @ =0x0000FFF3 + strh r0, [r2, #0x36] + b _08094B66 + .align 2, 0 +_08094B5C: .4byte 0x0000FFF3 +_08094B60: + ldr r1, _08094B68 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_08094B66: + pop {pc} + .align 2, 0 +_08094B68: .4byte gUnk_02033280 + + thumb_func_start sub_08094B6C +sub_08094B6C: @ 0x08094B6C + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x18 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_08094B80 +sub_08094B80: @ 0x08094B80 + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x10 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_08094B94 +sub_08094B94: @ 0x08094B94 + push {r4, lr} + movs r0, #0x6a + movs r1, #0x22 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08094BD2 + ldr r0, _08094BD4 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, _08094BD8 @ =0x0000FFD0 + strh r0, [r4, #0x36] + ldr r1, _08094BDC @ =gUnk_0800AEDC + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] + adds r0, r4, #0 + bl sub_080A29BC + ldrh r0, [r4, #0x36] + adds r0, #0x10 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_08094BD2: + pop {r4, pc} + .align 2, 0 +_08094BD4: .4byte gLinkEntity +_08094BD8: .4byte 0x0000FFD0 +_08094BDC: .4byte gUnk_0800AEDC + + thumb_func_start sub_08094BE0 +sub_08094BE0: @ 0x08094BE0 + push {r4, lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + movs r0, #6 + movs r1, #0x6a + movs r2, #6 + movs r3, #0x22 + bl sub_0805EB2C + adds r4, r0, #0 + cmp r4, #0 + beq _08094C22 + ldr r0, _08094C28 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, _08094C2C @ =0x0000FFF4 + strh r0, [r4, #0x36] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_08094C22: + add sp, #4 + pop {r4, pc} + .align 2, 0 +_08094C28: .4byte gLinkEntity +_08094C2C: .4byte 0x0000FFF4 + + thumb_func_start sub_08094C30 +sub_08094C30: @ 0x08094C30 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + cmp r5, #0 + beq _08094C40 + ldr r0, [r5, #4] + cmp r0, #0 + bne _08094C44 +_08094C40: + bl sub_0805E780 +_08094C44: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08094C74 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + ldr r1, _08094C84 @ =gUnk_08114F30 + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC +_08094C74: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 +_08094C84: .4byte gUnk_08114F30 + + thumb_func_start sub_08094C88 +sub_08094C88: @ 0x08094C88 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xc] + cmp r1, #0 + beq _08094CA0 + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08094CCC + bl sub_0805E780 + b _08094CDA +_08094CA0: + adds r0, r1, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r0, r5, #0 + movs r1, #3 + bl sub_0805E3A0 + ldrb r0, [r5, #0xb] + cmp r0, #0x43 + bgt _08094CCC + cmp r0, #0x40 + blt _08094CCC + adds r0, r5, #0 + adds r1, r5, #0 + bl sub_0806FAD8 +_08094CCC: + ldrb r4, [r5, #0xa] + ldrb r0, [r5, #0xb] + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] +_08094CDA: + pop {r4, r5, pc} + + thumb_func_start sub_08094CDC +sub_08094CDC: @ 0x08094CDC + push {lr} + movs r0, #0x6a + movs r1, #3 + movs r2, #0x62 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08094D0A + ldr r1, _08094D0C @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0xe0 + strh r0, [r2, #0x2e] + movs r3, #0x96 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x32] + movs r0, #0xa2 + lsls r0, r0, #1 + bl sub_080A3268 +_08094D0A: + pop {pc} + .align 2, 0 +_08094D0C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08094D10 +sub_08094D10: @ 0x08094D10 + push {lr} + sub sp, #4 + movs r0, #0x62 + str r0, [sp] + movs r0, #6 + movs r1, #0x6a + movs r2, #6 + movs r3, #3 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _08094D2E + movs r0, #0xff + strb r0, [r1, #0xc] +_08094D2E: + add sp, #4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08094D34 +sub_08094D34: @ 0x08094D34 + push {lr} + movs r0, #0x6a + movs r1, #0x15 + movs r2, #0xd + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08094D68 + ldr r1, _08094D6C @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #1 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + movs r3, #0x96 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x32] + movs r0, #0xa2 + lsls r0, r0, #1 + bl sub_080A3268 +_08094D68: + pop {pc} + .align 2, 0 +_08094D6C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08094D70 +sub_08094D70: @ 0x08094D70 + push {lr} + sub sp, #4 + movs r0, #0xd + str r0, [sp] + movs r0, #6 + movs r1, #0x6a + movs r2, #6 + movs r3, #0x15 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _08094D8E + movs r0, #0xff + strb r0, [r1, #0xc] +_08094D8E: + add sp, #4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08094D94 +sub_08094D94: @ 0x08094D94 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #0 + beq _08094DAC + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08094DCE + bl sub_0805E780 + b _08094DD4 +_08094DAC: + adds r0, r1, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_08094DCE: + adds r0, r4, #0 + bl sub_080042B8 +_08094DD4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08094DD8 +sub_08094DD8: @ 0x08094DD8 + push {lr} + movs r0, #0x6a + movs r1, #4 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _08094E06 + ldr r1, _08094E08 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0xf0 + strh r0, [r2, #0x2e] + movs r3, #0x96 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x32] + movs r0, #0xa2 + lsls r0, r0, #1 + bl sub_080A3268 +_08094E06: + pop {pc} + .align 2, 0 +_08094E08: .4byte gUnk_03000BF0 + + thumb_func_start sub_08094E0C +sub_08094E0C: @ 0x08094E0C + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + movs r0, #6 + movs r1, #0x6a + movs r2, #6 + movs r3, #4 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _08094E2A + movs r0, #0xff + strb r0, [r1, #0xc] +_08094E2A: + add sp, #4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08094E30 +sub_08094E30: @ 0x08094E30 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08094E88 + ldr r0, _08094E80 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + beq _08094E48 + b _08094F94 +_08094E48: + movs r0, #0x6a + movs r1, #5 + movs r2, #1 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + bne _08094E5A + b _08094F94 +_08094E5A: + bl sub_08000E50 + ldr r4, _08094E84 @ =gUnk_03000BF0 + movs r1, #0xf0 + bl __modsi3 + ldrh r1, [r4, #0xa] + adds r1, r1, r0 + strh r1, [r5, #0x2e] + bl sub_08000E50 + movs r1, #0xa0 + bl __modsi3 + ldrh r1, [r4, #0xc] + adds r1, r1, r0 + strh r1, [r5, #0x32] + b _08094F94 + .align 2, 0 +_08094E80: .4byte gUnk_030010A0 +_08094E84: .4byte gUnk_03000BF0 +_08094E88: + cmp r0, #1 + bne _08094F44 + ldrb r1, [r4, #0xc] + cmp r1, #1 + beq _08094ED4 + cmp r1, #1 + bgt _08094E9C + cmp r1, #0 + beq _08094EA6 + b _08094F94 +_08094E9C: + cmp r1, #2 + beq _08094F08 + cmp r1, #3 + beq _08094F22 + b _08094F94 +_08094EA6: + strb r0, [r4, #0xc] + ldr r0, _08094ED0 @ =0xFF600000 + str r0, [r4, #0x34] + str r1, [r4, #0x20] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080002B8 + cmp r0, #0xd + bne _08094F94 + movs r0, #3 + strb r0, [r4, #0xc] + b _08094F94 + .align 2, 0 +_08094ED0: .4byte 0xFF600000 +_08094ED4: + ldr r1, [r4, #0x34] + ldr r0, [r4, #0x20] + subs r1, r1, r0 + str r1, [r4, #0x34] + ldr r2, _08094F04 @ =0xFFFFE000 + adds r0, r0, r2 + str r0, [r4, #0x20] + cmp r1, #0 + ble _08094F94 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + str r1, [r4, #0x34] + str r1, [r4, #0x20] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + movs r0, #0xbf + lsls r0, r0, #1 + bl sub_08004488 + b _08094F94 + .align 2, 0 +_08094F04: .4byte 0xFFFFE000 +_08094F08: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08094F94 + bl sub_0805E780 + b _08094F94 +_08094F22: + ldr r0, [r4, #0x34] + ldr r1, [r4, #0x20] + subs r0, r0, r1 + str r0, [r4, #0x34] + ldr r0, _08094F40 @ =0xFFFFE000 + adds r1, r1, r0 + str r1, [r4, #0x20] + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + bne _08094F94 + bl sub_0805E780 + b _08094F94 + .align 2, 0 +_08094F40: .4byte 0xFFFFE000 +_08094F44: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08094F94 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xe] + cmp r0, #1 + beq _08094F68 + cmp r0, #1 + bgt _08094F5E + cmp r0, #0 + beq _08094F7A + b _08094F94 +_08094F5E: + cmp r0, #2 + beq _08094F72 + cmp r0, #3 + beq _08094F84 + b _08094F94 +_08094F68: + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _08094F94 +_08094F72: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_08094F7A: + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _08094F94 +_08094F84: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 +_08094F94: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08094F98 +sub_08094F98: @ 0x08094F98 + push {lr} + movs r0, #0x6a + movs r1, #5 + movs r2, #0 + bl sub_080A2960 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08094FA8 +sub_08094FA8: @ 0x08094FA8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bhi _08095086 + lsls r0, r0, #2 + ldr r1, _08094FBC @ =_08094FC0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08094FBC: .4byte _08094FC0 +_08094FC0: @ jump table + .4byte _08094FD4 @ case 0 + .4byte _08094FF0 @ case 1 + .4byte _08095024 @ case 2 + .4byte _08095040 @ case 3 + .4byte _08095070 @ case 4 +_08094FD4: + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080787B4 + b _08095086 +_08094FF0: + adds r1, r4, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _08095086 + movs r0, #0 + strb r0, [r1] + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080788E0 + ldr r0, _08095020 @ =gUnk_03003F80 + movs r1, #0xc + strb r1, [r0, #0xc] + adds r0, #0x38 + movs r1, #0x36 + strb r1, [r0] + movs r0, #2 + bl sub_08078A90 + b _08095086 + .align 2, 0 +_08095020: .4byte gUnk_03003F80 +_08095024: + movs r0, #0x36 + bl sub_0807CA84 + cmp r0, #2 + bne _08095086 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08095086 +_08095040: + ldr r0, _0809506C @ =gLinkEntity + ldrb r0, [r0, #0xc] + cmp r0, #0xc + beq _08095086 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x5b + bl GetProgressFlag + cmp r0, #0 + bne _08095086 + movs r0, #0x1c + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 + movs r0, #0x5b + bl sub_0807CD04 + movs r0, #0x3c + strb r0, [r4, #0xe] + b _08095086 + .align 2, 0 +_0809506C: .4byte gLinkEntity +_08095070: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095086 + movs r0, #5 + strb r0, [r4, #0xc] + movs r0, #1 + bl sub_08078A90 +_08095086: + pop {r4, pc} + + thumb_func_start sub_08095088 +sub_08095088: @ 0x08095088 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #1 + beq _080950C8 + cmp r0, #1 + bgt _0809509C + cmp r0, #0 + beq _080950A2 + b _0809510A +_0809509C: + cmp r0, #2 + beq _080950F0 + b _0809510A +_080950A2: + movs r0, #0x5b + bl sub_0807CA84 + cmp r0, #0 + beq _080950B0 + bl sub_0805E780 +_080950B0: + movs r0, #1 + strb r0, [r5, #0xc] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + bl sub_080787B4 + b _0809510A +_080950C8: + adds r1, r5, #0 + adds r1, #0x39 + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + beq _0809510A + movs r0, #0 + strb r0, [r1] + movs r0, #2 + strb r0, [r5, #0xc] + adds r0, r5, #0 + bl sub_080788E0 + ldr r0, _080950EC @ =0x00001F1F + movs r1, #0 + bl sub_08078AA8 + b _0809510A + .align 2, 0 +_080950EC: .4byte 0x00001F1F +_080950F0: + ldr r0, _0809511C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0809510A + movs r0, #0x5b + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 + bl sub_0805E780 +_0809510A: + ldrb r4, [r5, #0xa] + movs r0, #0x5b + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] + pop {r4, r5, pc} + .align 2, 0 +_0809511C: .4byte gUnk_02000050 + + thumb_func_start sub_08095120 +sub_08095120: @ 0x08095120 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809514C + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAD8 + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC +_0809514C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095164 +sub_08095164: @ 0x08095164 + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + movs r0, #6 + movs r1, #0x6a + movs r2, #6 + movs r3, #8 + bl sub_0805EB2C + cmp r0, #0 + beq _08095182 + movs r1, #3 + bl sub_080042AC +_08095182: + add sp, #4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08095188 +sub_08095188: @ 0x08095188 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080951B4 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAD8 + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_080951B4: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + pop {r4, pc} + + thumb_func_start sub_080951C4 +sub_080951C4: @ 0x080951C4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080951E8 + adds r0, #1 + strb r0, [r4, #0xc] + movs r1, #0 + ldr r0, _08095240 @ =0x0000FFF0 + strh r0, [r4, #0x36] + strb r1, [r4, #0xe] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 +_080951E8: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08095218 + str r0, [r4, #0x34] + str r0, [r4, #0x50] + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08095218 + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0xe6 + bl sub_080A3268 +_08095218: + ldr r3, [r4, #0x50] + cmp r3, #0 + beq _0809523C + ldrb r1, [r3, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrh r0, [r3, #0x2e] + adds r0, #0x10 + strh r0, [r4, #0x2e] + ldrh r0, [r3, #0x32] + subs r0, #0x10 + strh r0, [r4, #0x32] +_0809523C: + pop {r4, pc} + .align 2, 0 +_08095240: .4byte 0x0000FFF0 + + thumb_func_start sub_08095244 +sub_08095244: @ 0x08095244 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _0809527C + movs r0, #0x6a + movs r1, #0xa + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809527C + str r5, [r4, #0x50] + movs r2, #0x80 + lsls r2, r2, #0xd + ldr r3, _08095280 @ =0xFFF00000 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + ldr r1, _08095284 @ =gUnk_0801183C + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_0809527C: + pop {r4, r5, pc} + .align 2, 0 +_08095280: .4byte 0xFFF00000 +_08095284: .4byte gUnk_0801183C + + thumb_func_start sub_08095288 +sub_08095288: @ 0x08095288 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r1, r0, #0 + cmp r1, #0 + bne _080952AA + adds r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_080952AA: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _080952F0 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bhi _080952D4 + movs r0, #0 + strb r0, [r4, #0xd] + movs r2, #0x80 + lsls r2, r2, #1 + movs r3, #0xc0 + lsls r3, r3, #8 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C + b _080952F0 +_080952D4: + movs r2, #0x80 + lsls r2, r2, #1 + ldrb r3, [r4, #0xe] + lsls r3, r3, #8 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C + ldrb r0, [r4, #0xe] + adds r0, #0xa + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0806F69C +_080952F0: + ldr r3, [r4, #0x54] + cmp r3, #0 + beq _080952FE + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_080952FE: + adds r0, r4, #0 + bl sub_080042B8 + ldr r3, [r4, #0x50] + cmp r3, #0 + beq _08095328 + ldrb r1, [r3, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r0, [r3, #4] + cmp r0, #0 + bne _0809532C + bl sub_0805E780 + b _0809532C +_08095328: + bl sub_0805E780 +_0809532C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095330 +sub_08095330: @ 0x08095330 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x6a + movs r1, #0xb + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809535E + str r4, [r5, #0x54] + str r5, [r4, #0x54] + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, _08095360 @ =0x0000FFF0 + strh r0, [r4, #0x36] + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_0809535E: + pop {r4, r5, pc} + .align 2, 0 +_08095360: .4byte 0x0000FFF0 + + thumb_func_start sub_08095364 +sub_08095364: @ 0x08095364 + push {r4, r5, r6, lr} + ldr r6, [r0, #0x54] + cmp r6, #0 + beq _0809539E + movs r5, #0 + movs r0, #2 + strb r0, [r6, #0x1e] + adds r0, r6, #0 + adds r0, #0x38 + movs r4, #1 + strb r4, [r0] + adds r0, r6, #0 + bl sub_08016A04 + str r5, [r6, #0x54] + strb r4, [r6, #0xd] + ldr r0, _080953A0 @ =0x0000FFF0 + strh r0, [r6, #0x36] + movs r0, #7 + strb r0, [r6, #0x15] + movs r0, #0xc0 + lsls r0, r0, #0xa + str r0, [r6, #0x20] + movs r0, #0x80 + strh r0, [r6, #0x24] + adds r0, r6, #0 + movs r1, #1 + bl sub_080042AC +_0809539E: + pop {r4, r5, r6, pc} + .align 2, 0 +_080953A0: .4byte 0x0000FFF0 + + thumb_func_start sub_080953A4 +sub_080953A4: @ 0x080953A4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080953E0 + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _08095414 @ =0x0000FFF0 + strh r0, [r4, #0x36] + adds r0, r4, #0 + movs r1, #2 + bl sub_0805E3A0 + ldr r1, _08095418 @ =gUnk_08114F30 + ldrb r2, [r4, #0x19] + lsrs r0, r2, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + adds r0, r4, #0 + bl sub_0807DD64 +_080953E0: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xa] + cmp r0, #0xd + bne _08095412 + adds r0, r4, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + ldr r1, _0809541C @ =0x00000139 + cmp r0, #0 + beq _0809540C + movs r1, #0 +_0809540C: + adds r0, r4, #0 + bl sub_0801D2B4 +_08095412: + pop {r4, pc} + .align 2, 0 +_08095414: .4byte 0x0000FFF0 +_08095418: .4byte gUnk_08114F30 +_0809541C: .4byte 0x00000139 + + thumb_func_start sub_08095420 +sub_08095420: @ 0x08095420 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0x6a + movs r1, #0xc + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08095450 + ldr r3, _08095454 @ =0xFFF00000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldr r1, [r6, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08095450: + pop {r4, r5, r6, pc} + .align 2, 0 +_08095454: .4byte 0xFFF00000 + + thumb_func_start nullsub_527 +nullsub_527: @ 0x08095458 + bx lr + .align 2, 0 + + thumb_func_start sub_0809545C +sub_0809545C: @ 0x0809545C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + movs r0, #0x6a + movs r1, #0xd + movs r2, #0 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _080954A6 + ldr r3, _080954A8 @ =0xFFF00000 + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + ldr r1, [r6, #4] + adds r0, r5, #0 + bl sub_0807DAD0 + adds r1, r5, #0 + adds r1, #0x84 + str r0, [r1] + movs r0, #0x6a + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080954A6 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r5, [r4, #0x50] +_080954A6: + pop {r4, r5, r6, pc} + .align 2, 0 +_080954A8: .4byte 0xFFF00000 + + thumb_func_start sub_080954AC +sub_080954AC: @ 0x080954AC + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x6a + movs r1, #0x1a + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080954D6 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, _080954D8 @ =gUnk_08015B14 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_080954D6: + pop {r4, r5, pc} + .align 2, 0 +_080954D8: .4byte gUnk_08015B14 + + thumb_func_start sub_080954DC +sub_080954DC: @ 0x080954DC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _08095598 + cmp r0, #1 + bgt _080954F0 + cmp r0, #0 + beq _080954FC + b _0809562C +_080954F0: + cmp r0, #2 + beq _080955B8 + cmp r0, #3 + bne _080954FA + b _08095620 +_080954FA: + b _0809562C +_080954FC: + ldrb r0, [r4, #0xe] + adds r5, r0, #0 + cmp r5, #0 + beq _0809550A + subs r0, #1 + strb r0, [r4, #0xe] + b _0809562C +_0809550A: + movs r0, #1 + movs r2, #1 + strb r0, [r4, #0xc] + strb r5, [r4, #0xd] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + strh r5, [r4, #0x36] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x6a + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x6c + strh r5, [r0] + ldr r1, _08095590 @ =gUnk_08122AE0 + ldrb r0, [r4, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + adds r5, r4, #0 + adds r5, #0x6e + strb r0, [r5] + ldr r1, _08095594 @ =gUnk_08122AE8 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r4, #0 + bl sub_0801D2B4 + adds r0, r4, #0 + bl sub_0807DD64 + ldrb r1, [r4, #0xb] + adds r1, #2 + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_08095754 + bl sub_08000E50 + movs r1, #6 + bl __modsi3 + movs r1, #0xde + lsls r1, r1, #1 + adds r0, r0, r1 + bl sub_080A3268 + adds r1, r5, #0 + b _08095630 + .align 2, 0 +_08095590: .4byte gUnk_08122AE0 +_08095594: .4byte gUnk_08122AE8 +_08095598: + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x10 + rsbs r2, r2, #0 + adds r1, r4, #0 + adds r1, #0x6e + cmp r0, r2 + bgt _08095630 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + strh r2, [r4, #0x36] + b _08095630 +_080955B8: + adds r5, r4, #0 + adds r5, #0x6c + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x40 + bls _080955CE + movs r0, #0x40 + strh r0, [r5] +_080955CE: + ldr r3, _0809561C @ =gUnk_080C9160 + movs r2, #0x6e + adds r2, r2, r4 + mov ip, r2 + ldrb r0, [r2] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r1, [r0, r2] + ldrh r0, [r5] + lsls r0, r0, #8 + adds r2, r1, #0 + muls r2, r0, r2 + asrs r2, r2, #0x10 + strh r2, [r4, #0x2e] + mov r1, ip + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r3 + movs r3, #0 + ldrsh r1, [r0, r3] + ldrh r0, [r5] + lsls r0, r0, #7 + muls r1, r0, r1 + asrs r1, r1, #0x10 + strh r1, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x68 + ldrh r0, [r0] + adds r2, r2, r0 + strh r2, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x6a + ldrh r0, [r0] + adds r1, r1, r0 + strh r1, [r4, #0x32] + mov r1, ip + b _08095630 + .align 2, 0 +_0809561C: .4byte gUnk_080C9160 +_08095620: + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C +_0809562C: + adds r1, r4, #0 + adds r1, #0x6e +_08095630: + ldrb r0, [r1] + adds r0, #4 + strb r0, [r1] + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0809564A + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + bne _0809564A + bl sub_0805E780 +_0809564A: + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809565E + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _08095664 +_0809565E: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 +_08095664: + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + + thumb_func_start sub_0809567C +sub_0809567C: @ 0x0809567C + push {r4, lr} + adds r4, r0, #0 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x68 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r1, r1, #0x10 + ldr r0, [r4, #0x2c] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x6a + movs r3, #0 + ldrsh r2, [r1, r3] + lsls r2, r2, #0x10 + ldr r1, [r4, #0x30] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r4, #0x15] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080956B4 +sub_080956B4: @ 0x080956B4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _080956E2 + adds r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + adds r4, r5, #0 + adds r4, #0x68 + ldrh r2, [r5, #0x2e] + ldrh r1, [r5, #0x32] + movs r0, #7 +_080956D4: + strh r2, [r4] + adds r4, #2 + strh r1, [r4] + adds r4, #2 + subs r0, #1 + cmp r0, #0 + bge _080956D4 +_080956E2: + adds r0, r5, #0 + bl sub_08004274 + ldrb r0, [r5, #0xb] + ldr r1, _08095724 @ =gUnk_030010A0 + ldr r1, [r1] + adds r0, r0, r1 + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _080956FE + adds r0, r5, #0 + bl sub_080957B4 +_080956FE: + ldr r6, [r5, #0x50] + cmp r6, #0 + beq _08095728 + ldrb r1, [r6, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + ldr r0, [r6, #4] + cmp r0, #0 + bne _0809572C + bl sub_0805E780 + b _0809572C + .align 2, 0 +_08095724: .4byte gUnk_030010A0 +_08095728: + bl sub_0805E780 +_0809572C: + adds r4, r5, #0 + adds r4, #0x68 + adds r0, r5, #0 + adds r0, #0x6c + adds r1, r4, #0 + movs r2, #0x1c + bl sub_0801D66C + ldrh r0, [r4, #0x14] + strh r0, [r5, #0x2e] + ldrh r0, [r4, #0x16] + strh r0, [r5, #0x32] + ldrh r0, [r6, #0x36] + strh r0, [r5, #0x36] + ldrh r0, [r6, #0x2e] + strh r0, [r4, #0x1c] + ldrh r0, [r6, #0x32] + strh r0, [r4, #0x1e] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08095754 +sub_08095754: @ 0x08095754 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r2, [r5, #0xb] + movs r0, #0x6a + movs r1, #0xf + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809577A + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAD8 +_0809577A: + pop {r4, r5, pc} + + thumb_func_start sub_0809577C +sub_0809577C: @ 0x0809577C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08095796 + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080957B0 @ =0x0000FFF0 + strh r0, [r4, #0x36] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08095796: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080957AE + bl sub_0805E780 +_080957AE: + pop {r4, pc} + .align 2, 0 +_080957B0: .4byte 0x0000FFF0 + + thumb_func_start sub_080957B4 +sub_080957B4: @ 0x080957B4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x6a + movs r1, #0x10 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080957DA + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAD8 +_080957DA: + pop {r4, r5, pc} + + thumb_func_start sub_080957DC +sub_080957DC: @ 0x080957DC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080957F8 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC +_080957F8: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095810 +sub_08095810: @ 0x08095810 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x6a + movs r1, #0x11 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08095844 + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + ldr r1, _08095848 @ =gUnk_08011940 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08095844: + pop {r4, r5, pc} + .align 2, 0 +_08095848: .4byte gUnk_08011940 + + thumb_func_start sub_0809584C +sub_0809584C: @ 0x0809584C + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x45 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _0809586C + ldr r0, _080958D0 @ =gUnk_020342F8 + subs r1, #1 + bl sub_0801D5A8 + cmp r0, #0 + bne _0809586C + bl sub_0805E780 +_0809586C: + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _08095880 + ldrb r0, [r5, #0xb] + bl sub_0801E7F4 + cmp r0, #0 + beq _08095880 + bl sub_0805E780 +_08095880: + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _080958B2 + adds r0, #1 + strb r0, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + bl sub_08016A04 + ldr r1, _080958D4 @ =gUnk_08114F30 + ldrb r2, [r5, #0x19] + lsrs r0, r2, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x19] + adds r0, r5, #0 + bl sub_0807DD64 +_080958B2: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 + ldrb r4, [r5, #0xa] + movs r0, #0x5c + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] + pop {r4, r5, pc} + .align 2, 0 +_080958D0: .4byte gUnk_020342F8 +_080958D4: .4byte gUnk_08114F30 + + thumb_func_start sub_080958D8 +sub_080958D8: @ 0x080958D8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080958EC + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD64 +_080958EC: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08095914 + adds r0, r4, #0 + bl sub_08095954 +_08095914: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095918 +sub_08095918: @ 0x08095918 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809593C + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0809593C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095954 +sub_08095954: @ 0x08095954 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x6a + movs r1, #0x14 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080959B8 + str r5, [r4, #0x50] + ldrb r0, [r5, #0x14] + ldr r1, _080959AC @ =gUnk_08122AF8 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + ldr r0, _080959B0 @ =0x0000FFFD + strh r0, [r4, #0x36] + ldr r1, _080959B4 @ =gUnk_08012C48 + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_08004488 + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + b _080959C4 + .align 2, 0 +_080959AC: .4byte gUnk_08122AF8 +_080959B0: .4byte 0x0000FFFD +_080959B4: .4byte gUnk_08012C48 +_080959B8: + ldr r0, _080959C8 @ =gUnk_02033280 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #1 + orrs r1, r2 + str r1, [r0] +_080959C4: + pop {r4, r5, pc} + .align 2, 0 +_080959C8: .4byte gUnk_02033280 + + thumb_func_start sub_080959CC +sub_080959CC: @ 0x080959CC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080959F2 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #3 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 +_080959F2: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r1, r0 + adds r0, r4, #0 + bl sub_08095D30 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095A1C +sub_08095A1C: @ 0x08095A1C + push {r4, r5, lr} + adds r5, r1, #0 + movs r0, #0x6a + movs r1, #0x16 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08095A5E + ldr r1, _08095A60 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0xe8 + strh r0, [r4, #0x2e] + movs r2, #0x9c + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldr r0, _08095A64 @ =0x0000FFFC + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldr r1, [r5, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08095A5E: + pop {r4, r5, pc} + .align 2, 0 +_08095A60: .4byte gUnk_03000BF0 +_08095A64: .4byte 0x0000FFFC + + thumb_func_start sub_08095A68 +sub_08095A68: @ 0x08095A68 + push {lr} + sub sp, #4 + movs r0, #0 + str r0, [sp] + movs r0, #6 + movs r1, #0x6a + movs r2, #6 + movs r3, #0x16 + bl sub_0805EB2C + adds r1, r0, #0 + cmp r1, #0 + beq _08095A86 + movs r0, #0xff + strb r0, [r1, #0xc] +_08095A86: + add sp, #4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08095A8C +sub_08095A8C: @ 0x08095A8C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #5 + bhi _08095B44 + lsls r0, r0, #2 + ldr r1, _08095AA0 @ =_08095AA4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08095AA0: .4byte _08095AA4 +_08095AA4: @ jump table + .4byte _08095ABC @ case 0 + .4byte _08095ACC @ case 1 + .4byte _08095ADC @ case 2 + .4byte _08095AE6 @ case 3 + .4byte _08095B12 @ case 4 + .4byte _08095B1C @ case 5 +_08095ABC: + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + strb r1, [r4, #0x1e] + adds r0, r4, #0 + bl sub_0807DD64 +_08095ACC: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + b _08095B44 +_08095ADC: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] +_08095AE6: + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + movs r5, #1 + eors r0, r5 + movs r3, #4 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0x18] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095B44 + movs r0, #1 + strb r5, [r4, #0xc] + ands r2, r3 + orrs r2, r0 + b _08095B42 +_08095B12: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] +_08095B1C: + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + movs r5, #1 + eors r0, r5 + movs r3, #4 + rsbs r3, r3, #0 + adds r2, r3, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r4, #0x18] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08095B44 + strb r5, [r4, #0xc] + ands r2, r3 +_08095B42: + strb r2, [r4, #0x18] +_08095B44: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08095B48 +sub_08095B48: @ 0x08095B48 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08095B78 + adds r0, #1 + strb r0, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + bl sub_08016A04 + ldr r1, _08095BA8 @ =gUnk_08114F30 + ldrb r2, [r5, #0x19] + lsrs r0, r2, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x19] +_08095B78: + ldrb r0, [r5, #0x18] + movs r4, #4 + rsbs r4, r4, #0 + adds r1, r4, #0 + ands r1, r0 + strb r1, [r5, #0x18] + ldr r2, [r5, #0x50] + cmp r2, #0 + beq _08095BCE + adds r0, r2, #0 + adds r0, #0x5a + ldrb r3, [r0] + movs r0, #0x40 + ands r0, r3 + cmp r0, #0 + bne _08095BAC + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _08095BCE + bl sub_0805E780 + b _08095BDC + .align 2, 0 +_08095BA8: .4byte gUnk_08114F30 +_08095BAC: + adds r0, r1, #0 + ands r0, r4 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + ldrh r0, [r2, #0x12] + ldrb r1, [r2, #0x1e] + bl sub_080700C8 + ldrb r1, [r0] + adds r2, r5, #0 + adds r2, #0x62 + strb r1, [r2] + ldrb r0, [r0, #1] + adds r1, r5, #0 + adds r1, #0x63 + strb r0, [r1] +_08095BCE: + ldrb r4, [r5, #0xa] + ldrb r0, [r5, #0xb] + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] +_08095BDC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08095BE0 +sub_08095BE0: @ 0x08095BE0 + push {r4, lr} + adds r4, r0, #0 + adds r2, r1, #0 + movs r0, #0x6a + movs r1, #0x18 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08095BFC + str r4, [r1, #0x50] + adds r0, r4, #0 + bl sub_0806FA24 +_08095BFC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095C00 +sub_08095C00: @ 0x08095C00 + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0xc] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08095C14 + bl sub_0805E780 + b _08095C46 +_08095C14: + ldr r3, [r2, #0x50] + cmp r3, #0 + beq _08095C46 + adds r1, r2, #0 + adds r1, #0x60 + movs r0, #0xe8 + strh r0, [r1] + ldrb r0, [r3, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _08095C38 + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + b _08095C46 +_08095C38: + ldrb r0, [r2, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r2, #0x18] +_08095C46: + pop {pc} + + thumb_func_start sub_08095C48 +sub_08095C48: @ 0x08095C48 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x6a + movs r1, #0x19 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08095C66 + str r1, [r4, #0x54] + str r4, [r1, #0x50] + adds r0, r4, #0 + bl sub_0806FA24 +_08095C66: + pop {r4, pc} + + thumb_func_start sub_08095C68 +sub_08095C68: @ 0x08095C68 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08095C80 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_08095C80: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _08095CAA + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #7 + bhi _08095CA4 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_08095CA4: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08095CAE +_08095CAA: + bl sub_0805E780 +_08095CAE: + pop {r4, pc} + + thumb_func_start sub_08095CB0 +sub_08095CB0: @ 0x08095CB0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x6a + movs r1, #0x1b + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08095CDC + str r4, [r5, #0x54] + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + movs r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r5, #0x1e] + strb r0, [r4, #0x1e] + ldrb r0, [r5, #0x1e] + strb r0, [r4, #0x1f] +_08095CDC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08095CE0 +sub_08095CE0: @ 0x08095CE0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08095D06 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r4, #0 + bl sub_0807DD64 +_08095D06: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r1, r0 + adds r0, r4, #0 + bl sub_08095D30 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08095D30 +sub_08095D30: @ 0x08095D30 + push {lr} + adds r2, r0, #0 + adds r0, r1, #0 + cmp r0, #0 + beq _08095D4E + ldr r1, _08095D50 @ =gUnk_08122B00 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + movs r0, #0x81 + rsbs r0, r0, #0 + ands r1, r0 + adds r0, r2, #0 + bl sub_0801D2B4 +_08095D4E: + pop {pc} + .align 2, 0 +_08095D50: .4byte gUnk_08122B00 + + thumb_func_start sub_08095D54 +sub_08095D54: @ 0x08095D54 + push {r4, r5, lr} + adds r5, r1, #0 + movs r0, #0x6a + movs r1, #0x1c + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08095D86 + ldr r0, _08095D88 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldr r1, [r5, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08095D86: + pop {r4, r5, pc} + .align 2, 0 +_08095D88: .4byte gLinkEntity + + thumb_func_start sub_08095D8C +sub_08095D8C: @ 0x08095D8C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0x6a + movs r1, #0x1d + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08095DB8 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, [r6, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08095DB8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08095DBC +sub_08095DBC: @ 0x08095DBC + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _08095DF0 @ =gUnk_02033280 + ldr r0, [r5] + movs r1, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08095DD0 + bl sub_0805E780 +_08095DD0: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08095DF4 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08095DE6 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD64 +_08095DE6: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + b _08095E74 + .align 2, 0 +_08095DF0: .4byte gUnk_02033280 +_08095DF4: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08095E30 + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0x4b + bl sub_08004260 + ldr r1, _08095E78 @ =gUnk_08114F30 + ldrb r2, [r4, #0x19] + lsrs r0, r2, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_08095E30: + ldrb r2, [r4, #0xb] + movs r0, #0x80 + ands r0, r2 + cmp r0, #0 + bne _08095E56 + ldr r0, [r5] + movs r1, #0x80 + lsls r1, r1, #0xa + ands r0, r1 + cmp r0, #0 + beq _08095E56 + movs r0, #0xff + strb r0, [r4, #0xb] + movs r0, #0x80 + lsls r0, r0, #0xb + str r0, [r4, #0x20] + movs r0, #0xc0 + lsls r0, r0, #8 + strh r0, [r4, #0x24] +_08095E56: + movs r0, #0x24 + ldrsh r1, [r4, r0] + adds r0, r4, #0 + bl sub_08003FC4 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + bne _08095E74 + bl sub_0805E780 +_08095E74: + pop {r4, r5, pc} + .align 2, 0 +_08095E78: .4byte gUnk_08114F30 + + thumb_func_start sub_08095E7C +sub_08095E7C: @ 0x08095E7C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0x6a + movs r1, #0x1e + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08095EA8 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, [r6, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08095EA8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08095EAC +sub_08095EAC: @ 0x08095EAC + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sb, r0 + adds r4, r1, #0 + movs r0, #0x6a + movs r1, #0x1e + movs r2, #1 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _08095F2A + ldr r0, [r4, #4] + cmp r0, #0 + bne _08095EE0 + movs r7, #0x10 + movs r6, #0x1f + movs r0, #0x80 + lsls r0, r0, #7 + mov sl, r0 + movs r2, #0 + mov r8, r2 + b _08095F02 +_08095EE0: + movs r7, #8 + movs r6, #0xf + movs r0, #0x80 + lsls r0, r0, #0xb + mov sl, r0 + ldr r4, _08095F34 @ =gUnk_08122B0E + bl sub_08000E50 + movs r1, #7 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsh r2, [r1, r0] + mov r8, r2 + movs r0, #0xff + strb r0, [r5, #0xb] +_08095F02: + bl sub_08000E50 + adds r4, r0, #0 + ands r4, r6 + subs r4, r7, r4 + bl sub_08000E50 + ands r6, r0 + subs r3, r7, r6 + lsls r4, r4, #0x10 + lsls r3, r3, #0x10 + mov r0, sb + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_0806FA48 + mov r2, sl + str r2, [r5, #0x20] + mov r0, r8 + strh r0, [r5, #0x24] +_08095F2A: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08095F34: .4byte gUnk_08122B0E + + thumb_func_start sub_08095F38 +sub_08095F38: @ 0x08095F38 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08095FC2 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0xb] + cmp r0, #4 + beq _08095F64 + cmp r0, #4 + bgt _08095F5A + cmp r0, #3 + beq _08095F60 + b _08095F6A +_08095F5A: + cmp r0, #6 + beq _08095F68 + b _08095F6A +_08095F60: + movs r1, #0 + b _08095F6A +_08095F64: + movs r1, #1 + b _08095F6A +_08095F68: + movs r1, #4 +_08095F6A: + adds r0, r4, #0 + bl sub_0801D2B4 + ldr r0, _08095F90 @ =gLinkEntity + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _08095F98 + adds r1, r4, #0 + adds r1, #0x84 + ldr r0, _08095F94 @ =0x000008BF + str r0, [r1] + movs r0, #0x34 + strb r0, [r4, #0xe] + movs r0, #0xb5 + b _08095FA6 + .align 2, 0 +_08095F90: .4byte gLinkEntity +_08095F94: .4byte 0x000008BF +_08095F98: + adds r1, r4, #0 + adds r1, #0x84 + ldr r0, _08096020 @ =0x000008E3 + str r0, [r1] + movs r0, #0x55 + strb r0, [r4, #0xe] + movs r0, #0xd6 +_08095FA6: + strb r0, [r4, #0xf] + ldr r0, _08096024 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_08095FC2: + ldr r5, _08096024 @ =gLinkEntity + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _08095FE0 + movs r0, #0xef + ands r0, r1 + strb r0, [r2] + movs r0, #0xea + lsls r0, r0, #1 + bl sub_080A3268 +_08095FE0: + ldrh r0, [r5, #0x12] + adds r1, r4, #0 + adds r1, #0x84 + ldr r2, [r1] + lsrs r1, r2, #8 + cmp r0, r1 + bne _08095FFC + adds r0, r5, #0 + adds r0, #0x58 + ldrb r1, [r0] + lsls r0, r2, #0x18 + lsrs r0, r0, #0x18 + cmp r1, r0 + beq _08096000 +_08095FFC: + bl sub_0805E780 +_08096000: + ldr r0, _08096024 @ =gLinkEntity + ldrb r0, [r0, #0x1e] + ldrb r1, [r4, #0xe] + subs r0, r0, r1 + ldrb r1, [r4, #0xf] + adds r0, r0, r1 + ldrb r1, [r4, #0x1e] + cmp r0, r1 + beq _0809601E + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_0809601E: + pop {r4, r5, pc} + .align 2, 0 +_08096020: .4byte 0x000008E3 +_08096024: .4byte gLinkEntity + + thumb_func_start sub_08096028 +sub_08096028: @ 0x08096028 + push {r4, r5, lr} + movs r4, #6 + movs r5, #0xc0 + lsls r5, r5, #2 + adds r0, r5, #0 + movs r1, #0x7b + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0809603E + movs r4, #4 +_0809603E: + adds r0, r5, #0 + movs r1, #0x7a + bl GetProgressFlagWithOffset + cmp r0, #0 + bne _0809604C + movs r4, #3 +_0809604C: + movs r0, #0x6a + movs r1, #0x1f + adds r2, r4, #0 + bl sub_080A2960 + pop {r4, r5, pc} + + thumb_func_start sub_08096058 +sub_08096058: @ 0x08096058 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809606C + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD64 +_0809606C: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08096084 +sub_08096084: @ 0x08096084 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080960A0 + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0807DD64 + ldrb r1, [r4, #0xb] + adds r0, r4, #0 + bl sub_08004260 +_080960A0: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_08004274 + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _080960C0 + adds r1, r4, #0 + bl sub_0806FA24 +_080960C0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080960C4 +sub_080960C4: @ 0x080960C4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #0x6a + movs r1, #0x23 + movs r2, #0x49 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08096110 + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, _08096160 @ =gUnk_08114F34 + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAD8 + ldr r1, [r6, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_08096110: + movs r0, #0x6a + movs r1, #0x24 + movs r2, #0x4a + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809615E + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r1, _08096164 @ =gUnk_08114F30 + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + adds r0, r0, r1 + ldrb r1, [r0] + lsls r1, r1, #6 + ldrb r2, [r4, #0x19] + movs r0, #0x3f + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldr r1, [r6, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] +_0809615E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08096160: .4byte gUnk_08114F34 +_08096164: .4byte gUnk_08114F30 + + thumb_func_start sub_08096168 +sub_08096168: @ 0x08096168 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809618C + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + movs r1, #0x4b + bl sub_08004260 +_0809618C: + adds r0, r4, #0 + bl sub_08004274 + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + bne _080961AC + bl sub_0805E780 +_080961AC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080961B0 +sub_080961B0: @ 0x080961B0 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + movs r5, #0 + ldr r6, _080961F0 @ =gUnk_08122B1E +_080961B8: + movs r0, #0x6a + movs r1, #0x25 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080961E6 + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_0806FA24 + lsls r0, r5, #5 + strb r0, [r4, #0x15] + bl sub_08000E50 + movs r2, #0xf8 + lsls r2, r2, #1 + adds r1, r2, #0 + ands r0, r1 + ldrh r1, [r6] + adds r0, r0, r1 + strh r0, [r4, #0x24] +_080961E6: + adds r6, #2 + adds r5, #1 + cmp r5, #7 + ble _080961B8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080961F0: .4byte gUnk_08122B1E + + thumb_func_start sub_080961F4 +sub_080961F4: @ 0x080961F4 + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + movs r1, #0 + strb r1, [r0, #0x1e] + bx lr + + thumb_func_start sub_08096208 +sub_08096208: @ 0x08096208 + push {r4, r5, lr} + adds r5, r0, #0 + lsls r1, r1, #1 + ldr r0, _08096238 @ =gUnk_08122B2E + adds r4, r1, r0 + movs r0, #0x6a + movs r1, #0x26 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _08096234 + movs r2, #0 + ldrsb r2, [r4, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r4, r3] + lsls r3, r3, #0x10 + adds r0, r5, #0 + bl sub_0806FA48 +_08096234: + pop {r4, r5, pc} + .align 2, 0 +_08096238: .4byte gUnk_08122B2E + + thumb_func_start sub_0809623C +sub_0809623C: @ 0x0809623C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x6a + movs r1, #0x27 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0809625A + ldr r3, _0809625C @ =0xFFF00000 + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 +_0809625A: + pop {r4, pc} + .align 2, 0 +_0809625C: .4byte 0xFFF00000 + + thumb_func_start sub_08096260 +sub_08096260: @ 0x08096260 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x6a + movs r1, #0x28 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0809627E + ldr r3, _08096280 @ =0xFFF00000 + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 +_0809627E: + pop {r4, pc} + .align 2, 0 +_08096280: .4byte 0xFFF00000 + + thumb_func_start sub_08096284 +sub_08096284: @ 0x08096284 + push {lr} + movs r1, #0xd + bl sub_0809629C + pop {pc} + .align 2, 0 + + thumb_func_start sub_08096290 +sub_08096290: @ 0x08096290 + push {lr} + movs r1, #0xe + bl sub_0809629C + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809629C +sub_0809629C: @ 0x0809629C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _080962B2 + movs r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + bl sub_0807DD64 +_080962B2: + adds r0, r5, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r5, #0 + bl sub_0807DDE4 + movs r1, #0x80 + lsls r1, r1, #5 + adds r0, r5, #0 + bl sub_08003FC4 + ldrb r4, [r5, #0xa] + strb r6, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] + pop {r4, r5, r6, pc} + + thumb_func_start sub_080962D8 +sub_080962D8: @ 0x080962D8 + push {lr} + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #6 + bl sub_08050054 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080962E8 +sub_080962E8: @ 0x080962E8 + push {lr} + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #7 + bl sub_08050054 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080962F8 +sub_080962F8: @ 0x080962F8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r1, #4] + lsls r4, r4, #4 + ldr r0, _08096318 @ =gUnk_08122B3C + adds r4, r4, r0 + ldrb r2, [r4, #0xc] + adds r3, r4, #0 + adds r3, #8 + adds r0, r5, #0 + movs r1, #1 + bl sub_08078850 + str r4, [r5, #0x48] + pop {r4, r5, pc} + .align 2, 0 +_08096318: .4byte gUnk_08122B3C + + thumb_func_start sub_0809631C +sub_0809631C: @ 0x0809631C + push {lr} + ldr r2, _08096330 @ =gUnk_08123168 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08096330: .4byte gUnk_08123168 + + thumb_func_start sub_08096334 +sub_08096334: @ 0x08096334 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + movs r4, #0 + movs r6, #0x80 + strh r6, [r5, #0x24] + ldr r0, _08096358 @ =gUnk_080FD2A8 + str r0, [r5, #0x48] + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _0809634E + b _08096494 +_0809634E: + cmp r0, #1 + bgt _0809635C + cmp r0, #0 + beq _08096368 + b _0809650A + .align 2, 0 +_08096358: .4byte gUnk_080FD2A8 +_0809635C: + cmp r0, #2 + bne _08096362 + b _080964A6 +_08096362: + cmp r0, #3 + beq _080963FC + b _0809650A +_08096368: + movs r0, #0x1a + bl GetProgressFlag + cmp r0, #0 + beq _080963DA + movs r0, #0x1b + bl GetProgressFlag + cmp r0, #0 + bne _080963A4 + ldr r0, _0809639C @ =gLinkEntity + movs r3, #0x80 + lsls r3, r3, #9 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + ldr r0, _080963A0 @ =0x00004022 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r2, [r1] + movs r1, #0xdc + bl sub_0800015E + b _0809650A + .align 2, 0 +_0809639C: .4byte gLinkEntity +_080963A0: .4byte 0x00004022 +_080963A4: + ldrb r0, [r5, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + bne _080963C8 + adds r0, r5, #0 + movs r1, #0xa + bl sub_08004260 + ldrh r0, [r5, #0x32] + adds r0, #4 + strh r0, [r5, #0x32] + movs r0, #4 + strb r0, [r5, #0xc] + ldr r0, _080963C4 @ =0x0000403B + b _080964C4 + .align 2, 0 +_080963C4: .4byte 0x0000403B +_080963C8: + strb r4, [r5, #0xb] + movs r0, #2 + strb r0, [r5, #0xf] + adds r0, r5, #0 + bl sub_080969A4 + bl sub_0805E780 + b _0809650A +_080963DA: + ldr r1, _080963F8 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0xd0 + strh r0, [r5, #0x2e] + ldrh r0, [r1, #8] + adds r0, #0x44 + strh r0, [r5, #0x32] + movs r0, #4 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0xa] + adds r1, #3 + adds r0, r5, #0 + bl sub_08004260 + b _0809651A + .align 2, 0 +_080963F8: .4byte gUnk_03000BF0 +_080963FC: + movs r0, #0x1a + bl GetProgressFlag + cmp r0, #0 + beq _08096450 + movs r0, #0x1b + bl GetProgressFlag + cmp r0, #0 + bne _0809644C + ldr r0, _08096444 @ =gLinkEntity + adds r1, r0, #0 + adds r1, #0x29 + ldrb r2, [r1] + lsls r2, r2, #0x1d + lsrs r2, r2, #0x1d + subs r2, #1 + adds r4, r5, #0 + adds r4, #0x29 + movs r1, #7 + ands r2, r1 + ldrb r3, [r4] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r4] + adds r1, r0, #0 + adds r1, #0x79 + strb r6, [r1] + ldr r3, _08096448 @ =0xFFE80000 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + b _08096450 + .align 2, 0 +_08096444: .4byte gLinkEntity +_08096448: .4byte 0xFFE80000 +_0809644C: + bl sub_0805E780 +_08096450: + adds r0, r5, #0 + movs r1, #0x6b + movs r2, #1 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r5, #0x54] + cmp r1, #0 + beq _0809646E + ldr r2, _0809648C @ =0xFFE40000 + ldr r3, _08096490 @ =0xFFD80000 + adds r0, r5, #0 + bl sub_0806FA48 +_0809646E: + movs r0, #0x10 + strb r0, [r5, #0x16] + ldrb r0, [r5, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r5, #0x19] + adds r0, r5, #0 + movs r1, #0xc + bl sub_08004260 + adds r0, r5, #0 + bl sub_0809651C + b _0809651A + .align 2, 0 +_0809648C: .4byte 0xFFE40000 +_08096490: .4byte 0xFFD80000 +_08096494: + ldrb r0, [r5, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r5, #0x19] + adds r0, r5, #0 + movs r1, #6 + bl sub_0805E3A0 + b _0809650A +_080964A6: + ldrb r0, [r5, #0xb] + bl sub_0807CBD0 + cmp r0, #0 + bne _080964F8 + adds r0, r5, #0 + movs r1, #0xb + bl sub_08004260 + ldrh r0, [r5, #0x32] + adds r0, #4 + strh r0, [r5, #0x32] + movs r0, #4 + strb r0, [r5, #0xc] + ldr r0, _080964F0 @ =0x00004032 +_080964C4: + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080964F4 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + b _0809651A + .align 2, 0 +_080964F0: .4byte 0x00004032 +_080964F4: .4byte gUnk_03000BF0 +_080964F8: + strb r4, [r5, #0xb] + movs r0, #3 + strb r0, [r5, #0xf] + adds r0, r5, #0 + bl sub_080969A4 + bl sub_0805E780 + b _0809651A +_0809650A: + ldrb r1, [r5, #0xa] + adds r1, #3 + adds r0, r5, #0 + bl sub_08004260 + adds r0, r5, #0 + bl sub_0809651C +_0809651A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0809651C +sub_0809651C: @ 0x0809651C + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + ldrb r3, [r6, #0xa] + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _080965D6 + cmp r3, #3 + bne _0809653C + adds r0, r6, #0 + bl sub_08078930 + adds r0, r6, #0 + bl sub_0800445C + b _080965C8 +_0809653C: + ldr r0, [r6, #0x50] + ldr r2, _0809655C @ =0xFFE40000 + ldr r3, _08096560 @ =0xFFD80000 + adds r1, r6, #0 + bl sub_0806FA48 + ldr r1, [r6, #0x50] + ldrb r0, [r1, #0xc] + cmp r0, #2 + bne _08096586 + ldrb r0, [r1, #0xd] + cmp r0, #1 + beq _08096564 + cmp r0, #2 + beq _08096580 + b _08096570 + .align 2, 0 +_0809655C: .4byte 0xFFE40000 +_08096560: .4byte 0xFFD80000 +_08096564: + ldr r0, _0809657C @ =gUnk_03003F80 + ldrb r1, [r0, #0xd] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08096580 +_08096570: + adds r0, r6, #0 + movs r1, #4 + bl sub_08004260 + b _08096586 + .align 2, 0 +_0809657C: .4byte gUnk_03003F80 +_08096580: + adds r0, r6, #0 + bl sub_08004274 +_08096586: + ldr r0, [r6, #0x50] + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #1 + adds r3, r6, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldr r4, [r6, #0x50] + ldrb r2, [r4, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r6, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r6, #0x19] + ldrb r0, [r4, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r6, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r6, #0x1b] +_080965C8: + adds r0, r6, #0 + movs r1, #0xcc + movs r2, #0xcc + movs r3, #0 + bl sub_0805EC9C + b _080966F6 +_080965D6: + ldr r1, _080965FC @ =gUnk_03003F80 + ldrb r2, [r1, #0x1a] + movs r0, #0x80 + orrs r0, r2 + strb r0, [r1, #0x1a] + movs r0, #5 + strb r0, [r1, #5] + ldrb r1, [r1, #0xd] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08096600 + lsls r1, r3, #0x18 + lsrs r1, r1, #0x19 + adds r1, #3 + adds r0, r6, #0 + bl sub_08004260 + b _08096606 + .align 2, 0 +_080965FC: .4byte gUnk_03003F80 +_08096600: + adds r0, r6, #0 + bl sub_08004274 +_08096606: + ldr r0, _08096664 @ =gLinkEntity + ldrb r0, [r0, #0x14] + movs r1, #6 + ands r1, r0 + ldr r4, _08096668 @ =gUnk_08123184 + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r6, #0x2e] + adds r0, r0, r2 + movs r2, #0x10 + rsbs r2, r2, #0 + adds r3, r2, #0 + ands r0, r3 + movs r2, #8 + adds r5, r6, #0 + adds r5, #0x70 + movs r7, #0 + orrs r0, r2 + strh r0, [r5] + adds r1, #1 + adds r1, r1, r4 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r6, #0x32] + adds r0, r0, r1 + ands r0, r3 + orrs r0, r2 + adds r1, r6, #0 + adds r1, #0x72 + strh r0, [r1] + ldrh r0, [r5] + ldrh r1, [r1] + adds r4, r6, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_080002BC + cmp r0, #0x19 + bne _08096670 + ldr r0, _0809666C @ =gUnk_0200AF00 + adds r0, #0x2f + movs r1, #3 + strb r1, [r0] + b _08096676 + .align 2, 0 +_08096664: .4byte gLinkEntity +_08096668: .4byte gUnk_08123184 +_0809666C: .4byte gUnk_0200AF00 +_08096670: + ldr r0, _080966F8 @ =gUnk_0200AF00 + adds r0, #0x2f + strb r7, [r0] +_08096676: + ldr r0, _080966FC @ =gLinkEntity + movs r3, #0x80 + lsls r3, r3, #9 + adds r1, r6, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r6, #0 + bl sub_080002B8 + cmp r0, #0x19 + bne _0809669C + ldrb r1, [r4] + movs r0, #0xdc + bl sub_0807BA8C + adds r0, r6, #0 + bl sub_08096A78 +_0809669C: + ldr r2, _08096700 @ =gUnk_03003F80 + adds r0, r2, #0 + adds r0, #0x92 + ldrh r1, [r0] + movs r0, #0xc0 + ands r0, r1 + cmp r0, #0 + beq _080966F6 + ldr r0, _080966F8 @ =gUnk_0200AF00 + adds r0, #0x2f + ldrb r0, [r0] + cmp r0, #3 + bne _080966F6 + movs r0, #0 + strb r0, [r2, #5] + movs r0, #5 + strb r0, [r6, #0xc] + adds r0, #0xfb + strh r0, [r6, #0x24] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r6, #0x20] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r6, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r6, #0x18] + ldrb r1, [r4] + movs r0, #0xdc + bl sub_0807BA8C + movs r0, #0x79 + bl sub_080A3268 +_080966F6: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080966F8: .4byte gUnk_0200AF00 +_080966FC: .4byte gLinkEntity +_08096700: .4byte gUnk_03003F80 + + thumb_func_start sub_08096704 +sub_08096704: @ 0x08096704 + push {lr} + ldr r2, _08096718 @ =gUnk_0812318C + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08096718: .4byte gUnk_0812318C + + thumb_func_start sub_0809671C +sub_0809671C: @ 0x0809671C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x1a + bl sub_0807CD04 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_121 +nullsub_121: @ 0x08096730 + bx lr + .align 2, 0 + + thumb_func_start sub_08096734 +sub_08096734: @ 0x08096734 + push {lr} + movs r0, #0x1a + bl sub_0807CD80 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08096740 +sub_08096740: @ 0x08096740 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x10 + movs r1, #0 + bl sub_08080964 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08096758 +sub_08096758: @ 0x08096758 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809677C + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0xa + bl sub_08004260 +_0809677C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08096780 +sub_08096780: @ 0x08096780 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _080967D4 @ =gUnk_0812319C + ldrb r0, [r5, #0xa] + lsrs r0, r0, #1 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r4, [r0] + adds r0, r5, #0 + bl sub_080002A0 + cmp r4, r0 + bne _080967DC + adds r0, r5, #0 + bl sub_08004274 + ldr r2, _080967D8 @ =gUnk_03003F80 + ldrb r0, [r2, #0xb] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0xb] + ldrb r0, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] + ldrb r0, [r2, #7] + orrs r1, r0 + strb r1, [r2, #7] + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080967E0 + movs r0, #6 + strb r0, [r5, #0xc] + strb r1, [r5, #0xd] + adds r0, r5, #0 + bl sub_080A29BC + b _080967E0 + .align 2, 0 +_080967D4: .4byte gUnk_0812319C +_080967D8: .4byte gUnk_03003F80 +_080967DC: + movs r0, #0xc0 + strb r0, [r5, #0xe] +_080967E0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080967E4 +sub_080967E4: @ 0x080967E4 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x70 + ldrh r5, [r0] + movs r0, #0x2e + ldrsh r2, [r4, r0] + cmp r5, r2 + bne _08096802 + adds r0, r4, #0 + adds r0, #0x72 + ldrh r1, [r0] + movs r3, #0x32 + ldrsh r0, [r4, r3] + cmp r1, r0 + beq _0809681C +_08096802: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r3, [r0] + adds r0, r2, #0 + adds r2, r5, #0 + bl sub_080045D4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F69C +_0809681C: + movs r1, #0x80 + lsls r1, r1, #7 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _08096830 + adds r0, r4, #0 + bl sub_08096A78 +_08096830: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08096834 +sub_08096834: @ 0x08096834 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #2 + beq _08096842 + bl sub_08078B48 +_08096842: + ldr r0, _08096854 @ =gUnk_081231A0 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08096854: .4byte gUnk_081231A0 + + thumb_func_start sub_08096858 +sub_08096858: @ 0x08096858 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + bl sub_0807CCB4 + movs r3, #0 + movs r0, #0xf + strb r0, [r5, #0xe] + ldr r1, _080968BC @ =gUnk_081231AC + ldrb r2, [r5, #0xa] + lsls r2, r2, #0x18 + lsrs r0, r2, #0x19 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0xf] + strb r3, [r5, #0xb] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + cmp r2, #0 + bne _080968C4 + movs r0, #0xe7 + lsls r0, r0, #1 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080968C0 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 + b _080968F0 + .align 2, 0 +_080968BC: .4byte gUnk_081231AC +_080968C0: .4byte gUnk_03000BF0 +_080968C4: + ldr r0, _080968F8 @ =0x000001CD + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080968FC @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 +_080968F0: + ldr r0, _08096900 @ =0x000001DB + bl sub_080A3268 + pop {r4, r5, r6, pc} + .align 2, 0 +_080968F8: .4byte 0x000001CD +_080968FC: .4byte gUnk_03000BF0 +_08096900: .4byte 0x000001DB + + thumb_func_start sub_08096904 +sub_08096904: @ 0x08096904 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08096984 + ldrh r0, [r5, #0x32] + subs r0, #0x10 + strh r0, [r5, #0x32] + ldr r1, _08096974 @ =gUnk_081231AE + ldrb r0, [r5, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08096978 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 + ldrb r0, [r5, #0xb] + adds r0, #1 + strb r0, [r5, #0xb] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r5, #0xf] + cmp r0, r1 + bne _08096980 + ldr r2, _0809697C @ =gUnk_03003F80 + ldrb r1, [r2, #0xb] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0xb] + ldrb r0, [r5, #0xd] + adds r0, #1 + strb r0, [r5, #0xd] + movs r0, #0x3c + b _08096982 + .align 2, 0 +_08096974: .4byte gUnk_081231AE +_08096978: .4byte gUnk_03000BF0 +_0809697C: .4byte gUnk_03003F80 +_08096980: + movs r0, #0xf +_08096982: + strb r0, [r5, #0xe] +_08096984: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_08096988 +sub_08096988: @ 0x08096988 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + cmp r0, #0 + beq _080969A2 + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080969A2 + movs r0, #0x72 + bl sub_080A3268 +_080969A2: + pop {pc} + + thumb_func_start sub_080969A4 +sub_080969A4: @ 0x080969A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _080969E8 + movs r0, #0xe7 + lsls r0, r0, #1 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080969E4 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r4, r5, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0807B7D8 + b _08096A14 + .align 2, 0 +_080969E4: .4byte gUnk_03000BF0 +_080969E8: + ldr r0, _08096A6C @ =0x000001CD + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08096A70 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r4, r5, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0807B7D8 +_08096A14: + ldrb r0, [r5, #0xb] + ldrb r1, [r5, #0xf] + cmp r0, r1 + beq _08096A64 + ldr r2, _08096A74 @ =gUnk_081231B4 + mov r8, r2 + ldr r7, _08096A70 @ =gUnk_03000BF0 + movs r6, #0x3f +_08096A24: + ldrh r0, [r5, #0x32] + subs r0, #0x10 + strh r0, [r5, #0x32] + ldrb r0, [r5, #0xb] + lsls r0, r0, #1 + add r0, r8 + ldrh r0, [r0] + movs r3, #0x2e + ldrsh r1, [r5, r3] + ldrh r2, [r7, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + movs r3, #0x32 + ldrsh r2, [r5, r3] + ldrh r3, [r7, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + ldrb r2, [r4] + bl sub_0807B7D8 + ldrb r0, [r5, #0xb] + adds r0, #1 + strb r0, [r5, #0xb] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + ldrb r1, [r5, #0xf] + cmp r0, r1 + bne _08096A24 +_08096A64: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08096A6C: .4byte 0x000001CD +_08096A70: .4byte gUnk_03000BF0 +_08096A74: .4byte gUnk_081231B4 + + thumb_func_start sub_08096A78 +sub_08096A78: @ 0x08096A78 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0x1b + bl sub_0807CD04 + ldrb r1, [r4, #0xa] + lsrs r1, r1, #1 + adds r1, #8 + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_08004168 + ldrh r0, [r4, #0x32] + adds r0, #4 + strh r0, [r4, #0x32] + movs r0, #3 + strb r0, [r4, #0xc] + ldr r0, _08096ACC @ =0x0000403B + movs r2, #0x2e + ldrsh r1, [r4, r2] + ldr r3, _08096AD0 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r5, #0x3f + ands r1, r5 + movs r6, #0x32 + ldrsh r2, [r4, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r5 + lsls r2, r2, #6 + orrs r1, r2 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_08096ACC: .4byte 0x0000403B +_08096AD0: .4byte gUnk_03000BF0 + + thumb_func_start sub_08096AD4 +sub_08096AD4: @ 0x08096AD4 + push {lr} + ldr r2, _08096AE8 @ =gUnk_0812323C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08096AE8: .4byte gUnk_0812323C + + thumb_func_start sub_08096AEC +sub_08096AEC: @ 0x08096AEC + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080837B0 + cmp r0, #0 + beq _08096BB6 + ldrb r1, [r4, #0xa] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08096B12 + adds r1, r4, #0 + adds r1, #0x7e + movs r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0xa] + movs r0, #3 + ands r0, r1 + strb r0, [r4, #0xa] +_08096B12: + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x70 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08096B90 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x76 + strh r1, [r5] + ldrh r0, [r5] + adds r6, r4, #0 + adds r6, #0x38 + ldrb r1, [r6] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x74 + strh r0, [r1] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x1e] + adds r0, r4, #0 + bl sub_08096CEC + cmp r0, #0 + beq _08096B9C + adds r0, r4, #0 + adds r0, #0x7e + ldrb r0, [r0] + cmp r0, #0 + beq _08096B94 + bl sub_0805E780 + b _08096BB6 + .align 2, 0 +_08096B90: .4byte gUnk_03000BF0 +_08096B94: + adds r0, r4, #0 + bl sub_08096E04 + b _08096BB6 +_08096B9C: + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldr r0, _08096BB8 @ =0x00004022 + ldrh r1, [r5] + ldrb r2, [r6] + bl sub_0800015E +_08096BB6: + pop {r4, r5, r6, pc} + .align 2, 0 +_08096BB8: .4byte 0x00004022 + + thumb_func_start sub_08096BBC +sub_08096BBC: @ 0x08096BBC + push {r4, lr} + adds r4, r0, #0 + bl sub_08096CEC + cmp r0, #0 + beq _08096BF2 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #7 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xa] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x76 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldr r0, _08096BF4 @ =0x0000010B + bl sub_08004488 +_08096BF2: + pop {r4, pc} + .align 2, 0 +_08096BF4: .4byte 0x0000010B + + thumb_func_start sub_08096BF8 +sub_08096BF8: @ 0x08096BF8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08096C3A + adds r0, r4, #0 + bl sub_08096E04 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + strh r0, [r4, #0x32] + adds r0, r4, #0 + adds r0, #0x7e + ldrb r0, [r0] + cmp r0, #0 + beq _08096C3A + bl sub_0805E780 +_08096C3A: + pop {r4, pc} + + thumb_func_start sub_08096C3C +sub_08096C3C: @ 0x08096C3C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x7e + ldrb r0, [r0] + cmp r0, #0 + beq _08096C56 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _08096CAE +_08096C56: + ldr r0, _08096C80 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + beq _08096C92 + ldrb r2, [r4, #0xa] + lsls r1, r2, #1 + ldr r0, _08096C84 @ =gLinkEntity + ldrb r0, [r0, #0x14] + cmp r1, r0 + bne _08096C88 + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_08083734 + cmp r0, #0 + beq _08096CAE + b _08096C9C + .align 2, 0 +_08096C80: .4byte gUnk_03003F80 +_08096C84: .4byte gLinkEntity +_08096C88: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + b _08096C98 +_08096C92: + adds r0, r4, #0 + bl sub_08096D84 +_08096C98: + cmp r0, #0 + bne _08096CAE +_08096C9C: + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r2, [r0] + adds r0, r4, #0 + bl sub_080836DC +_08096CAE: + pop {r4, pc} + + thumb_func_start sub_08096CB0 +sub_08096CB0: @ 0x08096CB0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08096CE6 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + strh r0, [r4, #0x32] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08083814 + ldr r0, _08096CE8 @ =0x0000010B + bl sub_08004488 +_08096CE6: + pop {r4, pc} + .align 2, 0 +_08096CE8: .4byte 0x0000010B + + thumb_func_start sub_08096CEC +sub_08096CEC: @ 0x08096CEC + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x7e + ldrb r0, [r0] + cmp r0, #0 + beq _08096D06 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _08096D60 +_08096D06: + ldr r0, _08096D40 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + lsls r1, r1, #5 + ands r0, r1 + cmp r0, #0 + beq _08096D64 + ldr r3, _08096D44 @ =gLinkEntity + ldrb r2, [r4, #0xa] + lsls r0, r2, #1 + ldrb r1, [r3, #0x14] + eors r0, r1 + movs r1, #2 + ands r0, r1 + cmp r0, #0 + bne _08096D64 + movs r0, #1 + ands r2, r0 + cmp r2, #0 + beq _08096D48 + movs r1, #0x32 + ldrsh r0, [r3, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + movs r5, #0x2e + ldrsh r2, [r3, r5] + movs r5, #0x2e + ldrsh r3, [r4, r5] + b _08096D58 + .align 2, 0 +_08096D40: .4byte gUnk_03003F80 +_08096D44: .4byte gLinkEntity +_08096D48: + movs r1, #0x2e + ldrsh r0, [r3, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r5, #0x32 + ldrsh r2, [r3, r5] + movs r5, #0x32 + ldrsh r3, [r4, r5] +_08096D58: + bl sub_08096D68 + cmp r0, #0 + beq _08096D64 +_08096D60: + movs r0, #1 + b _08096D66 +_08096D64: + movs r0, #0 +_08096D66: + pop {r4, r5, pc} + + thumb_func_start sub_08096D68 +sub_08096D68: @ 0x08096D68 + push {lr} + subs r0, r0, r1 + adds r0, #8 + cmp r0, #0x10 + bhi _08096D7E + subs r0, r2, r3 + adds r0, #0x30 + cmp r0, #0x60 + bhi _08096D7E + movs r0, #1 + b _08096D80 +_08096D7E: + movs r0, #0 +_08096D80: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08096D84 +sub_08096D84: @ 0x08096D84 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #1 + beq _08096DB4 + cmp r0, #1 + bgt _08096D98 + cmp r0, #0 + beq _08096DA2 + b _08096E00 +_08096D98: + cmp r0, #2 + beq _08096DC8 + cmp r0, #3 + beq _08096DE4 + b _08096E00 +_08096DA2: + movs r0, #0x32 + ldrsh r1, [r1, r0] + ldr r0, _08096DB0 @ =gLinkEntity + movs r2, #0x32 + ldrsh r0, [r0, r2] + b _08096DEE + .align 2, 0 +_08096DB0: .4byte gLinkEntity +_08096DB4: + ldr r0, _08096DC4 @ =gLinkEntity + movs r2, #0x2e + ldrsh r0, [r0, r2] + adds r0, #0xa + movs r2, #0x2e + ldrsh r1, [r1, r2] + b _08096DD4 + .align 2, 0 +_08096DC4: .4byte gLinkEntity +_08096DC8: + ldr r0, _08096DE0 @ =gLinkEntity + movs r2, #0x32 + ldrsh r0, [r0, r2] + adds r0, #0xa + movs r2, #0x32 + ldrsh r1, [r1, r2] +_08096DD4: + subs r0, r0, r1 + cmp r0, #0x64 + bhi _08096E00 + movs r0, #1 + b _08096E02 + .align 2, 0 +_08096DE0: .4byte gLinkEntity +_08096DE4: + movs r0, #0x2e + ldrsh r1, [r1, r0] + ldr r0, _08096DFC @ =gLinkEntity + movs r2, #0x2e + ldrsh r0, [r0, r2] +_08096DEE: + subs r0, #0xa + subs r1, r1, r0 + cmp r1, #0x64 + bhi _08096E00 + movs r0, #1 + b _08096E02 + .align 2, 0 +_08096DFC: .4byte gLinkEntity +_08096E00: + movs r0, #0 +_08096E02: + pop {pc} + + thumb_func_start sub_08096E04 +sub_08096E04: @ 0x08096E04 + movs r1, #3 + strb r1, [r0, #0xc] + movs r1, #8 + strb r1, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_08096E10 +sub_08096E10: @ 0x08096E10 + push {lr} + ldr r2, _08096E24 @ =gUnk_08123250 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08096E24: .4byte gUnk_08123250 + + thumb_func_start sub_08096E28 +sub_08096E28: @ 0x08096E28 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + adds r5, r0, #0 + cmp r5, #0 + bne _08096EBC + movs r2, #1 + movs r3, #1 + strb r3, [r4, #0xc] + movs r0, #0x80 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x11] + subs r0, #0x90 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #4 + strb r0, [r1] + ldr r0, _08096EB4 @ =gUnk_080FD1F4 + str r0, [r4, #0x48] + strb r3, [r4, #0x16] + adds r0, r4, #0 + adds r0, #0x72 + strh r5, [r0] + adds r0, #0xb + ldrb r0, [r0] + lsrs r0, r0, #4 + subs r1, #0x2b + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + bl sub_080970F4 + ldr r1, _08096EB8 @ =gUnk_08123264 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0x1e] + b _08096F04 + .align 2, 0 +_08096EB4: .4byte gUnk_080FD1F4 +_08096EB8: .4byte gUnk_08123264 +_08096EBC: + adds r0, r4, #0 + adds r0, #0x7c + ldrb r2, [r0] + adds r0, #1 + ldrb r3, [r0] + movs r1, #0xf + adds r0, r1, #0 + ands r0, r3 + lsls r0, r0, #8 + ldr r3, _08096F08 @ =gUnk_03000BF0 + orrs r2, r0 + ldrh r0, [r3, #6] + adds r2, r2, r0 + strh r2, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x7e + ldrb r0, [r0] + movs r2, #0x7f + adds r2, r2, r4 + mov ip, r2 + ldrb r2, [r2] + ands r1, r2 + lsls r1, r1, #8 + orrs r0, r1 + ldrh r3, [r3, #8] + adds r0, r0, r3 + strh r0, [r4, #0x32] + mov r5, ip + ldrb r0, [r5] + lsrs r0, r0, #4 + adds r1, r4, #0 + adds r1, #0x38 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080971E0 +_08096F04: + pop {r4, r5, pc} + .align 2, 0 +_08096F08: .4byte gUnk_03000BF0 + + thumb_func_start sub_08096F0C +sub_08096F0C: @ 0x08096F0C + push {r4, lr} + adds r4, r0, #0 + bl sub_08097194 + cmp r0, #0 + bne _08096F2E + adds r0, r4, #0 + bl sub_08097008 + cmp r0, #0 + beq _08096F28 + movs r0, #3 + strb r0, [r4, #0xc] + b _08096F2E +_08096F28: + adds r0, r4, #0 + bl sub_08078930 +_08096F2E: + pop {r4, pc} + + thumb_func_start sub_08096F30 +sub_08096F30: @ 0x08096F30 + push {lr} + adds r2, r0, #0 + adds r0, #0x76 + ldrh r0, [r0] + cmp r0, #0 + beq _08096F44 + adds r0, r2, #0 + bl sub_08097144 + b _08096F62 +_08096F44: + ldr r0, _08096F64 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _08096F50 + movs r0, #6 + strb r0, [r2, #0xd] +_08096F50: + ldr r0, _08096F68 @ =gUnk_0812326C + ldrb r1, [r2, #0xd] + subs r1, #5 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_08096F62: + pop {pc} + .align 2, 0 +_08096F64: .4byte gUnk_03003F80 +_08096F68: .4byte gUnk_0812326C + + thumb_func_start sub_08096F6C +sub_08096F6C: @ 0x08096F6C + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x72 + ldrh r0, [r1] + cmp r0, #0 + bne _08096F98 + movs r0, #1 + strh r0, [r1] + ldr r1, _08096FD8 @ =gLinkEntity + ldrb r0, [r1, #0x14] + ldr r2, _08096FDC @ =gUnk_08123274 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r4, #0 + bl sub_0806FA48 +_08096F98: + adds r0, r4, #0 + bl sub_08097008 + bl sub_080896B0 + cmp r0, #0 + beq _08096FD4 + ldr r2, _08096FE0 @ =gUnk_03003F80 + movs r3, #0 + movs r0, #0x10 + strb r0, [r2, #0xc] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #0x20 + strb r0, [r1] + ldr r0, [r2, #0x30] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r0, _08096FD8 @ =gLinkEntity + strh r3, [r0, #0x2c] + strh r3, [r0, #0x30] + ldrb r0, [r0, #0x14] + movs r1, #4 + eors r0, r1 + lsls r0, r0, #2 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_08097098 +_08096FD4: + pop {r4, pc} + .align 2, 0 +_08096FD8: .4byte gLinkEntity +_08096FDC: .4byte gUnk_08123274 +_08096FE0: .4byte gUnk_03003F80 + + thumb_func_start sub_08096FE4 +sub_08096FE4: @ 0x08096FE4 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + adds r0, #0x72 + strh r2, [r0] + bx lr + + thumb_func_start sub_08096FF0 +sub_08096FF0: @ 0x08096FF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08097144 + cmp r0, #0 + beq _08097000 + movs r0, #1 + strb r0, [r4, #0xc] +_08097000: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_122 +nullsub_122: @ 0x08097004 + bx lr + .align 2, 0 + + thumb_func_start sub_08097008 +sub_08097008: @ 0x08097008 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + adds r4, r0, #0 + ldr r0, _08097048 @ =0x00004036 + cmp r4, r0 + beq _08097070 + adds r0, r4, #0 + bl sub_08097074 + cmp r0, #1 + beq _0809704C + cmp r0, #2 + beq _08097062 + movs r0, #0xf + movs r1, #4 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0809706A + adds r0, r5, #0 + bl sub_0806FA24 + b _0809706A + .align 2, 0 +_08097048: .4byte 0x00004036 +_0809704C: + adds r0, r4, #0 + subs r0, #0x37 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #3 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_08097098 + movs r0, #1 + b _08097072 +_08097062: + adds r0, r5, #0 + adds r0, #0x70 + strh r4, [r0] + b _08097070 +_0809706A: + adds r0, r5, #0 + bl sub_0805E7BC +_08097070: + movs r0, #0 +_08097072: + pop {r4, r5, pc} + + thumb_func_start sub_08097074 +sub_08097074: @ 0x08097074 + push {lr} + adds r2, r0, #0 + ldr r1, _0809707C @ =gUnk_0812327C + b _0809708C + .align 2, 0 +_0809707C: .4byte gUnk_0812327C +_08097080: + ldrh r0, [r1] + cmp r0, r2 + bne _0809708A + ldrh r0, [r1, #2] + b _08097094 +_0809708A: + adds r1, #4 +_0809708C: + ldrh r0, [r1] + cmp r0, #0 + bne _08097080 + movs r0, #0 +_08097094: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08097098 +sub_08097098: @ 0x08097098 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r1, r6, #0 + adds r1, #0x76 + movs r0, #0x20 + strh r0, [r1] + adds r0, #0xef + bl sub_08004488 + adds r0, r6, #0 + adds r0, #0x70 + ldrh r0, [r0] + adds r5, r6, #0 + adds r5, #0x74 + ldrh r1, [r5] + adds r4, r6, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + ldr r1, _080970F0 @ =gUnk_080B4488 + ldrb r0, [r6, #0x15] + lsrs r0, r0, #3 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + ldrh r5, [r5] + adds r0, r0, r5 + ldrb r1, [r4] + bl sub_080002B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x79 + beq _080970E4 + cmp r0, #0x77 + bne _080970EC +_080970E4: + adds r1, r6, #0 + adds r1, #0x63 + movs r0, #2 + strb r0, [r1] +_080970EC: + pop {r4, r5, r6, pc} + .align 2, 0 +_080970F0: .4byte gUnk_080B4488 + + thumb_func_start sub_080970F4 +sub_080970F4: @ 0x080970F4 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _0809713C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r6, #0 + adds r4, #0x74 + strh r1, [r4] + ldrh r0, [r4] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x70 + strh r0, [r1] + ldr r0, _08097140 @ =0x00004036 + ldrh r1, [r4] + ldrb r2, [r5] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0809713C: .4byte gUnk_03000BF0 +_08097140: .4byte 0x00004036 + + thumb_func_start sub_08097144 +sub_08097144: @ 0x08097144 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_0800445C + adds r0, r4, #0 + bl sub_080002B8 + cmp r0, #0x19 + bne _08097164 + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #2 + strb r0, [r1] +_08097164: + adds r1, r4, #0 + adds r1, #0x76 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08097190 + adds r0, r4, #0 + bl sub_08097194 + cmp r0, #0 + bne _08097190 + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #4 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080970F4 + movs r0, #1 + b _08097192 +_08097190: + movs r0, #0 +_08097192: + pop {r4, pc} + + thumb_func_start sub_08097194 +sub_08097194: @ 0x08097194 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800442E + cmp r0, #0 + beq _080971A4 + movs r0, #1 + b _080971DE +_080971A4: + adds r0, r4, #0 + bl sub_080002A0 + adds r1, r0, #0 + subs r0, #0x71 + cmp r0, #1 + bls _080971B8 + ldr r0, _080971D4 @ =0x00004020 + cmp r1, r0 + bne _080971DC +_080971B8: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + ldr r0, _080971D8 @ =0x0000010B + bl sub_08004488 + adds r0, r4, #0 + bl sub_080971E0 + movs r0, #1 + b _080971DE + .align 2, 0 +_080971D4: .4byte 0x00004020 +_080971D8: .4byte 0x0000010B +_080971DC: + movs r0, #0 +_080971DE: + pop {r4, pc} + + thumb_func_start sub_080971E0 +sub_080971E0: @ 0x080971E0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xf + movs r1, #0x11 + movs r2, #0x40 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08097202 + ldr r2, _0809727C @ =0xFFF80000 + movs r3, #0x80 + lsls r3, r3, #0xa + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 +_08097202: + movs r0, #0xf + movs r1, #0x11 + movs r2, #0x40 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08097222 + movs r2, #0x80 + lsls r2, r2, #0xc + movs r3, #0x80 + lsls r3, r3, #0xa + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 +_08097222: + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _08097284 + cmp r0, #1 + ble _08097234 + cmp r0, #2 + beq _080972C4 + cmp r0, #3 + beq _08097304 +_08097234: + movs r0, #4 + strb r0, [r5, #0xc] + movs r0, #1 + strb r0, [r5, #0x1e] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _08097280 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r2, [r0] + movs r0, #0 + bl sub_0800015E +_08097274: + bl sub_0805E780 + b _08097346 + .align 2, 0 +_0809727C: .4byte 0xFFF80000 +_08097280: .4byte gUnk_03000BF0 +_08097284: + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r3, _080972C0 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + adds r0, r4, #0 + bl sub_08097348 + cmp r0, #0 + bne _08097274 + adds r0, r5, #0 + adds r0, #0x38 + ldrb r2, [r0] + movs r0, #0x73 + adds r1, r4, #0 + bl sub_0807B314 + b _08097274 + .align 2, 0 +_080972C0: .4byte gUnk_03000BF0 +_080972C4: + movs r0, #0x2f + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08097274 + ldrh r2, [r5, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + adds r0, #8 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x32] + ands r1, r0 + adds r1, #8 + strh r1, [r4, #0x32] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r5, #0 + adds r0, #0x84 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x86 + strh r1, [r0] + b _08097274 +_08097304: + movs r0, #0x2f + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08097342 + ldrh r2, [r5, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + adds r0, #8 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #0x32] + ands r1, r0 + adds r1, #8 + strh r1, [r4, #0x32] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r5, #0 + adds r0, #0x84 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x86 + strh r1, [r0] +_08097342: + bl sub_0805E780 +_08097346: + pop {r4, r5, pc} + + thumb_func_start sub_08097348 +sub_08097348: @ 0x08097348 + push {lr} + adds r3, r0, #0 + ldr r1, _08097360 @ =gUnk_02017660 + movs r2, #0 +_08097350: + ldrh r0, [r1, #4] + cmp r0, r3 + bne _08097364 + ldrb r0, [r1, #1] + bl sub_0807CBD0 + b _0809736E + .align 2, 0 +_08097360: .4byte gUnk_02017660 +_08097364: + adds r2, #1 + adds r1, #8 + cmp r2, #7 + bls _08097350 + movs r0, #0 +_0809736E: + pop {pc} + + thumb_func_start sub_08097370 +sub_08097370: @ 0x08097370 + push {lr} + ldr r2, _08097384 @ =gUnk_08123298 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08097384: .4byte gUnk_08123298 + + thumb_func_start sub_08097388 +sub_08097388: @ 0x08097388 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806FBD8 + cmp r0, #0 + beq _080973D4 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + ldr r1, _080973D8 @ =gUnk_081232A0 + adds r0, r0, r1 + ldrb r1, [r0] + strb r1, [r4, #0xb] + ldrb r2, [r0, #3] + adds r1, r4, #0 + adds r1, #0x40 + strb r2, [r1] + ldr r2, [r4, #0x48] + ldrb r1, [r0, #1] + strb r1, [r2, #6] + ldr r1, [r4, #0x48] + ldrb r0, [r0, #2] + strb r0, [r1, #7] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #0x91 + strb r0, [r1] + subs r1, #4 + movs r0, #2 + strb r0, [r1] + movs r0, #1 + strb r0, [r4, #0xc] +_080973D4: + pop {r4, pc} + .align 2, 0 +_080973D8: .4byte gUnk_081232A0 + + thumb_func_start sub_080973DC +sub_080973DC: @ 0x080973DC + adds r0, #0x41 + movs r1, #0 + strb r1, [r0] + bx lr + + thumb_func_start sub_080973E4 +sub_080973E4: @ 0x080973E4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809741E + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + bl sub_08052660 + cmp r0, #0 + beq _0809741E + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] +_0809741E: + pop {r4, pc} + + thumb_func_start sub_08097420 +sub_08097420: @ 0x08097420 + push {lr} + ldr r2, _08097434 @ =gUnk_081232A4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08097434: .4byte gUnk_081232A4 + + thumb_func_start sub_08097438 +sub_08097438: @ 0x08097438 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xa] + adds r1, r0, #0 + adds r1, #0xb + strb r1, [r4, #0x1e] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080974A2 + adds r0, r4, #0 + bl sub_08004168 + ldr r1, _08097494 @ =gLinkEntity + ldrb r0, [r1, #0x1b] + movs r2, #0xc0 + orrs r0, r2 + strb r0, [r1, #0x1b] + adds r1, #0x29 + ldrb r1, [r1] + movs r2, #7 + movs r0, #7 + ands r0, r1 + cmp r0, #7 + beq _08097498 + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + adds r1, #1 + adds r3, r4, #0 + adds r3, #0x29 + ands r1, r2 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _080974A2 + .align 2, 0 +_08097494: .4byte gLinkEntity +_08097498: + adds r1, r4, #0 + adds r1, #0x29 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] +_080974A2: + pop {r4, pc} + + thumb_func_start sub_080974A4 +sub_080974A4: @ 0x080974A4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08097554 + ldr r3, _08097540 @ =gLinkEntity + ldr r0, [r3, #0x34] + cmp r0, #0 + bne _080974E8 + ldr r2, _08097544 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1e] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + bne _080974D6 + ldrb r0, [r2, #0x12] + cmp r0, #0x11 + bne _080974D6 + ldrb r0, [r3, #0xc] + cmp r0, #1 + beq _080974FA + cmp r0, #0x18 + beq _080974FA + cmp r0, #4 + beq _080974FA +_080974D6: + ldr r1, _08097540 @ =gLinkEntity + ldr r0, [r1, #0x34] + cmp r0, #0 + bne _080974E8 + adds r0, r1, #0 + movs r1, #0x52 + movs r2, #0 + bl CreateFX +_080974E8: + ldr r2, _08097540 @ =gLinkEntity + ldrb r1, [r2, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x1b] + bl sub_0805E780 +_080974FA: + ldr r2, _08097540 @ =gLinkEntity + ldr r0, [r2, #0x2c] + str r0, [r4, #0x2c] + ldr r0, [r2, #0x30] + str r0, [r4, #0x30] + ldr r0, _08097544 @ =gUnk_03003F80 + ldrb r0, [r0, #2] + cmp r0, #0 + bne _08097584 + ldrb r0, [r2, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r2, #0x1b] + adds r0, r2, #0 + adds r0, #0x29 + ldrb r1, [r0] + movs r2, #7 + movs r0, #7 + ands r0, r1 + cmp r0, #7 + beq _08097548 + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + adds r1, #1 + adds r3, r4, #0 + adds r3, #0x29 + ands r1, r2 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _08097584 + .align 2, 0 +_08097540: .4byte gLinkEntity +_08097544: .4byte gUnk_03003F80 +_08097548: + adds r1, r4, #0 + adds r1, #0x29 + ldrb r0, [r1] + orrs r0, r2 + strb r0, [r1] + b _08097584 +_08097554: + ldr r2, _08097570 @ =gLinkEntity + ldrb r0, [r2, #0xc] + cmp r0, #0x1e + beq _08097584 + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #1 + bne _08097574 + ldrb r0, [r2, #0x1b] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x80 + b _0809757C + .align 2, 0 +_08097570: .4byte gLinkEntity +_08097574: + ldrb r0, [r2, #0x1b] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 +_0809757C: + orrs r1, r0 + strb r1, [r2, #0x1b] + bl sub_0805E780 +_08097584: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08097588 +sub_08097588: @ 0x08097588 + push {lr} + ldr r2, _0809759C @ =gUnk_081232AC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809759C: .4byte gUnk_081232AC + + thumb_func_start sub_080975A0 +sub_080975A0: @ 0x080975A0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _08097690 @ =gUnk_03000BF0 + mov r8, r2 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r6, #0x3f + ands r5, r6 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r2, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r5, r0 + adds r0, r5, #0 + subs r0, #0x41 + adds r7, r4, #0 + adds r7, #0x38 + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x6a + strh r0, [r1] + adds r0, r5, #0 + subs r0, #0x40 + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + adds r0, r5, #0 + subs r0, #0x3f + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x6e + strh r0, [r1] + subs r0, r5, #1 + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x70 + strh r0, [r1] + ldrb r1, [r7] + adds r0, r5, #0 + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + adds r0, r5, #1 + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x74 + strh r0, [r1] + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + adds r0, r5, #0 + adds r0, #0x40 + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r7] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + adds r0, r4, #0 + bl sub_0809798C + cmp r0, #0 + beq _080976A2 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08097694 + ldrh r0, [r4, #0x32] + subs r0, #0x16 + b _08097698 + .align 2, 0 +_08097690: .4byte gUnk_03000BF0 +_08097694: + ldrh r0, [r4, #0x32] + subs r0, #0x10 +_08097698: + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_080977F4 + b _08097722 +_080976A2: + movs r0, #1 + strb r0, [r4, #0xc] + movs r2, #0x2e + ldrsh r0, [r4, r2] + mov r2, r8 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + ands r5, r6 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r2, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r6 + lsls r0, r0, #6 + orrs r5, r0 + adds r0, r4, #0 + adds r0, #0x68 + strh r5, [r0] + ldr r1, _080976FC @ =gUnk_081232DE + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r6, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08097704 + ldr r0, _08097700 @ =gUnk_080FD578 + str r0, [r4, #0x48] + subs r1, r5, #1 + ldrb r2, [r7] + adds r0, r6, #0 + bl sub_0800015E + ldrb r2, [r7] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0800015E + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + b _08097722 + .align 2, 0 +_080976FC: .4byte gUnk_081232DE +_08097700: .4byte gUnk_080FD578 +_08097704: + ldr r0, _08097728 @ =gUnk_080FD570 + str r0, [r4, #0x48] + ldrb r2, [r7] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0800015E + ldrb r0, [r4, #0xb] + cmp r0, #2 + bne _08097722 + ldr r0, _0809772C @ =gUnk_081232C0 + ldrb r2, [r7] + adds r1, r5, #0 + bl sub_0801AF18 +_08097722: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08097728: .4byte gUnk_080FD570 +_0809772C: .4byte gUnk_081232C0 + + thumb_func_start sub_08097730 +sub_08097730: @ 0x08097730 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809785C + cmp r0, #0 + beq _08097744 + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + bl sub_0805E4E0 +_08097744: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08097748 +sub_08097748: @ 0x08097748 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xd] + cmp r0, #0 + bne _08097774 + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809779A + movs r0, #1 + strb r0, [r2, #0xd] + movs r0, #0x78 + strb r0, [r2, #0xf] + ldr r1, _08097770 @ =gUnk_03000BF0 + str r2, [r1, #0x30] + movs r0, #2 + strb r0, [r1, #0xe] + b _0809779A + .align 2, 0 +_08097770: .4byte gUnk_03000BF0 +_08097774: + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809779A + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #0x60 + strb r0, [r2, #0xe] + movs r0, #0x14 + strb r0, [r2, #0xf] + adds r0, r2, #0 + movs r1, #0x60 + bl sub_0805E4E0 + ldr r0, _0809779C @ =0x0000010F + bl sub_080A3268 +_0809779A: + pop {pc} + .align 2, 0 +_0809779C: .4byte 0x0000010F + + thumb_func_start sub_080977A0 +sub_080977A0: @ 0x080977A0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080977BC + subs r0, #1 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_0800445C + b _080977E4 +_080977BC: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080977C8 + subs r0, #1 + strb r0, [r4, #0xf] + b _080977E4 +_080977C8: + movs r0, #0x72 + bl sub_08004488 + adds r0, r4, #0 + bl sub_080977F4 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080977E4 + ldr r0, _080977E8 @ =gUnk_03000BF0 + ldr r1, _080977EC @ =gLinkEntity + str r1, [r0, #0x30] + movs r1, #4 + strb r1, [r0, #0xe] +_080977E4: + pop {r4, pc} + .align 2, 0 +_080977E8: .4byte gUnk_03000BF0 +_080977EC: .4byte gLinkEntity + + thumb_func_start nullsub_528 +nullsub_528: @ 0x080977F0 + bx lr + .align 2, 0 + + thumb_func_start sub_080977F4 +sub_080977F4: @ 0x080977F4 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r1, #0 + movs r0, #4 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x63 + strb r1, [r0] + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r3, _08097854 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r2, #0x3f + ands r4, r2 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + ldr r7, _08097858 @ =0x00004022 + adds r6, r5, #0 + adds r6, #0x38 + ldrb r2, [r6] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_0800015E + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08097844 + subs r1, r4, #1 + ldrb r2, [r6] + adds r0, r7, #0 + bl sub_0800015E +_08097844: + adds r1, r5, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _08097852 + bl sub_0807CCC8 +_08097852: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08097854: .4byte gUnk_03000BF0 +_08097858: .4byte 0x00004022 + + thumb_func_start sub_0809785C +sub_0809785C: @ 0x0809785C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r4, [r5, #0xa] + cmp r4, #0 + beq _08097948 + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _0809786E + b _08097986 +_0809786E: + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + adds r4, r5, #0 + adds r4, #0x68 + adds r6, r5, #0 + adds r6, #0x38 + cmp r0, #0 + bne _08097892 + ldrh r0, [r4] + ldrb r1, [r6] + bl sub_080002B0 + ldr r1, _08097940 @ =0x0000403F + cmp r0, r1 + bne _08097986 +_08097892: + movs r1, #0 + movs r0, #3 + strb r0, [r5, #0xc] + movs r0, #0x40 + strb r0, [r5, #0xe] + strb r1, [r5, #0xf] + strb r1, [r5, #0x15] + strh r0, [r5, #0x24] + ldrh r4, [r4] + adds r0, r5, #0 + adds r0, #0x72 + ldrh r0, [r0] + ldrb r2, [r6] + adds r1, r4, #0 + bl sub_0807B9B8 + ldrb r0, [r5, #0xb] + cmp r0, #2 + bne _08097934 + adds r0, r5, #0 + adds r0, #0x6a + ldrh r0, [r0] + adds r1, r4, #0 + subs r1, #0x41 + ldrb r2, [r6] + bl sub_0807B9B8 + adds r0, r5, #0 + adds r0, #0x6c + ldrh r0, [r0] + adds r1, r4, #0 + subs r1, #0x40 + ldrb r2, [r6] + bl sub_0807B9B8 + adds r0, r5, #0 + adds r0, #0x6e + ldrh r0, [r0] + adds r1, r4, #0 + subs r1, #0x3f + ldrb r2, [r6] + bl sub_0807B9B8 + adds r0, r5, #0 + adds r0, #0x70 + ldrh r0, [r0] + subs r1, r4, #1 + ldrb r2, [r6] + bl sub_0807B9B8 + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r4, #1 + ldrb r2, [r6] + bl sub_0807B9B8 + adds r0, r5, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x3f + ldrb r2, [r6] + bl sub_0807B9B8 + adds r0, r5, #0 + adds r0, #0x78 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x40 + ldrb r2, [r6] + bl sub_0807B9B8 + adds r0, r5, #0 + adds r0, #0x7a + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x41 + ldrb r2, [r6] + bl sub_0807B9B8 +_08097934: + ldr r0, _08097944 @ =0x0000010F + bl sub_080A3268 + movs r0, #1 + b _08097988 + .align 2, 0 +_08097940: .4byte 0x0000403F +_08097944: .4byte 0x0000010F +_08097948: + adds r0, r5, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08097986 + movs r0, #2 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + movs r0, #0xf0 + strb r0, [r5, #0xe] + movs r0, #0x3c + strb r0, [r5, #0xf] + strb r4, [r5, #0x15] + movs r0, #0x40 + strh r0, [r5, #0x24] + adds r4, r5, #0 + adds r4, #0x68 + ldrh r0, [r4] + adds r5, #0x38 + ldrb r1, [r5] + bl sub_0807BA8C + ldrh r0, [r4] + subs r0, #1 + ldrb r1, [r5] + bl sub_0807BA8C + movs r0, #1 + b _08097988 +_08097986: + movs r0, #0 +_08097988: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0809798C +sub_0809798C: @ 0x0809798C + push {r4, lr} + adds r1, r0, #0 + movs r4, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _0809799E + ldrb r0, [r1, #0xb] + cmp r0, #0 + beq _080979AE +_0809799E: + adds r0, r1, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080979AE + movs r4, #1 +_080979AE: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080979B4 +sub_080979B4: @ 0x080979B4 + push {lr} + ldr r2, _080979C8 @ =gUnk_081232E4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080979C8: .4byte gUnk_081232E4 + + thumb_func_start sub_080979CC +sub_080979CC: @ 0x080979CC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + cmp r0, #3 + bne _08097A20 + movs r0, #0 + strb r0, [r5, #0x1e] + ldr r0, _08097A18 @ =gUnk_081232FE + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08097A1C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0801AF18 + b _08097A4E + .align 2, 0 +_08097A18: .4byte gUnk_081232FE +_08097A1C: .4byte gUnk_03000BF0 +_08097A20: + strb r0, [r5, #0x1e] + ldr r0, _08097A50 @ =gUnk_081232EC + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08097A54 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0801AF18 +_08097A4E: + pop {r4, r5, r6, pc} + .align 2, 0 +_08097A50: .4byte gUnk_081232EC +_08097A54: .4byte gUnk_03000BF0 + + thumb_func_start nullsub_529 +nullsub_529: @ 0x08097A58 + bx lr + .align 2, 0 + + thumb_func_start sub_08097A5C +sub_08097A5C: @ 0x08097A5C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _08097AAC + movs r4, #1 + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0x5a + strb r0, [r5, #0xe] + bl sub_08000E50 + strb r0, [r5, #0xf] + lsrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + strb r0, [r5, #0x1e] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r4 + strb r0, [r5, #0x18] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0xb] + bl sub_0804B128 + str r0, [r5, #0x54] + adds r1, r5, #0 + adds r1, #0x54 + adds r2, r5, #0 + adds r2, #0x70 + adds r0, r5, #0 + bl sub_080A2CC0 +_08097AAC: + adds r0, r5, #0 + bl sub_08097ADC + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_080A2BE4 + adds r0, r5, #0 + bl sub_08097B24 + adds r2, r5, #0 + adds r2, #0x70 + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08097ADA + adds r1, r5, #0 + adds r1, #0x54 + adds r0, r5, #0 + bl sub_080A2CC0 +_08097ADA: + pop {r4, r5, pc} + + thumb_func_start sub_08097ADC +sub_08097ADC: @ 0x08097ADC + push {r4, r5, lr} + adds r2, r0, #0 + ldr r5, _08097B18 @ =gUnk_03003F80 + ldr r0, [r5, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08097B20 + ldr r4, _08097B1C @ =gLinkEntity + adds r0, r2, #0 + adds r1, r4, #0 + movs r2, #8 + movs r3, #8 + bl sub_080041A0 + cmp r0, #0 + beq _08097B20 + bl sub_08079F8C + cmp r0, #0 + beq _08097B20 + movs r0, #1 + strb r0, [r5, #0x14] + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08097B20 + movs r0, #1 + b _08097B22 + .align 2, 0 +_08097B18: .4byte gUnk_03003F80 +_08097B1C: .4byte gLinkEntity +_08097B20: + movs r0, #0 +_08097B22: + pop {r4, r5, pc} + + thumb_func_start sub_08097B24 +sub_08097B24: @ 0x08097B24 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + movs r4, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08097B44 + movs r0, #0x5a + strb r0, [r3, #0xe] + ldrb r0, [r3, #0x1e] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r3, #0x1e] +_08097B44: + ldr r2, _08097B68 @ =gUnk_08123318 + ldrb r0, [r3, #0xf] + adds r0, #1 + strb r0, [r3, #0xf] + ands r0, r4 + lsrs r0, r0, #5 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r2, [r0] + adds r0, r3, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + pop {r4, pc} + .align 2, 0 +_08097B68: .4byte gUnk_08123318 + + thumb_func_start sub_08097B6C +sub_08097B6C: @ 0x08097B6C + push {lr} + ldr r2, _08097B80 @ =gUnk_08123330 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08097B80: .4byte gUnk_08123330 + + thumb_func_start sub_08097B84 +sub_08097B84: @ 0x08097B84 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r0, _08097BCC @ =gUnk_08123328 + str r0, [r4, #0x48] + adds r2, #0x5d + ldrh r1, [r2] + ldr r0, _08097BD0 @ =0x0000FFFF + cmp r1, r0 + beq _08097BB0 + adds r0, r1, #0 + bl sub_0807CBE4 + cmp r0, #0 + beq _08097BD4 +_08097BB0: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #4 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08097CFC + b _08097BD8 + .align 2, 0 +_08097BCC: .4byte gUnk_08123328 +_08097BD0: .4byte 0x0000FFFF +_08097BD4: + bl sub_0805BC4C +_08097BD8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08097BDC +sub_08097BDC: @ 0x08097BDC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08097C10 + movs r0, #1 + bl sub_08078A90 + ldr r0, _08097C14 @ =gUnk_02034490 + movs r1, #1 + strb r1, [r0] + adds r0, r4, #0 + movs r1, #0x1e + bl sub_0805E4E0 + adds r0, r4, #0 + bl sub_08097CB0 + cmp r0, #0 + bne _08097C10 + adds r0, r4, #0 + bl sub_08097CB4 +_08097C10: + pop {r4, pc} + .align 2, 0 +_08097C14: .4byte gUnk_02034490 + + thumb_func_start sub_08097C18 +sub_08097C18: @ 0x08097C18 + bx lr + .align 2, 0 + + thumb_func_start sub_08097C1C +sub_08097C1C: @ 0x08097C1C + bx lr + .align 2, 0 + + thumb_func_start sub_08097C20 +sub_08097C20: @ 0x08097C20 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0x1e + bl sub_0805E510 + adds r0, r4, #0 + bl sub_0800445C + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_080577AC + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _08097CA6 + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + ands r1, r0 + ldr r6, _08097CA8 @ =gUnk_03000F50 + movs r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #8 + orrs r0, r1 + adds r1, r6, #0 + adds r1, #0x68 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x10 + bne _08097CA6 + movs r0, #0 + bl sub_08078A90 + ldr r1, _08097CAC @ =gUnk_02034490 + movs r0, #0 + strb r0, [r1] + adds r0, r6, #0 + adds r0, #0x66 + strh r5, [r0] + adds r0, r4, #0 + bl sub_08097CFC + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x19] + subs r0, #0x11 + ands r0, r1 + strb r0, [r4, #0x19] + movs r0, #0x72 + bl sub_080A3268 + movs r0, #0x63 + bl sub_0807CD04 +_08097CA6: + pop {r4, r5, r6, pc} + .align 2, 0 +_08097CA8: .4byte gUnk_03000F50 +_08097CAC: .4byte gUnk_02034490 + + thumb_func_start sub_08097CB0 +sub_08097CB0: @ 0x08097CB0 + movs r0, #0 + bx lr + + thumb_func_start sub_08097CB4 +sub_08097CB4: @ 0x08097CB4 + push {lr} + movs r3, #0 + movs r1, #3 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #7 + ands r1, r2 + movs r2, #1 + orrs r1, r2 + strb r1, [r0, #0x18] + ldrb r2, [r0, #0x19] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #4 + orrs r1, r2 + strb r1, [r0, #0x19] + movs r1, #0x1e + strb r1, [r0, #0xe] + strb r3, [r0, #0xf] + ldr r1, _08097CF8 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xf4 + lsls r0, r0, #4 + strh r0, [r2] + adds r1, #0x68 + adds r0, #0xc0 + strh r0, [r1] + movs r0, #0xa5 + lsls r0, r0, #1 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_08097CF8: .4byte gUnk_03000F50 + + thumb_func_start sub_08097CFC +sub_08097CFC: @ 0x08097CFC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrh r1, [r5, #0x2e] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + bne _08097D40 + ldr r0, _08097D38 @ =gUnk_0812336A + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08097D3C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0801AF18 + b _08097D6C + .align 2, 0 +_08097D38: .4byte gUnk_0812336A +_08097D3C: .4byte gUnk_03000BF0 +_08097D40: + ldr r0, _08097D70 @ =gUnk_08123344 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _08097D74 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0801AF18 +_08097D6C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08097D70: .4byte gUnk_08123344 +_08097D74: .4byte gUnk_03000BF0 + + thumb_func_start sub_08097D78 +sub_08097D78: @ 0x08097D78 + push {lr} + ldr r2, _08097D8C @ =gUnk_08123384 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08097D8C: .4byte gUnk_08123384 + + thumb_func_start sub_08097D90 +sub_08097D90: @ 0x08097D90 + push {r4, lr} + adds r4, r0, #0 + movs r3, #1 + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x38 + strb r2, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08097DCC +sub_08097DCC: @ 0x08097DCC + push {lr} + bl sub_080042B8 + pop {pc} + + thumb_func_start sub_08097DD4 +sub_08097DD4: @ 0x08097DD4 + push {lr} + ldr r2, _08097DE8 @ =gUnk_081233B8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08097DE8: .4byte gUnk_081233B8 + + thumb_func_start sub_08097DEC +sub_08097DEC: @ 0x08097DEC + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08016A04 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _08097E46 + cmp r0, #1 + bgt _08097E0A + cmp r0, #0 + beq _08097E1C + b _08097EA2 +_08097E0A: + cmp r0, #3 + bgt _08097EA2 + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + b _08097E9C +_08097E1C: + ldrh r2, [r4, #0x2e] + movs r1, #0x10 + rsbs r1, r1, #0 + adds r0, r1, #0 + ands r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + ands r1, r0 + strh r1, [r4, #0x32] + adds r0, r4, #0 + bl sub_08097EB8 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08097EA2 + adds r1, r0, #0 + adds r1, #0xb + adds r0, r4, #0 + bl sub_0801D2B4 + b _08097EA2 +_08097E46: + ldrb r0, [r4, #0xb] + strb r0, [r4, #0x1e] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x19 + cmp r0, #1 + beq _08097E76 + cmp r0, #1 + bgt _08097E5C + cmp r0, #0 + beq _08097E68 + b _08097E9C +_08097E5C: + cmp r0, #2 + bne _08097E9C + adds r0, r4, #0 + movs r1, #0xd + bl sub_0801D2B4 +_08097E68: + ldrb r0, [r4, #0x1b] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4, #0x1b] + b _08097E9C +_08097E76: + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x1b] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0xb + bl sub_0801D2B4 +_08097E9C: + adds r0, r4, #0 + bl sub_08097F34 +_08097EA2: + pop {r4, pc} + + thumb_func_start sub_08097EA4 +sub_08097EA4: @ 0x08097EA4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + beq _08097EB4 + adds r0, r1, #0 + bl sub_08097F10 +_08097EB4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_08097EB8 +sub_08097EB8: @ 0x08097EB8 + push {r4, r5, r6, lr} + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r3, _08097F04 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r5, r1, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r0, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + ldr r4, _08097F08 @ =gUnk_081233C0 + movs r2, #0 + ldrsh r0, [r4, r2] + ldr r1, _08097F0C @ =0x00007FFF + cmp r0, r1 + beq _08097F00 + adds r6, r1, #0 +_08097EE8: + ldrh r0, [r4, #2] + movs r2, #0 + ldrsh r1, [r4, r2] + adds r1, r5, r1 + movs r2, #1 + bl sub_0800015E + adds r4, #4 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, r6 + bne _08097EE8 +_08097F00: + pop {r4, r5, r6, pc} + .align 2, 0 +_08097F04: .4byte gUnk_03000BF0 +_08097F08: .4byte gUnk_081233C0 +_08097F0C: .4byte 0x00007FFF + + thumb_func_start sub_08097F10 +sub_08097F10: @ 0x08097F10 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08097F30 @ =gUnk_03000BF0 + movs r2, #0xc + ldrsh r1, [r0, r2] + ldrh r0, [r0, #8] + subs r1, r1, r0 + adds r0, r4, #0 + bl sub_08097F60 + adds r1, r4, #0 + adds r1, #0x70 + ldrh r1, [r1] + subs r1, r1, r0 + strh r1, [r4, #0x32] + pop {r4, pc} + .align 2, 0 +_08097F30: .4byte gUnk_03000BF0 + + thumb_func_start sub_08097F34 +sub_08097F34: @ 0x08097F34 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x32 + ldrsh r1, [r4, r0] + ldr r0, _08097F5C @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + subs r1, r1, r0 + adds r0, r4, #0 + bl sub_08097F60 + ldrh r1, [r4, #0x32] + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x70 + strh r1, [r0] + adds r0, r4, #0 + bl sub_08097F10 + pop {r4, pc} + .align 2, 0 +_08097F5C: .4byte gUnk_03000BF0 + + thumb_func_start sub_08097F60 +sub_08097F60: @ 0x08097F60 + push {lr} + ldrb r2, [r0, #0xa] + cmp r2, #1 + bne _08097F74 + ldrb r0, [r0, #0x1e] + lsrs r0, r0, #1 + cmp r0, #1 + bne _08097F7C + asrs r1, r1, #3 + b _08097F7E +_08097F74: + cmp r2, #1 + blt _08097F7E + cmp r2, #3 + bgt _08097F7E +_08097F7C: + asrs r1, r1, #1 +_08097F7E: + adds r0, r1, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08097F84 +sub_08097F84: @ 0x08097F84 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08097FAC @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08097F98 + bl sub_0805E780 +_08097F98: + ldr r0, _08097FB0 @ =gUnk_08123410 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_08097FAC: .4byte gUnk_03003F80 +_08097FB0: .4byte gUnk_08123410 + + thumb_func_start sub_08097FB4 +sub_08097FB4: @ 0x08097FB4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + movs r2, #0 + strh r1, [r4, #0x24] + str r1, [r4, #0x6c] + adds r1, r4, #0 + adds r1, #0x7a + movs r0, #0x90 + lsls r0, r0, #5 + strh r0, [r1] + strb r2, [r4, #0xe] + movs r0, #0x1e + strb r0, [r4, #0xf] + ldr r1, _08098014 @ =gUnk_0812341C + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + movs r0, #0x80 + lsls r0, r0, #6 + str r0, [r4, #0x74] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08098018 + adds r1, r4, #0 + adds r1, #0x7e + movs r0, #0x40 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #1 + movs r2, #0 + bl sub_080AE008 + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_080042AC + b _08098032 + .align 2, 0 +_08098014: .4byte gUnk_0812341C +_08098018: + ldr r0, [r4, #0x50] + adds r0, #0x60 + ldrh r1, [r0] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + ldr r2, [r4, #0x50] + ldrb r1, [r4, #0xa] + movs r0, #0xd + muls r0, r1, r0 + ldrb r2, [r2, #0x1e] + adds r0, r0, r2 + strb r0, [r4, #0x1e] +_08098032: + adds r0, r4, #0 + bl sub_08098130 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809803C +sub_0809803C: @ 0x0809803C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xa] + cmp r5, #0 + bne _08098070 + bl sub_080042B8 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _08098082 + ldr r0, _0809806C @ =gLinkEntity + strb r5, [r0, #0xf] + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + movs r0, #0xbc + lsls r0, r0, #1 + bl sub_080A3268 + b _08098082 + .align 2, 0 +_0809806C: .4byte gLinkEntity +_08098070: + ldr r2, [r4, #0x50] + ldrb r1, [r4, #0xa] + movs r0, #0xd + muls r0, r1, r0 + ldrb r1, [r2, #0x1e] + adds r0, r0, r1 + strb r0, [r4, #0x1e] + ldrb r0, [r2, #0xc] + strb r0, [r4, #0xc] +_08098082: + pop {r4, r5, pc} + + thumb_func_start sub_08098084 +sub_08098084: @ 0x08098084 + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x6c] + movs r0, #0xa0 + lsls r0, r0, #0xd + cmp r1, r0 + bls _080980A8 + ldr r0, _080980A4 @ =gUnk_03003F80 + ldr r1, [r0, #0x30] + movs r2, #0x80 + orrs r1, r2 + str r1, [r0, #0x30] + bl sub_0805E780 + b _0809812E + .align 2, 0 +_080980A4: .4byte gUnk_03003F80 +_080980A8: + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080980D8 + adds r0, r4, #0 + bl sub_080042B8 + adds r2, r4, #0 + adds r2, #0x7e + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + ldr r1, _080980D4 @ =0xFFFF0000 + cmp r0, r1 + bne _080980E6 + movs r0, #0x40 + strh r0, [r2] + movs r0, #0xbc + lsls r0, r0, #1 + bl sub_080A3268 + b _080980E6 + .align 2, 0 +_080980D4: .4byte 0xFFFF0000 +_080980D8: + ldr r2, [r4, #0x50] + ldrb r1, [r4, #0xa] + movs r0, #0xd + muls r0, r1, r0 + ldrb r2, [r2, #0x1e] + adds r0, r0, r2 + strb r0, [r4, #0x1e] +_080980E6: + ldr r0, [r4, #0x6c] + movs r1, #0xa0 + lsls r1, r1, #5 + adds r0, r0, r1 + str r0, [r4, #0x6c] + ldr r0, [r4, #0x70] + ldr r1, [r4, #0x74] + adds r0, r0, r1 + str r0, [r4, #0x70] + adds r2, r4, #0 + adds r2, #0x72 + ldrh r1, [r2] + movs r0, #0x1f + ands r0, r1 + strh r0, [r2] + ldr r0, [r4, #0x74] + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + str r0, [r4, #0x74] + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _08098128 + movs r0, #0x1e + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xe] + movs r1, #1 + eors r0, r1 + strb r0, [r4, #0xe] +_08098128: + adds r0, r4, #0 + bl sub_08098130 +_0809812E: + pop {r4, pc} + + thumb_func_start sub_08098130 +sub_08098130: @ 0x08098130 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _08098160 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x7a + ldrh r0, [r0] + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, [r4, #0x30] + ldr r1, _08098164 @ =0xFFEC0000 + adds r0, r0, r1 + ldr r1, [r4, #0x6c] + adds r0, r0, r1 + str r0, [r4, #0x30] + pop {r4, pc} + .align 2, 0 +_08098160: .4byte gLinkEntity +_08098164: .4byte 0xFFEC0000 + + thumb_func_start sub_08098168 +sub_08098168: @ 0x08098168 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + bne _080981DA + movs r2, #1 + movs r3, #1 + strb r3, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4, #0x19] + strb r3, [r4, #0xe] + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x68 + strb r5, [r0] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A30 + ldr r1, _080981CC @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r3, #0 + movs r0, #0xbd + lsls r0, r0, #6 + strh r0, [r2] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080981D4 + adds r1, #0x68 + ldr r0, _080981D0 @ =0x0000060A + b _080981D8 + .align 2, 0 +_080981CC: .4byte gUnk_03000F50 +_080981D0: .4byte 0x0000060A +_080981D4: + adds r1, #0x68 + ldr r0, _08098208 @ =0x00000808 +_080981D8: + strh r0, [r1] +_080981DA: + ldrb r0, [r4, #0xa] + adds r3, r4, #0 + adds r3, #0x68 + cmp r0, #0 + beq _08098222 + ldr r0, _0809820C @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r0, _08098210 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + subs r1, r1, r0 + movs r0, #0xf8 + lsls r0, r0, #1 + cmp r1, r0 + ble _08098214 + ldrb r1, [r3] + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0x3f + bgt _08098222 + adds r0, r1, #1 + b _08098220 + .align 2, 0 +_08098208: .4byte 0x00000808 +_0809820C: .4byte gLinkEntity +_08098210: .4byte gUnk_03000BF0 +_08098214: + ldrb r1, [r3] + movs r0, #0 + ldrsb r0, [r3, r0] + cmp r0, #0 + ble _08098222 + subs r0, r1, #1 +_08098220: + strb r0, [r3] +_08098222: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809823C + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + adds r0, #1 + movs r1, #0xf + ands r0, r1 + strb r0, [r4, #0xf] +_0809823C: + ldr r1, _0809825C @ =gUnk_08123484 + ldrb r0, [r4, #0xf] + adds r0, r0, r1 + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x62 + strb r0, [r2] + ldrb r0, [r4, #0xf] + adds r0, r0, r1 + ldrb r1, [r3] + ldrb r0, [r0] + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x63 + strb r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_0809825C: .4byte gUnk_08123484 + + thumb_func_start sub_08098260 +sub_08098260: @ 0x08098260 + push {lr} + ldr r2, _08098274 @ =gUnk_08123494 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08098274: .4byte gUnk_08123494 + + thumb_func_start sub_08098278 +sub_08098278: @ 0x08098278 + push {lr} + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #5 + orrs r1, r2 + strb r1, [r3] + bl sub_08098340 + pop {pc} + .align 2, 0 + + thumb_func_start sub_08098294 +sub_08098294: @ 0x08098294 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08098418 + cmp r0, #0 + beq _080982FA + movs r5, #0 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x62 + strb r5, [r0] + adds r0, #1 + strb r5, [r0] + adds r0, #0xf + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x70 + ldrh r1, [r1] + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r0, #0xb5 + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r4, #0 + movs r1, #0x1e + bl sub_0805E4E0 + bl sub_08079F8C + cmp r0, #0 + beq _080982FA + ldr r2, _080982FC @ =gUnk_03003F80 + movs r0, #0x90 + strb r0, [r2, #6] + movs r0, #5 + strb r0, [r2, #0xc] + ldr r0, [r2, #0x30] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r1, _08098300 @ =gLinkEntity + strh r5, [r1, #0x2c] + strh r5, [r1, #0x30] + ldrb r0, [r1, #0x14] + lsls r0, r0, #2 + strb r0, [r1, #0x15] +_080982FA: + pop {r4, r5, pc} + .align 2, 0 +_080982FC: .4byte gUnk_03003F80 +_08098300: .4byte gLinkEntity + + thumb_func_start sub_08098304 +sub_08098304: @ 0x08098304 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809833C + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0809832C + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + b _08098336 +_0809832C: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CD48 +_08098336: + adds r0, r4, #0 + bl sub_08098340 +_0809833C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08098340 +sub_08098340: @ 0x08098340 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x74 + movs r1, #0x3c + strh r1, [r2] + bl sub_08098354 + pop {pc} + + thumb_func_start sub_08098354 +sub_08098354: @ 0x08098354 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _080983BC + strb r0, [r6, #0xb] + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldr r1, _080983B4 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r1, [r1, #8] + adds r1, #0x10 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r2, r0 + adds r4, r6, #0 + adds r4, #0x70 + strh r2, [r4] + ldrh r0, [r4] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x72 + strh r0, [r1] + ldr r0, _080983B8 @ =0x00004053 + ldrh r1, [r4] + ldrb r2, [r5] + bl sub_0800015E + adds r0, r6, #0 + movs r1, #1 + bl sub_08004260 + b _0809840C + .align 2, 0 +_080983B4: .4byte gUnk_03000BF0 +_080983B8: .4byte 0x00004053 +_080983BC: + movs r0, #1 + strb r0, [r6, #0xb] + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldr r1, _08098410 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, #0x10 + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r2, r0 + adds r4, r6, #0 + adds r4, #0x70 + strh r2, [r4] + ldrh r0, [r4] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x72 + strh r0, [r1] + ldr r0, _08098414 @ =0x00004052 + ldrh r1, [r4] + ldrb r2, [r5] + bl sub_0800015E + adds r0, r6, #0 + movs r1, #0 + bl sub_08004260 +_0809840C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08098410: .4byte gUnk_03000BF0 +_08098414: .4byte 0x00004052 + + thumb_func_start sub_08098418 +sub_08098418: @ 0x08098418 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x70 + ldrh r0, [r6] + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + ldr r1, _08098448 @ =0x00004054 + cmp r0, r1 + bne _0809846C + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809844C + movs r0, #1 + b _08098482 + .align 2, 0 +_08098448: .4byte 0x00004054 +_0809844C: + adds r0, r4, #0 + bl sub_08098484 + ldr r1, _08098468 @ =gUnk_081234A0 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r6] + ldrb r2, [r5] + bl sub_0800015E + b _08098480 + .align 2, 0 +_08098468: .4byte gUnk_081234A0 +_0809846C: + adds r1, r4, #0 + adds r1, #0x74 + movs r2, #0 + movs r0, #0x3c + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x62 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] +_08098480: + movs r0, #0 +_08098482: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08098484 +sub_08098484: @ 0x08098484 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xb] + ldr r4, _080984C4 @ =gUnk_081234AC + cmp r0, #0 + bne _08098492 + ldr r4, _080984C8 @ =gUnk_081234A4 +_08098492: + adds r2, r3, #0 + adds r2, #0x74 + ldrh r0, [r2] + lsrs r0, r0, #2 + movs r1, #6 + ands r0, r1 + adds r4, r4, r0 + ldrb r0, [r4] + adds r1, r3, #0 + adds r1, #0x62 + strb r0, [r1] + ldrb r1, [r4, #1] + adds r0, r3, #0 + adds r0, #0x63 + strb r1, [r0] + ldrh r1, [r2] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080984C2 + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_08004488 +_080984C2: + pop {r4, pc} + .align 2, 0 +_080984C4: .4byte gUnk_081234AC +_080984C8: .4byte gUnk_081234A4 + + thumb_func_start sub_080984CC +sub_080984CC: @ 0x080984CC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080984E8 @ =gUnk_08123504 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0800445C + pop {r4, pc} + .align 2, 0 +_080984E8: .4byte gUnk_08123504 + + thumb_func_start sub_080984EC +sub_080984EC: @ 0x080984EC + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + ldr r2, _08098528 @ =gUnk_081234EC + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r0, #0x48] + ldrb r0, [r0, #0xb] + cmp r0, #1 + bne _08098524 + ldr r0, _0809852C @ =0x00004024 + movs r1, #0x82 + lsls r1, r1, #3 + movs r2, #1 + bl sub_0800015E + ldr r0, _08098530 @ =0x00004026 + ldr r1, _08098534 @ =0x00000411 + movs r2, #1 + bl sub_0800015E + ldr r0, _08098538 @ =0x00004025 + ldr r1, _0809853C @ =0x00000412 + movs r2, #1 + bl sub_0800015E +_08098524: + pop {pc} + .align 2, 0 +_08098528: .4byte gUnk_081234EC +_0809852C: .4byte 0x00004024 +_08098530: .4byte 0x00004026 +_08098534: .4byte 0x00000411 +_08098538: .4byte 0x00004025 +_0809853C: .4byte 0x00000412 + + thumb_func_start nullsub_532 +nullsub_532: @ 0x08098540 + bx lr + .align 2, 0 + + thumb_func_start sub_08098544 +sub_08098544: @ 0x08098544 + push {lr} + ldr r2, _08098558 @ =gUnk_0812350C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08098558: .4byte gUnk_0812350C + + thumb_func_start sub_0809855C +sub_0809855C: @ 0x0809855C + push {r4, r5, lr} + adds r4, r0, #0 + movs r3, #0 + movs r5, #1 + strb r5, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r2, #0x80 + orrs r0, r2 + strb r0, [r4, #0x10] + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + ldrb r1, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x19] + strb r3, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x6e + strb r0, [r1] + subs r1, #4 + movs r0, #0x86 + strb r0, [r1] + strb r3, [r4, #0x16] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080985AC + movs r0, #2 + strb r0, [r4, #0x1c] + b _080985AE +_080985AC: + strb r5, [r4, #0x1c] +_080985AE: + ldr r1, [r4, #0x50] + adds r0, r4, #0 + bl sub_0806FAD8 + adds r0, r4, #0 + bl sub_08098918 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080985C0 +sub_080985C0: @ 0x080985C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080989E4 + cmp r0, #0 + bne _080985CE + b _080986FC +_080985CE: + ldrb r0, [r0, #0xc] + cmp r0, #4 + bls _080985D6 + b _080986E6 +_080985D6: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080985E6 + b _080986EE +_080985E6: + movs r0, #0x3f + ands r0, r1 + subs r0, #4 + cmp r0, #0x1c + bls _080985F2 + b _08098702 +_080985F2: + lsls r0, r0, #2 + ldr r1, _080985FC @ =_08098600 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080985FC: .4byte _08098600 +_08098600: @ jump table + .4byte _080986C4 @ case 0 + .4byte _080986C4 @ case 1 + .4byte _080986C4 @ case 2 + .4byte _08098702 @ case 3 + .4byte _080986C4 @ case 4 + .4byte _080986C4 @ case 5 + .4byte _080986C4 @ case 6 + .4byte _080986C4 @ case 7 + .4byte _080986C4 @ case 8 + .4byte _080986C4 @ case 9 + .4byte _08098702 @ case 10 + .4byte _0809867E @ case 11 + .4byte _080986C4 @ case 12 + .4byte _080986C4 @ case 13 + .4byte _080986C4 @ case 14 + .4byte _08098674 @ case 15 + .4byte _080986E0 @ case 16 + .4byte _08098702 @ case 17 + .4byte _080986E0 @ case 18 + .4byte _08098702 @ case 19 + .4byte _080986C4 @ case 20 + .4byte _080986C4 @ case 21 + .4byte _080986C4 @ case 22 + .4byte _08098702 @ case 23 + .4byte _08098702 @ case 24 + .4byte _0809867E @ case 25 + .4byte _08098702 @ case 26 + .4byte _08098702 @ case 27 + .4byte _080986E0 @ case 28 +_08098674: + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + b _08098702 +_0809867E: + movs r2, #0 + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x63 + strb r2, [r0] + ldrb r1, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x18 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldr r0, [r4, #0x50] + str r2, [r0, #0x54] + adds r0, r4, #0 + bl sub_080988E8 + b _08098702 +_080986C4: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080986E6 + ldr r0, _080986DC @ =gUnk_03003F80 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08098702 + b _080986E6 + .align 2, 0 +_080986DC: .4byte gUnk_03003F80 +_080986E0: + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08098702 +_080986E6: + adds r0, r4, #0 + bl sub_080989C0 + b _08098702 +_080986EE: + adds r0, r4, #0 + bl sub_08098918 + adds r0, r4, #0 + bl sub_08078930 + b _08098702 +_080986FC: + adds r0, r4, #0 + bl sub_080989C0 +_08098702: + pop {r4, pc} + + thumb_func_start sub_08098704 +sub_08098704: @ 0x08098704 + push {lr} + ldr r2, _08098718 @ =gUnk_08123524 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08098718: .4byte gUnk_08123524 + + thumb_func_start sub_0809871C +sub_0809871C: @ 0x0809871C + adds r3, r0, #0 + ldrb r1, [r3, #0x10] + movs r0, #0x80 + movs r2, #0 + orrs r0, r1 + strb r0, [r3, #0x10] + adds r1, r3, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #3 + movs r0, #1 + strb r0, [r1] + ldr r0, _08098754 @ =gLinkEntity + adds r0, #0x3b + ldrb r0, [r0] + subs r1, #4 + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x63 + strb r2, [r0] + ldr r0, [r3, #0x50] + str r2, [r0, #0x54] + ldrb r0, [r3, #0xd] + adds r0, #1 + strb r0, [r3, #0xd] + bx lr + .align 2, 0 +_08098754: .4byte gLinkEntity + + thumb_func_start nullsub_533 +nullsub_533: @ 0x08098758 + bx lr + .align 2, 0 + + thumb_func_start sub_0809875C +sub_0809875C: @ 0x0809875C + adds r0, #0x29 + ldrb r2, [r0] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #0x18 + orrs r1, r2 + strb r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_08098770 +sub_08098770: @ 0x08098770 + push {r4, lr} + adds r4, r0, #0 + bl sub_080043E8 + cmp r0, #2 + beq _0809878C + cmp r0, #2 + bhi _08098786 + cmp r0, #1 + beq _08098792 + b _080987A4 +_08098786: + cmp r0, #3 + beq _08098798 + b _080987A4 +_0809878C: + adds r0, r4, #0 + movs r1, #0xb + b _0809879C +_08098792: + adds r0, r4, #0 + movs r1, #0 + b _0809879C +_08098798: + adds r0, r4, #0 + movs r1, #0xc +_0809879C: + movs r2, #0 + bl CreateFX + b _080987AC +_080987A4: + adds r0, r4, #0 + bl sub_080989C0 + b _080987B0 +_080987AC: + bl sub_0805E780 +_080987B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080987B4 +sub_080987B4: @ 0x080987B4 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080987BC +sub_080987BC: @ 0x080987BC + push {lr} + adds r1, r0, #0 + ldr r0, _080987D0 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _080987CE + adds r0, r1, #0 + bl sub_080987D4 +_080987CE: + pop {pc} + .align 2, 0 +_080987D0: .4byte gUnk_03003F80 + + thumb_func_start sub_080987D4 +sub_080987D4: @ 0x080987D4 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + strb r2, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start sub_080987E0 +sub_080987E0: @ 0x080987E0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0809880C @ =gUnk_08123540 + ldrb r0, [r4, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xd] + cmp r0, #1 + bhi _0809880A + adds r0, r4, #0 + bl sub_080989E4 + cmp r0, #0 + bne _0809880A + adds r0, r4, #0 + bl sub_080989C0 +_0809880A: + pop {r4, pc} + .align 2, 0 +_0809880C: .4byte gUnk_08123540 + + thumb_func_start sub_08098810 +sub_08098810: @ 0x08098810 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xd] + movs r1, #0x30 + strb r1, [r0, #0x1d] + strb r2, [r0, #0xe] + bx lr + .align 2, 0 + + thumb_func_start sub_08098820 +sub_08098820: @ 0x08098820 + push {lr} + adds r2, r0, #0 + ldr r0, _0809884C @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _0809883E + adds r0, r2, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _08098850 +_0809883E: + adds r1, r2, #0 + adds r1, #0x62 + movs r0, #0 + strb r0, [r1] + movs r0, #1 + strb r0, [r2, #0xc] + b _08098856 + .align 2, 0 +_0809884C: .4byte gUnk_03003F80 +_08098850: + adds r0, r2, #0 + bl sub_0806F4E8 +_08098856: + pop {pc} + + thumb_func_start sub_08098858 +sub_08098858: @ 0x08098858 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xe] + cmp r1, #0 + bne _08098878 + movs r0, #1 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x62 + strb r1, [r0] + adds r2, r4, #0 + adds r2, #0x63 + movs r0, #0xfe + strb r0, [r2] + ldr r0, [r4, #0x50] + str r1, [r0, #0x54] +_08098878: + ldr r0, _0809889C @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _08098892 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _080988A0 +_08098892: + adds r0, r4, #0 + bl sub_080989C0 + b _080988B4 + .align 2, 0 +_0809889C: .4byte gUnk_03003F80 +_080988A0: + adds r0, r4, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _080988B4 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080988B4 + bl sub_0805E780 +_080988B4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080988B8 +sub_080988B8: @ 0x080988B8 + push {lr} + adds r2, r0, #0 + ldr r0, _080988CC @ =gUnk_03003F80 + ldrb r0, [r0, #0x1c] + cmp r0, #0 + bne _080988D0 + adds r0, r2, #0 + bl sub_080989C0 + b _080988D8 + .align 2, 0 +_080988CC: .4byte gUnk_03003F80 +_080988D0: + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] +_080988D8: + pop {pc} + .align 2, 0 + + thumb_func_start nullsub_123 +nullsub_123: @ 0x080988DC + bx lr + .align 2, 0 + + thumb_func_start sub_080988E0 +sub_080988E0: @ 0x080988E0 + push {lr} + bl sub_080989C0 + pop {pc} + + thumb_func_start sub_080988E8 +sub_080988E8: @ 0x080988E8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _080988FA + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_080988FA: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _0809890E + adds r0, r4, #0 + bl sub_080989C0 +_0809890E: + pop {r4, pc} + + thumb_func_start sub_08098910 +sub_08098910: @ 0x08098910 + push {lr} + bl sub_080989C0 + pop {pc} + + thumb_func_start sub_08098918 +sub_08098918: @ 0x08098918 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080989E4 + adds r6, r0, #0 + cmp r6, #0 + bne _0809892E + adds r0, r4, #0 + bl sub_080989C0 + b _080989BC +_0809892E: + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r1, [r6, #0x10] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + beq _08098990 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _08098968 + adds r0, #1 + strb r0, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r4, #0x50] + adds r0, r4, #0 + bl sub_0806FAD8 +_08098968: + ldr r2, _0809898C @ =gUnk_08123558 + adds r0, r6, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0xf + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + subs r0, #8 + movs r1, #0 + strh r0, [r4, #0x36] + adds r0, r4, #0 + adds r0, #0x63 + strb r1, [r0] + b _080989BC + .align 2, 0 +_0809898C: .4byte gUnk_08123558 +_08098990: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080989B2 + strb r5, [r4, #0xf] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r4, #0x50] + adds r0, r4, #0 + bl sub_0806FAD8 +_080989B2: + strh r5, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #3 + strb r0, [r1] +_080989BC: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080989C0 +sub_080989C0: @ 0x080989C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080989E4 + cmp r0, #0 + beq _080989D2 + ldr r1, [r4, #0x50] + movs r0, #0 + str r0, [r1, #0x54] +_080989D2: + ldrb r1, [r4, #0xa] + adds r1, #3 + adds r0, r4, #0 + movs r2, #0 + bl CreateFX + bl sub_0805E780 + pop {r4, pc} + + thumb_func_start sub_080989E4 +sub_080989E4: @ 0x080989E4 + push {lr} + ldr r1, [r0, #0x50] + cmp r1, #0 + beq _080989F4 + ldr r0, [r1, #4] + cmp r0, #0 + bne _080989F4 + movs r1, #0 +_080989F4: + adds r0, r1, #0 + pop {pc} + + thumb_func_start sub_080989F8 +sub_080989F8: @ 0x080989F8 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08098A08 + bl sub_0805E780 +_08098A08: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08098A44 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + movs r0, #0x28 + strb r0, [r4, #0x1e] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _08098A38 + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + b _08098A44 +_08098A38: + cmp r0, #2 + bne _08098A44 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_08098A44: + ldr r0, [r4, #0x50] + movs r3, #0x80 + lsls r3, r3, #0xc + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #0 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _08098A76 + ldr r3, [r4, #0x54] + ldrb r1, [r3, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r3, #0x1e] + adds r0, #0x1f + strb r0, [r4, #0x1e] +_08098A76: + pop {r4, pc} + + thumb_func_start sub_08098A78 +sub_08098A78: @ 0x08098A78 + push {lr} + ldr r2, _08098A8C @ =gUnk_08123568 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08098A8C: .4byte gUnk_08123568 + + thumb_func_start sub_08098A90 +sub_08098A90: @ 0x08098A90 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #1 + beq _08098A9C + movs r0, #2 +_08098A9C: + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x7f + ands r0, r1 + adds r0, #0x7f + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + ldr r1, _08098ACC @ =gUnk_08123574 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r0, [r4, #0xb] + adds r1, r1, r0 + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_08098ACC: .4byte gUnk_08123574 + + thumb_func_start sub_08098AD0 +sub_08098AD0: @ 0x08098AD0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08098AE6 + ldrb r0, [r1, #0xc] + adds r0, #1 + strb r0, [r1, #0xc] +_08098AE6: + pop {pc} + + thumb_func_start sub_08098AE8 +sub_08098AE8: @ 0x08098AE8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08098B08 + movs r0, #0xfe + ands r0, r1 + strb r0, [r4] + ldr r0, _08098B0C @ =0x0000021B + bl sub_08004488 +_08098B08: + pop {r4, pc} + .align 2, 0 +_08098B0C: .4byte 0x0000021B + + thumb_func_start sub_08098B10 +sub_08098B10: @ 0x08098B10 + push {lr} + ldr r2, _08098B24 @ =gUnk_08123664 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08098B24: .4byte gUnk_08123664 + + thumb_func_start sub_08098B28 +sub_08098B28: @ 0x08098B28 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r2, [r5, #0xa] + lsls r2, r2, #1 + ldr r0, _08098BD4 @ =gUnk_0812366C + adds r2, r2, r0 + movs r3, #1 + movs r4, #1 + strb r4, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r5, #0x18] + ldrb r0, [r5, #0xa] + strb r0, [r5, #0x1e] + ldrb r0, [r2] + adds r1, r5, #0 + adds r1, #0x82 + strb r0, [r1] + ldrb r0, [r2, #1] + adds r2, r5, #0 + adds r2, #0x83 + strb r0, [r2] + ldrb r0, [r1] + lsrs r0, r0, #1 + ldrh r1, [r5, #0x2e] + subs r1, r1, r0 + adds r0, r5, #0 + adds r0, #0x78 + strh r1, [r0] + ldrb r0, [r2] + lsrs r0, r0, #1 + ldrh r1, [r5, #0x32] + subs r1, r1, r0 + subs r2, #9 + strh r1, [r2] + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _08098BD8 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r6, #0x32 + ldrsh r0, [r5, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r6, r5, #0 + adds r6, #0x80 + strh r1, [r6] + adds r7, r5, #0 + adds r7, #0x38 + strb r4, [r7] + adds r0, r5, #0 + bl sub_08016A04 + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _08098BCA + ldr r0, _08098BDC @ =0x00004074 + ldrh r1, [r6] + subs r1, #0x40 + ldrb r2, [r7] + bl sub_0800015E +_08098BCA: + adds r0, r5, #0 + bl sub_08098BE8 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08098BD4: .4byte gUnk_0812366C +_08098BD8: .4byte gUnk_03000BF0 +_08098BDC: .4byte 0x00004074 + + thumb_func_start sub_08098BE0 +sub_08098BE0: @ 0x08098BE0 + push {lr} + bl sub_08098BE8 + pop {pc} + + thumb_func_start sub_08098BE8 +sub_08098BE8: @ 0x08098BE8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _08098C28 @ =gUnk_03003F80 + ldr r0, [r6, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08098C26 + ldr r4, _08098C2C @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_08098C30 + cmp r0, #0 + beq _08098C26 + bl sub_08079F8C + cmp r0, #0 + beq _08098C26 + movs r1, #0x36 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _08098C26 + movs r0, #1 + strb r0, [r6, #0x14] + adds r0, r5, #0 + adds r0, #0x80 + ldrh r1, [r0] + adds r0, r4, #0 + bl sub_0807AAF8 +_08098C26: + pop {r4, r5, r6, pc} + .align 2, 0 +_08098C28: .4byte gUnk_03003F80 +_08098C2C: .4byte gLinkEntity + + thumb_func_start sub_08098C30 +sub_08098C30: @ 0x08098C30 + push {r4, lr} + adds r3, r0, #0 + movs r4, #0 + movs r0, #0x2e + ldrsh r2, [r1, r0] + adds r0, r3, #0 + adds r0, #0x78 + ldrh r0, [r0] + subs r2, r2, r0 + movs r0, #0x32 + ldrsh r1, [r1, r0] + adds r0, r3, #0 + adds r0, #0x7a + ldrh r0, [r0] + subs r1, r1, r0 + adds r0, r3, #0 + adds r0, #0x82 + ldrb r0, [r0] + cmp r2, r0 + bhi _08098C64 + adds r0, r3, #0 + adds r0, #0x83 + ldrb r0, [r0] + cmp r1, r0 + bhi _08098C64 + movs r4, #1 +_08098C64: + adds r0, r4, #0 + pop {r4, pc} + + thumb_func_start sub_08098C68 +sub_08098C68: @ 0x08098C68 + push {lr} + ldr r2, _08098C7C @ =gUnk_08123674 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08098C7C: .4byte gUnk_08123674 + + thumb_func_start sub_08098C80 +sub_08098C80: @ 0x08098C80 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0 + movs r5, #1 + strb r5, [r4, #0xc] + strb r0, [r4, #0xe] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _08098CC8 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r6, #0x32 + ldrsh r0, [r4, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] + ldr r0, _08098CCC @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08098CD0 + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + b _08098CD6 + .align 2, 0 +_08098CC8: .4byte gUnk_03000BF0 +_08098CCC: .4byte gUnk_03003F80 +_08098CD0: + adds r0, r4, #0 + adds r0, #0x38 + strb r5, [r0] +_08098CD6: + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + adds r0, #0x80 + ldrh r1, [r0] + subs r1, #0x40 + movs r0, #0x47 + movs r2, #1 + bl sub_08000148 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start nullsub_124 +nullsub_124: @ 0x08098CF0 + bx lr + .align 2, 0 + + thumb_func_start sub_08098CF4 +sub_08098CF4: @ 0x08098CF4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _08098D14 + ldr r0, _08098D10 @ =gUnk_0812367C + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _08098D1A + .align 2, 0 +_08098D10: .4byte gUnk_0812367C +_08098D14: + adds r0, r2, #0 + bl sub_08098E3C +_08098D1A: + pop {pc} + + thumb_func_start sub_08098D1C +sub_08098D1C: @ 0x08098D1C + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #1 + strb r5, [r4, #0xc] + ldr r0, _08098D40 @ =0x0000FFF0 + strh r0, [r4, #0x36] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + cmp r0, #0 + beq _08098D44 + bl sub_0807CBE4 + cmp r0, #0 + bne _08098D44 + strb r5, [r4, #0xc] + b _08098D5A + .align 2, 0 +_08098D40: .4byte 0x0000FFF0 +_08098D44: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_08098E88 +_08098D5A: + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + pop {r4, r5, pc} + + thumb_func_start sub_08098D6C +sub_08098D6C: @ 0x08098D6C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08098D9A + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x2d + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x43 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _08098D9A + ldrh r0, [r1, #0x32] + adds r0, #8 + strh r0, [r1, #0x32] +_08098D9A: + pop {r4, pc} + + thumb_func_start sub_08098D9C +sub_08098D9C: @ 0x08098D9C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08098DC2 + movs r0, #3 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + subs r0, #7 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2, #0x18] + adds r0, r2, #0 + bl sub_08098E88 +_08098DC2: + pop {pc} + + thumb_func_start sub_08098DC4 +sub_08098DC4: @ 0x08098DC4 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, _08098E2C @ =gLinkEntity + adds r1, r6, #0 + movs r2, #8 + movs r3, #8 + bl sub_0800419C + cmp r0, #0 + beq _08098E24 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0806FA24 + adds r0, r5, #0 + bl sub_08004542 + adds r0, r6, #0 + bl sub_08004542 + adds r0, r6, #0 + adds r0, #0x38 + movs r4, #1 + strb r4, [r0] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0806FAB0 + ldr r1, _08098E30 @ =gUnk_03003F80 + movs r0, #0x1f + strb r0, [r1, #0xc] + adds r0, r1, #0 + adds r0, #0x38 + strb r4, [r0] + ldrb r0, [r5, #0xb] + adds r1, #0x39 + strb r0, [r1] + movs r1, #4 + strb r1, [r5, #0xc] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bne _08098E20 + movs r0, #0x23 + bl sub_0807CD04 +_08098E20: + bl sub_08077B20 +_08098E24: + adds r0, r5, #0 + bl sub_080042B8 + pop {r4, r5, r6, pc} + .align 2, 0 +_08098E2C: .4byte gLinkEntity +_08098E30: .4byte gUnk_03003F80 + + thumb_func_start sub_08098E34 +sub_08098E34: @ 0x08098E34 + push {lr} + bl sub_080042B8 + pop {pc} + + thumb_func_start sub_08098E3C +sub_08098E3C: @ 0x08098E3C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08098E5E + movs r2, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_080042AC +_08098E5E: + ldrb r1, [r4, #0xa] + movs r0, #2 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + lsls r0, r0, #1 + ldr r1, _08098E84 @ =gUnk_08123690 + adds r0, r0, r1 + ldrh r1, [r0] + ldrh r2, [r0, #2] + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_08098E84: .4byte gUnk_08123690 + + thumb_func_start sub_08098E88 +sub_08098E88: @ 0x08098E88 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x82 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08098EB0 + ldr r3, _08098ED8 @ =0xFFFF0000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #8 + strb r0, [r1] +_08098EB0: + movs r0, #0x82 + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _08098ED4 + ldr r3, _08098EDC @ =0xFFFE0000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0x10 + strb r0, [r1] +_08098ED4: + pop {r4, r5, pc} + .align 2, 0 +_08098ED8: .4byte 0xFFFF0000 +_08098EDC: .4byte 0xFFFE0000 + + thumb_func_start sub_08098EE0 +sub_08098EE0: @ 0x08098EE0 + push {lr} + ldr r2, _08098EF4 @ =gUnk_081236DC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08098EF4: .4byte gUnk_081236DC + + thumb_func_start sub_08098EF8 +sub_08098EF8: @ 0x08098EF8 + push {lr} + adds r3, r0, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #5 + orrs r1, r2 + strb r1, [r3] + bl sub_08098FCC + pop {pc} + .align 2, 0 + + thumb_func_start sub_08098F14 +sub_08098F14: @ 0x08098F14 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_080990EC + cmp r0, #0 + beq _08098F84 + movs r6, #0 + movs r0, #2 + strb r0, [r5, #0xc] + adds r0, r5, #0 + adds r0, #0x74 + ldrh r0, [r0] + adds r1, r5, #0 + adds r1, #0x70 + ldrh r1, [r1] + adds r4, r5, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + adds r0, r5, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r1, r5, #0 + adds r1, #0x72 + ldrh r1, [r1] + ldrb r2, [r4] + bl sub_0800015E + movs r0, #0x99 + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r5, #0 + movs r1, #0x1e + bl sub_0805E4E0 + bl sub_08079F8C + cmp r0, #0 + beq _08098F84 + ldr r2, _08098F88 @ =gUnk_03003F80 + movs r0, #0x98 + strb r0, [r2, #6] + movs r0, #5 + strb r0, [r2, #0xc] + ldr r0, [r2, #0x30] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r1, _08098F8C @ =gLinkEntity + strh r6, [r1, #0x2c] + strh r6, [r1, #0x30] + ldrb r0, [r1, #0x14] + lsls r0, r0, #2 + strb r0, [r1, #0x15] +_08098F84: + pop {r4, r5, r6, pc} + .align 2, 0 +_08098F88: .4byte gUnk_03003F80 +_08098F8C: .4byte gLinkEntity + + thumb_func_start sub_08098F90 +sub_08098F90: @ 0x08098F90 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08098FC8 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _08098FB8 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + b _08098FC2 +_08098FB8: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CD48 +_08098FC2: + adds r0, r4, #0 + bl sub_08098FCC +_08098FC8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08098FCC +sub_08098FCC: @ 0x08098FCC + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x84 + movs r1, #0x3c + strh r1, [r2] + bl sub_08098FE0 + pop {pc} + + thumb_func_start sub_08098FE0 +sub_08098FE0: @ 0x08098FE0 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _0809906C + strb r0, [r6, #0xb] + movs r0, #0x2e + ldrsh r2, [r6, r0] + ldr r1, _08099060 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r1, [r1, #8] + adds r1, #0x10 + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r2, r0 + adds r5, r6, #0 + adds r5, #0x70 + strh r2, [r5] + subs r2, #0x40 + adds r7, r6, #0 + adds r7, #0x72 + strh r2, [r7] + ldrh r0, [r5] + adds r4, r6, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x74 + strh r0, [r1] + ldrh r0, [r7] + ldrb r1, [r4] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r0, _08099064 @ =0x00004057 + ldrh r1, [r5] + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _08099068 @ =0x00004058 + ldrh r1, [r7] + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + movs r1, #1 + bl sub_08004260 + b _080990DC + .align 2, 0 +_08099060: .4byte gUnk_03000BF0 +_08099064: .4byte 0x00004057 +_08099068: .4byte 0x00004058 +_0809906C: + movs r0, #1 + strb r0, [r6, #0xb] + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _080990E0 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + adds r0, #0x10 + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r6, #0 + adds r5, #0x70 + strh r1, [r5] + subs r1, #1 + adds r7, r6, #0 + adds r7, #0x72 + strh r1, [r7] + ldrh r0, [r5] + adds r4, r6, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x74 + strh r0, [r1] + ldrh r0, [r7] + ldrb r1, [r4] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x76 + strh r0, [r1] + ldr r0, _080990E4 @ =0x00004055 + ldrh r1, [r5] + ldrb r2, [r4] + bl sub_0800015E + ldr r0, _080990E8 @ =0x00004056 + ldrh r1, [r7] + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + movs r1, #0 + bl sub_08004260 +_080990DC: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080990E0: .4byte gUnk_03000BF0 +_080990E4: .4byte 0x00004055 +_080990E8: .4byte 0x00004056 + + thumb_func_start sub_080990EC +sub_080990EC: @ 0x080990EC + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x72 + ldrh r0, [r6] + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + ldr r1, _0809911C @ =0x00004059 + cmp r0, r1 + bne _08099140 + adds r1, r4, #0 + adds r1, #0x84 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _08099120 + movs r0, #1 + b _08099156 + .align 2, 0 +_0809911C: .4byte 0x00004059 +_08099120: + adds r0, r4, #0 + bl sub_08099158 + ldr r1, _0809913C @ =gUnk_081236E8 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + ldrh r1, [r6] + ldrb r2, [r5] + bl sub_0800015E + b _08099154 + .align 2, 0 +_0809913C: .4byte gUnk_081236E8 +_08099140: + adds r1, r4, #0 + adds r1, #0x84 + movs r2, #0 + movs r0, #0x3c + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x62 + strb r2, [r0] + adds r0, #1 + strb r2, [r0] +_08099154: + movs r0, #0 +_08099156: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08099158 +sub_08099158: @ 0x08099158 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xb] + ldr r4, _08099198 @ =gUnk_081236F4 + cmp r0, #0 + bne _08099166 + ldr r4, _0809919C @ =gUnk_081236EC +_08099166: + adds r2, r3, #0 + adds r2, #0x84 + ldrh r0, [r2] + lsrs r0, r0, #2 + movs r1, #6 + ands r0, r1 + adds r4, r4, r0 + ldrb r0, [r4] + adds r1, r3, #0 + adds r1, #0x62 + strb r0, [r1] + ldrb r1, [r4, #1] + adds r0, r3, #0 + adds r0, #0x63 + strb r1, [r0] + ldrh r1, [r2] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _08099194 + ldr r0, _080991A0 @ =0x00000131 + bl sub_08004488 +_08099194: + pop {r4, pc} + .align 2, 0 +_08099198: .4byte gUnk_081236F4 +_0809919C: .4byte gUnk_081236EC +_080991A0: .4byte 0x00000131 + + thumb_func_start sub_080991A4 +sub_080991A4: @ 0x080991A4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #2 + bhi _080991C4 + ldr r0, _080991C0 @ =gUnk_08123734 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _080991CA + .align 2, 0 +_080991C0: .4byte gUnk_08123734 +_080991C4: + adds r0, r2, #0 + bl sub_080996AC +_080991CA: + pop {pc} + + thumb_func_start sub_080991CC +sub_080991CC: @ 0x080991CC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bgt _080991EC + cmp r0, #0 + blt _080991EC + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080991EC + bl sub_0805E780 +_080991EC: + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3f + strb r2, [r0] + subs r1, #5 + movs r0, #0x80 + strb r0, [r1] + ldr r0, _08099244 @ =gUnk_080FD408 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_08099468 + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 + movs r0, #0x84 + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _08099242 + str r4, [r0, #0x50] +_08099242: + pop {r4, pc} + .align 2, 0 +_08099244: .4byte gUnk_080FD408 + + thumb_func_start sub_08099248 +sub_08099248: @ 0x08099248 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + bl sub_0809963C + cmp r0, #0 + beq _08099280 + movs r1, #0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + ldr r0, _0809927C @ =0x000001B3 + bl sub_08004488 + adds r0, r4, #0 + bl sub_08099330 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0809930E + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + b _0809930E + .align 2, 0 +_0809927C: .4byte 0x000001B3 +_08099280: + adds r0, r4, #0 + bl sub_0800442E + cmp r0, #0 + bne _0809930E + adds r7, r4, #0 + adds r7, #0x70 + ldrh r0, [r7] + adds r6, r4, #0 + adds r6, #0x38 + ldrb r1, [r6] + bl sub_080002B0 + adds r5, r0, #0 + ldr r0, _080992B8 @ =0x0000405A + cmp r5, r0 + beq _0809930E + adds r0, r5, #0 + bl sub_08099618 + cmp r0, #1 + beq _080992BC + cmp r0, #1 + blo _080992DC + cmp r0, #2 + beq _08099308 + b _0809930E + .align 2, 0 +_080992B8: .4byte 0x0000405A +_080992BC: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x16 + strb r0, [r4, #0xe] + adds r0, r5, #0 + subs r0, #0x5b + movs r1, #3 + ands r0, r1 + lsls r0, r0, #3 + strb r0, [r4, #0x15] + movs r0, #0x20 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_080994B8 + b _0809930E +_080992DC: + movs r0, #0xf + movs r1, #0xd + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _080992F2 + adds r0, r4, #0 + bl sub_0806FA24 +_080992F2: + adds r0, r4, #0 + adds r0, #0x6c + ldrh r0, [r0] + ldrh r1, [r7] + ldrb r2, [r6] + bl sub_0800015E + adds r0, r4, #0 + bl sub_0805E7BC + b _0809930E +_08099308: + adds r0, r4, #0 + adds r0, #0x6c + strh r5, [r0] +_0809930E: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_08099310 +sub_08099310: @ 0x08099310 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809953C + cmp r0, #0 + beq _0809932E + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08099468 + movs r0, #0xd9 + lsls r0, r0, #1 + bl sub_08004488 +_0809932E: + pop {r4, pc} + + thumb_func_start sub_08099330 +sub_08099330: @ 0x08099330 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809963C + adds r1, r0, #0 + cmp r1, #0 + bne _0809935E + ldrb r0, [r4, #0xe] + cmp r0, #1 + bls _0809934A + subs r0, #2 + strb r0, [r4, #0xe] + b _0809934C +_0809934A: + strb r1, [r4, #0xe] +_0809934C: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08099364 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0805EC60 + b _080993CA +_0809935E: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] +_08099364: + movs r1, #0x80 + lsls r1, r1, #1 + ldr r2, _0809939C @ =gUnk_08123748 + ldrb r0, [r4, #0xe] + lsrs r0, r0, #5 + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r2, [r0] + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _080993A0 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r3, [r0] + adds r0, r4, #0 + movs r1, #0x53 + movs r2, #0 + bl sub_080A2A3C + movs r0, #0x72 + bl sub_080A3268 + b _080993BA + .align 2, 0 +_0809939C: .4byte gUnk_08123748 +_080993A0: + cmp r0, #2 + bne _080993BA + adds r0, r4, #0 + adds r0, #0x86 + ldrh r3, [r0] + adds r0, r4, #0 + movs r1, #0x52 + movs r2, #0 + bl sub_080A2A3C + movs r0, #0x72 + bl sub_080A3268 +_080993BA: + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_080993CA: + pop {r4, pc} + + thumb_func_start sub_080993CC +sub_080993CC: @ 0x080993CC + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _080993E2 + bl sub_0805E780 + b _08099466 +_080993E2: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x30 + bne _08099400 + adds r0, r5, #0 + adds r0, #0x6c + ldrh r0, [r0] + adds r1, r5, #0 + adds r1, #0x70 + ldrh r1, [r1] + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_08099400: + movs r1, #0x80 + lsls r1, r1, #1 + ldrb r0, [r5, #0xe] + movs r2, #0x3c + subs r2, r2, r0 + lsls r2, r2, #5 + adds r2, r2, r1 + adds r0, r5, #0 + movs r3, #0 + bl sub_0805EC9C + ldrb r1, [r5, #0xe] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08099466 + movs r0, #0xf + movs r1, #0x11 + movs r2, #0x40 + bl sub_080A2960 + adds r6, r0, #0 + cmp r6, #0 + beq _08099466 + bl sub_08000E50 + adds r4, r0, #0 + asrs r0, r4, #0x10 + movs r1, #9 + bl __modsi3 + adds r2, r0, #0 + subs r2, #4 + movs r3, #0xf + ands r3, r4 + adds r4, r6, #0 + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4] + lsls r2, r2, #0x10 + rsbs r3, r3, #0 + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0806FA48 +_08099466: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08099468 +sub_08099468: @ 0x08099468 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0x2e + ldrsh r1, [r6, r0] + ldr r2, _080994B0 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r6, #0 + adds r4, #0x70 + strh r1, [r4] + ldrh r0, [r4] + adds r5, r6, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r6, #0 + adds r1, #0x6c + strh r0, [r1] + ldr r0, _080994B4 @ =0x0000405A + ldrh r1, [r4] + ldrb r2, [r5] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_080994B0: .4byte gUnk_03000BF0 +_080994B4: .4byte 0x0000405A + + thumb_func_start sub_080994B8 +sub_080994B8: @ 0x080994B8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r0, _08099530 @ =0x000001B1 + bl sub_08004488 + adds r0, r5, #0 + adds r0, #0x6c + ldrh r0, [r0] + adds r6, r5, #0 + adds r6, #0x70 + ldrh r1, [r6] + adds r4, r5, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + ldrb r0, [r4] + cmp r0, #2 + bne _080994F8 + ldrh r0, [r6] + movs r1, #1 + bl sub_080002B0 + ldr r1, _08099534 @ =0x0000405A + cmp r0, r1 + bne _080994F8 + movs r0, #0xc4 + lsls r0, r0, #2 + ldrh r1, [r6] + movs r2, #1 + bl sub_08000152 +_080994F8: + adds r2, r5, #0 + adds r2, #0x70 + ldr r1, _08099538 @ =gUnk_080B4488 + ldrb r0, [r5, #0x15] + lsrs r0, r0, #3 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + ldrh r2, [r2] + adds r0, r0, r2 + adds r1, r5, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x79 + beq _08099524 + cmp r0, #0x77 + bne _0809952C +_08099524: + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #0xfe + strb r0, [r1] +_0809952C: + pop {r4, r5, r6, pc} + .align 2, 0 +_08099530: .4byte 0x000001B1 +_08099534: .4byte 0x0000405A +_08099538: .4byte gUnk_080B4488 + + thumb_func_start sub_0809953C +sub_0809953C: @ 0x0809953C + push {r4, lr} + adds r4, r0, #0 + bl sub_0800442E + cmp r0, #0 + bne _08099612 + adds r0, r4, #0 + bl sub_080AEFE0 + adds r0, r4, #0 + bl sub_0800445C + ldrb r1, [r4, #0xe] + cmp r1, #0 + beq _08099570 + ldrh r0, [r4, #0x24] + adds r0, #0x10 + strh r0, [r4, #0x24] + subs r0, r1, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _08099570 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] +_08099570: + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + cmp r0, #1 + beq _080995A0 + cmp r0, #1 + bgt _08099582 + cmp r0, #0 + beq _08099588 + b _080995E6 +_08099582: + cmp r0, #2 + beq _080995BA + b _080995E6 +_08099588: + ldrh r1, [r4, #0x2a] + movs r0, #0xe + ands r0, r1 + cmp r0, #0 + beq _08099612 + ldrh r1, [r4, #0x32] + movs r0, #0xf + ands r0, r1 + subs r0, #7 + cmp r0, #2 + bls _080995D0 + b _080995DE +_080995A0: + ldrh r1, [r4, #0x2a] + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _08099612 + ldrh r1, [r4, #0x2e] + movs r0, #0xf + ands r0, r1 + subs r0, #7 + cmp r0, #2 + bls _080995FE + b _080995DE +_080995BA: + ldrh r1, [r4, #0x2a] + movs r0, #0xe0 + ands r0, r1 + cmp r0, #0 + beq _08099612 + ldrh r1, [r4, #0x32] + movs r0, #0xf + ands r0, r1 + subs r0, #7 + cmp r0, #2 + bhi _080995DE +_080995D0: + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + adds r0, #8 + strh r0, [r4, #0x32] + movs r0, #1 + b _08099614 +_080995DE: + adds r0, r4, #0 + bl sub_0809969C + b _08099612 +_080995E6: + ldrh r1, [r4, #0x2a] + movs r0, #0xe0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + beq _08099612 + ldrh r1, [r4, #0x2e] + movs r0, #0xf + ands r0, r1 + subs r0, #7 + cmp r0, #2 + bhi _0809960C +_080995FE: + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + adds r0, #8 + strh r0, [r4, #0x2e] + movs r0, #1 + b _08099614 +_0809960C: + adds r0, r4, #0 + bl sub_0809969C +_08099612: + movs r0, #0 +_08099614: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08099618 +sub_08099618: @ 0x08099618 + push {lr} + adds r2, r0, #0 + ldr r1, _08099620 @ =gUnk_08123750 + b _08099630 + .align 2, 0 +_08099620: .4byte gUnk_08123750 +_08099624: + ldrh r0, [r1] + cmp r0, r2 + bne _0809962E + ldrh r0, [r1, #2] + b _08099638 +_0809962E: + adds r1, #4 +_08099630: + ldrh r0, [r1] + cmp r0, #0 + bne _08099624 + movs r0, #0 +_08099638: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809963C +sub_0809963C: @ 0x0809963C + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _08099684 + bl sub_0804B128 + adds r4, r0, #0 + ldrh r0, [r4] + bl sub_0807CBE4 + cmp r0, #0 + beq _08099684 + ldr r0, _08099694 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + ldrh r2, [r4, #2] + adds r1, r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + ldrh r0, [r0, #8] + ldrh r6, [r4, #4] + adds r0, r0, r6 + lsls r0, r0, #0x10 + lsrs r3, r0, #0x10 + ldrh r2, [r4, #6] + movs r6, #0x2e + ldrsh r0, [r5, r6] + subs r0, r0, r1 + cmp r2, r0 + blo _08099684 + ldrh r1, [r4, #8] + movs r2, #0x32 + ldrsh r0, [r5, r2] + subs r0, r0, r3 + cmp r1, r0 + bhs _08099698 +_08099684: + adds r0, r5, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x87 + beq _08099698 + movs r0, #0 + b _0809969A + .align 2, 0 +_08099694: .4byte gUnk_03000BF0 +_08099698: + movs r0, #1 +_0809969A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0809969C +sub_0809969C: @ 0x0809969C + push {lr} + movs r1, #0xd + movs r2, #0 + bl CreateFX + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080996AC +sub_080996AC: @ 0x080996AC + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080996BC + bl sub_0805E780 +_080996BC: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080996CE + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 +_080996CE: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #2 + bhi _08099726 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08099706 + movs r0, #0 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x78 + ands r0, r1 + adds r0, #0x78 + adds r1, r4, #0 + adds r1, #0x59 + strb r0, [r1] +_08099706: + adds r0, r4, #0 + bl sub_08004274 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #0x11 + strb r0, [r1] + b _08099730 +_08099726: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_08099730: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08099734 +sub_08099734: @ 0x08099734 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #3 + bhi _08099754 + ldr r0, _08099750 @ =gUnk_081237A0 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _0809975A + .align 2, 0 +_08099750: .4byte gUnk_081237A0 +_08099754: + adds r0, r2, #0 + bl sub_08099D30 +_0809975A: + pop {pc} + + thumb_func_start sub_0809975C +sub_0809975C: @ 0x0809975C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _08099770 + bl sub_0805E780 +_08099770: + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3f + strb r2, [r0] + subs r1, #5 + movs r0, #0x80 + strb r0, [r1] + ldr r0, _080997C8 @ =gUnk_080FD190 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_08099910 + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 + movs r0, #0x85 + movs r1, #4 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _080997C6 + str r4, [r0, #0x50] +_080997C6: + pop {r4, pc} + .align 2, 0 +_080997C8: .4byte gUnk_080FD190 + + thumb_func_start sub_080997CC +sub_080997CC: @ 0x080997CC + push {r4, lr} + adds r4, r0, #0 + bl sub_0809963C + cmp r0, #0 + beq _080997EC + movs r0, #0 + movs r1, #2 + strb r1, [r4, #0xc] + strb r0, [r4, #0xe] + ldr r0, _080997F0 @ =0x000001B3 + bl sub_08004488 + adds r0, r4, #0 + bl sub_080997F4 +_080997EC: + pop {r4, pc} + .align 2, 0 +_080997F0: .4byte 0x000001B3 + + thumb_func_start sub_080997F4 +sub_080997F4: @ 0x080997F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809963C + adds r1, r0, #0 + cmp r1, #0 + bne _08099822 + ldrb r0, [r4, #0xe] + cmp r0, #1 + bls _0809980E + subs r0, #2 + strb r0, [r4, #0xe] + b _08099810 +_0809980E: + strb r1, [r4, #0xe] +_08099810: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _08099828 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_0805EC60 + b _0809987C +_08099822: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] +_08099828: + ldr r1, _08099858 @ =gUnk_081237B0 + ldrb r0, [r4, #0xe] + lsrs r0, r0, #5 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r2, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r4, #0 + movs r3, #0 + bl sub_0805EC9C + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0809986C + cmp r0, #2 + beq _0809985C + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + b _0809986C + .align 2, 0 +_08099858: .4byte gUnk_081237B0 +_0809985C: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r3, [r0] + adds r0, r4, #0 + movs r1, #0x53 + movs r2, #0 + bl sub_080A2A3C +_0809986C: + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_0809987C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08099880 +sub_08099880: @ 0x08099880 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _08099896 + bl sub_0805E780 + b _0809990E +_08099896: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x30 + bne _080998A4 + adds r0, r5, #0 + bl sub_08099C18 +_080998A4: + ldrb r0, [r5, #0xe] + movs r4, #0x3c + subs r4, r4, r0 + lsls r4, r4, #5 + movs r1, #0x80 + lsls r1, r1, #1 + adds r4, r4, r1 + adds r0, r5, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #2 + movs r3, #0 + bl sub_0806FCF4 + movs r0, #0xf + movs r1, #0x11 + movs r2, #0x40 + bl sub_080A2960 + adds r6, r0, #0 + cmp r6, #0 + beq _0809990E + bl sub_08000E50 + adds r4, r0, #0 + asrs r0, r4, #0x10 + movs r1, #0x21 + bl __modsi3 + adds r2, r0, #0 + subs r2, #0x10 + movs r0, #0xf + ands r0, r4 + subs r4, r0, #4 + adds r3, r6, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + lsls r2, r2, #0x10 + lsls r3, r4, #0x10 + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0806FA48 +_0809990E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08099910 +sub_08099910: @ 0x08099910 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r3, _08099968 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r6, r0, #4 + movs r2, #0x3f + ands r6, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r6, r0 + adds r0, r4, #0 + adds r0, #0x6e + strh r6, [r0] + ldrh r2, [r4, #0x2e] + movs r0, #8 + adds r1, r0, #0 + ands r1, r2 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x13 + ldrh r2, [r4, #0x32] + ands r0, r2 + lsls r0, r0, #0x10 + asrs r0, r0, #0x12 + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r1, r0 + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + cmp r1, #2 + beq _08099A4C + cmp r1, #2 + bhi _0809996C + cmp r1, #1 + beq _080999A8 + b _08099972 + .align 2, 0 +_08099968: .4byte gUnk_03000BF0 +_0809996C: + cmp r1, #3 + bne _08099972 + b _08099AF0 +_08099972: + ldr r5, _080999A4 @ =0x00004022 + adds r1, r6, #0 + subs r1, #0x41 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + subs r1, #0x40 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + subs r1, r6, #1 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrb r2, [r4] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0800015E + b _08099BF0 + .align 2, 0 +_080999A4: .4byte 0x00004022 +_080999A8: + adds r5, r6, #0 + subs r5, #0x41 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099A40 @ =0x00004024 + cmp r0, #0x12 + bne _080999C0 + adds r1, #0x55 +_080999C0: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + ldr r7, _08099A44 @ =0x00004022 + adds r1, r6, #0 + subs r1, #0x40 + ldrb r2, [r4] + adds r0, r7, #0 + bl sub_0800015E + adds r5, r6, #0 + subs r5, #0x3f + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099A48 @ =0x00004025 + cmp r0, #0x12 + bne _080999EE + adds r1, #0x56 +_080999EE: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + subs r5, r6, #1 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099A40 @ =0x00004024 + cmp r0, #0x12 + bne _08099A0C + adds r1, #0x55 +_08099A0C: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + ldrb r2, [r4] + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_0800015E + adds r5, r6, #1 + adds r0, r5, #0 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099A48 @ =0x00004025 + cmp r0, #0x12 + bne _08099A32 + adds r1, #0x56 +_08099A32: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + b _08099BF0 + .align 2, 0 +_08099A40: .4byte 0x00004024 +_08099A44: .4byte 0x00004022 +_08099A48: .4byte 0x00004025 +_08099A4C: + adds r7, r6, #0 + subs r7, #0x41 + lsls r0, r7, #0x10 + lsrs r0, r0, #0x10 + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080002C8 + ldr r1, _08099AE4 @ =0x00004023 + cmp r0, #0x12 + bne _08099A66 + adds r1, #0x54 +_08099A66: + ldrb r2, [r5] + adds r0, r1, #0 + adds r1, r7, #0 + bl sub_0800015E + adds r4, r6, #0 + subs r4, #0x40 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r5] + bl sub_080002C8 + ldr r1, _08099AE4 @ =0x00004023 + cmp r0, #0x12 + bne _08099A86 + adds r1, #0x54 +_08099A86: + ldrb r2, [r5] + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_0800015E + ldr r4, _08099AE8 @ =0x00004022 + subs r1, r6, #1 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrb r2, [r5] + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0800015E + adds r4, r6, #0 + adds r4, #0x3f + adds r0, r4, #0 + ldrb r1, [r5] + bl sub_080002C8 + ldr r1, _08099AEC @ =0x00004026 + cmp r0, #0x12 + bne _08099ABA + adds r1, #0x56 +_08099ABA: + ldrb r2, [r5] + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_0800015E + adds r4, r6, #0 + adds r4, #0x40 + adds r0, r4, #0 + ldrb r1, [r5] + bl sub_080002C8 + ldr r1, _08099AEC @ =0x00004026 + cmp r0, #0x12 + bne _08099AD8 + adds r1, #0x56 +_08099AD8: + ldrb r2, [r5] + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_0800015E + b _08099BF0 + .align 2, 0 +_08099AE4: .4byte 0x00004023 +_08099AE8: .4byte 0x00004022 +_08099AEC: .4byte 0x00004026 +_08099AF0: + adds r5, r6, #0 + subs r5, #0x41 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099BF4 @ =0x00004027 + cmp r0, #0x12 + bne _08099B08 + adds r1, #0x4e +_08099B08: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + adds r5, r6, #0 + subs r5, #0x40 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099BF8 @ =0x00004023 + cmp r0, #0x12 + bne _08099B28 + adds r1, #0x54 +_08099B28: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + adds r5, r6, #0 + subs r5, #0x3f + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099BFC @ =0x00004028 + cmp r0, #0x12 + bne _08099B48 + adds r1, #0x4e +_08099B48: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + subs r5, r6, #1 + lsls r0, r5, #0x10 + lsrs r0, r0, #0x10 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099C00 @ =0x00004024 + cmp r0, #0x12 + bne _08099B66 + adds r1, #0x55 +_08099B66: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + ldr r0, _08099C04 @ =0x00004022 + ldrb r2, [r4] + adds r1, r6, #0 + bl sub_0800015E + adds r5, r6, #1 + adds r0, r5, #0 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099C08 @ =0x00004025 + cmp r0, #0x12 + bne _08099B8C + adds r1, #0x56 +_08099B8C: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + adds r5, r6, #0 + adds r5, #0x3f + adds r0, r5, #0 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099C0C @ =0x00004029 + cmp r0, #0x12 + bne _08099BAA + adds r1, #0x4f +_08099BAA: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + adds r5, r6, #0 + adds r5, #0x40 + adds r0, r5, #0 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099C10 @ =0x00004026 + cmp r0, #0x12 + bne _08099BC8 + adds r1, #0x56 +_08099BC8: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E + adds r5, r6, #0 + adds r5, #0x41 + adds r0, r5, #0 + ldrb r1, [r4] + bl sub_080002C8 + ldr r1, _08099C14 @ =0x0000402A + cmp r0, #0x12 + bne _08099BE6 + adds r1, #0x50 +_08099BE6: + ldrb r2, [r4] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0800015E +_08099BF0: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_08099BF4: .4byte 0x00004027 +_08099BF8: .4byte 0x00004023 +_08099BFC: .4byte 0x00004028 +_08099C00: .4byte 0x00004024 +_08099C04: .4byte 0x00004022 +_08099C08: .4byte 0x00004025 +_08099C0C: .4byte 0x00004029 +_08099C10: .4byte 0x00004026 +_08099C14: .4byte 0x0000402A + + thumb_func_start sub_08099C18 +sub_08099C18: @ 0x08099C18 + push {r4, r5, lr} + adds r1, r0, #0 + adds r0, #0x6e + ldrh r5, [r0] + subs r0, #2 + ldrh r0, [r0] + cmp r0, #2 + beq _08099C96 + cmp r0, #2 + bgt _08099C32 + cmp r0, #1 + beq _08099C60 + b _08099C36 +_08099C32: + cmp r0, #3 + beq _08099CD4 +_08099C36: + adds r0, r5, #0 + subs r0, #0x41 + adds r4, r1, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C + subs r0, r5, #1 + ldrb r1, [r4] + bl sub_0807BA8C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_0807BA8C + b _08099D2C +_08099C60: + adds r0, r5, #0 + subs r0, #0x41 + adds r4, r1, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x3f + ldrb r1, [r4] + bl sub_0807BA8C + subs r0, r5, #1 + ldrb r1, [r4] + bl sub_0807BA8C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_0807BA8C + adds r0, r5, #1 + b _08099CCC +_08099C96: + adds r0, r5, #0 + subs r0, #0x41 + adds r4, r1, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C + subs r0, r5, #1 + ldrb r1, [r4] + bl sub_0807BA8C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x40 +_08099CCC: + ldrb r1, [r4] + bl sub_0807BA8C + b _08099D2C +_08099CD4: + adds r0, r5, #0 + subs r0, #0x41 + adds r4, r1, #0 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x3f + ldrb r1, [r4] + bl sub_0807BA8C + subs r0, r5, #1 + ldrb r1, [r4] + bl sub_0807BA8C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_0807BA8C + adds r0, r5, #1 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r4] + bl sub_0807BA8C +_08099D2C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08099D30 +sub_08099D30: @ 0x08099D30 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _08099D40 + bl sub_0805E780 +_08099D40: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _08099D6A + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] +_08099D6A: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #1 + bhi _08099DAA + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _08099DA2 + movs r0, #0 + strb r0, [r2] + bl sub_08000E50 + movs r1, #0x78 + ands r0, r1 + adds r0, #0x78 + adds r1, r4, #0 + adds r1, #0x59 + strb r0, [r1] +_08099DA2: + adds r0, r4, #0 + bl sub_08004274 + b _08099DB4 +_08099DAA: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_08099DB4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08099DB8 +sub_08099DB8: @ 0x08099DB8 + push {lr} + ldr r2, _08099DCC @ =gUnk_081237F8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08099DCC: .4byte gUnk_081237F8 + + thumb_func_start sub_08099DD0 +sub_08099DD0: @ 0x08099DD0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x38 + movs r6, #0 + movs r5, #1 + strb r5, [r0] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + strb r6, [r4, #0xd] + movs r0, #0x46 + bl sub_0807CA84 + cmp r0, #0 + beq _08099E04 + movs r0, #4 + strb r0, [r4, #0xc] + strb r6, [r4, #0x1e] + b _08099E0E +_08099E04: + strb r5, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_08099E0E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_08099E10 +sub_08099E10: @ 0x08099E10 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #0x74 + bl sub_0807CBD0 + cmp r0, #0 + beq _08099E54 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #1 + bne _08099E3E + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _08099E3E + strb r0, [r5] + adds r0, r4, #0 + bl sub_08099ECC +_08099E3E: + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08099E54 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_08099E54: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_08099E58 +sub_08099E58: @ 0x08099E58 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _08099E88 + movs r0, #0x7f + ands r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #3 + bne _08099E88 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0x1e] +_08099E88: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_08099E8C +sub_08099E8C: @ 0x08099E8C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _08099EC4 @ =gLinkEntity + movs r2, #0xc + movs r3, #0xc + bl sub_080041A0 + cmp r0, #0 + beq _08099EC2 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _08099EB2 + adds r0, r4, #0 + bl sub_08099ECC + adds r0, r4, #0 + movs r1, #0x1e + bl sub_0805E4E0 +_08099EB2: + movs r0, #0x75 + bl sub_0807CBD0 + cmp r0, #0 + beq _08099EC2 + movs r0, #7 + bl sub_0805B390 +_08099EC2: + pop {r4, pc} + .align 2, 0 +_08099EC4: .4byte gLinkEntity + + thumb_func_start nullsub_534 +nullsub_534: @ 0x08099EC8 + bx lr + .align 2, 0 + + thumb_func_start sub_08099ECC +sub_08099ECC: @ 0x08099ECC + push {r4, lr} + movs r4, #0 + movs r1, #1 + strb r1, [r0, #0xd] + ldr r1, _08099EF4 @ =gLinkEntity + bl sub_0806FA24 + ldr r2, _08099EF8 @ =gUnk_03003F80 + movs r0, #3 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x38 + strb r4, [r0] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #8 + orrs r0, r1 + str r0, [r2, #0x30] + pop {r4, pc} + .align 2, 0 +_08099EF4: .4byte gLinkEntity +_08099EF8: .4byte gUnk_03003F80 + + thumb_func_start sub_08099EFC +sub_08099EFC: @ 0x08099EFC + push {lr} + ldr r2, _08099F10 @ =gUnk_08123840 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_08099F10: .4byte gUnk_08123840 + + thumb_func_start sub_08099F14 +sub_08099F14: @ 0x08099F14 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + ldrb r0, [r5, #0xa] + cmp r0, #9 + bls _08099F2A + b _0809A1B6 +_08099F2A: + lsls r0, r0, #2 + ldr r1, _08099F34 @ =_08099F38 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_08099F34: .4byte _08099F38 +_08099F38: @ jump table + .4byte _08099F60 @ case 0 + .4byte _08099F70 @ case 1 + .4byte _08099F82 @ case 2 + .4byte _0809A00C @ case 3 + .4byte _0809A0AA @ case 4 + .4byte _0809A0B0 @ case 5 + .4byte _0809A058 @ case 6 + .4byte _0809A11C @ case 7 + .4byte _0809A132 @ case 8 + .4byte _0809A1B0 @ case 9 +_08099F60: + adds r2, r5, #0 + adds r2, #0x79 + movs r0, #0 + movs r1, #0x96 + strb r1, [r2] + strb r0, [r5, #0xe] + movs r0, #0x1e + strb r0, [r5, #0xf] +_08099F70: + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + movs r0, #0x92 + lsls r0, r0, #1 + bl sub_08004488 + b _0809A1B6 +_08099F82: + ldr r0, [r5, #0x50] + adds r0, #0x7b + ldrb r0, [r0] + adds r0, #0x80 + rsbs r0, r0, #0 + strb r0, [r5, #0x15] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _08099FCE + bl sub_08000E50 + adds r1, r0, #0 + movs r0, #3 + ands r1, r0 + cmp r1, #1 + beq _08099FBC + cmp r1, #1 + blo _08099FB6 + cmp r1, #2 + beq _08099FC2 + cmp r1, #3 + beq _08099FC8 + b _08099FCE +_08099FB6: + ldrb r0, [r5, #0x15] + subs r0, #0x10 + b _08099FCC +_08099FBC: + ldrb r0, [r5, #0x15] + adds r0, #0x10 + b _08099FCC +_08099FC2: + ldrb r0, [r5, #0x15] + subs r0, #8 + b _08099FCC +_08099FC8: + ldrb r0, [r5, #0x15] + adds r0, #8 +_08099FCC: + strb r0, [r5, #0x15] +_08099FCE: + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + movs r1, #0xf0 + subs r1, r1, r0 + strh r1, [r5, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + lsls r1, r1, #8 + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + ldrh r1, [r5, #0x24] + lsls r1, r1, #0x10 + asrs r1, r1, #0x11 + lsls r1, r1, #8 + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + adds r0, r5, #0 + movs r1, #5 + bl sub_08004260 + movs r0, #0xa6 + lsls r0, r0, #1 + bl sub_080A3268 + b _0809A1B6 +_0809A00C: + ldr r0, [r5, #0x50] + adds r0, #0x7b + ldrb r0, [r0] + adds r0, #0x80 + rsbs r0, r0, #0 + strb r0, [r5, #0x15] + movs r1, #0x90 + lsls r1, r1, #7 + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0809A040 + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + ldrb r1, [r5, #0x15] + adds r0, r0, r1 + strb r0, [r5, #0x15] + b _0809A04E +_0809A040: + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + ldrb r1, [r5, #0x15] + subs r1, r1, r0 + strb r1, [r5, #0x15] +_0809A04E: + adds r0, r5, #0 + movs r1, #6 + bl sub_08004260 + b _0809A1B6 +_0809A058: + bl sub_08000E50 + movs r1, #0x2f + ands r1, r0 + movs r4, #0x30 + subs r4, r4, r1 + lsls r4, r4, #8 + bl sub_08000E50 + movs r2, #0xff + ands r2, r0 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806F62C + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0809A092 + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + ldrb r1, [r5, #0x15] + adds r0, r0, r1 + strb r0, [r5, #0x15] + b _0809A0A0 +_0809A092: + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + ldrb r1, [r5, #0x15] + subs r1, r1, r0 + strb r1, [r5, #0x15] +_0809A0A0: + adds r0, r5, #0 + movs r1, #5 + bl sub_08004260 + b _0809A1B6 +_0809A0AA: + movs r0, #0xc3 + lsls r0, r0, #2 + b _0809A1B4 +_0809A0B0: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + movs r0, #0x18 + str r0, [r5, #0x78] + adds r7, r5, #0 + adds r7, #0x76 + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r7] + adds r4, r5, #0 + adds r4, #0x74 + strh r0, [r4] + adds r6, r5, #0 + adds r6, #0x7a + strh r1, [r6] + ldr r0, [r5, #0x50] + adds r0, #0x7b + ldrb r1, [r0] + rsbs r1, r1, #0 + lsls r1, r1, #0x18 + ldr r3, _0809A118 @ =gUnk_0812388C + ldrb r2, [r5, #0xb] + lsls r0, r2, #1 + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r3 + lsrs r1, r1, #0x18 + ldrh r0, [r0] + adds r1, r1, r0 + lsls r2, r2, #2 + adds r2, r2, r3 + ldrh r2, [r2] + adds r0, r5, #0 + bl sub_0806F62C + ldrh r1, [r7] + ldrh r2, [r4] + ldrh r3, [r6] + adds r0, r5, #0 + bl sub_0805EC9C + adds r0, r5, #0 + movs r1, #7 + bl sub_08004260 + b _0809A1B6 + .align 2, 0 +_0809A118: .4byte gUnk_0812388C +_0809A11C: + movs r0, #0 + strb r0, [r5, #0xe] + adds r0, r5, #0 + movs r1, #8 + bl sub_08004260 + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FA24 + b _0809A1B6 +_0809A132: + ldr r0, [r5, #0x50] + adds r0, #0x7c + ldrb r0, [r0] + movs r1, #0 + strb r0, [r5, #0xb] + movs r0, #4 + strb r0, [r5, #0xe] + strb r1, [r5, #0xf] + ldr r3, _0809A1A0 @ =gUnk_03000BF0 + ldrh r0, [r5, #0x2e] + ldrh r1, [r3, #6] + subs r0, r0, r1 + movs r1, #0xf8 + lsls r1, r1, #1 + adds r2, r1, #0 + ands r0, r2 + movs r1, #0x82 + adds r1, r1, r5 + mov ip, r1 + strh r0, [r1] + ldrh r1, [r5, #0x32] + ldrh r0, [r3, #8] + subs r1, r1, r0 + ands r1, r2 + adds r3, r5, #0 + adds r3, #0x80 + strh r1, [r3] + adds r4, r5, #0 + adds r4, #0x84 + mov r0, ip + ldrh r2, [r0] + subs r2, #0x10 + asrs r2, r2, #4 + lsrs r1, r1, #4 + lsls r0, r1, #5 + subs r0, r0, r1 + adds r2, r2, r0 + str r2, [r4] + mov r1, ip + ldrh r0, [r1] + ldrh r1, [r3] + ldrb r3, [r5, #0xb] + bl sub_0809A6F8 + ldr r0, [r5, #0x50] + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809A1A8 + ldr r0, _0809A1A4 @ =0x000001A3 + bl sub_080A3268 + b _0809A1B6 + .align 2, 0 +_0809A1A0: .4byte gUnk_03000BF0 +_0809A1A4: .4byte 0x000001A3 +_0809A1A8: + movs r0, #0xe8 + bl sub_080A3268 + b _0809A1B6 +_0809A1B0: + movs r0, #0xf0 + lsls r0, r0, #1 +_0809A1B4: + str r0, [r5, #0x78] +_0809A1B6: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0809A1B8 +sub_0809A1B8: @ 0x0809A1B8 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x38 + adds r7, r0, #0 + bl sub_08004274 + ldrb r0, [r7, #0xa] + cmp r0, #9 + bls _0809A1D2 + b _0809A632 +_0809A1D2: + lsls r0, r0, #2 + ldr r1, _0809A1DC @ =_0809A1E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809A1DC: .4byte _0809A1E0 +_0809A1E0: @ jump table + .4byte _0809A208 @ case 0 + .4byte _0809A25C @ case 1 + .4byte _0809A33E @ case 2 + .4byte _0809A378 @ case 3 + .4byte _0809A394 @ case 4 + .4byte _0809A3E0 @ case 5 + .4byte _0809A378 @ case 6 + .4byte _0809A46C @ case 7 + .4byte _0809A47C @ case 8 + .4byte _0809A616 @ case 9 +_0809A208: + adds r1, r7, #0 + adds r1, #0x79 + ldrb r0, [r1] + cmp r0, #0 + beq _0809A25C + subs r0, #1 + strb r0, [r1] + ldrb r0, [r7, #0xf] + subs r0, #1 + strb r0, [r7, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r1, #0xb + str r1, [sp, #0x20] + cmp r0, #0xff + bne _0809A254 + movs r0, #5 + strb r0, [r7, #0xf] + ldrb r3, [r7, #0xb] + adds r0, r7, #0 + movs r1, #0x87 + movs r2, #1 + bl sub_080A2988 + adds r1, r0, #0 + str r1, [r7, #0x54] + cmp r1, #0 + beq _0809A24E + ldr r0, [r7, #0x50] + str r0, [r1, #0x50] + ldr r0, [r7, #0x54] + adds r0, #0x84 + ldr r2, [sp, #0x20] + ldr r1, [r2] + str r1, [r0] +_0809A24E: + ldrb r0, [r7, #0xb] + adds r0, #1 + strb r0, [r7, #0xb] +_0809A254: + ldr r1, [sp, #0x20] + ldr r0, [r1] + ldr r0, [r0, #0xc] + b _0809A474 +_0809A25C: + adds r4, r7, #0 + adds r4, #0x84 + ldr r1, [r4] + ldrb r0, [r7, #0xe] + lsls r0, r0, #2 + adds r1, #0xc + adds r1, r1, r0 + ldr r2, [r1] + ldr r0, [r2, #0x2c] + ldr r1, [r7, #0x2c] + subs r0, r0, r1 + ldr r1, [r2, #0x30] + ldr r2, [r7, #0x30] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r7, #0x15] + movs r2, #0x24 + ldrsh r1, [r7, r2] + ldrb r2, [r7, #0x15] + adds r0, r7, #0 + bl sub_0806F62C + ldr r1, [r4] + ldrb r0, [r7, #0xe] + lsls r0, r0, #2 + adds r1, #0xc + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r7, #0 + movs r2, #2 + movs r3, #2 + bl sub_080041A0 + cmp r0, #0 + bne _0809A2A6 + b _0809A632 +_0809A2A6: + ldrb r0, [r7, #0xa] + cmp r0, #0 + bne _0809A2CC + ldr r1, [r4] + ldrb r0, [r7, #0xe] + lsls r0, r0, #2 + adds r1, #0xc + adds r1, r1, r0 + ldr r3, [r1] + ldrb r2, [r3, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #2 + rsbs r0, r0, #0 + ands r1, r0 + subs r0, #2 + ands r0, r2 + orrs r0, r1 + strb r0, [r3, #0x18] +_0809A2CC: + ldrb r1, [r7, #0xe] + ldr r0, [r4] + ldrb r0, [r0, #1] + subs r0, #1 + cmp r1, r0 + bne _0809A338 + movs r0, #2 + strb r0, [r7, #0xc] + movs r0, #0xf0 + strb r0, [r7, #0xe] + bl sub_08000E50 + ldr r6, _0809A330 @ =gUnk_0812384C + ldrb r2, [r7, #0xb] + movs r3, #0xf + movs r4, #0xf + adds r1, r4, #0 + ands r1, r2 + lsls r1, r1, #2 + adds r1, r1, r6 + ands r0, r3 + ldrb r1, [r1] + adds r0, r0, r1 + strb r0, [r7, #0x15] + bl sub_08000E50 + ldrb r1, [r7, #0xb] + ands r4, r1 + lsls r4, r4, #1 + adds r4, #1 + lsls r4, r4, #1 + adds r4, r4, r6 + ldr r2, _0809A334 @ =0x000001FF + adds r1, r2, #0 + ands r0, r1 + ldrh r4, [r4] + adds r0, r0, r4 + strh r0, [r7, #0x24] + ldrb r0, [r7, #0xa] + cmp r0, #0 + beq _0809A320 + b _0809A632 +_0809A320: + ldr r1, [r7, #0x50] + movs r0, #4 + strb r0, [r1, #0xc] + ldr r1, [r7, #0x50] + movs r0, #0 + strb r0, [r1, #0xd] + b _0809A632 + .align 2, 0 +_0809A330: .4byte gUnk_0812384C +_0809A334: .4byte 0x000001FF +_0809A338: + adds r0, r1, #1 + strb r0, [r7, #0xe] + b _0809A632 +_0809A33E: + ldr r1, [r7, #0x50] + ldrb r0, [r1, #0xb] + cmp r0, #3 + bne _0809A38E + adds r0, r1, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r2, [r0, #8] + ldr r0, [r2, #0x2c] + ldr r1, [r7, #0x2c] + subs r0, r0, r1 + ldr r1, [r2, #0x30] + ldr r2, [r7, #0x30] + subs r1, r1, r2 + bl sub_080045DA + strb r0, [r7, #0x15] + movs r1, #0xa0 + lsls r1, r1, #2 + ldrb r2, [r7, #0x15] + adds r0, r7, #0 + bl sub_0806F62C + ldr r1, [r7, #0x50] + adds r0, r7, #0 + movs r2, #0x48 + bl sub_0806FC80 + b _0809A388 +_0809A378: + ldrb r2, [r7, #0x15] + adds r0, r7, #0 + movs r1, #0x80 + bl sub_0806F62C + adds r0, r7, #0 + adds r0, #0x5a + ldrb r0, [r0] +_0809A388: + cmp r0, #0 + bne _0809A38E + b _0809A632 +_0809A38E: + bl sub_0805E780 + b _0809A632 +_0809A394: + ldr r3, [r7, #0x78] + cmp r3, #0 + bne _0809A3B4 + ldr r0, _0809A3B0 @ =gUnk_02034350 + movs r2, #0xc + ldrsh r1, [r0, r2] + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _0809A38E + movs r0, #8 + bl sub_0805308C + b _0809A632 + .align 2, 0 +_0809A3B0: .4byte gUnk_02034350 +_0809A3B4: + ldr r2, [r7, #0x50] + adds r0, r2, #0 + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + bne _0809A3C8 + movs r0, #1 + strb r0, [r7, #0xd] + str r1, [r7, #0x78] + b _0809A632 +_0809A3C8: + ldrb r0, [r7, #0xd] + cmp r0, #0 + bne _0809A3D6 + ldrb r0, [r2, #0xb] + cmp r0, #0 + beq _0809A3D6 + b _0809A632 +_0809A3D6: + movs r0, #1 + strb r0, [r7, #0xd] + subs r0, r3, #1 + str r0, [r7, #0x78] + b _0809A632 +_0809A3E0: + ldr r0, [r7, #0x78] + cmp r0, #0 + bne _0809A432 + adds r0, r7, #0 + adds r0, #0x76 + ldrh r2, [r0] + movs r1, #0x80 + lsls r1, r1, #1 + adds r5, r0, #0 + cmp r2, r1 + bne _0809A40E + ldr r0, [r7, #0x50] + adds r0, #0x7c + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + adds r4, r7, #0 + adds r4, #0x74 + cmp r0, #0 + beq _0809A420 + bl sub_0805E780 + b _0809A420 +_0809A40E: + adds r0, r2, #0 + subs r0, #0x20 + strh r0, [r5] + adds r1, r7, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #0x20 + strh r0, [r1] + adds r4, r1, #0 +_0809A420: + ldrh r1, [r5] + ldrh r2, [r4] + adds r0, r7, #0 + adds r0, #0x7a + ldrh r3, [r0] + adds r0, r7, #0 + bl sub_0805EC9C + b _0809A436 +_0809A432: + subs r0, #1 + str r0, [r7, #0x78] +_0809A436: + ldr r0, [r7, #0x50] + adds r1, r7, #0 + bl sub_0806FA24 + ldr r4, _0809A468 @ =gUnk_0812388C + ldrb r3, [r7, #0xb] + lsls r0, r3, #1 + adds r0, #1 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r1, [r0] + ldr r0, [r7, #0x50] + adds r0, #0x7b + ldrb r2, [r0] + rsbs r2, r2, #0 + lsls r2, r2, #0x18 + lsls r3, r3, #2 + adds r3, r3, r4 + lsrs r2, r2, #0x18 + ldrh r3, [r3] + adds r2, r2, r3 + adds r0, r7, #0 + bl sub_0806F62C + b _0809A632 + .align 2, 0 +_0809A468: .4byte gUnk_0812388C +_0809A46C: + ldrb r0, [r7, #0xe] + cmp r0, #0 + bne _0809A38E + ldr r0, [r7, #0x50] +_0809A474: + adds r1, r7, #0 + bl sub_0806FA24 + b _0809A632 +_0809A47C: + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0809A48C + b _0809A632 +_0809A48C: + movs r0, #4 + strb r0, [r7, #0xe] + ldrb r0, [r7, #0xf] + adds r0, #1 + strb r0, [r7, #0xf] + adds r0, r7, #0 + adds r0, #0x84 + str r0, [sp, #4] + ldrb r1, [r7, #0xf] + lsls r0, r1, #5 + subs r0, r0, r1 + ldr r2, [sp, #4] + ldr r1, [r2] + subs r1, r1, r0 + mov sl, r1 + mov r0, sl + str r0, [sp] + adds r1, r7, #0 + adds r1, #0x82 + str r1, [sp, #8] + ldrh r0, [r1] + adds r2, r7, #0 + adds r2, #0x7e + str r2, [sp, #0xc] + strh r0, [r2] + ldrh r0, [r1] + subs r1, #8 + str r1, [sp, #0x10] + strh r0, [r1] + movs r2, #0x80 + adds r2, r2, r7 + mov sb, r2 + ldrb r0, [r7, #0xf] + lsls r0, r0, #4 + ldrh r1, [r2] + subs r1, r1, r0 + movs r0, #0x7c + adds r0, r0, r7 + mov r8, r0 + strh r1, [r0] + adds r4, r7, #0 + adds r4, #0x78 + strh r1, [r4] + ldr r1, [sp, #0x10] + ldrh r0, [r1] + ldrh r1, [r4] + ldrb r3, [r7, #0xb] + mov r2, sl + bl sub_0809A6F8 + adds r5, r0, #0 + ldrb r6, [r7, #0xf] + ldr r2, [sp, #4] + str r2, [sp, #0x20] + ldr r0, [sp, #0x10] + str r0, [sp, #0x28] + ldr r1, [sp, #8] + str r1, [sp, #0x1c] + ldr r2, [sp, #0xc] + str r2, [sp, #0x30] + mov r0, sb + str r0, [sp, #0x34] + mov r1, r8 + str r1, [sp, #0x2c] + str r4, [sp, #0x24] + cmp r6, #0 + beq _0809A568 + ldr r2, [sp, #0x28] + str r2, [sp, #0x14] + mov sb, r4 + ldr r0, [sp, #0x30] + mov r8, r0 + adds r4, r1, #0 +_0809A51E: + ldr r1, [sp, #0x14] + ldrh r0, [r1] + subs r0, #0x10 + strh r0, [r1] + mov r2, sb + ldrh r0, [r2] + adds r0, #0x10 + strh r0, [r2] + ldr r0, [sp] + adds r0, #0x1e + str r0, [sp] + ldrh r0, [r1] + ldrh r1, [r2] + ldrb r3, [r7, #0xb] + ldr r2, [sp] + bl sub_0809A6F8 + adds r5, r5, r0 + mov r1, r8 + ldrh r0, [r1] + adds r0, #0x10 + strh r0, [r1] + ldrh r0, [r4] + adds r0, #0x10 + strh r0, [r4] + movs r2, #0x20 + add sl, r2 + ldrh r0, [r1] + ldrh r1, [r4] + ldrb r3, [r7, #0xb] + mov r2, sl + bl sub_0809A6F8 + adds r5, r5, r0 + subs r6, #1 + cmp r6, #0 + bne _0809A51E +_0809A568: + ldrb r1, [r7, #0xf] + lsls r0, r1, #5 + subs r0, r0, r1 + ldr r2, [sp, #0x20] + ldr r1, [r2] + adds r1, r1, r0 + mov sl, r1 + mov r0, sl + str r0, [sp] + ldr r1, [sp, #0x1c] + ldrh r0, [r1] + ldr r2, [sp, #0x30] + strh r0, [r2] + ldrh r0, [r1] + ldr r1, [sp, #0x28] + strh r0, [r1] + ldrb r0, [r7, #0xf] + lsls r0, r0, #4 + ldr r2, [sp, #0x34] + ldrh r2, [r2] + adds r0, r0, r2 + ldr r1, [sp, #0x2c] + strh r0, [r1] + ldr r2, [sp, #0x24] + strh r0, [r2] + ldr r1, [sp, #0x28] + ldrh r0, [r1] + ldrh r1, [r2] + ldrb r3, [r7, #0xb] + mov r2, sl + bl sub_0809A6F8 + adds r5, r5, r0 + ldrb r0, [r7, #0xf] + subs r6, r0, #1 + cmp r6, #0 + beq _0809A610 + ldr r2, [sp, #0x28] + str r2, [sp, #0x18] + ldr r0, [sp, #0x24] + mov sb, r0 + ldr r1, [sp, #0x30] + mov r8, r1 + ldr r4, [sp, #0x2c] +_0809A5C0: + ldr r2, [sp, #0x18] + ldrh r0, [r2] + subs r0, #0x10 + strh r0, [r2] + mov r1, sb + ldrh r0, [r1] + subs r0, #0x10 + strh r0, [r1] + ldr r2, [sp] + subs r2, #0x20 + str r2, [sp] + ldr r1, [sp, #0x18] + ldrh r0, [r1] + mov r2, sb + ldrh r1, [r2] + ldrb r3, [r7, #0xb] + ldr r2, [sp] + bl sub_0809A6F8 + adds r5, r5, r0 + mov r1, r8 + ldrh r0, [r1] + adds r0, #0x10 + strh r0, [r1] + ldrh r0, [r4] + subs r0, #0x10 + strh r0, [r4] + movs r2, #0x1e + rsbs r2, r2, #0 + add sl, r2 + ldrh r0, [r1] + ldrh r1, [r4] + ldrb r3, [r7, #0xb] + mov r2, sl + bl sub_0809A6F8 + adds r5, r5, r0 + subs r6, #1 + cmp r6, #0 + bne _0809A5C0 +_0809A610: + cmp r5, #0 + bne _0809A632 + b _0809A38E +_0809A616: + bl sub_08078B48 + ldr r0, [r7, #0x78] + subs r0, #1 + str r0, [r7, #0x78] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _0809A632 + ldr r1, _0809A640 @ =gUnk_03000BF0 + ldr r0, _0809A644 @ =gLinkEntity + str r0, [r1, #0x30] + bl sub_0805E780 +_0809A632: + add sp, #0x38 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809A640: .4byte gUnk_03000BF0 +_0809A644: .4byte gLinkEntity + + thumb_func_start sub_0809A648 +sub_0809A648: @ 0x0809A648 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + bl sub_08004274 + ldrb r0, [r7, #0xe] + subs r0, #1 + strb r0, [r7, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0809A6EC + ldr r4, [r7, #0x50] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + movs r2, #0x24 + ldrsh r1, [r7, r2] + adds r5, r1, #0 + muls r5, r0, r5 + adds r4, #0x7b + ldrb r1, [r4] + ldrb r0, [r7, #0x15] + subs r0, r0, r1 + movs r1, #0x7b + adds r1, r1, r7 + mov r8, r1 + strb r0, [r1] + ldr r6, _0809A6E8 @ =gUnk_080C9160 + ldrb r0, [r1] + lsls r0, r0, #1 + adds r0, r0, r6 + movs r2, #0 + ldrsh r0, [r0, r2] + lsls r5, r5, #8 + asrs r5, r5, #0x10 + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r4, #0x80 + lsls r4, r4, #1 + adds r1, r4, #0 + bl sub_0806FA04 + ldr r1, [r7, #0x50] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x2c] + adds r1, r1, r0 + str r1, [r7, #0x2c] + mov r1, r8 + ldrb r0, [r1] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r6 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r4, #0 + bl sub_0806FA04 + ldr r1, [r7, #0x50] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x30] + subs r1, r1, r0 + str r1, [r7, #0x30] + b _0809A6F0 + .align 2, 0 +_0809A6E8: .4byte gUnk_080C9160 +_0809A6EC: + bl sub_0805E780 +_0809A6F0: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0809A6F8 +sub_0809A6F8: @ 0x0809A6F8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + adds r7, r3, #0 + bl sub_0809A758 + cmp r0, #0 + beq _0809A754 + ldr r0, _0809A738 @ =gUnk_081238A0 + lsls r1, r6, #1 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, #0 + beq _0809A750 + movs r0, #1 + ands r0, r7 + cmp r0, #0 + beq _0809A73C + ldrh r0, [r1] + lsrs r1, r4, #4 + movs r3, #0x3f + ands r1, r3 + lsrs r2, r5, #4 + ands r2, r3 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #1 + bl sub_0807B9B8 + b _0809A750 + .align 2, 0 +_0809A738: .4byte gUnk_081238A0 +_0809A73C: + lsrs r0, r4, #4 + movs r2, #0x3f + ands r0, r2 + lsrs r1, r5, #4 + ands r1, r2 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #1 + bl sub_0807BA8C +_0809A750: + movs r0, #1 + b _0809A756 +_0809A754: + movs r0, #0 +_0809A756: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0809A758 +sub_0809A758: @ 0x0809A758 + push {lr} + adds r2, r0, #0 + cmp r2, #0xf + bls _0809A770 + movs r0, #0xf8 + lsls r0, r0, #1 + cmp r2, r0 + bhi _0809A770 + cmp r1, #0xf0 + bhi _0809A770 + movs r0, #1 + b _0809A772 +_0809A770: + movs r0, #0 +_0809A772: + pop {pc} + + thumb_func_start sub_0809A774 +sub_0809A774: @ 0x0809A774 + push {lr} + ldr r2, _0809A788 @ =gUnk_08123C80 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809A788: .4byte gUnk_08123C80 + + thumb_func_start sub_0809A78C +sub_0809A78C: @ 0x0809A78C + push {r4, r5, lr} + adds r4, r0, #0 + movs r3, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r2, #0x80 + strb r2, [r4, #0xe] + strb r3, [r4, #0xf] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r5, r4, #0 + adds r5, #0x80 + strh r2, [r5] + adds r0, r4, #0 + adds r0, #0x78 + strh r3, [r0] + ldrh r0, [r4, #0x2e] + subs r0, #4 + strh r0, [r4, #0x2e] + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xfc + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + ldrh r2, [r5] + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_0805EC9C + adds r0, r4, #0 + bl sub_08016A04 + ldrb r1, [r4, #0xf] + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_0809A958 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809A7F4 +sub_0809A7F4: @ 0x0809A7F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0809AA00 + ldrb r0, [r4, #0xe] + adds r2, r0, #0 + cmp r2, #0 + beq _0809A810 + subs r0, #1 + strb r0, [r4, #0xe] + b _0809A840 +_0809A810: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809A840 + ldrb r0, [r4, #0xf] + cmp r0, #3 + bne _0809A838 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + strb r2, [r4, #0xf] + adds r0, r4, #0 + movs r1, #2 + bl sub_080042AC + b _0809A840 +_0809A838: + ldrb r1, [r4, #0xf] + adds r0, r4, #0 + bl sub_080042AC +_0809A840: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809A844 +sub_0809A844: @ 0x0809A844 + push {r4, lr} + adds r4, r0, #0 + bl sub_080042B8 + adds r0, r4, #0 + bl sub_0809AA00 + ldrb r0, [r4, #0xf] + cmp r0, #1 + bhi _0809A85C + movs r1, #0 + b _0809A870 +_0809A85C: + ldrb r0, [r4, #0xe] + adds r2, r0, #0 + cmp r2, #0 + beq _0809A87C + subs r0, #1 + strb r0, [r4, #0xe] + ldr r0, _0809A878 @ =gUnk_03004040 + ldr r1, [r0] + cmp r1, #0 + bne _0809A8A0 +_0809A870: + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + b _0809A8A0 + .align 2, 0 +_0809A878: .4byte gUnk_03004040 +_0809A87C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809A8A0 + movs r0, #3 + strb r0, [r4, #0xc] + strb r2, [r4, #0xe] + adds r0, r4, #0 + movs r1, #3 + bl sub_080042AC + adds r0, r4, #0 + movs r1, #0x78 + bl sub_0805E4E0 +_0809A8A0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809A8A4 +sub_0809A8A4: @ 0x0809A8A4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0xe0 + ands r0, r1 + cmp r0, #0x40 + beq _0809A8D4 + cmp r0, #0x40 + bgt _0809A8C0 + cmp r0, #0x20 + beq _0809A8E2 + b _0809A8FC +_0809A8C0: + cmp r0, #0x80 + bne _0809A8FC + adds r0, r4, #0 + adds r0, #0x59 + ldrb r0, [r0] + cmp r0, #0 + bne _0809A902 + bl sub_0805E780 + b _0809A902 +_0809A8D4: + movs r0, #0xbf + ands r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0809A9D4 + b _0809A902 +_0809A8E2: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + ldrb r1, [r2] + movs r0, #0xdf + ands r0, r1 + strb r0, [r2] + movs r0, #0xff + bl sub_08078A90 + movs r0, #0x2a + bl sub_0807CD04 +_0809A8FC: + adds r0, r4, #0 + bl sub_080042B8 +_0809A902: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809A92A + adds r1, r4, #0 + adds r1, #0x80 + ldrh r0, [r1] + adds r0, #8 + strh r0, [r1] + ldr r0, [r4, #0x2c] + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r0, r2 + str r0, [r4, #0x2c] + ldrh r2, [r1] + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C + b _0809A94E +_0809A92A: + ldr r1, [r4, #0x54] + adds r0, r4, #0 + movs r2, #0 + bl sub_0809AA9C + ldr r1, _0809A950 @ =gLinkEntity + adds r0, r4, #0 + movs r2, #1 + bl sub_0809AA9C + ldr r0, _0809A954 @ =gUnk_03004040 + ldr r1, [r0] + cmp r1, #0 + beq _0809A94E + adds r0, r4, #0 + movs r2, #1 + bl sub_0809AA9C +_0809A94E: + pop {r4, pc} + .align 2, 0 +_0809A950: .4byte gLinkEntity +_0809A954: .4byte gUnk_03004040 + + thumb_func_start sub_0809A958 +sub_0809A958: @ 0x0809A958 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + movs r1, #0x2e + ldrsh r3, [r0, r1] + ldr r2, _0809A9CC @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r1, #4 + subs r3, r3, r1 + asrs r3, r3, #4 + movs r4, #0x3f + ands r3, r4 + movs r5, #0x32 + ldrsh r1, [r0, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r4 + lsls r1, r1, #6 + orrs r3, r1 + adds r0, #0x82 + strh r3, [r0] + ldrh r0, [r0] + adds r5, r0, #0 + subs r5, #0x82 + ldr r6, _0809A9D0 @ =gUnk_08123C90 + movs r0, #0 + movs r1, #0x80 + lsls r1, r1, #7 + mov sb, r1 +_0809A996: + movs r4, #0 + adds r0, #1 + mov r8, r0 + adds r7, r5, #0 + adds r7, #0x40 +_0809A9A0: + ldrh r0, [r6] + mov r1, sb + ands r0, r1 + cmp r0, #0 + beq _0809A9B4 + ldrh r0, [r6] + adds r1, r5, r4 + movs r2, #1 + bl sub_0800015E +_0809A9B4: + adds r4, #1 + adds r6, #2 + cmp r4, #3 + ble _0809A9A0 + mov r0, r8 + adds r5, r7, #0 + cmp r0, #4 + ble _0809A996 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809A9CC: .4byte gUnk_03000BF0 +_0809A9D0: .4byte gUnk_08123C90 + + thumb_func_start sub_0809A9D4 +sub_0809A9D4: @ 0x0809A9D4 + push {r4, r5, r6, r7, lr} + adds r0, #0x82 + ldrh r0, [r0] + adds r5, r0, #0 + subs r5, #0x82 + movs r0, #0 +_0809A9E0: + movs r4, #0 + adds r7, r0, #1 + adds r6, r5, #0 + adds r6, #0x40 +_0809A9E8: + adds r0, r5, r4 + movs r1, #1 + bl sub_0807BA8C + adds r4, #1 + cmp r4, #3 + ble _0809A9E8 + adds r0, r7, #0 + adds r5, r6, #0 + cmp r0, #4 + ble _0809A9E0 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0809AA00 +sub_0809AA00: @ 0x0809AA00 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + movs r0, #0 + strb r0, [r5, #0xf] + ldr r1, [r5, #0x54] + cmp r1, #0 + bne _0809AA50 + movs r0, #7 + movs r1, #0x38 + movs r2, #7 + bl sub_0805EB00 + adds r4, r0, #0 + adds r7, r5, #0 + adds r7, #0x78 + cmp r4, #0 + beq _0809AA5C + movs r0, #0x80 + lsls r0, r0, #4 + mov r8, r0 + ldr r0, _0809AA4C @ =0x0000FFFF + adds r6, r0, #0 +_0809AA30: + ldrh r0, [r4, #0xa] + ands r0, r6 + cmp r0, r8 + bne _0809AA3A + str r4, [r5, #0x54] +_0809AA3A: + adds r0, r4, #0 + movs r1, #7 + bl sub_0805EB64 + adds r4, r0, #0 + cmp r4, #0 + bne _0809AA30 + b _0809AA5C + .align 2, 0 +_0809AA4C: .4byte 0x0000FFFF +_0809AA50: + adds r0, r5, #0 + movs r2, #0 + bl sub_0809AA9C + adds r7, r5, #0 + adds r7, #0x78 +_0809AA5C: + ldr r4, _0809AA94 @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x20 + movs r3, #0x22 + bl sub_080041A0 + strh r0, [r7] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _0809AA8E + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0809AA9C + ldr r0, _0809AA98 @ =gUnk_03004040 + ldr r4, [r0] + cmp r4, #0 + beq _0809AA8E + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #1 + bl sub_0809AA9C +_0809AA8E: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809AA94: .4byte gLinkEntity +_0809AA98: .4byte gUnk_03004040 + + thumb_func_start sub_0809AA9C +sub_0809AA9C: @ 0x0809AA9C + push {r4, lr} + adds r4, r0, #0 + adds r3, r1, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #3 + ands r1, r0 + cmp r1, #1 + beq _0809AAB2 + cmp r1, #2 + bne _0809AABC +_0809AAB2: + adds r0, r3, #0 + adds r0, #0x63 + strb r1, [r0] + adds r2, r0, #0 + b _0809AAC6 +_0809AABC: + adds r1, r3, #0 + adds r1, #0x63 + movs r0, #0 + strb r0, [r1] + adds r2, r1, #0 +_0809AAC6: + movs r0, #0x2e + ldrsh r1, [r3, r0] + ldr r0, _0809AAE8 @ =gUnk_03000BF0 + ldrh r0, [r0, #6] + movs r3, #0xad + lsls r3, r3, #1 + adds r0, r0, r3 + cmp r1, r0 + bgt _0809AAE4 + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_0809AAE4: + pop {r4, pc} + .align 2, 0 +_0809AAE8: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809AAEC +sub_0809AAEC: @ 0x0809AAEC + push {lr} + ldr r2, _0809AB00 @ =gUnk_08123D28 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809AB00: .4byte gUnk_08123D28 + + thumb_func_start sub_0809AB04 +sub_0809AB04: @ 0x0809AB04 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x31 + bl sub_0807CBE4 + cmp r0, #0 + beq _0809AB22 + adds r0, r5, #0 + bl sub_0809AD68 + adds r0, r5, #0 + bl sub_0809AD8C + bl sub_0805E780 +_0809AB22: + movs r0, #0x36 + movs r1, #0 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _0809AB9C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + str r4, [r5, #0x54] + ldr r2, _0809AB68 @ =gUnk_030010A0 + adds r0, r2, #0 + adds r0, #0x38 + ldrb r1, [r0] + cmp r1, #0 + beq _0809AB70 + adds r0, #1 + ldrb r0, [r0] + cmp r0, #0 + beq _0809AB52 + bl sub_0805E780 +_0809AB52: + movs r0, #7 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #0xb + ands r0, r1 + strb r0, [r5, #0x18] + ldr r0, _0809AB6C @ =gUnk_03000BF0 + str r5, [r0, #0x30] + bl sub_080809D4 + b _0809AB9C + .align 2, 0 +_0809AB68: .4byte gUnk_030010A0 +_0809AB6C: .4byte gUnk_03000BF0 +_0809AB70: + movs r0, #1 + strb r0, [r5, #0xc] + movs r0, #0x1e + strb r0, [r5, #0xe] + strb r1, [r5, #0x1e] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + adds r1, r5, #0 + adds r1, #0x63 + movs r0, #0x20 + strb r0, [r1] + ldr r1, _0809ABA0 @ =gUnk_08012DD8 + adds r0, r5, #0 + bl sub_0807DAD0 + adds r1, r5, #0 + adds r1, #0x84 + str r0, [r1] +_0809AB9C: + pop {r4, r5, pc} + .align 2, 0 +_0809ABA0: .4byte gUnk_08012DD8 + + thumb_func_start sub_0809ABA4 +sub_0809ABA4: @ 0x0809ABA4 + push {lr} + movs r1, #0 + bl sub_0807DDAC + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809ABB0 +sub_0809ABB0: @ 0x0809ABB0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809ABCE + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #0x78 + strb r0, [r2, #0xe] + ldr r1, _0809ABD0 @ =gUnk_03000BF0 + ldr r0, [r2, #0x54] + str r0, [r1, #0x30] +_0809ABCE: + pop {pc} + .align 2, 0 +_0809ABD0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809ABD4 +sub_0809ABD4: @ 0x0809ABD4 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809ABF2 + movs r0, #4 + strb r0, [r1, #0xc] + movs r0, #0x5a + strb r0, [r1, #0xe] + ldr r1, [r1, #0x54] + movs r0, #1 + strb r0, [r1, #0xd] +_0809ABF2: + pop {pc} + + thumb_func_start sub_0809ABF4 +sub_0809ABF4: @ 0x0809ABF4 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x54] + ldrb r0, [r0, #0xd] + cmp r0, #2 + bls _0809AC36 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0809AC36 + movs r0, #5 + strb r0, [r2, #0xc] + movs r0, #8 + strb r0, [r2, #0xe] + strb r1, [r2, #0xf] + ldrb r1, [r2, #0x19] + subs r0, #0x15 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2, #0x19] + ldr r1, _0809AC38 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xf4 + lsls r0, r0, #4 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x10 + strh r0, [r1] +_0809AC36: + pop {pc} + .align 2, 0 +_0809AC38: .4byte gUnk_03000F50 + + thumb_func_start sub_0809AC3C +sub_0809AC3C: @ 0x0809AC3C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r3, #0xff + lsls r0, r0, #0x18 + lsrs r5, r0, #0x18 + cmp r5, #0 + bne _0809AC9A + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r2, [r4, #0xf] + adds r2, #1 + strb r2, [r4, #0xf] + adds r1, r2, #0 + ands r1, r3 + ldr r6, _0809AC9C @ =gUnk_03000F50 + lsls r3, r1, #8 + movs r0, #0x10 + subs r0, r0, r1 + movs r1, #0xff + ands r0, r1 + orrs r3, r0 + adds r0, r6, #0 + adds r0, #0x68 + strh r3, [r0] + lsls r2, r2, #0x18 + lsrs r2, r2, #0x18 + cmp r2, #0xf + bls _0809AC9A + ldrb r1, [r4, #0x19] + movs r0, #0xd + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x19] + adds r0, r6, #0 + adds r0, #0x66 + strh r5, [r0] + movs r0, #6 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x13 + ands r0, r1 + strb r0, [r4, #0x18] +_0809AC9A: + pop {r4, r5, r6, pc} + .align 2, 0 +_0809AC9C: .4byte gUnk_03000F50 + + thumb_func_start sub_0809ACA0 +sub_0809ACA0: @ 0x0809ACA0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809ACC4 + ldr r1, [r2, #0x54] + movs r0, #6 + strb r0, [r1, #0xd] + ldr r0, _0809ACC8 @ =gUnk_030010A0 + adds r0, #0x38 + movs r1, #0xf1 + strb r1, [r0] + adds r0, r2, #0 + bl sub_0805E7BC +_0809ACC4: + pop {pc} + .align 2, 0 +_0809ACC8: .4byte gUnk_030010A0 + + thumb_func_start sub_0809ACCC +sub_0809ACCC: @ 0x0809ACCC + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x54] + ldrb r0, [r0, #0xe] + cmp r0, #1 + bne _0809ACE4 + movs r0, #0 + movs r1, #8 + strb r1, [r2, #0xc] + strb r0, [r2, #0xd] + movs r0, #0xb4 + strb r0, [r2, #0xe] +_0809ACE4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809ACE8 +sub_0809ACE8: @ 0x0809ACE8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _0809AD1E + cmp r0, #2 + beq _0809AD3A + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809AD58 + movs r0, #0x5a + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x73 + bl sub_080A3268 + movs r0, #0x31 + bl sub_0807CCC8 + adds r0, r4, #0 + bl sub_0809AD8C + b _0809AD58 +_0809AD1E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809AD58 + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xd] + adds r0, r4, #0 + bl sub_0809AD68 + b _0809AD58 +_0809AD3A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809AD58 + ldr r1, _0809AD5C @ =gUnk_03000BF0 + ldr r0, _0809AD60 @ =gLinkEntity + str r0, [r1, #0x30] + ldr r0, _0809AD64 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + bl sub_0805E780 +_0809AD58: + pop {r4, pc} + .align 2, 0 +_0809AD5C: .4byte gUnk_03000BF0 +_0809AD60: .4byte gLinkEntity +_0809AD64: .4byte gUnk_03003F80 + + thumb_func_start sub_0809AD68 +sub_0809AD68: @ 0x0809AD68 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + bl sub_0804B128 + bl sub_0804ADDC + movs r0, #0x17 + bl sub_0807CA84 + cmp r0, #0 + beq _0809AD8A + ldrb r0, [r4, #0xb] + bl sub_0804B128 + bl sub_0804ADDC +_0809AD8A: + pop {r4, pc} + + thumb_func_start sub_0809AD8C +sub_0809AD8C: @ 0x0809AD8C + push {lr} + movs r0, #0x4f + movs r1, #0x22 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _0809ADAC + ldr r0, _0809ADB0 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + adds r1, #0xb8 + strh r1, [r2, #0x2e] + ldrh r0, [r0, #8] + adds r0, #8 + strh r0, [r2, #0x32] +_0809ADAC: + pop {pc} + .align 2, 0 +_0809ADB0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809ADB4 +sub_0809ADB4: @ 0x0809ADB4 + push {lr} + ldr r2, _0809ADC8 @ =gUnk_08123D4C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809ADC8: .4byte gUnk_08123D4C + + thumb_func_start sub_0809ADCC +sub_0809ADCC: @ 0x0809ADCC + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0809AE14 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r5, r4, #0 + adds r5, #0x80 + strh r1, [r5] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r7, [r0] + adds r0, r4, #0 + bl sub_08016A04 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0809AEBC + cmp r0, #1 + bgt _0809AE18 + cmp r0, #0 + beq _0809AE1E + b _0809AF46 + .align 2, 0 +_0809AE14: .4byte gUnk_03000BF0 +_0809AE18: + cmp r0, #2 + beq _0809AF10 + b _0809AF46 +_0809AE1E: + movs r0, #2 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xa + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrh r5, [r5] + subs r6, r5, #1 + ldr r4, _0809AEB8 @ =0x00004022 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #1 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #0 + adds r1, #0x3f + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #0 + adds r1, #0x40 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #0 + adds r1, #0x41 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r4, #0x1b + adds r1, r5, #0 + subs r1, #0x41 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x40 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + subs r4, #0x17 + adds r1, r5, #0 + subs r1, #0x3f + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x81 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x80 + adds r0, r4, #0 + b _0809AF04 + .align 2, 0 +_0809AEB8: .4byte 0x00004022 +_0809AEBC: + strb r0, [r4, #0xc] + ldrh r6, [r5] + ldr r4, _0809AEF4 @ =0x00004022 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x40 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + ldr r0, _0809AEF8 @ =0x00004025 + adds r1, r6, #0 + adds r1, #0x41 + adds r2, r7, #0 + bl sub_0800015E + movs r0, #0x4f + bl sub_0807CBD0 + cmp r0, #0 + bne _0809AF00 + ldr r0, _0809AEFC @ =0x0000402F + b _0809AF02 + .align 2, 0 +_0809AEF4: .4byte 0x00004022 +_0809AEF8: .4byte 0x00004025 +_0809AEFC: .4byte 0x0000402F +_0809AF00: + ldr r0, _0809AF0C @ =0x0000402D +_0809AF02: + adds r1, r6, #1 +_0809AF04: + adds r2, r7, #0 + bl sub_0800015E + b _0809AF46 + .align 2, 0 +_0809AF0C: .4byte 0x0000402D +_0809AF10: + movs r0, #1 + strb r0, [r4, #0xc] + ldrh r5, [r5] + adds r6, r5, #0 + subs r6, #0x41 + ldr r4, _0809AF48 @ =0x00004022 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x40 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + subs r1, r5, #1 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_0800015E +_0809AF46: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809AF48: .4byte 0x00004022 + + thumb_func_start nullsub_535 +nullsub_535: @ 0x0809AF4C + bx lr + .align 2, 0 + + thumb_func_start sub_0809AF50 +sub_0809AF50: @ 0x0809AF50 + push {lr} + bl nullsub_2 + pop {pc} + + thumb_func_start nullsub_2 +nullsub_2: @ 0x0809AF58 + bx lr + .align 2, 0 + + thumb_func_start sub_0809AF5C +sub_0809AF5C: @ 0x0809AF5C + push {lr} + ldr r2, _0809AF70 @ =gUnk_08123D58 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809AF70: .4byte gUnk_08123D58 + + thumb_func_start sub_0809AF74 +sub_0809AF74: @ 0x0809AF74 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + strb r0, [r4, #0x1e] + movs r0, #0x2e + ldrsh r2, [r4, r0] + ldr r1, _0809AFBC @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r2, r0 + adds r0, r4, #0 + adds r0, #0x80 + movs r6, #0 + strh r2, [r0] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0809AFC4 + movs r1, #1 + strb r1, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #0 + bne _0809AFC0 + strb r6, [r4, #0xd] + b _0809B02C + .align 2, 0 +_0809AFBC: .4byte gUnk_03000BF0 +_0809AFC0: + strb r1, [r4, #0xd] + b _0809B02C +_0809AFC4: + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #4 + strb r0, [r4, #0xd] + adds r0, r4, #0 + adds r0, #0x84 + strb r6, [r0] + adds r0, r4, #0 + bl sub_08016A04 + movs r0, #0x8b + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _0809B026 + str r4, [r5, #0x50] + str r5, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _0809B010 + movs r3, #0x80 + lsls r3, r3, #0xd + adds r0, r4, #0 + adds r1, r5, #0 + adds r2, r3, #0 + bl sub_0806FA48 + adds r0, r5, #0 + adds r0, #0x84 + strb r6, [r0] + b _0809B026 +_0809B010: + movs r3, #0x80 + lsls r3, r3, #0xd + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + adds r1, r5, #0 + adds r1, #0x84 + movs r0, #1 + strb r0, [r1] +_0809B026: + adds r0, r4, #0 + bl sub_0809B334 +_0809B02C: + adds r0, r4, #0 + bl sub_0809B0B0 + pop {r4, r5, r6, pc} + + thumb_func_start sub_0809B034 +sub_0809B034: @ 0x0809B034 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x82 + ldrh r0, [r0] + adds r1, r4, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002B0 + adds r0, r4, #0 + bl sub_0809B234 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809B050 +sub_0809B050: @ 0x0809B050 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809B0A2 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0809B0A4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] + movs r0, #0 + bl sub_08078A90 + adds r0, r4, #0 + bl sub_0809B0B0 + movs r0, #0x86 + lsls r0, r0, #1 + bl sub_08004488 +_0809B0A2: + pop {r4, r5, pc} + .align 2, 0 +_0809B0A4: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809B0A8 +sub_0809B0A8: @ 0x0809B0A8 + push {lr} + bl sub_0809B234 + pop {pc} + + thumb_func_start sub_0809B0B0 +sub_0809B0B0: @ 0x0809B0B0 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r0, #0x80 + ldrh r0, [r0] + subs r6, r0, #1 + mov r0, r8 + adds r0, #0x38 + ldrb r7, [r0] + mov r1, r8 + ldrb r0, [r1, #0xd] + cmp r0, #4 + bls _0809B0CE + b _0809B228 +_0809B0CE: + lsls r0, r0, #2 + ldr r1, _0809B0D8 @ =_0809B0DC + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809B0D8: .4byte _0809B0DC +_0809B0DC: @ jump table + .4byte _0809B0F0 @ case 0 + .4byte _0809B130 @ case 1 + .4byte _0809B178 @ case 2 + .4byte _0809B1C0 @ case 3 + .4byte _0809B208 @ case 4 +_0809B0F0: + mov r1, r8 + adds r1, #0x84 + movs r0, #0 + strb r0, [r1] + adds r5, r6, #2 + mov r0, r8 + adds r0, #0x82 + strh r5, [r0] + ldr r0, _0809B128 @ =0x00004082 + subs r1, r6, #1 + adds r2, r7, #0 + bl sub_0800015E + ldr r4, _0809B12C @ =0x00004022 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r6, #1 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r0, r4, #0 + adds r1, r5, #0 + b _0809B162 + .align 2, 0 +_0809B128: .4byte 0x00004082 +_0809B12C: .4byte 0x00004022 +_0809B130: + mov r1, r8 + adds r1, #0x84 + movs r0, #1 + strb r0, [r1] + mov r0, r8 + adds r0, #0x82 + strh r6, [r0] + ldr r0, _0809B16C @ =0x0000405F + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + ldr r4, _0809B170 @ =0x00004022 + adds r1, r6, #1 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r6, #2 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + ldr r0, _0809B174 @ =0x00004082 + adds r1, r6, #3 +_0809B162: + adds r2, r7, #0 + bl sub_0800015E + b _0809B228 + .align 2, 0 +_0809B16C: .4byte 0x0000405F +_0809B170: .4byte 0x00004022 +_0809B174: .4byte 0x00004082 +_0809B178: + mov r1, r8 + adds r1, #0x84 + movs r0, #1 + strb r0, [r1] + mov r0, r8 + adds r0, #0x82 + strh r6, [r0] + ldr r0, _0809B1B4 @ =0x00004082 + adds r1, r6, #3 + adds r2, r7, #0 + bl sub_0800015E + ldr r0, _0809B1B8 @ =0x00004022 + adds r1, r6, #2 + adds r2, r7, #0 + bl sub_0800015E + ldr r0, _0809B1BC @ =0x0000405F + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + mov r1, r8 + ldr r0, [r1, #0x50] + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + b _0809B228 + .align 2, 0 +_0809B1B4: .4byte 0x00004082 +_0809B1B8: .4byte 0x00004022 +_0809B1BC: .4byte 0x0000405F +_0809B1C0: + mov r1, r8 + adds r1, #0x84 + movs r0, #0 + strb r0, [r1] + adds r4, r6, #2 + mov r0, r8 + adds r0, #0x82 + strh r4, [r0] + ldr r0, _0809B1FC @ =0x00004082 + subs r1, r6, #1 + adds r2, r7, #0 + bl sub_0800015E + ldr r0, _0809B200 @ =0x00004022 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + ldr r0, _0809B204 @ =0x0000405F + adds r1, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + mov r1, r8 + ldr r0, [r1, #0x50] + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CD48 + b _0809B228 + .align 2, 0 +_0809B1FC: .4byte 0x00004082 +_0809B200: .4byte 0x00004022 +_0809B204: .4byte 0x0000405F +_0809B208: + ldr r4, _0809B230 @ =0x00004022 + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r6, #1 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E + adds r1, r6, #2 + adds r0, r4, #0 + adds r2, r7, #0 + bl sub_0800015E +_0809B228: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809B230: .4byte 0x00004022 + + thumb_func_start sub_0809B234 +sub_0809B234: @ 0x0809B234 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0809B26A + ldr r2, [r4, #0x50] + ldrb r1, [r2, #0x19] + lsrs r1, r1, #6 + lsls r1, r1, #6 + ldrb r3, [r4, #0x19] + movs r0, #0x3f + ands r0, r3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, #0x29 + ldrb r1, [r2] + lsls r1, r1, #0x1d + adds r3, r4, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1d + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + b _0809B270 +_0809B26A: + adds r0, r4, #0 + bl sub_0809B274 +_0809B270: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809B274 +sub_0809B274: @ 0x0809B274 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _0809B290 @ =gLinkEntity + adds r2, r4, #0 + adds r2, #0x84 + ldrb r0, [r2] + cmp r0, #1 + beq _0809B2BA + cmp r0, #1 + bgt _0809B294 + cmp r0, #0 + beq _0809B29A + b _0809B332 + .align 2, 0 +_0809B290: .4byte gLinkEntity +_0809B294: + cmp r0, #2 + beq _0809B30C + b _0809B332 +_0809B29A: + movs r1, #0x32 + ldrsh r0, [r3, r1] + adds r0, #0x14 + movs r3, #0x32 + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _0809B332 + movs r0, #1 + strb r0, [r2] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #5 + b _0809B306 +_0809B2BA: + movs r5, #0x2e + ldrsh r0, [r3, r5] + adds r0, #0x1c + movs r5, #0x2e + ldrsh r1, [r4, r5] + cmp r0, r1 + ble _0809B2E8 + movs r0, #2 + strb r0, [r2] + ldr r0, _0809B2E4 @ =0x00004022 + adds r1, r4, #0 + adds r1, #0x80 + ldrh r1, [r1] + adds r1, #2 + movs r2, #1 + bl sub_0800015E + ldr r0, [r4, #0x54] + bl sub_0809B358 + b _0809B332 + .align 2, 0 +_0809B2E4: .4byte 0x00004022 +_0809B2E8: + movs r1, #0x32 + ldrsh r0, [r3, r1] + adds r0, #0x10 + movs r3, #0x32 + ldrsh r1, [r4, r3] + cmp r0, r1 + ble _0809B332 + movs r0, #0 + strb r0, [r2] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #8 + ands r0, r1 + movs r1, #4 +_0809B306: + orrs r0, r1 + strb r0, [r2] + b _0809B332 +_0809B30C: + movs r5, #0x2e + ldrsh r0, [r3, r5] + adds r0, #0x20 + movs r3, #0x2e + ldrsh r1, [r4, r3] + cmp r0, r1 + bge _0809B332 + movs r0, #1 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x80 + ldrh r0, [r0] + adds r0, #2 + movs r1, #1 + bl sub_0807BA8C + ldr r0, [r4, #0x54] + bl sub_0809B38C +_0809B332: + pop {r4, r5, pc} + + thumb_func_start sub_0809B334 +sub_0809B334: @ 0x0809B334 + push {r4, r5, lr} + adds r0, #0x80 + ldrh r0, [r0] + adds r4, r0, #0 + subs r4, #0x81 + movs r5, #2 +_0809B340: + ldr r0, _0809B354 @ =0x00004026 + adds r1, r4, #0 + movs r2, #1 + bl sub_0800015E + subs r5, #1 + adds r4, #1 + cmp r5, #0 + bge _0809B340 + pop {r4, r5, pc} + .align 2, 0 +_0809B354: .4byte 0x00004026 + + thumb_func_start sub_0809B358 +sub_0809B358: @ 0x0809B358 + push {r4, r5, r6, lr} + adds r1, r0, #0 + adds r1, #0x84 + ldrb r1, [r1] + lsls r1, r1, #1 + ldr r2, _0809B388 @ =gUnk_08123D68 + adds r5, r1, r2 + adds r0, #0x80 + ldrh r0, [r0] + adds r4, r0, #0 + subs r4, #0x82 + movs r6, #4 +_0809B370: + ldrh r0, [r5] + adds r1, r4, #0 + movs r2, #1 + bl sub_0800015E + subs r6, #1 + adds r4, #1 + adds r5, #4 + cmp r6, #0 + bge _0809B370 + pop {r4, r5, r6, pc} + .align 2, 0 +_0809B388: .4byte gUnk_08123D68 + + thumb_func_start sub_0809B38C +sub_0809B38C: @ 0x0809B38C + push {r4, r5, lr} + adds r0, #0x80 + ldrh r0, [r0] + adds r4, r0, #0 + subs r4, #0x82 + movs r5, #4 +_0809B398: + adds r0, r4, #0 + movs r1, #1 + bl sub_0807BA8C + subs r5, #1 + adds r4, #1 + cmp r5, #0 + bge _0809B398 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809B3AC +sub_0809B3AC: @ 0x0809B3AC + push {lr} + ldr r2, _0809B3C0 @ =gUnk_08123D7C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809B3C0: .4byte gUnk_08123D7C + + thumb_func_start sub_0809B3C4 +sub_0809B3C4: @ 0x0809B3C4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + adds r0, #0x39 + bl sub_0807CA84 + adds r5, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #3 + beq _0809B3E2 + cmp r5, #0 + beq _0809B3FE + bl sub_0805E780 + b _0809B3FE +_0809B3E2: + movs r0, #0x73 + bl sub_0807CBD0 + cmp r0, #0 + beq _0809B3F0 + bl sub_0805E780 +_0809B3F0: + cmp r5, #2 + beq _0809B3FE + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_0809B3FE: + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #3 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809B424 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _0809B420 + ldrh r0, [r4, #0x32] + adds r0, #0x30 + strh r0, [r4, #0x32] +_0809B420: + movs r0, #2 + strb r0, [r4, #0xb] +_0809B424: + adds r0, r4, #0 + bl sub_08016A04 + ldrb r1, [r4, #0xa] + adds r1, #0x39 + adds r0, r4, #0 + bl sub_080042AC + ldrb r1, [r4, #0xb] + cmp r1, #1 + beq _0809B46C + cmp r1, #1 + bgt _0809B444 + cmp r1, #0 + beq _0809B44E + b _0809B4A6 +_0809B444: + cmp r1, #2 + beq _0809B488 + cmp r1, #3 + beq _0809B48E + b _0809B4A6 +_0809B44E: + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x16 + strb r0, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xf] + adds r0, r4, #0 + adds r0, #0x80 + strb r1, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + b _0809B49E +_0809B46C: + movs r0, #3 + strb r0, [r4, #0xc] + ldr r0, _0809B484 @ =gUnk_03000BF0 + ldrh r0, [r0, #0xc] + subs r0, #0x10 + ldrh r1, [r4, #0x32] + subs r1, r1, r0 + ldrh r0, [r4, #0x36] + subs r0, r0, r1 + strh r0, [r4, #0x36] + b _0809B4A6 + .align 2, 0 +_0809B484: .4byte gUnk_03000BF0 +_0809B488: + movs r0, #4 + strb r0, [r4, #0xc] + b _0809B4A6 +_0809B48E: + movs r1, #0 + movs r0, #5 + strb r0, [r4, #0xc] + strb r1, [r4, #0xd] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0xd +_0809B49E: + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_0809B4A6: + pop {r4, r5, pc} + + thumb_func_start sub_0809B4A8 +sub_0809B4A8: @ 0x0809B4A8 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800445C + adds r1, r4, #0 + adds r1, #0x80 + ldrb r0, [r1] + cmp r0, #0 + beq _0809B4C0 + subs r0, #1 + strb r0, [r1] + b _0809B520 +_0809B4C0: + adds r0, r4, #0 + bl sub_0809B688 + cmp r0, #0 + beq _0809B51C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r3, r0, #0x18 + cmp r3, #0 + bne _0809B520 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #0x40 + strh r0, [r4, #0x24] + movs r0, #0x10 + strb r0, [r4, #0x15] + ldr r2, _0809B510 @ =gUnk_03003F80 + movs r0, #0x9e + strb r0, [r2, #6] + movs r0, #5 + strb r0, [r2, #0xc] + ldr r0, [r2, #0x30] + movs r1, #1 + orrs r0, r1 + str r0, [r2, #0x30] + ldr r1, _0809B514 @ =gLinkEntity + strh r3, [r1, #0x2c] + strh r3, [r1, #0x30] + ldrb r0, [r1, #0x14] + lsls r0, r0, #2 + strb r0, [r1, #0x15] + ldr r0, _0809B518 @ =0x0000010F + bl sub_08004488 + b _0809B520 + .align 2, 0 +_0809B510: .4byte gUnk_03003F80 +_0809B514: .4byte gLinkEntity +_0809B518: .4byte 0x0000010F +_0809B51C: + movs r0, #0x16 + strb r0, [r4, #0xe] +_0809B520: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809B524 +sub_0809B524: @ 0x0809B524 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + movs r1, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809B564 + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + ands r0, r1 + cmp r0, #0 + bne _0809B554 + movs r0, #3 + strb r0, [r2, #0xc] + ldrh r0, [r2, #0x32] + adds r0, #0x20 + strh r0, [r2, #0x32] + ldrh r0, [r2, #0x36] + subs r0, #0x20 + strh r0, [r2, #0x36] + b _0809B564 +_0809B554: + movs r0, #1 + strb r0, [r2, #0xc] + movs r0, #0x16 + strb r0, [r2, #0xe] + adds r1, r2, #0 + adds r1, #0x80 + movs r0, #0x18 + strb r0, [r1] +_0809B564: + adds r0, r2, #0 + bl sub_0806F69C + pop {pc} + + thumb_func_start sub_0809B56C +sub_0809B56C: @ 0x0809B56C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xa0 + lsls r1, r1, #6 + bl sub_080044EC + cmp r0, #1 + bne _0809B5B0 + movs r2, #4 + movs r0, #4 + strb r0, [r4, #0xc] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0xc + ands r0, r1 + orrs r0, r2 + strb r0, [r3] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0809B5B0 + adds r0, r4, #0 + bl sub_0806FAB0 +_0809B5B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809B5B4 +sub_0809B5B4: @ 0x0809B5B4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0809B5CC @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809B5D0 + adds r0, r4, #0 + bl sub_0800445C + b _0809B5EA + .align 2, 0 +_0809B5CC: .4byte gUnk_03003F80 +_0809B5D0: + adds r0, r4, #0 + bl sub_08017850 + cmp r0, #0 + beq _0809B5EA + ldrb r0, [r4, #0xa] + adds r0, #0x39 + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 + bl sub_0805E780 +_0809B5EA: + pop {r4, pc} + + thumb_func_start sub_0809B5EC +sub_0809B5EC: @ 0x0809B5EC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + lsrs r5, r0, #0x1e + cmp r5, #1 + bne _0809B646 + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0809B606 + cmp r0, #1 + beq _0809B630 + b _0809B682 +_0809B606: + movs r0, #7 + movs r1, #0x1a + movs r2, #7 + bl sub_0805EB00 + adds r2, r0, #0 + cmp r2, #0 + beq _0809B682 + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r3, #0x2e + ldrsh r0, [r4, r3] + cmp r1, r0 + blt _0809B682 + ldrb r0, [r2, #0x14] + cmp r0, #4 + bne _0809B682 + str r2, [r4, #0x50] + strb r5, [r4, #0xd] + adds r0, r2, #0 + b _0809B63E +_0809B630: + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _0809B650 + ldr r0, [r1, #4] + cmp r0, #0 + beq _0809B650 + adds r0, r1, #0 +_0809B63E: + adds r1, r4, #0 + bl sub_0809B6B0 + b _0809B682 +_0809B646: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0809B656 + cmp r0, #1 + beq _0809B668 +_0809B650: + bl sub_0805E780 + b _0809B682 +_0809B656: + ldrb r0, [r4, #0xa] + adds r0, #0x39 + bl sub_0807CA84 + cmp r0, #2 + bne _0809B682 + movs r0, #1 + strb r0, [r4, #0xd] + b _0809B682 +_0809B668: + ldr r0, _0809B684 @ =gUnk_02000050 + ldrb r0, [r0] + movs r2, #0x7f + ands r2, r0 + cmp r2, #0 + bne _0809B682 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r2, [r4, #0xd] +_0809B682: + pop {r4, r5, pc} + .align 2, 0 +_0809B684: .4byte gUnk_02000050 + + thumb_func_start sub_0809B688 +sub_0809B688: @ 0x0809B688 + push {lr} + ldr r1, _0809B6A8 @ =gLinkEntity + movs r2, #6 + movs r3, #0xc + bl sub_080041A0 + adds r1, r0, #0 + cmp r1, #1 + bne _0809B6A4 + ldr r0, _0809B6AC @ =gUnk_03003F80 + ldrb r0, [r0, #0xd] + cmp r0, #0x10 + beq _0809B6A4 + movs r1, #0 +_0809B6A4: + adds r0, r1, #0 + pop {pc} + .align 2, 0 +_0809B6A8: .4byte gLinkEntity +_0809B6AC: .4byte gUnk_03003F80 + + thumb_func_start sub_0809B6B0 +sub_0809B6B0: @ 0x0809B6B0 + push {r4, lr} + adds r4, r1, #0 + ldr r2, _0809B6EC @ =gUnk_08123D94 + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + adds r1, r1, r2 + movs r3, #0 + ldrsb r3, [r1, r3] + lsls r3, r3, #0x10 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + rsbs r0, r0, #0 + strh r0, [r4, #0x36] + ldrb r0, [r4, #0xa] + movs r1, #3 + subs r1, r1, r0 + adds r4, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_0809B6EC: .4byte gUnk_08123D94 + + thumb_func_start sub_0809B6F0 +sub_0809B6F0: @ 0x0809B6F0 + push {lr} + ldr r2, _0809B704 @ =gUnk_08123D98 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809B704: .4byte gUnk_08123D98 + + thumb_func_start sub_0809B708 +sub_0809B708: @ 0x0809B708 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r2, #1 + movs r0, #1 + strb r0, [r6, #0xc] + ldrb r1, [r6, #0x18] + subs r0, #5 + ands r0, r1 + orrs r0, r2 + strb r0, [r6, #0x18] + movs r0, #0x80 + strh r0, [r6, #0x24] + adds r0, r6, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809B73A + adds r0, r6, #0 + bl sub_0809B7DC + bl sub_0805E780 + b _0809B78A +_0809B73A: + ldr r0, _0809B794 @ =0x0000030B + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldr r5, _0809B798 @ =gUnk_03000BF0 + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #2 + bl sub_0807B7D8 + ldr r0, _0809B79C @ =0x00004061 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r6, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0809B78A: + adds r0, r6, #0 + bl sub_0809B7A0 + pop {r4, r5, r6, pc} + .align 2, 0 +_0809B794: .4byte 0x0000030B +_0809B798: .4byte gUnk_03000BF0 +_0809B79C: .4byte 0x00004061 + + thumb_func_start sub_0809B7A0 +sub_0809B7A0: @ 0x0809B7A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809B7C0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809B7BC + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + bl sub_0805E780 +_0809B7BC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809B7C0 +sub_0809B7C0: @ 0x0809B7C0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080002A0 + ldr r1, _0809B7D8 @ =0xFFFFBF9F + adds r0, r0, r1 + cmp r0, #1 + bls _0809B7D6 + adds r0, r4, #0 + bl sub_0809B7DC +_0809B7D6: + pop {r4, pc} + .align 2, 0 +_0809B7D8: .4byte 0xFFFFBF9F + + thumb_func_start sub_0809B7DC +sub_0809B7DC: @ 0x0809B7DC + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r0, #0xc3 + lsls r0, r0, #2 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldr r5, _0809B838 @ =gUnk_03000BF0 + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + movs r2, #2 + bl sub_0807B7D8 + ldr r0, _0809B83C @ =0x00004062 + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldrh r2, [r5, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r4 + movs r3, #0x32 + ldrsh r2, [r6, r3] + ldrh r3, [r5, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r6, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + movs r0, #1 + strb r0, [r6, #0xe] + pop {r4, r5, r6, pc} + .align 2, 0 +_0809B838: .4byte gUnk_03000BF0 +_0809B83C: .4byte 0x00004062 + + thumb_func_start sub_0809B840 +sub_0809B840: @ 0x0809B840 + push {lr} + ldr r2, _0809B854 @ =gUnk_08123DA0 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809B854: .4byte gUnk_08123DA0 + + thumb_func_start sub_0809B858 +sub_0809B858: @ 0x0809B858 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x1e + bl sub_0805E4E0 + ldrb r3, [r4, #0xc] + cmp r3, #1 + beq _0809B8CC + cmp r3, #1 + bgt _0809B872 + cmp r3, #0 + beq _0809B878 + b _0809B972 +_0809B872: + cmp r3, #2 + beq _0809B948 + b _0809B972 +_0809B878: + movs r1, #1 + strb r1, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + strb r3, [r4, #0xf] + ldr r0, _0809B8BC @ =gUnk_03000BF0 + str r4, [r0, #0x30] + strb r1, [r0, #0xe] + ldr r5, _0809B8C0 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r5, r2] + movs r2, #6 + cmp r1, r0 + ble _0809B89A + movs r2, #2 +_0809B89A: + strb r2, [r5, #0x14] + ldr r2, _0809B8C4 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0809B8C8 @ =0x0000BFFF + ands r0, r1 + movs r4, #0xa0 + lsls r4, r4, #6 + adds r1, r4, #0 + orrs r0, r1 + strh r0, [r2] + adds r0, r2, #0 + adds r0, #0x58 + strh r3, [r0] + adds r2, #0x5c + movs r0, #0xa0 + strh r0, [r2] + b _0809B972 + .align 2, 0 +_0809B8BC: .4byte gUnk_03000BF0 +_0809B8C0: .4byte gLinkEntity +_0809B8C4: .4byte gUnk_03000F50 +_0809B8C8: .4byte 0x0000BFFF +_0809B8CC: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809B8D8 + subs r0, #1 + strb r0, [r4, #0xe] + b _0809B972 +_0809B8D8: + ldrb r0, [r4, #0xf] + cmp r0, #0x1f + bhi _0809B914 + ldr r5, _0809B90C @ =gUnk_030010A0 + ldr r0, [r5] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0809B8F0 + ldr r0, _0809B910 @ =0x00000133 + bl sub_080A3268 +_0809B8F0: + ldr r0, [r5] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0809B972 + ldrb r1, [r4, #0xf] + adds r1, #1 + strb r1, [r4, #0xf] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0809B97C + b _0809B972 + .align 2, 0 +_0809B90C: .4byte gUnk_030010A0 +_0809B910: .4byte 0x00000133 +_0809B914: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r2, _0809B938 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0809B93C @ =0x0000DFFF + ands r0, r1 + strh r0, [r2] + ldr r1, _0809B940 @ =gUnk_03000BF0 + ldr r0, _0809B944 @ =gLinkEntity + str r0, [r1, #0x30] + movs r0, #0x9a + lsls r0, r0, #1 + bl sub_080A3268 + b _0809B972 + .align 2, 0 +_0809B938: .4byte gUnk_03000F50 +_0809B93C: .4byte 0x0000DFFF +_0809B940: .4byte gUnk_03000BF0 +_0809B944: .4byte gLinkEntity +_0809B948: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809B972 + ldr r2, _0809B974 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x90 + lsls r3, r3, #7 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _0809B978 @ =gUnk_03000BF0 + movs r0, #4 + strb r0, [r1, #0xe] + ldr r1, [r4, #0x50] + movs r0, #1 + strb r0, [r1, #0xd] + bl sub_0805E780 +_0809B972: + pop {r4, r5, pc} + .align 2, 0 +_0809B974: .4byte gUnk_03000F50 +_0809B978: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809B97C +sub_0809B97C: @ 0x0809B97C + push {lr} + movs r3, #0x2e + ldrsh r2, [r0, r3] + ldr r0, _0809B9B4 @ =gUnk_03000BF0 + movs r3, #0xa + ldrsh r0, [r0, r3] + subs r2, r2, r0 + subs r0, r2, r1 + adds r2, r2, r1 + cmp r0, #0 + bge _0809B994 + movs r0, #0 +_0809B994: + cmp r0, #0xf0 + ble _0809B99A + movs r0, #0xf0 +_0809B99A: + cmp r2, #0 + bge _0809B9A0 + movs r2, #0 +_0809B9A0: + cmp r2, #0xf0 + ble _0809B9A6 + movs r2, #0xf0 +_0809B9A6: + ldr r1, _0809B9B8 @ =gUnk_03000F50 + lsls r0, r0, #8 + orrs r0, r2 + adds r1, #0x58 + strh r0, [r1] + pop {pc} + .align 2, 0 +_0809B9B4: .4byte gUnk_03000BF0 +_0809B9B8: .4byte gUnk_03000F50 + + thumb_func_start sub_0809B9BC +sub_0809B9BC: @ 0x0809B9BC + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x1e + bl sub_0805E4E0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0809BA34 + cmp r0, #1 + bgt _0809B9D6 + cmp r0, #0 + beq _0809B9DC + b _0809BAC2 +_0809B9D6: + cmp r0, #2 + beq _0809BA9C + b _0809BAC2 +_0809B9DC: + movs r1, #1 + strb r1, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x20 + strb r0, [r4, #0xf] + ldr r0, _0809BA24 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + strb r1, [r0, #0xe] + ldr r3, _0809BA28 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r3, r2] + movs r2, #6 + cmp r1, r0 + ble _0809BA00 + movs r2, #2 +_0809BA00: + strb r2, [r3, #0x14] + ldr r2, _0809BA2C @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0809BA30 @ =0x0000BFFF + ands r0, r1 + movs r3, #0x80 + lsls r3, r3, #6 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + adds r1, r2, #0 + adds r1, #0x58 + movs r0, #0xf0 + strh r0, [r1] + adds r2, #0x5c + movs r0, #0xa0 + strh r0, [r2] + b _0809BAC2 + .align 2, 0 +_0809BA24: .4byte gUnk_03000BF0 +_0809BA28: .4byte gLinkEntity +_0809BA2C: .4byte gUnk_03000F50 +_0809BA30: .4byte 0x0000BFFF +_0809BA34: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809BA40 + subs r0, #1 + strb r0, [r4, #0xe] + b _0809BAC2 +_0809BA40: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0809BA7C + ldr r5, _0809BA74 @ =gUnk_030010A0 + ldr r0, [r5] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0809BA58 + ldr r0, _0809BA78 @ =0x00000133 + bl sub_080A3268 +_0809BA58: + ldr r0, [r5] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0809BAC2 + ldrb r1, [r4, #0xf] + subs r1, #1 + strb r1, [r4, #0xf] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + bl sub_0809B97C + b _0809BAC2 + .align 2, 0 +_0809BA74: .4byte gUnk_030010A0 +_0809BA78: .4byte 0x00000133 +_0809BA7C: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r1, _0809BA94 @ =gUnk_03000BF0 + ldr r0, _0809BA98 @ =gLinkEntity + str r0, [r1, #0x30] + movs r0, #0x9a + lsls r0, r0, #1 + bl sub_080A3268 + b _0809BAC2 + .align 2, 0 +_0809BA94: .4byte gUnk_03000BF0 +_0809BA98: .4byte gLinkEntity +_0809BA9C: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809BAC2 + ldr r1, _0809BAC4 @ =gUnk_03000BF0 + movs r0, #4 + strb r0, [r1, #0xe] + ldr r2, _0809BAC8 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0809BACC @ =0x0000D7FF + ands r0, r1 + strh r0, [r2] + ldr r1, [r4, #0x50] + movs r0, #1 + strb r0, [r1, #0xd] + bl sub_0805E780 +_0809BAC2: + pop {r4, r5, pc} + .align 2, 0 +_0809BAC4: .4byte gUnk_03000BF0 +_0809BAC8: .4byte gUnk_03000F50 +_0809BACC: .4byte 0x0000D7FF + + thumb_func_start sub_0809BAD0 +sub_0809BAD0: @ 0x0809BAD0 + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0xa + bl sub_0805E4E0 + ldrb r0, [r4, #0xc] + cmp r0, #4 + bls _0809BAE2 + b _0809BC68 +_0809BAE2: + lsls r0, r0, #2 + ldr r1, _0809BAEC @ =_0809BAF0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809BAEC: .4byte _0809BAF0 +_0809BAF0: @ jump table + .4byte _0809BB04 @ case 0 + .4byte _0809BB4C @ case 1 + .4byte _0809BBF8 @ case 2 + .4byte _0809BC24 @ case 3 + .4byte _0809BC48 @ case 4 +_0809BB04: + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldr r1, _0809BB40 @ =gUnk_03000BF0 + str r4, [r1, #0x30] + movs r0, #1 + strb r0, [r1, #0xe] + ldr r3, _0809BB44 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r3, r2] + movs r2, #6 + cmp r1, r0 + ble _0809BB2C + movs r2, #2 +_0809BB2C: + strb r2, [r3, #0x14] + ldr r1, _0809BB48 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x58 + movs r0, #0x60 + strh r0, [r2] + adds r1, #0x5c + movs r0, #0xa0 + strh r0, [r1] + b _0809BC68 + .align 2, 0 +_0809BB40: .4byte gUnk_03000BF0 +_0809BB44: .4byte gLinkEntity +_0809BB48: .4byte gUnk_03000F50 +_0809BB4C: + adds r0, r4, #0 + bl sub_0809BE78 + cmp r0, #0 + bne _0809BB58 + b _0809BC68 +_0809BB58: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809BB88 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809BB6A + b _0809BC68 +_0809BB6A: + ldr r2, _0809BB80 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0809BB84 @ =0x0000BFFF + ands r0, r1 + movs r3, #0xa0 + lsls r3, r3, #6 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + b _0809BC68 + .align 2, 0 +_0809BB80: .4byte gUnk_03000F50 +_0809BB84: .4byte 0x0000BFFF +_0809BB88: + ldr r2, _0809BBB8 @ =gUnk_03000F50 + adds r5, r2, #0 + adds r5, #0x58 + ldrh r0, [r5] + cmp r0, #0xdf + bhi _0809BBC4 + ldr r4, _0809BBBC @ =gUnk_030010A0 + ldr r0, [r4] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0809BBA6 + ldr r0, _0809BBC0 @ =0x00000133 + bl sub_080A3268 +_0809BBA6: + ldr r0, [r4] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _0809BC68 + ldrh r0, [r5] + adds r0, #1 + strh r0, [r5] + b _0809BC68 + .align 2, 0 +_0809BBB8: .4byte gUnk_03000F50 +_0809BBBC: .4byte gUnk_030010A0 +_0809BBC0: .4byte 0x00000133 +_0809BBC4: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrh r1, [r2] + ldr r0, _0809BBF4 @ =0x0000DFFF + ands r0, r1 + movs r3, #0x90 + lsls r3, r3, #7 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldrh r0, [r4, #0x2e] + adds r0, #0x68 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, #0x28 + strh r0, [r4, #0x32] + movs r0, #0x9a + lsls r0, r0, #1 + bl sub_080A3268 + b _0809BC68 + .align 2, 0 +_0809BBF4: .4byte 0x0000DFFF +_0809BBF8: + adds r0, r4, #0 + bl sub_0809BE78 + cmp r0, #0 + beq _0809BC68 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809BC68 + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x35 + bl sub_0807CCB4 + movs r0, #0x72 + bl sub_080A3268 + b _0809BC68 +_0809BC24: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809BC68 + movs r0, #4 + strb r0, [r4, #0xc] + ldr r1, _0809BC40 @ =gUnk_03000BF0 + ldr r0, _0809BC44 @ =gLinkEntity + str r0, [r1, #0x30] + movs r0, #2 + strb r0, [r1, #0xe] + b _0809BC68 + .align 2, 0 +_0809BC40: .4byte gUnk_03000BF0 +_0809BC44: .4byte gLinkEntity +_0809BC48: + adds r0, r4, #0 + bl sub_0809BE78 + cmp r0, #0 + beq _0809BC68 + ldr r1, _0809BC6C @ =gUnk_03000BF0 + movs r0, #4 + strb r0, [r1, #0xe] + ldr r1, [r4, #0x50] + movs r0, #1 + strb r0, [r1, #0xd] + movs r0, #0x64 + bl sub_0807CD10 + bl sub_0805E780 +_0809BC68: + pop {r4, r5, pc} + .align 2, 0 +_0809BC6C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809BC70 +sub_0809BC70: @ 0x0809BC70 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #0x1e + bl sub_0805E4E0 + ldrb r5, [r4, #0xc] + cmp r5, #1 + beq _0809BCDC + cmp r5, #1 + bgt _0809BC8A + cmp r5, #0 + beq _0809BC92 + b _0809BDAE +_0809BC8A: + cmp r5, #2 + bne _0809BC90 + b _0809BD98 +_0809BC90: + b _0809BDAE +_0809BC92: + movs r1, #1 + strb r1, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] + ldr r0, _0809BCCC @ =gUnk_03000BF0 + str r4, [r0, #0x30] + strb r1, [r0, #0xe] + ldr r3, _0809BCD0 @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r3, r2] + movs r2, #6 + cmp r1, r0 + ble _0809BCB4 + movs r2, #2 +_0809BCB4: + strb r2, [r3, #0x14] + ldr r1, _0809BCD4 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x58 + ldr r0, _0809BCD8 @ =0x000080F0 + strh r0, [r2] + adds r1, #0x5c + movs r0, #0xa0 + strh r0, [r1] + movs r0, #0x80 + strb r0, [r4, #0xd] + b _0809BDAE + .align 2, 0 +_0809BCCC: .4byte gUnk_03000BF0 +_0809BCD0: .4byte gLinkEntity +_0809BCD4: .4byte gUnk_03000F50 +_0809BCD8: .4byte 0x000080F0 +_0809BCDC: + adds r0, r4, #0 + bl sub_0809BE78 + cmp r0, #0 + beq _0809BDAE + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809BD20 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809BDAE + movs r0, #6 + movs r1, #8 + bl sub_08050054 + movs r0, #3 + bl sub_0805AAF0 + ldr r2, _0809BD18 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0809BD1C @ =0x0000BFFF + ands r0, r1 + movs r3, #0xa0 + lsls r3, r3, #6 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + b _0809BDAE + .align 2, 0 +_0809BD18: .4byte gUnk_03000F50 +_0809BD1C: .4byte 0x0000BFFF +_0809BD20: + ldrb r0, [r4, #0xd] + cmp r0, #0 + beq _0809BD64 + ldr r6, _0809BD58 @ =gUnk_030010A0 + ldr r0, [r6] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0809BD38 + ldr r0, _0809BD5C @ =0x00000133 + bl sub_080A3268 +_0809BD38: + ldr r0, [r6] + ands r0, r5 + cmp r0, #0 + bne _0809BDAE + ldrb r0, [r4, #0xd] + subs r0, #1 + strb r0, [r4, #0xd] + ldr r1, _0809BD60 @ =gUnk_03000F50 + ldrb r0, [r4, #0xd] + lsls r0, r0, #8 + movs r2, #0xf0 + adds r1, #0x58 + orrs r0, r2 + strh r0, [r1] + b _0809BDAE + .align 2, 0 +_0809BD58: .4byte gUnk_030010A0 +_0809BD5C: .4byte 0x00000133 +_0809BD60: .4byte gUnk_03000F50 +_0809BD64: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + ldr r2, _0809BD90 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _0809BD94 @ =0x0000DFFF + ands r0, r1 + movs r3, #0x90 + lsls r3, r3, #7 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + movs r0, #0x37 + bl sub_0807CCB4 + movs r0, #0x9a + lsls r0, r0, #1 + bl sub_080A3268 + b _0809BDAE + .align 2, 0 +_0809BD90: .4byte gUnk_03000F50 +_0809BD94: .4byte 0x0000DFFF +_0809BD98: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809BDAE + ldr r1, [r4, #0x50] + movs r0, #1 + strb r0, [r1, #0xd] + bl sub_0805E780 +_0809BDAE: + pop {r4, r5, r6, pc} + + thumb_func_start sub_0809BDB0 +sub_0809BDB0: @ 0x0809BDB0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x1e + bl sub_0805E4E0 + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0809BE00 + cmp r0, #1 + bgt _0809BDCA + cmp r0, #0 + beq _0809BDD0 + b _0809BE70 +_0809BDCA: + cmp r0, #2 + beq _0809BE54 + b _0809BE70 +_0809BDD0: + movs r1, #1 + strb r1, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + movs r0, #0x80 + strb r0, [r4, #0xf] + ldr r0, _0809BDF8 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + strb r1, [r0, #0xe] + ldr r3, _0809BDFC @ =gLinkEntity + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r2, #0x2e + ldrsh r0, [r3, r2] + movs r2, #6 + cmp r1, r0 + ble _0809BDF4 + movs r2, #2 +_0809BDF4: + strb r2, [r3, #0x14] + b _0809BE70 + .align 2, 0 +_0809BDF8: .4byte gUnk_03000BF0 +_0809BDFC: .4byte gLinkEntity +_0809BE00: + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809BE0C + subs r0, #1 + strb r0, [r4, #0xe] + b _0809BE70 +_0809BE0C: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _0809BE34 + ldr r0, _0809BE2C @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _0809BE70 + ldr r0, _0809BE30 @ =0x00000133 + bl sub_080A3268 + b _0809BE70 + .align 2, 0 +_0809BE2C: .4byte gUnk_030010A0 +_0809BE30: .4byte 0x00000133 +_0809BE34: + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldr r1, _0809BE4C @ =gUnk_03000BF0 + ldr r0, _0809BE50 @ =gLinkEntity + str r0, [r1, #0x30] + movs r0, #0x9a + lsls r0, r0, #1 + bl sub_080A3268 + b _0809BE70 + .align 2, 0 +_0809BE4C: .4byte gUnk_03000BF0 +_0809BE50: .4byte gLinkEntity +_0809BE54: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809BE70 + ldr r1, _0809BE74 @ =gUnk_03000BF0 + movs r0, #4 + strb r0, [r1, #0xe] + ldr r1, [r4, #0x50] + movs r0, #1 + strb r0, [r1, #0xd] + bl sub_0805E780 +_0809BE70: + pop {r4, pc} + .align 2, 0 +_0809BE74: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809BE78 +sub_0809BE78: @ 0x0809BE78 + push {r4, r5, lr} + adds r3, r0, #0 + movs r5, #0 + adds r0, #0x68 + ldrh r2, [r0] + ldr r0, _0809BEB0 @ =gUnk_03000BF0 + movs r4, #0xa + ldrsh r1, [r0, r4] + adds r4, r0, #0 + cmp r2, r1 + bne _0809BE9E + adds r0, r3, #0 + adds r0, #0x6a + ldrh r1, [r0] + movs r2, #0xc + ldrsh r0, [r4, r2] + cmp r1, r0 + bne _0809BE9E + movs r5, #1 +_0809BE9E: + ldrh r1, [r4, #0xa] + adds r0, r3, #0 + adds r0, #0x68 + strh r1, [r0] + ldrh r1, [r4, #0xc] + adds r0, #2 + strh r1, [r0] + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 +_0809BEB0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809BEB4 +sub_0809BEB4: @ 0x0809BEB4 + push {lr} + ldr r2, _0809BEC8 @ =gUnk_08123DB4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809BEC8: .4byte gUnk_08123DB4 + + thumb_func_start sub_0809BECC +sub_0809BECC: @ 0x0809BECC + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x9b + bl sub_0807CBE4 + cmp r0, #0 + beq _0809BEDE + bl sub_0805E780 +_0809BEDE: + movs r0, #0x91 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + str r0, [r4, #0x54] + cmp r0, #0 + beq _0809BF1A + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x11] + subs r0, #0x11 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x11] + strb r2, [r4, #0x1e] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + bl sub_0809C0A8 + adds r0, r4, #0 + movs r1, #0xcc + movs r2, #0xcc + movs r3, #0 + bl sub_0805EC9C +_0809BF1A: + pop {r4, pc} + + thumb_func_start sub_0809BF1C +sub_0809BF1C: @ 0x0809BF1C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xcc + movs r2, #0xcc + movs r3, #0 + bl sub_0805EC9C + movs r0, #0x37 + bl sub_0807CBE4 + cmp r0, #0 + beq _0809BF6C + movs r0, #0x90 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0809BF6C + ldr r0, _0809BF70 @ =gUnk_03000BF0 + str r1, [r0, #0x30] + ldr r0, [r4, #0x54] + str r1, [r0, #0x54] + movs r3, #0x80 + lsls r3, r3, #0xb + adds r0, r4, #0 + movs r2, #0 + bl sub_0806FA48 + movs r0, #2 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x74 + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r1] + adds r0, #0x73 + bl sub_08004488 +_0809BF6C: + pop {r4, pc} + .align 2, 0 +_0809BF70: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809BF74 +sub_0809BF74: @ 0x0809BF74 + push {r4, r5, r6, r7, lr} + adds r7, r0, #0 + adds r5, r7, #0 + adds r5, #0x74 + ldrh r0, [r5] + subs r1, r0, #1 + strh r1, [r5] + lsls r0, r1, #0x10 + cmp r0, #0 + bne _0809BFA0 + ldr r1, [r7, #0x54] + movs r0, #1 + strb r0, [r1, #0xf] + adds r0, r7, #0 + bl sub_0809C23C + movs r0, #0x9b + bl sub_0807CBE4 + bl sub_0805E780 + b _0809C09A +_0809BFA0: + movs r0, #0x1f + ands r1, r0 + cmp r1, #0 + bne _0809BFAE + ldr r0, _0809C09C @ =0x000001B3 + bl sub_08004488 +_0809BFAE: + ldrh r0, [r5] + cmp r0, #0x77 + bhi _0809BFE0 + movs r1, #0x78 + subs r1, r1, r0 + lsls r4, r1, #5 + adds r4, #0xcc + lsls r1, r1, #4 + adds r1, #0xcc + adds r0, r7, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_0805EC9C + adds r0, r7, #0 + adds r1, r4, #0 + movs r2, #8 + movs r3, #0 + bl sub_0806FCF4 + adds r1, r7, #0 + adds r1, #0x63 + ldrb r0, [r1] + adds r0, #8 + strb r0, [r1] +_0809BFE0: + ldr r1, _0809C0A0 @ =gUnk_08123DC0 + ldrh r0, [r5] + lsrs r0, r0, #5 + adds r0, r0, r1 + ldrb r6, [r0] + movs r0, #0xf + movs r1, #0x11 + movs r2, #0x40 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _0809C044 + bl sub_08000E50 + adds r4, r0, #0 + asrs r0, r4, #0x10 + ands r0, r6 + adds r2, r6, #1 + lsrs r1, r2, #1 + subs r0, r0, r1 + mov ip, r0 + lsrs r0, r6, #1 + ands r0, r4 + lsrs r2, r2, #2 + subs r4, r0, r2 + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r7, #0 + adds r1, #0x80 + ldr r2, _0809C0A4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r1, [r1] + adds r0, r0, r1 + add r0, ip + strh r0, [r5, #0x2e] + adds r1, r7, #0 + adds r1, #0x82 + ldrh r0, [r2, #8] + ldrh r1, [r1] + adds r0, r0, r1 + adds r0, r0, r4 + strh r0, [r5, #0x32] +_0809C044: + movs r0, #0xf + movs r1, #2 + movs r2, #0x40 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _0809C09A + bl sub_08000E50 + adds r4, r0, #0 + asrs r1, r4, #0x10 + ands r1, r6 + adds r0, r6, #1 + lsrs r0, r0, #1 + subs r1, r1, r0 + mov ip, r1 + lsrs r3, r6, #1 + ands r3, r4 + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + adds r1, r7, #0 + adds r1, #0x80 + ldr r2, _0809C0A4 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + ldrh r1, [r1] + adds r0, r0, r1 + add r0, ip + strh r0, [r5, #0x2e] + adds r1, r7, #0 + adds r1, #0x82 + ldrh r0, [r2, #8] + ldrh r1, [r1] + adds r0, r0, r1 + adds r0, r0, r3 + strh r0, [r5, #0x32] +_0809C09A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809C09C: .4byte 0x000001B3 +_0809C0A0: .4byte gUnk_08123DC0 +_0809C0A4: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809C0A8 +sub_0809C0A8: @ 0x0809C0A8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r3, _0809C214 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r6, r0, #4 + movs r2, #0x3f + ands r6, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r6, r0 + ldr r5, _0809C218 @ =0x00004022 + adds r1, r6, #0 + subs r1, #0x41 + adds r4, #0x38 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + subs r1, #0x40 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + subs r1, #0x3f + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + subs r1, r6, #2 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + subs r1, r6, #1 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldrb r2, [r4] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0800015E + adds r1, r6, #1 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #2 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x3e + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x3f + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x40 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x41 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x42 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x7f + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x80 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + adds r1, #0x81 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C21C @ =0x0000013F + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + movs r0, #0xa0 + lsls r0, r0, #1 + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C220 @ =0x00000141 + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C224 @ =0x0000017F + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C228 @ =0x00000181 + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C22C @ =0x000001BD + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + movs r0, #0xdf + lsls r0, r0, #1 + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C230 @ =0x000001BF + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C234 @ =0x000001C1 + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + movs r0, #0xe1 + lsls r0, r0, #1 + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809C238 @ =0x000001C3 + adds r1, r6, r0 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0809C214: .4byte gUnk_03000BF0 +_0809C218: .4byte 0x00004022 +_0809C21C: .4byte 0x0000013F +_0809C220: .4byte 0x00000141 +_0809C224: .4byte 0x0000017F +_0809C228: .4byte 0x00000181 +_0809C22C: .4byte 0x000001BD +_0809C230: .4byte 0x000001BF +_0809C234: .4byte 0x000001C1 +_0809C238: .4byte 0x000001C3 + + thumb_func_start sub_0809C23C +sub_0809C23C: @ 0x0809C23C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r3, _0809C370 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r4, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + adds r0, r5, #0 + subs r0, #0x41 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + subs r0, #0x3f + ldrb r1, [r4] + bl sub_0807BA8C + subs r0, r5, #2 + ldrb r1, [r4] + bl sub_0807BA8C + subs r0, r5, #1 + ldrb r1, [r4] + bl sub_0807BA8C + ldrb r1, [r4] + adds r0, r5, #0 + bl sub_0807BA8C + adds r0, r5, #1 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #2 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x3e + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x3f + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x40 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x42 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x7f + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x80 + ldrb r1, [r4] + bl sub_0807BA8C + adds r0, r5, #0 + adds r0, #0x81 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C374 @ =0x0000013F + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C378 @ =0x00000141 + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C37C @ =0x0000017F + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C380 @ =0x00000181 + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C384 @ =0x000001BD + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + movs r1, #0xdf + lsls r1, r1, #1 + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C388 @ =0x000001BF + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C38C @ =0x000001C1 + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + movs r1, #0xe1 + lsls r1, r1, #1 + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + ldr r1, _0809C390 @ =0x000001C3 + adds r0, r5, r1 + ldrb r1, [r4] + bl sub_0807BA8C + pop {r4, r5, pc} + .align 2, 0 +_0809C370: .4byte gUnk_03000BF0 +_0809C374: .4byte 0x0000013F +_0809C378: .4byte 0x00000141 +_0809C37C: .4byte 0x0000017F +_0809C380: .4byte 0x00000181 +_0809C384: .4byte 0x000001BD +_0809C388: .4byte 0x000001BF +_0809C38C: .4byte 0x000001C1 +_0809C390: .4byte 0x000001C3 + + thumb_func_start sub_0809C394 +sub_0809C394: @ 0x0809C394 + push {lr} + ldr r2, _0809C3A8 @ =gUnk_08123DCC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809C3A8: .4byte gUnk_08123DCC + + thumb_func_start sub_0809C3AC +sub_0809C3AC: @ 0x0809C3AC + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + strb r2, [r0, #0x1e] + adds r0, #0x29 + ldrb r2, [r0] + subs r1, #9 + ands r1, r2 + movs r2, #5 + orrs r1, r2 + strb r1, [r0] + bx lr + + thumb_func_start nullsub_536 +nullsub_536: @ 0x0809C3C4 + bx lr + .align 2, 0 + + thumb_func_start sub_0809C3C8 +sub_0809C3C8: @ 0x0809C3C8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0809C3E8 @ =gUnk_08123DD4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + pop {r4, pc} + .align 2, 0 +_0809C3E8: .4byte gUnk_08123DD4 + + thumb_func_start sub_0809C3EC +sub_0809C3EC: @ 0x0809C3EC + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #7 + bls _0809C400 + b _0809C5A4 +_0809C400: + lsls r0, r0, #2 + ldr r1, _0809C40C @ =_0809C410 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C40C: .4byte _0809C410 +_0809C410: @ jump table + .4byte _0809C430 @ case 0 + .4byte _0809C53E @ case 1 + .4byte _0809C53E @ case 2 + .4byte _0809C53E @ case 3 + .4byte _0809C53E @ case 4 + .4byte _0809C586 @ case 5 + .4byte _0809C440 @ case 6 + .4byte _0809C5BA @ case 7 +_0809C430: + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r1, r4, #0 + adds r1, #0x7e + movs r0, #0 + strh r0, [r1] +_0809C440: + movs r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0x15] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0xf0 + strb r0, [r1] + ldr r1, _0809C4B4 @ =gUnk_03000BF0 + movs r2, #0x84 + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r2, [r1, #6] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + movs r2, #0xb4 + lsls r2, r2, #1 + adds r0, r2, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r4, #0x32] + ldrb r0, [r4, #0x19] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + adds r0, #0x76 + movs r1, #0xa0 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x7b + movs r0, #0x80 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0809C52E + subs r1, #0x19 + movs r0, #0x29 + strb r0, [r1] + adds r1, #1 + movs r0, #0xe0 + strb r0, [r1] + movs r0, #0x30 + bl sub_0801D8E0 + adds r2, r0, #0 + adds r0, r4, #0 + adds r0, #0x84 + str r2, [r0] + mov r8, r0 + cmp r2, #0 + bne _0809C4B8 + bl sub_0805E780 + b _0809C5BA + .align 2, 0 +_0809C4B4: .4byte gUnk_03000BF0 +_0809C4B8: + str r2, [r4, #0x64] + mov r0, r8 + ldr r1, [r0] + movs r0, #5 + strb r0, [r1, #1] + movs r5, #0 + mov r7, r8 +_0809C4C6: + adds r6, r5, #1 + adds r0, r4, #0 + movs r1, #0x91 + adds r2, r6, #0 + movs r3, #0 + bl sub_080A2988 + str r0, [r4, #0x54] + cmp r0, #0 + beq _0809C4EE + adds r1, r0, #0 + adds r1, #0x84 + ldr r0, [r7] + str r0, [r1] + ldr r1, [r7] + lsls r0, r5, #2 + adds r1, #0x20 + adds r1, r1, r0 + ldr r0, [r4, #0x54] + str r0, [r1] +_0809C4EE: + adds r5, r6, #0 + cmp r5, #3 + bls _0809C4C6 + adds r0, r4, #0 + movs r1, #0x91 + movs r2, #5 + movs r3, #0 + bl sub_080A2988 + str r0, [r4, #0x54] + cmp r0, #0 + beq _0809C510 + adds r1, r0, #0 + adds r1, #0x84 + mov r2, r8 + ldr r0, [r2] + str r0, [r1] +_0809C510: + adds r0, r4, #0 + movs r1, #0x91 + movs r2, #6 + movs r3, #0 + bl sub_080A2988 + str r0, [r4, #0x50] + cmp r0, #0 + beq _0809C5A4 + adds r1, r0, #0 + adds r1, #0x84 + mov r2, r8 + ldr r0, [r2] + str r0, [r1] + b _0809C5A4 +_0809C52E: + adds r1, r4, #0 + adds r1, #0x62 + movs r0, #0xd7 + strb r0, [r1] + adds r1, #1 + movs r0, #0xe0 + strb r0, [r1] + b _0809C5A4 +_0809C53E: + movs r1, #0 + movs r0, #0x10 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x79 + strb r1, [r0] + ldrb r1, [r4, #0xa] + movs r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + bne _0809C55A + strb r2, [r4, #0xf] + b _0809C55E +_0809C55A: + movs r0, #0xfe + strb r0, [r4, #0xf] +_0809C55E: + adds r0, r4, #0 + adds r0, #0x74 + movs r2, #0x80 + lsls r2, r2, #1 + strh r2, [r0] + ldrb r1, [r4, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _0809C57E + adds r1, r4, #0 + adds r1, #0x76 + movs r0, #0xff + lsls r0, r0, #8 + strh r0, [r1] + b _0809C5A4 +_0809C57E: + adds r0, r4, #0 + adds r0, #0x76 + strh r2, [r0] + b _0809C5A4 +_0809C586: + adds r0, r4, #0 + adds r0, #0x76 + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r0] + subs r0, #2 + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x79 + movs r0, #0x1c + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x84 + ldr r0, [r0] + str r4, [r0, #8] +_0809C5A4: + ldr r0, _0809C5C0 @ =gUnk_08123DDC + ldrb r1, [r4, #0xa] + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r1, [r1] + adds r0, r4, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_0809C5C4 +_0809C5BA: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809C5C0: .4byte gUnk_08123DDC + + thumb_func_start sub_0809C5C4 +sub_0809C5C4: @ 0x0809C5C4 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #7 + bls _0809C5D0 + b _0809C7DE +_0809C5D0: + lsls r0, r0, #2 + ldr r1, _0809C5DC @ =_0809C5E0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809C5DC: .4byte _0809C5E0 +_0809C5E0: @ jump table + .4byte _0809C738 @ case 0 + .4byte _0809C600 @ case 1 + .4byte _0809C600 @ case 2 + .4byte _0809C600 @ case 3 + .4byte _0809C600 @ case 4 + .4byte _0809C6B8 @ case 5 + .4byte _0809C7B4 @ case 6 + .4byte _0809C7D2 @ case 7 +_0809C600: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAD8 + ldr r0, [r5, #0x50] + ldrb r0, [r0, #0xd] + adds r6, r5, #0 + adds r6, #0x84 + cmp r0, #6 + bne _0809C630 + movs r0, #0xf + ldrsb r0, [r5, r0] + cmp r0, #0 + bge _0809C624 + ldr r0, [r6] + ldrb r0, [r0] + rsbs r0, r0, #0 + b _0809C628 +_0809C624: + ldr r0, [r6] + ldrb r0, [r0] +_0809C628: + strb r0, [r5, #0xf] + adds r0, r5, #0 + bl sub_0809CBE4 +_0809C630: + ldr r4, [r5, #0x50] + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r3, r0, #0 + lsls r0, r3, #0xd + lsrs r3, r0, #8 + ldr r0, _0809C660 @ =0xFFFFE000 + adds r3, r3, r0 + ldr r0, [r6] + ldr r0, [r0, #8] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + bne _0809C664 + movs r1, #0x88 + lsls r1, r1, #6 + adds r3, r3, r1 + b _0809C66C + .align 2, 0 +_0809C660: .4byte 0xFFFFE000 +_0809C664: + lsrs r0, r3, #1 + movs r1, #0x88 + lsls r1, r1, #6 + adds r3, r0, r1 +_0809C66C: + adds r2, r4, #0 + adds r2, #0x7b + ldr r1, _0809C6B0 @ =gUnk_08123E18 + ldrb r0, [r5, #0xa] + subs r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + ldrb r2, [r2] + adds r0, r0, r2 + rsbs r0, r0, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r5, #0 + adds r2, r3, #0 + bl sub_0809CB70 + ldr r2, [r5, #0x50] + adds r2, #0x7b + ldr r1, _0809C6B4 @ =gUnk_08123E1C + ldrb r0, [r5, #0xa] + subs r0, #1 + adds r0, r0, r1 + ldrb r1, [r0] + ldrb r2, [r2] + adds r1, r1, r2 + adds r0, r5, #0 + adds r0, #0x79 + ldrb r0, [r0] + adds r0, r0, r1 + adds r1, r5, #0 + adds r1, #0x7b + strb r0, [r1] + b _0809C7BC + .align 2, 0 +_0809C6B0: .4byte gUnk_08123E18 +_0809C6B4: .4byte gUnk_08123E1C +_0809C6B8: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAD8 + ldr r0, [r5, #0x50] + ldrb r0, [r0, #0xd] + adds r6, r5, #0 + adds r6, #0x79 + adds r7, r5, #0 + adds r7, #0x76 + cmp r0, #4 + beq _0809C6F6 + adds r0, r5, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #1 + beq _0809C6F6 + ldrb r0, [r6] + cmp r0, #0x1c + bls _0809C6E4 + subs r0, #1 + strb r0, [r6] +_0809C6E4: + ldrh r0, [r7] + movs r1, #0x80 + lsls r1, r1, #1 + cmp r0, r1 + bls _0809C6F4 + subs r0, #1 + strh r0, [r7] + b _0809C6F6 +_0809C6F4: + strh r1, [r7] +_0809C6F6: + ldr r4, [r5, #0x50] + adds r0, r4, #0 + adds r0, #0x74 + ldrh r1, [r0] + movs r0, #0x80 + lsls r0, r0, #9 + bl __divsi3 + adds r3, r0, #0 + ldrb r0, [r6] + lsls r0, r0, #8 + muls r0, r3, r0 + lsrs r3, r0, #8 + adds r4, #0x7b + ldrb r0, [r4] + adds r0, #0x80 + rsbs r0, r0, #0 + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + adds r0, r5, #0 + adds r2, r3, #0 + bl sub_0809CB70 + ldr r0, [r5, #0x50] + adds r0, #0x7b + ldrb r0, [r0] + adds r1, r5, #0 + adds r1, #0x7b + strb r0, [r1] + ldrh r1, [r7] + adds r0, r5, #0 + adds r0, #0x74 + b _0809C7C4 +_0809C738: + movs r0, #0x37 + bl sub_0807CBE4 + cmp r0, #0 + beq _0809C74A + adds r0, r5, #0 + movs r1, #0x1e + bl sub_0805E4E0 +_0809C74A: + ldr r1, _0809C7A8 @ =gUnk_08123DF8 + ldrb r0, [r5, #0xd] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _0809C7BC + ldr r0, _0809C7AC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0809C772 + ldr r0, [r5, #0x54] + bl sub_080A2B80 +_0809C772: + adds r3, r5, #0 + adds r3, #0x7e + ldrh r0, [r3] + cmp r0, #0 + beq _0809C7BC + ldr r2, [r5, #0x54] + movs r1, #0 + ldrsh r0, [r3, r1] + ldr r1, [r2, #0x20] + subs r1, r1, r0 + str r1, [r2, #0x20] + ldr r0, [r2, #0x34] + adds r0, r0, r1 + str r0, [r2, #0x34] + ldr r0, [r5, #0x54] + ldr r1, [r0, #0x20] + movs r0, #0xc0 + lsls r0, r0, #6 + cmp r1, r0 + beq _0809C7A0 + ldr r0, _0809C7B0 @ =0xFFFFD000 + cmp r1, r0 + bne _0809C7BC +_0809C7A0: + ldrh r0, [r3] + rsbs r0, r0, #0 + strh r0, [r3] + b _0809C7BC + .align 2, 0 +_0809C7A8: .4byte gUnk_08123DF8 +_0809C7AC: .4byte gUnk_030010A0 +_0809C7B0: .4byte 0xFFFFD000 +_0809C7B4: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FA24 +_0809C7BC: + adds r0, r5, #0 + adds r0, #0x76 + ldrh r1, [r0] + subs r0, #2 +_0809C7C4: + ldrh r2, [r0] + adds r0, #6 + ldrh r3, [r0] + adds r0, r5, #0 + bl sub_0805EC9C + b _0809C7DE +_0809C7D2: + ldr r0, _0809C7E0 @ =gUnk_03000BF0 + ldr r0, [r0, #0x30] + cmp r0, r5 + beq _0809C7DE + bl sub_0805E780 +_0809C7DE: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809C7E0: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809C7E4 +sub_0809C7E4: @ 0x0809C7E4 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _0809C84A + adds r3, r5, #0 + adds r3, #0x7e + ldrh r0, [r3] + cmp r0, #0 + bne _0809C82A + ldr r2, [r5, #0x54] + movs r0, #0x36 + ldrsh r1, [r2, r0] + movs r0, #0x10 + rsbs r0, r0, #0 + cmp r1, r0 + ble _0809C814 + ldr r0, [r2, #0x34] + ldr r1, _0809C810 @ =0xFFFFC000 + adds r0, r0, r1 + str r0, [r2, #0x34] + b _0809C82A + .align 2, 0 +_0809C810: .4byte 0xFFFFC000 +_0809C814: + ldr r0, [r2, #0x34] + ldr r1, _0809C84C @ =0xFFFFF000 + adds r0, r0, r1 + str r0, [r2, #0x34] + ldr r1, [r5, #0x54] + movs r0, #0xc0 + lsls r0, r0, #6 + str r0, [r1, #0x20] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r3] +_0809C82A: + adds r4, r5, #0 + adds r4, #0x79 + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0809C84A + ldr r0, _0809C850 @ =0x00000B43 + bl sub_08056378 + movs r0, #1 + strb r0, [r5, #0xd] + movs r0, #8 + strb r0, [r4] +_0809C84A: + pop {r4, r5, pc} + .align 2, 0 +_0809C84C: .4byte 0xFFFFF000 +_0809C850: .4byte 0x00000B43 + + thumb_func_start sub_0809C854 +sub_0809C854: @ 0x0809C854 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0809C8A8 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0809C8B8 + adds r5, r4, #0 + adds r5, #0x79 + ldrb r0, [r5] + subs r0, #1 + strb r0, [r5] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0809C8B8 + adds r0, r4, #0 + movs r1, #0x91 + movs r2, #7 + movs r3, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _0809C892 + ldrh r0, [r1, #0x32] + subs r0, #0x50 + strh r0, [r1, #0x32] + ldr r0, _0809C8AC @ =gUnk_03000BF0 + str r1, [r0, #0x30] +_0809C892: + ldrb r0, [r4, #0xf] + cmp r0, #2 + bhi _0809C8B0 + movs r0, #2 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r5] + movs r0, #0xe6 + bl sub_080A3268 + b _0809C8B8 + .align 2, 0 +_0809C8A8: .4byte gUnk_02000050 +_0809C8AC: .4byte gUnk_03000BF0 +_0809C8B0: + movs r0, #3 + strb r0, [r4, #0xd] + movs r0, #0x78 + strb r0, [r5] +_0809C8B8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809C8BC +sub_0809C8BC: @ 0x0809C8BC + push {lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x79 + ldrb r0, [r3] + subs r1, r0, #1 + strb r1, [r3] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0809C8E2 + movs r0, #1 + strb r0, [r2, #0xd] + movs r0, #0x1e + strb r0, [r3] + ldrb r0, [r2, #0xf] + adds r0, #1 + strb r0, [r2, #0xf] + b _0809C922 +_0809C8E2: + movs r0, #3 + ands r0, r1 + cmp r0, #1 + beq _0809C90A + cmp r0, #1 + bgt _0809C8F4 + cmp r0, #0 + beq _0809C8FE + b _0809C922 +_0809C8F4: + cmp r0, #2 + beq _0809C8FE + cmp r0, #3 + beq _0809C916 + b _0809C922 +_0809C8FE: + ldrh r1, [r2, #0x2e] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + adds r0, #8 + b _0809C920 +_0809C90A: + ldrh r1, [r2, #0x2e] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + adds r0, #4 + b _0809C920 +_0809C916: + ldrh r1, [r2, #0x2e] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + subs r0, #4 +_0809C920: + strh r0, [r2, #0x2e] +_0809C922: + pop {pc} + + thumb_func_start sub_0809C924 +sub_0809C924: @ 0x0809C924 + push {r4, r5, lr} + adds r5, r0, #0 + adds r1, r5, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _0809C948 + adds r0, r5, #0 + movs r1, #0x87 + movs r2, #6 + movs r3, #0 + bl sub_080A2988 + b _0809C980 +_0809C948: + movs r0, #4 + strb r0, [r5, #0xd] + movs r0, #0x3c + strb r0, [r1] + ldr r4, _0809C984 @ =0x00000115 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080ADF80 + ldr r0, [r5, #0x50] + adds r1, r4, #0 + bl sub_080ADF80 + adds r0, r5, #0 + movs r1, #0xef + bl sub_0801D2B4 + ldr r0, [r5, #0x50] + movs r1, #0xef + bl sub_0801D2B4 + adds r0, r5, #0 + movs r1, #0xef + bl sub_0809CC30 + movs r0, #0xe8 + bl sub_080A3268 +_0809C980: + pop {r4, r5, pc} + .align 2, 0 +_0809C984: .4byte 0x00000115 + + thumb_func_start sub_0809C988 +sub_0809C988: @ 0x0809C988 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x79 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _0809C9AC + movs r0, #5 + strb r0, [r2, #0xd] + movs r0, #0xb4 + strb r0, [r1] + movs r0, #3 + strb r0, [r2, #0xb] + b _0809C9DC +_0809C9AC: + ldr r0, _0809C9C8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _0809C9CC + adds r0, r2, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, [r0, #8] + adds r1, #0x76 + ldrh r0, [r1] + subs r0, #4 + b _0809C9DA + .align 2, 0 +_0809C9C8: .4byte gUnk_030010A0 +_0809C9CC: + adds r0, r2, #0 + adds r0, #0x84 + ldr r0, [r0] + ldr r1, [r0, #8] + adds r1, #0x76 + ldrh r0, [r1] + adds r0, #4 +_0809C9DA: + strh r0, [r1] +_0809C9DC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809C9E0 +sub_0809C9E0: @ 0x0809C9E0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _0809CA04 @ =gUnk_030010A0 + ldr r1, [r0] + movs r2, #2 + ands r1, r2 + adds r7, r0, #0 + cmp r1, #0 + beq _0809CA08 + adds r2, r4, #0 + adds r2, #0x84 + ldr r0, [r2] + ldr r1, [r0, #8] + adds r1, #0x76 + ldrh r0, [r1] + subs r0, #8 + b _0809CA16 + .align 2, 0 +_0809CA04: .4byte gUnk_030010A0 +_0809CA08: + adds r2, r4, #0 + adds r2, #0x84 + ldr r0, [r2] + ldr r1, [r0, #8] + adds r1, #0x76 + ldrh r0, [r1] + adds r0, #8 +_0809CA16: + strh r0, [r1] + adds r5, r2, #0 + ldr r0, [r7] + movs r6, #3 + ands r0, r6 + cmp r0, #0 + bne _0809CA30 + adds r0, r4, #0 + movs r1, #0x87 + movs r2, #2 + movs r3, #0 + bl sub_080A2988 +_0809CA30: + adds r2, r4, #0 + adds r2, #0x79 + ldrb r0, [r2] + adds r1, r0, #0 + cmp r1, #0 + bne _0809CA92 + ldr r0, [r4, #0x54] + adds r0, #0x62 + strb r1, [r0] + ldr r0, [r4, #0x54] + movs r1, #0x80 + lsls r1, r1, #2 + adds r2, #2 + ldrb r2, [r2] + rsbs r2, r2, #0 + bl sub_0806F62C + ldr r1, [r4, #0x54] + adds r0, r4, #0 + movs r2, #0x48 + bl sub_0806FC80 + cmp r0, #0 + beq _0809CAC4 + movs r0, #6 + strb r0, [r4, #0xd] + movs r1, #0 + movs r0, #0xc0 + strh r0, [r4, #0x24] + strb r1, [r4, #0xb] + strb r1, [r4, #0xf] + ldr r2, [r4, #0x54] + ldrb r1, [r2, #0x18] + subs r0, #0xc4 + ands r0, r1 + strb r0, [r2, #0x18] + ldr r0, [r5] + ldr r0, [r0, #8] + adds r0, #0x76 + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r0] + ldr r1, [r5] + movs r0, #1 + strb r0, [r1] + movs r0, #0xed + bl sub_080A3268 + b _0809CAC4 +_0809CA92: + subs r0, #1 + strb r0, [r2] + ldr r0, [r7] + ands r0, r6 + cmp r0, #1 + beq _0809CAB4 + cmp r0, #1 + blo _0809CAAC + cmp r0, #2 + beq _0809CAAC + cmp r0, #3 + beq _0809CABC + b _0809CAC4 +_0809CAAC: + ldr r0, [r4, #0x54] + adds r0, #0x62 + movs r1, #0 + b _0809CAC2 +_0809CAB4: + ldr r0, [r4, #0x54] + adds r0, #0x62 + movs r1, #0xfc + b _0809CAC2 +_0809CABC: + ldr r0, [r4, #0x54] + adds r0, #0x62 + movs r1, #4 +_0809CAC2: + strb r1, [r0] +_0809CAC4: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0809CAC8 +sub_0809CAC8: @ 0x0809CAC8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0806F69C + ldr r2, _0809CB3C @ =gUnk_03000BF0 + ldrh r0, [r2, #8] + movs r1, #0xe4 + lsls r1, r1, #1 + adds r0, r0, r1 + movs r3, #0x32 + ldrsh r1, [r5, r3] + cmp r0, r1 + bge _0809CB26 + movs r0, #4 + strb r0, [r2, #0xe] + ldr r0, _0809CB40 @ =gLinkEntity + str r0, [r2, #0x30] + movs r0, #0x9b + bl sub_0807CCB4 + ldr r0, [r5, #0x50] + bl sub_0805E7BC + adds r4, r5, #0 + adds r4, #0x84 + ldr r0, [r4] + ldr r0, [r0, #8] + bl sub_0805E7BC + ldr r0, [r4] + ldr r0, [r0, #0x20] + bl sub_0805E7BC + ldr r0, [r4] + ldr r0, [r0, #0x24] + bl sub_0805E7BC + ldr r0, [r4] + ldr r0, [r0, #0x28] + bl sub_0805E7BC + ldr r0, [r4] + ldr r0, [r0, #0x2c] + bl sub_0805E7BC + movs r0, #7 + strb r0, [r5, #0xd] +_0809CB26: + ldr r0, _0809CB44 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #0xf + ands r0, r1 + cmp r0, #0 + bne _0809CB38 + ldr r0, _0809CB48 @ =0x00000163 + bl sub_080A3268 +_0809CB38: + pop {r4, r5, pc} + .align 2, 0 +_0809CB3C: .4byte gUnk_03000BF0 +_0809CB40: .4byte gLinkEntity +_0809CB44: .4byte gUnk_030010A0 +_0809CB48: .4byte 0x00000163 + + thumb_func_start sub_0809CB4C +sub_0809CB4C: @ 0x0809CB4C + push {lr} + ldr r0, _0809CB68 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0809CB66 + ldr r0, _0809CB6C @ =0x00000B44 + movs r1, #0 + bl sub_08078AA8 + bl sub_0805E780 +_0809CB66: + pop {pc} + .align 2, 0 +_0809CB68: .4byte gUnk_03000BF0 +_0809CB6C: .4byte 0x00000B44 + + thumb_func_start sub_0809CB70 +sub_0809CB70: @ 0x0809CB70 + push {r4, r5, r6, lr} + mov r6, sb + mov r5, r8 + push {r5, r6} + adds r6, r0, #0 + adds r4, r1, #0 + adds r5, r2, #0 + ldr r0, _0809CBE0 @ =gUnk_080C9160 + mov sb, r0 + lsls r0, r4, #1 + add r0, sb + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r5, r5, #0x10 + asrs r5, r5, #0x10 + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #1 + mov r8, r1 + bl sub_0806FA04 + ldr r1, [r6, #0x50] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r1, #0x2c] + adds r1, r1, r0 + str r1, [r6, #0x2c] + adds r4, #0x40 + lsls r4, r4, #1 + add r4, sb + movs r1, #0 + ldrsh r0, [r4, r1] + adds r1, r5, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + mov r1, r8 + bl sub_0806FA04 + ldr r2, [r6, #0x50] + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r2, #0x30] + subs r1, r1, r0 + str r1, [r6, #0x30] + ldr r0, [r2, #0x34] + str r0, [r6, #0x34] + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, pc} + .align 2, 0 +_0809CBE0: .4byte gUnk_080C9160 + + thumb_func_start sub_0809CBE4 +sub_0809CBE4: @ 0x0809CBE4 + push {r4, lr} + adds r2, r0, #0 + adds r3, r2, #0 + adds r3, #0x79 + ldrb r0, [r2, #0xf] + ldrb r4, [r3] + adds r1, r0, r4 + strb r1, [r3] + ldrb r4, [r2, #0xf] + movs r0, #0xf + ldrsb r0, [r2, r0] + cmp r0, #0 + bge _0809CC16 + ldrb r0, [r2, #0xe] + lsls r1, r1, #0x18 + lsls r0, r0, #0x18 + cmn r1, r0 + bge _0809CC2C + rsbs r0, r4, #0 + strb r0, [r2, #0xf] + movs r0, #0xcf + lsls r0, r0, #1 + bl sub_080A3268 + b _0809CC2C +_0809CC16: + movs r0, #0 + ldrsb r0, [r3, r0] + ldrb r1, [r2, #0xe] + cmp r0, r1 + ble _0809CC2C + rsbs r0, r4, #0 + strb r0, [r2, #0xf] + movs r0, #0xcf + lsls r0, r0, #1 + bl sub_080A3268 +_0809CC2C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809CC30 +sub_0809CC30: @ 0x0809CC30 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + adds r4, #0x84 + ldr r0, [r4] + ldr r0, [r0, #8] + bl sub_0801D2B4 + movs r5, #0 +_0809CC42: + ldr r0, [r4] + lsls r1, r5, #2 + adds r0, #0x20 + adds r0, r0, r1 + ldr r0, [r0] + adds r1, r6, #0 + bl sub_0801D2B4 + adds r5, #1 + cmp r5, #3 + bls _0809CC42 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0809CC5C +sub_0809CC5C: @ 0x0809CC5C + push {lr} + ldr r2, _0809CC70 @ =gUnk_08123E20 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809CC70: .4byte gUnk_08123E20 + + thumb_func_start sub_0809CC74 +sub_0809CC74: @ 0x0809CC74 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #1 + strb r4, [r5, #0xc] + bl sub_08016A04 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _0809CCD4 + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #5 + orrs r1, r0 + strb r1, [r2] + movs r4, #0 +_0809CC9A: + movs r0, #0x92 + movs r1, #1 + adds r2, r4, #0 + bl sub_080A2960 + adds r1, r0, #0 + adds r4, #1 + cmp r1, #0 + beq _0809CCBE + str r5, [r1, #0x50] + lsrs r2, r4, #1 + lsls r2, r2, #0x14 + ldr r0, _0809CCCC @ =0xFFF80000 + adds r2, r2, r0 + adds r0, r5, #0 + ldr r3, _0809CCD0 @ =0xFFF20000 + bl sub_0806FA48 +_0809CCBE: + cmp r4, #2 + bls _0809CC9A + adds r0, r5, #0 + bl sub_0809CDF0 + b _0809CD0A + .align 2, 0 +_0809CCCC: .4byte 0xFFF80000 +_0809CCD0: .4byte 0xFFF20000 +_0809CCD4: + ldrb r1, [r5, #0xb] + adds r0, r4, #0 + ands r0, r1 + cmp r0, #0 + beq _0809CCF2 + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r5, #0x18] + movs r0, #0x14 + strb r0, [r5, #0xe] + b _0809CD02 +_0809CCF2: + movs r0, #2 + strb r0, [r5, #0xc] + ands r0, r1 + movs r1, #0x12 + cmp r0, #0 + beq _0809CD00 + movs r1, #0x14 +_0809CD00: + strb r1, [r5, #0xe] +_0809CD02: + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 +_0809CD0A: + pop {r4, r5, pc} + + thumb_func_start sub_0809CD0C +sub_0809CD0C: @ 0x0809CD0C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0809CDAC + adds r0, r4, #0 + bl sub_08004274 + adds r1, r4, #0 + adds r1, #0x5a + ldrb r2, [r1] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _0809CD36 + movs r0, #0xfe + ands r0, r2 + strb r0, [r1] + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] +_0809CD36: + ldrb r1, [r1] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809CD56 + adds r0, r4, #0 + adds r0, #0x59 + ldrb r0, [r0] + cmp r0, #1 + bne _0809CD56 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #6 + ands r0, r1 + strb r0, [r4, #0x18] +_0809CD56: + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0809CDAC + ldr r5, _0809CDB0 @ =gLinkEntity + adds r6, r5, #0 + adds r6, #0x3d + movs r0, #0 + ldrsb r0, [r6, r0] + cmp r0, #0 + bne _0809CDAC + ldrb r0, [r4, #0x1e] + cmp r0, #0 + beq _0809CDAC + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #4 + bl sub_0806FC80 + cmp r0, #0 + beq _0809CDAC + ldrb r0, [r4, #0xf] + adds r0, #1 + strb r0, [r4, #0xf] + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + adds r0, r5, #0 + movs r1, #0x7a + bl sub_0800449C + movs r1, #0x10 + strb r1, [r6] + adds r0, r5, #0 + adds r0, #0x3e + strb r1, [r0] + adds r2, r5, #0 + adds r2, #0x42 + movs r0, #0xc + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x46 + strh r1, [r0] +_0809CDAC: + pop {r4, r5, r6, pc} + .align 2, 0 +_0809CDB0: .4byte gLinkEntity + + thumb_func_start sub_0809CDB4 +sub_0809CDB4: @ 0x0809CDB4 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _0809CDEC + movs r2, #1 + movs r0, #1 + strb r0, [r3, #0xc] + movs r0, #0x1e + strb r0, [r3, #0xe] + strb r1, [r3, #0xf] + ldrb r1, [r3, #0x18] + subs r0, #0x22 + ands r0, r1 + orrs r0, r2 + strb r0, [r3, #0x18] + ldr r0, [r3, #0x50] + ldrh r0, [r0, #0x32] + subs r0, #0xe + strh r0, [r3, #0x32] + adds r0, r3, #0 + movs r1, #0 + bl sub_08004260 +_0809CDEC: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809CDF0 +sub_0809CDF0: @ 0x0809CDF0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _0809CE80 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x80 + strh r1, [r0] + ldrh r6, [r0] + ldr r0, _0809CE84 @ =0x0000402E + subs r1, r6, #1 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + ldr r5, _0809CE88 @ =0x00004022 + ldrb r2, [r4] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0800015E + adds r1, r6, #1 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r5, #4 + adds r1, r6, #0 + subs r1, #0x41 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + subs r1, #0x40 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + ldr r0, _0809CE8C @ =0x00004024 + adds r1, r6, #0 + subs r1, #0x3f + ldrb r2, [r4] + bl sub_0800015E + adds r1, r6, #0 + subs r1, #0x81 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + adds r1, r6, #0 + subs r1, #0x80 + ldrb r2, [r4] + adds r0, r5, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0809CE80: .4byte gUnk_03000BF0 +_0809CE84: .4byte 0x0000402E +_0809CE88: .4byte 0x00004022 +_0809CE8C: .4byte 0x00004024 + + thumb_func_start sub_0809CE90 +sub_0809CE90: @ 0x0809CE90 + push {lr} + ldr r2, _0809CEA4 @ =gUnk_08123E80 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809CEA4: .4byte gUnk_08123E80 + + thumb_func_start sub_0809CEA8 +sub_0809CEA8: @ 0x0809CEA8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0809CEC0 +sub_0809CEC0: @ 0x0809CEC0 + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start sub_0809CEC8 +sub_0809CEC8: @ 0x0809CEC8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809CF06 + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0809CEEE + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _0809CEF4 +_0809CEEE: + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 +_0809CEF4: + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + b _0809CF0C +_0809CF06: + adds r0, r4, #0 + bl sub_08004274 +_0809CF0C: + adds r4, #0x59 + ldrb r0, [r4] + cmp r0, #0xff + bne _0809CF20 + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + adds r0, #0x10 + strb r0, [r4] +_0809CF20: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809CF24 +sub_0809CF24: @ 0x0809CF24 + push {lr} + ldr r2, _0809CF38 @ =gUnk_08123EC0 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809CF38: .4byte gUnk_08123EC0 + + thumb_func_start sub_0809CF3C +sub_0809CF3C: @ 0x0809CF3C + push {lr} + ldr r2, _0809CF50 @ =gUnk_08123EEC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809CF50: .4byte gUnk_08123EEC + + thumb_func_start sub_0809CF54 +sub_0809CF54: @ 0x0809CF54 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x31 + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] + ldr r0, _0809CFDC @ =0xFFFE8000 + str r0, [r4, #0x20] + ldr r0, _0809CFE0 @ =0xFFC74000 + str r0, [r4, #0x34] + adds r1, r4, #0 + adds r1, #0x68 + movs r0, #0xf8 + lsls r0, r0, #8 + strh r0, [r1] + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #8 + strb r0, [r4, #0x15] + subs r1, #0x30 + movs r0, #2 + strb r0, [r1] + ldr r0, _0809CFE4 @ =gUnk_03000BF0 + ldrh r0, [r0, #0xa] + strh r0, [r4, #0x2e] + ldr r0, _0809CFE8 @ =0x00000123 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + movs r0, #0x95 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _0809CFD8 + str r4, [r5, #0x50] + movs r3, #0x80 + lsls r3, r3, #0xc + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FAB0 +_0809CFD8: + pop {r4, r5, pc} + .align 2, 0 +_0809CFDC: .4byte 0xFFFE8000 +_0809CFE0: .4byte 0xFFC74000 +_0809CFE4: .4byte gUnk_03000BF0 +_0809CFE8: .4byte 0x00000123 + + thumb_func_start sub_0809CFEC +sub_0809CFEC: @ 0x0809CFEC + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + adds r0, #0x68 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r0, r4, #0 + bl sub_08003FC4 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809D018 + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + bne _0809D026 + strb r0, [r4, #0xf] + b _0809D026 +_0809D018: + adds r0, r4, #0 + bl sub_080040A8 + cmp r0, #0 + bne _0809D026 + bl sub_0805E780 +_0809D026: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809D030 +sub_0809D030: @ 0x0809D030 + push {lr} + ldr r2, _0809D044 @ =gUnk_08123EF4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809D044: .4byte gUnk_08123EF4 + + thumb_func_start sub_0809D048 +sub_0809D048: @ 0x0809D048 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0x17 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809D06C +sub_0809D06C: @ 0x0809D06C + push {lr} + ldr r2, _0809D080 @ =gUnk_08123EFC + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809D080: .4byte gUnk_08123EFC + + thumb_func_start sub_0809D084 +sub_0809D084: @ 0x0809D084 + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x50] + cmp r0, #0 + beq _0809D0A8 + ldrb r2, [r0, #0xf] + cmp r2, #0 + beq _0809D0A0 + movs r3, #0x80 + lsls r3, r3, #0xc + movs r2, #0 + bl sub_0806FA48 + b _0809D0A8 +_0809D0A0: + ldrb r0, [r1, #0xd] + adds r0, #1 + strb r0, [r1, #0xd] + str r2, [r1, #0x20] +_0809D0A8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809D0AC +sub_0809D0AC: @ 0x0809D0AC + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_080044EC + cmp r0, #1 + bhi _0809D0F0 + movs r2, #0 + movs r0, #2 + strb r0, [r4, #0xa] + movs r1, #1 + strb r1, [r4, #0xc] + str r2, [r4, #0x34] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + movs r0, #0x45 + bl sub_0807CCB4 + movs r0, #0x72 + bl sub_080A3268 + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0809D0F0 + adds r0, r4, #0 + bl sub_0806FAD8 +_0809D0F0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809D0F4 +sub_0809D0F4: @ 0x0809D0F4 + push {lr} + ldr r2, _0809D108 @ =gUnk_08123F04 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809D108: .4byte gUnk_08123F04 + + thumb_func_start sub_0809D10C +sub_0809D10C: @ 0x0809D10C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0x17 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809D130 +sub_0809D130: @ 0x0809D130 + push {lr} + adds r2, r0, #0 + ldr r0, _0809D148 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809D14C + adds r0, r2, #0 + bl sub_0800445C + b _0809D170 + .align 2, 0 +_0809D148: .4byte gUnk_03003F80 +_0809D14C: + adds r0, r2, #0 + bl sub_08017850 + cmp r0, #0 + beq _0809D170 + movs r0, #0x17 + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 + ldr r0, _0809D174 @ =gUnk_02002A40 + ldr r1, [r0, #0x40] + movs r2, #0x80 + lsls r2, r2, #0x15 + orrs r1, r2 + str r1, [r0, #0x40] + bl sub_0805E780 +_0809D170: + pop {pc} + .align 2, 0 +_0809D174: .4byte gUnk_02002A40 + + thumb_func_start sub_0809D178 +sub_0809D178: @ 0x0809D178 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809D19C + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r1, r4, #0 + adds r1, #0x5a + movs r0, #0x80 + strb r0, [r1] +_0809D19C: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809D1E8 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + adds r0, r4, #0 + bl sub_08004260 + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + adds r0, #0x10 + adds r1, r4, #0 + adds r1, #0x59 + strb r0, [r1] + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + bl sub_08000E50 + movs r1, #1 + ands r1, r0 + cmp r1, #0 + beq _0809D1EE + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] + b _0809D1EE +_0809D1E8: + adds r0, r4, #0 + bl sub_08004274 +_0809D1EE: + pop {r4, pc} + + thumb_func_start sub_0809D1F0 +sub_0809D1F0: @ 0x0809D1F0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + mov sb, r0 + cmp r0, #0 + beq _0809D224 + cmp r0, #1 + beq _0809D2B0 + bl sub_08078B48 + ldr r2, _0809D220 @ =gLinkEntity + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + movs r1, #0x68 + adds r1, r1, r5 + mov r8, r1 + b _0809D3A8 + .align 2, 0 +_0809D220: .4byte gLinkEntity +_0809D224: + ldrb r1, [r5, #0xe] + cmp r1, #0 + beq _0809D234 + movs r0, #0xff + strb r0, [r5, #0x1e] + subs r0, r1, #1 + strb r0, [r5, #0xe] + b _0809D488 +_0809D234: + movs r1, #1 + strb r1, [r5, #0xc] + mov r2, sb + str r2, [r5, #0x20] + ldr r0, _0809D2A0 @ =0xFFEC0000 + str r0, [r5, #0x34] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r5, #0x24] + movs r0, #8 + strb r0, [r5, #0x15] + adds r0, r5, #0 + adds r0, #0x38 + strb r1, [r0] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r2, [r5, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r5, #0x19] + ldrb r0, [r5, #0x1b] + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r5, #0x1b] + ldr r0, _0809D2A4 @ =gUnk_03000BF0 + ldrh r0, [r0, #0xa] + strh r0, [r5, #0x2e] + ldr r0, _0809D2A8 @ =gLinkEntity + ldrh r0, [r0, #0x32] + strh r0, [r5, #0x32] + mov r3, sb + str r3, [r5, #0x54] + adds r0, r5, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC + ldr r0, _0809D2AC @ =0x00000123 + bl sub_080A3268 + movs r0, #0x68 + adds r0, r0, r5 + mov r8, r0 + b _0809D3A8 + .align 2, 0 +_0809D2A0: .4byte 0xFFEC0000 +_0809D2A4: .4byte gUnk_03000BF0 +_0809D2A8: .4byte gLinkEntity +_0809D2AC: .4byte 0x00000123 +_0809D2B0: + ldr r6, _0809D430 @ =gLinkEntity + adds r0, r6, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x38 + strb r1, [r0] + ldrh r0, [r5, #0x24] + adds r0, #8 + strh r0, [r5, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r1, #0xc0 + lsls r1, r1, #2 + mov sl, r1 + cmp r0, sl + ble _0809D2D6 + mov r2, sl + strh r2, [r5, #0x24] +_0809D2D6: + ldrb r1, [r6, #0x10] + movs r0, #0x80 + ands r0, r1 + movs r3, #0x68 + adds r3, r3, r5 + mov r8, r3 + cmp r0, #0 + beq _0809D3A8 + ldr r0, _0809D434 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _0809D3A8 + ldrb r0, [r6, #0xc] + cmp r0, #0x1c + beq _0809D3A8 + cmp r0, #6 + beq _0809D3A8 + cmp r0, #9 + beq _0809D3A8 + ldr r7, _0809D438 @ =gUnk_03003F80 + adds r0, r7, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x18 + beq _0809D3A8 + cmp r0, #0xb + beq _0809D3A8 + cmp r0, #8 + beq _0809D3A8 + bl sub_08079F8C + cmp r0, #0 + beq _0809D3A8 + adds r0, r5, #0 + adds r1, r6, #0 + movs r2, #0xe + movs r3, #0xe + bl sub_080041A0 + cmp r0, #0 + beq _0809D3A8 + movs r1, #0x36 + ldrsh r0, [r6, r1] + movs r2, #0x36 + ldrsh r1, [r5, r2] + subs r0, r0, r1 + subs r0, #8 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1f + bhi _0809D3A8 + adds r0, r6, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _0809D3A8 + movs r0, #0x95 + movs r1, #0xa + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809D3A8 + str r4, [r5, #0x54] + movs r0, #2 + strb r0, [r5, #0xc] + movs r0, #8 + strb r0, [r5, #0xe] + mov r3, sl + strh r3, [r5, #0x24] + movs r0, #0xe0 + lsls r0, r0, #8 + mov r1, r8 + strh r0, [r1] + bl sub_08079184 + bl sub_08078B48 + bl sub_080791D0 + bl sub_08077B20 + adds r0, r7, #0 + adds r0, #0x26 + movs r2, #0 + strb r2, [r0] + strb r2, [r7, #2] + ldrb r1, [r6, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r6, #0x10] + ldrb r1, [r6, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6, #0x18] + ldr r1, _0809D43C @ =gUnk_03003DC0 + movs r0, #6 + strb r0, [r1] + ldr r0, _0809D440 @ =gUnk_02034490 + mov r3, sb + strb r3, [r0] +_0809D3A8: + adds r0, r5, #0 + bl sub_0806F69C + mov r0, r8 + movs r2, #0 + ldrsh r1, [r0, r2] + adds r0, r5, #0 + bl sub_08003FC4 + adds r0, r5, #0 + bl sub_080042B8 + ldr r4, [r5, #0x54] + cmp r4, #0 + beq _0809D454 + ldr r2, _0809D430 @ =gLinkEntity + movs r3, #0x2e + ldrsh r1, [r2, r3] + movs r3, #0x2e + ldrsh r0, [r5, r3] + subs r0, #8 + cmp r1, r0 + bge _0809D3DA + movs r0, #0 + strb r0, [r5, #0xe] +_0809D3DA: + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _0809D448 + ldr r2, _0809D444 @ =0xFFF80000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #0 + bl sub_0806FA48 + ldrh r0, [r4, #0x36] + adds r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r3, r4, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1d + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r2, [r5, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x1b] + b _0809D454 + .align 2, 0 +_0809D430: .4byte gLinkEntity +_0809D434: .4byte gUnk_02000050 +_0809D438: .4byte gUnk_03003F80 +_0809D43C: .4byte gUnk_03003DC0 +_0809D440: .4byte gUnk_02034490 +_0809D444: .4byte 0xFFF80000 +_0809D448: + subs r0, #1 + strb r0, [r5, #0xe] + adds r0, r2, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_0809D454: + adds r0, r5, #0 + bl sub_080040A8 + cmp r0, #0 + bne _0809D488 + ldrb r0, [r5, #0xc] + cmp r0, #2 + bne _0809D478 + ldr r0, _0809D494 @ =gUnk_02002A40 + ldr r1, [r0, #0x40] + movs r2, #0x80 + lsls r2, r2, #0x15 + orrs r1, r2 + str r1, [r0, #0x40] + movs r0, #9 + movs r1, #0 + bl sub_080A7138 +_0809D478: + ldr r4, [r5, #0x54] + cmp r4, #0 + beq _0809D484 + adds r0, r4, #0 + bl sub_0805E79C +_0809D484: + bl sub_0805E780 +_0809D488: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809D494: .4byte gUnk_02002A40 + + thumb_func_start sub_0809D498 +sub_0809D498: @ 0x0809D498 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _0809D548 + movs r2, #1 + movs r3, #1 + strb r3, [r5, #0xc] + ldrb r1, [r5, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + ldr r0, _0809D534 @ =0xFFFD8000 + str r0, [r5, #0x20] + ldr r0, _0809D538 @ =0xFFB4C000 + str r0, [r5, #0x34] + adds r4, r5, #0 + adds r4, #0x68 + movs r0, #0xf0 + lsls r0, r0, #8 + strh r0, [r4] + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r5, #0x24] + movs r0, #8 + strb r0, [r5, #0x15] + adds r0, r5, #0 + adds r0, #0x38 + strb r3, [r0] + adds r6, r5, #0 + adds r6, #0x29 + ldrb r1, [r6] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r6] + ldrb r2, [r5, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r5, #0x19] + ldrb r0, [r5, #0x1b] + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r5, #0x1b] + adds r0, r5, #0 + movs r1, #6 + bl sub_0805E3A0 + ldr r0, _0809D53C @ =gUnk_03000BF0 + ldrh r0, [r0, #0xa] + strh r0, [r5, #0x2e] + ldr r0, _0809D540 @ =gLinkEntity + ldrh r0, [r0, #0x32] + strh r0, [r5, #0x32] + ldr r0, _0809D544 @ =0x00000123 + bl sub_080A3268 + ldrb r1, [r6] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r6] + adds r0, r5, #0 + movs r1, #0 + bl sub_080042AC + bl sub_08078B48 + adds r7, r4, #0 + b _0809D62E + .align 2, 0 +_0809D534: .4byte 0xFFFD8000 +_0809D538: .4byte 0xFFB4C000 +_0809D53C: .4byte gUnk_03000BF0 +_0809D540: .4byte gLinkEntity +_0809D544: .4byte 0x00000123 +_0809D548: + adds r7, r5, #0 + adds r7, #0x68 + cmp r0, #1 + bne _0809D62E + ldr r6, _0809D658 @ =gLinkEntity + ldrb r1, [r6, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + mov r8, r0 + ands r0, r1 + strb r0, [r6, #0x18] + ldr r4, [r5, #0x54] + cmp r4, #0 + beq _0809D5B0 + ldr r2, _0809D65C @ =0xFFF80000 + adds r0, r5, #0 + adds r1, r4, #0 + movs r3, #0 + bl sub_0806FA48 + ldrh r0, [r4, #0x36] + adds r0, #0x18 + strh r0, [r4, #0x36] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r3, r4, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1d + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r2, [r5, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x1b] +_0809D5B0: + bl sub_08078B48 + ldr r3, _0809D660 @ =gUnk_03000BF0 + movs r1, #0xa + ldrsh r0, [r3, r1] + adds r0, #0x78 + movs r2, #0x2e + ldrsh r1, [r5, r2] + cmp r0, r1 + bge _0809D62E + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] + cmp r4, #0 + beq _0809D5E6 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0809D5E6: + str r6, [r3, #0x30] + ldrb r1, [r6, #0x18] + mov r0, r8 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r6, #0x18] + bl sub_080791D0 + bl sub_0805E564 + ldr r1, _0809D664 @ =gUnk_02034490 + movs r0, #0 + strb r0, [r1] + movs r0, #0x52 + bl GetProgressFlag + cmp r0, #0 + bne _0809D62E + movs r0, #0x69 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809D62E + ldr r1, _0809D668 @ =gUnk_0800B0AC + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] + movs r0, #0x52 + bl sub_0807CD04 +_0809D62E: + adds r0, r5, #0 + bl sub_0806F69C + movs r0, #0 + ldrsh r1, [r7, r0] + adds r0, r5, #0 + bl sub_08003FC4 + adds r0, r5, #0 + bl sub_080042B8 + adds r0, r5, #0 + bl sub_080040A8 + cmp r0, #0 + bne _0809D652 + bl sub_0805E780 +_0809D652: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809D658: .4byte gLinkEntity +_0809D65C: .4byte 0xFFF80000 +_0809D660: .4byte gUnk_03000BF0 +_0809D664: .4byte gUnk_02034490 +_0809D668: .4byte gUnk_0800B0AC + + thumb_func_start sub_0809D66C +sub_0809D66C: @ 0x0809D66C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _0809D694 @ =gLinkEntity + ldrb r1, [r0, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r0, [r4, #0xc] + cmp r0, #1 + beq _0809D6EC + cmp r0, #1 + bgt _0809D698 + cmp r0, #0 + beq _0809D6A2 + b _0809D6FE + .align 2, 0 +_0809D694: .4byte gLinkEntity +_0809D698: + cmp r0, #2 + beq _0809D6F4 + cmp r0, #3 + beq _0809D6FA + b _0809D6FE +_0809D6A2: + movs r3, #1 + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r4, #0x18] + adds r0, r4, #0 + adds r0, #0x38 + strb r2, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r4, #0x1b] + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4, #0x1b] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r4, #0 + movs r1, #0xe0 + bl sub_080042AC +_0809D6EC: + adds r0, r4, #0 + bl sub_080042B8 + b _0809D6FE +_0809D6F4: + movs r0, #3 + strb r0, [r4, #0xc] + b _0809D6FE +_0809D6FA: + bl sub_0805E780 +_0809D6FE: + pop {r4, pc} + + thumb_func_start sub_0809D700 +sub_0809D700: @ 0x0809D700 + push {r4, lr} + sub sp, #4 + bl sub_08052654 + cmp r0, #0 + beq _0809D732 + movs r0, #0 + str r0, [sp] + movs r0, #6 + movs r1, #0x95 + movs r2, #6 + movs r3, #8 + bl sub_0805EB2C + adds r4, r0, #0 + cmp r4, #0 + bne _0809D732 + movs r0, #0x95 + movs r1, #8 + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _0809D732 + strb r4, [r0, #0xe] +_0809D732: + add sp, #4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809D738 +sub_0809D738: @ 0x0809D738 + push {r4, lr} + movs r0, #0x95 + movs r1, #9 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809D77C + ldr r1, _0809D774 @ =gUnk_03000BF0 + movs r0, #0 + str r0, [r1, #0x30] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + bl sub_0805E544 + movs r0, #0x95 + movs r1, #0xa + movs r2, #0 + bl sub_080A2960 + cmp r0, #0 + beq _0809D76C + str r0, [r4, #0x54] +_0809D76C: + ldr r1, _0809D778 @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + b _0809D780 + .align 2, 0 +_0809D774: .4byte gUnk_03000BF0 +_0809D778: .4byte gUnk_02034490 +_0809D77C: + bl sub_080791D0 +_0809D780: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809D784 +sub_0809D784: @ 0x0809D784 + push {lr} + ldr r1, _0809D7A0 @ =gUnk_081240B0 + ldrb r3, [r0, #0xc] + lsls r3, r3, #2 + adds r3, r3, r1 + ldrb r1, [r0, #0xa] + lsls r1, r1, #5 + ldr r2, _0809D7A4 @ =gUnk_08123FB0 + adds r1, r1, r2 + ldr r2, [r3] + bl _call_via_r2 + pop {pc} + .align 2, 0 +_0809D7A0: .4byte gUnk_081240B0 +_0809D7A4: .4byte gUnk_08123FB0 + + thumb_func_start sub_0809D7A8 +sub_0809D7A8: @ 0x0809D7A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + adds r0, #1 + movs r4, #0 + strb r0, [r5, #0xc] + adds r2, r5, #0 + adds r2, #0x38 + movs r0, #2 + strb r0, [r2] + ldrb r2, [r5, #0x19] + movs r0, #0x3f + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r5, #0x19] + ldr r0, [r1, #0x10] + str r0, [r5, #0x20] + ldrb r3, [r1, #0xf] + strb r3, [r5, #0x15] + ldrh r0, [r1, #0x18] + strh r0, [r5, #0x24] + ldrh r0, [r5, #0x32] + ldrh r2, [r1, #0x1a] + subs r0, r0, r2 + strh r0, [r5, #0x32] + str r4, [r5, #0x34] + ldrb r0, [r1, #0x1e] + strb r0, [r5, #0xe] + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _0809D80C + ldrb r0, [r5, #0x15] + cmp r0, #0x81 + bne _0809D80C + bl sub_08000E50 + ldr r1, _0809D820 @ =gLinkEntity + ldrb r1, [r1, #0x14] + lsls r1, r1, #2 + movs r2, #3 + ands r0, r2 + adds r1, r1, r0 + subs r1, #2 + movs r0, #0x1f + ands r1, r0 + movs r0, #0x10 + eors r1, r0 + strb r1, [r5, #0x15] +_0809D80C: + adds r0, r5, #0 + bl sub_08016A04 + ldrb r4, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] + pop {r4, r5, pc} + .align 2, 0 +_0809D820: .4byte gLinkEntity + + thumb_func_start sub_0809D824 +sub_0809D824: @ 0x0809D824 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + movs r0, #1 + ldr r2, [r6, #4] + cmp r2, #0 + beq _0809D838 + adds r0, r5, #0 + bl _call_via_r2 +_0809D838: + cmp r0, #0 + beq _0809D850 + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + ldrh r1, [r6, #0x1a] + ldrh r2, [r5, #0x32] + adds r0, r1, r2 + strh r0, [r5, #0x32] + ldrh r0, [r5, #0x36] + subs r0, r0, r1 + strh r0, [r5, #0x36] +_0809D850: + ldrb r4, [r5, #0xa] + ldrb r0, [r6, #0xd] + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] + pop {r4, r5, r6, pc} + + thumb_func_start sub_0809D860 +sub_0809D860: @ 0x0809D860 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + bl sub_0806F69C + ldr r1, [r6, #0x14] + adds r0, r5, #0 + bl sub_080044EC + cmp r0, #1 + bhi _0809D8B2 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _0809D888 + subs r0, #1 + strb r0, [r5, #0xe] + ldr r0, [r6, #0x14] + lsls r0, r0, #3 + str r0, [r5, #0x20] + b _0809D8AC +_0809D888: + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + ldr r0, _0809D8C4 @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r5, #0 + bl sub_08016A04 + ldr r1, [r6] + cmp r1, #0 + beq _0809D8AC + adds r0, r5, #0 + bl _call_via_r1 +_0809D8AC: + movs r0, #0x6e + bl sub_080A3268 +_0809D8B2: + ldrb r4, [r5, #0xa] + ldrb r0, [r6, #0xd] + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] + pop {r4, r5, r6, pc} + .align 2, 0 +_0809D8C4: .4byte gLinkEntity + + thumb_func_start sub_0809D8C8 +sub_0809D8C8: @ 0x0809D8C8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r0, _0809D8E4 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809D8E8 + adds r0, r5, #0 + bl sub_0800445C + b _0809D90A + .align 2, 0 +_0809D8E4: .4byte gUnk_03003F80 +_0809D8E8: + adds r0, r5, #0 + bl sub_08017850 + cmp r0, #0 + beq _0809D90A + ldrb r0, [r6, #0xd] + ldrb r1, [r5, #0xb] + movs r2, #0 + bl sub_080A7C00 + ldrh r0, [r6, #0x1c] + cmp r0, #0 + beq _0809D906 + bl sub_0807CCC8 +_0809D906: + bl sub_0805E780 +_0809D90A: + ldrb r4, [r5, #0xa] + ldrb r0, [r6, #0xd] + strb r0, [r5, #0xa] + adds r0, r5, #0 + bl sub_08080CB4 + strb r4, [r5, #0xa] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0809D91C +sub_0809D91C: @ 0x0809D91C + push {r4, lr} + adds r4, r0, #0 + movs r1, #0x11 + movs r2, #0 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _0809D934 + adds r0, r4, #0 + bl sub_0806FAD8 +_0809D934: + movs r0, #0x72 + bl sub_080A3268 + pop {r4, pc} + + thumb_func_start sub_0809D93C +sub_0809D93C: @ 0x0809D93C + push {r4, r5, lr} + adds r4, r0, #0 + adds r3, r1, #0 + ldr r2, _0809D9A0 @ =gLinkEntity + ldrb r0, [r2, #0xc] + cmp r0, #6 + bne _0809D9A4 + ldrb r0, [r3, #0xc] + ldrb r1, [r2, #0x14] + asrs r0, r1 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0809D9A4 + movs r5, #0x2e + ldrsh r0, [r2, r5] + movs r5, #0x2e + ldrsh r1, [r4, r5] + subs r0, r0, r1 + movs r1, #8 + ldrsb r1, [r3, r1] + adds r0, r0, r1 + ldrb r1, [r3, #0xa] + adds r0, r0, r1 + lsls r1, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + ble _0809D9A4 + movs r0, #0x32 + ldrsh r2, [r2, r0] + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r4, #0x1a + ldrsh r1, [r3, r4] + adds r0, r0, r1 + subs r2, r2, r0 + movs r0, #9 + ldrsb r0, [r3, r0] + adds r2, r2, r0 + ldrb r1, [r3, #0xb] + adds r0, r2, r1 + lsls r1, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + ble _0809D9A4 + movs r0, #1 + b _0809D9A6 + .align 2, 0 +_0809D9A0: .4byte gLinkEntity +_0809D9A4: + movs r0, #0 +_0809D9A6: + pop {r4, r5, pc} + + thumb_func_start sub_0809D9A8 +sub_0809D9A8: @ 0x0809D9A8 + push {lr} + ldr r2, _0809D9BC @ =gUnk_081240C0 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809D9BC: .4byte gUnk_081240C0 + + thumb_func_start sub_0809D9C0 +sub_0809D9C0: @ 0x0809D9C0 + push {lr} + ldr r2, _0809D9D4 @ =gUnk_081240D8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809D9D4: .4byte gUnk_081240D8 + + thumb_func_start sub_0809D9D8 +sub_0809D9D8: @ 0x0809D9D8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r2, #0 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + movs r0, #0x1e + strb r0, [r4, #0xe] + strb r2, [r4, #0xf] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x19] + strh r2, [r4, #0x24] + movs r0, #0x18 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + adds r0, r4, #0 + movs r1, #6 + bl sub_0805EB64 + cmp r0, #0 + beq _0809DA1E + str r4, [r0, #0x50] + str r0, [r4, #0x54] + b _0809DA28 +_0809DA1E: + movs r0, #0x20 + bl sub_0807CD04 + bl sub_0805E780 +_0809DA28: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809DA2C +sub_0809DA2C: @ 0x0809DA2C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809DA5C + ldrb r0, [r1, #0xc] + adds r0, #1 + strb r0, [r1, #0xc] + ldr r0, [r1, #0x30] + movs r2, #0x80 + lsls r2, r2, #0xd + adds r0, r0, r2 + str r0, [r1, #0x30] + ldr r0, [r1, #0x34] + ldr r2, _0809DA60 @ =0xFFF00000 + adds r0, r0, r2 + str r0, [r1, #0x34] + adds r0, r1, #0 + movs r1, #3 + bl sub_080042AC +_0809DA5C: + pop {pc} + .align 2, 0 +_0809DA60: .4byte 0xFFF00000 + + thumb_func_start sub_0809DA64 +sub_0809DA64: @ 0x0809DA64 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x54] + adds r1, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r5, #0 + bl sub_0809E1C8 + adds r0, r5, #0 + bl sub_0809E1F0 + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x32 + ldrsh r2, [r4, r0] + adds r0, r5, #0 + bl sub_080041DC + lsls r0, r0, #4 + movs r2, #0x24 + ldrsh r1, [r5, r2] + cmp r0, r1 + bge _0809DAAC + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + movs r0, #0x10 + strb r0, [r5, #0xe] + movs r0, #1 + strb r0, [r5, #0xf] + adds r0, r5, #0 + movs r1, #2 + bl sub_080042AC +_0809DAAC: + adds r0, r5, #0 + bl sub_080042B8 + pop {r4, r5, pc} + + thumb_func_start sub_0809DAB4 +sub_0809DAB4: @ 0x0809DAB4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0809DB10 @ =gUnk_03000BF0 + ldrh r1, [r5, #6] + adds r1, #0x78 + ldrh r2, [r5, #8] + adds r2, #0xa8 + bl sub_080045B4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0809E1C8 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809DADE + subs r0, #1 + strb r0, [r4, #0xe] + ldrh r0, [r4, #0x24] + subs r0, #0x80 + strh r0, [r4, #0x24] +_0809DADE: + adds r0, r4, #0 + bl sub_0809E1F0 + ldrh r1, [r5, #6] + adds r1, #0x78 + ldrh r2, [r5, #8] + adds r2, #0xa8 + adds r0, r4, #0 + bl sub_080041DC + lsls r0, r0, #4 + movs r2, #0x24 + ldrsh r1, [r4, r2] + cmp r0, r1 + bge _0809DB02 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_0809DB02: + adds r0, r4, #0 + bl sub_0809E210 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 +_0809DB10: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809DB14 +sub_0809DB14: @ 0x0809DB14 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_0809E1F0 + adds r0, r4, #0 + bl sub_080040A8 + adds r5, r0, #0 + cmp r5, #0 + bne _0809DB36 + movs r0, #0x20 + bl sub_0807CD04 + ldr r0, [r4, #0x54] + str r5, [r0, #0x50] + bl sub_0805E780 +_0809DB36: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809DB40 +sub_0809DB40: @ 0x0809DB40 + push {lr} + ldr r2, _0809DB54 @ =gUnk_081240EC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809DB54: .4byte gUnk_081240EC + + thumb_func_start sub_0809DB58 +sub_0809DB58: @ 0x0809DB58 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0x3c + bl sub_080042AC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809DB88 +sub_0809DB88: @ 0x0809DB88 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x50] + cmp r4, #0 + beq _0809DBC4 + ldr r0, [r4, #4] + cmp r0, #0 + bne _0809DB9C + bl sub_0805E780 +_0809DB9C: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0809DBB0 + movs r3, #0x80 + lsls r3, r3, #0xc + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 +_0809DBB0: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + ldrb r2, [r5, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x18] + b _0809DBC8 +_0809DBC4: + bl sub_0805E780 +_0809DBC8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809DBCC +sub_0809DBCC: @ 0x0809DBCC + push {lr} + ldr r2, _0809DBE0 @ =gUnk_081240F4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809DBE0: .4byte gUnk_081240F4 + + thumb_func_start sub_0809DBE4 +sub_0809DBE4: @ 0x0809DBE4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809DB58 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x18 + strb r0, [r4, #0x15] + adds r0, #0xe8 + strh r0, [r4, #0x24] + movs r0, #0x80 + lsls r0, r0, #0xa + str r0, [r4, #0x20] + movs r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x6e + bl sub_080A3268 + pop {r4, pc} + + thumb_func_start sub_0809DC14 +sub_0809DC14: @ 0x0809DC14 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bhi _0809DC5A + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _0809DC3C + subs r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + b _0809DC54 +_0809DC3C: + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0809DC64 @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r4, #0 + bl sub_08016A04 +_0809DC54: + movs r0, #0x6e + bl sub_080A3268 +_0809DC5A: + adds r0, r4, #0 + bl sub_0809DB88 + pop {r4, pc} + .align 2, 0 +_0809DC64: .4byte gLinkEntity + + thumb_func_start sub_0809DC68 +sub_0809DC68: @ 0x0809DC68 + push {lr} + ldr r2, _0809DC7C @ =gUnk_08124100 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809DC7C: .4byte gUnk_08124100 + + thumb_func_start sub_0809DC80 +sub_0809DC80: @ 0x0809DC80 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r3, #0 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + movs r0, #0x1e + strb r0, [r4, #0xe] + movs r0, #1 + strb r0, [r4, #0xf] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r2, #0 + strh r3, [r4, #0x24] + movs r0, #0x18 + strb r0, [r4, #0x15] + ldr r0, [r4, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xd + adds r0, r0, r1 + str r0, [r4, #0x30] + ldr r0, [r4, #0x34] + ldr r1, _0809DCFC @ =0xFFF00000 + adds r0, r0, r1 + str r0, [r4, #0x34] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x68 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x6a + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x6c + strh r3, [r0] + adds r0, #2 + strb r2, [r0] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #3 + bl sub_080042AC + adds r0, r4, #0 + movs r1, #6 + bl sub_0805EB64 + cmp r0, #0 + beq _0809DD00 + str r4, [r0, #0x50] + str r0, [r4, #0x54] + b _0809DD0A + .align 2, 0 +_0809DCFC: .4byte 0xFFF00000 +_0809DD00: + movs r0, #0x20 + bl sub_0807CD04 + bl sub_0805E780 +_0809DD0A: + pop {r4, pc} + + thumb_func_start sub_0809DD0C +sub_0809DD0C: @ 0x0809DD0C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809DD2A + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xa3 + lsls r0, r0, #1 + bl sub_080A3268 +_0809DD2A: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809DD34 +sub_0809DD34: @ 0x0809DD34 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x6e + ldrb r0, [r1] + adds r0, #8 + strb r0, [r1] + subs r1, #2 + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x20 + bls _0809DD64 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x20 + strh r0, [r1] + movs r0, #0xa3 + lsls r0, r0, #1 + bl sub_080A3268 +_0809DD64: + adds r0, r4, #0 + bl sub_0809E238 + adds r0, r4, #0 + bl sub_0809E29C + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_0809DD78 +sub_0809DD78: @ 0x0809DD78 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x6e + ldrb r0, [r1] + adds r0, #8 + strb r0, [r1] + subs r1, #2 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809DDA8 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x5f + ands r0, r1 + strb r0, [r4, #0x18] + b _0809DDB4 +_0809DDA8: + adds r0, r4, #0 + bl sub_0809E238 + adds r0, r4, #0 + bl sub_0809E29C +_0809DDB4: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_0809DDBC +sub_0809DDBC: @ 0x0809DDBC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809DDD8 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0809DDE0 @ =0x0000015B + bl sub_080A3268 +_0809DDD8: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_0809DDE0: .4byte 0x0000015B + + thumb_func_start sub_0809DDE4 +sub_0809DDE4: @ 0x0809DDE4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0809DE34 @ =gUnk_03000BF0 + ldrh r1, [r0, #6] + adds r1, #0x40 + ldrh r2, [r0, #8] + movs r0, #0xbc + lsls r0, r0, #1 + adds r2, r2, r0 + adds r0, r4, #0 + bl sub_080045B4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_0809E1C8 + adds r0, r4, #0 + bl sub_0809E1F0 + adds r0, r4, #0 + bl sub_0809E210 + adds r0, r4, #0 + bl sub_080040A8 + adds r5, r0, #0 + cmp r5, #0 + bne _0809DE2A + movs r0, #0x20 + bl sub_0807CD04 + ldr r0, [r4, #0x54] + str r5, [r0, #0x50] + bl sub_0805E780 +_0809DE2A: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + .align 2, 0 +_0809DE34: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809DE38 +sub_0809DE38: @ 0x0809DE38 + push {lr} + ldr r2, _0809DE4C @ =gUnk_08124118 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809DE4C: .4byte gUnk_08124118 + + thumb_func_start sub_0809DE50 +sub_0809DE50: @ 0x0809DE50 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r2, #0 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + movs r0, #0xa + strb r0, [r4, #0xe] + strb r2, [r4, #0xf] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x19] + strh r2, [r4, #0x24] + ldr r1, _0809DEEC @ =gUnk_0812412D + ldrb r0, [r4, #0xb] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0x15] + ldrb r1, [r4, #0xb] + lsls r1, r1, #2 + ldr r0, _0809DEF0 @ =gUnk_08124132 + adds r1, r1, r0 + ldr r2, _0809DEF4 @ =gUnk_03000BF0 + ldrh r0, [r1] + ldrh r3, [r2, #6] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + ldrh r0, [r1, #2] + ldrh r2, [r2, #8] + adds r0, r0, r2 + adds r0, #0x40 + strh r0, [r4, #0x32] + ldr r0, _0809DEF8 @ =0x0000FFC0 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_08016A04 + ldr r1, _0809DEFC @ =gUnk_08124128 + ldrb r0, [r4, #0xb] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_080042AC + movs r0, #0x97 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r5, r0, #0 + cmp r5, #0 + beq _0809DEE8 + str r4, [r5, #0x50] + str r5, [r4, #0x54] + movs r3, #0x80 + lsls r3, r3, #0xc + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #0 + bl sub_0806FA48 + movs r1, #0x10 + ldrb r0, [r4, #0x15] + cmp r0, #0x18 + bne _0809DEE2 + rsbs r1, r1, #0 +_0809DEE2: + ldrh r0, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x2e] +_0809DEE8: + pop {r4, r5, pc} + .align 2, 0 +_0809DEEC: .4byte gUnk_0812412D +_0809DEF0: .4byte gUnk_08124132 +_0809DEF4: .4byte gUnk_03000BF0 +_0809DEF8: .4byte 0x0000FFC0 +_0809DEFC: .4byte gUnk_08124128 + + thumb_func_start sub_0809DF00 +sub_0809DF00: @ 0x0809DF00 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xb] + bl sub_0809E2C4 + cmp r0, #1 + beq _0809DF16 + cmp r0, #2 + beq _0809DF64 + movs r0, #0xa + b _0809DF96 +_0809DF16: + ldrb r0, [r4, #0xc] + adds r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xff + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r1, #2 + adds r0, r4, #0 + bl sub_080042AC + ldr r0, _0809DF60 @ =0x00000123 + bl sub_080A3268 + ldr r5, [r4, #0x54] + cmp r5, #0 + beq _0809DF98 + ldrb r1, [r4, #0xb] + adds r1, #2 + movs r0, #0x96 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0809DF52 + adds r0, r5, #0 + bl sub_0806FA24 +_0809DF52: + adds r0, r5, #0 + bl sub_0805E79C + movs r0, #0 + str r0, [r4, #0x54] + b _0809DF98 + .align 2, 0 +_0809DF60: .4byte 0x00000123 +_0809DF64: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _0809DF94 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r1, #2 + adds r0, r4, #0 + bl sub_080042AC + ldr r0, _0809DF8C @ =0x00000123 + bl sub_080A3268 + ldr r0, _0809DF90 @ =0x000001F3 + bl sub_080A3268 + b _0809DF98 + .align 2, 0 +_0809DF8C: .4byte 0x00000123 +_0809DF90: .4byte 0x000001F3 +_0809DF94: + subs r0, #1 +_0809DF96: + strb r0, [r4, #0xe] +_0809DF98: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, r5, pc} + + thumb_func_start sub_0809DFA0 +sub_0809DFA0: @ 0x0809DFA0 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + cmp r0, #0 + beq _0809DFD6 + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r2, #0x2e + ldrsh r0, [r4, r2] + subs r1, r1, r0 + ldrb r0, [r4, #0x15] + lsls r0, r0, #0xb + eors r1, r0 + movs r0, #0x80 + lsls r0, r0, #8 + ands r1, r0 + cmp r1, #0 + beq _0809DFD6 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + movs r0, #1 + strb r0, [r4, #0xf] + movs r0, #0x81 + lsls r0, r0, #1 + bl sub_080A3268 +_0809DFD6: + adds r0, r4, #0 + bl sub_0809DFE0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809DFE0 +sub_0809DFE0: @ 0x0809DFE0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080040A8 + cmp r0, #0 + bne _0809E028 + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _0809DFF4 + str r0, [r1, #0x50] +_0809DFF4: + ldrb r1, [r4, #0xe] + movs r0, #0x80 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0 + beq _0809E008 + bl sub_0805E780 + b _0809E034 +_0809E008: + strb r0, [r4, #0xc] + bl sub_08000E50 + ldr r2, _0809E024 @ =gUnk_08124146 + movs r1, #1 + ands r1, r0 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0xb] + b _0809E034 + .align 2, 0 +_0809E024: .4byte gUnk_08124146 +_0809E028: + adds r0, r4, #0 + bl sub_0809E1F0 + adds r0, r4, #0 + bl sub_080042B8 +_0809E034: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809E038 +sub_0809E038: @ 0x0809E038 + push {lr} + ldr r2, _0809E04C @ =gUnk_08124150 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809E04C: .4byte gUnk_08124150 + + thumb_func_start sub_0809E050 +sub_0809E050: @ 0x0809E050 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x19] + ldr r0, _0809E084 @ =0x0000FFF0 + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #1 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 +_0809E084: .4byte 0x0000FFF0 + + thumb_func_start sub_0809E088 +sub_0809E088: @ 0x0809E088 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_0809E0A0 +sub_0809E0A0: @ 0x0809E0A0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0x97 + movs r1, #5 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809E0C8 + str r5, [r4, #0x50] + str r4, [r5, #0x54] + movs r0, #0 + strb r0, [r5, #0xf] + ldr r0, _0809E0CC @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, _0809E0D0 @ =0x0000FFF8 + strh r0, [r4, #0x36] +_0809E0C8: + pop {r4, r5, pc} + .align 2, 0 +_0809E0CC: .4byte gLinkEntity +_0809E0D0: .4byte 0x0000FFF8 + + thumb_func_start sub_0809E0D4 +sub_0809E0D4: @ 0x0809E0D4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r6, r1, #0 + ldrb r2, [r6, #0x18] + cmp r2, #0 + bne _0809E130 + ldr r1, [r5, #0x54] + cmp r1, #0 + beq _0809E0FC + ldrb r0, [r1, #0xc] + cmp r0, #1 + bhi _0809E0FE + ldr r0, _0809E0F8 @ =gUnk_02033280 + strb r2, [r0, #6] + b _0809E1BC + .align 2, 0 +_0809E0F8: .4byte gUnk_02033280 +_0809E0FC: + ldr r1, _0809E124 @ =gLinkEntity +_0809E0FE: + ldrb r0, [r6, #0x18] + adds r0, #1 + movs r4, #0 + strb r0, [r6, #0x18] + movs r0, #0x2e + ldrsh r2, [r1, r0] + movs r0, #0x32 + ldrsh r3, [r1, r0] + adds r0, r5, #0 + adds r1, r6, #0 + bl sub_0807DEDC + ldr r0, _0809E128 @ =0x00000123 + bl sub_080A3268 + ldr r0, _0809E12C @ =gUnk_02033280 + strb r4, [r0, #6] + b _0809E1BC + .align 2, 0 +_0809E124: .4byte gLinkEntity +_0809E128: .4byte 0x00000123 +_0809E12C: .4byte gUnk_02033280 +_0809E130: + ldr r1, [r5, #0x54] + cmp r1, #0 + beq _0809E142 + movs r0, #0x2e + ldrsh r2, [r1, r0] + mov r8, r2 + movs r2, #0x32 + ldrsh r7, [r1, r2] + b _0809E14C +_0809E142: + movs r1, #0x1e + ldrsh r0, [r6, r1] + mov r8, r0 + movs r2, #0x22 + ldrsh r7, [r6, r2] +_0809E14C: + ldrb r0, [r6, #0x19] + subs r0, #1 + strb r0, [r6, #0x19] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809E170 + movs r0, #8 + strb r0, [r6, #0x19] + movs r1, #0x2e + ldrsh r0, [r5, r1] + mov r2, r8 + subs r0, r2, r0 + movs r2, #0x32 + ldrsh r1, [r5, r2] + subs r1, r7, r1 + bl sub_080045DA + strb r0, [r5, #0x15] +_0809E170: + movs r0, #0x2e + ldrsh r4, [r5, r0] + mov r1, r8 + subs r4, r4, r1 + movs r2, #0x32 + ldrsh r0, [r5, r2] + subs r6, r0, r7 + movs r0, #0x24 + ldrsh r1, [r5, r0] + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F62C + movs r1, #0x2e + ldrsh r0, [r5, r1] + mov r2, r8 + subs r0, r0, r2 + muls r4, r0, r4 + movs r1, #0x32 + ldrsh r0, [r5, r1] + subs r0, r0, r7 + muls r6, r0, r6 + cmp r4, #0 + bgt _0809E1B6 + cmp r6, #0 + bgt _0809E1B6 + strh r2, [r5, #0x2e] + strh r7, [r5, #0x32] + movs r0, #1 + strb r0, [r5, #0xf] + movs r0, #0x81 + lsls r0, r0, #1 + bl sub_080A3268 + b _0809E1BC +_0809E1B6: + ldr r1, _0809E1C4 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_0809E1BC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809E1C4: .4byte gUnk_02033280 + + thumb_func_start sub_0809E1C8 +sub_0809E1C8: @ 0x0809E1C8 + push {lr} + adds r3, r0, #0 + adds r1, #0x20 + ldrb r2, [r3, #0x15] + subs r1, r1, r2 + movs r0, #0x1f + ands r1, r0 + cmp r1, #0 + beq _0809E1E6 + cmp r1, #0xf + bhi _0809E1E2 + adds r0, r2, #1 + b _0809E1E4 +_0809E1E2: + subs r0, r2, #1 +_0809E1E4: + strb r0, [r3, #0x15] +_0809E1E6: + ldrb r1, [r3, #0x15] + movs r0, #0x1f + ands r0, r1 + strb r0, [r3, #0x15] + pop {pc} + + thumb_func_start sub_0809E1F0 +sub_0809E1F0: @ 0x0809E1F0 + push {lr} + adds r1, r0, #0 + ldrh r0, [r1, #0x24] + adds r0, #0x40 + strh r0, [r1, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r2, #0x80 + lsls r2, r2, #3 + cmp r0, r2 + ble _0809E208 + strh r2, [r1, #0x24] +_0809E208: + adds r0, r1, #0 + bl sub_0806F69C + pop {pc} + + thumb_func_start sub_0809E210 +sub_0809E210: @ 0x0809E210 + push {r4, lr} + adds r1, r0, #0 + ldr r4, _0809E230 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + bl sub_0806F5B0 + movs r1, #0xfe + ands r0, r1 + strb r0, [r4, #0x14] + ldr r1, _0809E234 @ =gUnk_03003F80 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #8] + pop {r4, pc} + .align 2, 0 +_0809E230: .4byte gLinkEntity +_0809E234: .4byte gUnk_03003F80 + + thumb_func_start sub_0809E238 +sub_0809E238: @ 0x0809E238 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r7, r0, #0 + ldr r6, _0809E298 @ =gUnk_080C9160 + movs r0, #0x6e + adds r0, r0, r7 + mov r8, r0 + ldrb r0, [r0] + lsls r0, r0, #1 + adds r0, r0, r6 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r5, r7, #0 + adds r5, #0x6c + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_0806F9EC + adds r4, r0, #0 + lsls r4, r4, #0x10 + asrs r4, r4, #0x10 + mov r1, r8 + ldrb r0, [r1] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r6 + movs r2, #0 + ldrsh r0, [r0, r2] + movs r2, #0 + ldrsh r1, [r5, r2] + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r7, #0 + adds r1, #0x68 + ldrh r1, [r1] + adds r1, r1, r4 + strh r1, [r7, #0x2e] + adds r1, r7, #0 + adds r1, #0x6a + ldrh r1, [r1] + subs r1, r1, r0 + strh r1, [r7, #0x32] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809E298: .4byte gUnk_080C9160 + + thumb_func_start sub_0809E29C +sub_0809E29C: @ 0x0809E29C + push {lr} + adds r2, r0, #0 + adds r0, #0x6e + ldrb r0, [r0] + adds r0, #0x40 + movs r1, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809E2B8 + ldrb r1, [r2, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _0809E2BE +_0809E2B8: + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 +_0809E2BE: + strb r0, [r2, #0x18] + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809E2C4 +sub_0809E2C4: @ 0x0809E2C4 + push {r4, r5, r6, r7, lr} + lsls r1, r1, #2 + ldr r0, _0809E328 @ =gUnk_08124178 + adds r1, r1, r0 + ldr r3, _0809E32C @ =gLinkEntity + movs r0, #0x2e + ldrsh r5, [r3, r0] + ldr r4, _0809E330 @ =gUnk_03000BF0 + ldrh r0, [r4, #6] + ldrh r2, [r1] + adds r0, r0, r2 + subs r6, r5, r0 + movs r0, #0x32 + ldrsh r2, [r3, r0] + ldrh r0, [r4, #8] + ldrh r1, [r1, #2] + adds r0, r0, r1 + subs r5, r2, r0 + ldr r4, _0809E334 @ =gUnk_08124158 + movs r2, #0 + adds r7, r3, #0 +_0809E2EE: + movs r1, #0 + ldrsh r0, [r4, r1] + subs r0, r6, r0 + ldrb r1, [r4, #4] + adds r0, r0, r1 + lsls r1, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + ble _0809E33C + movs r1, #2 + ldrsh r0, [r4, r1] + subs r0, r5, r0 + ldrb r1, [r4, #5] + adds r0, r0, r1 + lsls r1, r1, #1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r1, r0 + ble _0809E33C + ldrb r0, [r4, #6] + ldrb r7, [r7, #0x14] + cmp r0, r7 + bne _0809E338 + ldrb r0, [r3, #0xc] + cmp r0, #6 + bne _0809E338 + movs r0, #1 + b _0809E346 + .align 2, 0 +_0809E328: .4byte gUnk_08124178 +_0809E32C: .4byte gLinkEntity +_0809E330: .4byte gUnk_03000BF0 +_0809E334: .4byte gUnk_08124158 +_0809E338: + movs r0, #2 + b _0809E346 +_0809E33C: + adds r2, #1 + adds r4, #8 + cmp r2, #3 + ble _0809E2EE + movs r0, #0 +_0809E346: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0809E348 +sub_0809E348: @ 0x0809E348 + push {lr} + ldr r2, _0809E35C @ =gUnk_0812418C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809E35C: .4byte gUnk_0812418C + + thumb_func_start sub_0809E360 +sub_0809E360: @ 0x0809E360 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #8 + bls _0809E372 + movs r0, #8 + strb r0, [r4, #0xe] +_0809E372: + ldrb r2, [r4, #0xe] + movs r0, #0x48 + subs r0, r0, r2 + ldr r1, _0809E3E0 @ =gUnk_03003DBC + ldrb r1, [r1] + cmp r0, r1 + ble _0809E3D8 + movs r5, #0 + adds r7, r4, #0 + adds r7, #0x7e + movs r0, #0x76 + adds r0, r0, r4 + mov r8, r0 + cmp r5, r2 + bhs _0809E3A6 + movs r6, #0xe +_0809E392: + movs r0, #0x17 + bl sub_080A7EE0 + strb r6, [r0, #0xe] + str r4, [r0, #0x50] + adds r6, #0xc + adds r5, #1 + ldrb r2, [r4, #0xe] + cmp r5, r2 + blo _0809E392 +_0809E3A6: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r7] + lsls r1, r0, #8 + mov r2, r8 + strh r1, [r2] + lsls r0, r0, #6 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #0 + bl sub_0805E3A0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0809E3D8 + bl sub_0804B128 + str r0, [r4, #0x54] + adds r1, r4, #0 + adds r1, #0x54 + adds r2, r4, #0 + adds r2, #0x74 + adds r0, r4, #0 + bl sub_080A2CC0 +_0809E3D8: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809E3E0: .4byte gUnk_03003DBC + + thumb_func_start sub_0809E3E4 +sub_0809E3E4: @ 0x0809E3E4 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x76 + ldrb r0, [r4, #0xb] + ldrh r1, [r2] + adds r1, r1, r0 + strh r1, [r2] + lsrs r1, r1, #2 + strb r1, [r4, #0x14] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _0809E428 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0809E40E + adds r0, r4, #0 + bl sub_0806F69C +_0809E40E: + adds r2, r4, #0 + adds r2, #0x74 + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809E428 + adds r1, r4, #0 + adds r1, #0x54 + adds r0, r4, #0 + bl sub_080A2CC0 +_0809E428: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809E42C +sub_0809E42C: @ 0x0809E42C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + ldr r6, [r4, #0x50] + ldr r0, [r6, #4] + cmp r0, #0 + bne _0809E444 + bl sub_0805E780 +_0809E444: + ldrb r0, [r4, #0xc] + movs r1, #0x76 + adds r1, r1, r4 + mov r8, r1 + adds r7, r4, #0 + adds r7, #0x62 + movs r2, #0x74 + adds r2, r2, r4 + mov sb, r2 + adds r5, r4, #0 + adds r5, #0x63 + movs r1, #0x75 + adds r1, r1, r4 + mov sl, r1 + cmp r0, #0 + bne _0809E482 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r6, #0x14] + mov r2, r8 + strb r0, [r2] + ldrb r0, [r7] + mov r1, sb + strb r0, [r1] + ldrb r0, [r5] + mov r2, sl + strb r0, [r2] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_08004260 +_0809E482: + ldrb r0, [r6, #0x14] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + beq _0809E490 + bl sub_0805E780 +_0809E490: + ldrb r1, [r6, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA6C + mov r2, sb + ldrb r0, [r2] + ldrb r1, [r7] + adds r0, r0, r1 + strb r0, [r7] + mov r2, sl + ldrb r0, [r2] + ldrb r1, [r5] + adds r0, r0, r1 + strb r0, [r5] + ldrb r0, [r4, #0x14] + cmp r0, #2 + beq _0809E4D0 + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + ldrb r0, [r5] + subs r0, #1 + b _0809E4DA +_0809E4D0: + ldrh r0, [r4, #0x32] + subs r0, #1 + strh r0, [r4, #0x32] + ldrb r0, [r5] + adds r0, #1 +_0809E4DA: + strb r0, [r5] + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809E4F4 + bl sub_0805E780 +_0809E4F4: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0809E500 +sub_0809E500: @ 0x0809E500 + push {lr} + ldr r2, _0809E514 @ =gUnk_081242C8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809E514: .4byte gUnk_081242C8 + + thumb_func_start sub_0809E518 +sub_0809E518: @ 0x0809E518 + push {r4, r5, r6, lr} + adds r6, r0, #0 + movs r1, #1 + strb r1, [r6, #0xc] + ldrb r2, [r6, #0xa] + adds r0, r2, #0 + cmp r0, #0xff + bne _0809E52E + ldrb r0, [r6, #0xb] + strb r0, [r6, #0x1e] + b _0809E5CA +_0809E52E: + ands r1, r2 + rsbs r0, r1, #0 + orrs r0, r1 + asrs r5, r0, #0x1f + movs r0, #4 + ands r5, r0 + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _0809E5A4 + ldr r0, _0809E5A0 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x44 + bhi _0809E5B4 + strb r5, [r6, #0x1e] + adds r5, #1 + movs r0, #0x9a + movs r1, #0xff + adds r2, r5, #0 + bl sub_080A2960 + adds r4, r0, #0 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r5, #1 + movs r0, #0x9a + movs r1, #0xff + adds r2, r5, #0 + bl sub_080A2960 + adds r4, r0, #0 + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + adds r1, r4, #0 + adds r1, #0x63 + movs r0, #0xff + strb r0, [r1] + adds r5, #1 + movs r0, #0x9a + movs r1, #0xff + adds r2, r5, #0 + bl sub_080A2960 + adds r4, r0, #0 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + b _0809E5C4 + .align 2, 0 +_0809E5A0: .4byte gUnk_03003DBC +_0809E5A4: + adds r2, r5, #1 + movs r0, #0x9a + movs r1, #0xff + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + bne _0809E5BA +_0809E5B4: + bl sub_0805E780 + b _0809E5C4 +_0809E5BA: + strb r5, [r6, #0x1e] + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_0809E5C4: + adds r0, r6, #0 + bl sub_0809E5F0 +_0809E5CA: + ldrb r1, [r6, #0x1e] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _0809E5E8 + ldrb r0, [r6, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r6, #0x19] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] +_0809E5E8: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start nullsub_125 +nullsub_125: @ 0x0809E5EC + bx lr + .align 2, 0 + + thumb_func_start sub_0809E5F0 +sub_0809E5F0: @ 0x0809E5F0 + push {r4, r5, lr} + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r4, _0809E628 @ =gUnk_03000BF0 + ldrh r2, [r4, #6] + subs r1, r1, r2 + asrs r5, r1, #4 + movs r3, #0x3f + ands r5, r3 + movs r2, #0x32 + ldrsh r1, [r0, r2] + ldrh r2, [r4, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r5, r1 + adds r1, r0, #0 + adds r1, #0x80 + strh r5, [r1] + ldrb r0, [r0, #0xa] + cmp r0, #1 + beq _0809E708 + cmp r0, #1 + bgt _0809E62C + cmp r0, #0 + beq _0809E64E + b _0809E792 + .align 2, 0 +_0809E628: .4byte gUnk_03000BF0 +_0809E62C: + cmp r0, #2 + beq _0809E636 + cmp r0, #3 + beq _0809E6F0 + b _0809E792 +_0809E636: + ldr r0, _0809E6DC @ =0x00004022 + adds r1, r5, #0 + subs r1, #0x3d + movs r2, #1 + bl sub_0800015E + ldr r0, _0809E6E0 @ =0x0000406D + adds r1, r5, #0 + subs r1, #0x3c + movs r2, #1 + bl sub_0800015E +_0809E64E: + ldr r0, _0809E6E4 @ =0x0000406C + adds r1, r5, #0 + subs r1, #0x42 + movs r2, #1 + bl sub_0800015E + ldr r4, _0809E6DC @ =0x00004022 + adds r1, r5, #0 + subs r1, #0x41 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x40 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x3f + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + subs r1, r5, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + subs r1, r5, #1 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #1 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r0, _0809E6E8 @ =0x0000406E + adds r1, r5, #0 + adds r1, #0x3e + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + adds r1, #0x3f + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + adds r1, #0x40 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r0, _0809E6EC @ =0x0000406F + adds r1, r5, #0 + adds r1, #0x41 + movs r2, #1 + bl sub_0800015E + b _0809E792 + .align 2, 0 +_0809E6DC: .4byte 0x00004022 +_0809E6E0: .4byte 0x0000406D +_0809E6E4: .4byte 0x0000406C +_0809E6E8: .4byte 0x0000406E +_0809E6EC: .4byte 0x0000406F +_0809E6F0: + ldr r0, _0809E794 @ =0x00004022 + adds r1, r5, #0 + subs r1, #0x44 + movs r2, #1 + bl sub_0800015E + ldr r0, _0809E798 @ =0x0000406C + adds r1, r5, #0 + subs r1, #0x45 + movs r2, #1 + bl sub_0800015E +_0809E708: + ldr r4, _0809E794 @ =0x00004022 + adds r1, r5, #0 + subs r1, #0x42 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x41 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + subs r1, #0x40 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r0, _0809E79C @ =0x0000406D + adds r1, r5, #0 + subs r1, #0x3f + movs r2, #1 + bl sub_0800015E + subs r1, r5, #2 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + subs r1, r5, #1 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r0, r4, #0 + adds r1, r5, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #1 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r0, _0809E7A0 @ =0x0000406E + adds r1, r5, #0 + adds r1, #0x3e + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + adds r1, #0x3f + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + adds r1, r5, #0 + adds r1, #0x40 + adds r0, r4, #0 + movs r2, #1 + bl sub_0800015E + ldr r0, _0809E7A4 @ =0x0000406F + adds r1, r5, #0 + adds r1, #0x41 + movs r2, #1 + bl sub_0800015E +_0809E792: + pop {r4, r5, pc} + .align 2, 0 +_0809E794: .4byte 0x00004022 +_0809E798: .4byte 0x0000406C +_0809E79C: .4byte 0x0000406D +_0809E7A0: .4byte 0x0000406E +_0809E7A4: .4byte 0x0000406F + + thumb_func_start sub_0809E7A8 +sub_0809E7A8: @ 0x0809E7A8 + push {lr} + ldr r2, _0809E7BC @ =gUnk_081242D0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809E7BC: .4byte gUnk_081242D0 + + thumb_func_start sub_0809E7C0 +sub_0809E7C0: @ 0x0809E7C0 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xb] + cmp r0, #0xff + beq _0809E7D4 + adds r0, r4, #0 + bl sub_0809E7FC +_0809E7D4: + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809E7E0 +sub_0809E7E0: @ 0x0809E7E0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809E7F8 + bl sub_0805E780 +_0809E7F8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809E7FC +sub_0809E7FC: @ 0x0809E7FC + push {lr} + adds r1, r0, #0 + ldrb r3, [r1, #0xb] + lsls r3, r3, #1 + ldr r0, _0809E820 @ =gUnk_081242D8 + adds r3, r3, r0 + ldr r0, [r1, #0x50] + movs r2, #0 + ldrsb r2, [r3, r2] + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + bl sub_0806FA48 + pop {pc} + .align 2, 0 +_0809E820: .4byte gUnk_081242D8 + + thumb_func_start sub_0809E824 +sub_0809E824: @ 0x0809E824 + push {lr} + ldr r2, _0809E838 @ =gUnk_08124354 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809E838: .4byte gUnk_08124354 + + thumb_func_start sub_0809E83C +sub_0809E83C: @ 0x0809E83C + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809E856 + adds r0, r4, #0 + bl sub_0809E96C + bl sub_0805E780 +_0809E856: + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809E86C +sub_0809E86C: @ 0x0809E86C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0809E8B4 @ =gLinkEntity + movs r2, #0x30 + movs r3, #0x30 + bl sub_0800419C + cmp r0, #0 + beq _0809E89A + movs r0, #0x14 + bl GetProgressFlag + cmp r0, #0 + beq _0809E89A + ldr r0, _0809E8B8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0809E89A + adds r0, r4, #0 + bl sub_080A2B80 +_0809E89A: + bl sub_0809E9A0 + cmp r0, #0x54 + bne _0809E8B0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] + movs r0, #1 + bl sub_08078A90 +_0809E8B0: + pop {r4, pc} + .align 2, 0 +_0809E8B4: .4byte gLinkEntity +_0809E8B8: .4byte gUnk_030010A0 + + thumb_func_start sub_0809E8BC +sub_0809E8BC: @ 0x0809E8BC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809E8E8 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x40 + ands r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0809E96C + adds r0, r4, #0 + bl sub_0809E918 +_0809E8E8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809E8EC +sub_0809E8EC: @ 0x0809E8EC + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809E916 + adds r0, r1, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + movs r0, #0 + bl sub_08078A90 + movs r0, #0x73 + bl sub_080A3268 + bl sub_0805E780 +_0809E916: + pop {pc} + + thumb_func_start sub_0809E918 +sub_0809E918: @ 0x0809E918 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, _0809E964 @ =gUnk_08124364 + movs r1, #0 + ldrsh r0, [r4, r1] + ldr r1, _0809E968 @ =0xFFFFFC18 + cmp r0, r1 + beq _0809E962 + adds r6, r1, #0 +_0809E92A: + adds r0, r5, #0 + movs r1, #3 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0809E958 + ldrh r0, [r4] + ldrh r1, [r2, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] + ldrh r0, [r4, #2] + ldrh r1, [r2, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r2, #0 + bl sub_08016A04 +_0809E958: + adds r4, #4 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, r6 + bne _0809E92A +_0809E962: + pop {r4, r5, r6, pc} + .align 2, 0 +_0809E964: .4byte gUnk_08124364 +_0809E968: .4byte 0xFFFFFC18 + + thumb_func_start sub_0809E96C +sub_0809E96C: @ 0x0809E96C + push {r4, r5, lr} + adds r4, r0, #0 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0809E99C @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + adds r1, #0x20 + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + adds r2, #8 + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + bl sub_08018C1C + pop {r4, r5, pc} + .align 2, 0 +_0809E99C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809E9A0 +sub_0809E9A0: @ 0x0809E9A0 + push {r4, r5, r6, lr} + ldr r5, _0809E9B0 @ =gLinkEntity + ldrb r2, [r5, #0xc] + cmp r2, #6 + beq _0809E9B4 + movs r0, #0 + b _0809E9F0 + .align 2, 0 +_0809E9B0: .4byte gLinkEntity +_0809E9B4: + ldrb r0, [r5, #0x14] + ands r2, r0 + lsls r2, r2, #1 + ldr r0, _0809E9F4 @ =gUnk_080B4468 + adds r2, r2, r0 + movs r1, #0x2e + ldrsh r0, [r5, r1] + movs r3, #0 + ldrsh r1, [r2, r3] + adds r0, r0, r1 + ldr r4, _0809E9F8 @ =gUnk_03000BF0 + ldrh r1, [r4, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r6, #0x32 + ldrsh r1, [r5, r6] + movs r5, #2 + ldrsh r2, [r2, r5] + adds r1, r1, r2 + ldrh r2, [r4, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + movs r1, #1 + bl sub_080002C8 +_0809E9F0: + pop {r4, r5, r6, pc} + .align 2, 0 +_0809E9F4: .4byte gUnk_080B4468 +_0809E9F8: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809E9FC +sub_0809E9FC: @ 0x0809E9FC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0809EA18 @ =gUnk_081243B4 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_0809EB30 + pop {r4, pc} + .align 2, 0 +_0809EA18: .4byte gUnk_081243B4 + + thumb_func_start sub_0809EA1C +sub_0809EA1C: @ 0x0809EA1C + push {lr} + ldr r2, _0809EA30 @ =gUnk_081243BC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809EA30: .4byte gUnk_081243BC + + thumb_func_start sub_0809EA34 +sub_0809EA34: @ 0x0809EA34 + push {r4, lr} + adds r4, r0, #0 + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + strb r2, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + subs r1, #1 + movs r0, #0x28 + strb r0, [r1] + subs r1, #4 + movs r0, #0xa + strb r0, [r1] + ldr r0, _0809EA7C @ =gUnk_080FD150 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_0809EAD8 + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + bl sub_0809EABC + pop {r4, pc} + .align 2, 0 +_0809EA7C: .4byte gUnk_080FD150 + + thumb_func_start sub_0809EA80 +sub_0809EA80: @ 0x0809EA80 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809EAB4 + adds r4, r5, #0 + adds r4, #0x86 + ldrh r0, [r4] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809EAA6 + ldrh r0, [r4] + bl sub_0807CD48 + b _0809EAAC +_0809EAA6: + ldrh r0, [r4] + bl sub_0807CCC8 +_0809EAAC: + movs r0, #0x88 + lsls r0, r0, #1 + bl sub_08004488 +_0809EAB4: + adds r0, r5, #0 + bl sub_0809EABC + pop {r4, r5, pc} + + thumb_func_start sub_0809EABC +sub_0809EABC: @ 0x0809EABC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + ldrb r0, [r4, #0x1e] + cmp r0, r1 + beq _0809EAD6 + strb r1, [r4, #0x1e] +_0809EAD6: + pop {r4, pc} + + thumb_func_start sub_0809EAD8 +sub_0809EAD8: @ 0x0809EAD8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + cmp r0, #0 + beq _0809EAF8 + bl sub_0804B128 + str r0, [r5, #0x54] + adds r1, r5, #0 + adds r1, #0x54 + adds r2, r5, #0 + adds r2, #0x74 + adds r0, r5, #0 + bl sub_080A2CC0 + b _0809EB24 +_0809EAF8: + ldr r0, _0809EB28 @ =0x00004050 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _0809EB2C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E +_0809EB24: + pop {r4, r5, r6, pc} + .align 2, 0 +_0809EB28: .4byte 0x00004050 +_0809EB2C: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809EB30 +sub_0809EB30: @ 0x0809EB30 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _0809EB64 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _0809EB4A + adds r0, r4, #0 + bl sub_0806F69C +_0809EB4A: + adds r2, r4, #0 + adds r2, #0x74 + ldrh r0, [r2] + subs r0, #1 + strh r0, [r2] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809EB64 + adds r1, r4, #0 + adds r1, #0x54 + adds r0, r4, #0 + bl sub_080A2CC0 +_0809EB64: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809EB68 +sub_0809EB68: @ 0x0809EB68 + push {lr} + ldr r2, _0809EB7C @ =gUnk_081243C4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809EB7C: .4byte gUnk_081243C4 + + thumb_func_start sub_0809EB80 +sub_0809EB80: @ 0x0809EB80 + push {r4, r5, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r5, #3 + strb r5, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + subs r1, #1 + movs r0, #0x28 + strb r0, [r1] + subs r1, #4 + movs r0, #0xa + strb r0, [r1] + ldr r0, _0809EBD4 @ =gUnk_080FD150 + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_0809EAD8 + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + adds r0, #0x84 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809EBD2 + strb r5, [r4, #0xc] + movs r0, #2 + strb r0, [r4, #0x1e] +_0809EBD2: + pop {r4, r5, pc} + .align 2, 0 +_0809EBD4: .4byte gUnk_080FD150 + + thumb_func_start sub_0809EBD8 +sub_0809EBD8: @ 0x0809EBD8 + push {lr} + adds r2, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809EC04 + movs r1, #2 + strb r1, [r2, #0xc] + movs r0, #0x10 + strb r0, [r2, #0xe] + strb r1, [r2, #0x1e] + adds r0, r2, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + movs r0, #0x88 + lsls r0, r0, #1 + bl sub_08004488 +_0809EC04: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809EC08 +sub_0809EC08: @ 0x0809EC08 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x84 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809EC1E + movs r0, #3 + strb r0, [r4, #0xc] + b _0809EC44 +_0809EC1E: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809EC44 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #3 + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CD48 + movs r0, #0x88 + lsls r0, r0, #1 + bl sub_08004488 +_0809EC44: + pop {r4, pc} + .align 2, 0 + + thumb_func_start nullsub_126 +nullsub_126: @ 0x0809EC48 + bx lr + .align 2, 0 + + thumb_func_start sub_0809EC4C +sub_0809EC4C: @ 0x0809EC4C + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldrb r3, [r6, #0xc] + cmp r3, #0 + bne _0809ED14 + movs r4, #1 + strb r4, [r6, #0xc] + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + ldrb r0, [r6, #0xa] + cmp r0, #0 + bne _0809ED04 + ldrb r0, [r6, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r6, #0x10] + strb r4, [r6, #0x1e] + adds r5, r6, #0 + adds r5, #0x38 + strb r4, [r5] + adds r1, r6, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + subs r1, #1 + movs r0, #0x7a + strb r0, [r1] + adds r0, r6, #0 + adds r0, #0x3b + strb r4, [r0] + ldr r0, _0809ECF4 @ =gUnk_080FD168 + str r0, [r6, #0x48] + movs r0, #0x2e + ldrsh r4, [r6, r0] + ldr r1, _0809ECF8 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r4, r4, r0 + asrs r4, r4, #4 + movs r2, #0x3f + ands r4, r2 + movs r3, #0x32 + ldrsh r0, [r6, r3] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r4, r0 + ldr r0, _0809ECFC @ =0x00004066 + subs r1, r4, #1 + ldrb r2, [r5] + bl sub_0800015E + ldr r0, _0809ED00 @ =0x00004065 + ldrb r2, [r5] + adds r1, r4, #0 + bl sub_0800015E + adds r0, r6, #0 + bl sub_08016A04 + movs r0, #0x9e + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _0809ED14 + str r1, [r6, #0x54] + adds r0, r6, #0 + bl sub_0806FA24 + b _0809ED14 + .align 2, 0 +_0809ECF4: .4byte gUnk_080FD168 +_0809ECF8: .4byte gUnk_03000BF0 +_0809ECFC: .4byte 0x00004066 +_0809ED00: .4byte 0x00004065 +_0809ED04: + strb r3, [r6, #0x1e] + adds r1, r6, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r6, #0 + bl sub_08016A04 +_0809ED14: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0809ED18 +sub_0809ED18: @ 0x0809ED18 + push {lr} + ldr r2, _0809ED2C @ =gUnk_081243D4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809ED2C: .4byte gUnk_081243D4 + + thumb_func_start sub_0809ED30 +sub_0809ED30: @ 0x0809ED30 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + movs r1, #2 + eors r0, r1 + lsls r0, r0, #3 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_0809EE34 + adds r0, r4, #0 + bl sub_0809EFB0 + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, pc} + + thumb_func_start sub_0809ED54 +sub_0809ED54: @ 0x0809ED54 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x84 + ldrh r0, [r1] + cmp r0, #0 + beq _0809ED6A + bl sub_0807CBE4 + cmp r0, #0 + beq _0809ED86 +_0809ED6A: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0809ED80 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809ED86 +_0809ED80: + adds r0, r4, #0 + bl sub_0809EE08 +_0809ED86: + pop {r4, pc} + + thumb_func_start sub_0809ED88 +sub_0809ED88: @ 0x0809ED88 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809F08C + adds r0, r4, #0 + bl sub_0809EE44 + adds r0, r4, #0 + adds r0, #0x86 + ldrh r2, [r0] + cmp r2, #0 + beq _0809EDC6 + adds r1, r4, #0 + adds r1, #0x84 + ldrh r0, [r1] + cmp r0, r2 + bne _0809EDB4 + bl sub_0807CBE4 + cmp r0, #0 + bne _0809EDE2 + b _0809EDBE +_0809EDB4: + ldrh r0, [r1] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809EDE2 +_0809EDBE: + adds r0, r4, #0 + bl sub_0809EE24 + b _0809EDE2 +_0809EDC6: + ldrb r0, [r4, #0xb] + cmp r0, #1 + bne _0809EDE2 + adds r1, r4, #0 + adds r1, #0x74 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _0809EDE2 + adds r0, r4, #0 + bl sub_0809EE24 +_0809EDE2: + pop {r4, pc} + + thumb_func_start sub_0809EDE4 +sub_0809EDE4: @ 0x0809EDE4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0809F08C + adds r0, r4, #0 + bl sub_0809EE44 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809EE06 + adds r0, r4, #0 + bl sub_0809EE34 +_0809EE06: + pop {r4, pc} + + thumb_func_start sub_0809EE08 +sub_0809EE08: @ 0x0809EE08 + push {lr} + movs r1, #2 + strb r1, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x7f + ldrb r1, [r1] + lsls r1, r1, #2 + adds r2, r0, #0 + adds r2, #0x74 + strh r1, [r2] + ldrb r1, [r0, #0xa] + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0809EE24 +sub_0809EE24: @ 0x0809EE24 + push {lr} + movs r1, #3 + strb r1, [r0, #0xc] + ldrb r1, [r0, #0xa] + adds r1, #4 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_0809EE34 +sub_0809EE34: @ 0x0809EE34 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r1, [r0, #0xe] + lsls r1, r1, #2 + adds r0, #0x74 + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_0809EE44 +sub_0809EE44: @ 0x0809EE44 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #7 + ands r1, r0 + adds r0, r5, #0 + adds r0, #0x7e + ldrb r0, [r0] + lsls r0, r1 + strh r0, [r5, #0x24] + cmp r1, #0 + bne _0809EE60 + b _0809EF74 +_0809EE60: + ldr r4, _0809EEA4 @ =gLinkEntity + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809EF78 + cmp r0, #0 + beq _0809EE80 + bl sub_08079F8C + cmp r0, #0 + beq _0809EE80 + movs r1, #0x24 + ldrsh r0, [r5, r1] + ldrb r1, [r5, #0x15] + bl sub_08079E58 +_0809EE80: + ldr r6, _0809EEA8 @ =gUnk_03003D80 + ldr r4, [r6, #4] + cmp r6, r4 + beq _0809EF74 +_0809EE88: + ldrb r0, [r4, #8] + cmp r0, #8 + bne _0809EF6E + movs r3, #0 + ldrb r0, [r4, #9] + subs r0, #2 + cmp r0, #0x17 + bhi _0809EF52 + lsls r0, r0, #2 + ldr r1, _0809EEAC @ =_0809EEB0 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809EEA4: .4byte gLinkEntity +_0809EEA8: .4byte gUnk_03003D80 +_0809EEAC: .4byte _0809EEB0 +_0809EEB0: @ jump table + .4byte _0809EF1E @ case 0 + .4byte _0809EF26 @ case 1 + .4byte _0809EF48 @ case 2 + .4byte _0809EF52 @ case 3 + .4byte _0809EF52 @ case 4 + .4byte _0809EF52 @ case 5 + .4byte _0809EF52 @ case 6 + .4byte _0809EF52 @ case 7 + .4byte _0809EF52 @ case 8 + .4byte _0809EF52 @ case 9 + .4byte _0809EF52 @ case 10 + .4byte _0809EF52 @ case 11 + .4byte _0809EF52 @ case 12 + .4byte _0809EF52 @ case 13 + .4byte _0809EF52 @ case 14 + .4byte _0809EF50 @ case 15 + .4byte _0809EF52 @ case 16 + .4byte _0809EF10 @ case 17 + .4byte _0809EF52 @ case 18 + .4byte _0809EF52 @ case 19 + .4byte _0809EF52 @ case 20 + .4byte _0809EF52 @ case 21 + .4byte _0809EF52 @ case 22 + .4byte _0809EF50 @ case 23 +_0809EF10: + ldrb r0, [r4, #0xc] + cmp r0, #2 + bne _0809EF56 + ldrb r0, [r4, #0xd] + cmp r0, #1 + bls _0809EF52 + b _0809EF56 +_0809EF1E: + ldrb r0, [r4, #0xc] + cmp r0, #2 + beq _0809EF52 + b _0809EF56 +_0809EF26: + ldr r2, _0809EF44 @ =gLinkEntity + movs r7, #0x2e + ldrsh r1, [r4, r7] + movs r7, #0x2e + ldrsh r0, [r2, r7] + cmp r1, r0 + bne _0809EF56 + movs r0, #0x32 + ldrsh r1, [r4, r0] + movs r7, #0x32 + ldrsh r0, [r2, r7] + cmp r1, r0 + beq _0809EF52 + b _0809EF56 + .align 2, 0 +_0809EF44: .4byte gLinkEntity +_0809EF48: + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _0809EF52 + b _0809EF56 +_0809EF50: + movs r3, #1 +_0809EF52: + cmp r3, #0 + beq _0809EF6E +_0809EF56: + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0809EF78 + cmp r0, #0 + beq _0809EF6E + movs r0, #0x24 + ldrsh r1, [r5, r0] + ldrb r2, [r5, #0x15] + adds r0, r4, #0 + bl sub_080044AE +_0809EF6E: + ldr r4, [r4, #4] + cmp r6, r4 + bne _0809EE88 +_0809EF74: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_0809EF78 +sub_0809EF78: @ 0x0809EF78 + push {r4, r5, lr} + adds r3, r0, #0 + adds r4, r1, #0 + movs r5, #0 + adds r0, #0x70 + ldrh r2, [r0] + movs r1, #0x2e + ldrsh r0, [r4, r1] + adds r1, r3, #0 + adds r1, #0x6c + ldrh r1, [r1] + subs r0, r0, r1 + cmp r2, r0 + blo _0809EFAC + adds r0, r3, #0 + adds r0, #0x72 + ldrh r2, [r0] + movs r1, #0x32 + ldrsh r0, [r4, r1] + adds r1, r3, #0 + adds r1, #0x6e + ldrh r1, [r1] + subs r0, r0, r1 + cmp r2, r0 + blo _0809EFAC + movs r5, #1 +_0809EFAC: + adds r0, r5, #0 + pop {r4, r5, pc} + + thumb_func_start sub_0809EFB0 +sub_0809EFB0: @ 0x0809EFB0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r4, r0, #0 + ldr r0, _0809F010 @ =gUnk_081243E4 + ldrb r1, [r4, #0xa] + lsls r1, r1, #1 + adds r2, r1, r0 + ldrb r2, [r2] + lsls r2, r2, #0x18 + asrs r2, r2, #0x18 + mov sb, r2 + adds r1, #1 + adds r1, r1, r0 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + mov r8, r1 + movs r0, #0x2e + ldrsh r6, [r4, r0] + movs r0, #0x32 + ldrsh r5, [r4, r0] + ldr r0, _0809F014 @ =gUnk_02027EB4 + mov sl, r0 + movs r7, #0 +_0809EFE6: + adds r7, #1 + add r6, sb + add r5, r8 + mov r0, sl + adds r1, r6, #0 + adds r2, r5, #0 + movs r3, #9 + bl sub_080AE4CC + cmp r0, #0 + beq _0809EFE6 + subs r0, r7, #1 + lsls r7, r0, #4 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _0809F034 + cmp r0, #1 + bgt _0809F018 + cmp r0, #0 + beq _0809F022 + b _0809F082 + .align 2, 0 +_0809F010: .4byte gUnk_081243E4 +_0809F014: .4byte gUnk_02027EB4 +_0809F018: + cmp r0, #2 + beq _0809F03E + cmp r0, #3 + beq _0809F064 + b _0809F082 +_0809F022: + ldrh r0, [r4, #0x2e] + subs r0, #0x10 + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + ldrh r0, [r4, #0x32] + adds r0, #8 + adds r1, #2 + b _0809F054 +_0809F034: + adds r1, r7, #0 + adds r1, #8 + ldrh r0, [r4, #0x2e] + subs r0, r0, r1 + b _0809F068 +_0809F03E: + ldrh r0, [r4, #0x2e] + subs r0, #0x10 + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + adds r1, r7, #0 + adds r1, #8 + ldrh r0, [r4, #0x32] + subs r0, r0, r1 + adds r1, r4, #0 + adds r1, #0x6e +_0809F054: + strh r0, [r1] + adds r1, #2 + movs r0, #0x20 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x72 + strh r7, [r0] + b _0809F082 +_0809F064: + ldrh r0, [r4, #0x2e] + adds r0, #8 +_0809F068: + adds r1, r4, #0 + adds r1, #0x6c + strh r0, [r1] + ldrh r0, [r4, #0x32] + subs r0, #0x10 + adds r1, #2 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x70 + strh r7, [r0] + adds r1, #4 + movs r0, #0x20 + strh r0, [r1] +_0809F082: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_0809F08C +sub_0809F08C: @ 0x0809F08C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _0809F09A + subs r0, #1 + strb r0, [r4, #0xf] +_0809F09A: + adds r0, r4, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _0809F0C0 + movs r0, #0xdf + ands r0, r1 + strb r0, [r2] + movs r0, #0x14 + strb r0, [r4, #0xf] + adds r0, r4, #0 + bl sub_0809F0E4 + b _0809F0E0 +_0809F0C0: + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _0809F0E0 + ldrb r0, [r4, #0xf] + cmp r0, #0 + bne _0809F0E0 + movs r0, #0x14 + strb r0, [r4, #0xf] + ldrb r0, [r2] + movs r1, #0x10 + eors r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_0809F0E4 +_0809F0E0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809F0E4 +sub_0809F0E4: @ 0x0809F0E4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, _0809F124 @ =0x00000183 + bl sub_08004488 + ldrb r0, [r5, #0xa] + movs r1, #2 + eors r1, r0 + movs r0, #0xb2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809F120 + str r5, [r4, #0x50] + ldrb r0, [r5, #0xa] + lsls r0, r0, #1 + ldr r1, _0809F128 @ =gUnk_081243EC + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 +_0809F120: + pop {r4, r5, pc} + .align 2, 0 +_0809F124: .4byte 0x00000183 +_0809F128: .4byte gUnk_081243EC + + thumb_func_start sub_0809F12C +sub_0809F12C: @ 0x0809F12C + push {lr} + ldr r2, _0809F140 @ =gUnk_08124670 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809F140: .4byte gUnk_08124670 + + thumb_func_start sub_0809F144 +sub_0809F144: @ 0x0809F144 + push {r4, r5, r6, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _0809F188 @ =gUnk_080FD178 + str r0, [r4, #0x48] + ldr r0, _0809F18C @ =0x00004022 + movs r2, #0x2e + ldrsh r1, [r4, r2] + ldr r3, _0809F190 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r5, #0x3f + ands r1, r5 + movs r6, #0x32 + ldrsh r2, [r4, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r5 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r4, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 + pop {r4, r5, r6, pc} + .align 2, 0 +_0809F188: .4byte gUnk_080FD178 +_0809F18C: .4byte 0x00004022 +_0809F190: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809F194 +sub_0809F194: @ 0x0809F194 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x50] + ldrb r0, [r0, #0xf] + cmp r0, #1 + bne _0809F1AE + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0xa] + adds r1, #4 + adds r0, r2, #0 + bl sub_08004260 +_0809F1AE: + pop {pc} + + thumb_func_start sub_0809F1B0 +sub_0809F1B0: @ 0x0809F1B0 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r2, r4, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r3, #1 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _0809F20C + movs r0, #0xfe + ands r0, r1 + strb r0, [r2] + movs r0, #0x1b + bl sub_080A7EE0 + adds r5, r0, #0 + cmp r5, #0 + beq _0809F21E + ldrb r0, [r4, #0xa] + strb r0, [r5, #0xa] + ldr r0, [r4, #0x50] + str r0, [r5, #0x50] + ldrb r0, [r4, #0xa] + lsls r0, r0, #1 + ldr r1, _0809F208 @ =gUnk_08124684 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + lsls r2, r2, #0x10 + movs r3, #1 + ldrsb r3, [r0, r3] + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 + movs r0, #0xec + bl sub_08004488 + b _0809F21E + .align 2, 0 +_0809F208: .4byte gUnk_08124684 +_0809F20C: + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F21E + strb r3, [r4, #0xc] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 +_0809F21E: + pop {r4, r5, pc} + + thumb_func_start sub_0809F220 +sub_0809F220: @ 0x0809F220 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F242 + movs r0, #4 + strb r0, [r2, #0xc] + movs r0, #0xf + strb r0, [r2, #0xe] + ldrb r1, [r2, #0xa] + adds r0, r2, #0 + bl sub_08004260 + b _0809F252 +_0809F242: + ldr r0, [r2, #0x50] + adds r0, #0x36 + movs r1, #1 + ldrb r2, [r2, #0xb] + lsls r1, r2 + ldrb r2, [r0] + orrs r1, r2 + strb r1, [r0] +_0809F252: + pop {pc} + + thumb_func_start sub_0809F254 +sub_0809F254: @ 0x0809F254 + push {r4, r5, lr} + adds r3, r0, #0 + ldrb r1, [r3, #0x18] + lsls r0, r1, #0x1e + lsrs r0, r0, #0x1e + movs r5, #1 + eors r0, r5 + movs r4, #4 + rsbs r4, r4, #0 + adds r2, r4, #0 + ands r2, r1 + orrs r2, r0 + strb r2, [r3, #0x18] + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F284 + movs r0, #1 + strb r5, [r3, #0xc] + ands r2, r4 + orrs r2, r0 + strb r2, [r3, #0x18] +_0809F284: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809F288 +sub_0809F288: @ 0x0809F288 + push {lr} + ldr r2, _0809F29C @ =gUnk_081246EC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809F29C: .4byte gUnk_081246EC + + thumb_func_start sub_0809F2A0 +sub_0809F2A0: @ 0x0809F2A0 + push {r4, r5, r6, lr} + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r1, [r0, #0xb] + strb r1, [r0, #0x1e] + ldrb r1, [r0, #0x19] + movs r2, #0xc0 + orrs r1, r2 + strb r1, [r0, #0x19] + adds r3, r0, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r2, #7 + orrs r1, r2 + strb r1, [r3] + ldr r5, _0809F2EC @ =0x00004069 + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r3, _0809F2F0 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r0, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_0809F2EC: .4byte 0x00004069 +_0809F2F0: .4byte gUnk_03000BF0 + + thumb_func_start nullsub_537 +nullsub_537: @ 0x0809F2F4 + bx lr + .align 2, 0 + + thumb_func_start sub_0809F2F8 +sub_0809F2F8: @ 0x0809F2F8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _0809F314 @ =gUnk_081246F4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_0809F314: .4byte gUnk_081246F4 + + thumb_func_start sub_0809F318 +sub_0809F318: @ 0x0809F318 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_08004260 + bl sub_08000E50 + movs r1, #0x10 + ands r1, r0 + cmp r1, #0 + beq _0809F336 + ldrb r0, [r4, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x18] +_0809F336: + movs r0, #0x28 + strh r0, [r4, #0x2e] + movs r0, #0x48 + strh r0, [r4, #0x32] + ldr r0, _0809F36C @ =0x0000FFB0 + strh r0, [r4, #0x36] + ldrb r1, [r4, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x1b] + movs r0, #1 + strb r0, [r4, #0xc] + ldr r1, _0809F370 @ =gUnk_08124704 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_0801D2B4 + adds r0, r4, #0 + movs r1, #7 + bl sub_0805E3A0 + pop {r4, pc} + .align 2, 0 +_0809F36C: .4byte 0x0000FFB0 +_0809F370: .4byte gUnk_08124704 + + thumb_func_start sub_0809F374 +sub_0809F374: @ 0x0809F374 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #1 + bhi _0809F3AE + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #1 + bhi _0809F3C0 + movs r0, #0 + str r0, [r4, #0x34] + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_080A3268 + b _0809F3E6 +_0809F3AE: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + beq _0809F3C8 + cmp r0, #1 + beq _0809F3D4 +_0809F3C0: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + b _0809F3E6 +_0809F3C8: + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_0809F3D4: + movs r0, #0 + strb r0, [r4, #0xe] + adds r0, r4, #0 + bl sub_0809F448 + movs r0, #0xc3 + lsls r0, r0, #1 + bl sub_080A3268 +_0809F3E6: + pop {r4, pc} + + thumb_func_start sub_0809F3E8 +sub_0809F3E8: @ 0x0809F3E8 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809F404 + movs r0, #3 + strb r0, [r2, #0xc] + adds r0, r2, #0 + movs r1, #2 + bl sub_08004260 +_0809F404: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809F408 +sub_0809F408: @ 0x0809F408 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x5a + ldrb r0, [r1] + cmp r0, #9 + beq _0809F41C + cmp r0, #0x80 + beq _0809F438 + b _0809F442 +_0809F41C: + movs r0, #0 + strb r0, [r1] + adds r0, r2, #0 + movs r1, #0x43 + movs r2, #0 + bl CreateFX + ldr r1, _0809F434 @ =gUnk_02000080 + movs r0, #1 + strb r0, [r1] + b _0809F442 + .align 2, 0 +_0809F434: .4byte gUnk_02000080 +_0809F438: + ldr r1, _0809F444 @ =gUnk_02000080 + movs r0, #1 + strb r0, [r1, #4] + bl sub_0805E780 +_0809F442: + pop {pc} + .align 2, 0 +_0809F444: .4byte gUnk_02000080 + + thumb_func_start sub_0809F448 +sub_0809F448: @ 0x0809F448 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + ldrb r0, [r6, #0xf] + lsls r2, r0, #1 + ldr r1, _0809F474 @ =gUnk_08124708 + adds r7, r2, r1 + adds r0, #1 + strb r0, [r6, #0xf] + ldr r1, [r6, #0x2c] + movs r0, #0xa0 + lsls r0, r0, #0xe + subs r4, r0, r1 + ldrb r0, [r7] + cmp r0, #0 + beq _0809F478 + cmp r0, #1 + beq _0809F492 + b _0809F49C + .align 2, 0 +_0809F474: .4byte gUnk_08124708 +_0809F478: + movs r1, #0xc0 + lsls r1, r1, #0xd + adds r0, r5, #0 + bl __modsi3 + adds r4, r0, #0 + movs r0, #0x80 + lsls r0, r0, #0x11 + ands r0, r5 + cmp r0, #0 + beq _0809F49C + rsbs r4, r4, #0 + b _0809F49C +_0809F492: + ldr r0, _0809F4BC @ =0xFFF80000 + adds r1, r4, r0 + ldr r0, _0809F4C0 @ =0x000FFFFF + ands r0, r5 + adds r4, r1, r0 +_0809F49C: + adds r0, r4, #0 + cmp r4, #0 + bge _0809F4A4 + rsbs r0, r4, #0 +_0809F4A4: + ldrb r1, [r7, #1] + lsls r1, r1, #8 + bl __divsi3 + strh r0, [r6, #0x24] + adds r0, r4, #0 + movs r1, #0 + bl sub_080045DA + lsrs r0, r0, #3 + strb r0, [r6, #0x15] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809F4BC: .4byte 0xFFF80000 +_0809F4C0: .4byte 0x000FFFFF + + thumb_func_start sub_0809F4C4 +sub_0809F4C4: @ 0x0809F4C4 + push {lr} + ldr r2, _0809F4D8 @ =gUnk_08124798 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809F4D8: .4byte gUnk_08124798 + + thumb_func_start sub_0809F4DC +sub_0809F4DC: @ 0x0809F4DC + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _0809F4FC + ldr r0, _0809F4F8 @ =gUnk_081247A0 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _0809F50C + .align 2, 0 +_0809F4F8: .4byte gUnk_081247A0 +_0809F4FC: + ldr r0, _0809F510 @ =gUnk_081247AC + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_0809F50C: + pop {pc} + .align 2, 0 +_0809F510: .4byte gUnk_081247AC + + thumb_func_start sub_0809F514 +sub_0809F514: @ 0x0809F514 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x78 + strb r1, [r0, #0xe] + ldrb r2, [r0, #0x18] + subs r1, #0x7c + ands r1, r2 + strb r1, [r0, #0x18] + adds r2, r0, #0 + adds r2, #0x68 + movs r1, #0xc + strb r1, [r2] + ldr r1, _0809F540 @ =gUnk_03000BF0 + str r0, [r1, #0x30] + ldr r2, _0809F544 @ =gUnk_02034490 + movs r1, #0xff + strb r1, [r2] + bl sub_0809F7BC + pop {pc} + .align 2, 0 +_0809F540: .4byte gUnk_03000BF0 +_0809F544: .4byte gUnk_02034490 + + thumb_func_start sub_0809F548 +sub_0809F548: @ 0x0809F548 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F590 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x5a + strb r0, [r4, #0xe] + adds r0, #0xc3 + bl sub_080A3268 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _0809F58C @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + bl sub_0809F814 + b _0809F5A8 + .align 2, 0 +_0809F58C: .4byte gUnk_03000BF0 +_0809F590: + ldr r0, _0809F5AC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0809F5A2 + adds r0, r4, #0 + bl sub_0809F7BC +_0809F5A2: + adds r0, r4, #0 + bl sub_0809F7F4 +_0809F5A8: + pop {r4, r5, pc} + .align 2, 0 +_0809F5AC: .4byte gUnk_030010A0 + + thumb_func_start sub_0809F5B0 +sub_0809F5B0: @ 0x0809F5B0 + push {lr} + ldrb r1, [r0, #0xe] + subs r1, #1 + strb r1, [r0, #0xe] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _0809F5D4 + movs r0, #0x73 + bl sub_080A3268 + movs r0, #0x24 + bl sub_0807CD04 + ldr r0, _0809F5D8 @ =gUnk_080DD750 + bl sub_0804ADDC + bl sub_0805E780 +_0809F5D4: + pop {pc} + .align 2, 0 +_0809F5D8: .4byte gUnk_080DD750 + + thumb_func_start sub_0809F5DC +sub_0809F5DC: @ 0x0809F5DC + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + strb r1, [r0, #0x18] + adds r0, #0x68 + movs r1, #0xc + strb r1, [r0] + bx lr + + thumb_func_start sub_0809F5F0 +sub_0809F5F0: @ 0x0809F5F0 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + bl sub_0807CC3C + cmp r0, #0 + beq _0809F614 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + movs r0, #3 + bl sub_08078A90 + bl sub_08078B48 + ldr r0, _0809F618 @ =gUnk_03000BF0 + str r4, [r0, #0x30] +_0809F614: + pop {r4, pc} + .align 2, 0 +_0809F618: .4byte gUnk_03000BF0 + + thumb_func_start sub_0809F61C +sub_0809F61C: @ 0x0809F61C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _0809F678 @ =gUnk_03000BF0 + ldrb r1, [r5, #0xf] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0809F694 + ldrb r0, [r4, #0xe] + cmp r0, #0x1e + bne _0809F638 + ldrb r0, [r4, #0xb] + bl sub_0807CCB4 +_0809F638: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F67C + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x78 + strb r0, [r4, #0xe] + adds r0, #0xa5 + bl sub_080A3268 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldrh r1, [r5, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r2, #0x32 + ldrsh r1, [r4, r2] + ldrh r2, [r5, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + bl sub_0809F814 + b _0809F694 + .align 2, 0 +_0809F678: .4byte gUnk_03000BF0 +_0809F67C: + ldr r0, _0809F698 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _0809F68E + adds r0, r4, #0 + bl sub_0809F7BC +_0809F68E: + adds r0, r4, #0 + bl sub_0809F7F4 +_0809F694: + pop {r4, r5, pc} + .align 2, 0 +_0809F698: .4byte gUnk_030010A0 + + thumb_func_start sub_0809F69C +sub_0809F69C: @ 0x0809F69C + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F6C0 + movs r0, #0x1e + strb r0, [r1, #0xe] + movs r0, #4 + strb r0, [r1, #0xc] + ldr r1, _0809F6C4 @ =gUnk_03000BF0 + ldr r0, _0809F6C8 @ =gLinkEntity + str r0, [r1, #0x30] + movs r0, #0x73 + bl sub_080A3268 +_0809F6C0: + pop {pc} + .align 2, 0 +_0809F6C4: .4byte gUnk_03000BF0 +_0809F6C8: .4byte gLinkEntity + + thumb_func_start sub_0809F6CC +sub_0809F6CC: @ 0x0809F6CC + push {lr} + adds r2, r0, #0 + ldr r0, _0809F6F8 @ =gUnk_03000BF0 + ldrb r1, [r0, #0xf] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + bne _0809F6F4 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F6F4 + ldr r0, _0809F6FC @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + bl sub_0805E780 +_0809F6F4: + pop {pc} + .align 2, 0 +_0809F6F8: .4byte gUnk_03000BF0 +_0809F6FC: .4byte gUnk_03003F80 + + thumb_func_start sub_0809F700 +sub_0809F700: @ 0x0809F700 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809F722 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + movs r1, #0x1e + ands r0, r1 + adds r0, #8 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0xc + orrs r0, r1 + strb r0, [r4, #0x10] +_0809F722: + ldr r0, _0809F768 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + ands r0, r1 + cmp r0, #0 + bne _0809F750 + bl sub_08000E50 + ldr r3, _0809F76C @ =gUnk_081247C0 + movs r2, #7 + adds r1, r0, #0 + ands r1, r2 + adds r1, r1, r3 + ldrb r1, [r1] + movs r5, #0x62 + strb r1, [r5, r4] + lsrs r0, r0, #4 + ands r0, r2 + adds r0, r0, r3 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x63 + strb r0, [r1] +_0809F750: + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F766 + bl sub_0805E780 +_0809F766: + pop {r4, r5, pc} + .align 2, 0 +_0809F768: .4byte gUnk_030010A0 +_0809F76C: .4byte gUnk_081247C0 + + thumb_func_start sub_0809F770 +sub_0809F770: @ 0x0809F770 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xa3 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _0809F7B6 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA30 + bl sub_08000E50 + ldrh r2, [r4, #0x2e] + subs r2, #0x10 + movs r3, #0x1f + adds r1, r0, #0 + ands r1, r3 + adds r2, r2, r1 + strh r2, [r4, #0x2e] + ldrh r2, [r4, #0x32] + subs r2, #0x10 + asrs r1, r0, #8 + ands r1, r3 + adds r2, r2, r1 + strh r2, [r4, #0x32] + asrs r0, r0, #0x10 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0x1e] + movs r0, #0xff + strb r0, [r4, #0x15] +_0809F7B6: + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_0809F7BC +sub_0809F7BC: @ 0x0809F7BC + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + movs r5, #0 + ldr r7, _0809F7F0 @ =gUnk_081247C8 +_0809F7C4: + adds r0, r6, #0 + bl sub_0809F770 + adds r4, r0, #0 + cmp r4, #0 + beq _0809F7E8 + bl sub_08000E50 + movs r1, #3 + ands r1, r0 + lsls r1, r1, #1 + adds r1, r1, r7 + ldrh r1, [r1] + strh r1, [r4, #0x24] + lsrs r0, r0, #8 + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_0809F7E8: + adds r5, #1 + cmp r5, #7 + bls _0809F7C4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809F7F0: .4byte gUnk_081247C8 + + thumb_func_start sub_0809F7F4 +sub_0809F7F4: @ 0x0809F7F4 + push {lr} + adds r1, r0, #0 + adds r1, #0x68 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F812 + movs r0, #0xc + strb r0, [r1] + movs r0, #0xc2 + lsls r0, r0, #1 + bl sub_080A3268 +_0809F812: + pop {pc} + + thumb_func_start sub_0809F814 +sub_0809F814: @ 0x0809F814 + push {lr} + adds r1, r0, #0 + ldr r0, _0809F824 @ =gUnk_081247D0 + movs r2, #1 + bl sub_0807BB68 + pop {pc} + .align 2, 0 +_0809F824: .4byte gUnk_081247D0 + + thumb_func_start sub_0809F828 +sub_0809F828: @ 0x0809F828 + push {lr} + ldr r2, _0809F83C @ =gUnk_081247F8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809F83C: .4byte gUnk_081247F8 + + thumb_func_start sub_0809F840 +sub_0809F840: @ 0x0809F840 + push {lr} + adds r2, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r2, #0xc] + strb r1, [r2, #0x1e] + movs r0, #0x20 + strb r0, [r2, #0xe] + strb r1, [r2, #0xf] + ldrb r0, [r2, #0xb] + cmp r0, #0 + beq _0809F860 + ldrb r0, [r2, #0x18] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r2, #0x18] +_0809F860: + adds r0, r2, #0 + bl sub_08016A04 + pop {pc} + + thumb_func_start sub_0809F868 +sub_0809F868: @ 0x0809F868 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xe] + subs r0, #1 + strb r0, [r1, #0xe] + movs r2, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809F8A2 + ldrb r0, [r1, #0xf] + cmp r0, #0 + bne _0809F890 + ldrb r0, [r1, #0x1e] + adds r0, #1 + strb r0, [r1, #0x1e] + ands r0, r2 + cmp r0, #3 + bne _0809F89E + movs r0, #1 + b _0809F89C +_0809F890: + ldrb r0, [r1, #0x1e] + subs r0, #1 + strb r0, [r1, #0x1e] + ands r0, r2 + cmp r0, #0 + bne _0809F89E +_0809F89C: + strb r0, [r1, #0xf] +_0809F89E: + movs r0, #0x20 + strb r0, [r1, #0xe] +_0809F8A2: + pop {pc} + + thumb_func_start sub_0809F8A4 +sub_0809F8A4: @ 0x0809F8A4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + ldr r0, _0809F904 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x42 + bhi _0809F8FC + movs r5, #0 +_0809F8B6: + movs r0, #0x1d + bl sub_080A7EE0 + adds r4, r0, #0 + cmp r5, #0 + bne _0809F8C6 + mov r8, r4 + adds r7, r4, #0 +_0809F8C6: + strb r5, [r4, #0xa] + mov r0, r8 + str r0, [r4, #0x50] + str r7, [r4, #0x54] + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r1, r4, #0 + adds r1, #0x68 + adds r3, r5, #1 + movs r2, #7 +_0809F8DE: + ldrh r0, [r6, #0x2e] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r6, #0x32] + strh r0, [r1] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _0809F8DE + adds r7, r4, #0 + adds r5, r3, #0 + cmp r5, #4 + ble _0809F8B6 + bl sub_0805E780 +_0809F8FC: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_0809F904: .4byte gUnk_03003DBC + + thumb_func_start sub_0809F908 +sub_0809F908: @ 0x0809F908 + push {lr} + ldr r2, _0809F91C @ =gUnk_08124800 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809F91C: .4byte gUnk_08124800 + + thumb_func_start sub_0809F920 +sub_0809F920: @ 0x0809F920 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _0809F934 + bl sub_0805E780 +_0809F934: + movs r2, #1 + strb r2, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #7 + strb r0, [r1] + adds r1, #4 + movs r0, #0x48 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3f + strb r2, [r0] + subs r1, #5 + movs r0, #2 + strb r0, [r1] + ldr r0, _0809F960 @ =gUnk_080FD150 + str r0, [r4, #0x48] + pop {r4, pc} + .align 2, 0 +_0809F960: .4byte gUnk_080FD150 + + thumb_func_start sub_0809F964 +sub_0809F964: @ 0x0809F964 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0xa1 + bne _0809F9A8 + adds r0, r4, #0 + movs r1, #0x4e + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _0809F99A + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r3] + adds r1, r2, #0 + adds r1, #0x63 + movs r0, #0xfb + strb r0, [r1] +_0809F99A: + adds r0, r4, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + bl sub_0805E780 +_0809F9A8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809F9AC +sub_0809F9AC: @ 0x0809F9AC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _0809F9D2 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_0809F9D2: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809F9DC +sub_0809F9DC: @ 0x0809F9DC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809FA9A + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x1f + bhi _0809FA9A + lsls r0, r0, #2 + ldr r1, _0809FA00 @ =_0809FA04 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_0809FA00: .4byte _0809FA04 +_0809FA04: @ jump table + .4byte _0809FA84 @ case 0 + .4byte _0809FA84 @ case 1 + .4byte _0809FA9A @ case 2 + .4byte _0809FA9A @ case 3 + .4byte _0809FA84 @ case 4 + .4byte _0809FA84 @ case 5 + .4byte _0809FA84 @ case 6 + .4byte _0809FA9A @ case 7 + .4byte _0809FA84 @ case 8 + .4byte _0809FA84 @ case 9 + .4byte _0809FA84 @ case 10 + .4byte _0809FA84 @ case 11 + .4byte _0809FA84 @ case 12 + .4byte _0809FA9A @ case 13 + .4byte _0809FA9A @ case 14 + .4byte _0809FA9A @ case 15 + .4byte _0809FA9A @ case 16 + .4byte _0809FA9A @ case 17 + .4byte _0809FA9A @ case 18 + .4byte _0809FA9A @ case 19 + .4byte _0809FA9A @ case 20 + .4byte _0809FA9A @ case 21 + .4byte _0809FA9A @ case 22 + .4byte _0809FA9A @ case 23 + .4byte _0809FA9A @ case 24 + .4byte _0809FA9A @ case 25 + .4byte _0809FA9A @ case 26 + .4byte _0809FA9A @ case 27 + .4byte _0809FA9A @ case 28 + .4byte _0809FA9A @ case 29 + .4byte _0809FA84 @ case 30 + .4byte _0809FA84 @ case 31 +_0809FA84: + movs r0, #5 + strb r0, [r4, #0xc] + ldr r0, _0809FAB4 @ =gLinkEntity + str r0, [r4, #0x54] + ldrb r0, [r4, #0xa] + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 + bl sub_0805E780 +_0809FA9A: + ldr r0, _0809FAB8 @ =gUnk_08124824 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08080CB4 + pop {r4, pc} + .align 2, 0 +_0809FAB4: .4byte gLinkEntity +_0809FAB8: .4byte gUnk_08124824 + + thumb_func_start sub_0809FABC +sub_0809FABC: @ 0x0809FABC + push {lr} + adds r3, r0, #0 + movs r0, #1 + strb r0, [r3, #0xc] + ldrb r0, [r3, #0xb] + cmp r0, #0 + beq _0809FAD0 + cmp r0, #2 + beq _0809FADE + b _0809FAE6 +_0809FAD0: + movs r0, #0xf0 + lsls r0, r0, #9 + str r0, [r3, #0x20] + ldrh r0, [r3, #0x36] + adds r0, #8 + strh r0, [r3, #0x36] + b _0809FAE6 +_0809FADE: + adds r0, r3, #0 + bl sub_0809FECC + b _0809FB30 +_0809FAE6: + adds r1, r3, #0 + adds r1, #0x38 + movs r0, #3 + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x3c + movs r2, #0x17 + strb r2, [r0] + adds r1, #8 + movs r0, #0x48 + strb r0, [r1] + subs r1, #1 + movs r0, #7 + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x3b + strb r2, [r0] + ldr r0, _0809FB34 @ =gUnk_080FD1A8 + str r0, [r3, #0x48] + movs r0, #1 + strb r0, [r3, #0x1c] + ldrh r1, [r3, #0x2e] + adds r0, r3, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r3, #0x32] + adds r1, r3, #0 + adds r1, #0x76 + strh r0, [r1] + adds r0, r3, #0 + movs r1, #3 + bl sub_0805E3A0 + movs r0, #0x9b + lsls r0, r0, #1 + bl sub_08004488 +_0809FB30: + pop {pc} + .align 2, 0 +_0809FB34: .4byte gUnk_080FD1A8 + + thumb_func_start sub_0809FB38 +sub_0809FB38: @ 0x0809FB38 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x34] + ldr r1, _0809FB60 @ =0xFFFF2000 + adds r0, r0, r1 + str r0, [r2, #0x34] + adds r0, r2, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _0809FB74 + ldrb r0, [r2, #0xe] + cmp r0, #0 + beq _0809FB64 + adds r1, r0, #0 + lsls r0, r1, #4 + subs r0, r0, r1 + lsls r0, r0, #1 + b _0809FB66 + .align 2, 0 +_0809FB60: .4byte 0xFFFF2000 +_0809FB64: + movs r0, #0xf0 +_0809FB66: + strb r0, [r2, #0xe] + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #1 + strb r0, [r2, #0xf] + movs r0, #0x80 + strh r0, [r2, #0x24] +_0809FB74: + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809FB78 +sub_0809FB78: @ 0x0809FB78 + push {lr} + ldr r2, _0809FB8C @ =gUnk_08124840 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809FB8C: .4byte gUnk_08124840 + + thumb_func_start sub_0809FB90 +sub_0809FB90: @ 0x0809FB90 + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xd] + strb r1, [r0, #0x1d] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + bx lr + + thumb_func_start sub_0809FBA4 +sub_0809FBA4: @ 0x0809FBA4 + push {lr} + adds r2, r0, #0 + ldr r0, _0809FBC8 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _0809FBC2 + adds r0, r2, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x13 + beq _0809FBCC +_0809FBC2: + movs r0, #3 + strb r0, [r2, #0xc] + b _0809FBD2 + .align 2, 0 +_0809FBC8: .4byte gUnk_03003F80 +_0809FBCC: + adds r0, r2, #0 + bl sub_0806F4E8 +_0809FBD2: + pop {pc} + + thumb_func_start sub_0809FBD4 +sub_0809FBD4: @ 0x0809FBD4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, _0809FBFC @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #1 + bne _0809FBF4 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r5, #0x7f + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0x13 + beq _0809FC00 +_0809FBF4: + movs r0, #3 + strb r0, [r4, #0xc] + b _0809FC22 + .align 2, 0 +_0809FBFC: .4byte gUnk_03003F80 +_0809FC00: + adds r0, r4, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _0809FC22 + ldrb r1, [r4, #0x10] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #5 + strb r0, [r4, #0xc] + ldr r0, _0809FC24 @ =gLinkEntity + str r0, [r4, #0x54] + ldrb r0, [r4, #0xa] + movs r1, #0 + bl sub_08053FF0 +_0809FC22: + pop {r4, r5, pc} + .align 2, 0 +_0809FC24: .4byte gLinkEntity + + thumb_func_start sub_0809FC28 +sub_0809FC28: @ 0x0809FC28 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809FCAC + bl sub_08000E50 + adds r5, r0, #0 + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x20 + strb r0, [r4, #0xf] + ldr r2, _0809FC6C @ =gUnk_0812484C + lsrs r0, r5, #8 + movs r1, #1 + ands r0, r1 + adds r0, r0, r2 + ldrb r0, [r0] + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0809FE9C + cmp r0, #0 + beq _0809FC70 + movs r0, #0x1f + ands r5, r0 + strb r5, [r4, #0x15] + b _0809FC8A + .align 2, 0 +_0809FC6C: .4byte gUnk_0812484C +_0809FC70: + movs r1, #0x2e + ldrsh r0, [r4, r1] + movs r2, #0x32 + ldrsh r1, [r4, r2] + adds r2, r4, #0 + adds r2, #0x74 + ldrh r2, [r2] + adds r3, r4, #0 + adds r3, #0x76 + ldrh r3, [r3] + bl sub_080045D4 + strb r0, [r4, #0x15] +_0809FC8A: + ldrb r1, [r4, #0x15] + movs r0, #0xf + ands r0, r1 + cmp r0, #0 + beq _0809FCAC + movs r0, #0x10 + eors r1, r0 + lsrs r1, r1, #4 + movs r0, #1 + ands r1, r0 + lsls r1, r1, #6 + ldrb r2, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0809FCAC: + adds r0, r4, #0 + bl sub_080AEFB4 + bl sub_0805E40C + cmp r0, #0 + bne _0809FCF8 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _0809FCF8 + ldr r0, _0809FCFC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _0809FCE0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _0809FCE0 + adds r0, r4, #0 + movs r1, #0 + bl sub_08081404 +_0809FCE0: + ldrb r0, [r4, #0xe] + cmp r0, #0x3b + bhi _0809FCF8 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_0809FCF8: + pop {r4, r5, pc} + .align 2, 0 +_0809FCFC: .4byte gUnk_030010A0 + + thumb_func_start sub_0809FD00 +sub_0809FD00: @ 0x0809FD00 + push {r4, lr} + adds r4, r0, #0 + ldr r2, [r4, #0x54] + ldrh r1, [r2, #8] + ldr r0, _0809FD18 @ =0x00000B08 + cmp r1, r0 + beq _0809FD1C + adds r0, r4, #0 + movs r1, #0 + bl sub_08081404 + b _0809FD44 + .align 2, 0 +_0809FD18: .4byte 0x00000B08 +_0809FD1C: + adds r0, r2, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x36] + subs r0, #1 + strh r0, [r4, #0x36] + ldr r1, _0809FD48 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080177A0 + cmp r0, #0 + beq _0809FD44 + adds r0, r4, #0 + bl sub_0809FECC + ldrb r0, [r4, #0xa] + movs r1, #0 + bl sub_08053FF0 +_0809FD44: + pop {r4, pc} + .align 2, 0 +_0809FD48: .4byte gLinkEntity + + thumb_func_start sub_0809FD4C +sub_0809FD4C: @ 0x0809FD4C + push {lr} + adds r1, r0, #0 + movs r2, #6 + strb r2, [r1, #0xc] + movs r0, #0x80 + strb r0, [r1, #0xe] + strb r2, [r1, #0xf] + ldrb r2, [r1, #0x10] + movs r0, #0x7f + ands r0, r2 + strb r0, [r1, #0x10] + ldrb r2, [r1, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #1 + orrs r0, r2 + strb r0, [r1, #0x18] + adds r3, r1, #0 + adds r3, #0x29 + ldrb r2, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + movs r2, #0x10 + orrs r0, r2 + strb r0, [r3] + adds r2, r1, #0 + adds r2, #0x63 + movs r0, #0xfb + strb r0, [r2] + ldr r0, [r1, #0x54] + bl sub_0806FA24 + pop {pc} + .align 2, 0 + + thumb_func_start sub_0809FD94 +sub_0809FD94: @ 0x0809FD94 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r6, [r5, #0x54] + ldr r2, _0809FE24 @ =gUnk_080C9160 + ldrb r0, [r5, #0xe] + lsls r0, r0, #1 + adds r0, r0, r2 + movs r3, #0 + ldrsh r1, [r0, r3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + cmp r0, #0 + bge _0809FDB4 + ldr r1, _0809FE28 @ =0x0000FFFF + adds r0, r0, r1 +_0809FDB4: + asrs r0, r0, #0x10 + ldrh r3, [r6, #0x2e] + adds r0, r0, r3 + strh r0, [r5, #0x2e] + ldrb r0, [r5, #0xe] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #8 + cmp r0, #0 + bge _0809FDD6 + ldr r3, _0809FE28 @ =0x0000FFFF + adds r0, r0, r3 +_0809FDD6: + asrs r1, r0, #0x10 + ldrh r0, [r6, #0x32] + subs r0, r0, r1 + strh r0, [r5, #0x32] + ldrb r3, [r5, #0xe] + adds r0, r3, #0 + adds r0, #8 + strb r0, [r5, #0xe] + ldrh r0, [r6, #0x36] + strh r0, [r5, #0x36] + ldrb r2, [r6, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r4, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r4 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r6, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x19] + subs r3, #0x39 + lsls r3, r3, #0x18 + lsrs r3, r3, #0x18 + cmp r3, #0x7e + bhi _0809FE2C + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #3 + b _0809FE3A + .align 2, 0 +_0809FE24: .4byte gUnk_080C9160 +_0809FE28: .4byte 0x0000FFFF +_0809FE2C: + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #5 +_0809FE3A: + orrs r1, r0 + strb r1, [r2] + ldrb r0, [r5, #0xf] + subs r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + adds r4, r5, #0 + adds r4, #0x63 + cmp r0, #0 + bne _0809FE6C + movs r0, #6 + strb r0, [r5, #0xf] + ldrb r0, [r4] + subs r0, #1 + strb r0, [r4] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + movs r1, #0x16 + rsbs r1, r1, #0 + cmp r0, r1 + bge _0809FE6C + adds r0, r5, #0 + movs r1, #1 + bl sub_08081404 +_0809FE6C: + movs r1, #0 + ldrsb r1, [r4, r1] + movs r0, #0x11 + rsbs r0, r0, #0 + cmp r1, r0 + bge _0809FE8A + ldrb r2, [r5, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] +_0809FE8A: + adds r1, r5, #0 + adds r1, #0x87 + ldrb r0, [r1] + cmp r0, #0xa + bls _0809FE98 + movs r0, #0xa + strb r0, [r1] +_0809FE98: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_0809FE9C +sub_0809FE9C: @ 0x0809FE9C + push {lr} + adds r2, r0, #0 + movs r1, #0x2e + ldrsh r0, [r2, r1] + adds r1, r2, #0 + adds r1, #0x74 + ldrh r1, [r1] + subs r0, r0, r1 + adds r0, #0x48 + cmp r0, #0x90 + bhi _0809FEC8 + movs r1, #0x32 + ldrsh r0, [r2, r1] + adds r1, r2, #0 + adds r1, #0x76 + ldrh r1, [r1] + subs r0, r0, r1 + adds r0, #0x30 + cmp r0, #0x60 + bhi _0809FEC8 + movs r0, #1 + b _0809FECA +_0809FEC8: + movs r0, #0 +_0809FECA: + pop {pc} + + thumb_func_start sub_0809FECC +sub_0809FECC: @ 0x0809FECC + ldr r1, _0809FEDC @ =gLinkEntity + str r1, [r0, #0x54] + movs r2, #0 + movs r1, #5 + strb r1, [r0, #0xc] + strb r2, [r0, #0xd] + bx lr + .align 2, 0 +_0809FEDC: .4byte gLinkEntity + + thumb_func_start sub_0809FEE0 +sub_0809FEE0: @ 0x0809FEE0 + push {lr} + ldr r2, _0809FEF4 @ =gUnk_08124850 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_0809FEF4: .4byte gUnk_08124850 + + thumb_func_start sub_0809FEF8 +sub_0809FEF8: @ 0x0809FEF8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r1, _0809FF20 @ =gUnk_0812485C + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 + ldr r1, _0809FF24 @ =gUnk_08124860 + ldrb r0, [r4, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_0809FF20: .4byte gUnk_0812485C +_0809FF24: .4byte gUnk_08124860 + + thumb_func_start sub_0809FF28 +sub_0809FF28: @ 0x0809FF28 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _0809FF64 + movs r0, #2 + strb r0, [r4, #0xc] + ldr r1, [r4, #0x50] + ldrb r0, [r4, #0xe] + strb r0, [r1, #0x10] + ldrb r2, [r4, #0xf] + movs r0, #3 + ands r2, r0 + ldrb r3, [r1, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r1, #0x18] + adds r1, #0x6d + ldrb r2, [r1] + movs r0, #0xef + ands r0, r2 + strb r0, [r1] +_0809FF64: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_0809FF68 +sub_0809FF68: @ 0x0809FF68 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xc] + cmp r1, #0 + bne _0809FFA2 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #8 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r1, _0809FFC4 @ =gUnk_08124868 + ldrb r0, [r4, #0xa] + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r4, #0x1e] + adds r1, r4, #0 + adds r1, #0x68 + movs r0, #0x78 + strh r0, [r1] +_0809FFA2: + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _080A0068 + movs r0, #0xff + bl sub_0807CC3C + cmp r0, #0 + beq _080A00AA + ldrb r2, [r4, #0xd] + cmp r2, #1 + beq _080A0006 + cmp r2, #1 + bgt _0809FFC8 + cmp r2, #0 + beq _0809FFCE + b _080A005A + .align 2, 0 +_0809FFC4: .4byte gUnk_08124868 +_0809FFC8: + cmp r2, #2 + beq _080A0038 + b _080A005A +_0809FFCE: + adds r1, r4, #0 + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A005A + movs r0, #0x20 + strh r0, [r1] + movs r1, #1 + strb r1, [r4, #0xe] + movs r0, #0 + strb r0, [r4, #0xf] + strb r1, [r4, #0xd] + strb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_080AE068 + movs r1, #0xc6 + lsls r1, r1, #1 + adds r0, r4, #0 + bl sub_080ADF80 + movs r0, #0xf6 + bl sub_080A3268 + b _080A005A +_080A0006: + adds r1, r4, #0 + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A005A + movs r0, #0x2d + strh r0, [r1] + strb r2, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xd] + strb r0, [r4, #0xa] + adds r0, r4, #0 + bl sub_080AE068 + ldr r1, _080A0034 @ =0x0000018D + adds r0, r4, #0 + bl sub_080ADF80 + b _080A005A + .align 2, 0 +_080A0034: .4byte 0x0000018D +_080A0038: + adds r1, r4, #0 + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A005A + movs r0, #3 + strb r0, [r4, #0xd] + ldr r1, _080A0064 @ =gUnk_02000080 + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #0x73 + bl sub_080A3268 +_080A005A: + adds r0, r4, #0 + bl sub_080A00B0 + b _080A00AA + .align 2, 0 +_080A0064: .4byte gUnk_02000080 +_080A0068: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080A00A4 + cmp r0, #2 + bne _080A00A4 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080A00A4 + movs r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _080A00AC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + movs r0, #0x39 + movs r2, #1 + bl sub_0807B314 +_080A00A4: + adds r0, r4, #0 + bl sub_080A00B0 +_080A00AA: + pop {r4, r5, pc} + .align 2, 0 +_080A00AC: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A00B0 +sub_080A00B0: @ 0x080A00B0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A00DA + movs r0, #8 + strb r0, [r2, #0xe] + ldr r1, _080A00DC @ =gUnk_08124868 + ldrb r0, [r2, #0xa] + adds r0, r0, r1 + ldrb r1, [r2, #0xf] + ldrb r0, [r0] + adds r0, r1, r0 + strb r0, [r2, #0x1e] + adds r1, #1 + movs r0, #3 + ands r1, r0 + strb r1, [r2, #0xf] +_080A00DA: + pop {pc} + .align 2, 0 +_080A00DC: .4byte gUnk_08124868 + + thumb_func_start sub_080A00E0 +sub_080A00E0: @ 0x080A00E0 + push {lr} + ldr r2, _080A00F4 @ =gUnk_0812486C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A00F4: .4byte gUnk_0812486C + + thumb_func_start sub_080A00F8 +sub_080A00F8: @ 0x080A00F8 + push {lr} + ldrb r1, [r0, #0xc] + adds r1, #1 + movs r3, #0 + strb r1, [r0, #0xc] + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #1 + strb r1, [r2] + ldrb r1, [r0, #0x19] + movs r2, #0xc0 + orrs r1, r2 + strb r1, [r0, #0x19] + movs r1, #0x29 + adds r1, r1, r0 + mov ip, r1 + ldrb r1, [r1] + movs r2, #7 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + strb r3, [r0, #0xd] + movs r1, #0 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_080A012C +sub_080A012C: @ 0x080A012C + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + bl sub_0807CC3C + cmp r0, #0 + beq _080A0154 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A0154 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] +_080A0154: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A0158 +sub_080A0158: @ 0x080A0158 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + bl sub_0807CC3C + cmp r0, #0 + beq _080A018A + adds r0, r4, #0 + bl sub_080A0190 + adds r0, r4, #0 + movs r1, #0x1e + bl sub_0805E4E0 + ldr r1, _080A018C @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0x10 + movs r3, #0x10 + bl sub_080041A0 + cmp r0, #0 + beq _080A018A + movs r0, #0x37 + bl sub_0805B390 +_080A018A: + pop {r4, pc} + .align 2, 0 +_080A018C: .4byte gLinkEntity + + thumb_func_start sub_080A0190 +sub_080A0190: @ 0x080A0190 + push {r4, lr} + movs r4, #0 + movs r1, #1 + strb r1, [r0, #0xd] + ldr r1, _080A01B8 @ =gLinkEntity + bl sub_0806FA24 + ldr r2, _080A01BC @ =gUnk_03003F80 + movs r0, #3 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x38 + strb r4, [r0] + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #8 + orrs r0, r1 + str r0, [r2, #0x30] + pop {r4, pc} + .align 2, 0 +_080A01B8: .4byte gLinkEntity +_080A01BC: .4byte gUnk_03003F80 + + thumb_func_start sub_080A01C0 +sub_080A01C0: @ 0x080A01C0 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080A01DC @ =gUnk_08124898 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_08080CB4 + pop {r4, pc} + .align 2, 0 +_080A01DC: .4byte gUnk_08124898 + + thumb_func_start sub_080A01E0 +sub_080A01E0: @ 0x080A01E0 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + movs r3, #1 + strb r3, [r4, #0xc] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x19] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x40 + orrs r0, r1 + strb r0, [r4, #0x19] + ldr r0, _080A027C @ =gUnk_080FD1A0 + str r0, [r4, #0x48] + ldr r0, _080A0280 @ =0x0000FF40 + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x6a + movs r0, #0x40 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0x43 + bgt _080A0246 + cmp r0, #0x42 + bge _080A0246 + cmp r0, #0x40 + beq _080A0246 + cmp r0, #0x41 + bne _080A0246 + ldr r2, _080A0284 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _080A0288 @ =0x0000FDFF + ands r0, r1 + strh r0, [r2] + adds r0, r4, #0 + adds r0, #0x38 + strb r3, [r0] +_080A0246: + ldr r0, _080A028C @ =gUnk_0800A0B4 + bl sub_0807DB2C + ldr r1, _080A0284 @ =gUnk_03000F50 + adds r2, r1, #0 + adds r2, #0x66 + movs r0, #0xc8 + lsls r0, r0, #3 + strh r0, [r2] + adds r1, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + bl sub_0805BC4C + ldrb r2, [r4, #0xa] + subs r2, #0x40 + adds r0, r4, #0 + movs r1, #0xad + movs r3, #0 + bl sub_080A2988 + cmp r0, #0 + beq _080A027A + str r4, [r0, #0x50] + str r0, [r4, #0x54] +_080A027A: + pop {r4, pc} + .align 2, 0 +_080A027C: .4byte gUnk_080FD1A0 +_080A0280: .4byte 0x0000FF40 +_080A0284: .4byte gUnk_03000F50 +_080A0288: .4byte 0x0000FDFF +_080A028C: .4byte gUnk_0800A0B4 + + thumb_func_start sub_080A0290 +sub_080A0290: @ 0x080A0290 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, _080A02BC @ =gUnk_02033280 + ldr r0, [r5] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _080A02CA + adds r0, r4, #0 + bl sub_080A0424 + ldrh r2, [r4, #0x36] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #8 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080A02C0 + adds r0, r2, #1 + strh r0, [r4, #0x36] + b _080A02CA + .align 2, 0 +_080A02BC: .4byte gUnk_02033280 +_080A02C0: + movs r1, #2 + strb r1, [r4, #0xc] + ldr r0, [r5] + orrs r0, r1 + str r0, [r5] +_080A02CA: + pop {r4, r5, pc} + + thumb_func_start sub_080A02CC +sub_080A02CC: @ 0x080A02CC + push {r4, lr} + adds r4, r0, #0 + bl sub_080A0424 + adds r0, r4, #0 + bl sub_080A0444 + adds r0, r4, #0 + bl sub_08017850 + cmp r0, #0 + beq _080A0342 + ldr r0, [r4, #0x54] + bl sub_0805E7BC + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r2, #0 + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x2d + strb r0, [r4, #0xe] + ldr r0, _080A0344 @ =gUnk_03000F50 + adds r3, r0, #0 + adds r3, #0x66 + movs r1, #0xc8 + lsls r1, r1, #3 + strh r1, [r3] + adds r0, #0x68 + strh r2, [r0] + ldrb r0, [r4, #0xa] + movs r1, #0 + movs r2, #1 + bl sub_080A7C18 + adds r0, r4, #0 + movs r1, #1 + bl sub_0808C650 + movs r0, #6 + movs r1, #2 + bl sub_08050054 + movs r0, #0xf8 + bl sub_080A3268 + movs r0, #0xa4 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #5 + bl sub_080A3268 + ldr r0, _080A0348 @ =0x80110000 + bl sub_080A3268 +_080A0342: + pop {r4, pc} + .align 2, 0 +_080A0344: .4byte gUnk_03000F50 +_080A0348: .4byte 0x80110000 + + thumb_func_start sub_080A034C +sub_080A034C: @ 0x080A034C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080A0378 + adds r0, r4, #0 + bl sub_080A0424 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A038C + ldr r0, _080A0374 @ =gLinkEntity + movs r1, #0 + bl sub_0805E3A0 + b _080A038C + .align 2, 0 +_080A0374: .4byte gLinkEntity +_080A0378: + movs r0, #0 + movs r1, #0x3c + bl sub_0805E4E0 + bl sub_0808C67C + cmp r0, #0 + beq _080A038C + movs r0, #4 + strb r0, [r4, #0xc] +_080A038C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A0390 +sub_080A0390: @ 0x080A0390 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #0x3c + bl sub_0805E4E0 + ldr r0, _080A03B4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A03B2 + movs r0, #5 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x68 + movs r0, #0xd2 + lsls r0, r0, #1 + strh r0, [r1] +_080A03B2: + pop {r4, pc} + .align 2, 0 +_080A03B4: .4byte gUnk_03000FD0 + + thumb_func_start sub_080A03B8 +sub_080A03B8: @ 0x080A03B8 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0 + movs r1, #0xa + bl sub_0805E4E0 + adds r1, r4, #0 + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A03E4 + movs r0, #6 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0xa] + bl sub_0805429C + adds r1, r4, #0 + bl sub_08056398 +_080A03E4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A03E8 +sub_080A03E8: @ 0x080A03E8 + push {lr} + movs r0, #0 + movs r1, #0xa + bl sub_0805E4E0 + ldr r0, _080A041C @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080A041A + movs r0, #0x5a + bl sub_0805E510 + ldr r0, _080A0420 @ =gUnk_03003F80 + adds r0, #0x8b + movs r1, #1 + strb r1, [r0] + bl sub_0807DF50 + movs r0, #0 + bl sub_0807CD10 + bl sub_0805E780 +_080A041A: + pop {pc} + .align 2, 0 +_080A041C: .4byte gUnk_02000050 +_080A0420: .4byte gUnk_03003F80 + + thumb_func_start sub_080A0424 +sub_080A0424: @ 0x080A0424 + push {lr} + adds r1, r0, #0 + adds r1, #0x6a + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0442 + movs r0, #0x40 + strb r0, [r1] + movs r0, #0xbc + lsls r0, r0, #1 + bl sub_080A3268 +_080A0442: + pop {pc} + + thumb_func_start sub_080A0444 +sub_080A0444: @ 0x080A0444 + ldr r3, _080A0460 @ =gUnk_081248B4 + ldrb r1, [r0, #0xf] + adds r2, r1, #1 + strb r2, [r0, #0xf] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x1b + movs r2, #7 + ands r1, r2 + adds r1, r1, r3 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + strh r1, [r0, #0x36] + bx lr + .align 2, 0 +_080A0460: .4byte gUnk_081248B4 + + thumb_func_start sub_080A0464 +sub_080A0464: @ 0x080A0464 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + movs r0, #6 + movs r1, #0xac + movs r2, #6 + bl sub_0805EB00 + cmp r0, #0 + beq _080A048A + movs r1, #0x2e + ldrsh r2, [r0, r1] + movs r1, #0x32 + ldrsh r3, [r0, r1] + adds r3, #0x18 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0807DEDC +_080A048A: + pop {r4, r5, pc} + + thumb_func_start sub_080A048C +sub_080A048C: @ 0x080A048C + push {lr} + ldr r2, _080A04A0 @ =gUnk_081248BC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A04A0: .4byte gUnk_081248BC + + thumb_func_start sub_080A04A4 +sub_080A04A4: @ 0x080A04A4 + push {r4, lr} + movs r3, #0 + movs r1, #1 + strb r1, [r0, #0xc] + movs r4, #4 + movs r1, #4 + strb r1, [r0, #0x1e] + strb r3, [r0, #0xe] + ldrb r1, [r0, #0x19] + movs r2, #0xc0 + orrs r1, r2 + strb r1, [r0, #0x19] + movs r1, #0x29 + adds r1, r1, r0 + mov ip, r1 + ldrb r1, [r1] + movs r2, #7 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + str r3, [r0, #0x34] + ldrb r2, [r0, #0x19] + movs r1, #0xd + rsbs r1, r1, #0 + ands r1, r2 + orrs r1, r4 + strb r1, [r0, #0x19] + bl sub_080A04E8 + pop {r4, pc} + + thumb_func_start sub_080A04E0 +sub_080A04E0: @ 0x080A04E0 + push {lr} + bl sub_080A04E8 + pop {pc} + + thumb_func_start sub_080A04E8 +sub_080A04E8: @ 0x080A04E8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x50] + movs r1, #0x36 + ldrsh r0, [r0, r1] + cmp r0, #0 + bge _080A04F8 + rsbs r0, r0, #0 +_080A04F8: + movs r1, #0x80 + lsls r1, r1, #1 + adds r4, r0, r1 + adds r0, r5, #0 + adds r1, r4, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_0805EC9C + movs r1, #0xe0 + lsls r1, r1, #1 + subs r1, r1, r4 + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + adds r1, r4, #0 + bl __divsi3 + adds r4, r0, #0 + ldr r0, [r5, #0x50] + ldrb r0, [r0, #0xa] + cmp r0, #0x41 + bne _080A0538 + lsls r3, r4, #1 + cmp r3, #0xc + bls _080A052E + movs r3, #0xc +_080A052E: + movs r0, #0x10 + subs r0, r0, r4 + lsls r4, r0, #8 + orrs r4, r3 + b _080A0540 +_080A0538: + movs r0, #0x10 + subs r0, r0, r4 + lsls r0, r0, #8 + orrs r4, r0 +_080A0540: + ldr r0, _080A054C @ =0x0000FFFF + ands r4, r0 + ldr r0, _080A0550 @ =gUnk_03000F50 + adds r0, #0x68 + strh r4, [r0] + pop {r4, r5, pc} + .align 2, 0 +_080A054C: .4byte 0x0000FFFF +_080A0550: .4byte gUnk_03000F50 + + thumb_func_start sub_080A0554 +sub_080A0554: @ 0x080A0554 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xc] + cmp r0, #0 + bne _080A0588 + movs r2, #1 + strb r2, [r3, #0xc] + ldrb r0, [r3, #0xa] + strb r0, [r3, #0x1e] + movs r0, #0x29 + adds r0, r0, r3 + mov ip, r0 + ldrb r1, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + adds r0, r3, #0 + adds r0, #0x38 + strb r2, [r0] + adds r0, r3, #0 + bl sub_08016A04 +_080A0588: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A058C +sub_080A058C: @ 0x080A058C + push {lr} + ldr r2, _080A05A0 @ =gUnk_081248C4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A05A0: .4byte gUnk_081248C4 + + thumb_func_start sub_080A05A4 +sub_080A05A4: @ 0x080A05A4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + cmp r1, #2 + beq _080A05D2 + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_080A0640 + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + b _080A05F0 +_080A05D2: + movs r0, #0 + strb r1, [r4, #0xc] + ldrh r1, [r4, #0x32] + adds r1, #1 + strh r1, [r4, #0x32] + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x63 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + movs r1, #3 + bl sub_08004260 +_080A05F0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A05F4 +sub_080A05F4: @ 0x080A05F4 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + cmp r0, #0 + bne _080A060C + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #2 + bl sub_08004260 + b _080A0622 +_080A060C: + ldr r0, [r0, #4] + cmp r0, #0 + bne _080A0616 + bl sub_0805E780 +_080A0616: + adds r0, r4, #0 + bl sub_080A0640 + adds r0, r4, #0 + bl sub_08004274 +_080A0622: + pop {r4, pc} + + thumb_func_start sub_080A0624 +sub_080A0624: @ 0x080A0624 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A063C + bl sub_0805E780 +_080A063C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A0640 +sub_080A0640: @ 0x080A0640 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080A065E + ldr r0, [r4, #0x50] + ldr r0, [r0, #0x64] + ldr r0, [r0, #0x10] + movs r3, #0x80 + lsls r3, r3, #0xc + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + b _080A0666 +_080A065E: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 +_080A0666: + movs r0, #0 + strh r0, [r4, #0x36] + pop {r4, pc} + + thumb_func_start sub_080A066C +sub_080A066C: @ 0x080A066C + push {lr} + ldr r2, _080A0680 @ =gUnk_0812493C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A0680: .4byte gUnk_0812493C + + thumb_func_start sub_080A0684 +sub_080A0684: @ 0x080A0684 + push {r4, r5, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x84 + ldrh r1, [r2] + ldr r0, _080A070C @ =0x0000FFFF + cmp r1, r0 + beq _080A06A2 + adds r0, r1, #0 + bl sub_0807CBE4 + cmp r0, #0 + beq _080A06A2 + bl sub_0805E780 +_080A06A2: + movs r0, #1 + strb r0, [r4, #0xc] + movs r2, #0 + movs r0, #0xc0 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r2, [r4, #0x1e] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r0, _080A0710 @ =gUnk_080FD180 + str r0, [r4, #0x48] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x70 + strh r1, [r0] + ldrh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x72 + strh r0, [r1] + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _080A0714 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r4, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r4, #0 + adds r0, #0x74 + strh r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_080A070C: .4byte 0x0000FFFF +_080A0710: .4byte gUnk_080FD180 +_080A0714: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A0718 +sub_080A0718: @ 0x080A0718 + push {r4, lr} + adds r4, r0, #0 + movs r1, #2 + bl sub_08083734 + cmp r0, #0 + beq _080A074A + movs r2, #0 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xc + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x10 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r2, [r4, #0x15] + ldrh r0, [r4, #0x32] + adds r0, #0x24 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_080A080C +_080A074A: + pop {r4, pc} + + thumb_func_start sub_080A074C +sub_080A074C: @ 0x080A074C + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r1, r0, #0x18 + cmp r1, #0 + bne _080A07B6 + movs r0, #3 + strb r0, [r4, #0xc] + strh r1, [r4, #0x36] + adds r0, r4, #0 + adds r0, #0x70 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x72 + ldrh r0, [r0] + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080A0794 + ldrh r0, [r1, #0x2e] + adds r0, #0xc + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + subs r0, #0xc + strh r0, [r1, #0x32] +_080A0794: + adds r0, r4, #0 + movs r1, #0x11 + movs r2, #0x40 + bl CreateFX + adds r1, r0, #0 + cmp r1, #0 + beq _080A07B0 + ldrh r0, [r1, #0x2e] + subs r0, #0xc + strh r0, [r1, #0x2e] + ldrh r0, [r1, #0x32] + subs r0, #0xc + strh r0, [r1, #0x32] +_080A07B0: + ldr r0, _080A07B8 @ =0x0000010B + bl sub_08004488 +_080A07B6: + pop {r4, pc} + .align 2, 0 +_080A07B8: .4byte 0x0000010B + + thumb_func_start sub_080A07BC +sub_080A07BC: @ 0x080A07BC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080A07EA + movs r0, #4 + strb r0, [r4, #0xc] + movs r0, #0xc + strb r0, [r4, #0xe] + movs r0, #0x10 + strb r0, [r4, #0x15] + ldrh r0, [r4, #0x32] + adds r0, #2 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_080A0870 + ldr r0, _080A07EC @ =0x0000010B + bl sub_080A3268 +_080A07EA: + pop {r4, pc} + .align 2, 0 +_080A07EC: .4byte 0x0000010B + + thumb_func_start sub_080A07F0 +sub_080A07F0: @ 0x080A07F0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0808 + bl sub_0805E780 +_080A0808: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A080C +sub_080A080C: @ 0x080A080C + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r4, #0 + adds r6, #0x74 + ldrh r0, [r6] + subs r0, #1 + adds r5, r4, #0 + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x76 + strh r0, [r1] + ldrh r0, [r6] + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x78 + strh r0, [r1] + ldrh r0, [r6] + adds r0, #1 + ldrb r1, [r5] + bl sub_080001DA + adds r1, r4, #0 + adds r1, #0x7a + strh r0, [r1] + ldr r4, _080A086C @ =0x00004022 + ldrh r1, [r6] + subs r1, #1 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + ldrh r1, [r6] + adds r1, #1 + ldrb r2, [r5] + adds r0, r4, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_080A086C: .4byte 0x00004022 + + thumb_func_start sub_080A0870 +sub_080A0870: @ 0x080A0870 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r0, #0x76 + ldrh r0, [r0] + adds r5, r6, #0 + adds r5, #0x74 + ldrh r1, [r5] + subs r1, #1 + adds r4, r6, #0 + adds r4, #0x38 + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x78 + ldrh r0, [r0] + ldrh r1, [r5] + ldrb r2, [r4] + bl sub_0800015E + adds r0, r6, #0 + adds r0, #0x7a + ldrh r0, [r0] + ldrh r1, [r5] + adds r1, #1 + ldrb r2, [r4] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A08AC +sub_080A08AC: @ 0x080A08AC + push {lr} + ldr r2, _080A08C0 @ =gUnk_08124950 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A08C0: .4byte gUnk_08124950 + + thumb_func_start sub_080A08C4 +sub_080A08C4: @ 0x080A08C4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + bne _080A08E2 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_080A0960 + b _080A08F6 +_080A08E2: + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + adds r0, r4, #0 + movs r1, #1 + bl sub_080A0960 +_080A08F6: + ldrb r0, [r4, #0x18] + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A0910 +sub_080A0910: @ 0x080A0910 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080A0932 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_080A0960 + ldr r0, _080A0934 @ =0x0000010B + bl sub_080A3268 +_080A0932: + pop {r4, pc} + .align 2, 0 +_080A0934: .4byte 0x0000010B + + thumb_func_start sub_080A0938 +sub_080A0938: @ 0x080A0938 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A095A + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_080A095A: + pop {r4, pc} + + thumb_func_start nullsub_127 +nullsub_127: @ 0x080A095C + bx lr + .align 2, 0 + + thumb_func_start sub_080A0960 +sub_080A0960: @ 0x080A0960 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _080A0998 @ =gUnk_08124960 + cmp r1, #1 + bne _080A096C + ldr r5, _080A099C @ =gUnk_0812497A +_080A096C: + movs r0, #0x2e + ldrsh r1, [r4, r0] + ldr r2, _080A09A0 @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r6, #0x32 + ldrsh r0, [r4, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + movs r2, #1 + bl sub_0801AF18 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A0998: .4byte gUnk_08124960 +_080A099C: .4byte gUnk_0812497A +_080A09A0: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A09A4 +sub_080A09A4: @ 0x080A09A4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080A09D4 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x10 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xa] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + ldr r1, _080A0A2C @ =gUnk_02027EB4 + cmp r0, #2 + bne _080A09CA + ldr r1, _080A0A30 @ =gUnk_0200D654 +_080A09CA: + str r1, [r4, #0x54] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 +_080A09D4: + ldr r0, [r4, #0x50] + ldrh r0, [r0, #0x24] + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, [r4, #0x54] + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r3, #0x32 + ldrsh r2, [r4, r3] + movs r3, #9 + bl sub_080AE4CC + cmp r0, #0 + beq _080A09F8 + bl sub_0805E780 +_080A09F8: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0x40 + bgt _080A0A22 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0A22 + bl sub_0805E780 +_080A0A22: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_080A0A2C: .4byte gUnk_02027EB4 +_080A0A30: .4byte gUnk_0200D654 + + thumb_func_start sub_080A0A34 +sub_080A0A34: @ 0x080A0A34 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080A0A44 + cmp r0, #1 + beq _080A0A5C + b _080A0A5E +_080A0A44: + ldrb r1, [r4, #0x10] + movs r0, #2 + ands r0, r1 + ldr r1, _080A0A54 @ =gUnk_08124A18 + cmp r0, #0 + beq _080A0A5E + ldr r1, _080A0A58 @ =gUnk_08124A10 + b _080A0A5E + .align 2, 0 +_080A0A54: .4byte gUnk_08124A18 +_080A0A58: .4byte gUnk_08124A10 +_080A0A5C: + ldr r1, _080A0AB8 @ =gUnk_08124A20 +_080A0A5E: + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080A0AB0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r2, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r3, #0x40 + orrs r0, r3 + strb r0, [r4, #0x19] + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + ldrb r2, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + mov r2, ip + strb r0, [r2] + ldrb r0, [r4, #0x1b] + ands r1, r0 + orrs r1, r3 + strb r1, [r4, #0x1b] + ldr r1, _080A0ABC @ =gUnk_080C9CBC + ldr r0, _080A0AC0 @ =gUnk_02022740 + ldrb r0, [r0, #3] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_0801D2B4 +_080A0AB0: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 +_080A0AB8: .4byte gUnk_08124A20 +_080A0ABC: .4byte gUnk_080C9CBC +_080A0AC0: .4byte gUnk_02022740 + + thumb_func_start sub_080A0AC4 +sub_080A0AC4: @ 0x080A0AC4 + push {lr} + ldrb r1, [r0, #0xa] + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A0AD0 +sub_080A0AD0: @ 0x080A0AD0 + push {lr} + movs r1, #0x80 + bl sub_08003FC4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A0ADC +sub_080A0ADC: @ 0x080A0ADC + push {r4, lr} + adds r4, r0, #0 + bl sub_0807DD64 + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A0AF0 +sub_080A0AF0: @ 0x080A0AF0 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x58 + ldrb r0, [r0] + cmp r0, #5 + bne _080A0B1C + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A0B1C + bl sub_0805E780 +_080A0B1C: + adds r0, r4, #0 + movs r1, #0x80 + bl sub_08003FC4 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A0B28 +sub_080A0B28: @ 0x080A0B28 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x2e + ldrsh r2, [r4, r0] + movs r0, #0x32 + ldrsh r3, [r4, r0] + adds r0, r4, #0 + bl sub_0807DEDC + ldrh r0, [r4, #0x32] + subs r0, #0xb0 + strh r0, [r4, #0x32] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + pop {r4, pc} + + thumb_func_start sub_080A0B4C +sub_080A0B4C: @ 0x080A0B4C + push {lr} + movs r1, #0x78 + strh r1, [r0, #0x2e] + movs r1, #0x50 + strh r1, [r0, #0x32] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A0B60 +sub_080A0B60: @ 0x080A0B60 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080A0B7C + movs r0, #2 + strb r0, [r2, #0xc] + movs r0, #0x9b + lsls r0, r0, #1 + bl sub_080A3268 +_080A0B7C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A0B80 +sub_080A0B80: @ 0x080A0B80 + ldr r1, [r0, #0x30] + ldr r2, _080A0B8C @ =0xFFFD8000 + adds r1, r1, r2 + str r1, [r0, #0x30] + bx lr + .align 2, 0 +_080A0B8C: .4byte 0xFFFD8000 + + thumb_func_start sub_080A0B90 +sub_080A0B90: @ 0x080A0B90 + push {lr} + ldr r2, _080A0BA4 @ =gUnk_08124B20 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A0BA4: .4byte gUnk_08124B20 + + thumb_func_start sub_080A0BA8 +sub_080A0BA8: @ 0x080A0BA8 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r2, [r5, #0xc] + cmp r2, #0 + beq _080A0BB8 + cmp r2, #1 + beq _080A0C08 + b _080A0CE0 +_080A0BB8: + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r5, #0x18] + movs r0, #9 + strb r0, [r5, #0x1e] + movs r0, #8 + strb r0, [r5, #0xe] + strb r2, [r5, #0xf] + ldrb r1, [r5, #0x19] + movs r2, #0x3f + adds r0, r2, #0 + ands r0, r1 + movs r3, #0x40 + orrs r0, r3 + strb r0, [r5, #0x19] + adds r4, r5, #0 + adds r4, #0x29 + ldrb r1, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r5, #0x1b] + ands r2, r0 + orrs r2, r3 + strb r2, [r5, #0x1b] + adds r0, r5, #0 + movs r1, #0xbf + movs r2, #0x48 + movs r3, #0x1e + bl sub_0806FB00 + b _080A0CE0 +_080A0C08: + ldrb r0, [r5, #0xf] + cmp r0, #6 + bhi _080A0C46 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A0C46 + strb r2, [r5, #0xe] + ldrb r2, [r5, #0xf] + movs r0, #0xb4 + movs r1, #1 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A0C40 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + movs r0, #0x68 + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAD8 +_080A0C40: + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] +_080A0C46: + adds r0, r5, #0 + bl sub_0806FB38 + cmp r0, #0 + bne _080A0C58 + ldr r0, _080A0CE4 @ =gUnk_02000080 + ldrb r0, [r0, #5] + cmp r0, #1 + bls _080A0CE0 +_080A0C58: + movs r0, #0xbf + strh r0, [r5, #0x2e] + movs r0, #0x48 + strh r0, [r5, #0x32] + movs r0, #0xa + strb r0, [r5, #0x1e] + movs r0, #2 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0xf] + cmp r0, #6 + bhi _080A0CA0 +_080A0C6E: + ldrb r2, [r5, #0xf] + movs r0, #0xb4 + movs r1, #1 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A0C92 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + movs r0, #0x68 + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAD8 +_080A0C92: + ldrb r0, [r5, #0xf] + adds r0, #1 + strb r0, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #6 + bls _080A0C6E +_080A0CA0: + movs r0, #0xb4 + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A0CC0 + movs r0, #0xc4 + strh r0, [r4, #0x2e] + movs r0, #0x2c + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_080A0CC0: + movs r0, #0xb4 + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A0CE0 + movs r0, #0xb4 + strh r0, [r4, #0x2e] + movs r0, #0x19 + strh r0, [r4, #0x32] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 +_080A0CE0: + pop {r4, r5, pc} + .align 2, 0 +_080A0CE4: .4byte gUnk_02000080 + + thumb_func_start sub_080A0CE8 +sub_080A0CE8: @ 0x080A0CE8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + beq _080A0CF8 + cmp r0, #1 + beq _080A0D28 + b _080A0D66 +_080A0CF8: + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x18] + subs r0, #5 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xb] + adds r0, #2 + strb r0, [r4, #0x1e] + ldr r1, _080A0D24 @ =gUnk_08124B10 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r1, [r0] + adds r0, r4, #0 + movs r2, #0x68 + movs r3, #0x14 + bl sub_0806FB00 + b _080A0D66 + .align 2, 0 +_080A0D24: .4byte gUnk_08124B10 +_080A0D28: + adds r0, r4, #0 + bl sub_0806FB38 + cmp r0, #0 + bne _080A0D3A + ldr r0, _080A0D68 @ =gUnk_02000080 + ldrb r0, [r0, #5] + cmp r0, #1 + bls _080A0D66 +_080A0D3A: + ldr r1, _080A0D6C @ =gUnk_08124B10 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + movs r0, #0x68 + strh r0, [r4, #0x32] + ldrb r1, [r4, #0xb] + movs r0, #7 + subs r1, r0, r1 + adds r3, r4, #0 + adds r3, #0x29 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + movs r0, #2 + strb r0, [r4, #0xc] +_080A0D66: + pop {r4, pc} + .align 2, 0 +_080A0D68: .4byte gUnk_02000080 +_080A0D6C: .4byte gUnk_08124B10 + + thumb_func_start sub_080A0D70 +sub_080A0D70: @ 0x080A0D70 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldrb r6, [r5, #0xc] + cmp r6, #0 + bne _080A0DC4 + movs r0, #1 + strb r0, [r5, #0xc] + ldrb r1, [r5, #0x18] + subs r0, #5 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r5, #0x18] + ldrb r2, [r5, #0x19] + movs r4, #0x3f + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r3, #0x40 + orrs r0, r3 + strb r0, [r5, #0x19] + movs r0, #0x29 + adds r0, r0, r5 + mov ip, r0 + ldrb r2, [r0] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + mov r2, ip + strb r0, [r2] + ldrb r0, [r5, #0x1b] + ands r1, r0 + orrs r1, r3 + strb r1, [r5, #0x1b] + movs r0, #0xb + strb r0, [r5, #0x1e] + bl sub_08000E50 + ands r0, r4 + adds r0, #0x40 + strb r0, [r5, #0xe] + strb r6, [r5, #0xf] +_080A0DC4: + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r4, r0, #0x18 + cmp r4, #0 + bne _080A0E02 + movs r0, #4 + strb r0, [r5, #0xe] + ldr r2, _080A0E04 @ =gUnk_08124B30 + ldrb r0, [r5, #0xf] + adds r1, r0, #1 + strb r1, [r5, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r0, r0, r2 + ldrb r0, [r0] + adds r0, #2 + strb r0, [r5, #0x1e] + ldrb r0, [r5, #0xf] + adds r0, r0, r2 + ldrb r0, [r0] + cmp r0, #0xff + bne _080A0E02 + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x40 + strb r0, [r5, #0xe] + strb r4, [r5, #0xf] +_080A0E02: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A0E04: .4byte gUnk_08124B30 + + thumb_func_start sub_080A0E08 +sub_080A0E08: @ 0x080A0E08 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _080A0E26 + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x18] + subs r0, #5 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2, #0x18] + movs r0, #0xf + strb r0, [r2, #0x1e] +_080A0E26: + pop {pc} + + thumb_func_start sub_080A0E28 +sub_080A0E28: @ 0x080A0E28 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _080A0E36 + movs r0, #1 + strb r0, [r1, #0xc] +_080A0E36: + ldr r0, _080A0E48 @ =gUnk_03000BF0 + str r1, [r0, #0x30] + ldr r0, _080A0E4C @ =gLinkEntity + ldr r3, _080A0E50 @ =0xFFD80000 + movs r2, #0 + bl sub_0806FA48 + pop {pc} + .align 2, 0 +_080A0E48: .4byte gUnk_03000BF0 +_080A0E4C: .4byte gLinkEntity +_080A0E50: .4byte 0xFFD80000 + + thumb_func_start sub_080A0E54 +sub_080A0E54: @ 0x080A0E54 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xd] + cmp r0, #3 + bls _080A0E64 + bl sub_0805E780 +_080A0E64: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080A0E76 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_08004260 +_080A0E76: + ldr r0, [r4, #0x50] + ldrb r3, [r4, #0xa] + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA90 + adds r2, r4, #0 + adds r2, #0x63 + ldrb r0, [r2] + ldrb r1, [r4, #0xa] + subs r0, r0, r1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A0E98 +sub_080A0E98: @ 0x080A0E98 + push {lr} + ldr r2, _080A0EAC @ =gUnk_08124C08 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A0EAC: .4byte gUnk_08124C08 + + thumb_func_start sub_080A0EB0 +sub_080A0EB0: @ 0x080A0EB0 + push {r4, r5, lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x2e + ldrsh r2, [r0, r1] + ldr r3, _080A0EE8 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r2, r2, r1 + asrs r2, r2, #4 + movs r4, #0x3f + ands r2, r4 + movs r5, #0x32 + ldrsh r1, [r0, r5] + ldrh r3, [r3, #8] + subs r1, r1, r3 + asrs r1, r1, #4 + ands r1, r4 + lsls r1, r1, #6 + orrs r2, r1 + adds r0, #0x80 + strh r2, [r0] + ldr r2, _080A0EEC @ =0x0000407D + ldrh r1, [r0] + adds r0, r2, #0 + movs r2, #1 + bl sub_0800015E + pop {r4, r5, pc} + .align 2, 0 +_080A0EE8: .4byte gUnk_03000BF0 +_080A0EEC: .4byte 0x0000407D + + thumb_func_start sub_080A0EF0 +sub_080A0EF0: @ 0x080A0EF0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x80 + ldrh r0, [r0] + movs r1, #1 + bl sub_080002B0 + ldr r1, _080A0F1C @ =0x0000407D + cmp r0, r1 + beq _080A0F18 + bl sub_08078B48 + ldr r1, _080A0F20 @ =gLinkEntity + ldr r0, [r4, #0x2c] + str r0, [r1, #0x2c] + ldrh r0, [r4, #0x32] + adds r0, #4 + strh r0, [r1, #0x32] + bl sub_0805E780 +_080A0F18: + pop {r4, pc} + .align 2, 0 +_080A0F1C: .4byte 0x0000407D +_080A0F20: .4byte gLinkEntity + + thumb_func_start sub_080A0F24 +sub_080A0F24: @ 0x080A0F24 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080A0F40 @ =gUnk_08124C10 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080A11E0 + pop {r4, pc} + .align 2, 0 +_080A0F40: .4byte gUnk_08124C10 + + thumb_func_start sub_080A0F44 +sub_080A0F44: @ 0x080A0F44 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r6, #1 + strb r6, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x59 + movs r0, #8 + strb r0, [r1] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080A0FA8 @ =gUnk_080FD460 + str r0, [r5, #0x48] + adds r0, r5, #0 + movs r1, #6 + bl sub_0805E3A0 + adds r0, r5, #0 + bl sub_080A11C0 + cmp r0, #0 + beq _080A0FA4 + ldr r1, _080A0FAC @ =gLinkEntity + ldrh r0, [r5, #0x2e] + movs r4, #0 + strh r0, [r1, #0x2e] + ldrh r0, [r5, #0x32] + strh r0, [r1, #0x32] + movs r0, #3 + bl sub_08078A90 + bl sub_08078B48 + bl sub_0805E544 + movs r0, #0x89 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #3 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + adds r0, r5, #0 + adds r0, #0x68 + strb r6, [r0] +_080A0FA4: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A0FA8: .4byte gUnk_080FD460 +_080A0FAC: .4byte gLinkEntity + + thumb_func_start sub_080A0FB0 +sub_080A0FB0: @ 0x080A0FB0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080A11C0 + adds r1, r0, #0 + cmp r1, #0 + beq _080A0FF8 + adds r0, r5, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0 + bne _080A0FFE + ldr r1, _080A0FF4 @ =gLinkEntity + ldrh r0, [r5, #0x2e] + movs r4, #0 + strh r0, [r1, #0x2e] + ldrh r0, [r5, #0x32] + strh r0, [r1, #0x32] + movs r0, #3 + bl sub_08078A90 + bl sub_08078B48 + bl sub_0805E544 + movs r0, #0x89 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #2 + strb r0, [r5, #0xc] + strb r4, [r5, #0xd] + b _080A0FFE + .align 2, 0 +_080A0FF4: .4byte gLinkEntity +_080A0FF8: + adds r0, r5, #0 + adds r0, #0x68 + strb r1, [r0] +_080A0FFE: + pop {r4, r5, pc} + + thumb_func_start sub_080A1000 +sub_080A1000: @ 0x080A1000 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xd] + cmp r1, #1 + beq _080A102A + cmp r1, #1 + bgt _080A1014 + cmp r1, #0 + beq _080A101E + b _080A1088 +_080A1014: + cmp r1, #2 + beq _080A1038 + cmp r1, #3 + beq _080A1064 + b _080A1088 +_080A101E: + movs r0, #0x1e + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _080A10D4 +_080A102A: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A10D4 + b _080A1070 +_080A1038: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A1056 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + adds r0, #0xf5 + bl sub_080A3268 + b _080A10D4 +_080A1056: + ldr r0, _080A1060 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + b _080A10C2 + .align 2, 0 +_080A1060: .4byte gUnk_030010A0 +_080A1064: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A107C +_080A1070: + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + movs r0, #0x1e + strb r0, [r4, #0xe] + b _080A10D4 +_080A107C: + ldr r0, _080A1084 @ =gUnk_030010A0 + ldr r0, [r0] + b _080A10C2 + .align 2, 0 +_080A1084: .4byte gUnk_030010A0 +_080A1088: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A10BC + ldr r0, _080A10B4 @ =gUnk_03000BF0 + ldrb r0, [r0, #4] + cmp r0, #3 + bne _080A10A2 + movs r0, #0xf9 + bl sub_0807CCB4 +_080A10A2: + ldrb r1, [r4, #0xb] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A10B8 @ =gUnk_0813ADEC + adds r0, r0, r1 + bl sub_08080840 + b _080A10D4 + .align 2, 0 +_080A10B4: .4byte gUnk_03000BF0 +_080A10B8: .4byte gUnk_0813ADEC +_080A10BC: + ldr r0, _080A10D8 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 +_080A10C2: + ands r0, r1 + cmp r0, #0 + bne _080A10D4 + ldr r0, _080A10DC @ =gLinkEntity + ldrb r1, [r0, #0x14] + adds r1, #2 + movs r2, #6 + ands r1, r2 + strb r1, [r0, #0x14] +_080A10D4: + pop {r4, pc} + .align 2, 0 +_080A10D8: .4byte gUnk_030010A0 +_080A10DC: .4byte gLinkEntity + + thumb_func_start sub_080A10E0 +sub_080A10E0: @ 0x080A10E0 + push {r4, lr} + adds r2, r0, #0 + ldrb r1, [r2, #0xd] + cmp r1, #1 + beq _080A110E + cmp r1, #1 + bgt _080A10F4 + cmp r1, #0 + beq _080A10FE + b _080A1180 +_080A10F4: + cmp r1, #2 + beq _080A1124 + cmp r1, #3 + beq _080A1148 + b _080A1180 +_080A10FE: + movs r0, #1 + strb r0, [r2, #0xd] + movs r0, #0x1e + strb r0, [r2, #0xe] + adds r0, #0xf6 + bl sub_080A3268 + b _080A11BA +_080A110E: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A1130 + ldr r0, _080A1120 @ =gUnk_030010A0 + ldr r0, [r0] + b _080A1162 + .align 2, 0 +_080A1120: .4byte gUnk_030010A0 +_080A1124: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A113C +_080A1130: + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + movs r0, #0x1e + strb r0, [r2, #0xe] + b _080A11BA +_080A113C: + ldr r0, _080A1144 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #3 + b _080A1162 + .align 2, 0 +_080A1144: .4byte gUnk_030010A0 +_080A1148: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A115C + ldrb r0, [r2, #0xd] + adds r0, #1 + strb r0, [r2, #0xd] + b _080A11BA +_080A115C: + ldr r0, _080A1178 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 +_080A1162: + ands r0, r1 + cmp r0, #0 + bne _080A11BA + ldr r0, _080A117C @ =gLinkEntity + ldrb r1, [r0, #0x14] + adds r1, #2 + movs r2, #6 + ands r1, r2 + strb r1, [r0, #0x14] + b _080A11BA + .align 2, 0 +_080A1178: .4byte gUnk_030010A0 +_080A117C: .4byte gLinkEntity +_080A1180: + ldr r4, _080A11A0 @ =gLinkEntity + ldrb r3, [r4, #0x14] + cmp r3, #4 + beq _080A11A8 + ldr r0, _080A11A4 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _080A11BA + adds r0, r3, #2 + movs r1, #6 + ands r0, r1 + strb r0, [r4, #0x14] + b _080A11BA + .align 2, 0 +_080A11A0: .4byte gLinkEntity +_080A11A4: .4byte gUnk_030010A0 +_080A11A8: + movs r0, #0 + movs r1, #1 + strb r1, [r2, #0xc] + strb r0, [r2, #0xd] + ldr r0, _080A11BC @ =gUnk_03003F80 + adds r0, #0x8b + strb r1, [r0] + bl sub_0805E564 +_080A11BA: + pop {r4, pc} + .align 2, 0 +_080A11BC: .4byte gUnk_03003F80 + + thumb_func_start sub_080A11C0 +sub_080A11C0: @ 0x080A11C0 + push {lr} + adds r1, r0, #0 + ldr r0, _080A11D8 @ =gLinkEntity + movs r2, #0x36 + ldrsh r0, [r0, r2] + cmp r0, #0 + bne _080A11DC + adds r0, r1, #0 + bl sub_08017850 + b _080A11DE + .align 2, 0 +_080A11D8: .4byte gLinkEntity +_080A11DC: + movs r0, #0 +_080A11DE: + pop {pc} + + thumb_func_start sub_080A11E0 +sub_080A11E0: @ 0x080A11E0 + push {lr} + adds r2, r0, #0 + adds r1, r2, #0 + adds r1, #0x59 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A1202 + movs r0, #8 + strb r0, [r1] + ldrb r0, [r2, #0x1e] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r2, #0x1e] +_080A1202: + pop {pc} + + thumb_func_start sub_080A1204 +sub_080A1204: @ 0x080A1204 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r5, r0, #0 + cmp r5, #0 + bne _080A1260 + adds r0, #1 + strb r0, [r4, #0xc] + bl sub_080A1514 + lsls r0, r0, #2 + ldr r1, _080A126C @ =gUnk_08124C20 + adds r0, r0, r1 + ldrh r2, [r0] + lsls r1, r2, #4 + subs r1, r1, r2 + lsls r1, r1, #2 + adds r2, r4, #0 + adds r2, #0x68 + strh r1, [r2] + adds r1, r4, #0 + adds r1, #0x6a + strh r5, [r1] + ldrh r1, [r0, #2] + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + adds r1, r4, #0 + adds r1, #0x6e + movs r0, #1 + strh r0, [r1] + adds r0, r4, #0 + adds r0, #0x70 + movs r2, #0 + movs r1, #9 +_080A124A: + strb r2, [r0] + adds r0, #1 + subs r1, #1 + cmp r1, #0 + bge _080A124A + adds r0, r4, #0 + bl sub_0807DD64 + adds r0, r4, #0 + bl sub_0806EC20 +_080A1260: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DD94 + pop {r4, r5, pc} + .align 2, 0 +_080A126C: .4byte gUnk_08124C20 + + thumb_func_start sub_080A1270 +sub_080A1270: @ 0x080A1270 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #8 + mov sb, r0 + movs r6, #0 + ldr r0, [r0, #0x64] + str r0, [sp, #4] + mov r4, sb + adds r4, #0x70 + ldr r0, _080A12F8 @ =gUnk_03000BF0 + movs r2, #0xd8 + lsls r2, r2, #2 + adds r1, r2, #0 + ldrh r3, [r0, #6] + adds r1, r1, r3 + movs r7, #0xd4 + lsls r7, r7, #2 + adds r2, r7, #0 + ldrh r0, [r0, #8] + adds r2, r2, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + mov r8, r1 + lsls r2, r2, #0x10 + asrs r3, r2, #0x10 + movs r0, #9 + mov sl, r0 + movs r1, #1 + rsbs r1, r1, #0 + adds r5, r1, #0 +_080A12B2: + ldr r7, [sp, #4] + ldr r2, [r7] + movs r0, #0 + ldrsb r0, [r4, r0] + cmp r0, #0 + bne _080A1300 + ldr r0, [r2, #4] + cmp r0, #0 + beq _080A132C + cmp r2, #0 + beq _080A132C + movs r1, #0x2e + ldrsh r0, [r2, r1] + cmp r8, r0 + bgt _080A132E + movs r7, #0x32 + ldrsh r0, [r2, r7] + cmp r3, r0 + bgt _080A132E + ldrb r0, [r2, #0xa] + adds r0, #1 + strb r0, [r4] + movs r0, #1 + strb r0, [r2, #0xb] + adds r6, #1 + ldr r1, _080A12FC @ =gUnk_08124EC8 + ldrb r0, [r2, #0xa] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + str r3, [sp] + bl sub_080A3268 + ldr r3, [sp] + b _080A132E + .align 2, 0 +_080A12F8: .4byte gUnk_03000BF0 +_080A12FC: .4byte gUnk_08124EC8 +_080A1300: + cmp r0, #0 + ble _080A132E + adds r6, #1 + ldr r0, [r2, #4] + cmp r0, #0 + beq _080A132C + cmp r2, #0 + beq _080A132C + mov r1, r8 + adds r1, #4 + movs r7, #0x2e + ldrsh r0, [r2, r7] + cmp r1, r0 + ble _080A131E + strh r1, [r2, #0x2e] +_080A131E: + adds r1, r3, #4 + movs r7, #0x32 + ldrsh r0, [r2, r7] + cmp r1, r0 + ble _080A132E + strh r1, [r2, #0x32] + b _080A132E +_080A132C: + strb r5, [r4] +_080A132E: + movs r0, #1 + rsbs r0, r0, #0 + add sl, r0 + adds r4, #1 + ldr r1, [sp, #4] + adds r1, #4 + str r1, [sp, #4] + mov r2, sl + cmp r2, #0 + bge _080A12B2 + mov r0, sb + adds r0, #0x6a + strh r6, [r0] + ldr r0, _080A136C @ =gUnk_03003F80 + adds r0, #0x27 + movs r1, #0xff + strb r1, [r0] + mov r1, sb + adds r1, #0x68 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bgt _080A1370 + movs r0, #0xe2 + bl sub_080A3268 + bl sub_08050384 + b _080A1376 + .align 2, 0 +_080A136C: .4byte gUnk_03003F80 +_080A1370: + ldr r1, _080A1384 @ =gUnk_02033280 + movs r0, #0 + strb r0, [r1, #6] +_080A1376: + add sp, #8 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A1384: .4byte gUnk_02033280 + + thumb_func_start sub_080A1388 +sub_080A1388: @ 0x080A1388 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r5, #0x70 + ldr r4, [r0, #0x64] + movs r6, #9 +_080A1392: + ldr r1, [r4] + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, #0 + blt _080A13A6 + cmp r1, #0 + beq _080A13A6 + adds r0, r1, #0 + bl sub_0805E79C +_080A13A6: + subs r6, #1 + adds r5, #1 + adds r4, #4 + cmp r6, #0 + bge _080A1392 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A13B4 +sub_080A13B4: @ 0x080A13B4 + push {r4, lr} + adds r4, r1, #0 + adds r1, r0, #0 + adds r1, #0x6a + adds r0, #0x6c + movs r2, #0 + ldrsh r1, [r1, r2] + movs r2, #0 + ldrsh r0, [r0, r2] + cmp r1, r0 + blt _080A13D8 + ldr r0, _080A13D4 @ =0x0000300C + bl sub_08056378 + movs r0, #1 + b _080A13E0 + .align 2, 0 +_080A13D4: .4byte 0x0000300C +_080A13D8: + ldr r0, _080A13E4 @ =0x00003005 + bl sub_08056378 + movs r0, #0 +_080A13E0: + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 +_080A13E4: .4byte 0x00003005 + + thumb_func_start sub_080A13E8 +sub_080A13E8: @ 0x080A13E8 + push {r4, r5, r6, lr} + adds r5, r0, #0 + bl sub_080A1514 + lsls r0, r0, #2 + ldr r1, _080A1408 @ =gUnk_08124EA0 + adds r4, r0, r1 + movs r6, #0 + ldrb r0, [r4] + cmp r0, #0x5c + beq _080A141C + cmp r0, #0x5c + bgt _080A140C + cmp r0, #0x3f + beq _080A1412 + b _080A1444 + .align 2, 0 +_080A1408: .4byte gUnk_08124EA0 +_080A140C: + cmp r0, #0x63 + beq _080A1430 + b _080A1444 +_080A1412: + ldr r0, _080A1418 @ =gUnk_02002A40 + adds r0, #0xbb + b _080A1424 + .align 2, 0 +_080A1418: .4byte gUnk_02002A40 +_080A141C: + ldr r0, _080A142C @ =gUnk_02002A40 + movs r1, #0x8b + lsls r1, r1, #1 + adds r0, r0, r1 +_080A1424: + ldrb r0, [r0] + cmp r0, #0 + beq _080A1444 + b _080A1454 + .align 2, 0 +_080A142C: .4byte gUnk_02002A40 +_080A1430: + movs r0, #0x4f + bl GetProgressFlag + cmp r0, #0 + bne _080A1442 + movs r0, #0x4f + bl sub_0807CD04 + b _080A1444 +_080A1442: + movs r6, #1 +_080A1444: + cmp r6, #0 + bne _080A1454 + ldrb r0, [r4] + ldrb r1, [r4, #1] + movs r2, #0 + bl sub_080A7C18 + b _080A145C +_080A1454: + adds r1, r5, #0 + adds r1, #0x6e + movs r0, #2 + strh r0, [r1] +_080A145C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A1460 +sub_080A1460: @ 0x080A1460 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080A1514 + adds r1, r5, #0 + adds r1, #0x70 + movs r4, #0 + ldr r3, _080A149C @ =gUnk_08124ECC + movs r2, #9 +_080A1472: + movs r0, #0 + ldrsb r0, [r1, r0] + adds r0, r0, r3 + ldrb r0, [r0] + adds r4, r4, r0 + adds r1, #1 + subs r2, #1 + cmp r2, #0 + bge _080A1472 + adds r0, r4, #0 + bl sub_080526CC + ldr r0, _080A14A0 @ =0x00003007 + adds r1, r5, #0 + bl sub_08056398 + ldr r1, _080A14A4 @ =gUnk_02000050 + lsls r0, r4, #0x10 + lsrs r0, r0, #0x10 + str r0, [r1, #0x10] + pop {r4, r5, pc} + .align 2, 0 +_080A149C: .4byte gUnk_08124ECC +_080A14A0: .4byte 0x00003007 +_080A14A4: .4byte gUnk_02000050 + + thumb_func_start sub_080A14A8 +sub_080A14A8: @ 0x080A14A8 + push {r4, lr} + bl sub_080A1514 + adds r4, r0, #0 + adds r4, #1 + cmp r4, #9 + ble _080A14B8 + movs r4, #9 +_080A14B8: + movs r0, #1 + ands r0, r4 + cmp r0, #0 + beq _080A14C8 + movs r0, #0x4b + bl sub_0807CD04 + b _080A14CE +_080A14C8: + movs r0, #0x4b + bl sub_0807CD80 +_080A14CE: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _080A14DE + movs r0, #0x4c + bl sub_0807CD04 + b _080A14E4 +_080A14DE: + movs r0, #0x4c + bl sub_0807CD80 +_080A14E4: + movs r0, #4 + ands r0, r4 + cmp r0, #0 + beq _080A14F4 + movs r0, #0x4d + bl sub_0807CD04 + b _080A14FA +_080A14F4: + movs r0, #0x4d + bl sub_0807CD80 +_080A14FA: + movs r0, #8 + ands r0, r4 + cmp r0, #0 + beq _080A150A + movs r0, #0x4e + bl sub_0807CD04 + b _080A1510 +_080A150A: + movs r0, #0x4e + bl sub_0807CD80 +_080A1510: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A1514 +sub_080A1514: @ 0x080A1514 + push {r4, lr} + movs r0, #0x4b + bl GetProgressFlag + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r4, r1, #0x1f + movs r0, #0x4c + bl GetProgressFlag + cmp r0, #0 + beq _080A1530 + movs r0, #2 + orrs r4, r0 +_080A1530: + movs r0, #0x4d + bl GetProgressFlag + cmp r0, #0 + beq _080A153E + movs r0, #4 + orrs r4, r0 +_080A153E: + movs r0, #0x4e + bl GetProgressFlag + cmp r0, #0 + beq _080A154C + movs r0, #8 + orrs r4, r0 +_080A154C: + adds r0, r4, #0 + pop {r4, pc} + + thumb_func_start sub_080A1550 +sub_080A1550: @ 0x080A1550 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + mov r8, r1 + movs r0, #0 + str r0, [r1, #0x14] + movs r0, #0xb9 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A15FE + movs r0, #0x28 + bl sub_0801D8E0 + str r0, [r4, #0x64] + cmp r0, #0 + bne _080A1582 + adds r0, r4, #0 + bl sub_0805E79C + b _080A15FE +_080A1582: + mov r0, r8 + ldr r1, [r0, #4] + adds r0, r4, #0 + bl sub_0807DAD0 + adds r1, r4, #0 + adds r1, #0x84 + str r0, [r1] + bl sub_080A1514 + lsls r1, r0, #4 + subs r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080A15B4 @ =gUnk_08124C48 + adds r5, r1, r0 + ldr r4, [r4, #0x64] + mov sb, r4 + ldr r7, _080A15B8 @ =gUnk_03000BF0 + movs r6, #9 +_080A15A8: + movs r1, #0 + ldrsh r0, [r5, r1] + cmp r0, #0 + bgt _080A15BC + movs r4, #0 + b _080A15E6 + .align 2, 0 +_080A15B4: .4byte gUnk_08124C48 +_080A15B8: .4byte gUnk_03000BF0 +_080A15BC: + movs r0, #0 + ldrsh r1, [r5, r0] + subs r1, #1 + movs r0, #0x41 + bl sub_0804AA60 + adds r4, r0, #0 + cmp r4, #0 + beq _080A15E6 + ldrh r0, [r5, #2] + ldrh r1, [r7, #6] + adds r0, r0, r1 + strh r0, [r4, #0x2e] + ldrh r0, [r5, #4] + ldrh r1, [r7, #8] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] +_080A15E6: + mov r0, sb + adds r0, #4 + mov sb, r0 + subs r0, #4 + stm r0!, {r4} + subs r6, #1 + adds r5, #6 + cmp r6, #0 + bge _080A15A8 + movs r0, #1 + mov r1, r8 + str r0, [r1, #0x14] +_080A15FE: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080A1608 +sub_080A1608: @ 0x080A1608 + push {r4, lr} + ldr r4, _080A163C @ =0x00003002 + movs r0, #1 + bl sub_0807CC3C + cmp r0, #0 + beq _080A1618 + adds r4, #4 +_080A1618: + adds r0, r4, #0 + bl sub_08056378 + ldr r4, _080A1640 @ =gUnk_02000050 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #6] + strb r1, [r4, #7] + bl sub_080A1514 + lsls r0, r0, #2 + ldr r1, _080A1644 @ =gUnk_08124C20 + adds r0, r0, r1 + ldrh r1, [r0] + str r1, [r4, #0x10] + ldrh r0, [r0, #2] + str r0, [r4, #0x14] + pop {r4, pc} + .align 2, 0 +_080A163C: .4byte 0x00003002 +_080A1640: .4byte gUnk_02000050 +_080A1644: .4byte gUnk_08124C20 + + thumb_func_start sub_080A1648 +sub_080A1648: @ 0x080A1648 + push {r4, lr} + ldr r4, _080A1684 @ =0x0000407F + ldr r1, _080A1688 @ =0x00000D36 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _080A168C @ =0x00000D37 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _080A1690 @ =0x00000D38 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + subs r4, #1 + ldr r1, _080A1694 @ =0x00000D75 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + ldr r1, _080A1698 @ =0x00000E75 + adds r0, r4, #0 + movs r2, #1 + bl sub_0807B314 + pop {r4, pc} + .align 2, 0 +_080A1684: .4byte 0x0000407F +_080A1688: .4byte 0x00000D36 +_080A168C: .4byte 0x00000D37 +_080A1690: .4byte 0x00000D38 +_080A1694: .4byte 0x00000D75 +_080A1698: .4byte 0x00000E75 + + thumb_func_start sub_080A169C +sub_080A169C: @ 0x080A169C + push {lr} + ldr r0, _080A16C8 @ =0x00000D36 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _080A16CC @ =0x00000D37 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _080A16D0 @ =0x00000D38 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _080A16D4 @ =0x00000D75 + movs r1, #1 + bl sub_0807BA8C + ldr r0, _080A16D8 @ =0x00000E75 + movs r1, #1 + bl sub_0807BA8C + pop {pc} + .align 2, 0 +_080A16C8: .4byte 0x00000D36 +_080A16CC: .4byte 0x00000D37 +_080A16D0: .4byte 0x00000D38 +_080A16D4: .4byte 0x00000D75 +_080A16D8: .4byte 0x00000E75 + + thumb_func_start sub_080A16DC +sub_080A16DC: @ 0x080A16DC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080A1700 @ =gUnk_08124ED0 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080A1DCC + adds r0, r4, #0 + bl sub_080A1C9C + pop {r4, pc} + .align 2, 0 +_080A1700: .4byte gUnk_08124ED0 + + thumb_func_start sub_080A1704 +sub_080A1704: @ 0x080A1704 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + movs r0, #0x7b + bl sub_0807CBE4 + cmp r0, #0 + beq _080A171E + bl sub_0805E780 +_080A171E: + ldr r0, _080A1828 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x45 + bhi _080A181C + movs r0, #0x40 + bl sub_0801D8E0 + adds r7, r0, #0 + cmp r7, #0 + beq _080A181C + movs r6, #0 + movs r0, #1 + mov sb, r0 + mov r2, sb + mov r1, sl + strb r2, [r1, #0xc] + str r7, [r1, #0x64] + adds r1, #0x6e + movs r3, #0 + mov r8, r3 + movs r0, #0x96 + lsls r0, r0, #2 + strh r0, [r1] + mov r0, sl + adds r0, #0x6c + strh r6, [r0] + mov r0, sl + str r0, [r7] + movs r0, #0x5c + movs r1, #0 + bl sub_0804AA60 + adds r1, r0, #0 + str r7, [r1, #0x64] + str r1, [r7, #4] + movs r0, #0x5d + movs r1, #0 + bl sub_0804AA60 + adds r1, r0, #0 + ldr r4, _080A182C @ =gUnk_03000BF0 + movs r2, #0x80 + lsls r2, r2, #2 + adds r5, r2, #0 + ldrh r3, [r4, #6] + adds r0, r5, r3 + strh r0, [r1, #0x2e] + movs r2, #0xcc + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r3, [r4, #8] + adds r0, r0, r3 + strh r0, [r1, #0x32] + str r7, [r1, #0x64] + str r1, [r7, #8] + movs r0, #0x5d + movs r1, #1 + bl sub_0804AA60 + adds r1, r0, #0 + movs r2, #0x98 + lsls r2, r2, #2 + adds r0, r2, #0 + ldrh r3, [r4, #6] + adds r0, r0, r3 + strh r0, [r1, #0x2e] + adds r2, #0xb0 + adds r0, r2, #0 + ldrh r3, [r4, #8] + adds r0, r0, r3 + strh r0, [r1, #0x32] + str r7, [r1, #0x64] + str r1, [r7, #0xc] + ldr r2, _080A1830 @ =gUnk_03000F50 + ldr r0, _080A1834 @ =0x00001E07 + strh r0, [r2, #0x2c] + ldrh r0, [r2] + movs r3, #0x80 + lsls r3, r3, #4 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + mov r0, sl + adds r0, #0x70 + strh r6, [r0] + adds r0, #2 + strh r6, [r0] + adds r0, #2 + mov r1, r8 + strb r1, [r0] + adds r0, #6 + strb r1, [r0] + subs r0, #4 + movs r1, #0xc0 + strh r1, [r0] + adds r0, #2 + strh r1, [r0] + ldr r0, _080A1838 @ =gUnk_030010A0 + adds r0, #0x39 + mov r2, sb + strb r2, [r0] + ldr r2, _080A183C @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + movs r1, #0x80 + lsls r1, r1, #0xa + orrs r0, r1 + str r0, [r2, #0x30] + ldrh r3, [r4, #6] + adds r5, r5, r3 + strh r5, [r2, #0x16] + movs r1, #0x84 + lsls r1, r1, #2 + adds r0, r1, #0 + ldrh r4, [r4, #8] + adds r0, r0, r4 + strh r0, [r2, #0x18] + ldr r0, _080A1840 @ =0x80100000 + bl sub_080A3268 + ldr r0, _080A1844 @ =gUnk_02033A90 + movs r2, #0x86 + lsls r2, r2, #4 + adds r1, r0, r2 + ldr r3, _080A1848 @ =0x00000864 + adds r0, r0, r3 + ldr r0, [r0] + str r0, [r1] +_080A181C: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A1828: .4byte gUnk_03003DBC +_080A182C: .4byte gUnk_03000BF0 +_080A1830: .4byte gUnk_03000F50 +_080A1834: .4byte 0x00001E07 +_080A1838: .4byte gUnk_030010A0 +_080A183C: .4byte gUnk_03003F80 +_080A1840: .4byte 0x80100000 +_080A1844: .4byte gUnk_02033A90 +_080A1848: .4byte 0x00000864 + + thumb_func_start sub_080A184C +sub_080A184C: @ 0x080A184C + push {lr} + adds r3, r0, #0 + adds r1, r3, #0 + adds r1, #0x6e + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A1874 + movs r0, #2 + strb r0, [r3, #0xc] + subs r1, #2 + movs r2, #8 + movs r0, #8 + strh r0, [r1] + ldr r0, [r3, #0x64] + ldr r0, [r0, #4] + adds r0, #0x45 + strb r2, [r0] +_080A1874: + ldr r2, _080A1894 @ =gUnk_03003F80 + ldr r1, _080A1898 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + pop {pc} + .align 2, 0 +_080A1894: .4byte gUnk_03003F80 +_080A1898: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A189C +sub_080A189C: @ 0x080A189C + push {lr} + adds r3, r0, #0 + ldr r0, [r3, #0x64] + ldr r0, [r0, #4] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080A18E6 + movs r0, #3 + strb r0, [r3, #0xc] + movs r0, #0x23 + strb r0, [r3, #0xe] + adds r1, r3, #0 + adds r1, #0x6c + movs r2, #1 + movs r0, #1 + strh r0, [r1] + adds r1, #0xc + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0x7b + strb r2, [r0] + ldr r0, [r3, #0x64] + ldr r0, [r0, #8] + adds r0, #0x45 + movs r1, #0xc + strb r1, [r0] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x96 + movs r1, #1 + bl sub_08080964 +_080A18E6: + ldr r2, _080A1904 @ =gUnk_03003F80 + ldr r1, _080A1908 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + pop {pc} + .align 2, 0 +_080A1904: .4byte gUnk_03003F80 +_080A1908: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A190C +sub_080A190C: @ 0x080A190C + push {r4, lr} + adds r4, r0, #0 + bl sub_080A1FF0 + ldr r3, [r4, #0x64] + ldr r2, [r3, #8] + adds r0, r2, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080A197C + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080A20B8 + cmp r0, #0 + beq _080A1956 + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x6c + movs r0, #0x10 + strh r0, [r1] + adds r1, #0xc + movs r0, #0xc0 + strh r0, [r1] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + ldrb r1, [r0, #0x14] + adds r0, r4, #0 + bl sub_080A1D70 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + adds r0, #0x45 + movs r1, #0x18 + strb r1, [r0] +_080A1956: + ldr r2, _080A1974 @ =gUnk_03003F80 + ldr r1, _080A1978 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + b _080A1988 + .align 2, 0 +_080A1974: .4byte gUnk_03003F80 +_080A1978: .4byte gUnk_03000BF0 +_080A197C: + ldr r1, _080A198C @ =gUnk_03003F80 + ldrh r0, [r2, #0x2e] + strh r0, [r1, #0x16] + ldr r0, [r3, #8] + ldrh r0, [r0, #0x32] + strh r0, [r1, #0x18] +_080A1988: + pop {r4, pc} + .align 2, 0 +_080A198C: .4byte gUnk_03003F80 + + thumb_func_start sub_080A1990 +sub_080A1990: @ 0x080A1990 + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #0x64] + ldr r0, [r1, #4] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080A19D6 + ldr r0, [r1, #8] + adds r0, #0x45 + movs r1, #0xc + strb r1, [r0] + movs r0, #5 + strb r0, [r2, #0xc] + movs r0, #0x23 + strb r0, [r2, #0xe] + adds r1, r2, #0 + adds r1, #0x6c + movs r0, #2 + strh r0, [r1] + adds r1, #0xc + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1] + adds r1, #3 + movs r0, #1 + strb r0, [r1] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x96 + movs r1, #1 + bl sub_08080964 +_080A19D6: + ldr r2, _080A19F4 @ =gUnk_03003F80 + ldr r1, _080A19F8 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + pop {pc} + .align 2, 0 +_080A19F4: .4byte gUnk_03003F80 +_080A19F8: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A19FC +sub_080A19FC: @ 0x080A19FC + push {r4, lr} + adds r4, r0, #0 + bl sub_080A1FF0 + ldr r3, [r4, #0x64] + ldr r2, [r3, #0xc] + adds r0, r2, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080A1A6C + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080A20B8 + cmp r0, #0 + beq _080A1A46 + movs r0, #6 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x6c + movs r0, #0x20 + strh r0, [r1] + adds r1, #0xc + movs r0, #0xc0 + strh r0, [r1] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + ldrb r1, [r0, #0x14] + adds r0, r4, #0 + bl sub_080A1D70 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + adds r0, #0x45 + movs r1, #0x18 + strb r1, [r0] +_080A1A46: + ldr r2, _080A1A64 @ =gUnk_03003F80 + ldr r1, _080A1A68 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + b _080A1A78 + .align 2, 0 +_080A1A64: .4byte gUnk_03003F80 +_080A1A68: .4byte gUnk_03000BF0 +_080A1A6C: + ldr r1, _080A1A7C @ =gUnk_03003F80 + ldrh r0, [r2, #0x2e] + strh r0, [r1, #0x16] + ldr r0, [r3, #0xc] + ldrh r0, [r0, #0x32] + strh r0, [r1, #0x18] +_080A1A78: + pop {r4, pc} + .align 2, 0 +_080A1A7C: .4byte gUnk_03003F80 + + thumb_func_start sub_080A1A80 +sub_080A1A80: @ 0x080A1A80 + push {lr} + adds r2, r0, #0 + ldr r1, [r2, #0x64] + ldr r0, [r1, #4] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080A1AC0 + ldr r0, [r1, #0xc] + adds r0, #0x45 + movs r1, #0xc + strb r1, [r0] + movs r0, #7 + strb r0, [r2, #0xc] + movs r0, #0x23 + strb r0, [r2, #0xe] + adds r1, r2, #0 + adds r1, #0x6c + adds r0, #0xe1 + strh r0, [r1] + adds r1, #0xc + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1] + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x96 + movs r1, #1 + bl sub_08080964 +_080A1AC0: + ldr r2, _080A1AE0 @ =gUnk_03003F80 + ldr r1, _080A1AE4 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + pop {pc} + .align 2, 0 +_080A1AE0: .4byte gUnk_03003F80 +_080A1AE4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A1AE8 +sub_080A1AE8: @ 0x080A1AE8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A1FF0 + ldr r0, [r4, #0x64] + ldr r1, [r0, #0xc] + adds r0, r1, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080A1B24 + adds r0, r4, #0 + bl sub_080A20B8 + cmp r0, #0 + beq _080A1B24 + movs r0, #8 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x6c + movs r0, #0x40 + strh r0, [r1] + adds r1, #0xc + movs r0, #0xc0 + strh r0, [r1] + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + adds r0, #0x45 + movs r1, #0xc + strb r1, [r0] +_080A1B24: + ldr r2, _080A1B44 @ =gUnk_03003F80 + ldr r1, _080A1B48 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + pop {r4, pc} + .align 2, 0 +_080A1B44: .4byte gUnk_03003F80 +_080A1B48: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A1B4C +sub_080A1B4C: @ 0x080A1B4C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x64] + ldr r0, [r0, #4] + adds r0, #0x45 + ldrb r7, [r0] + cmp r7, #0 + bne _080A1BD0 + adds r5, r4, #0 + adds r5, #0x6c + ldrh r0, [r5] + cmp r0, #0 + beq _080A1B80 + movs r0, #0x2d + movs r1, #1 + bl sub_08080964 + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0xc0 + lsls r0, r0, #3 + strh r0, [r1] +_080A1B80: + movs r6, #0 + strh r7, [r5] + ldr r0, _080A1BF0 @ =gUnk_030010A0 + adds r0, #0x39 + strb r6, [r0] + bl sub_08079F8C + cmp r0, #0 + beq _080A1BD0 + ldr r3, _080A1BF4 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r3, r1] + cmp r0, #0 + bne _080A1BD0 + movs r0, #9 + strb r0, [r4, #0xc] + strb r6, [r4, #0xe] + movs r0, #0xf0 + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x6e + adds r0, #0xb4 + strh r0, [r1] + strb r6, [r4, #0x15] + movs r0, #0x60 + strh r0, [r4, #0x24] + ldr r2, _080A1BF8 @ =gUnk_03003F80 + ldr r0, [r2, #0x30] + ldr r1, _080A1BFC @ =0xFFFDFFFF + ands r0, r1 + str r0, [r2, #0x30] + adds r0, r3, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, _080A1C00 @ =gUnk_03000BF0 + str r4, [r0, #0x30] + movs r0, #2 + bl sub_08078A90 +_080A1BD0: + ldr r2, _080A1BF8 @ =gUnk_03003F80 + ldr r1, _080A1C00 @ =gUnk_03000BF0 + movs r3, #0x80 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r3, [r1, #6] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r3, #0x84 + lsls r3, r3, #2 + adds r0, r3, #0 + ldrh r1, [r1, #8] + adds r0, r0, r1 + strh r0, [r2, #0x18] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A1BF0: .4byte gUnk_030010A0 +_080A1BF4: .4byte gLinkEntity +_080A1BF8: .4byte gUnk_03003F80 +_080A1BFC: .4byte 0xFFFDFFFF +_080A1C00: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A1C04 +sub_080A1C04: @ 0x080A1C04 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x6e + ldrh r0, [r1] + cmp r0, #0 + bne _080A1C52 + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080A1E54 + ldrb r0, [r4, #0xf] + subs r1, r0, #1 + strb r1, [r4, #0xf] + lsls r0, r1, #0x18 + cmp r0, #0 + bne _080A1C40 + movs r0, #0x7b + bl sub_0807CCC8 + ldr r0, _080A1C3C @ =gUnk_0813ABD0 + movs r1, #8 + bl sub_0808091C + b _080A1C9A + .align 2, 0 +_080A1C3C: .4byte gUnk_0813ABD0 +_080A1C40: + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3c + bne _080A1C9A + movs r0, #7 + movs r1, #4 + bl sub_08050054 + b _080A1C9A +_080A1C52: + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xb3 + bhi _080A1C66 + adds r0, r4, #0 + bl sub_080A1E54 + b _080A1C9A +_080A1C66: + ldrh r1, [r1] + cmp r1, #0xb4 + beq _080A1C76 + movs r0, #0x96 + lsls r0, r0, #1 + cmp r1, r0 + beq _080A1C8A + b _080A1C9A +_080A1C76: + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0xb4 + lsls r0, r0, #2 + movs r1, #2 + bl sub_08080964 + b _080A1C9A +_080A1C8A: + movs r0, #0x94 + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #0x4b + movs r1, #1 + bl sub_08080964 +_080A1C9A: + pop {r4, pc} + + thumb_func_start sub_080A1C9C +sub_080A1C9C: @ 0x080A1C9C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r5, r4, #0 + adds r5, #0x7a + ldrb r0, [r5] + cmp r0, #0 + beq _080A1D04 + adds r0, r4, #0 + adds r0, #0x74 + adds r7, r4, #0 + adds r7, #0x75 + ldrb r1, [r0] + adds r6, r0, #0 + ldrb r0, [r7] + cmp r1, r0 + beq _080A1CE4 + subs r5, #2 + movs r0, #0 + strh r0, [r5] + adds r0, r4, #0 + movs r1, #0xc + bl sub_080A1D8C + adds r0, r4, #0 + adds r0, #0x76 + ldrh r1, [r0] + adds r2, r0, #0 + cmp r1, #0 + bne _080A1D14 + ldrb r0, [r7] + strb r0, [r6] + adds r0, r4, #0 + adds r0, #0x7c + ldrh r0, [r0] + strh r0, [r5] + b _080A1D14 +_080A1CE4: + adds r0, r4, #0 + movs r1, #0xc + bl sub_080A1D8C + adds r0, r4, #0 + adds r0, #0x78 + adds r1, r4, #0 + adds r1, #0x76 + ldrh r0, [r0] + adds r2, r1, #0 + ldrh r1, [r2] + cmp r0, r1 + bne _080A1D14 + movs r0, #0 + strb r0, [r5] + b _080A1D14 +_080A1D04: + adds r0, r4, #0 + movs r1, #8 + bl sub_080A1D8C + adds r6, r4, #0 + adds r6, #0x74 + adds r2, r4, #0 + adds r2, #0x76 +_080A1D14: + adds r3, r4, #0 + adds r3, #0x70 + ldr r5, _080A1D68 @ =gUnk_080C9160 + ldrb r0, [r6] + lsls r0, r0, #1 + adds r0, r0, r5 + movs r7, #0 + ldrsh r1, [r0, r7] + ldrh r0, [r2] + muls r0, r1, r0 + cmp r0, #0 + bge _080A1D2E + adds r0, #0xff +_080A1D2E: + asrs r0, r0, #8 + ldrh r1, [r3] + adds r0, r0, r1 + strh r0, [r3] + adds r4, #0x72 + ldrb r0, [r6] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r5 + movs r5, #0 + ldrsh r1, [r0, r5] + ldrh r0, [r2] + muls r0, r1, r0 + cmp r0, #0 + bge _080A1D4E + adds r0, #0xff +_080A1D4E: + asrs r0, r0, #8 + ldrh r1, [r4] + subs r1, r1, r0 + strh r1, [r4] + ldr r2, _080A1D6C @ =gUnk_03000F50 + ldrh r0, [r3] + lsrs r0, r0, #8 + strh r0, [r2, #0x2e] + lsls r1, r1, #0x10 + lsrs r1, r1, #0x18 + strh r1, [r2, #0x30] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A1D68: .4byte gUnk_080C9160 +_080A1D6C: .4byte gUnk_03000F50 + + thumb_func_start sub_080A1D70 +sub_080A1D70: @ 0x080A1D70 + adds r2, r0, #0 + adds r0, #0x75 + strb r1, [r0] + adds r1, r2, #0 + adds r1, #0x7a + movs r0, #1 + strb r0, [r1] + adds r0, r2, #0 + adds r0, #0x78 + ldrh r1, [r0] + adds r0, #4 + strh r1, [r0] + bx lr + .align 2, 0 + + thumb_func_start sub_080A1D8C +sub_080A1D8C: @ 0x080A1D8C + push {r4, lr} + adds r4, r1, #0 + adds r3, r0, #0 + adds r3, #0x78 + adds r2, r0, #0 + adds r2, #0x76 + ldrh r1, [r3] + ldrh r0, [r2] + cmp r1, r0 + beq _080A1DC8 + cmp r1, r0 + bls _080A1DB6 + adds r3, r0, #0 + subs r0, r1, r3 + cmp r4, r0 + bge _080A1DB2 + adds r0, r3, r4 + strh r0, [r2] + b _080A1DC8 +_080A1DB2: + strh r1, [r2] + b _080A1DC8 +_080A1DB6: + ldrh r1, [r2] + ldrh r3, [r3] + subs r0, r1, r3 + cmp r4, r0 + bge _080A1DC6 + subs r0, r1, r4 + strh r0, [r2] + b _080A1DC8 +_080A1DC6: + strh r3, [r2] +_080A1DC8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A1DCC +sub_080A1DCC: @ 0x080A1DCC + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x64] + ldr r3, [r1, #8] + cmp r3, #0 + bne _080A1DDE + ldr r3, [r1, #0xc] + cmp r3, #0 + beq _080A1E24 +_080A1DDE: + adds r0, r3, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _080A1E24 + ldrb r0, [r3, #0x19] + lsrs r0, r0, #6 + cmp r0, #2 + bne _080A1E24 + ldr r3, [r1, #0x10] + ldrb r2, [r3, #0x10] + movs r1, #0x7f + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0x10] + ldr r0, [r4, #0x64] + ldr r3, [r0, #0x14] + ldrb r2, [r3, #0x10] + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0x10] + ldr r3, [r3, #0x54] + ldrb r2, [r3, #0x10] + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0x10] + ldr r3, [r3, #0x54] + ldrb r2, [r3, #0x10] + adds r0, r1, #0 + ands r0, r2 + strb r0, [r3, #0x10] + ldr r3, [r3, #0x54] + ldrb r0, [r3, #0x10] + ands r1, r0 + b _080A1E50 +_080A1E24: + ldr r0, [r4, #0x64] + ldr r2, [r0, #0x10] + ldrb r0, [r2, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + ldr r0, [r4, #0x64] + ldr r3, [r0, #0x14] + ldrb r0, [r3, #0x10] + orrs r0, r1 + strb r0, [r3, #0x10] + ldr r3, [r3, #0x54] + ldrb r0, [r3, #0x10] + orrs r0, r1 + strb r0, [r3, #0x10] + ldr r3, [r3, #0x54] + ldrb r0, [r3, #0x10] + orrs r0, r1 + strb r0, [r3, #0x10] + ldr r3, [r3, #0x54] + ldrb r0, [r3, #0x10] + orrs r1, r0 +_080A1E50: + strb r1, [r3, #0x10] + pop {r4, pc} + + thumb_func_start sub_080A1E54 +sub_080A1E54: @ 0x080A1E54 + push {r4, r5, lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xe] + adds r0, #1 + strb r0, [r2, #0xe] + movs r1, #0xff + ands r0, r1 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0 + bne _080A1ECA + adds r0, r2, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _080A1ECA + bl sub_08000E50 + ldr r3, _080A1ECC @ =gUnk_03000BF0 + movs r1, #0xf0 + adds r2, r0, #0 + ands r2, r1 + movs r5, #0x80 + lsls r5, r5, #2 + adds r1, r5, #0 + adds r2, r2, r1 + ldrh r1, [r3, #6] + adds r1, r1, r2 + subs r1, #0x78 + strh r1, [r4, #0x2e] + lsrs r0, r0, #8 + movs r1, #0x70 + ands r0, r1 + movs r1, #0x84 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrh r3, [r3, #8] + adds r0, r0, r3 + subs r0, #0x38 + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #5 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 +_080A1ECA: + pop {r4, r5, pc} + .align 2, 0 +_080A1ECC: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A1ED0 +sub_080A1ED0: @ 0x080A1ED0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #4 + mov sb, r1 + adds r5, r2, #0 + movs r1, #0 + str r1, [sp] + ldr r4, _080A1F60 @ =gUnk_08124EF8 + lsls r1, r5, #2 + adds r1, r1, r4 + ldrh r2, [r1] + ldr r3, _080A1F64 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + adds r2, r2, r1 + mov sl, r2 + lsls r1, r5, #1 + adds r1, #1 + lsls r1, r1, #1 + adds r1, r1, r4 + ldrh r2, [r1] + ldrh r1, [r3, #8] + adds r2, r2, r1 + mov r8, r2 + ldr r1, _080A1F68 @ =gUnk_08124FF0 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r4, [r0] + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + beq _080A1FB0 + lsls r7, r5, #3 + movs r0, #0x10 + adds r6, r7, #0 + eors r6, r0 +_080A1F1C: + movs r0, #0x60 + mov r1, sb + bl sub_0804AA60 + adds r2, r0, #0 + cmp r2, #0 + beq _080A1FA6 + mov r0, sp + ldrb r0, [r0] + strb r0, [r2, #0xb] + ldr r1, [sp] + adds r1, #1 + str r1, [sp] + mov r0, sl + strh r0, [r2, #0x2e] + mov r1, r8 + strh r1, [r2, #0x32] + strb r7, [r2, #0x15] + adds r0, r2, #0 + adds r0, #0x7a + strb r6, [r0] + ldrh r1, [r4, #4] + subs r0, #2 + strh r1, [r0] + cmp r5, #1 + beq _080A1F7A + cmp r5, #1 + blo _080A1F6C + cmp r5, #2 + beq _080A1F80 + cmp r5, #3 + beq _080A1F94 + b _080A1FA6 + .align 2, 0 +_080A1F60: .4byte gUnk_08124EF8 +_080A1F64: .4byte gUnk_03000BF0 +_080A1F68: .4byte gUnk_08124FF0 +_080A1F6C: + ldrh r1, [r4] + adds r0, r2, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r4, #2] + rsbs r0, r0, #0 + b _080A1F8C +_080A1F7A: + ldrh r0, [r4, #2] + adds r0, #0xf0 + b _080A1F98 +_080A1F80: + ldrh r1, [r4] + adds r0, r2, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r4, #2] + adds r0, #0xa0 +_080A1F8C: + adds r1, r2, #0 + adds r1, #0x76 + strh r0, [r1] + b _080A1FA6 +_080A1F94: + ldrh r0, [r4, #2] + rsbs r0, r0, #0 +_080A1F98: + adds r1, r2, #0 + adds r1, #0x74 + strh r0, [r1] + ldrh r1, [r4] + adds r0, r2, #0 + adds r0, #0x76 + strh r1, [r0] +_080A1FA6: + adds r4, #6 + movs r1, #0 + ldrsh r0, [r4, r1] + cmp r0, #1 + bne _080A1F1C +_080A1FB0: + mov r0, sb + cmp r0, #0 + bne _080A1FE4 + movs r0, #0xf + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _080A1FE4 + mov r1, sl + strh r1, [r2, #0x2e] + mov r0, r8 + strh r0, [r2, #0x32] + ldrb r0, [r2, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r2, #0x1b] + ldrb r0, [r2, #0x19] + orrs r0, r1 + strb r0, [r2, #0x19] + adds r1, r2, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] +_080A1FE4: + add sp, #4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080A1FF0 +sub_080A1FF0: @ 0x080A1FF0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xe] + cmp r0, #0 + beq _080A2066 + subs r1, r0, #1 + strb r1, [r5, #0xe] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x20 + bhi _080A2066 + movs r0, #0xf + ands r1, r0 + cmp r1, #0 + bne _080A2066 + adds r0, r5, #0 + movs r1, #0x51 + movs r2, #0 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _080A2066 + bl sub_08000E50 + ldr r3, _080A209C @ =gUnk_03000BF0 + movs r1, #0x78 + ands r0, r1 + movs r1, #0x80 + lsls r1, r1, #2 + adds r2, r1, #0 + adds r2, r0, r2 + ldrh r1, [r3, #6] + adds r1, r1, r2 + subs r1, #0x3c + strh r1, [r4, #0x2e] + movs r1, #0x84 + lsls r1, r1, #2 + adds r0, r0, r1 + ldrh r3, [r3, #8] + adds r0, r0, r3 + subs r0, #0x3c + strh r0, [r4, #0x32] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 +_080A2066: + adds r4, r5, #0 + adds r4, #0x7b + ldrb r0, [r4] + cmp r0, #0 + beq _080A20B4 + ldr r0, _080A20A0 @ =gLinkEntity + ldr r2, _080A209C @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + movs r3, #0x80 + lsls r3, r3, #2 + adds r1, r1, r3 + ldrh r2, [r2, #8] + adds r3, #0x10 + adds r2, r2, r3 + movs r3, #0x80 + lsls r3, r3, #1 + bl sub_0806FCB8 + cmp r0, #0 + beq _080A20B2 + ldrb r0, [r5, #0xe] + cmp r0, #0 + bne _080A20A4 + movs r0, #0x78 + strb r0, [r5, #0xe] + b _080A20B4 + .align 2, 0 +_080A209C: .4byte gUnk_03000BF0 +_080A20A0: .4byte gLinkEntity +_080A20A4: + cmp r0, #0x23 + bne _080A20B4 + movs r0, #0x1e + movs r1, #0 + bl sub_08080964 + b _080A20B4 +_080A20B2: + strb r0, [r4] +_080A20B4: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A20B8 +sub_080A20B8: @ 0x080A20B8 + push {r4, lr} + adds r4, r1, #0 + cmp r4, #0 + bne _080A20C4 + movs r0, #1 + b _080A20FA +_080A20C4: + bl sub_08079F8C + cmp r0, #0 + beq _080A20F8 + ldr r0, _080A20F0 @ =gLinkEntity + movs r1, #0x36 + ldrsh r0, [r0, r1] + cmp r0, #0 + bne _080A20F8 + movs r1, #0 + adds r0, r4, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + bne _080A20EC + ldr r0, _080A20F4 @ =gUnk_03003F80 + ldrb r1, [r0, #0x14] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r1, r0, #0x1f +_080A20EC: + adds r0, r1, #0 + b _080A20FA + .align 2, 0 +_080A20F0: .4byte gLinkEntity +_080A20F4: .4byte gUnk_03003F80 +_080A20F8: + movs r0, #0 +_080A20FA: + pop {r4, pc} + + thumb_func_start sub_080A20FC +sub_080A20FC: @ 0x080A20FC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r1, r0, #0 + cmp r1, #0 + bne _080A2114 + adds r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0x1e] + adds r0, r4, #0 + bl sub_0807DD64 +_080A2114: + adds r0, r4, #0 + movs r1, #0 + bl sub_0807DDAC + adds r0, r4, #0 + bl sub_0807DDE4 + pop {r4, pc} + + thumb_func_start sub_080A2124 +sub_080A2124: @ 0x080A2124 + push {lr} + ldr r3, _080A2134 @ =gUnk_08125010 + movs r1, #1 + movs r2, #0xe + bl sub_08078850 + pop {pc} + .align 2, 0 +_080A2134: .4byte gUnk_08125010 + + thumb_func_start sub_080A2138 +sub_080A2138: @ 0x080A2138 + push {r4, lr} + adds r4, r0, #0 + movs r0, #0x72 + bl sub_080A3268 + ldr r2, _080A2160 @ =gUnk_02002A40 + ldrb r0, [r4, #0xb] + adds r0, #0x18 + movs r1, #1 + lsls r1, r0 + ldr r0, [r2, #0x40] + orrs r0, r1 + str r0, [r2, #0x40] + adds r0, r4, #0 + movs r1, #0x46 + movs r2, #0 + bl CreateFX + pop {r4, pc} + .align 2, 0 +_080A2160: .4byte gUnk_02002A40 + + thumb_func_start sub_080A2164 +sub_080A2164: @ 0x080A2164 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080A21DC + adds r1, r4, #0 + adds r1, #0x86 + ldrh r0, [r1] + cmp r0, #0 + beq _080A2180 + bl sub_0807CBE4 + cmp r0, #0 + beq _080A224E +_080A2180: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x19] + subs r0, #0xe + ands r0, r1 + movs r1, #8 + orrs r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r4, #0x19] + movs r0, #3 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x10] + movs r0, #0x20 + orrs r0, r1 + strb r0, [r4, #0x10] + ldr r0, _080A21D4 @ =gUnk_03000BF0 + ldrb r0, [r0, #5] + strb r0, [r4, #0xf] + movs r0, #2 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x68 + ldr r0, _080A21D8 @ =0x0000FFFE + strh r0, [r1] + adds r1, #2 + movs r0, #0x80 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0x80 + movs r2, #0x80 + movs r3, #0 + bl sub_0805EC9C + b _080A221E + .align 2, 0 +_080A21D4: .4byte gUnk_03000BF0 +_080A21D8: .4byte 0x0000FFFE +_080A21DC: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A221E + movs r0, #2 + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x6a + adds r2, r4, #0 + adds r2, #0x68 + ldrh r0, [r2] + ldrh r3, [r1] + adds r0, r0, r3 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x77 + bhi _080A2208 + movs r0, #1 + strh r0, [r2] +_080A2208: + ldrh r0, [r1] + cmp r0, #0x88 + bls _080A2212 + ldr r0, _080A2250 @ =0x0000FFFF + strh r0, [r2] +_080A2212: + ldrh r2, [r1] + adds r0, r4, #0 + adds r1, r2, #0 + movs r3, #0 + bl sub_0805EC9C +_080A221E: + ldr r2, _080A2254 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #8 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + adds r2, #0x62 + ldrb r0, [r2] + movs r3, #0xdc + lsls r3, r3, #6 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r1, _080A2258 @ =gUnk_03000BF0 + ldrb r0, [r1, #5] + ldrb r4, [r4, #0xf] + cmp r0, r4 + beq _080A224E + ldrh r0, [r1] + cmp r0, #0 + bne _080A224E + bl sub_0805E780 +_080A224E: + pop {r4, pc} + .align 2, 0 +_080A2250: .4byte 0x0000FFFF +_080A2254: .4byte gUnk_03000F50 +_080A2258: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A225C +sub_080A225C: @ 0x080A225C + push {lr} + ldr r2, _080A2270 @ =gUnk_0812503C + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A2270: .4byte gUnk_0812503C + + thumb_func_start sub_080A2274 +sub_080A2274: @ 0x080A2274 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _080A22AE + adds r0, r1, #0 + bl sub_080A2340 + movs r0, #0xbd + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #3 + cmp r0, #1 + bne _080A229C + movs r1, #2 +_080A229C: + movs r0, #0xbd + movs r2, #0 + bl sub_080A2960 + movs r0, #0xbd + movs r1, #4 + movs r2, #0 + bl sub_080A2960 +_080A22AE: + pop {pc} + + thumb_func_start sub_080A22B0 +sub_080A22B0: @ 0x080A22B0 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xc] + cmp r0, #0 + bne _080A22C0 + adds r0, r1, #0 + bl sub_080A2340 +_080A22C0: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A22C4 +sub_080A22C4: @ 0x080A22C4 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r5, [r4, #0xc] + cmp r5, #0 + beq _080A22FC + cmp r5, #1 + beq _080A231C + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A233E + movs r0, #8 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xf] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0xf] + ldrb r1, [r4, #0xd] + adds r0, r1, r0 + strb r0, [r4, #0x1e] + lsls r1, r1, #0x18 + lsls r0, r0, #0x18 + cmp r1, r0 + bne _080A233E + b _080A233A +_080A22FC: + adds r0, r4, #0 + bl sub_080A2340 + movs r0, #8 + strb r0, [r4, #0xe] + strb r5, [r4, #0xf] + ldrb r0, [r4, #0x1e] + strb r0, [r4, #0xd] + bl sub_08000E50 + movs r1, #3 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #0x1e + strh r0, [r4, #0x24] + b _080A233E +_080A231C: + ldrh r0, [r4, #0x24] + subs r0, #1 + strh r0, [r4, #0x24] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A233E + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #0x1e + strh r0, [r4, #0x24] + movs r0, #2 + b _080A233C +_080A233A: + movs r0, #1 +_080A233C: + strb r0, [r4, #0xc] +_080A233E: + pop {r4, r5, pc} + + thumb_func_start sub_080A2340 +sub_080A2340: @ 0x080A2340 + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + ldr r2, _080A239C @ =gUnk_08125014 + adds r1, r1, r2 + ldrh r2, [r1] + strh r2, [r0, #0x2e] + ldrh r2, [r1, #2] + strh r2, [r0, #0x32] + ldrh r2, [r1, #4] + strb r2, [r0, #0x1e] + ldrb r1, [r1, #6] + movs r2, #0x29 + adds r2, r2, r0 + mov ip, r2 + movs r2, #7 + ands r2, r1 + mov r1, ip + ldrb r3, [r1] + movs r1, #8 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + mov r2, ip + strb r1, [r2] + ldrb r3, [r0, #0x19] + movs r2, #0x3f + adds r1, r2, #0 + ands r1, r3 + movs r3, #0x40 + orrs r1, r3 + strb r1, [r0, #0x19] + ldrb r1, [r0, #0x1b] + ands r2, r1 + orrs r2, r3 + strb r2, [r0, #0x1b] + ldrb r2, [r0, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r2 + movs r2, #2 + orrs r1, r2 + strb r1, [r0, #0x18] + movs r1, #1 + strb r1, [r0, #0xc] + bx lr + .align 2, 0 +_080A239C: .4byte gUnk_08125014 + + thumb_func_start sub_080A23A0 +sub_080A23A0: @ 0x080A23A0 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _080A23C0 + ldr r0, _080A23D4 @ =gUnk_020342F8 + subs r1, #1 + bl sub_0801D5A8 + cmp r0, #0 + bne _080A23C0 + bl sub_0805E780 +_080A23C0: + ldr r0, _080A23D8 @ =gUnk_0812505C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A23D4: .4byte gUnk_020342F8 +_080A23D8: .4byte gUnk_0812505C + + thumb_func_start sub_080A23DC +sub_080A23DC: @ 0x080A23DC + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080A240C @ =gUnk_08125050 + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r2, r4, #0 + adds r2, #0x68 + strh r0, [r2] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] + ldrh r0, [r2] + bl sub_0807CBD0 + cmp r0, #0 + beq _080A2410 + movs r0, #2 + b _080A2412 + .align 2, 0 +_080A240C: .4byte gUnk_08125050 +_080A2410: + movs r0, #1 +_080A2412: + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A2420 +sub_080A2420: @ 0x080A2420 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x68 + ldrh r0, [r0] + bl sub_0807CBD0 + cmp r0, #0 + beq _080A243A + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080A29BC +_080A243A: + pop {r4, pc} + + thumb_func_start sub_080A243C +sub_080A243C: @ 0x080A243C + push {lr} + bl sub_08004274 + pop {pc} + + thumb_func_start nullsub_538 +nullsub_538: @ 0x080A2444 + bx lr + .align 2, 0 + + thumb_func_start sub_080A2448 +sub_080A2448: @ 0x080A2448 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080A245E + adds r0, r5, #0 + bl sub_080A2500 +_080A245E: + ldrb r0, [r5, #0xc] + adds r1, r0, #0 + cmp r1, #0 + bne _080A24CE + adds r0, #1 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0xe] + strb r0, [r5, #0xa] + str r1, [r5, #0x54] + ldr r2, _080A24B4 @ =gUnk_03003D90 + ldr r4, [r2, #4] + cmp r4, r2 + beq _080A24BE +_080A2478: + ldrb r0, [r4, #8] + cmp r0, #3 + bne _080A24B8 + ldrb r0, [r5, #0xb] + ldrb r1, [r4, #9] + cmp r0, r1 + bne _080A24B8 + movs r3, #0x2e + ldrsh r0, [r4, r3] + movs r3, #0x2e + ldrsh r1, [r5, r3] + subs r0, r0, r1 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1f + bhi _080A24B8 + movs r1, #0x32 + ldrsh r0, [r4, r1] + movs r3, #0x32 + ldrsh r1, [r5, r3] + subs r0, r0, r1 + adds r0, #0x10 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0x1f + bhi _080A24B8 + str r4, [r5, #0x54] + b _080A24BE + .align 2, 0 +_080A24B4: .4byte gUnk_03003D90 +_080A24B8: + ldr r4, [r4, #4] + cmp r4, r2 + bne _080A2478 +_080A24BE: + ldr r0, [r5, #0x54] + cmp r0, #0 + bne _080A24CA + adds r0, r5, #0 + bl sub_080A2534 +_080A24CA: + bl sub_08054564 +_080A24CE: + ldr r4, [r5, #0x54] + cmp r4, #0 + beq _080A24F6 + movs r2, #0x80 + lsls r2, r2, #0xb + movs r3, #0x80 + lsls r3, r3, #9 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 + ldrh r0, [r5, #0x36] + subs r0, #4 + strh r0, [r5, #0x36] + ldr r0, [r4, #4] + cmp r0, #0 + bne _080A24F6 + adds r0, r5, #0 + bl sub_080A2508 +_080A24F6: + adds r0, r5, #0 + bl sub_08080CB4 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A2500 +sub_080A2500: @ 0x080A2500 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080A2508 +sub_080A2508: @ 0x080A2508 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xa] + movs r1, #0 + movs r3, #0 + bl sub_080A2988 + adds r2, r0, #0 + cmp r2, #0 + beq _080A252C + movs r0, #5 + strb r0, [r2, #0xe] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x86 + strh r1, [r0] +_080A252C: + adds r0, r4, #0 + bl sub_080A2500 + pop {r4, pc} + + thumb_func_start sub_080A2534 +sub_080A2534: @ 0x080A2534 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xa] + movs r1, #0 + movs r3, #0 + bl sub_080A2988 + adds r2, r0, #0 + cmp r2, #0 + beq _080A2558 + movs r0, #4 + strb r0, [r2, #0xe] + adds r0, r4, #0 + adds r0, #0x86 + ldrh r1, [r0] + adds r0, r2, #0 + adds r0, #0x86 + strh r1, [r0] +_080A2558: + adds r0, r4, #0 + bl sub_080A2500 + pop {r4, pc} + + thumb_func_start sub_080A2560 +sub_080A2560: @ 0x080A2560 + push {lr} + ldr r2, _080A2574 @ =gUnk_08125084 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A2574: .4byte gUnk_08125084 + + thumb_func_start sub_080A2578 +sub_080A2578: @ 0x080A2578 + push {lr} + movs r1, #8 + strb r1, [r0, #0xc] + bl sub_080A259C + pop {pc} + + thumb_func_start sub_080A2584 +sub_080A2584: @ 0x080A2584 + push {lr} + bl sub_0805E564 + ldr r1, _080A2598 @ =gUnk_02034490 + movs r0, #0 + strb r0, [r1] + bl sub_0805E780 + pop {pc} + .align 2, 0 +_080A2598: .4byte gUnk_02034490 + + thumb_func_start sub_080A259C +sub_080A259C: @ 0x080A259C + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r5, _080A25DC @ =gLinkEntity + ldrb r1, [r5, #0x10] + movs r7, #0x7f + adds r0, r7, #0 + ands r0, r1 + strb r0, [r5, #0x10] + ldrb r1, [r5, #0x18] + movs r6, #4 + rsbs r6, r6, #0 + adds r0, r6, #0 + ands r0, r1 + strb r0, [r5, #0x18] + ldrb r1, [r5, #0x1a] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r0, [r4, #0xd] + cmp r0, #1 + beq _080A269C + cmp r0, #1 + bgt _080A25E0 + cmp r0, #0 + beq _080A25E6 + b _080A273C + .align 2, 0 +_080A25DC: .4byte gLinkEntity +_080A25E0: + cmp r0, #2 + beq _080A26B4 + b _080A273C +_080A25E6: + movs r0, #1 + movs r2, #1 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x18] + adds r0, r6, #0 + ands r0, r1 + orrs r0, r2 + strb r0, [r4, #0x18] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r3, r4, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1d + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r2, [r5, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x19] + ldrb r0, [r5, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x1b] + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #4 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805E3A0 + ldr r0, _080A2670 @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + cmp r0, #0 + beq _080A2678 + ldrb r0, [r4, #0xa] + bl sub_080542AC + ldr r1, _080A2674 @ =0x0000045B + cmp r0, #0 + beq _080A2688 + adds r1, #3 + b _080A2688 + .align 2, 0 +_080A2670: .4byte gUnk_03003F80 +_080A2674: .4byte 0x0000045B +_080A2678: + ldrb r0, [r4, #0xa] + bl sub_080542AC + ldr r1, _080A2698 @ =0x000001B9 + cmp r0, #0 + beq _080A2688 + movs r1, #0xb8 + lsls r1, r1, #2 +_080A2688: + lsrs r0, r1, #8 + strh r0, [r4, #0x12] + movs r0, #0xff + ands r1, r0 + adds r0, r4, #0 + bl sub_080042AC + b _080A273C + .align 2, 0 +_080A2698: .4byte 0x000001B9 +_080A269C: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r0, [r0] + cmp r0, #0 + beq _080A273C + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + b _080A273C +_080A26B4: + adds r0, r4, #0 + bl sub_080042B8 + ldr r0, _080A2764 @ =gUnk_02000050 + ldrb r1, [r0] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _080A2762 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A273C + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x69 + ldrb r0, [r0] + strb r0, [r5, #0x10] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + movs r0, #3 + ands r1, r0 + ldrb r2, [r5, #0x18] + adds r0, r6, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r5, #0x18] + adds r0, r4, #0 + adds r0, #0x6a + ldrb r1, [r0] + adds r0, r5, #0 + adds r0, #0x3d + strb r1, [r0] + ldr r1, _080A2768 @ =gUnk_03003F80 + adds r0, r4, #0 + adds r0, #0x6b + ldrb r0, [r0] + strb r0, [r1, #7] + adds r0, r4, #0 + adds r0, #0x6c + ldrb r0, [r0] + strb r0, [r1, #0xb] + adds r0, r4, #0 + adds r0, #0x6d + ldrb r0, [r0] + strb r0, [r1, #0xa] + adds r0, r4, #0 + adds r0, #0x6e + ldrb r0, [r0] + adds r2, r1, #0 + adds r2, #0x27 + strb r0, [r2] + adds r0, r4, #0 + adds r0, #0x6f + ldrb r0, [r0] + strb r0, [r1, #0x1a] + ldr r0, [r4, #0x70] + str r0, [r1, #0x30] + adds r0, r4, #0 + adds r0, #0x74 + ldrb r0, [r0] + adds r1, #0x8a + strb r0, [r1] +_080A273C: + ldr r5, [r4, #0x50] + cmp r5, #0 + beq _080A2762 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA30 + ldrh r0, [r4, #0x12] + ldrb r1, [r4, #0x1e] + bl sub_080700C8 + ldrb r1, [r0] + adds r2, r5, #0 + adds r2, #0x62 + strb r1, [r2] + ldrb r1, [r0, #1] + adds r0, r5, #0 + adds r0, #0x63 + strb r1, [r0] +_080A2762: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A2764: .4byte gUnk_02000050 +_080A2768: .4byte gUnk_03003F80 + + thumb_func_start sub_080A276C +sub_080A276C: @ 0x080A276C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r0, #0 + adds r4, r1, #0 + adds r7, r2, #0 + bl sub_0805E744 + adds r6, r0, #0 + cmp r6, #0 + beq _080A2820 + movs r0, #0xc1 + strb r0, [r6, #9] + movs r0, #6 + mov r8, r0 + mov r1, r8 + strb r1, [r6, #8] + strb r4, [r6, #0xa] + strb r7, [r6, #0xb] + str r5, [r6, #0x50] + adds r0, r6, #0 + movs r1, #6 + bl sub_0805EA2C + adds r0, r6, #0 + movs r1, #6 + bl sub_0805EA78 + ldr r4, _080A2828 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_0806FA24 + ldr r0, _080A282C @ =gUnk_03003DC0 + mov r1, r8 + strb r1, [r0] + ldr r1, _080A2830 @ =gUnk_02034490 + movs r0, #1 + strb r0, [r1] + ldrb r0, [r4, #0x10] + adds r1, r6, #0 + adds r1, #0x69 + strb r0, [r1] + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + subs r1, #1 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + adds r1, #2 + strb r0, [r1] + ldr r1, _080A2834 @ =gUnk_03003F80 + ldrb r0, [r1, #7] + adds r2, r6, #0 + adds r2, #0x6b + strb r0, [r2] + ldrb r2, [r1, #0xb] + adds r0, r6, #0 + adds r0, #0x6c + strb r2, [r0] + ldrb r0, [r1, #0xa] + adds r2, r6, #0 + adds r2, #0x6d + strb r0, [r2] + adds r0, r1, #0 + adds r0, #0x27 + ldrb r0, [r0] + adds r2, #1 + strb r0, [r2] + ldrb r0, [r1, #0x1a] + adds r2, #1 + strb r0, [r2] + ldr r0, [r1, #0x30] + str r0, [r6, #0x70] + adds r1, #0x8a + ldrb r1, [r1] + adds r0, r6, #0 + adds r0, #0x74 + strb r1, [r0] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_080A2820: + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A2828: .4byte gLinkEntity +_080A282C: .4byte gUnk_03003DC0 +_080A2830: .4byte gUnk_02034490 +_080A2834: .4byte gUnk_03003F80 + + thumb_func_start sub_080A2838 +sub_080A2838: @ 0x080A2838 + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #9] + lsls r2, r2, #3 + ldr r0, _080A2858 @ =gUnk_08126798 + adds r2, r2, r0 + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_080A285C + cmp r0, #2 + bne _080A2856 + adds r0, r4, #0 + bl sub_08016A04 +_080A2856: + pop {r4, pc} + .align 2, 0 +_080A2858: .4byte gUnk_08126798 + + thumb_func_start sub_080A285C +sub_080A285C: @ 0x080A285C + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r2, #0 + ldrb r3, [r4, #0x10] + movs r0, #1 + ands r0, r3 + cmp r0, #0 + beq _080A2870 + movs r0, #1 + b _080A2958 +_080A2870: + ldrb r2, [r5] + movs r0, #3 + ands r0, r2 + cmp r0, #0 + bne _080A288C + lsls r0, r2, #0x1c + lsrs r0, r0, #0x1e + lsls r0, r0, #2 + movs r1, #1 + orrs r0, r1 + orrs r0, r3 + strb r0, [r4, #0x10] + movs r0, #1 + b _080A2958 +_080A288C: + subs r0, #2 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080A289C + lsls r1, r1, #3 + ldr r0, [r5, #4] + adds r5, r0, r1 +_080A289C: + ldrh r0, [r5, #2] + lsls r0, r0, #0x16 + lsrs r2, r0, #0x16 + adds r1, r2, #0 + ldrb r0, [r5, #3] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + cmp r0, #1 + beq _080A28BA + cmp r0, #2 + bne _080A28C4 + adds r0, r4, #0 + adds r0, #0x60 + strh r2, [r0] + b _080A28D2 +_080A28BA: + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE008 + b _080A28CA +_080A28C4: + adds r0, r4, #0 + bl sub_080ADF80 +_080A28CA: + cmp r0, #0 + bne _080A28D2 + movs r0, #0 + b _080A2958 +_080A28D2: + ldrh r0, [r5, #4] + lsls r0, r0, #0x16 + lsrs r1, r0, #0x16 + adds r0, r4, #0 + bl sub_0801D040 + movs r1, #0xff + adds r0, r4, #0 + adds r0, #0x58 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x40 + movs r0, #0x48 + strb r0, [r1] + ldrh r0, [r5, #6] + lsls r0, r0, #0x16 + lsrs r0, r0, #0x16 + strh r0, [r4, #0x12] + ldrb r0, [r5, #5] + movs r3, #3 + movs r1, #0x30 + ands r1, r0 + ldrb r2, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r1, [r5, #7] + lsls r1, r1, #0x1b + movs r0, #0x29 + adds r0, r0, r4 + mov ip, r0 + lsrs r1, r1, #0x1d + lsls r1, r1, #3 + ldrb r2, [r0] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + mov r1, ip + strb r0, [r1] + ldrb r1, [r5, #7] + lsrs r1, r1, #5 + ands r1, r3 + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldr r1, _080A295C @ =gUnk_08125104 + ldrb r0, [r5, #1] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x48] + ldrb r0, [r5] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1e + lsls r0, r0, #2 + movs r1, #1 + orrs r0, r1 + ldrb r1, [r4, #0x10] + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #2 +_080A2958: + pop {r4, r5, pc} + .align 2, 0 +_080A295C: .4byte gUnk_08125104 + + thumb_func_start sub_080A2960 +sub_080A2960: @ 0x080A2960 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + bl sub_0805E678 + adds r4, r0, #0 + cmp r4, #0 + beq _080A2984 + movs r0, #6 + strb r0, [r4, #8] + strb r5, [r4, #9] + strb r6, [r4, #0xa] + strb r7, [r4, #0xb] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805EA2C +_080A2984: + adds r0, r4, #0 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080A2988 +sub_080A2988: @ 0x080A2988 + push {r4, r5, lr} + adds r5, r0, #0 + adds r0, r1, #0 + adds r1, r2, #0 + adds r2, r3, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A29A6 + str r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_080A29A6: + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 \ No newline at end of file diff --git a/asm/code_080A29BC.s b/asm/code_080A29BC.s new file mode 100644 index 00000000..83f44625 --- /dev/null +++ b/asm/code_080A29BC.s @@ -0,0 +1,26506 @@ + .include "asm/macros.inc" + .text + .syntax unified + + thumb_func_start sub_080A29BC +sub_080A29BC: @ 0x080A29BC + push {lr} + movs r1, #2 + movs r2, #0 + bl CreateFX + pop {pc} + + thumb_func_start sub_080A29C8 +sub_080A29C8: @ 0x080A29C8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r6, r2, #0 + movs r0, #0xf + movs r1, #2 + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _080A29F4 + ldr r1, _080A29F8 @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + adds r0, r0, r4 + strh r0, [r2, #0x2e] + ldrh r0, [r1, #8] + adds r0, r0, r5 + strh r0, [r2, #0x32] + adds r0, r2, #0 + adds r0, #0x38 + strb r6, [r0] +_080A29F4: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A29F8: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A29FC +sub_080A29FC: @ 0x080A29FC + push {lr} + movs r1, #0x11 + movs r2, #0 + bl CreateFX + pop {pc} + + thumb_func_start sub_080A2A08 +sub_080A2A08: @ 0x080A2A08 + push {lr} + movs r1, #6 + movs r2, #0 + bl CreateFX + pop {pc} + + thumb_func_start sub_080A2A14 +sub_080A2A14: @ 0x080A2A14 + push {lr} + movs r1, #0xb + movs r2, #0 + bl CreateFX + pop {pc} + + thumb_func_start sub_080A2A20 +sub_080A2A20: @ 0x080A2A20 + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _080A2A38 + movs r0, #5 + strb r0, [r1, #0xe] +_080A2A38: + adds r0, r1, #0 + pop {r4, pc} + + thumb_func_start sub_080A2A3C +sub_080A2A3C: @ 0x080A2A3C + push {r4, r5, r6, lr} + adds r4, r1, #0 + adds r5, r2, #0 + adds r6, r3, #0 + movs r1, #0 + adds r2, r4, #0 + adds r3, r5, #0 + bl sub_080A2988 + adds r1, r0, #0 + cmp r1, #0 + beq _080A2A5E + movs r0, #5 + strb r0, [r1, #0xe] + adds r0, r1, #0 + adds r0, #0x86 + strh r6, [r0] +_080A2A5E: + adds r0, r1, #0 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A2A64 +sub_080A2A64: @ 0x080A2A64 + push {lr} + movs r1, #0x20 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _080A2A80 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] +_080A2A80: + adds r0, r2, #0 + pop {pc} + + thumb_func_start sub_080A2A84 +sub_080A2A84: @ 0x080A2A84 + push {r4, r5, r6, r7, lr} + adds r5, r1, #0 + bl sub_080A2A64 + adds r6, r0, #0 + cmp r6, #0 + beq _080A2AD2 + bl sub_08000E50 + adds r4, r0, #0 + adds r5, #1 + adds r1, r5, #0 + bl __modsi3 + adds r1, r0, #0 + lsrs r4, r4, #8 + movs r7, #1 + adds r0, r4, #0 + ands r0, r7 + cmp r0, #0 + beq _080A2AB0 + rsbs r1, r1, #0 +_080A2AB0: + ldrh r0, [r6, #0x2e] + adds r0, r0, r1 + strh r0, [r6, #0x2e] + lsrs r4, r4, #8 + adds r0, r4, #0 + adds r1, r5, #0 + bl __modsi3 + adds r1, r0, #0 + lsrs r4, r4, #8 + ands r4, r7 + cmp r4, #0 + beq _080A2ACC + rsbs r1, r1, #0 +_080A2ACC: + ldrh r0, [r6, #0x32] + adds r0, r0, r1 + strh r0, [r6, #0x32] +_080A2AD2: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080A2AD4 +sub_080A2AD4: @ 0x080A2AD4 + push {lr} + movs r1, #0x21 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _080A2AF0 + adds r3, r2, #0 + adds r3, #0x29 + ldrb r0, [r3] + movs r1, #7 + orrs r0, r1 + strb r0, [r3] +_080A2AF0: + adds r0, r2, #0 + pop {pc} + + thumb_func_start sub_080A2AF4 +sub_080A2AF4: @ 0x080A2AF4 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r5, r1, #0 + adds r4, r2, #0 + bl sub_080A2AD4 + adds r6, r0, #0 + cmp r6, #0 + beq _080A2B74 + bl sub_08000E50 + adds r7, r0, #0 + subs r1, r4, r5 + adds r1, #1 + bl __modsi3 + adds r4, r0, #0 + adds r4, r4, r5 + asrs r7, r7, #0x10 + movs r0, #0xff + ands r7, r0 + ldr r0, _080A2B7C @ =gUnk_080C9160 + mov r8, r0 + lsls r0, r7, #1 + add r0, r8 + movs r1, #0 + ldrsh r0, [r0, r1] + lsls r4, r4, #0x18 + asrs r4, r4, #0x10 + adds r1, r4, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + movs r5, #0x80 + lsls r5, r5, #1 + adds r1, r5, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r6, #0x2c] + adds r1, r1, r0 + str r1, [r6, #0x2c] + adds r0, r7, #0 + adds r0, #0x40 + lsls r0, r0, #1 + add r0, r8 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r4, #0 + bl sub_0806F9EC + lsls r0, r0, #0x10 + asrs r0, r0, #0x10 + adds r1, r5, #0 + bl sub_0806FA04 + lsls r0, r0, #0x10 + asrs r0, r0, #8 + ldr r1, [r6, #0x30] + subs r1, r1, r0 + str r1, [r6, #0x30] +_080A2B74: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A2B7C: .4byte gUnk_080C9160 + + thumb_func_start sub_080A2B80 +sub_080A2B80: @ 0x080A2B80 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0xf + movs r1, #0x26 + movs r2, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A2BE0 + bl sub_08000E50 + adds r3, r0, #0 + movs r1, #0xf + adds r2, r3, #0 + ands r2, r1 + movs r0, #0x80 + ands r0, r3 + cmp r0, #0 + beq _080A2BAA + rsbs r2, r2, #0 +_080A2BAA: + lsrs r0, r3, #8 + ands r0, r1 + cmp r0, #4 + ble _080A2BB4 + rsbs r0, r0, #0 +_080A2BB4: + lsls r2, r2, #0x10 + lsls r3, r0, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + adds r0, r5, #0 + adds r0, #0x62 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x62 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x63 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x63 + strb r1, [r0] +_080A2BE0: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A2BE4 +sub_080A2BE4: @ 0x080A2BE4 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r6, r1, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A2CBA + lsrs r0, r1, #3 + cmp r0, #1 + beq _080A2C3C + cmp r0, #1 + bgt _080A2C04 + cmp r0, #0 + beq _080A2C0E + b _080A2CBA +_080A2C04: + cmp r0, #2 + beq _080A2C68 + cmp r0, #3 + beq _080A2C94 + b _080A2CBA +_080A2C0E: + ldrh r5, [r4, #0x32] + adds r0, r4, #0 + bl sub_0806F69C + ldrh r1, [r4, #0x32] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + beq _080A2CBA + cmp r6, #0 + beq _080A2CBA + ldr r0, _080A2C38 @ =gLinkEntity + lsls r1, r1, #8 + movs r2, #0 + bl sub_080044AE + b _080A2CBA + .align 2, 0 +_080A2C38: .4byte gLinkEntity +_080A2C3C: + ldrh r5, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0806F69C + ldrh r1, [r4, #0x2e] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0 + beq _080A2CBA + cmp r6, #0 + beq _080A2CBA + ldr r0, _080A2C64 @ =gLinkEntity + lsls r1, r1, #8 + movs r2, #8 + bl sub_080044AE + b _080A2CBA + .align 2, 0 +_080A2C64: .4byte gLinkEntity +_080A2C68: + ldrh r5, [r4, #0x32] + adds r0, r4, #0 + bl sub_0806F69C + ldrh r1, [r4, #0x32] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + subs r1, r1, r0 + lsls r1, r1, #0x10 + asrs r1, r1, #0x10 + cmp r1, #0 + beq _080A2CBA + cmp r6, #0 + beq _080A2CBA + ldr r0, _080A2C90 @ =gLinkEntity + lsls r1, r1, #8 + movs r2, #0x10 + bl sub_080044AE + b _080A2CBA + .align 2, 0 +_080A2C90: .4byte gLinkEntity +_080A2C94: + ldrh r5, [r4, #0x2e] + adds r0, r4, #0 + bl sub_0806F69C + ldrh r1, [r4, #0x2e] + lsls r0, r5, #0x10 + asrs r0, r0, #0x10 + subs r0, r0, r1 + lsls r0, r0, #0x10 + asrs r1, r0, #0x10 + cmp r1, #0 + beq _080A2CBA + cmp r6, #0 + beq _080A2CBA + ldr r0, _080A2CBC @ =gLinkEntity + lsls r1, r1, #8 + movs r2, #0x18 + bl sub_080044AE +_080A2CBA: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A2CBC: .4byte gLinkEntity + + thumb_func_start sub_080A2CC0 +sub_080A2CC0: @ 0x080A2CC0 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldr r3, [r5] + cmp r3, #0 + beq _080A2CF8 + ldrh r0, [r3] + cmp r0, #0xfe + bne _080A2CDC + ldrh r1, [r3, #2] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #1 + subs r3, r3, r0 +_080A2CDC: + ldrh r0, [r3] + cmp r0, #0xff + bne _080A2CEA + movs r0, #0xff + strb r0, [r4, #0x15] + movs r0, #0 + b _080A2CEE +_080A2CEA: + strb r0, [r4, #0x15] + ldrh r0, [r3, #4] +_080A2CEE: + strh r0, [r4, #0x24] + ldrh r0, [r3, #2] + strh r0, [r2] + adds r0, r3, #6 + str r0, [r5] +_080A2CF8: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A2CFC +sub_080A2CFC: @ 0x080A2CFC + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + movs r1, #0 + adds r2, r4, #0 + bl sub_080A2D2C + pop {r4, pc} + + thumb_func_start sub_080A2D0C +sub_080A2D0C: @ 0x080A2D0C + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + movs r1, #1 + adds r2, r4, #0 + bl sub_080A2D2C + pop {r4, pc} + + thumb_func_start sub_080A2D1C +sub_080A2D1C: @ 0x080A2D1C + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + movs r1, #2 + adds r2, r4, #0 + bl sub_080A2D2C + pop {r4, pc} + + thumb_func_start sub_080A2D2C +sub_080A2D2C: @ 0x080A2D2C + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + adds r7, r3, #0 + movs r0, #0x56 + movs r1, #0 + adds r2, r4, #0 + bl sub_080A2960 + adds r4, r0, #0 + cmp r4, #0 + beq _080A2D6E + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FAB0 + str r5, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x62 + strb r6, [r0] + adds r0, #1 + strb r7, [r0] + ldrb r1, [r5, #0x11] + lsls r1, r1, #0x1c + lsrs r1, r1, #0x1c + adds r0, r4, #0 + bl sub_0805E3A0 +_080A2D6E: + adds r0, r4, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080A2D74 +sub_080A2D74: @ 0x080A2D74 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x6c] + cmp r0, #0 + beq _080A2D82 + subs r0, #1 + str r0, [r2, #0x6c] +_080A2D82: + ldr r0, _080A2D94 @ =gUnk_081271D4 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A2D94: .4byte gUnk_081271D4 + + thumb_func_start sub_080A2D98 +sub_080A2D98: @ 0x080A2D98 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080A2DD0 @ =gUnk_03003F80 + str r4, [r0, #0x2c] + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x11] + subs r0, #0x11 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r4, #0x11] + movs r0, #0xff + strb r0, [r4, #0x1e] + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #0xe + bne _080A2DD8 + movs r0, #0x27 + str r0, [r4, #0x70] + ldr r1, _080A2DD4 @ =gUnk_081271DC + ldrb r0, [r1, #1] + str r0, [r4, #0x78] + str r2, [r4, #0x74] + str r1, [r4, #0x7c] + b _080A2DDA + .align 2, 0 +_080A2DD0: .4byte gUnk_03003F80 +_080A2DD4: .4byte gUnk_081271DC +_080A2DD8: + str r2, [r4, #0x70] +_080A2DDA: + ldr r0, _080A2DFC @ =gLinkEntity + ldrb r1, [r0, #0x14] + movs r0, #0xe + ands r0, r1 + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_08079BD8 + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + adds r0, r4, #0 + bl sub_080A2E00 + pop {r4, pc} + .align 2, 0 +_080A2DFC: .4byte gLinkEntity + + thumb_func_start sub_080A2E00 +sub_080A2E00: @ 0x080A2E00 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r0, _080A2E90 @ =gLinkEntity + mov ip, r0 + mov r1, ip + adds r1, #0x3d + ldrb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A2E1A + lsrs r0, r0, #0x18 + cmp r0, #0x81 + bne _080A2E40 +_080A2E1A: + adds r5, r4, #0 + adds r5, #0x3d + ldrb r0, [r5] + movs r2, #0 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + mov r1, ip + adds r1, #0x3e + strb r0, [r1] + adds r3, r4, #0 + adds r3, #0x42 + ldrb r1, [r3] + mov r0, ip + adds r0, #0x42 + strb r1, [r0] + strb r2, [r3] + strb r2, [r5] +_080A2E40: + ldr r0, _080A2E94 @ =gUnk_03003F80 + ldrb r3, [r0, #3] + adds r7, r0, #0 + cmp r3, #0 + beq _080A2F20 + ldr r0, [r7, #0x2c] + cmp r4, r0 + bne _080A2F20 + movs r2, #0x80 + adds r0, r2, #0 + ands r0, r3 + cmp r0, #0 + beq _080A2E9C + ldr r1, _080A2E98 @ =gUnk_08127240 + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x48] + ldr r0, _080A2E90 @ =gLinkEntity + adds r0, #0x3c + ldrb r0, [r0] + adds r0, #1 + movs r1, #0x20 + adds r2, r4, #0 + adds r2, #0x3c + orrs r0, r1 + strb r0, [r2] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x7f + ands r0, r3 + strb r0, [r7, #3] + adds r0, r4, #0 + bl sub_080176E4 + b _080A2F30 + .align 2, 0 +_080A2E90: .4byte gLinkEntity +_080A2E94: .4byte gUnk_03003F80 +_080A2E98: .4byte gUnk_08127240 +_080A2E9C: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080A2F30 + movs r0, #0x7f + ands r0, r1 + cmp r0, #0x42 + bne _080A2F06 + adds r0, r4, #0 + adds r0, #0x68 + ldrb r1, [r0] + adds r5, r0, #0 + cmp r1, #0xe + bne _080A2F06 + movs r0, #0x40 + ands r0, r3 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080A2F06 + ldrb r3, [r5] + movs r0, #0x15 + movs r1, #0 + movs r2, #0 + bl sub_08077CB8 + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _080A2EF4 + movs r0, #1 + strb r0, [r1, #0xf] + ldr r2, [r4, #0x54] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + movs r1, #0x10 + eors r0, r1 + strb r0, [r2, #0x15] + ldr r0, [r4, #0x54] + str r4, [r0, #0x50] +_080A2EF4: + ldr r1, _080A2F1C @ =gUnk_08127220 + ldrb r0, [r1, #1] + str r0, [r4, #0x78] + str r6, [r4, #0x74] + str r1, [r4, #0x7c] + ldrb r0, [r7, #3] + movs r1, #0x40 + orrs r0, r1 + strb r0, [r7, #3] +_080A2F06: + ldr r0, [r4, #0x6c] + cmp r0, #0 + bne _080A2F30 + movs r0, #0x8c + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #8 + str r0, [r4, #0x6c] + b _080A2F30 + .align 2, 0 +_080A2F1C: .4byte gUnk_08127220 +_080A2F20: + movs r1, #0 + strb r1, [r7, #3] + ldr r0, [r7, #0x2c] + cmp r0, r4 + bne _080A2F2C + str r1, [r7, #0x2c] +_080A2F2C: + bl sub_0805E780 +_080A2F30: + ldr r6, _080A301C @ =gLinkEntity + ldrh r0, [r6, #0x12] + cmp r0, #1 + beq _080A2F3E + cmp r0, #4 + beq _080A2F3E + b _080A3064 +_080A2F3E: + ldrb r0, [r6, #0x1e] + subs r0, #0x25 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3e + bls _080A2F4C + b _080A3064 +_080A2F4C: + ldrb r2, [r6, #0x18] + movs r1, #0x40 + ands r1, r2 + ldrb r3, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r3 + orrs r0, r1 + lsrs r2, r2, #7 + lsls r2, r2, #7 + movs r3, #0x7f + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x18] + ldrb r2, [r6, #0x1e] + ldr r1, [r4, #0x70] + adds r0, r1, #0 + subs r0, #0x25 + adds r0, r2, r0 + adds r5, r4, #0 + adds r5, #0x68 + ldrb r7, [r4, #0x1e] + cmp r0, r7 + beq _080A2FA2 + adds r0, r1, #0 + adds r0, #0xdb + adds r0, r2, r0 + strb r0, [r4, #0x1e] + ldrb r0, [r5] + cmp r0, #0xe + bne _080A2F98 + adds r0, r6, #0 + adds r0, #0x5a + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + bne _080A2FA2 +_080A2F98: + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_080A2FA2: + ldrb r0, [r5] + cmp r0, #0xe + bne _080A303E + ldr r0, _080A301C @ =gLinkEntity + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _080A303E + ldr r0, [r4, #0x78] + subs r3, r0, #1 + str r3, [r4, #0x78] + cmp r3, #0 + bne _080A303E + ldr r0, [r4, #0x74] + adds r0, #1 + str r0, [r4, #0x74] + lsls r0, r0, #2 + ldr r1, [r4, #0x7c] + adds r2, r1, r0 + ldrb r0, [r2] + ldr r7, _080A3020 @ =gUnk_03003F80 + cmp r0, #0xff + bne _080A2FEC + ldrb r1, [r7, #3] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080A2FE8 + ldr r0, _080A3024 @ =gUnk_081271DC + str r0, [r4, #0x7c] + movs r0, #0xbf + ands r0, r1 + strb r0, [r7, #3] +_080A2FE8: + str r3, [r4, #0x74] + ldr r1, [r4, #0x7c] +_080A2FEC: + ldr r0, [r4, #0x74] + lsls r0, r0, #2 + adds r2, r1, r0 + ldrb r0, [r2, #1] + str r0, [r4, #0x78] + ldrb r1, [r7, #3] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080A3028 + ldr r0, _080A301C @ =gLinkEntity + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + adds r1, #8 + ldrb r2, [r2] + adds r1, r1, r2 + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 + b _080A303E + .align 2, 0 +_080A301C: .4byte gLinkEntity +_080A3020: .4byte gUnk_03003F80 +_080A3024: .4byte gUnk_081271DC +_080A3028: + ldr r0, _080A3060 @ =gLinkEntity + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r2, [r2] + adds r1, r1, r2 + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_080A303E: + ldr r1, _080A3060 @ =gLinkEntity + adds r0, r1, #0 + adds r0, #0x5a + ldrb r0, [r0] + adds r2, r4, #0 + adds r2, #0x5a + strb r0, [r2] + adds r0, r1, #0 + adds r0, #0x5b + ldrb r0, [r0] + adds r2, #1 + strb r0, [r2] + adds r0, r4, #0 + bl sub_08078E84 + b _080A3068 + .align 2, 0 +_080A3060: .4byte gLinkEntity +_080A3064: + movs r0, #0xff + strb r0, [r4, #0x1e] +_080A3068: + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080A306C +sub_080A306C: @ 0x080A306C + push {lr} + ldr r2, _080A3080 @ =gUnk_08127270 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A3080: .4byte gUnk_08127270 + + thumb_func_start sub_080A3084 +sub_080A3084: @ 0x080A3084 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r5, #1 + strb r5, [r4, #0xc] + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080A30F8 + ldr r0, _080A30EC @ =gLinkEntity + adds r0, #0x3c + ldrb r0, [r0] + adds r0, #1 + adds r1, r4, #0 + adds r1, #0x3c + strb r0, [r1] + ldr r0, _080A30F0 @ =gUnk_08127278 + str r0, [r4, #0x48] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r0, [r0] + cmp r0, #2 + bne _080A30CC + strb r5, [r4, #0xb] +_080A30CC: + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + movs r0, #0x3c + str r0, [r4, #0x6c] + adds r0, r4, #0 + bl sub_0801766C + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, _080A30F4 @ =0x0000013F + bl sub_080A3268 + b _080A30FC + .align 2, 0 +_080A30EC: .4byte gLinkEntity +_080A30F0: .4byte gUnk_08127278 +_080A30F4: .4byte 0x0000013F +_080A30F8: + movs r0, #6 + strb r0, [r4, #0xe] +_080A30FC: + adds r0, r4, #0 + movs r1, #0x18 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080A310C + pop {r4, r5, pc} + + thumb_func_start sub_080A310C +sub_080A310C: @ 0x080A310C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080A312A + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080A3200 + bl sub_0805E780 + b _080A3200 +_080A312A: + adds r0, r4, #0 + bl sub_08004274 + ldr r0, [r4, #0x6c] + subs r0, #1 + str r0, [r4, #0x6c] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + beq _080A31FC + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080A315C + adds r0, r4, #0 + bl sub_0800451C +_080A315C: + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _080A31F0 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _080A31F4 @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + movs r2, #0x80 + bl sub_080002F0 + cmp r0, #0 + bne _080A31AE + ldr r1, _080A31F8 @ =gUnk_08003E44 + movs r0, #0x2e + ldrsh r2, [r4, r0] + movs r5, #0x32 + ldrsh r3, [r4, r5] + adds r0, r4, #0 + bl sub_080040D8 + cmp r0, #0 + beq _080A31AE + adds r0, r4, #0 + movs r1, #0x19 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080A31AE: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0 + beq _080A31C6 + adds r0, r4, #0 + movs r1, #0x19 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080A31C6: + adds r0, r4, #0 + movs r1, #0xc + bl sub_08008790 + cmp r0, #0 + beq _080A31D6 + bl sub_0805E780 +_080A31D6: + adds r0, r4, #0 + adds r0, #0x68 + ldrb r3, [r0] + movs r0, #0x15 + movs r1, #1 + movs r2, #0 + bl sub_08077CB8 + str r0, [r4, #0x54] + cmp r0, #0 + beq _080A3200 + str r4, [r0, #0x50] + b _080A3200 + .align 2, 0 +_080A31F0: .4byte gUnk_03000BF0 +_080A31F4: .4byte gLinkEntity +_080A31F8: .4byte gUnk_08003E44 +_080A31FC: + bl sub_0805E780 +_080A3200: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A3204 +sub_080A3204: @ 0x080A3204 + push {lr} + bl sub_080A3210 + bl m4aSoundInit + pop {pc} + + thumb_func_start sub_080A3210 +sub_080A3210: @ 0x080A3210 + push {r4, lr} + ldr r4, _080A3230 @ =gUnk_02021EE0 + adds r0, r4, #0 + movs r1, #0x18 + bl sub_0801D630 + bl sub_080A35C8 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r4, #0x12] + strh r0, [r4, #4] + bl m4aMPlayAllStop + pop {r4, pc} + .align 2, 0 +_080A3230: .4byte gUnk_02021EE0 + + thumb_func_start sub_080A3234 +sub_080A3234: @ 0x080A3234 + push {lr} + ldr r1, _080A3244 @ =gUnk_02021EE0 + strh r0, [r1, #8] + strh r0, [r1, #0xa] + ldrh r0, [r1, #0x14] + bl sub_080A353C + pop {pc} + .align 2, 0 +_080A3244: .4byte gUnk_02021EE0 + + thumb_func_start sub_080A3248 +sub_080A3248: @ 0x080A3248 + push {lr} + ldr r1, _080A3258 @ =gUnk_02021EE0 + strh r0, [r1, #0x10] + strh r0, [r1, #0xe] + ldrh r0, [r1, #0x14] + bl sub_080A353C + pop {pc} + .align 2, 0 +_080A3258: .4byte gUnk_02021EE0 + + thumb_func_start sub_080A325C +sub_080A325C: @ 0x080A325C + ldr r1, _080A3264 @ =gUnk_02021EE0 + strh r0, [r1, #0x12] + bx lr + .align 2, 0 +_080A3264: .4byte gUnk_02021EE0 + + thumb_func_start sub_080A3268 +sub_080A3268: @ 0x080A3268 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r0, _080A32AC @ =gUnk_03001000 + ldrb r2, [r0, #7] + cmp r2, #0 + beq _080A3276 + b _080A347C +_080A3276: + ldr r5, _080A32B0 @ =gUnk_02021EE0 + ldr r4, _080A32B4 @ =0x0000FFFF + ands r4, r3 + ldr r1, _080A32B8 @ =0xFFFF0000 + ands r1, r3 + ldr r0, _080A32BC @ =0x80090000 + cmp r1, r0 + bne _080A3288 + b _080A33A0 +_080A3288: + cmp r1, r0 + bhi _080A3310 + ldr r0, _080A32C0 @ =0x80040000 + cmp r1, r0 + bne _080A3294 + b _080A33F4 +_080A3294: + cmp r1, r0 + bhi _080A32D8 + ldr r0, _080A32C4 @ =0x80020000 + cmp r1, r0 + bne _080A32A0 + b _080A3384 +_080A32A0: + cmp r1, r0 + bhi _080A32CC + ldr r0, _080A32C8 @ =0x80010000 + cmp r1, r0 + beq _080A337C + b _080A3458 + .align 2, 0 +_080A32AC: .4byte gUnk_03001000 +_080A32B0: .4byte gUnk_02021EE0 +_080A32B4: .4byte 0x0000FFFF +_080A32B8: .4byte 0xFFFF0000 +_080A32BC: .4byte 0x80090000 +_080A32C0: .4byte 0x80040000 +_080A32C4: .4byte 0x80020000 +_080A32C8: .4byte 0x80010000 +_080A32CC: + ldr r0, _080A32D4 @ =0x80030000 + cmp r1, r0 + beq _080A338C + b _080A3458 + .align 2, 0 +_080A32D4: .4byte 0x80030000 +_080A32D8: + ldr r0, _080A32F0 @ =0x80060000 + cmp r1, r0 + bne _080A32E0 + b _080A340A +_080A32E0: + cmp r1, r0 + bhi _080A32F8 + ldr r0, _080A32F4 @ =0x80050000 + cmp r1, r0 + bne _080A32EC + b _080A33FE +_080A32EC: + b _080A3458 + .align 2, 0 +_080A32F0: .4byte 0x80060000 +_080A32F4: .4byte 0x80050000 +_080A32F8: + ldr r0, _080A3308 @ =0x80070000 + cmp r1, r0 + bne _080A3300 + b _080A340E +_080A3300: + ldr r0, _080A330C @ =0x80080000 + cmp r1, r0 + beq _080A3398 + b _080A3458 + .align 2, 0 +_080A3308: .4byte 0x80070000 +_080A330C: .4byte 0x80080000 +_080A3310: + ldr r0, _080A3330 @ =0x800D0000 + cmp r1, r0 + bne _080A3318 + b _080A343A +_080A3318: + cmp r1, r0 + bhi _080A3348 + ldr r0, _080A3334 @ =0x800B0000 + cmp r1, r0 + bne _080A3324 + b _080A3420 +_080A3324: + cmp r1, r0 + bhi _080A333C + ldr r0, _080A3338 @ =0x800A0000 + cmp r1, r0 + beq _080A33B6 + b _080A3458 + .align 2, 0 +_080A3330: .4byte 0x800D0000 +_080A3334: .4byte 0x800B0000 +_080A3338: .4byte 0x800A0000 +_080A333C: + ldr r0, _080A3344 @ =0x800C0000 + cmp r1, r0 + beq _080A33CC + b _080A3458 + .align 2, 0 +_080A3344: .4byte 0x800C0000 +_080A3348: + ldr r0, _080A335C @ =0x800F0000 + cmp r1, r0 + bne _080A3350 + b _080A344E +_080A3350: + cmp r1, r0 + bhi _080A3364 + ldr r0, _080A3360 @ =0x800E0000 + cmp r1, r0 + beq _080A3446 + b _080A3458 + .align 2, 0 +_080A335C: .4byte 0x800F0000 +_080A3360: .4byte 0x800E0000 +_080A3364: + ldr r0, _080A3374 @ =0x80100000 + cmp r1, r0 + beq _080A343E + ldr r0, _080A3378 @ =0x80110000 + cmp r1, r0 + beq _080A3454 + b _080A3458 + .align 2, 0 +_080A3374: .4byte 0x80100000 +_080A3378: .4byte 0x80110000 +_080A337C: + strh r2, [r5, #0x14] + bl m4aMPlayAllStop + b _080A347C +_080A3384: + movs r0, #0 + bl sub_080A3234 + b _080A347C +_080A338C: + bl sub_080A35C8 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x12] + b _080A3418 +_080A3398: + ldrh r0, [r5, #0x14] + bl sub_080A35B4 + b _080A347C +_080A33A0: + cmp r4, #0 + bne _080A33A6 + ldrh r4, [r5, #0x14] +_080A33A6: + subs r0, r4, #1 + cmp r0, #0x62 + bhi _080A347C + strh r4, [r5, #0x14] + adds r0, r4, #0 + bl m4aSongNumStart + b _080A33C4 +_080A33B6: + subs r0, r4, #1 + cmp r0, #0x62 + bhi _080A347C + strh r4, [r5, #0x14] + adds r0, r4, #0 + bl m4aSongNumStartOrContinue +_080A33C4: + adds r0, r4, #0 + bl sub_080A35A0 + b _080A347C +_080A33CC: + ldr r2, _080A33EC @ =gUnk_08A11C3C + ldr r1, _080A33F0 @ =gUnk_08A11DBC + ldrh r0, [r5, #0x14] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrh r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + adds r1, r4, #0 + bl m4aMPlayTempoControl + b _080A347C + .align 2, 0 +_080A33EC: .4byte gUnk_08A11C3C +_080A33F0: .4byte gUnk_08A11DBC +_080A33F4: + bl m4aMPlayAllStop + bl m4aSoundVSyncOff + b _080A347C +_080A33FE: + ldrh r0, [r5, #0x14] + cmp r0, #0 + beq _080A347C + bl m4aSongNumStop + b _080A347C +_080A340A: + bl m4aSoundVSyncOn +_080A340E: + ldrh r0, [r5, #0x14] + cmp r0, #0 + beq _080A347C + bl m4aSongNumStartOrContinue +_080A3418: + ldrh r0, [r5, #0x14] + bl sub_080A353C + b _080A347C +_080A3420: + subs r0, r4, #1 + cmp r0, #0x62 + bhi _080A347C + strh r4, [r5, #0x14] + adds r0, r4, #0 + bl m4aSongNumStartOrContinue + bl sub_080A35C8 + adds r0, r4, #0 + bl sub_080A353C + b _080A347C +_080A343A: + strh r2, [r5, #0x10] + b _080A347C +_080A343E: + strh r2, [r5, #0x10] + movs r0, #1 + strb r0, [r5, #2] + b _080A347C +_080A3446: + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r5, #0x10] + b _080A347C +_080A344E: + bl sub_080A35C8 + b _080A347C +_080A3454: + strh r2, [r5, #0x14] + b _080A347C +_080A3458: + cmp r4, #0 + beq _080A347C + subs r0, r4, #1 + cmp r0, #0x62 + bhi _080A3470 + strh r4, [r5, #0x14] + adds r0, r4, #0 + bl m4aSongNumStart + bl sub_080A35C8 + b _080A3476 +_080A3470: + adds r0, r4, #0 + bl m4aSongNumStart +_080A3476: + adds r0, r4, #0 + bl sub_080A353C +_080A347C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A3480 +sub_080A3480: @ 0x080A3480 + push {r4, lr} + ldr r4, _080A34A4 @ =gUnk_02021EE0 + movs r0, #0xa + ldrsh r1, [r4, r0] + movs r2, #8 + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080A34C4 + adds r0, r1, #0 + movs r2, #8 + ldrsh r1, [r4, r2] + bl sub_080A3518 + adds r1, r0, #0 + cmp r1, #0 + bne _080A34A8 + ldrh r0, [r4, #0xa] + b _080A34AC + .align 2, 0 +_080A34A4: .4byte gUnk_02021EE0 +_080A34A8: + ldrh r0, [r4, #8] + adds r0, r0, r1 +_080A34AC: + strh r0, [r4, #8] + movs r1, #8 + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _080A34BC + movs r0, #0 + strh r0, [r4, #0xa] + strh r0, [r4, #8] +_080A34BC: + ldrh r0, [r4, #0x14] + bl sub_080A353C + b _080A3516 +_080A34C4: + movs r2, #0x10 + ldrsh r1, [r4, r2] + movs r2, #0xe + ldrsh r0, [r4, r2] + cmp r1, r0 + beq _080A3516 + adds r0, r1, #0 + movs r2, #0xe + ldrsh r1, [r4, r2] + bl sub_080A3518 + adds r1, r0, #0 + cmp r1, #0 + bne _080A34FC + ldrb r0, [r4, #2] + ldrh r2, [r4, #0x10] + cmp r0, #0 + beq _080A34F8 + cmp r2, #0 + bne _080A34F8 + strb r1, [r4, #2] + strh r1, [r4, #0x14] + movs r0, #0 + bl m4aSongNumStop + b _080A3502 +_080A34F8: + strh r2, [r4, #0xe] + b _080A3502 +_080A34FC: + ldrh r0, [r4, #0xe] + adds r0, r0, r1 + strh r0, [r4, #0xe] +_080A3502: + movs r1, #0xe + ldrsh r0, [r4, r1] + cmp r0, #0 + bge _080A3510 + movs r0, #0 + strh r0, [r4, #0x10] + strh r0, [r4, #0xe] +_080A3510: + ldrh r0, [r4, #0x14] + bl sub_080A353C +_080A3516: + pop {r4, pc} + + thumb_func_start sub_080A3518 +sub_080A3518: @ 0x080A3518 + push {lr} + adds r2, r0, #0 + subs r0, r2, r1 + cmp r0, #0 + ble _080A352C + adds r1, #4 + cmp r2, r1 + ble _080A3532 + movs r0, #4 + b _080A353A +_080A352C: + subs r1, #4 + cmp r2, r1 + blt _080A3536 +_080A3532: + movs r0, #0 + b _080A353A +_080A3536: + movs r0, #4 + rsbs r0, r0, #0 +_080A353A: + pop {pc} + + thumb_func_start sub_080A353C +sub_080A353C: @ 0x080A353C + push {r4, r5, lr} + adds r3, r0, #0 + cmp r3, #0 + beq _080A358C + subs r0, r3, #1 + cmp r0, #0x62 + bhi _080A3558 + ldr r0, _080A3554 @ =gUnk_02021EE0 + movs r1, #0xe + ldrsh r5, [r0, r1] + b _080A355E + .align 2, 0 +_080A3554: .4byte gUnk_02021EE0 +_080A3558: + ldr r0, _080A3590 @ =gUnk_02021EE0 + movs r1, #0x12 + ldrsh r5, [r0, r1] +_080A355E: + movs r1, #8 + ldrsh r0, [r0, r1] + muls r0, r5, r0 + lsrs r5, r0, #8 + ldr r2, _080A3594 @ =gUnk_08A11C3C + ldr r1, _080A3598 @ =gUnk_08A11DBC + lsls r0, r3, #3 + adds r0, r0, r1 + ldrh r1, [r0, #4] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r4, [r0] + adds r0, r4, #0 + bl m4aMPlayImmInit + ldr r1, _080A359C @ =0x0000FFFF + lsls r2, r5, #0x10 + lsrs r2, r2, #0x10 + adds r0, r4, #0 + bl m4aMPlayVolumeControl +_080A358C: + pop {r4, r5, pc} + .align 2, 0 +_080A3590: .4byte gUnk_02021EE0 +_080A3594: .4byte gUnk_08A11C3C +_080A3598: .4byte gUnk_08A11DBC +_080A359C: .4byte 0x0000FFFF + + thumb_func_start sub_080A35A0 +sub_080A35A0: @ 0x080A35A0 + push {lr} + ldr r2, _080A35B0 @ =gUnk_02021EE0 + movs r1, #0x80 + lsls r1, r1, #1 + strh r1, [r2, #0xa] + bl sub_080A353C + pop {pc} + .align 2, 0 +_080A35B0: .4byte gUnk_02021EE0 + + thumb_func_start sub_080A35B4 +sub_080A35B4: @ 0x080A35B4 + push {lr} + ldr r2, _080A35C4 @ =gUnk_02021EE0 + movs r1, #0 + strh r1, [r2, #0xa] + bl sub_080A353C + pop {pc} + .align 2, 0 +_080A35C4: .4byte gUnk_02021EE0 + + thumb_func_start sub_080A35C8 +sub_080A35C8: @ 0x080A35C8 + ldr r1, _080A35DC @ =gUnk_02021EE0 + movs r0, #0x80 + lsls r0, r0, #1 + strh r0, [r1, #6] + strh r0, [r1, #8] + strh r0, [r1, #0xa] + strh r0, [r1, #0xc] + strh r0, [r1, #0xe] + strh r0, [r1, #0x10] + bx lr + .align 2, 0 +_080A35DC: .4byte gUnk_02021EE0 + + thumb_func_start sub_080A35E0 +sub_080A35E0: @ 0x080A35E0 + push {lr} + ldr r1, _080A35FC @ =gUnk_030010A0 + ldr r0, [r1] + adds r0, #1 + str r0, [r1] + ldr r1, _080A3600 @ =gUnk_08127D00 + ldr r0, _080A3604 @ =gUnk_03001000 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A35FC: .4byte gUnk_030010A0 +_080A3600: .4byte gUnk_08127D00 +_080A3604: .4byte gUnk_03001000 + + thumb_func_start sub_080A3608 +sub_080A3608: @ 0x080A3608 + push {r4, r5, lr} + ldr r0, _080A3640 @ =gUnk_02002A40 + movs r5, #0 + movs r4, #1 + strb r4, [r0, #6] + movs r0, #0x55 + bl sub_0807CD04 + ldr r0, _080A3644 @ =gUnk_03001000 + strb r4, [r0, #3] + ldr r2, _080A3648 @ =gUnk_02000080 + strb r5, [r2, #5] + movs r1, #0 + movs r0, #0xb4 + strh r0, [r2, #8] + movs r0, #5 + strb r0, [r2, #0x16] + movs r0, #4 + strb r0, [r2, #0x17] + strb r1, [r2, #0x1a] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #1 + bls _080A3650 + ldr r0, _080A364C @ =gUnk_08127998 + b _080A365E + .align 2, 0 +_080A3640: .4byte gUnk_02002A40 +_080A3644: .4byte gUnk_03001000 +_080A3648: .4byte gUnk_02000080 +_080A364C: .4byte gUnk_08127998 +_080A3650: + cmp r0, #1 + bne _080A365C + ldr r0, _080A3658 @ =gUnk_08127644 + b _080A365E + .align 2, 0 +_080A3658: .4byte gUnk_08127644 +_080A365C: + ldr r0, _080A36B0 @ =gUnk_081272F0 +_080A365E: + str r0, [r2, #0xc] + movs r0, #0 + bl sub_0801DA90 + movs r0, #0xb + bl sub_0801D714 + movs r0, #0xc + bl sub_0801D714 + movs r0, #0 + movs r1, #0 + bl sub_0801D79C + ldr r2, _080A36B4 @ =gUnk_03000F50 + movs r0, #0xc8 + lsls r0, r0, #3 + strh r0, [r2] + adds r1, r2, #0 + adds r1, #0x66 + ldr r0, _080A36B8 @ =0x00002442 + strh r0, [r1] + adds r1, #2 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + ldr r0, _080A36BC @ =0x00001E4D + strh r0, [r2, #0x14] + subs r0, #0x8a + strh r0, [r2, #0x20] + bl sub_080A3210 + bl sub_0805E5B4 + movs r1, #0x80 + lsls r1, r1, #1 + movs r0, #5 + bl sub_08050054 + pop {r4, r5, pc} + .align 2, 0 +_080A36B0: .4byte gUnk_081272F0 +_080A36B4: .4byte gUnk_03000F50 +_080A36B8: .4byte 0x00002442 +_080A36BC: .4byte 0x00001E4D + + thumb_func_start sub_080A36C0 +sub_080A36C0: @ 0x080A36C0 + push {lr} + ldr r1, _080A36D4 @ =gUnk_08127D10 + ldr r0, _080A36D8 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A36D4: .4byte gUnk_08127D10 +_080A36D8: .4byte gUnk_02000080 + + thumb_func_start sub_080A36DC +sub_080A36DC: @ 0x080A36DC + push {lr} + ldr r1, _080A36F4 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A36F0 + bl sub_080A3954 +_080A36F0: + pop {pc} + .align 2, 0 +_080A36F4: .4byte gUnk_02000080 + + thumb_func_start sub_080A36F8 +sub_080A36F8: @ 0x080A36F8 + push {r4, r5, lr} + ldr r0, _080A3754 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A3752 + ldr r5, _080A3758 @ =gUnk_02000080 + movs r0, #0x10 + ldrsh r4, [r5, r0] + lsls r4, r4, #1 + ldr r0, _080A375C @ =gUnk_08127CEC + adds r4, r4, r0 + ldrb r0, [r4] + bl sub_0801D714 + ldrb r0, [r4, #1] + bl sub_0801D7EC + ldr r0, _080A3760 @ =gUnk_02021F30 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r1, _080A3764 @ =gUnk_03000F50 + movs r2, #0 + movs r0, #1 + strh r0, [r1, #0x1a] + ldrh r0, [r5, #0x12] + strh r0, [r1, #0x22] + adds r1, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r1] + strb r2, [r5, #5] + ldrb r0, [r5, #0x1a] + cmp r0, #0 + bne _080A374A + movs r0, #1 + strb r0, [r5, #0x1a] + movs r0, #9 + bl sub_080A3268 +_080A374A: + movs r0, #4 + movs r1, #8 + bl sub_08050054 +_080A3752: + pop {r4, r5, pc} + .align 2, 0 +_080A3754: .4byte gUnk_03000FD0 +_080A3758: .4byte gUnk_02000080 +_080A375C: .4byte gUnk_08127CEC +_080A3760: .4byte gUnk_02021F30 +_080A3764: .4byte gUnk_03000F50 + + thumb_func_start sub_080A3768 +sub_080A3768: @ 0x080A3768 + push {r4, lr} + ldr r4, _080A377C @ =gUnk_02000080 + ldrb r1, [r4, #6] + cmp r1, #1 + beq _080A37C4 + cmp r1, #1 + bgt _080A3780 + cmp r1, #0 + beq _080A378A + b _080A384C + .align 2, 0 +_080A377C: .4byte gUnk_02000080 +_080A3780: + cmp r1, #2 + beq _080A3804 + cmp r1, #3 + beq _080A3812 + b _080A384C +_080A378A: + ldr r0, _080A37B8 @ =gUnk_02021F30 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + movs r1, #0x10 + ldrsh r0, [r4, r1] + ldr r2, _080A37BC @ =gUnk_081272E0 + ldrb r1, [r4, #0x19] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl sub_0805F46C + ldr r1, _080A37C0 @ =gUnk_03000F50 + movs r2, #0 + movs r0, #1 + strh r0, [r1, #0x1a] + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + strb r2, [r4, #0x18] + b _080A385E + .align 2, 0 +_080A37B8: .4byte gUnk_02021F30 +_080A37BC: .4byte gUnk_081272E0 +_080A37C0: .4byte gUnk_03000F50 +_080A37C4: + ldr r0, _080A37F8 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A385E + ldr r0, _080A37FC @ =gUnk_030010A0 + ldr r0, [r0] + ands r0, r1 + cmp r0, #0 + bne _080A385E + ldrb r1, [r4, #0x18] + adds r1, #1 + strb r1, [r4, #0x18] + lsls r0, r1, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _080A3800 @ =gUnk_03000F50 + movs r0, #0x10 + subs r0, r0, r3 + lsls r0, r0, #8 + orrs r0, r3 + adds r2, #0x68 + strh r0, [r2] + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + cmp r1, #0xf + bls _080A385E + b _080A383C + .align 2, 0 +_080A37F8: .4byte gUnk_03000FD0 +_080A37FC: .4byte gUnk_030010A0 +_080A3800: .4byte gUnk_03000F50 +_080A3804: + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A385E + b _080A383C +_080A3812: + ldr r0, _080A3844 @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #1 + ands r0, r1 + cmp r0, #0 + bne _080A385E + ldrb r1, [r4, #0x18] + subs r1, #1 + strb r1, [r4, #0x18] + lsls r0, r1, #0x18 + lsrs r3, r0, #0x18 + ldr r2, _080A3848 @ =gUnk_03000F50 + movs r0, #0x10 + subs r0, r0, r3 + lsls r0, r0, #8 + orrs r0, r3 + adds r2, #0x68 + strh r0, [r2] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _080A385E +_080A383C: + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + b _080A385E + .align 2, 0 +_080A3844: .4byte gUnk_030010A0 +_080A3848: .4byte gUnk_03000F50 +_080A384C: + ldr r1, _080A3860 @ =gUnk_03000FD0 + ldrb r0, [r1] + cmp r0, #0 + bne _080A385E + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1, #4] + bl sub_080A3954 +_080A385E: + pop {r4, pc} + .align 2, 0 +_080A3860: .4byte gUnk_03000FD0 + + thumb_func_start sub_080A3864 +sub_080A3864: @ 0x080A3864 + push {lr} + ldr r1, _080A3884 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080A3880 + bl sub_080A3954 + movs r0, #5 + movs r1, #8 + bl sub_08050054 +_080A3880: + pop {pc} + .align 2, 0 +_080A3884: .4byte gUnk_02000080 + + thumb_func_start sub_080A3888 +sub_080A3888: @ 0x080A3888 + push {lr} + ldr r1, _080A38A8 @ =gUnk_03000FD0 + ldr r0, _080A38AC @ =0xFFFF7FFF + str r0, [r1, #4] + movs r0, #5 + movs r1, #4 + bl sub_08050054 + ldr r0, _080A38B0 @ =gUnk_02000080 + ldrh r0, [r0, #8] + bl sub_08050038 + bl sub_080A3954 + pop {pc} + .align 2, 0 +_080A38A8: .4byte gUnk_03000FD0 +_080A38AC: .4byte 0xFFFF7FFF +_080A38B0: .4byte gUnk_02000080 + + thumb_func_start sub_080A38B4 +sub_080A38B4: @ 0x080A38B4 + push {lr} + movs r0, #4 + movs r1, #4 + bl sub_08050054 + ldr r0, _080A38CC @ =gUnk_02000080 + ldrh r0, [r0, #8] + bl sub_08050038 + bl sub_080A3954 + pop {pc} + .align 2, 0 +_080A38CC: .4byte gUnk_02000080 + + thumb_func_start sub_080A38D0 +sub_080A38D0: @ 0x080A38D0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + ldr r0, _080A391C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A3914 + ldr r0, _080A3920 @ =gUnk_02021F30 + movs r6, #0x80 + lsls r6, r6, #4 + adds r1, r6, #0 + bl sub_0801D630 + ldr r4, _080A3924 @ =gUnk_03000F50 + movs r0, #0 + mov r8, r0 + movs r5, #1 + strh r5, [r4, #0x1a] + ldr r0, _080A3928 @ =gUnk_020344B0 + adds r1, r6, #0 + bl sub_0801D630 + strh r5, [r4, #0x26] + adds r4, #0x68 + movs r0, #0x80 + lsls r0, r0, #5 + strh r0, [r4] + ldr r0, _080A392C @ =gUnk_02000080 + mov r1, r8 + strb r1, [r0, #5] + movs r0, #4 + movs r1, #8 + bl sub_08050054 +_080A3914: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A391C: .4byte gUnk_03000FD0 +_080A3920: .4byte gUnk_02021F30 +_080A3924: .4byte gUnk_03000F50 +_080A3928: .4byte gUnk_020344B0 +_080A392C: .4byte gUnk_02000080 + + thumb_func_start sub_080A3930 +sub_080A3930: @ 0x080A3930 + push {lr} + ldr r0, _080A394C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A3948 + movs r0, #7 + movs r1, #8 + bl sub_08050054 + ldr r1, _080A3950 @ =gUnk_03001000 + movs r0, #2 + strb r0, [r1, #3] +_080A3948: + pop {pc} + .align 2, 0 +_080A394C: .4byte gUnk_03000FD0 +_080A3950: .4byte gUnk_03001000 + + thumb_func_start sub_080A3954 +sub_080A3954: @ 0x080A3954 + ldr r2, _080A397C @ =gUnk_02000080 + ldr r1, [r2, #0xc] + ldrb r0, [r1] + movs r3, #0 + strb r0, [r2, #5] + strb r3, [r2, #6] + ldrh r0, [r1, #6] + strh r0, [r2, #0x10] + ldrh r0, [r1, #4] + strh r0, [r2, #8] + ldrh r0, [r1, #8] + strh r0, [r2, #0x12] + ldrh r0, [r1, #0xa] + strh r0, [r2, #0x14] + ldrb r0, [r1, #1] + strb r0, [r2, #0x19] + adds r1, #0xc + str r1, [r2, #0xc] + bx lr + .align 2, 0 +_080A397C: .4byte gUnk_02000080 + + thumb_func_start sub_080A3980 +sub_080A3980: @ 0x080A3980 + push {lr} + ldr r0, _080A3990 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A398E + bl sub_080560A8 +_080A398E: + pop {pc} + .align 2, 0 +_080A3990: .4byte gUnk_03000FD0 + + thumb_func_start sub_080A3994 +sub_080A3994: @ 0x080A3994 + push {r4, r5, lr} + ldr r0, _080A39AC @ =gUnk_02000080 + ldrb r1, [r0, #6] + adds r2, r0, #0 + cmp r1, #4 + bls _080A39A2 + b _080A3B14 +_080A39A2: + lsls r0, r1, #2 + ldr r1, _080A39B0 @ =_080A39B4 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A39AC: .4byte gUnk_02000080 +_080A39B0: .4byte _080A39B4 +_080A39B4: @ jump table + .4byte _080A39C8 @ case 0 + .4byte _080A3A38 @ case 1 + .4byte _080A3AB8 @ case 2 + .4byte _080A3AEE @ case 3 + .4byte _080A3B14 @ case 4 +_080A39C8: + movs r5, #1 + strb r5, [r2, #6] + movs r4, #0 + movs r0, #0x1e + strh r0, [r2, #8] + strb r4, [r2, #3] + movs r0, #1 + bl sub_0801DA90 + bl sub_080A3210 + bl sub_080A4D34 + movs r0, #0xa + bl sub_0801D714 + movs r0, #0 + movs r1, #0 + bl sub_0801D79C + movs r0, #4 + bl sub_0801D7EC + movs r0, #0xc0 + lsls r0, r0, #0x13 + movs r1, #0x20 + bl sub_0801D630 + movs r0, #0 + movs r1, #0 + bl sub_08052418 + ldr r2, _080A3A2C @ =gUnk_03000F50 + ldrh r0, [r2] + movs r3, #0xc0 + lsls r3, r3, #3 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r0, _080A3A30 @ =0x00001C01 + strh r0, [r2, #0x14] + ldr r0, _080A3A34 @ =0x00001D05 + strh r0, [r2, #0x20] + strh r5, [r2, #0x26] + movs r0, #4 + movs r1, #8 + bl sub_08050054 + b _080A3B36 + .align 2, 0 +_080A3A2C: .4byte gUnk_03000F50 +_080A3A30: .4byte 0x00001C01 +_080A3A34: .4byte 0x00001D05 +_080A3A38: + ldr r0, _080A3A50 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + beq _080A3A42 + b _080A3B36 +_080A3A42: + ldrh r0, [r2, #8] + cmp r0, #0 + beq _080A3A54 + subs r0, #1 + strh r0, [r2, #8] + b _080A3B36 + .align 2, 0 +_080A3A50: .4byte gUnk_03000FD0 +_080A3A54: + ldrb r4, [r2, #3] + ldr r0, _080A3A68 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #0x40 + beq _080A3A72 + cmp r0, #0x40 + bgt _080A3A6C + cmp r0, #1 + beq _080A3A7A + b _080A3A9A + .align 2, 0 +_080A3A68: .4byte gUnk_03000FF0 +_080A3A6C: + cmp r0, #0x80 + beq _080A3A76 + b _080A3A9A +_080A3A72: + movs r4, #0 + b _080A3A9A +_080A3A76: + movs r4, #1 + b _080A3A9A +_080A3A7A: + cmp r4, #0 + beq _080A3A82 + movs r0, #4 + b _080A3A8C +_080A3A82: + movs r0, #8 + movs r1, #0 + bl sub_08050318 + movs r0, #2 +_080A3A8C: + ldr r1, _080A3AB4 @ =gUnk_02000080 + strb r0, [r1, #6] + movs r0, #0x3c + strh r0, [r1, #8] + movs r0, #0x6a + bl sub_080A3268 +_080A3A9A: + ldr r1, _080A3AB4 @ =gUnk_02000080 + ldrb r0, [r1, #3] + cmp r0, r4 + beq _080A3B36 + strb r4, [r1, #3] + movs r0, #0 + adds r1, r4, #0 + bl sub_08052418 + movs r0, #0x69 + bl sub_080A3268 + b _080A3B36 + .align 2, 0 +_080A3AB4: .4byte gUnk_02000080 +_080A3AB8: + movs r0, #0 + bl sub_0807CDA4 + adds r1, r0, #0 + ldr r4, _080A3AD8 @ =gUnk_02000080 + strb r1, [r4] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080A3ADC + cmp r1, #1 + bne _080A3B36 + movs r0, #4 + strb r0, [r4, #6] + b _080A3B36 + .align 2, 0 +_080A3AD8: .4byte gUnk_02000080 +_080A3ADC: + movs r0, #0x3c + strh r0, [r4, #8] + movs r0, #9 + movs r1, #0 + bl sub_08050318 + movs r0, #3 + strb r0, [r4, #6] + b _080A3B36 +_080A3AEE: + adds r1, r2, #0 + ldrh r0, [r1, #8] + cmp r0, #0 + beq _080A3AFC + subs r0, #1 + strh r0, [r1, #8] + b _080A3B36 +_080A3AFC: + ldr r0, _080A3B10 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #0xb + ands r0, r1 + cmp r0, #0 + beq _080A3B36 + movs r0, #1 + strb r0, [r2, #6] + b _080A3B36 + .align 2, 0 +_080A3B10: .4byte gUnk_03000FF0 +_080A3B14: + ldr r2, _080A3B38 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _080A3B3C @ =0x0000FDFF + ands r0, r1 + movs r4, #0 + strh r0, [r2] + bl sub_08050384 + movs r0, #7 + movs r1, #8 + bl sub_08050054 + ldr r1, _080A3B40 @ =gUnk_03001000 + movs r0, #3 + strb r0, [r1, #3] + ldr r0, _080A3B44 @ =gUnk_02000080 + strb r4, [r0, #6] +_080A3B36: + pop {r4, r5, pc} + .align 2, 0 +_080A3B38: .4byte gUnk_03000F50 +_080A3B3C: .4byte 0x0000FDFF +_080A3B40: .4byte gUnk_03001000 +_080A3B44: .4byte gUnk_02000080 + + thumb_func_start sub_080A3B48 +sub_080A3B48: @ 0x080A3B48 + push {lr} + movs r1, #0 + ldr r0, _080A3B6C @ =gUnk_02002A40 + ldr r3, _080A3B70 @ =0x0000012B + adds r2, r0, r3 + ldrb r0, [r2] + cmp r0, #0 + beq _080A3B66 +_080A3B58: + adds r1, #1 + cmp r1, #0x12 + bhi _080A3B66 + adds r0, r1, r2 + ldrb r0, [r0] + cmp r0, #0 + bne _080A3B58 +_080A3B66: + adds r0, r1, #0 + pop {pc} + .align 2, 0 +_080A3B6C: .4byte gUnk_02002A40 +_080A3B70: .4byte 0x0000012B + + thumb_func_start sub_080A3B74 +sub_080A3B74: @ 0x080A3B74 + ldr r0, _080A3B80 @ =gUnk_02000080 + adds r0, #0x2f + movs r1, #0 + strb r1, [r0] + bx lr + .align 2, 0 +_080A3B80: .4byte gUnk_02000080 + + thumb_func_start sub_080A3B84 +sub_080A3B84: @ 0x080A3B84 + push {r4, r5, lr} + ldr r4, _080A3BC4 @ =gUnk_030010A0 + adds r4, #0x2c + movs r5, #0 + movs r0, #2 + strb r0, [r4] + bl sub_080AD90C + ldr r1, _080A3BC8 @ =gUnk_081280C4 + ldr r0, _080A3BCC @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A3B74 + bl sub_080A4054 + bl sub_0801C1D4 + bl sub_0801C208 + bl sub_0805E5C0 + bl sub_080AD9B0 + bl sub_080AD918 + strb r5, [r4] + pop {r4, r5, pc} + .align 2, 0 +_080A3BC4: .4byte gUnk_030010A0 +_080A3BC8: .4byte gUnk_081280C4 +_080A3BCC: .4byte gUnk_02000080 + + thumb_func_start sub_080A3BD0 +sub_080A3BD0: @ 0x080A3BD0 + push {r4, lr} + ldr r0, _080A3C54 @ =gUnk_02000080 + movs r1, #0 + movs r4, #1 + strb r4, [r0, #1] + adds r0, #0x2a + strb r1, [r0] + bl sub_080A4D34 + movs r0, #0xcb + bl sub_0801D714 + movs r0, #0x75 + bl sub_0801D7EC + bl sub_080A4494 + adds r1, r0, #7 + cmp r1, #0 + bge _080A3BFA + adds r1, #7 +_080A3BFA: + asrs r0, r1, #3 + subs r0, #6 + cmp r0, #0 + bge _080A3C04 + movs r0, #0 +_080A3C04: + cmp r0, #6 + ble _080A3C0A + movs r0, #6 +_080A3C0A: + adds r0, #0x76 + bl sub_0801D7EC + ldr r1, _080A3C58 @ =gUnk_03000F50 + ldrh r2, [r1] + movs r3, #0xf0 + lsls r3, r3, #5 + adds r0, r3, #0 + orrs r0, r2 + strh r0, [r1] + ldr r0, _080A3C5C @ =0x00001C01 + strh r0, [r1, #0x14] + ldr r0, _080A3C60 @ =0x00001D02 + strh r0, [r1, #0x20] + ldr r0, _080A3C64 @ =0x00001E0B + strh r0, [r1, #0x2c] + strh r4, [r1, #0x1a] + strh r4, [r1, #0x26] + strh r4, [r1, #0x32] + bl sub_080A4528 + bl sub_080A4398 + movs r0, #0 + bl sub_0801E738 + ldr r0, _080A3C68 @ =gUnk_081280DC + bl sub_080A70AC + movs r0, #1 + bl sub_080A7114 + movs r0, #6 + movs r1, #8 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080A3C54: .4byte gUnk_02000080 +_080A3C58: .4byte gUnk_03000F50 +_080A3C5C: .4byte 0x00001C01 +_080A3C60: .4byte 0x00001D02 +_080A3C64: .4byte 0x00001E0B +_080A3C68: .4byte gUnk_081280DC + + thumb_func_start sub_080A3C6C +sub_080A3C6C: @ 0x080A3C6C + push {r4, r5, lr} + ldr r0, _080A3C9C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + beq _080A3C78 + b _080A3DA8 +_080A3C78: + ldr r5, _080A3CA0 @ =gUnk_02000080 + movs r0, #2 + strb r0, [r5, #1] + adds r0, r5, #0 + adds r0, #0x28 + ldrb r0, [r0] + lsls r2, r0, #0x10 + ldr r0, [r5, #0x10] + subs r4, r2, r0 + adds r1, r4, #0 + cmp r4, #0 + bge _080A3C92 + rsbs r1, r4, #0 +_080A3C92: + ldr r0, _080A3CA4 @ =0x00001FFD + cmp r1, r0 + bhi _080A3CA8 + str r2, [r5, #0x10] + b _080A3CDE + .align 2, 0 +_080A3C9C: .4byte gUnk_03000FD0 +_080A3CA0: .4byte gUnk_02000080 +_080A3CA4: .4byte 0x00001FFD +_080A3CA8: + movs r0, #1 + strb r0, [r5, #1] + adds r0, r4, #0 + bl sub_08000E44 + adds r2, r0, #0 + adds r0, r4, #0 + cmp r0, #0 + bge _080A3CBE + ldr r1, _080A3D18 @ =0x0001FFFF + adds r0, r0, r1 +_080A3CBE: + asrs r4, r0, #0x11 + cmp r4, #0 + bge _080A3CC6 + rsbs r4, r4, #0 +_080A3CC6: + cmp r4, #5 + ble _080A3CCC + movs r4, #5 +_080A3CCC: + ldr r0, _080A3D1C @ =gUnk_081280EE + adds r0, r4, r0 + ldrb r1, [r0] + ldr r0, _080A3D20 @ =0x00000666 + muls r0, r2, r0 + muls r1, r0, r1 + ldr r0, [r5, #0x10] + adds r0, r0, r1 + str r0, [r5, #0x10] +_080A3CDE: + adds r3, r5, #0 + adds r3, #0x29 + ldrb r2, [r3] + ldr r0, [r5, #0x10] + adds r1, r0, #0 + cmp r0, #0 + bge _080A3CF0 + ldr r4, _080A3D24 @ =0x0000FFFF + adds r1, r0, r4 +_080A3CF0: + asrs r1, r1, #0x10 + cmp r2, r1 + beq _080A3CFE + strb r1, [r3] + movs r0, #0x69 + bl sub_080A3268 +_080A3CFE: + ldr r2, _080A3D28 @ =gUnk_03000FF0 + ldrh r1, [r2, #2] + ldr r0, _080A3D2C @ =0x0000020A + ands r0, r1 + cmp r0, #0 + beq _080A3D30 + movs r0, #2 + bl sub_080A7114 + movs r0, #0x6c + bl sub_080A3268 + b _080A3DA8 + .align 2, 0 +_080A3D18: .4byte 0x0001FFFF +_080A3D1C: .4byte gUnk_081280EE +_080A3D20: .4byte 0x00000666 +_080A3D24: .4byte 0x0000FFFF +_080A3D28: .4byte gUnk_03000FF0 +_080A3D2C: .4byte 0x0000020A +_080A3D30: + adds r0, r5, #0 + adds r0, #0x28 + ldrb r4, [r0] + ldrh r1, [r2, #4] + adds r5, r0, #0 + cmp r1, #0x20 + beq _080A3D56 + cmp r1, #0x20 + bgt _080A3D4C + cmp r1, #1 + beq _080A3D5E + cmp r1, #0x10 + beq _080A3D5A + b _080A3D8A +_080A3D4C: + cmp r1, #0x40 + beq _080A3D56 + cmp r1, #0x80 + beq _080A3D5A + b _080A3D8A +_080A3D56: + subs r4, #1 + b _080A3D8A +_080A3D5A: + adds r4, #1 + b _080A3D8A +_080A3D5E: + ldr r2, _080A3DAC @ =gUnk_02000080 + ldrb r0, [r2, #1] + cmp r0, #2 + bne _080A3D8A + ldr r0, [r2, #0x10] + cmp r0, #0 + bge _080A3D70 + ldr r1, _080A3DB0 @ =0x0000FFFF + adds r0, r0, r1 +_080A3D70: + asrs r4, r0, #0x10 + ldr r0, _080A3DB4 @ =gUnk_02002A40 + movs r1, #0x8c + lsls r1, r1, #1 + adds r0, r0, r1 + adds r0, r4, r0 + ldrb r1, [r0] + adds r0, r2, #0 + adds r0, #0x2a + strb r1, [r0] + movs r0, #3 + bl sub_080A7114 +_080A3D8A: + bl sub_080A3B48 + cmp r0, r4 + bgt _080A3D94 + subs r4, r0, #1 +_080A3D94: + cmp r0, #1 + bgt _080A3D9A + movs r4, #0 +_080A3D9A: + cmp r4, #0 + bge _080A3DA0 + movs r4, #0 +_080A3DA0: + ldrb r0, [r5] + cmp r0, r4 + beq _080A3DA8 + strb r4, [r5] +_080A3DA8: + pop {r4, r5, pc} + .align 2, 0 +_080A3DAC: .4byte gUnk_02000080 +_080A3DB0: .4byte 0x0000FFFF +_080A3DB4: .4byte gUnk_02002A40 + + thumb_func_start sub_080A3DB8 +sub_080A3DB8: @ 0x080A3DB8 + push {lr} + ldr r0, _080A3DDC @ =gUnk_02000080 + ldrb r1, [r0, #1] + cmp r1, #6 + bne _080A3DEE + ldr r0, _080A3DE0 @ =gUnk_02022740 + strb r1, [r0] + ldrb r0, [r0, #3] + lsls r0, r0, #3 + ldr r1, _080A3DE4 @ =gUnk_080C9CBC + adds r1, r0, r1 + ldrb r0, [r1, #3] + cmp r0, #0 + beq _080A3DE8 + ldrb r1, [r1, #4] + bl sub_080A7138 + b _080A3DF8 + .align 2, 0 +_080A3DDC: .4byte gUnk_02000080 +_080A3DE0: .4byte gUnk_02022740 +_080A3DE4: .4byte gUnk_080C9CBC +_080A3DE8: + bl sub_080A71DC + b _080A3DF8 +_080A3DEE: + ldr r1, _080A3DFC @ =gUnk_02022740 + movs r0, #5 + strb r0, [r1] + bl sub_080A71DC +_080A3DF8: + pop {pc} + .align 2, 0 +_080A3DFC: .4byte gUnk_02022740 + + thumb_func_start sub_080A3E00 +sub_080A3E00: @ 0x080A3E00 + push {lr} + ldr r1, _080A3E18 @ =gUnk_02000080 + movs r0, #3 + strb r0, [r1, #1] + ldr r2, _080A3E1C @ =gUnk_081280F4 + ldrb r0, [r1, #6] + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A3E18: .4byte gUnk_02000080 +_080A3E1C: .4byte gUnk_081280F4 + + thumb_func_start sub_080A3E20 +sub_080A3E20: @ 0x080A3E20 + push {lr} + ldr r2, _080A3E44 @ =gUnk_02000080 + movs r0, #0 + strh r0, [r2, #0x18] + adds r1, r2, #0 + adds r1, #0x2c + ldrb r0, [r1] + adds r0, #2 + strb r0, [r1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0x45 + ble _080A3E42 + movs r0, #0x46 + strb r0, [r1] + movs r0, #1 + strb r0, [r2, #6] +_080A3E42: + pop {pc} + .align 2, 0 +_080A3E44: .4byte gUnk_02000080 + + thumb_func_start sub_080A3E48 +sub_080A3E48: @ 0x080A3E48 + push {r4, lr} + ldr r2, _080A3E78 @ =gUnk_080C9CBC + ldr r3, _080A3E7C @ =gUnk_02000080 + adds r0, r3, #0 + adds r0, #0x2a + ldrb r0, [r0] + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r1, [r0, #5] + ldr r0, _080A3E80 @ =gUnk_02022740 + ldrb r0, [r0, #3] + lsls r0, r0, #3 + adds r0, r0, r2 + ldrb r0, [r0, #5] + cmp r1, r0 + beq _080A3E84 + movs r0, #0x8c + lsls r0, r0, #1 + bl sub_080A3268 + movs r0, #4 + bl sub_080A7114 + b _080A3EC8 + .align 2, 0 +_080A3E78: .4byte gUnk_080C9CBC +_080A3E7C: .4byte gUnk_02000080 +_080A3E80: .4byte gUnk_02022740 +_080A3E84: + movs r2, #0 + movs r0, #2 + strb r0, [r3, #6] + movs r0, #0x14 + strh r0, [r3, #8] + ldr r3, _080A3ECC @ =gUnk_03000F50 + ldrh r0, [r3] + movs r4, #0x80 + lsls r4, r4, #6 + adds r1, r4, #0 + orrs r0, r1 + strh r0, [r3] + adds r1, r3, #0 + adds r1, #0x58 + ldr r0, _080A3ED0 @ =0x00006887 + strh r0, [r1] + adds r1, #4 + ldr r0, _080A3ED4 @ =0x0000405F + strh r0, [r1] + adds r1, #4 + movs r0, #0x3f + strh r0, [r1] + adds r1, #2 + movs r0, #0x1f + strh r0, [r1] + adds r1, #4 + ldr r0, _080A3ED8 @ =0x00003F90 + strh r0, [r1] + adds r0, r3, #0 + adds r0, #0x6a + strh r2, [r0] + movs r0, #0xfa + bl sub_080A3268 +_080A3EC8: + pop {r4, pc} + .align 2, 0 +_080A3ECC: .4byte gUnk_03000F50 +_080A3ED0: .4byte 0x00006887 +_080A3ED4: .4byte 0x0000405F +_080A3ED8: .4byte 0x00003F90 + + thumb_func_start sub_080A3EDC +sub_080A3EDC: @ 0x080A3EDC + push {lr} + ldr r2, _080A3F08 @ =gUnk_03000F50 + adds r1, r2, #0 + adds r1, #0x6a + ldrh r0, [r1] + adds r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r0, #0xe + bls _080A3F04 + movs r0, #0 + strh r0, [r1] + ldrh r1, [r2] + ldr r0, _080A3F0C @ =0x0000DFFF + ands r0, r1 + strh r0, [r2] + movs r0, #5 + bl sub_080A7114 +_080A3F04: + pop {pc} + .align 2, 0 +_080A3F08: .4byte gUnk_03000F50 +_080A3F0C: .4byte 0x0000DFFF + + thumb_func_start sub_080A3F10 +sub_080A3F10: @ 0x080A3F10 + push {r4, lr} + ldr r2, _080A3F48 @ =gUnk_02000080 + movs r0, #4 + strb r0, [r2, #1] + adds r3, r2, #0 + adds r3, #0x2c + ldrb r1, [r3] + subs r1, #3 + strb r1, [r3] + movs r4, #0x80 + lsls r4, r4, #1 + adds r0, r4, #0 + ldrh r4, [r2, #0x18] + adds r0, r0, r4 + strh r0, [r2, #0x18] + lsls r1, r1, #0x18 + cmp r1, #0 + bge _080A3F46 + movs r0, #0 + strh r0, [r2, #0x18] + strb r0, [r3] + movs r0, #1 + bl sub_080A7114 + movs r0, #0x6d + bl sub_080A3268 +_080A3F46: + pop {r4, pc} + .align 2, 0 +_080A3F48: .4byte gUnk_02000080 + + thumb_func_start sub_080A3F4C +sub_080A3F4C: @ 0x080A3F4C + push {lr} + ldr r1, _080A3F60 @ =gUnk_08128100 + ldr r0, _080A3F64 @ =gUnk_02000080 + ldrb r0, [r0, #6] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A3F60: .4byte gUnk_08128100 +_080A3F64: .4byte gUnk_02000080 + + thumb_func_start sub_080A3F68 +sub_080A3F68: @ 0x080A3F68 + push {r4, r5, lr} + ldr r5, _080A3FB4 @ =gUnk_02000080 + movs r0, #5 + strb r0, [r5, #1] + ldr r4, _080A3FB8 @ =gUnk_02002C81 + ldr r0, _080A3FBC @ =gUnk_02022740 + ldrb r1, [r0, #3] + adds r0, r4, #0 + bl sub_0801D5BC + ldr r0, _080A3FC0 @ =0xFFFFFED6 + adds r1, r4, r0 + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x63 + bls _080A3F96 + ldr r0, _080A3FC4 @ =0xFFFFFED5 + adds r1, r4, r0 + movs r0, #1 + strb r0, [r1] +_080A3F96: + bl sub_080A4468 + movs r0, #0xcd + bl sub_080A3268 + ldr r0, _080A3FC8 @ =0x00000702 + movs r1, #0xe + bl sub_080563C8 + movs r0, #1 + strb r0, [r5, #6] + movs r0, #0x78 + strh r0, [r5, #8] + pop {r4, r5, pc} + .align 2, 0 +_080A3FB4: .4byte gUnk_02000080 +_080A3FB8: .4byte gUnk_02002C81 +_080A3FBC: .4byte gUnk_02022740 +_080A3FC0: .4byte 0xFFFFFED6 +_080A3FC4: .4byte 0xFFFFFED5 +_080A3FC8: .4byte 0x00000702 + + thumb_func_start sub_080A3FCC +sub_080A3FCC: @ 0x080A3FCC + push {lr} + ldr r0, _080A3FE8 @ =gUnk_02000050 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + bne _080A3FE6 + ldr r0, _080A3FEC @ =gUnk_02000080 + movs r1, #2 + strb r1, [r0, #6] + ldr r0, _080A3FF0 @ =0x00000147 + bl sub_080A3268 +_080A3FE6: + pop {pc} + .align 2, 0 +_080A3FE8: .4byte gUnk_02000050 +_080A3FEC: .4byte gUnk_02000080 +_080A3FF0: .4byte 0x00000147 + + thumb_func_start sub_080A3FF4 +sub_080A3FF4: @ 0x080A3FF4 + push {lr} + ldr r2, _080A4014 @ =gUnk_02000080 + ldrh r0, [r2, #8] + subs r0, #1 + strh r0, [r2, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + beq _080A4018 + ldrh r0, [r2, #0x1a] + ldrh r3, [r2, #0x18] + adds r1, r0, r3 + strh r1, [r2, #0x18] + adds r0, #0x20 + strh r0, [r2, #0x1a] + b _080A4036 + .align 2, 0 +_080A4014: .4byte gUnk_02000080 +_080A4018: + movs r0, #6 + strb r0, [r2, #1] + movs r0, #3 + strb r0, [r2, #6] + movs r0, #0x4f + strh r0, [r2, #8] + movs r0, #0xb3 + movs r1, #1 + movs r2, #0 + bl sub_080A2960 + movs r0, #0xe5 + lsls r0, r0, #1 + bl sub_080A3268 +_080A4036: + pop {pc} + + thumb_func_start sub_080A4038 +sub_080A4038: @ 0x080A4038 + push {lr} + ldr r1, _080A4050 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bge _080A404E + movs r0, #2 + bl sub_080A7114 +_080A404E: + pop {pc} + .align 2, 0 +_080A4050: .4byte gUnk_02000080 + + thumb_func_start sub_080A4054 +sub_080A4054: @ 0x080A4054 + push {lr} + bl sub_080A422C + bl sub_080A414C + bl sub_080A4080 + movs r2, #0 + ldr r0, _080A407C @ =gUnk_02019EE0 + adds r1, r0, #1 +_080A4068: + ldrb r0, [r1] + cmp r0, #0 + beq _080A4072 + subs r0, #1 + strb r0, [r1] +_080A4072: + adds r1, #4 + adds r2, #1 + cmp r2, #0xf + bls _080A4068 + pop {pc} + .align 2, 0 +_080A407C: .4byte gUnk_02019EE0 + + thumb_func_start sub_080A4080 +sub_080A4080: @ 0x080A4080 + push {r4, r5, r6, r7, lr} + ldr r4, _080A4134 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + ldr r5, _080A4138 @ =gUnk_02000080 + adds r0, r5, #0 + adds r0, #0x2f + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #0x10 + subs r0, r0, r1 + strh r0, [r4, #2] + movs r0, #0x40 + strh r0, [r4] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #8] + ldr r0, _080A413C @ =0x000001FB + movs r1, #0 + bl sub_080ADA14 + movs r0, #0x94 + strh r0, [r4, #2] + movs r0, #0x50 + strh r0, [r4] + movs r0, #0x90 + lsls r0, r0, #3 + strh r0, [r4, #8] + movs r7, #0xfd + lsls r7, r7, #1 + adds r0, r7, #0 + movs r1, #0 + bl sub_080ADA14 + movs r0, #0xb8 + strh r0, [r4] + movs r0, #0x94 + lsls r0, r0, #3 + strh r0, [r4, #8] + adds r0, r7, #0 + movs r1, #1 + bl sub_080ADA14 + ldr r0, _080A4140 @ =gUnk_03001000 + ldrh r0, [r0, #0xc] + lsrs r0, r0, #2 + movs r1, #0xe + ands r0, r1 + ldr r1, _080A4144 @ =gUnk_08128110 + adds r6, r0, r1 + ldrb r1, [r6] + movs r0, #0xa + subs r0, r0, r1 + strh r0, [r4] + movs r0, #0x9c + lsls r0, r0, #3 + strh r0, [r4, #8] + bl sub_080A3B48 + subs r0, #1 + cmp r0, #0 + ble _080A4130 + ldr r1, [r5, #0x10] + cmp r1, #0 + bge _080A4108 + ldr r2, _080A4148 @ =0x0000FFFF + adds r1, r1, r2 +_080A4108: + asrs r5, r1, #0x10 + cmp r5, r0 + beq _080A411C + ldrb r0, [r6, #1] + adds r0, #0x77 + strh r0, [r4, #2] + adds r0, r7, #0 + movs r1, #3 + bl sub_080ADA14 +_080A411C: + cmp r5, #0 + beq _080A4130 + ldrb r1, [r6, #1] + movs r0, #0x27 + subs r0, r0, r1 + strh r0, [r4, #2] + adds r0, r7, #0 + movs r1, #2 + bl sub_080ADA14 +_080A4130: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A4134: .4byte gUnk_03001010 +_080A4138: .4byte gUnk_02000080 +_080A413C: .4byte 0x000001FB +_080A4140: .4byte gUnk_03001000 +_080A4144: .4byte gUnk_08128110 +_080A4148: .4byte 0x0000FFFF + + thumb_func_start sub_080A414C +sub_080A414C: @ 0x080A414C + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r4, _080A4210 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + ldr r0, _080A4214 @ =gUnk_02000080 + ldrh r0, [r0, #0x10] + ldr r1, _080A4218 @ =0x00000B21 + bl __divsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + movs r5, #3 + rsbs r5, r5, #0 + movs r1, #0xff + mov r8, r1 + adds r7, r4, #0 + ldr r6, _080A421C @ =gUnk_080C9160 + rsbs r0, r0, #0 + adds r4, r0, #0 + subs r4, #0x45 + ldr r2, _080A4220 @ =gUnk_02002B6B + mov sb, r2 +_080A4180: + adds r2, r4, #0 + mov r3, r8 + ands r2, r3 + lsls r0, r2, #1 + adds r0, r0, r6 + movs r3, #0 + ldrsh r1, [r0, r3] + lsls r0, r1, #4 + adds r0, r0, r1 + lsls r0, r0, #2 + cmp r0, #0 + bge _080A419A + adds r0, #0xff +_080A419A: + asrs r0, r0, #8 + adds r0, #0x4f + strh r0, [r7, #2] + adds r0, r2, #0 + adds r0, #0x40 + mov r1, r8 + ands r0, r1 + lsls r0, r0, #1 + adds r0, r0, r6 + movs r2, #0 + ldrsh r1, [r0, r2] + lsls r0, r1, #5 + adds r0, r0, r1 + lsls r0, r0, #1 + cmp r0, #0 + bge _080A41BC + adds r0, #0xff +_080A41BC: + asrs r0, r0, #8 + subs r0, #0x10 + strh r0, [r7] + ldr r2, _080A4214 @ =gUnk_02000080 + ldr r0, [r2, #0x10] + cmp r0, #0 + bge _080A41CE + ldr r3, _080A4224 @ =0x0000FFFF + adds r0, r0, r3 +_080A41CE: + asrs r0, r0, #0x10 + adds r3, r0, r5 + cmp r3, #0 + blt _080A4200 + mov r1, sb + adds r0, r3, r1 + ldrb r1, [r0] + ldr r0, _080A4228 @ =gUnk_02002A40 + cmp r5, #0 + bne _080A41EE + ldrb r2, [r2, #1] + cmp r2, #4 + bgt _080A41EE + cmp r2, #3 + blt _080A41EE + subs r1, #1 +_080A41EE: + cmp r1, #0 + ble _080A4200 + movs r2, #0x8c + lsls r2, r2, #1 + adds r0, r0, r2 + adds r0, r3, r0 + ldrb r0, [r0] + bl sub_080A42E0 +_080A4200: + adds r4, #0x17 + adds r5, #1 + cmp r5, #3 + ble _080A4180 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A4210: .4byte gUnk_03001010 +_080A4214: .4byte gUnk_02000080 +_080A4218: .4byte 0x00000B21 +_080A421C: .4byte gUnk_080C9160 +_080A4220: .4byte gUnk_02002B6B +_080A4224: .4byte 0x0000FFFF +_080A4228: .4byte gUnk_02002A40 + + thumb_func_start sub_080A422C +sub_080A422C: @ 0x080A422C + push {r4, r5, lr} + ldr r5, _080A42A4 @ =gUnk_02000080 + ldrh r0, [r5, #0x18] + lsrs r0, r0, #8 + movs r1, #0x1b + bl __modsi3 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + ldr r1, _080A42A8 @ =gUnk_08128120 + adds r0, r0, r1 + movs r1, #0 + ldrsb r1, [r0, r1] + lsls r1, r1, #4 + movs r4, #0x80 + lsls r4, r4, #1 + movs r0, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_0805ECEC + ldr r1, _080A42AC @ =gUnk_03001010 + movs r0, #0 + strh r4, [r1, #4] + strh r0, [r1, #6] + movs r0, #0x4f + strh r0, [r1, #2] + adds r0, r5, #0 + adds r0, #0x2a + ldrb r2, [r0] + adds r4, #0x80 + ldrb r0, [r5, #1] + cmp r0, #5 + beq _080A42B6 + cmp r0, #5 + bgt _080A42B0 + cmp r0, #3 + blt _080A42C4 + adds r4, r5, #0 + adds r4, #0x2c + movs r0, #0 + ldrsb r0, [r4, r0] + adds r0, #0x32 + strh r0, [r1] + adds r0, r2, #0 + movs r1, #0 + bl sub_080A42E0 + movs r1, #0 + ldrsb r1, [r4, r1] + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #1 + movs r1, #0x46 + bl __divsi3 + movs r1, #0x8a + subs r4, r1, r0 + b _080A42C6 + .align 2, 0 +_080A42A4: .4byte gUnk_02000080 +_080A42A8: .4byte gUnk_08128120 +_080A42AC: .4byte gUnk_03001010 +_080A42B0: + cmp r0, #6 + beq _080A42C6 + b _080A42C4 +_080A42B6: + movs r0, #0x78 + strh r0, [r1] + adds r0, r2, #0 + movs r1, #0xff + bl sub_080A42E0 + b _080A42C6 +_080A42C4: + movs r4, #0x8a +_080A42C6: + ldr r0, _080A42D8 @ =gUnk_03001010 + strh r4, [r0] + ldr r0, _080A42DC @ =gUnk_02022740 + ldrb r0, [r0, #3] + movs r1, #0 + bl sub_080A42E0 + pop {r4, r5, pc} + .align 2, 0 +_080A42D8: .4byte gUnk_03001010 +_080A42DC: .4byte gUnk_02022740 + + thumb_func_start sub_080A42E0 +sub_080A42E0: @ 0x080A42E0 + push {r4, r5, r6, r7, lr} + adds r4, r1, #0 + lsls r0, r0, #3 + ldr r1, _080A42F4 @ =gUnk_080C9CBC + adds r7, r0, r1 + cmp r4, #0xff + bne _080A42F8 + ldrb r0, [r7, #2] + b _080A42FA + .align 2, 0 +_080A42F4: .4byte gUnk_080C9CBC +_080A42F8: + ldrb r0, [r7, #1] +_080A42FA: + bl sub_080A43A8 + adds r6, r0, #0 + cmp r4, #0 + beq _080A4372 + cmp r4, #0xff + beq _080A4372 + lsls r1, r6, #2 + ldr r0, _080A4348 @ =gUnk_02019EE0 + adds r1, r1, r0 + lsls r5, r6, #1 + ldrb r0, [r1, #2] + cmp r4, r0 + beq _080A4324 + strb r4, [r1, #2] + movs r1, #0xb8 + lsls r1, r1, #2 + adds r0, r5, r1 + adds r1, r4, #0 + bl sub_0801C2F0 +_080A4324: + ldr r1, _080A434C @ =gUnk_03001010 + ldr r2, _080A4350 @ =0x00003AE0 + adds r0, r5, r2 + strh r0, [r1, #8] + movs r0, #0 + ldrsh r4, [r1, r0] + movs r2, #2 + ldrsh r5, [r1, r2] + ldr r0, _080A4354 @ =gUnk_02000080 + ldrb r0, [r0, #1] + cmp r0, #0 + bne _080A4358 + ldrh r0, [r1] + adds r0, #0x10 + strh r0, [r1] + ldrh r0, [r1, #2] + adds r0, #9 + b _080A4362 + .align 2, 0 +_080A4348: .4byte gUnk_02019EE0 +_080A434C: .4byte gUnk_03001010 +_080A4350: .4byte 0x00003AE0 +_080A4354: .4byte gUnk_02000080 +_080A4358: + ldrh r0, [r1] + adds r0, #8 + strh r0, [r1] + ldrh r0, [r1, #2] + adds r0, #0xa +_080A4362: + strh r0, [r1, #2] + movs r0, #0 + movs r1, #5 + bl sub_080ADA14 + ldr r0, _080A4394 @ =gUnk_03001010 + strh r4, [r0] + strh r5, [r0, #2] +_080A4372: + ldrb r1, [r7] + lsls r1, r1, #0xc + movs r0, #0x80 + lsls r0, r0, #4 + orrs r1, r0 + lsls r0, r6, #4 + movs r2, #0xc0 + lsls r2, r2, #2 + adds r0, r0, r2 + orrs r1, r0 + ldr r0, _080A4394 @ =gUnk_03001010 + strh r1, [r0, #8] + movs r0, #0 + movs r1, #3 + bl sub_080ADA14 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A4394: .4byte gUnk_03001010 + + thumb_func_start sub_080A4398 +sub_080A4398: @ 0x080A4398 + push {lr} + ldr r0, _080A43A4 @ =gUnk_02019EE0 + movs r1, #0x40 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_080A43A4: .4byte gUnk_02019EE0 + + thumb_func_start sub_080A43A8 +sub_080A43A8: @ 0x080A43A8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080A43DC + adds r4, r0, #0 + cmp r4, #0xf + bls _080A43C8 + movs r0, #0xf + ands r4, r0 + lsls r1, r4, #4 + movs r0, #0xc0 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_080A4418 +_080A43C8: + lsls r0, r4, #2 + ldr r1, _080A43D8 @ =gUnk_02019EE0 + adds r0, r0, r1 + strb r5, [r0] + movs r1, #2 + strb r1, [r0, #1] + adds r0, r4, #0 + pop {r4, r5, pc} + .align 2, 0 +_080A43D8: .4byte gUnk_02019EE0 + + thumb_func_start sub_080A43DC +sub_080A43DC: @ 0x080A43DC + push {lr} + movs r1, #0 + ldr r2, _080A43EC @ =gUnk_02019EE0 +_080A43E2: + ldrb r3, [r2] + cmp r0, r3 + bne _080A43F0 + adds r0, r1, #0 + b _080A4416 + .align 2, 0 +_080A43EC: .4byte gUnk_02019EE0 +_080A43F0: + adds r2, #4 + adds r1, #1 + cmp r1, #0xf + bls _080A43E2 + movs r1, #0 + ldr r2, _080A4408 @ =gUnk_02019EE0 +_080A43FC: + ldrb r0, [r2, #1] + cmp r0, #0 + bne _080A440C + adds r0, r1, #0 + adds r0, #0x10 + b _080A4416 + .align 2, 0 +_080A4408: .4byte gUnk_02019EE0 +_080A440C: + adds r2, #4 + adds r1, #1 + cmp r1, #0xf + bls _080A43FC + movs r0, #0 +_080A4416: + pop {pc} + + thumb_func_start sub_080A4418 +sub_080A4418: @ 0x080A4418 + push {lr} + lsls r1, r1, #5 + ldr r2, _080A4444 @ =0x06010000 + adds r3, r1, r2 + ldr r1, _080A4448 @ =gUnk_080CA06C + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + movs r2, #0x80 + lsls r2, r2, #0x18 + ands r2, r1 + mvns r0, r2 + ands r0, r1 + ldr r1, _080A444C @ =gUnk_085A2E80 + adds r1, r0, r1 + cmp r2, #0 + beq _080A4450 + adds r0, r1, #0 + adds r1, r3, #0 + bl LZ77UnCompVram + b _080A445C + .align 2, 0 +_080A4444: .4byte 0x06010000 +_080A4448: .4byte gUnk_080CA06C +_080A444C: .4byte gUnk_085A2E80 +_080A4450: + ldr r0, _080A4460 @ =0x040000D4 + str r1, [r0] + str r3, [r0, #4] + ldr r1, _080A4464 @ =0x84000080 + str r1, [r0, #8] + ldr r0, [r0, #8] +_080A445C: + pop {pc} + .align 2, 0 +_080A4460: .4byte 0x040000D4 +_080A4464: .4byte 0x84000080 + + thumb_func_start sub_080A4468 +sub_080A4468: @ 0x080A4468 + push {lr} + ldr r0, _080A4488 @ =gUnk_03003DF0 + movs r1, #0 + strb r1, [r0, #2] + ldr r0, [r0, #4] + strb r1, [r0, #3] + ldr r0, _080A448C @ =gUnk_02022740 + ldrb r0, [r0, #3] + bl sub_0801E6C8 + ldr r0, _080A4490 @ =gUnk_02000080 + adds r0, #0x2a + ldrb r0, [r0] + bl sub_0801E798 + pop {pc} + .align 2, 0 +_080A4488: .4byte gUnk_03003DF0 +_080A448C: .4byte gUnk_02022740 +_080A4490: .4byte gUnk_02000080 + + thumb_func_start sub_080A4494 +sub_080A4494: @ 0x080A4494 + push {r4, r5, lr} + bl sub_0805F2C8 + adds r4, r0, #0 + cmp r4, #0 + beq _080A44D0 + ldr r0, _080A44D4 @ =gUnk_02000D00 + str r0, [r4, #8] + movs r1, #0 + strb r1, [r4, #2] + movs r0, #5 + strb r0, [r4, #3] + strb r1, [r4, #1] + ldr r1, _080A44D8 @ =gUnk_02002AC0 + adds r0, r4, #0 + movs r2, #0x80 + bl sub_080A44E0 + ldr r0, _080A44DC @ =gUnk_02022740 + ldr r0, [r0, #0xc] + bl sub_08002632 + adds r0, r4, #0 + movs r2, #0xa0 + bl sub_080A44E0 + adds r5, r0, #0 + adds r0, r4, #0 + bl sub_0805F300 +_080A44D0: + adds r0, r5, #0 + pop {r4, r5, pc} + .align 2, 0 +_080A44D4: .4byte gUnk_02000D00 +_080A44D8: .4byte gUnk_02002AC0 +_080A44DC: .4byte gUnk_02022740 + + thumb_func_start sub_080A44E0 +sub_080A44E0: @ 0x080A44E0 + push {r4, r5, r6, lr} + mov r6, r8 + push {r6} + adds r4, r0, #0 + adds r6, r1, #0 + adds r5, r2, #0 + movs r0, #0 + strh r0, [r4, #6] + movs r0, #0x60 + strh r0, [r4, #4] + movs r0, #0xc0 + lsls r0, r0, #2 + mov r8, r0 + ldr r0, [r4, #8] + mov r1, r8 + bl sub_0801D630 + adds r0, r6, #0 + adds r1, r4, #0 + bl sub_0805F76C + adds r6, r0, #0 + ldr r0, [r4, #8] + lsls r5, r5, #5 + ldr r1, _080A4524 @ =0x06010000 + adds r5, r5, r1 + adds r1, r5, #0 + mov r2, r8 + bl sub_0801D66C + adds r0, r6, #0 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A4524: .4byte 0x06010000 + + thumb_func_start sub_080A4528 +sub_080A4528: @ 0x080A4528 + push {r4, lr} + ldr r0, _080A4540 @ =gUnk_02022740 + ldr r2, [r0, #0xc] + ldrb r0, [r2, #8] + cmp r0, #7 + bne _080A4544 + ldrb r0, [r2, #9] + ldrb r1, [r2, #0xa] + ldrb r2, [r2, #0xb] + bl sub_0806ED50 + b _080A4550 + .align 2, 0 +_080A4540: .4byte gUnk_02022740 +_080A4544: + cmp r0, #3 + bne _080A45A2 + ldrb r0, [r2, #9] + ldrb r1, [r2, #0xa] + bl sub_0804AA60 +_080A4550: + adds r4, r0, #0 + cmp r4, #0 + beq _080A45A2 + ldrb r0, [r4, #8] + cmp r0, #7 + bne _080A456A + adds r0, r4, #0 + bl sub_0806EC78 + ldrb r0, [r4, #9] + strb r0, [r4, #0xf] + movs r0, #0x56 + b _080A4576 +_080A456A: + adds r0, r4, #0 + bl sub_0804A57C + ldrb r0, [r4, #9] + strb r0, [r4, #0xf] + movs r0, #0x66 +_080A4576: + strb r0, [r4, #9] + movs r2, #0 + movs r0, #0xcc + strh r0, [r4, #0x2e] + movs r0, #0x60 + strh r0, [r4, #0x32] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0x99 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + str r2, [r4, #0x48] +_080A45A2: + pop {r4, pc} + + thumb_func_start sub_080A45A4 +sub_080A45A4: @ 0x080A45A4 + push {lr} + bl sub_080AD90C + ldr r0, _080A45C4 @ =gUnk_02032EC0 + ldrb r0, [r0, #3] + cmp r0, #0xff + bne _080A45D0 + ldr r1, _080A45C8 @ =gUnk_0812815C + ldr r0, _080A45CC @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _080A45E0 + .align 2, 0 +_080A45C4: .4byte gUnk_02032EC0 +_080A45C8: .4byte gUnk_0812815C +_080A45CC: .4byte gUnk_02000080 +_080A45D0: + ldr r1, _080A4600 @ =gUnk_0812814C + ldr r0, _080A4604 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 +_080A45E0: + bl sub_0805E5C0 + bl sub_0801C1D4 + bl sub_0801C208 + bl sub_080AD9B0 + bl sub_080A4978 + bl sub_080AD918 + bl sub_080A4B44 + pop {pc} + .align 2, 0 +_080A4600: .4byte gUnk_0812814C +_080A4604: .4byte gUnk_02000080 + + thumb_func_start sub_080A4608 +sub_080A4608: @ 0x080A4608 + push {r4, lr} + movs r0, #0x80 + bl sub_080A3248 + movs r0, #3 + bl sub_080A4DA8 + ldr r4, _080A46A0 @ =gUnk_020176A0 + movs r1, #0xfb + lsls r1, r1, #1 + adds r0, r4, r1 + ldrh r1, [r0] + movs r0, #0 + bl sub_0801D79C + movs r0, #0xae + lsls r0, r0, #1 + movs r2, #0xd3 + lsls r2, r2, #1 + adds r1, r4, r2 + ldrh r1, [r1] + bl sub_0801D79C + ldr r0, _080A46A4 @ =gUnk_02034CB0 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r0, _080A46A8 @ =gUnk_02001A40 + movs r1, #0x80 + lsls r1, r1, #5 + bl sub_0801D630 + ldr r2, _080A46AC @ =gUnk_03000F50 + adds r1, r2, #0 + adds r1, #0x58 + movs r0, #0xf0 + strh r0, [r1] + adds r1, #4 + ldr r0, _080A46B0 @ =0x00007898 + strh r0, [r1] + adds r1, #4 + movs r0, #0x1f + strh r0, [r1] + adds r1, #2 + movs r0, #0x1d + strh r0, [r1] + movs r0, #1 + strh r0, [r2, #0x1a] + movs r2, #0xee + ldr r3, _080A46B4 @ =gUnk_02000080 + movs r1, #0xf + adds r0, r3, #0 + adds r0, #0x1f +_080A4674: + strb r2, [r0] + subs r0, #1 + subs r1, #1 + cmp r1, #0 + bge _080A4674 + ldr r0, _080A46B8 @ =gUnk_02032EC0 + ldrb r1, [r0, #3] + ldr r0, _080A46BC @ =gUnk_02002A40 + ldrb r0, [r0, #6] + movs r2, #0x88 + cmp r0, #0 + bne _080A468E + movs r2, #0x82 +_080A468E: + cmp r2, r1 + bge _080A4694 + movs r1, #1 +_080A4694: + strb r1, [r3, #0x1c] + movs r0, #4 + movs r1, #8 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080A46A0: .4byte gUnk_020176A0 +_080A46A4: .4byte gUnk_02034CB0 +_080A46A8: .4byte gUnk_02001A40 +_080A46AC: .4byte gUnk_03000F50 +_080A46B0: .4byte 0x00007898 +_080A46B4: .4byte gUnk_02000080 +_080A46B8: .4byte gUnk_02032EC0 +_080A46BC: .4byte gUnk_02002A40 + + thumb_func_start sub_080A46C0 +sub_080A46C0: @ 0x080A46C0 + push {lr} + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_080A3248 + movs r0, #0x6c + bl sub_080A3268 + movs r0, #2 + bl sub_0807CD8C + bl sub_080A71DC + pop {pc} + + thumb_func_start sub_080A46DC +sub_080A46DC: @ 0x080A46DC + push {lr} + bl sub_080A4608 + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A46EC +sub_080A46EC: @ 0x080A46EC + push {lr} + ldr r0, _080A4714 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A4710 + ldr r1, _080A4718 @ =gUnk_080FC3E4 + ldr r0, _080A471C @ =gUnk_02000080 + ldrb r0, [r0, #0x1c] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r1, [r0, #7] + movs r0, #0xa2 + movs r2, #0 + bl sub_080A2960 + movs r0, #2 + bl sub_080A7114 +_080A4710: + pop {pc} + .align 2, 0 +_080A4714: .4byte gUnk_03000FD0 +_080A4718: .4byte gUnk_080FC3E4 +_080A471C: .4byte gUnk_02000080 + + thumb_func_start sub_080A4720 +sub_080A4720: @ 0x080A4720 + push {r4, lr} + ldr r4, _080A4744 @ =gUnk_02000080 + ldrb r0, [r4] + cmp r0, #0 + beq _080A47C4 + adds r1, r4, #0 + adds r1, #0x20 + ldrb r0, [r1] + adds r0, #1 + movs r3, #0 + strb r0, [r1] + ldrb r0, [r1] + cmp r0, #0x40 + beq _080A4748 + cmp r0, #0x80 + beq _080A4788 + b _080A475A + .align 2, 0 +_080A4744: .4byte gUnk_02000080 +_080A4748: + ldr r0, _080A477C @ =gUnk_02002B0E + ldrb r1, [r4, #0x1c] + bl sub_0801D5BC + adds r1, r4, #0 + adds r1, #0x21 + strb r0, [r1] + movs r0, #1 + strb r0, [r4, #1] +_080A475A: + ldr r0, _080A4780 @ =gUnk_02000080 + adds r0, #0x20 + ldrb r0, [r0] + lsrs r1, r0, #2 + cmp r1, #0x10 + bls _080A476A + movs r0, #0x20 + subs r1, r0, r1 +_080A476A: + ldr r0, _080A4784 @ =gUnk_03000F50 + adds r2, r0, #0 + adds r2, #0x6a + strh r1, [r2] + adds r0, #0x66 + movs r1, #0xbf + strh r1, [r0] + b _080A47C4 + .align 2, 0 +_080A477C: .4byte gUnk_02002B0E +_080A4780: .4byte gUnk_02000080 +_080A4784: .4byte gUnk_03000F50 +_080A4788: + ldr r2, _080A47C8 @ =gUnk_03000F50 + adds r0, r2, #0 + adds r0, #0x6a + strh r3, [r0] + subs r0, #4 + strh r3, [r0] + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #6 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + movs r0, #3 + bl sub_080A7114 + ldr r0, _080A47CC @ =gUnk_0812813C + bl sub_080A70AC + movs r0, #0x15 + strb r0, [r4, #1] + adds r0, r4, #0 + adds r0, #0x21 + ldrb r0, [r0] + movs r1, #0x6d + cmp r0, #0 + bne _080A47BE + adds r1, #0x9c +_080A47BE: + adds r0, r1, #0 + bl sub_080A3268 +_080A47C4: + pop {r4, pc} + .align 2, 0 +_080A47C8: .4byte gUnk_03000F50 +_080A47CC: .4byte gUnk_0812813C + + thumb_func_start sub_080A47D0 +sub_080A47D0: @ 0x080A47D0 + push {r4, lr} + ldr r0, _080A47EC @ =gUnk_02000080 + movs r4, #0x1f + ldrsb r4, [r0, r4] + ldr r0, _080A47F0 @ =gUnk_03000FF0 + ldrh r0, [r0, #4] + cmp r0, #8 + beq _080A47FE + cmp r0, #8 + bgt _080A47F4 + cmp r0, #2 + beq _080A47FE + b _080A480A + .align 2, 0 +_080A47EC: .4byte gUnk_02000080 +_080A47F0: .4byte gUnk_03000FF0 +_080A47F4: + cmp r0, #0x10 + beq _080A4804 + cmp r0, #0x20 + beq _080A4808 + b _080A480A +_080A47FE: + bl sub_080A46C0 + b _080A480A +_080A4804: + adds r4, #8 + b _080A480A +_080A4808: + subs r4, #8 +_080A480A: + ldr r1, _080A4828 @ =gUnk_02000080 + ldrb r0, [r1, #0x1e] + cmp r4, #0 + bge _080A4814 + movs r4, #0 +_080A4814: + cmp r0, r4 + bge _080A481A + adds r4, r0, #0 +_080A481A: + strb r4, [r1, #0x1f] + ldr r1, _080A482C @ =gUnk_03000F50 + adds r0, r4, #0 + subs r0, #0x70 + strh r0, [r1, #0x18] + pop {r4, pc} + .align 2, 0 +_080A4828: .4byte gUnk_02000080 +_080A482C: .4byte gUnk_03000F50 + + thumb_func_start sub_080A4830 +sub_080A4830: @ 0x080A4830 + push {lr} + bl sub_080A4608 + ldr r2, _080A4858 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #6 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r0, _080A485C @ =gUnk_0812813C + bl sub_080A70AC + ldr r1, _080A4860 @ =gUnk_02000080 + movs r0, #0xff + strb r0, [r1, #1] + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_080A4858: .4byte gUnk_03000F50 +_080A485C: .4byte gUnk_0812813C +_080A4860: .4byte gUnk_02000080 + + thumb_func_start sub_080A4864 +sub_080A4864: @ 0x080A4864 + push {r4, r5, r6, lr} + ldr r0, _080A4894 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A4926 + ldr r0, _080A4898 @ =gUnk_02000080 + movs r5, #0x1f + ldrsb r5, [r0, r5] + ldrb r4, [r0, #0x1c] + ldr r0, _080A489C @ =gUnk_03000FF0 + ldrh r1, [r0, #4] + cmp r1, #0x20 + beq _080A48DC + cmp r1, #0x20 + bgt _080A48A0 + cmp r1, #2 + beq _080A48C0 + cmp r1, #2 + ble _080A48DE + cmp r1, #8 + beq _080A48C0 + cmp r1, #0x10 + beq _080A48D8 + b _080A48DE + .align 2, 0 +_080A4894: .4byte gUnk_03000FD0 +_080A4898: .4byte gUnk_02000080 +_080A489C: .4byte gUnk_03000FF0 +_080A48A0: + cmp r1, #0x80 + beq _080A48D4 + cmp r1, #0x80 + bgt _080A48AE + cmp r1, #0x40 + beq _080A48D0 + b _080A48DE +_080A48AE: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _080A48CC + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + beq _080A48C8 + b _080A48DE +_080A48C0: + movs r0, #3 + bl sub_080A7114 + b _080A48DE +_080A48C8: + subs r4, #5 + b _080A48DE +_080A48CC: + adds r4, #5 + b _080A48DE +_080A48D0: + subs r4, #1 + b _080A48DE +_080A48D4: + adds r4, #1 + b _080A48DE +_080A48D8: + adds r5, #8 + b _080A48DE +_080A48DC: + subs r5, #8 +_080A48DE: + ldr r0, _080A4928 @ =gUnk_02002A40 + ldrb r0, [r0, #6] + movs r1, #0x88 + cmp r0, #0 + bne _080A48EA + movs r1, #0x82 +_080A48EA: + cmp r4, #0 + bgt _080A48F0 + movs r4, #1 +_080A48F0: + cmp r1, r4 + bge _080A48F6 + adds r4, r1, #0 +_080A48F6: + ldr r6, _080A492C @ =gUnk_02000080 + ldrb r0, [r6, #0x1c] + cmp r0, r4 + beq _080A490E + strb r4, [r6, #0x1c] + movs r0, #0x69 + bl sub_080A3268 + movs r0, #2 + bl sub_080A7114 + movs r5, #0 +_080A490E: + ldrb r0, [r6, #0x1e] + cmp r5, #0 + bge _080A4916 + movs r5, #0 +_080A4916: + cmp r0, r5 + bge _080A491C + adds r5, r0, #0 +_080A491C: + strb r5, [r6, #0x1f] + ldr r1, _080A4930 @ =gUnk_03000F50 + adds r0, r5, #0 + subs r0, #0x70 + strh r0, [r1, #0x18] +_080A4926: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A4928: .4byte gUnk_02002A40 +_080A492C: .4byte gUnk_02000080 +_080A4930: .4byte gUnk_03000F50 + + thumb_func_start sub_080A4934 +sub_080A4934: @ 0x080A4934 + push {lr} + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A4940 +sub_080A4940: @ 0x080A4940 + push {lr} + bl sub_080A46C0 + pop {pc} + + thumb_func_start sub_080A4948 +sub_080A4948: @ 0x080A4948 + push {r4, lr} + adds r1, r0, #0 + movs r4, #0 + ldr r3, _080A4974 @ =gUnk_02002A40 + ldrb r0, [r3, #6] + movs r2, #0x88 + cmp r0, #0 + bne _080A495A + movs r2, #0x82 +_080A495A: + cmp r1, #0 + bgt _080A4962 + cmp r2, r1 + blt _080A4970 +_080A4962: + adds r0, r3, #0 + adds r0, #0xce + bl sub_0801D5A8 + cmp r0, #0 + beq _080A4970 + movs r4, #1 +_080A4970: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_080A4974: .4byte gUnk_02002A40 + + thumb_func_start sub_080A4978 +sub_080A4978: @ 0x080A4978 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r5, _080A4B1C @ =gUnk_03001010 + movs r0, #0 + strh r0, [r5, #4] + strh r0, [r5, #6] + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r5, #8] + movs r0, #0x9c + strh r0, [r5] + movs r0, #0x48 + strh r0, [r5, #2] + movs r7, #0xfe + lsls r7, r7, #1 + adds r0, r7, #0 + movs r1, #0 + bl sub_080ADA14 + ldr r0, _080A4B20 @ =gUnk_02002A40 + ldrb r0, [r0, #6] + movs r2, #0x88 + cmp r0, #0 + bne _080A49AC + movs r2, #0x82 +_080A49AC: + ldr r3, _080A4B24 @ =gUnk_02000080 + ldrb r1, [r3, #1] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080A4A10 + ldrb r4, [r3, #0x1c] + cmp r2, r4 + blt _080A4A10 + movs r6, #0xe8 + strh r6, [r5] + movs r0, #0xa0 + lsls r0, r0, #7 + adds r1, r2, #0 + bl __divsi3 + subs r1, r4, #1 + muls r0, r1, r0 + cmp r0, #0 + bge _080A49D6 + adds r0, #0xff +_080A49D6: + asrs r0, r0, #8 + adds r0, #0x20 + strh r0, [r5, #2] + adds r0, r7, #0 + movs r1, #1 + bl sub_080ADA14 + ldr r0, _080A4B28 @ =gUnk_03001000 + ldrh r1, [r0, #0xc] + movs r0, #0x10 + ands r0, r1 + movs r4, #2 + cmp r0, #0 + beq _080A49F4 + movs r4, #4 +_080A49F4: + strh r6, [r5] + movs r0, #0x1a + strh r0, [r5, #2] + adds r0, r7, #0 + adds r1, r4, #0 + bl sub_080ADA14 + strh r6, [r5] + movs r0, #0x76 + strh r0, [r5, #2] + adds r1, r4, #1 + adds r0, r7, #0 + bl sub_080ADA14 +_080A4A10: + ldr r0, _080A4B28 @ =gUnk_03001000 + ldrh r1, [r0, #0xc] + movs r2, #0x10 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080A4A6A + ldr r5, _080A4B24 @ =gUnk_02000080 + ldrb r1, [r5, #1] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080A4A6A + ldrb r0, [r5, #0x1e] + cmp r0, #0 + beq _080A4A6A + ldr r4, _080A4B1C @ =gUnk_03001010 + strh r2, [r4, #2] + movs r0, #0x1f + ldrsb r0, [r5, r0] + cmp r0, #0 + ble _080A4A4E + movs r0, #6 + strh r0, [r4] + movs r0, #0x9c + strh r0, [r4, #2] + movs r0, #0xfe + lsls r0, r0, #1 + movs r1, #6 + bl sub_080ADA14 +_080A4A4E: + ldrb r1, [r5, #0x1e] + movs r0, #0x1f + ldrsb r0, [r5, r0] + cmp r1, r0 + ble _080A4A6A + movs r0, #0xea + strh r0, [r4] + movs r0, #0x9c + strh r0, [r4, #2] + movs r0, #0xfe + lsls r0, r0, #1 + movs r1, #7 + bl sub_080ADA14 +_080A4A6A: + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _080A4ABE + ldr r2, _080A4B24 @ =gUnk_02000080 + ldrb r1, [r2, #1] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080A4ABE + ldr r1, _080A4B1C @ =gUnk_03001010 + movs r0, #0x10 + strh r0, [r1, #2] + ldrb r4, [r2, #0x1c] + movs r6, #2 + adds r7, r1, #0 + movs r5, #0x6b +_080A4A8E: + strh r5, [r7] + adds r0, r4, #0 + movs r1, #0xa + bl __modsi3 + lsls r0, r0, #1 + movs r2, #0x9e + lsls r2, r2, #4 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r7, #8] + movs r0, #0 + movs r1, #9 + bl sub_080ADA14 + adds r0, r4, #0 + movs r1, #0xa + bl __divsi3 + adds r4, r0, #0 + subs r5, #7 + subs r6, #1 + cmp r6, #0 + bge _080A4A8E +_080A4ABE: + ldr r4, _080A4B24 @ =gUnk_02000080 + ldrb r1, [r4, #1] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080A4B3A + ldrb r0, [r4, #0x1c] + bl sub_080A4948 + cmp r0, #0 + beq _080A4B3A + ldr r1, _080A4B1C @ =gUnk_03001010 + movs r0, #0x2c + strh r0, [r1] + movs r0, #0x48 + strh r0, [r1, #2] + movs r0, #0xd4 + lsls r0, r0, #7 + strh r0, [r1, #8] + movs r0, #0xfc + lsls r0, r0, #1 + ldrb r1, [r4, #0x1c] + subs r1, #1 + bl sub_080ADA14 + ldrb r1, [r4, #0x1c] + ldrb r0, [r4, #0x1d] + cmp r0, r1 + beq _080A4B3A + strb r1, [r4, #0x1d] + ldrb r4, [r4, #0x1c] + lsls r4, r4, #4 + ldr r0, _080A4B2C @ =gUnk_081281A8 + adds r4, r4, r0 + ldr r0, [r4] + movs r1, #0x16 + movs r2, #9 + bl sub_0801D754 + ldr r0, [r4, #4] + ldr r2, [r4, #8] + cmp r2, #0 + bge _080A4B34 + ldr r1, _080A4B30 @ =0x06014000 + bl LZ77UnCompVram + b _080A4B3A + .align 2, 0 +_080A4B1C: .4byte gUnk_03001010 +_080A4B20: .4byte gUnk_02002A40 +_080A4B24: .4byte gUnk_02000080 +_080A4B28: .4byte gUnk_03001000 +_080A4B2C: .4byte gUnk_081281A8 +_080A4B30: .4byte 0x06014000 +_080A4B34: + ldr r1, _080A4B40 @ =0x06014000 + bl sub_08000E96 +_080A4B3A: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A4B40: .4byte 0x06014000 + + thumb_func_start sub_080A4B44 +sub_080A4B44: @ 0x080A4B44 + push {r4, r5, lr} + ldr r5, _080A4B9C @ =gUnk_02000080 + ldrb r4, [r5, #0x1c] + ldrb r1, [r5, #1] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080A4B5C + adds r0, r4, #0 + bl sub_080A4CBC + strb r0, [r5, #0x1e] +_080A4B5C: + ldrb r1, [r5, #1] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080A4B6E + adds r0, r4, #0 + movs r1, #2 + bl sub_080A4BA0 +_080A4B6E: + ldrb r1, [r5, #1] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080A4B98 + subs r0, r4, #2 + movs r1, #0 + bl sub_080A4BA0 + subs r0, r4, #1 + movs r1, #1 + bl sub_080A4BA0 + adds r0, r4, #1 + movs r1, #3 + bl sub_080A4BA0 + adds r0, r4, #2 + movs r1, #4 + bl sub_080A4BA0 +_080A4B98: + pop {r4, r5, pc} + .align 2, 0 +_080A4B9C: .4byte gUnk_02000080 + + thumb_func_start sub_080A4BA0 +sub_080A4BA0: @ 0x080A4BA0 + push {r4, r5, r6, lr} + sub sp, #0x54 + adds r5, r0, #0 + adds r6, r1, #0 + add r0, sp, #0x18 + movs r1, #0x30 + bl sub_0801D630 + ldr r0, _080A4C08 @ =gUnk_0812816C + mov r1, sp + movs r2, #0x18 + bl sub_0801D66C + ldr r0, _080A4C0C @ =gUnk_08128184 + add r4, sp, #0x48 + adds r1, r4, #0 + movs r2, #0xc + bl sub_0801D66C + lsls r1, r6, #1 + adds r1, r1, r6 + lsls r2, r1, #9 + ldr r0, [sp, #4] + adds r0, r0, r2 + str r0, [sp, #4] + mov r2, sp + mov r0, sp + lsls r1, r1, #4 + ldrh r0, [r0, #0x10] + adds r1, r1, r0 + strh r1, [r2, #0x10] + lsls r1, r6, #7 + ldr r0, [sp] + adds r0, r0, r1 + str r0, [sp] + cmp r6, #2 + bne _080A4BEE + mov r0, sp + strb r6, [r0, #0x14] +_080A4BEE: + ldr r0, _080A4C10 @ =gUnk_02002A40 + ldrb r0, [r0, #6] + movs r1, #0x88 + cmp r0, #0 + bne _080A4BFA + movs r1, #0x82 +_080A4BFA: + cmp r5, #0 + ble _080A4C02 + cmp r1, r5 + bge _080A4C14 +_080A4C02: + movs r5, #1 + rsbs r5, r5, #0 + b _080A4C3E + .align 2, 0 +_080A4C08: .4byte gUnk_0812816C +_080A4C0C: .4byte gUnk_08128184 +_080A4C10: .4byte gUnk_02002A40 +_080A4C14: + ldr r1, _080A4C30 @ =gUnk_020227E8 + ldr r2, _080A4C34 @ =0x00303030 + adds r0, r5, #0 + bl sub_08057044 + adds r0, r5, #0 + bl sub_080A4948 + cmp r0, #0 + bne _080A4C38 + movs r0, #0x80 + lsls r0, r0, #8 + b _080A4C3C + .align 2, 0 +_080A4C30: .4byte gUnk_020227E8 +_080A4C34: .4byte 0x00303030 +_080A4C38: + movs r0, #0x80 + lsls r0, r0, #4 +_080A4C3C: + adds r5, r5, r0 +_080A4C3E: + ldr r0, _080A4C94 @ =gUnk_02000080 + lsls r1, r6, #1 + adds r0, #0x10 + adds r1, r1, r0 + ldrh r0, [r1] + cmp r0, r5 + beq _080A4CB2 + strh r5, [r1] + ldr r0, _080A4C98 @ =0x0000F00B + cmp r6, #2 + bne _080A4C56 + subs r0, #7 +_080A4C56: + ldr r1, [sp] + movs r2, #0x80 + bl sub_0801D5EC + cmp r5, #0 + ble _080A4CAC + ldr r0, _080A4C9C @ =0x00007FFF + cmp r5, r0 + ble _080A4C6A + ldr r5, _080A4CA0 @ =0x00000889 +_080A4C6A: + adds r0, r5, #0 + cmp r5, #0 + bge _080A4C72 + adds r0, #0xff +_080A4C72: + asrs r0, r0, #8 + strb r0, [r4, #8] + strb r5, [r4, #9] + ldr r0, [sp] + adds r0, #0x16 + str r0, [sp] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _080A4CA4 + adds r0, r4, #0 + mov r1, sp + bl sub_0805F46C + b _080A4CAC + .align 2, 0 +_080A4C94: .4byte gUnk_02000080 +_080A4C98: .4byte 0x0000F00B +_080A4C9C: .4byte 0x00007FFF +_080A4CA0: .4byte 0x00000889 +_080A4CA4: + adds r0, r5, #0 + mov r1, sp + bl sub_0805F46C +_080A4CAC: + ldr r1, _080A4CB8 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0x32] +_080A4CB2: + add sp, #0x54 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A4CB8: .4byte gUnk_03000F50 + + thumb_func_start sub_080A4CBC +sub_080A4CBC: @ 0x080A4CBC + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r1, _080A4D0C @ =gUnk_02000080 + ldrb r0, [r1, #0x1a] + cmp r0, r6 + beq _080A4CFE + strb r6, [r1, #0x1a] + ldr r4, _080A4D10 @ =gUnk_02021F30 + movs r5, #0x80 + lsls r5, r5, #4 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0801D630 + ldr r1, _080A4D14 @ =0x0600E000 + adds r0, r4, #0 + adds r2, r5, #0 + bl sub_0801D66C + adds r0, r6, #0 + bl sub_080A4948 + cmp r0, #0 + beq _080A4CF8 + movs r1, #0x90 + lsls r1, r1, #4 + adds r0, r6, r1 + ldr r1, _080A4D18 @ =gUnk_08128190 + bl sub_0805F46C +_080A4CF8: + ldr r1, _080A4D1C @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0x1a] +_080A4CFE: + ldr r0, _080A4D18 @ =gUnk_08128190 + ldr r0, [r0] + movs r2, #0x80 + lsls r2, r2, #1 + adds r1, r0, r2 + movs r2, #0 + b _080A4D28 + .align 2, 0 +_080A4D0C: .4byte gUnk_02000080 +_080A4D10: .4byte gUnk_02021F30 +_080A4D14: .4byte 0x0600E000 +_080A4D18: .4byte gUnk_08128190 +_080A4D1C: .4byte gUnk_03000F50 +_080A4D20: + adds r1, #0x40 + adds r2, #1 + cmp r2, #0x13 + bhi _080A4D2E +_080A4D28: + ldrh r0, [r1] + cmp r0, #0 + bne _080A4D20 +_080A4D2E: + lsls r0, r2, #3 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A4D34 +sub_080A4D34: @ 0x080A4D34 + push {lr} + bl sub_08053320 + movs r0, #0xb5 + bl sub_0801D714 + ldr r1, _080A4D50 @ =gUnk_02002A40 + adds r2, r1, #0 + adds r2, #0xaa + ldrb r0, [r2] + cmp r0, #8 + bhi _080A4D54 + movs r1, #2 + b _080A4D66 + .align 2, 0 +_080A4D50: .4byte gUnk_02002A40 +_080A4D54: + adds r0, r1, #0 + adds r0, #0xab + ldrb r0, [r0] + ldrb r1, [r2] + subs r0, r0, r1 + movs r1, #1 + cmp r0, #8 + bgt _080A4D66 + movs r1, #0 +_080A4D66: + adds r0, r1, #0 + adds r0, #0x56 + bl sub_0801D7EC + ldr r1, _080A4D80 @ =gUnk_03000F50 + movs r0, #0 + strh r0, [r1, #0x2e] + strh r0, [r1, #0x30] + ldr r0, _080A4D84 @ =0x00001E0B + strh r0, [r1, #0x2c] + movs r0, #1 + strh r0, [r1, #0x32] + pop {pc} + .align 2, 0 +_080A4D80: .4byte gUnk_03000F50 +_080A4D84: .4byte 0x00001E0B + + thumb_func_start sub_080A4D88 +sub_080A4D88: @ 0x080A4D88 + push {lr} + ldr r0, _080A4DA4 @ =gUnk_020344A0 + movs r1, #8 + bl sub_0801D630 + movs r0, #1 + movs r1, #0 + bl sub_080A7138 + movs r0, #0x80 + bl sub_080A3248 + pop {pc} + .align 2, 0 +_080A4DA4: .4byte gUnk_020344A0 + + thumb_func_start sub_080A4DA8 +sub_080A4DA8: @ 0x080A4DA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080A4D34 + adds r0, r4, #0 + bl sub_080A4DB8 + pop {r4, pc} + + thumb_func_start sub_080A4DB8 +sub_080A4DB8: @ 0x080A4DB8 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08056250 + ldr r0, _080A4E58 @ =gUnk_02034CB0 + movs r4, #0x80 + lsls r4, r4, #4 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _080A4E5C @ =gUnk_02021F30 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _080A4E60 @ =gUnk_020344B0 + adds r1, r4, #0 + bl sub_0801D630 + ldr r0, _080A4E64 @ =gUnk_0200AF34 + movs r1, #0xc0 + lsls r1, r1, #2 + bl sub_0801D630 + ldr r4, _080A4E68 @ =gUnk_02000080 + adds r0, r4, #0 + movs r1, #0x30 + bl sub_0801D630 + ldr r0, _080A4E6C @ =0x0000FFFF + strh r0, [r4, #0x2e] + ldr r0, _080A4E70 @ =gUnk_02034490 + adds r0, #2 + adds r0, r5, r0 + ldrb r0, [r0] + movs r3, #0 + strb r0, [r4, #3] + ldr r0, _080A4E74 @ =gUnk_08128A38 + lsls r5, r5, #3 + adds r5, r5, r0 + ldrb r0, [r5] + lsls r0, r0, #3 + ldr r1, _080A4E78 @ =gUnk_08128AD8 + adds r4, r0, r1 + ldr r1, _080A4E7C @ =gUnk_03000F50 + ldrh r2, [r4, #2] + movs r5, #0xca + lsls r5, r5, #5 + adds r0, r5, #0 + orrs r0, r2 + strh r0, [r1] + strh r3, [r1, #0xa] + strh r3, [r1, #0xc] + movs r2, #1 + strh r2, [r1, #0xe] + strh r3, [r1, #0x16] + strh r3, [r1, #0x18] + ldrh r0, [r4, #4] + strh r0, [r1, #0x14] + strh r2, [r1, #0x1a] + strh r3, [r1, #0x22] + strh r3, [r1, #0x24] + ldrh r0, [r4, #6] + strh r0, [r1, #0x20] + strh r2, [r1, #0x26] + strh r3, [r1, #0x2e] + strh r3, [r1, #0x30] + ldr r0, _080A4E80 @ =0x00001E0B + strh r0, [r1, #0x2c] + ldrb r0, [r4] + cmp r0, #0 + beq _080A4E4A + bl sub_0801D714 +_080A4E4A: + ldrb r0, [r4, #1] + cmp r0, #0 + beq _080A4E54 + bl sub_0801D7EC +_080A4E54: + pop {r4, r5, pc} + .align 2, 0 +_080A4E58: .4byte gUnk_02034CB0 +_080A4E5C: .4byte gUnk_02021F30 +_080A4E60: .4byte gUnk_020344B0 +_080A4E64: .4byte gUnk_0200AF34 +_080A4E68: .4byte gUnk_02000080 +_080A4E6C: .4byte 0x0000FFFF +_080A4E70: .4byte gUnk_02034490 +_080A4E74: .4byte gUnk_08128A38 +_080A4E78: .4byte gUnk_08128AD8 +_080A4E7C: .4byte gUnk_03000F50 +_080A4E80: .4byte 0x00001E0B + + thumb_func_start sub_080A4E84 +sub_080A4E84: @ 0x080A4E84 + ldr r1, _080A4E8C @ =gUnk_02034490 + strb r0, [r1, #0x14] + bx lr + .align 2, 0 +_080A4E8C: .4byte gUnk_02034490 + + thumb_func_start sub_080A4E90 +sub_080A4E90: @ 0x080A4E90 + ldr r1, _080A4E9C @ =gUnk_02034490 + movs r2, #0 + strb r0, [r1, #0x11] + strb r2, [r1, #0x12] + bx lr + .align 2, 0 +_080A4E9C: .4byte gUnk_02034490 + + thumb_func_start sub_080A4EA0 +sub_080A4EA0: @ 0x080A4EA0 + push {r4, lr} + ldr r4, _080A4EB8 @ =gUnk_02034490 + ldrb r0, [r4, #0x11] + cmp r0, #6 + bne _080A4EBC + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_080A3248 + bl sub_080A71DC + b _080A4F14 + .align 2, 0 +_080A4EB8: .4byte gUnk_02034490 +_080A4EBC: + bl sub_080AD90C + ldr r1, _080A4F18 @ =gUnk_08128B30 + ldrb r0, [r4, #0x11] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A5128 + bl sub_0801C1D4 + bl sub_0801C208 + ldrb r0, [r4, #0x11] + cmp r0, #4 + beq _080A4EF0 + ldr r0, _080A4F1C @ =gUnk_08128A38 + ldrb r1, [r4, #1] + lsls r1, r1, #3 + adds r0, #4 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 +_080A4EF0: + bl sub_080AD918 + movs r3, #0x16 + ldrsb r3, [r4, r3] + movs r1, #0 + cmp r3, #0 + beq _080A4F00 + ldr r1, _080A4F20 @ =0x00000E46 +_080A4F00: + ldr r2, _080A4F24 @ =gUnk_03000F50 + adds r0, r2, #0 + adds r0, #0x66 + strh r1, [r0] + lsls r1, r3, #8 + movs r0, #0x10 + subs r0, r0, r3 + orrs r1, r0 + adds r2, #0x68 + strh r1, [r2] +_080A4F14: + pop {r4, pc} + .align 2, 0 +_080A4F18: .4byte gUnk_08128B30 +_080A4F1C: .4byte gUnk_08128A38 +_080A4F20: .4byte 0x00000E46 +_080A4F24: .4byte gUnk_03000F50 + + thumb_func_start sub_080A4F28 +sub_080A4F28: @ 0x080A4F28 + push {r4, lr} + bl sub_0801E8D4 + bl sub_080A4D34 + movs r1, #4 + ldr r3, _080A4F90 @ =gUnk_02034492 + movs r2, #0 +_080A4F38: + adds r0, r1, r3 + strb r2, [r0] + adds r1, #1 + cmp r1, #0xd + ble _080A4F38 + ldr r1, _080A4F94 @ =gUnk_030010A0 + ldrh r0, [r1, #0x20] + ldrh r1, [r1, #0x22] + bl sub_080A6A80 + ldr r4, _080A4F98 @ =gUnk_02034490 + ldrb r0, [r0, #4] + strb r0, [r4, #6] + bl sub_0801DB94 + strb r0, [r4, #7] + movs r0, #0x10 + bl sub_0805436C + movs r1, #0xf + cmp r0, #2 + beq _080A4F66 + movs r1, #0x10 +_080A4F66: + strb r1, [r4, #0x15] + ldr r1, _080A4F9C @ =gUnk_08128A38 + ldrb r0, [r4, #1] + lsls r0, r0, #3 + adds r0, r0, r1 + ldrb r0, [r0, #1] + bl sub_080A50A0 + strb r0, [r4, #1] + strb r0, [r4, #0x14] + bl sub_080A4DB8 + movs r0, #4 + movs r1, #0x20 + bl sub_08050054 + movs r0, #1 + bl sub_080A4E90 + pop {r4, pc} + .align 2, 0 +_080A4F90: .4byte gUnk_02034492 +_080A4F94: .4byte gUnk_030010A0 +_080A4F98: .4byte gUnk_02034490 +_080A4F9C: .4byte gUnk_08128A38 + + thumb_func_start sub_080A4FA0 +sub_080A4FA0: @ 0x080A4FA0 + push {lr} + ldr r0, _080A4FB4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A4FB0 + movs r0, #2 + bl sub_080A4E90 +_080A4FB0: + pop {pc} + .align 2, 0 +_080A4FB4: .4byte gUnk_03000FD0 + + thumb_func_start sub_080A4FB8 +sub_080A4FB8: @ 0x080A4FB8 + push {r4, r5, lr} + bl sub_080A51F4 + cmp r0, #0 + beq _080A5052 + ldr r0, _080A4FE4 @ =gUnk_02000080 + ldr r1, [r0, #0xc] + adds r2, r0, #0 + cmp r1, #0 + beq _080A5052 + movs r4, #1 + rsbs r4, r4, #0 + ldr r0, _080A4FE8 @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + cmp r1, #8 + beq _080A4FFE + cmp r1, #8 + bgt _080A4FEC + cmp r1, #2 + beq _080A500A + b _080A500C + .align 2, 0 +_080A4FE4: .4byte gUnk_02000080 +_080A4FE8: .4byte gUnk_03000FF0 +_080A4FEC: + movs r0, #0x80 + lsls r0, r0, #1 + cmp r1, r0 + beq _080A5006 + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + beq _080A5002 + b _080A500C +_080A4FFE: + movs r4, #0 + b _080A5010 +_080A5002: + movs r4, #1 + b _080A5010 +_080A5006: + movs r4, #2 + b _080A5010 +_080A500A: + movs r4, #3 +_080A500C: + cmp r4, #0 + blt _080A5052 +_080A5010: + ldr r0, [r2, #0xc] + adds r0, r0, r4 + ldrb r5, [r0] + cmp r5, #6 + bgt _080A5024 + cmp r5, #4 + bge _080A5028 + cmp r5, #0 + beq _080A5052 + b _080A5042 +_080A5024: + cmp r5, #0xf + bne _080A5042 +_080A5028: + movs r0, #0x47 + bl sub_0807CA84 + cmp r0, #0 + bne _080A5042 + movs r1, #1 + cmp r4, #1 + bne _080A503A + movs r1, #2 +_080A503A: + ldr r0, _080A5078 @ =gUnk_02000080 + ldr r0, [r0, #0xc] + adds r0, r0, r1 + ldrb r5, [r0] +_080A5042: + ldr r0, _080A507C @ =gUnk_02034490 + movs r4, #0 + strb r5, [r0, #0x14] + movs r0, #0x65 + bl sub_080A3268 + ldr r0, _080A5078 @ =gUnk_02000080 + str r4, [r0, #0xc] +_080A5052: + ldr r4, _080A507C @ =gUnk_02034490 + movs r0, #0x14 + ldrsb r0, [r4, r0] + bl sub_080A50A0 + adds r5, r0, #0 + ldrb r0, [r4, #1] + cmp r0, r5 + beq _080A5096 + strb r5, [r4, #0x14] + bl sub_080A51D4 + cmp r5, #0xe + bne _080A5080 + movs r0, #6 + bl sub_080A4E90 + b _080A5096 + .align 2, 0 +_080A5078: .4byte gUnk_02000080 +_080A507C: .4byte gUnk_02034490 +_080A5080: + movs r0, #3 + bl sub_080A4E90 + ldr r0, _080A5098 @ =gUnk_02034CB0 + movs r1, #0x80 + lsls r1, r1, #4 + bl sub_0801D630 + ldr r1, _080A509C @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] +_080A5096: + pop {r4, r5, pc} + .align 2, 0 +_080A5098: .4byte gUnk_02034CB0 +_080A509C: .4byte gUnk_03000F50 + + thumb_func_start sub_080A50A0 +sub_080A50A0: @ 0x080A50A0 + push {lr} + adds r1, r0, #0 + cmp r1, #0xf + bne _080A50B4 + bl sub_08052690 + movs r1, #4 + cmp r0, #0 + beq _080A50B4 + movs r1, #5 +_080A50B4: + adds r0, r1, #0 + pop {pc} + + thumb_func_start sub_080A50B8 +sub_080A50B8: @ 0x080A50B8 + push {r4, lr} + ldr r4, _080A50DC @ =gUnk_02034490 + movs r0, #0x16 + ldrsb r0, [r4, r0] + adds r0, #2 + cmp r0, #0x10 + ble _080A50D8 + ldr r2, _080A50E0 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _080A50E4 @ =0x0000F8FF + ands r0, r1 + strh r0, [r2] + movs r0, #4 + bl sub_080A4E90 + movs r0, #0x10 +_080A50D8: + strb r0, [r4, #0x16] + pop {r4, pc} + .align 2, 0 +_080A50DC: .4byte gUnk_02034490 +_080A50E0: .4byte gUnk_03000F50 +_080A50E4: .4byte 0x0000F8FF + + thumb_func_start sub_080A50E8 +sub_080A50E8: @ 0x080A50E8 + push {lr} + ldr r1, _080A5104 @ =gUnk_02034490 + movs r0, #0x10 + strb r0, [r1, #0x16] + movs r0, #0x14 + ldrsb r0, [r1, r0] + strb r0, [r1, #1] + bl sub_080A4DB8 + movs r0, #5 + bl sub_080A4E90 + pop {pc} + .align 2, 0 +_080A5104: .4byte gUnk_02034490 + + thumb_func_start sub_080A5108 +sub_080A5108: @ 0x080A5108 + push {r4, lr} + ldr r4, _080A5124 @ =gUnk_02034490 + movs r0, #0x16 + ldrsb r0, [r4, r0] + subs r0, #2 + cmp r0, #0 + bge _080A511E + movs r0, #2 + bl sub_080A4E90 + movs r0, #0 +_080A511E: + strb r0, [r4, #0x16] + pop {r4, pc} + .align 2, 0 +_080A5124: .4byte gUnk_02034490 + + thumb_func_start sub_080A5128 +sub_080A5128: @ 0x080A5128 + push {r4, r5, lr} + sub sp, #0x18 + ldr r0, _080A5140 @ =gUnk_02034490 + ldrb r1, [r0, #1] + adds r2, r0, #0 + cmp r1, #7 + blt _080A515A + cmp r1, #8 + ble _080A5144 + cmp r1, #0xb + bgt _080A515A + b _080A51C6 + .align 2, 0 +_080A5140: .4byte gUnk_02034490 +_080A5144: + movs r0, #0x60 + str r0, [sp] + movs r0, #0x18 + str r0, [sp, #4] + subs r0, #0x28 + str r0, [sp, #8] + movs r1, #0x48 + str r1, [sp, #0xc] + movs r0, #0x80 + lsls r0, r0, #1 + b _080A5182 +_080A515A: + movs r0, #0x40 + str r0, [sp] + movs r0, #0x16 + ldrsb r0, [r2, r0] + lsls r0, r0, #1 + movs r4, #0x10 + subs r0, r4, r0 + str r0, [sp, #4] + movs r0, #0x16 + ldrsb r0, [r2, r0] + movs r1, #3 + bl __divsi3 + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + subs r4, r4, r0 + str r4, [sp, #8] + movs r1, #0x48 + str r1, [sp, #0xc] + adds r0, #0xe0 +_080A5182: + str r0, [sp, #0x10] + str r1, [sp, #0x14] + ldr r4, _080A51CC @ =gUnk_03001010 + movs r0, #0 + strh r0, [r4, #4] + strh r0, [r4, #6] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #8] + ldr r0, [sp] + strh r0, [r4] + ldr r0, [sp, #4] + strh r0, [r4, #2] + ldr r5, _080A51D0 @ =0x000001FB + adds r0, r5, #0 + movs r1, #0 + bl sub_080ADA14 + ldr r0, [sp, #8] + strh r0, [r4] + ldr r0, [sp, #0xc] + strh r0, [r4, #2] + adds r0, r5, #0 + movs r1, #1 + bl sub_080ADA14 + ldr r0, [sp, #0x10] + strh r0, [r4] + ldr r0, [sp, #0x14] + strh r0, [r4, #2] + adds r0, r5, #0 + movs r1, #2 + bl sub_080ADA14 +_080A51C6: + add sp, #0x18 + pop {r4, r5, pc} + .align 2, 0 +_080A51CC: .4byte gUnk_03001010 +_080A51D0: .4byte 0x000001FB + + thumb_func_start sub_080A51D4 +sub_080A51D4: @ 0x080A51D4 + push {lr} + ldr r0, _080A51EC @ =gUnk_02034490 + ldrb r1, [r0, #1] + cmp r1, #0xd + bhi _080A51E8 + adds r0, #2 + adds r0, r1, r0 + ldr r1, _080A51F0 @ =gUnk_02000080 + ldrb r1, [r1, #3] + strb r1, [r0] +_080A51E8: + pop {pc} + .align 2, 0 +_080A51EC: .4byte gUnk_02034490 +_080A51F0: .4byte gUnk_02000080 + + thumb_func_start sub_080A51F4 +sub_080A51F4: @ 0x080A51F4 + push {lr} + movs r1, #1 + ldr r0, _080A5210 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + beq _080A5202 + movs r1, #0 +_080A5202: + ldr r0, _080A5214 @ =gUnk_02034490 + ldrb r0, [r0, #0x11] + cmp r0, #2 + beq _080A520C + movs r1, #0 +_080A520C: + adds r0, r1, #0 + pop {pc} + .align 2, 0 +_080A5210: .4byte gUnk_03000FD0 +_080A5214: .4byte gUnk_02034490 + + thumb_func_start sub_080A5218 +sub_080A5218: @ 0x080A5218 + push {lr} + ldr r1, _080A5230 @ =gUnk_08128B48 + ldr r0, _080A5234 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A5384 + pop {pc} + .align 2, 0 +_080A5230: .4byte gUnk_08128B48 +_080A5234: .4byte gUnk_02000080 + + thumb_func_start sub_080A5238 +sub_080A5238: @ 0x080A5238 + push {r4, r5, lr} + ldr r4, _080A528C @ =gUnk_02000080 + movs r0, #0 + str r0, [r4, #0xc] + ldr r0, _080A5290 @ =gUnk_08128B50 + bl sub_080A70AC + movs r5, #1 + adds r4, #0x10 +_080A524A: + adds r0, r5, #0 + bl sub_0807CA84 + cmp r0, #1 + bne _080A527E + ldr r1, _080A5294 @ =gUnk_080FD5B4 + lsls r0, r5, #3 + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #0x11 + bhi _080A527E + cmp r5, #0x10 + bhi _080A526C + cmp r5, #0xf + blo _080A526C + ldr r0, _080A5298 @ =gUnk_02034490 + ldrb r5, [r0, #0x15] +_080A526C: + adds r0, r1, r4 + strb r5, [r0] + lsls r1, r1, #3 + movs r0, #0xd8 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_080A5F48 +_080A527E: + adds r5, #1 + cmp r5, #0x1f + bls _080A524A + movs r0, #1 + bl sub_080A7114 + pop {r4, r5, pc} + .align 2, 0 +_080A528C: .4byte gUnk_02000080 +_080A5290: .4byte gUnk_08128B50 +_080A5294: .4byte gUnk_080FD5B4 +_080A5298: .4byte gUnk_02034490 + + thumb_func_start sub_080A529C +sub_080A529C: @ 0x080A529C + push {r4, r5, lr} + bl sub_080A51F4 + cmp r0, #0 + beq _080A5380 + ldr r1, _080A52D0 @ =gUnk_02000080 + ldr r0, _080A52D4 @ =gUnk_08128BF4 + str r0, [r1, #0xc] + ldrb r4, [r1, #3] + lsls r1, r4, #3 + ldr r0, _080A52D8 @ =gUnk_08128B64 + adds r1, r1, r0 + ldr r0, _080A52DC @ =gUnk_03000FF0 + ldrh r2, [r0, #2] + adds r3, r0, #0 + cmp r2, #1 + beq _080A52E0 + cmp r2, #2 + beq _080A52EC + ldrh r0, [r3, #4] + cmp r0, #0x20 + beq _080A5330 + cmp r0, #0x20 + bgt _080A531E + b _080A5318 + .align 2, 0 +_080A52D0: .4byte gUnk_02000080 +_080A52D4: .4byte gUnk_08128BF4 +_080A52D8: .4byte gUnk_08128B64 +_080A52DC: .4byte gUnk_03000FF0 +_080A52E0: + cmp r4, #0x10 + bne _080A52EC + movs r0, #0xb + bl sub_080A4E84 + b _080A530A +_080A52EC: + ldr r0, _080A5314 @ =gUnk_02000080 + adds r0, #0x10 + adds r2, r4, r0 + ldrb r0, [r2] + cmp r0, #0 + beq _080A5336 + ldrh r0, [r3, #2] + movs r1, #1 + eors r0, r1 + rsbs r1, r0, #0 + orrs r1, r0 + lsrs r1, r1, #0x1f + ldrb r0, [r2] + bl sub_08054414 +_080A530A: + movs r0, #0x6a + bl sub_080A3268 + b _080A5336 + .align 2, 0 +_080A5314: .4byte gUnk_02000080 +_080A5318: + cmp r0, #0x10 + beq _080A5334 + b _080A5336 +_080A531E: + cmp r0, #0x40 + beq _080A5328 + cmp r0, #0x80 + beq _080A532C + b _080A5336 +_080A5328: + ldrb r4, [r1] + b _080A5336 +_080A532C: + ldrb r4, [r1, #1] + b _080A5336 +_080A5330: + ldrb r4, [r1, #2] + b _080A5336 +_080A5334: + ldrb r4, [r1, #3] +_080A5336: + ldr r5, _080A535C @ =gUnk_02000080 + ldrb r0, [r5, #3] + cmp r0, r4 + beq _080A5346 + strb r4, [r5, #3] + movs r0, #0x69 + bl sub_080A3268 +_080A5346: + adds r0, r5, #0 + adds r0, #0x10 + adds r0, r4, r0 + ldrb r1, [r0] + cmp r4, #0xc + blo _080A5376 + cmp r4, #0xf + bls _080A5360 + cmp r4, #0x10 + beq _080A5374 + b _080A5376 + .align 2, 0 +_080A535C: .4byte gUnk_02000080 +_080A5360: + cmp r1, #0 + beq _080A5376 + ldr r0, _080A5370 @ =gUnk_02002A40 + adds r0, r0, r1 + adds r0, #0x9a + ldrb r1, [r0] + b _080A5376 + .align 2, 0 +_080A5370: .4byte gUnk_02002A40 +_080A5374: + movs r1, #0x73 +_080A5376: + movs r0, #0x80 + lsls r0, r0, #3 + adds r0, r1, r0 + bl sub_080A6F6C +_080A5380: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A5384 +sub_080A5384: @ 0x080A5384 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080A5400 @ =gUnk_03001010 + movs r2, #0 + movs r1, #0x80 + lsls r1, r1, #3 + strh r1, [r0, #4] + strh r2, [r0, #6] + strh r2, [r0, #8] + movs r5, #0 + ldr r4, _080A5404 @ =gUnk_02002A40 + movs r0, #0xb6 + adds r0, r0, r4 + mov sl, r0 + movs r1, #0xac + adds r1, r1, r4 + mov sb, r1 + movs r2, #0xad + adds r2, r2, r4 + mov r8, r2 + movs r6, #0 +_080A53B4: + ldr r0, _080A5408 @ =gUnk_02000080 + adds r0, #0x10 + adds r2, r5, r0 + ldrb r0, [r2] + cmp r0, #0 + beq _080A5456 + ldr r0, _080A540C @ =gUnk_08128B64 + adds r1, r6, r0 + ldrb r0, [r1, #6] + ldr r3, _080A5400 @ =gUnk_03001010 + strh r0, [r3] + ldrb r0, [r1, #7] + strh r0, [r3, #2] + ldrb r3, [r2] + cmp r3, #0x1f + bhi _080A53E0 + cmp r3, #0x1c + blo _080A53E0 + adds r0, r3, #0 + subs r0, #0x1c + add r0, sl + ldrb r3, [r0] +_080A53E0: + movs r2, #3 + cmp r3, #7 + blo _080A542E + cmp r3, #8 + bhi _080A5414 + ldr r0, _080A5410 @ =gUnk_080FD5A0 + adds r1, r4, #0 + adds r1, #0xae + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r0, [r1] + mov r7, sb + ldrb r7, [r7] + cmp r0, r7 + bhi _080A542E + b _080A542C + .align 2, 0 +_080A5400: .4byte gUnk_03001010 +_080A5404: .4byte gUnk_02002A40 +_080A5408: .4byte gUnk_02000080 +_080A540C: .4byte gUnk_08128B64 +_080A5410: .4byte gUnk_080FD5A0 +_080A5414: + cmp r3, #0xa + bhi _080A542E + ldr r0, _080A552C @ =gUnk_080FD5A4 + adds r1, r4, #0 + adds r1, #0xaf + ldrb r1, [r1] + adds r1, r1, r0 + ldrb r0, [r1] + mov r1, r8 + ldrb r1, [r1] + cmp r0, r1 + bhi _080A542E +_080A542C: + movs r2, #4 +_080A542E: + lsls r2, r2, #0xc + movs r7, #0xd8 + lsls r7, r7, #2 + adds r0, r6, r7 + movs r7, #0x80 + lsls r7, r7, #4 + adds r1, r7, #0 + orrs r0, r1 + orrs r2, r0 + ldr r0, _080A5530 @ =gUnk_03001010 + strh r2, [r0, #8] + ldr r1, _080A5534 @ =gUnk_080FDFD8 + lsls r0, r3, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r1, [r0] + movs r0, #0xa1 + lsls r0, r0, #1 + bl sub_080ADA14 +_080A5456: + adds r6, #8 + adds r5, #1 + cmp r5, #0x10 + bls _080A53B4 + ldr r0, _080A5530 @ =gUnk_03001010 + movs r1, #0x80 + lsls r1, r1, #4 + strh r1, [r0, #8] + ldr r1, _080A5538 @ =gUnk_02000080 + ldrb r1, [r1, #3] + mov sb, r0 + cmp r1, #0x10 + bne _080A547C + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + beq _080A547C + movs r1, #0x11 +_080A547C: + lsls r0, r1, #3 + ldr r1, _080A553C @ =gUnk_08128B64 + mov r8, r1 + adds r1, r0, r1 + mov r4, sb + ldrb r0, [r1, #6] + strh r0, [r4] + ldrb r0, [r1, #7] + strh r0, [r4, #2] + ldrb r2, [r1, #4] + ldr r0, _080A5540 @ =gUnk_03001000 + ldrh r1, [r0, #0xc] + movs r0, #0x10 + ands r0, r1 + adds r1, r2, #4 + cmp r0, #0 + beq _080A54A0 + adds r1, r2, #3 +_080A54A0: + ldr r6, _080A5544 @ =0x000001FB + adds r0, r6, #0 + bl sub_080ADA14 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #0x11 + cmp r0, #0 + beq _080A54B6 + movs r1, #0x10 +_080A54B6: + lsls r0, r1, #3 + mov r2, r8 + adds r1, r0, r2 + ldrb r0, [r1, #6] + strh r0, [r4] + ldrb r0, [r1, #7] + strh r0, [r4, #2] + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r4, #8] + adds r0, r6, #0 + movs r1, #0x22 + bl sub_080ADA14 + ldr r7, _080A5548 @ =gUnk_02002A40 + adds r0, r7, #0 + adds r0, #0xb4 + ldrb r0, [r0] + bl sub_080A554C + adds r5, r0, #0 + cmp r5, #0x10 + bhi _080A54FA + lsls r0, r5, #3 + mov r3, r8 + adds r1, r0, r3 + ldrb r0, [r1, #6] + strh r0, [r4] + ldrb r0, [r1, #7] + strh r0, [r4, #2] + adds r0, r6, #0 + movs r1, #3 + bl sub_080ADA14 +_080A54FA: + adds r0, r7, #0 + adds r0, #0xb5 + ldrb r0, [r0] + bl sub_080A554C + adds r5, r0, #0 + cmp r5, #0x10 + bhi _080A5522 + lsls r0, r5, #3 + mov r7, r8 + adds r1, r0, r7 + ldrb r0, [r1, #6] + mov r2, sb + strh r0, [r2] + ldrb r0, [r1, #7] + strh r0, [r2, #2] + adds r0, r6, #0 + movs r1, #3 + bl sub_080ADA14 +_080A5522: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A552C: .4byte gUnk_080FD5A4 +_080A5530: .4byte gUnk_03001010 +_080A5534: .4byte gUnk_080FDFD8 +_080A5538: .4byte gUnk_02000080 +_080A553C: .4byte gUnk_08128B64 +_080A5540: .4byte gUnk_03001000 +_080A5544: .4byte 0x000001FB +_080A5548: .4byte gUnk_02002A40 + + thumb_func_start sub_080A554C +sub_080A554C: @ 0x080A554C + push {lr} + adds r2, r0, #0 + cmp r2, #0 + beq _080A556E + movs r1, #0 + ldr r3, _080A5564 @ =gUnk_02000090 +_080A5558: + adds r0, r1, r3 + ldrb r0, [r0] + cmp r2, r0 + bne _080A5568 + adds r0, r1, #0 + b _080A5570 + .align 2, 0 +_080A5564: .4byte gUnk_02000090 +_080A5568: + adds r1, #1 + cmp r1, #0x10 + bls _080A5558 +_080A556E: + movs r0, #0x11 +_080A5570: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A5574 +sub_080A5574: @ 0x080A5574 + push {lr} + ldr r1, _080A558C @ =gUnk_08128BF8 + ldr r0, _080A5590 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A57F4 + pop {pc} + .align 2, 0 +_080A558C: .4byte gUnk_08128BF8 +_080A5590: .4byte gUnk_02000080 + + thumb_func_start sub_080A5594 +sub_080A5594: @ 0x080A5594 + push {r4, r5, r6, r7, lr} + ldr r4, _080A5620 @ =gUnk_02000080 + ldr r0, _080A5624 @ =gUnk_08128C00 + str r0, [r4, #0xc] + ldr r0, _080A5628 @ =gUnk_08128C04 + bl sub_080A70AC + movs r6, #6 + movs r5, #0x34 + adds r7, r4, #0 + adds r7, #0x10 +_080A55AA: + adds r0, r5, #0 + bl sub_0807CA84 + cmp r0, #1 + bne _080A55EA + ldr r1, _080A562C @ =gUnk_080FD5B4 + lsls r0, r5, #3 + adds r0, r0, r1 + ldrb r1, [r0] + cmp r1, #3 + bne _080A55C8 + ldrb r0, [r4, #0x13] + cmp r0, #0 + beq _080A55C8 + movs r1, #0x63 +_080A55C8: + cmp r1, #0x63 + beq _080A55EA + cmp r1, #1 + bne _080A55D8 + adds r1, r6, #0 + cmp r1, #7 + bhi _080A55D8 + adds r6, r1, #1 +_080A55D8: + adds r0, r1, r7 + strb r5, [r0] + lsls r1, r1, #3 + movs r0, #0xe0 + lsls r0, r0, #2 + adds r1, r1, r0 + adds r0, r5, #0 + bl sub_080A5F48 +_080A55EA: + adds r5, #1 + cmp r5, #0x46 + bls _080A55AA + movs r0, #0x3d + bl sub_0807CA84 + cmp r0, #0 + bne _080A564A + movs r5, #0 + movs r0, #0x67 + bl sub_0807CA84 + cmp r0, #0 + beq _080A5646 + movs r4, #0 + ldr r1, _080A5630 @ =gUnk_02002B6B +_080A560A: + adds r0, r4, r1 + ldrb r0, [r0] + adds r5, r5, r0 + adds r4, #1 + cmp r4, #0x12 + bls _080A560A + cmp r5, #0x4f + ble _080A5634 + movs r5, #4 + b _080A5646 + .align 2, 0 +_080A5620: .4byte gUnk_02000080 +_080A5624: .4byte gUnk_08128C00 +_080A5628: .4byte gUnk_08128C04 +_080A562C: .4byte gUnk_080FD5B4 +_080A5630: .4byte gUnk_02002B6B +_080A5634: + cmp r5, #0x27 + ble _080A563C + movs r5, #3 + b _080A5646 +_080A563C: + cmp r5, #9 + ble _080A5644 + movs r5, #2 + b _080A5646 +_080A5644: + movs r5, #1 +_080A5646: + ldr r0, _080A5698 @ =gUnk_02000080 + strb r5, [r0, #0x10] +_080A564A: + ldr r0, _080A5698 @ =gUnk_02000080 + ldr r1, _080A569C @ =gUnk_02002A40 + adds r1, #0xa9 + ldrb r1, [r1] + adds r1, #1 + strb r1, [r0, #0x11] + movs r5, #0 + movs r4, #0x48 +_080A565A: + adds r0, r4, #0 + bl sub_0807CA84 + cmp r0, #0 + beq _080A5666 + adds r5, #1 +_080A5666: + adds r4, #1 + cmp r4, #0x4f + bls _080A565A + ldr r4, _080A5698 @ =gUnk_02000080 + strb r5, [r4, #0x12] + movs r0, #0x3e + bl sub_0807CA84 + cmp r0, #0 + bne _080A5688 + movs r0, #0x3f + bl sub_0807CA84 + cmp r0, #0 + beq _080A5688 + movs r0, #0x3f + strb r0, [r4, #0x13] +_080A5688: + ldr r1, _080A5698 @ =gUnk_02000080 + movs r0, #1 + strb r0, [r1, #0x14] + strb r0, [r1, #0x15] + bl sub_080A7114 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A5698: .4byte gUnk_02000080 +_080A569C: .4byte gUnk_02002A40 + + thumb_func_start sub_080A56A0 +sub_080A56A0: @ 0x080A56A0 + push {r4, lr} + bl sub_080A51F4 + cmp r0, #0 + bne _080A56AC + b _080A57F0 +_080A56AC: + ldr r2, _080A56D0 @ =gUnk_02000080 + ldr r0, _080A56D4 @ =gUnk_08128C00 + str r0, [r2, #0xc] + ldrb r0, [r2, #3] + lsls r0, r0, #3 + ldr r1, _080A56D8 @ =gUnk_08128C14 + adds r4, r0, r1 + movs r3, #0xff + ldr r0, _080A56DC @ =gUnk_03000FF0 + ldrh r1, [r0, #4] + cmp r1, #0x20 + beq _080A56F2 + cmp r1, #0x20 + bgt _080A56E0 + cmp r1, #0x10 + beq _080A56F6 + b _080A56F8 + .align 2, 0 +_080A56D0: .4byte gUnk_02000080 +_080A56D4: .4byte gUnk_08128C00 +_080A56D8: .4byte gUnk_08128C14 +_080A56DC: .4byte gUnk_03000FF0 +_080A56E0: + cmp r1, #0x40 + beq _080A56EA + cmp r1, #0x80 + beq _080A56EE + b _080A56F8 +_080A56EA: + ldrb r3, [r4] + b _080A56F8 +_080A56EE: + ldrb r3, [r4, #1] + b _080A56F8 +_080A56F2: + ldrb r3, [r4, #2] + b _080A56F8 +_080A56F6: + ldrb r3, [r4, #3] +_080A56F8: + cmp r3, #0xff + beq _080A570C + ldr r0, _080A5708 @ =gUnk_02000080 + strb r3, [r0, #3] + movs r0, #0x69 + bl sub_080A3268 + b _080A575E + .align 2, 0 +_080A5708: .4byte gUnk_02000080 +_080A570C: + ldrh r0, [r0, #2] + cmp r0, #1 + bne _080A575E + ldrb r3, [r2, #3] + movs r1, #0 + cmp r3, #2 + beq _080A572E + cmp r3, #2 + bhi _080A5724 + cmp r3, #0 + beq _080A572E + b _080A574E +_080A5724: + cmp r3, #4 + beq _080A5748 + cmp r3, #5 + beq _080A574C + b _080A574E +_080A572E: + ldr r0, _080A5744 @ =gUnk_02000080 + adds r0, #0x10 + adds r0, r3, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _080A574E + movs r1, #8 + cmp r3, #0 + bne _080A574E + movs r1, #7 + b _080A5752 + .align 2, 0 +_080A5744: .4byte gUnk_02000080 +_080A5748: + movs r1, #9 + b _080A5752 +_080A574C: + movs r1, #0xa +_080A574E: + cmp r1, #0 + beq _080A575E +_080A5752: + adds r0, r1, #0 + bl sub_080A4E84 + movs r0, #0x6a + bl sub_080A3268 +_080A575E: + ldr r0, _080A5780 @ =gUnk_02000080 + ldrb r1, [r0, #3] + adds r2, r0, #0 + cmp r1, #0 + beq _080A576C + cmp r1, #2 + bne _080A5788 +_080A576C: + adds r0, r2, #0 + adds r0, #0x10 + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, #0 + beq _080A5788 + ldr r1, _080A5784 @ =gUnk_0200AF00 + movs r0, #0x10 + b _080A578C + .align 2, 0 +_080A5780: .4byte gUnk_02000080 +_080A5784: .4byte gUnk_0200AF00 +_080A5788: + ldr r1, _080A57AC @ =gUnk_0200AF00 + ldr r0, _080A57B0 @ =0x0000FFF0 +_080A578C: + strh r0, [r1, #0x1c] + ldrb r3, [r2, #3] + adds r0, r2, #0 + adds r0, #0x10 + adds r0, r3, r0 + ldrb r2, [r0] + cmp r2, #0 + beq _080A57E6 + cmp r3, #5 + bhi _080A57E6 + lsls r0, r3, #2 + ldr r1, _080A57B4 @ =_080A57B8 + adds r0, r0, r1 + ldr r0, [r0] + mov pc, r0 + .align 2, 0 +_080A57AC: .4byte gUnk_0200AF00 +_080A57B0: .4byte 0x0000FFF0 +_080A57B4: .4byte _080A57B8 +_080A57B8: @ jump table + .4byte _080A57D0 @ case 0 + .4byte _080A57D8 @ case 1 + .4byte _080A57DC @ case 2 + .4byte _080A57E6 @ case 3 + .4byte _080A57E0 @ case 4 + .4byte _080A57E4 @ case 5 +_080A57D0: + cmp r2, #0x3d + beq _080A57E6 + movs r2, #0x67 + b _080A57E6 +_080A57D8: + movs r2, #0x63 + b _080A57E6 +_080A57DC: + movs r2, #0x70 + b _080A57E6 +_080A57E0: + movs r2, #0x74 + b _080A57E6 +_080A57E4: + movs r2, #0x73 +_080A57E6: + movs r0, #0x80 + lsls r0, r0, #3 + adds r0, r2, r0 + bl sub_080A6F6C +_080A57F0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A57F4 +sub_080A57F4: @ 0x080A57F4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + ldr r2, _080A5890 @ =gUnk_03001010 + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r2, #4] + strh r1, [r2, #6] + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + ldr r1, _080A5894 @ =gUnk_08128C94 + mov sb, r1 + cmp r0, #0 + bne _080A581A + ldr r3, _080A5898 @ =gUnk_08128C14 + mov sb, r3 +_080A581A: + ldr r0, _080A589C @ =gUnk_02000080 + ldrb r0, [r0, #3] + lsls r0, r0, #3 + mov r1, sb + adds r3, r1, r0 + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r2, #8] + ldrb r0, [r3, #6] + strh r0, [r2] + ldrb r0, [r3, #7] + strh r0, [r2, #2] + ldrb r2, [r3, #4] + ldr r0, _080A58A0 @ =gUnk_03001000 + ldrh r1, [r0, #0xc] + movs r0, #0x10 + ands r0, r1 + adds r1, r2, #0 + adds r1, #0xa + cmp r0, #0 + bne _080A5846 + adds r1, #1 +_080A5846: + ldr r0, _080A58A4 @ =0x000001FB + bl sub_080ADA14 + movs r3, #0 + mov r8, r3 + mov r7, sb + adds r7, #5 +_080A5854: + ldr r0, _080A589C @ =gUnk_02000080 + adds r0, #0x10 + mov r1, r8 + adds r6, r1, r0 + ldrb r1, [r6] + cmp r1, #0 + beq _080A58E8 + mov r3, r8 + lsls r5, r3, #3 + mov r0, sb + adds r3, r0, r5 + ldr r4, _080A5890 @ =gUnk_03001010 + ldrb r0, [r7, #1] + strh r0, [r4] + ldrb r2, [r7, #2] + strh r2, [r4, #2] + movs r0, #0xe8 + lsls r0, r0, #8 + strh r0, [r4, #8] + cmp r1, #0x33 + bhi _080A58B8 + mov r1, r8 + cmp r1, #2 + bne _080A58A8 + ldrb r0, [r7] + adds r1, r0, #0 + adds r1, #0xa + ldr r0, _080A58A4 @ =0x000001FB + b _080A58E4 + .align 2, 0 +_080A5890: .4byte gUnk_03001010 +_080A5894: .4byte gUnk_08128C94 +_080A5898: .4byte gUnk_08128C14 +_080A589C: .4byte gUnk_02000080 +_080A58A0: .4byte gUnk_03001000 +_080A58A4: .4byte 0x000001FB +_080A58A8: + ldrb r0, [r6] + adds r0, #9 + ldrb r3, [r3, #5] + adds r1, r0, r3 + ldr r0, _080A58B4 @ =0x000001FB + b _080A58E4 + .align 2, 0 +_080A58B4: .4byte 0x000001FB +_080A58B8: + ldr r3, _080A58CC @ =0x0000EB80 + adds r0, r5, r3 + strh r0, [r4, #8] + cmp r1, #0x3d + beq _080A58D0 + cmp r1, #0x3e + bne _080A58D6 + adds r0, r2, #0 + adds r0, #8 + b _080A58D4 + .align 2, 0 +_080A58CC: .4byte 0x0000EB80 +_080A58D0: + adds r0, r2, #0 + adds r0, #0xd +_080A58D4: + strh r0, [r4, #2] +_080A58D6: + ldr r0, _080A5980 @ =gUnk_080FDFD8 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + ldrb r1, [r0] + movs r0, #0xa1 + lsls r0, r0, #1 +_080A58E4: + bl sub_080ADA14 +_080A58E8: + adds r7, #8 + movs r0, #1 + add r8, r0 + mov r1, r8 + cmp r1, #0xf + bls _080A5854 + ldr r4, _080A5984 @ =gUnk_02000080 + ldrb r0, [r4, #0x12] + cmp r0, #0 + beq _080A5920 + ldr r2, _080A5988 @ =gUnk_03001010 + movs r3, #0x80 + lsls r3, r3, #4 + adds r1, r3, #0 + adds r0, r0, r1 + strh r0, [r2, #8] + mov r3, sb + adds r3, #0x10 + ldrb r0, [r3, #6] + adds r0, #9 + strh r0, [r2] + ldrb r0, [r3, #7] + adds r0, #7 + strh r0, [r2, #2] + movs r0, #0 + movs r1, #1 + bl sub_080ADA14 +_080A5920: + ldrb r0, [r4, #0x13] + cmp r0, #0x3f + bne _080A5976 + mov r3, sb + adds r3, #0x18 + ldr r1, _080A5988 @ =gUnk_03001010 + ldrb r0, [r3, #6] + adds r0, #8 + strh r0, [r1] + ldrb r0, [r3, #7] + adds r0, #8 + strh r0, [r1, #2] + ldr r0, _080A598C @ =gUnk_02002A40 + adds r0, #0xc2 + ldrh r4, [r0] + movs r0, #0 + mov r8, r0 + adds r5, r1, #0 +_080A5944: + adds r0, r4, #0 + movs r1, #0xa + bl __modsi3 + movs r1, #0x80 + lsls r1, r1, #4 + adds r0, r0, r1 + strh r0, [r5, #8] + movs r0, #0 + movs r1, #1 + bl sub_080ADA14 + adds r0, r4, #0 + movs r1, #0xa + bl __divsi3 + adds r4, r0, #0 + ldrh r0, [r5] + subs r0, #8 + strh r0, [r5] + movs r3, #1 + add r8, r3 + mov r0, r8 + cmp r0, #2 + bls _080A5944 +_080A5976: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A5980: .4byte gUnk_080FDFD8 +_080A5984: .4byte gUnk_02000080 +_080A5988: .4byte gUnk_03001010 +_080A598C: .4byte gUnk_02002A40 + + thumb_func_start sub_080A5990 +sub_080A5990: @ 0x080A5990 + push {lr} + ldr r1, _080A59A4 @ =gUnk_08128D14 + ldr r0, _080A59A8 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A59A4: .4byte gUnk_08128D14 +_080A59A8: .4byte gUnk_02000080 + + thumb_func_start sub_080A59AC +sub_080A59AC: @ 0x080A59AC + push {lr} + ldr r1, _080A59C4 @ =gUnk_02000080 + movs r0, #0 + strb r0, [r1, #3] + movs r1, #0 + bl sub_08052418 + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_080A59C4: .4byte gUnk_02000080 + + thumb_func_start sub_080A59C8 +sub_080A59C8: @ 0x080A59C8 + push {lr} + bl sub_080A51F4 + cmp r0, #0 + beq _080A5A52 + ldr r1, _080A59EC @ =gUnk_02000080 + ldrb r2, [r1, #3] + movs r3, #0 + ldr r0, _080A59F0 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #2 + beq _080A5A02 + cmp r0, #2 + bgt _080A59F4 + cmp r0, #1 + beq _080A5A0A + b _080A5A0C + .align 2, 0 +_080A59EC: .4byte gUnk_02000080 +_080A59F0: .4byte gUnk_03000FF0 +_080A59F4: + cmp r0, #0x40 + beq _080A59FE + cmp r0, #0x80 + beq _080A5A06 + b _080A5A0C +_080A59FE: + movs r2, #0 + b _080A5A0C +_080A5A02: + cmp r2, #0 + bne _080A5A10 +_080A5A06: + movs r2, #1 + b _080A5A0C +_080A5A0A: + movs r3, #1 +_080A5A0C: + cmp r3, #0 + beq _080A5A3C +_080A5A10: + movs r0, #0xff + strh r0, [r1, #8] + cmp r2, #0 + bne _080A5A2E + movs r0, #8 + movs r1, #0 + bl sub_08050318 + movs r0, #2 + bl sub_080A7114 + movs r0, #0x6a + bl sub_080A3268 + b _080A5A52 +_080A5A2E: + movs r0, #3 + bl sub_080A7114 + movs r0, #0x6c + bl sub_080A3268 + b _080A5A52 +_080A5A3C: + ldrb r0, [r1, #3] + cmp r0, r2 + beq _080A5A52 + strb r2, [r1, #3] + movs r0, #0 + adds r1, r2, #0 + bl sub_08052418 + movs r0, #0x69 + bl sub_080A3268 +_080A5A52: + pop {pc} + + thumb_func_start sub_080A5A54 +sub_080A5A54: @ 0x080A5A54 + push {lr} + movs r0, #0 + bl sub_0807CDA4 + adds r1, r0, #0 + cmp r1, #0 + beq _080A5A8A + cmp r1, #0 + bgt _080A5A70 + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + beq _080A5A76 + b _080A5A8A +_080A5A70: + cmp r1, #1 + beq _080A5A84 + b _080A5A8A +_080A5A76: + movs r0, #9 + movs r1, #0 + bl sub_08050318 + ldr r1, _080A5A8C @ =gUnk_02000080 + movs r0, #0x3c + strh r0, [r1, #8] +_080A5A84: + movs r0, #3 + bl sub_080A7114 +_080A5A8A: + pop {pc} + .align 2, 0 +_080A5A8C: .4byte gUnk_02000080 + + thumb_func_start sub_080A5A90 +sub_080A5A90: @ 0x080A5A90 + push {lr} + ldr r2, _080A5AA4 @ =gUnk_02000080 + ldrh r0, [r2, #8] + cmp r0, #0 + beq _080A5AA8 + cmp r0, #0xff + beq _080A5AC0 + subs r0, #1 + strh r0, [r2, #8] + b _080A5AD2 + .align 2, 0 +_080A5AA4: .4byte gUnk_02000080 +_080A5AA8: + ldr r0, _080A5ABC @ =gUnk_03000FF0 + ldrh r1, [r0, #2] + movs r0, #0xb + ands r0, r1 + cmp r0, #0 + beq _080A5AD2 + movs r0, #0xff + strh r0, [r2, #8] + b _080A5AD2 + .align 2, 0 +_080A5ABC: .4byte gUnk_03000FF0 +_080A5AC0: + ldr r0, _080A5AD4 @ =gUnk_02034490 + ldrb r0, [r0, #1] + movs r1, #1 + cmp r0, #0xa + bne _080A5ACC + movs r1, #2 +_080A5ACC: + adds r0, r1, #0 + bl sub_080A4E84 +_080A5AD2: + pop {pc} + .align 2, 0 +_080A5AD4: .4byte gUnk_02034490 + + thumb_func_start sub_080A5AD8 +sub_080A5AD8: @ 0x080A5AD8 + push {lr} + ldr r1, _080A5AEC @ =gUnk_08128D24 + ldr r0, _080A5AF0 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A5AEC: .4byte gUnk_08128D24 +_080A5AF0: .4byte gUnk_02000080 + + thumb_func_start sub_080A5AF4 +sub_080A5AF4: @ 0x080A5AF4 + push {r4, lr} + ldr r0, _080A5B18 @ =gUnk_02000080 + movs r4, #0 + strb r4, [r0, #3] + movs r0, #2 + movs r1, #0 + bl sub_08052418 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _080A5B24 + ldr r1, _080A5B1C @ =gUnk_03000F50 + ldr r0, _080A5B20 @ =0x0000FFFC + strh r0, [r1, #0x18] + b _080A5B28 + .align 2, 0 +_080A5B18: .4byte gUnk_02000080 +_080A5B1C: .4byte gUnk_03000F50 +_080A5B20: .4byte 0x0000FFFC +_080A5B24: + ldr r0, _080A5B30 @ =gUnk_03000F50 + strh r4, [r0, #0x18] +_080A5B28: + movs r0, #1 + bl sub_080A7114 + pop {r4, pc} + .align 2, 0 +_080A5B30: .4byte gUnk_03000F50 + + thumb_func_start sub_080A5B34 +sub_080A5B34: @ 0x080A5B34 + push {r4, r5, r6, lr} + bl sub_080A51F4 + cmp r0, #0 + beq _080A5BB6 + ldr r1, _080A5B58 @ =gUnk_02000080 + ldrb r4, [r1, #3] + movs r5, #0 + ldr r0, _080A5B5C @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + adds r6, r1, #0 + cmp r0, #2 + beq _080A5B6C + cmp r0, #2 + bgt _080A5B60 + cmp r0, #1 + beq _080A5B74 + b _080A5B76 + .align 2, 0 +_080A5B58: .4byte gUnk_02000080 +_080A5B5C: .4byte gUnk_03000FF0 +_080A5B60: + cmp r0, #0x10 + beq _080A5B70 + cmp r0, #0x20 + bne _080A5B76 + movs r4, #0 + b _080A5B76 +_080A5B6C: + cmp r4, #0 + bne _080A5B74 +_080A5B70: + movs r4, #1 + b _080A5B76 +_080A5B74: + movs r5, #1 +_080A5B76: + adds r1, r6, #0 + ldrb r0, [r1, #3] + cmp r0, r4 + beq _080A5B8E + strb r4, [r1, #3] + movs r0, #2 + adds r1, r4, #0 + bl sub_08052418 + movs r0, #0x69 + bl sub_080A3268 +_080A5B8E: + cmp r5, #0 + beq _080A5BB6 + cmp r4, #0 + bne _080A5BAA + movs r0, #7 + movs r1, #0x20 + bl sub_08050054 + movs r0, #0x3c + strh r0, [r6, #8] + movs r0, #2 + bl sub_080A7114 + b _080A5BB6 +_080A5BAA: + movs r0, #0x6c + bl sub_080A3268 + movs r0, #2 + bl sub_080A4E84 +_080A5BB6: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080A5BB8 +sub_080A5BB8: @ 0x080A5BB8 + push {lr} + ldr r0, _080A5BE4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A5BE2 + bl sub_08050384 + ldr r1, _080A5BE8 @ =gUnk_03001000 + ldrb r0, [r1, #1] + movs r0, #1 + strb r0, [r1, #1] + movs r0, #6 + movs r1, #8 + bl sub_08050054 + movs r0, #2 + bl sub_080A4E84 + ldr r1, _080A5BEC @ =gUnk_02034490 + movs r0, #0x10 + strb r0, [r1, #0x16] +_080A5BE2: + pop {pc} + .align 2, 0 +_080A5BE4: .4byte gUnk_03000FD0 +_080A5BE8: .4byte gUnk_03001000 +_080A5BEC: .4byte gUnk_02034490 + + thumb_func_start sub_080A5BF0 +sub_080A5BF0: @ 0x080A5BF0 + push {r4, r5, lr} + ldr r1, _080A5C30 @ =gUnk_08128D30 + ldr r0, _080A5C34 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A5D1C + ldr r0, _080A5C38 @ =gUnk_03001000 + ldrh r0, [r0, #0xc] + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _080A5C2E + ldr r4, _080A5C3C @ =gUnk_02017830 + ldrh r5, [r4] + adds r0, r4, #2 + adds r1, r4, #0 + movs r2, #0xe + bl sub_0801D66C + strh r5, [r4, #0xe] + ldr r2, _080A5C40 @ =gUnk_0200B644 + ldr r0, [r2] + movs r1, #0x80 + lsls r1, r1, #5 + orrs r0, r1 + str r0, [r2] +_080A5C2E: + pop {r4, r5, pc} + .align 2, 0 +_080A5C30: .4byte gUnk_08128D30 +_080A5C34: .4byte gUnk_02000080 +_080A5C38: .4byte gUnk_03001000 +_080A5C3C: .4byte gUnk_02017830 +_080A5C40: .4byte gUnk_0200B644 + + thumb_func_start sub_080A5C44 +sub_080A5C44: @ 0x080A5C44 + push {r4, lr} + ldr r1, _080A5C88 @ =gUnk_02000080 + ldr r0, _080A5C8C @ =gUnk_08128D38 + str r0, [r1, #0xc] + ldrb r0, [r1, #3] + bl sub_080A5CFC + movs r0, #0x81 + bl sub_0801D7EC + ldr r4, _080A5C90 @ =gUnk_02033A90 + ldrb r0, [r4, #3] + movs r1, #1 + bl sub_080A6FB4 + movs r0, #1 + bl sub_080A7114 + ldrb r1, [r4, #3] + lsls r1, r1, #1 + ldr r0, _080A5C94 @ =gUnk_08128D43 + adds r1, r1, r0 + ldr r2, _080A5C98 @ =gUnk_03000F50 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r2, #0x16] + adds r0, r0, r3 + strh r0, [r2, #0x16] + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r2, #0x18] + adds r0, r0, r1 + strh r0, [r2, #0x18] + pop {r4, pc} + .align 2, 0 +_080A5C88: .4byte gUnk_02000080 +_080A5C8C: .4byte gUnk_08128D38 +_080A5C90: .4byte gUnk_02033A90 +_080A5C94: .4byte gUnk_08128D43 +_080A5C98: .4byte gUnk_03000F50 + + thumb_func_start sub_080A5C9C +sub_080A5C9C: @ 0x080A5C9C + push {lr} + bl sub_080A51F4 + cmp r0, #0 + beq _080A5CFA + ldr r0, _080A5CC4 @ =gUnk_02033A90 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + ldr r1, _080A5CC8 @ =gUnk_080C9C6C + adds r3, r0, r1 + ldr r1, _080A5CCC @ =gUnk_02000080 + ldrb r2, [r1, #3] + ldr r0, _080A5CD0 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #0x40 + beq _080A5CD4 + cmp r0, #0x80 + beq _080A5CDC + b _080A5CE6 + .align 2, 0 +_080A5CC4: .4byte gUnk_02033A90 +_080A5CC8: .4byte gUnk_080C9C6C +_080A5CCC: .4byte gUnk_02000080 +_080A5CD0: .4byte gUnk_03000FF0 +_080A5CD4: + cmp r2, #0 + ble _080A5CE6 + subs r2, #1 + b _080A5CE6 +_080A5CDC: + ldrb r0, [r3] + subs r0, #1 + cmp r0, r2 + ble _080A5CE6 + adds r2, #1 +_080A5CE6: + ldrb r0, [r1, #3] + cmp r0, r2 + beq _080A5CFA + strb r2, [r1, #3] + adds r0, r2, #0 + bl sub_080A5CFC + movs r0, #0x69 + bl sub_080A3268 +_080A5CFA: + pop {pc} + + thumb_func_start sub_080A5CFC +sub_080A5CFC: @ 0x080A5CFC + push {r4, lr} + adds r4, r0, #0 + bl sub_0801DDA0 + bl sub_0801DD88 + ldr r1, _080A5D18 @ =gUnk_02019EE0 + movs r2, #0x80 + lsls r2, r2, #3 + adds r0, r4, #0 + bl sub_0801DBA0 + pop {r4, pc} + .align 2, 0 +_080A5D18: .4byte gUnk_02019EE0 + + thumb_func_start sub_080A5D1C +sub_080A5D1C: @ 0x080A5D1C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r0, _080A5E98 @ =gUnk_02033A90 + ldrb r0, [r0, #3] + lsls r0, r0, #2 + ldr r1, _080A5E9C @ =gUnk_080C9C6C + adds r7, r0, r1 + ldr r1, _080A5EA0 @ =gUnk_08128D3C + ldrb r0, [r7] + adds r0, r0, r1 + ldrb r6, [r0] + bl sub_0801DB94 + mov r8, r0 + ldr r5, _080A5EA4 @ =gUnk_03001010 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r5, #4] + movs r0, #0 + strh r0, [r5, #6] + strh r0, [r5, #8] + movs r0, #0x34 + strh r0, [r5] + ldr r0, _080A5EA8 @ =gUnk_02000080 + ldrb r1, [r0, #3] + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r6, r0 + strh r0, [r5, #2] + ldr r1, _080A5EAC @ =gUnk_03001000 + mov sl, r1 + ldrh r1, [r1, #0xc] + movs r0, #0x10 + ands r0, r1 + movs r1, #0x74 + cmp r0, #0 + bne _080A5D70 + movs r1, #0x75 +_080A5D70: + ldr r0, _080A5EB0 @ =0x000001FB + bl sub_080ADA14 + movs r0, #0x20 + mov sb, r0 + mov r1, sb + strh r1, [r5] + mov r1, r8 + lsls r0, r1, #1 + add r0, r8 + lsls r0, r0, #2 + adds r0, r6, r0 + strh r0, [r5, #2] + mov r0, sl + ldrh r1, [r0, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0x79 + cmp r0, #0 + beq _080A5D9A + movs r1, #0x78 +_080A5D9A: + ldr r0, _080A5EB0 @ =0x000001FB + bl sub_080ADA14 + movs r0, #0x7e + strh r0, [r5, #2] + movs r0, #0x87 + lsls r0, r0, #7 + strh r0, [r5, #8] + bl sub_080527CC + cmp r0, #0 + beq _080A5DCC + movs r0, #0x18 + strh r0, [r5] + ldr r0, _080A5EB4 @ =gUnk_080FDFD8 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r4, [r0] + movs r0, #0xa2 + lsls r0, r0, #1 + adds r1, r4, #0 + bl sub_080ADA14 +_080A5DCC: + bl sub_08052764 + cmp r0, #0 + beq _080A5DEE + movs r0, #0x2e + strh r0, [r5] + ldr r0, _080A5EB4 @ =gUnk_080FDFD8 + movs r1, #0xa4 + lsls r1, r1, #1 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r4, [r0] + movs r0, #0xa2 + lsls r0, r0, #1 + adds r1, r4, #0 + bl sub_080ADA14 +_080A5DEE: + bl sub_0805279C + cmp r0, #0 + beq _080A5E48 + movs r0, #0x45 + strh r0, [r5] + movs r0, #0xe0 + lsls r0, r0, #2 + strh r0, [r5, #8] + ldr r1, _080A5EB4 @ =gUnk_080FDFD8 + movs r0, #0xa2 + lsls r0, r0, #1 + adds r1, r1, r0 + ldr r1, [r1] + ldrb r4, [r1] + adds r1, r4, #0 + bl sub_080ADA14 + bl sub_080A5F24 + cmp r0, #0 + beq _080A5E48 + movs r0, #0 + strh r0, [r5, #8] + movs r0, #0x46 + strh r0, [r5] + ldrb r1, [r7, #1] + ldrb r0, [r7, #2] + subs r1, r1, r0 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, r6, r0 + strh r0, [r5, #2] + mov r0, sl + ldrh r1, [r0, #0xc] + mov r0, sb + ands r0, r1 + movs r1, #0x7b + cmp r0, #0 + beq _080A5E42 + movs r1, #0x7a +_080A5E42: + ldr r0, _080A5EB0 @ =0x000001FB + bl sub_080ADA14 +_080A5E48: + ldr r1, _080A5EA4 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r1, #8] + movs r0, #0x34 + strh r0, [r1] + strh r6, [r1, #2] + ldrb r0, [r7, #1] + adds r4, r0, #0 + adds r4, #0x82 + movs r5, #0 + ldrb r0, [r7] + cmp r5, r0 + bhs _080A5E7C + adds r6, r1, #0 +_080A5E64: + ldr r0, _080A5EB0 @ =0x000001FB + adds r1, r4, #0 + bl sub_080ADA14 + subs r4, #1 + ldrh r0, [r6, #2] + adds r0, #0xc + strh r0, [r6, #2] + adds r5, #1 + ldrb r1, [r7] + cmp r5, r1 + blo _080A5E64 +_080A5E7C: + ldr r5, _080A5EB8 @ =gUnk_02019EE0 + ldrb r0, [r5] + cmp r0, #0 + beq _080A5F14 + ldr r7, _080A5EA4 @ =gUnk_03001010 + ldr r6, _080A5EBC @ =gUnk_03000F50 +_080A5E88: + ldrb r0, [r5] + cmp r0, #2 + beq _080A5EDC + cmp r0, #2 + bgt _080A5EC0 + cmp r0, #1 + beq _080A5ECA + b _080A5EEE + .align 2, 0 +_080A5E98: .4byte gUnk_02033A90 +_080A5E9C: .4byte gUnk_080C9C6C +_080A5EA0: .4byte gUnk_08128D3C +_080A5EA4: .4byte gUnk_03001010 +_080A5EA8: .4byte gUnk_02000080 +_080A5EAC: .4byte gUnk_03001000 +_080A5EB0: .4byte 0x000001FB +_080A5EB4: .4byte gUnk_080FDFD8 +_080A5EB8: .4byte gUnk_02019EE0 +_080A5EBC: .4byte gUnk_03000F50 +_080A5EC0: + cmp r0, #3 + beq _080A5EE0 + cmp r0, #4 + beq _080A5EE4 + b _080A5EEE +_080A5ECA: + movs r4, #0x7d + ldr r0, _080A5ED8 @ =gUnk_02000080 + ldrb r0, [r0, #3] + cmp r8, r0 + beq _080A5EF0 + movs r4, #0x7e + b _080A5EF0 + .align 2, 0 +_080A5ED8: .4byte gUnk_02000080 +_080A5EDC: + movs r4, #0x80 + b _080A5EF0 +_080A5EE0: + movs r4, #0x81 + b _080A5EF0 +_080A5EE4: + bl sub_080A5F24 + movs r4, #0x7f + cmp r0, #0 + bne _080A5EF0 +_080A5EEE: + movs r4, #0xff +_080A5EF0: + ldrb r0, [r5, #1] + adds r0, #0x50 + ldrh r1, [r6, #0x16] + subs r0, r0, r1 + strh r0, [r7] + ldrb r0, [r5, #2] + adds r0, #0x10 + ldrh r1, [r6, #0x18] + subs r0, r0, r1 + strh r0, [r7, #2] + ldr r0, _080A5F20 @ =0x000001FB + adds r1, r4, #0 + bl sub_080ADA14 + adds r5, #3 + ldrb r0, [r5] + cmp r0, #0 + bne _080A5E88 +_080A5F14: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A5F20: .4byte 0x000001FB + + thumb_func_start sub_080A5F24 +sub_080A5F24: @ 0x080A5F24 + push {r4, lr} + movs r4, #1 + ldr r0, _080A5F44 @ =gUnk_02033A90 + ldrb r0, [r0, #3] + cmp r0, #6 + bne _080A5F40 + movs r0, #0x8c + lsls r0, r0, #4 + movs r1, #0x7b + bl GetProgressFlagWithOffset + cmp r0, #0 + beq _080A5F40 + movs r4, #0 +_080A5F40: + adds r0, r4, #0 + pop {r4, pc} + .align 2, 0 +_080A5F44: .4byte gUnk_02033A90 + + thumb_func_start sub_080A5F48 +sub_080A5F48: @ 0x080A5F48 + push {r4, r5, lr} + adds r4, r0, #0 + cmp r4, #0x1f + bhi _080A5F5C + cmp r4, #0x1c + blo _080A5F5C + ldr r0, _080A5F9C @ =gUnk_02002A40 + adds r0, r0, r4 + adds r0, #0x9a + ldrb r4, [r0] +_080A5F5C: + lsls r0, r1, #5 + ldr r1, _080A5FA0 @ =0x06010000 + adds r5, r0, r1 + ldr r1, _080A5FA4 @ =gUnk_080FDFD8 + lsls r0, r4, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrb r1, [r0] + ldr r3, _080A5FA8 @ =gUnk_08003DD4 + lsls r1, r1, #2 + ldr r0, [r3, #4] + adds r0, r0, r1 + ldr r2, _080A5FAC @ =0x040000D4 + ldrh r1, [r0, #2] + lsls r1, r1, #5 + ldr r0, [r3, #8] + adds r0, r0, r1 + str r0, [r2] + str r5, [r2, #4] + ldr r0, _080A5FB0 @ =0x84000040 + str r0, [r2, #8] + ldr r0, [r2, #8] + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, #7 + blo _080A5FBE + cmp r4, #8 + bhi _080A5FB4 + ldr r0, _080A5F9C @ =gUnk_02002A40 + adds r0, #0xac + b _080A5FBC + .align 2, 0 +_080A5F9C: .4byte gUnk_02002A40 +_080A5FA0: .4byte 0x06010000 +_080A5FA4: .4byte gUnk_080FDFD8 +_080A5FA8: .4byte gUnk_08003DD4 +_080A5FAC: .4byte 0x040000D4 +_080A5FB0: .4byte 0x84000040 +_080A5FB4: + cmp r4, #0xa + bhi _080A5FBE + ldr r0, _080A5FF8 @ =gUnk_02002A40 + adds r0, #0xad +_080A5FBC: + ldrb r0, [r0] +_080A5FBE: + cmp r0, #0 + blt _080A5FF6 + movs r1, #0xa + bl Div + adds r4, r1, #0 + cmp r0, #9 + ble _080A5FD0 + movs r0, #9 +_080A5FD0: + ldr r1, _080A5FFC @ =0x040000D4 + lsls r0, r0, #5 + ldr r2, _080A6000 @ =gUnk_085C4620 + adds r0, r0, r2 + str r0, [r1] + str r5, [r1, #4] + ldr r3, _080A6004 @ =0x84000008 + str r3, [r1, #8] + ldr r0, [r1, #8] + adds r0, r4, #0 + adds r0, #0xa + lsls r0, r0, #5 + adds r0, r0, r2 + str r0, [r1] + adds r0, r5, #0 + adds r0, #0x20 + str r0, [r1, #4] + str r3, [r1, #8] + ldr r0, [r1, #8] +_080A5FF6: + pop {r4, r5, pc} + .align 2, 0 +_080A5FF8: .4byte gUnk_02002A40 +_080A5FFC: .4byte 0x040000D4 +_080A6000: .4byte gUnk_085C4620 +_080A6004: .4byte 0x84000008 + + thumb_func_start sub_080A6008 +sub_080A6008: @ 0x080A6008 + push {lr} + ldr r1, _080A601C @ =gUnk_08128D58 + ldr r0, _080A6020 @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A601C: .4byte gUnk_08128D58 +_080A6020: .4byte gUnk_02000080 + + thumb_func_start sub_080A6024 +sub_080A6024: @ 0x080A6024 + push {lr} + ldr r0, _080A6040 @ =gUnk_08128D60 + bl sub_080A70AC + movs r0, #0 + bl sub_0801E738 + bl sub_080A4398 + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_080A6040: .4byte gUnk_08128D60 + + thumb_func_start sub_080A6044 +sub_080A6044: @ 0x080A6044 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + bl sub_080A51F4 + cmp r0, #0 + beq _080A60C2 + ldr r0, _080A60CC @ =gUnk_02000080 + ldr r1, _080A60D0 @ =gUnk_08128D51 + str r1, [r0, #0xc] + ldr r1, _080A60D4 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + movs r5, #0 + movs r4, #0 + ldr r0, _080A60D8 @ =gUnk_02002A40 + movs r2, #0x8c + lsls r2, r2, #1 + adds r3, r0, r2 + ldrb r2, [r3] + cmp r2, #0 + beq _080A60C2 + adds r6, r1, #0 + movs r1, #0 + mov sb, r1 + adds r7, r0, #0 + mov r8, r3 +_080A607E: + movs r1, #3 + ands r1, r5 + lsls r0, r1, #1 + adds r0, r0, r1 + lsls r0, r0, #4 + adds r0, #0x2b + strh r0, [r6] + lsrs r1, r5, #2 + lsls r0, r1, #3 + adds r0, r0, r1 + lsls r0, r0, #2 + adds r0, #0x34 + strh r0, [r6, #2] + ldr r3, _080A60DC @ =0x0000012B + adds r0, r7, r3 + adds r0, r4, r0 + ldrb r1, [r0] + ldr r0, _080A60CC @ =gUnk_02000080 + mov r3, sb + strb r3, [r0, #1] + adds r0, r2, #0 + bl sub_080A42E0 + adds r5, #1 + cmp r5, #0xa + bhi _080A60C2 + adds r4, #1 + cmp r4, #0x11 + bhi _080A60C2 + mov r1, r8 + adds r0, r4, r1 + ldrb r2, [r0] + cmp r2, #0 + bne _080A607E +_080A60C2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A60CC: .4byte gUnk_02000080 +_080A60D0: .4byte gUnk_08128D51 +_080A60D4: .4byte gUnk_03001010 +_080A60D8: .4byte gUnk_02002A40 +_080A60DC: .4byte 0x0000012B + + thumb_func_start sub_080A60E0 +sub_080A60E0: @ 0x080A60E0 + push {r4, lr} + ldr r1, _080A6100 @ =gUnk_08128DB0 + ldr r4, _080A6104 @ =gUnk_02000080 + ldrb r0, [r4, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A617C + ldrb r0, [r4, #3] + bl sub_080A7040 + pop {r4, pc} + .align 2, 0 +_080A6100: .4byte gUnk_08128DB0 +_080A6104: .4byte gUnk_02000080 + + thumb_func_start sub_080A6108 +sub_080A6108: @ 0x080A6108 + push {lr} + ldr r0, _080A6120 @ =gUnk_02000080 + ldr r1, _080A6124 @ =gUnk_08128DB8 + str r1, [r0, #0xc] + ldr r0, _080A6128 @ =gUnk_08128DBC + bl sub_080A70AC + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_080A6120: .4byte gUnk_02000080 +_080A6124: .4byte gUnk_08128DB8 +_080A6128: .4byte gUnk_08128DBC + + thumb_func_start sub_080A612C +sub_080A612C: @ 0x080A612C + push {lr} + bl sub_080A51F4 + cmp r0, #0 + beq _080A6178 + ldr r1, _080A614C @ =gUnk_02000080 + ldrb r2, [r1, #3] + ldr r0, _080A6150 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #0x10 + beq _080A6154 + cmp r0, #0x20 + bne _080A6156 + subs r2, #1 + b _080A6156 + .align 2, 0 +_080A614C: .4byte gUnk_02000080 +_080A6150: .4byte gUnk_03000FF0 +_080A6154: + adds r2, #1 +_080A6156: + adds r3, r2, #0 + adds r3, #8 + adds r0, r3, #0 + cmp r3, #0 + bge _080A6164 + adds r0, r2, #0 + adds r0, #0xf +_080A6164: + asrs r2, r0, #3 + lsls r0, r2, #3 + subs r2, r3, r0 + ldrb r0, [r1, #3] + cmp r0, r2 + beq _080A6178 + strb r2, [r1, #3] + movs r0, #0x69 + bl sub_080A3268 +_080A6178: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A617C +sub_080A617C: @ 0x080A617C + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + ldr r6, _080A6260 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r6, #4] + strh r0, [r6, #6] + movs r7, #0xc0 + lsls r7, r7, #4 + strh r7, [r6, #8] + movs r0, #0x2f + mov r8, r0 + mov r2, r8 + strh r2, [r6, #2] + ldr r4, _080A6264 @ =gUnk_02000080 + ldrb r1, [r4, #3] + lsls r0, r1, #3 + subs r0, r0, r1 + lsls r0, r0, #2 + subs r0, r0, r1 + adds r0, #0x1a + strh r0, [r6] + ldr r0, _080A6268 @ =gUnk_03001000 + ldrh r1, [r0, #0xc] + movs r0, #0x20 + ands r0, r1 + movs r1, #9 + cmp r0, #0 + beq _080A61B8 + movs r1, #8 +_080A61B8: + movs r5, #0xfe + lsls r5, r5, #1 + adds r0, r5, #0 + bl sub_080ADA14 + ldrb r0, [r4, #3] + lsls r0, r0, #3 + ldr r1, _080A626C @ =gUnk_08128D70 + adds r4, r0, r1 + ldrb r0, [r4] + bl sub_0807CA84 + cmp r0, #0 + beq _080A621C + strh r7, [r6, #8] + movs r0, #0xcc + strh r0, [r6] + movs r0, #0x88 + strh r0, [r6, #2] + adds r0, r5, #0 + movs r1, #0xb + bl sub_080ADA14 + movs r0, #0x30 + strh r0, [r6] + movs r0, #0x6c + strh r0, [r6, #2] + ldrb r0, [r4, #1] + lsls r0, r0, #0xc + movs r2, #0xd8 + lsls r2, r2, #4 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r6, #8] + ldrb r1, [r4, #2] + adds r0, r5, #0 + bl sub_080ADA14 + ldrb r0, [r4, #1] + lsls r0, r0, #0xc + orrs r0, r7 + strh r0, [r6, #8] + movs r0, #0x78 + strh r0, [r6] + movs r0, #0x68 + strh r0, [r6, #2] + adds r0, r5, #0 + movs r1, #0xc + bl sub_080ADA14 +_080A621C: + mov r0, r8 + strh r0, [r6, #2] + movs r5, #0 + adds r7, r6, #0 + movs r6, #0x18 +_080A6226: + lsls r1, r5, #3 + ldr r0, _080A626C @ =gUnk_08128D70 + adds r4, r1, r0 + ldrb r0, [r4] + bl sub_0807CA84 + cmp r0, #0 + beq _080A6250 + ldrb r0, [r4, #1] + lsls r0, r0, #0xc + movs r2, #0xc0 + lsls r2, r2, #4 + adds r1, r2, #0 + orrs r0, r1 + strh r0, [r7, #8] + strh r6, [r7] + movs r0, #0xfe + lsls r0, r0, #1 + movs r1, #0xa + bl sub_080ADA14 +_080A6250: + adds r6, #0x1b + adds r5, #1 + cmp r5, #7 + bls _080A6226 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A6260: .4byte gUnk_03001010 +_080A6264: .4byte gUnk_02000080 +_080A6268: .4byte gUnk_03001000 +_080A626C: .4byte gUnk_08128D70 + + thumb_func_start sub_080A6270 +sub_080A6270: @ 0x080A6270 + push {lr} + ldr r1, _080A6288 @ =gUnk_08128DCC + ldr r0, _080A628C @ =gUnk_02000080 + ldrb r0, [r0, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_080A6378 + pop {pc} + .align 2, 0 +_080A6288: .4byte gUnk_08128DCC +_080A628C: .4byte gUnk_02000080 + + thumb_func_start sub_080A6290 +sub_080A6290: @ 0x080A6290 + push {r4, lr} + ldr r0, _080A62C4 @ =gUnk_08128DD8 + bl sub_080A70AC + ldr r4, _080A62C8 @ =gUnk_02000080 + ldr r0, _080A62CC @ =gUnk_08128DD4 + str r0, [r4, #0xc] + movs r0, #0x81 + bl sub_0801D7EC + ldr r1, _080A62D0 @ =gUnk_03000F50 + ldr r0, _080A62D4 @ =0x0000FFFC + strh r0, [r1, #0x18] + strh r0, [r1, #0x24] + ldr r2, _080A62D8 @ =gUnk_02002A40 + ldr r0, [r2, #0x40] + ldr r1, _080A62DC @ =0x00010780 + orrs r0, r1 + str r0, [r2, #0x40] + bl sub_080A6F40 + strh r0, [r4, #0x10] + movs r0, #1 + strb r0, [r4, #5] + pop {r4, pc} + .align 2, 0 +_080A62C4: .4byte gUnk_08128DD8 +_080A62C8: .4byte gUnk_02000080 +_080A62CC: .4byte gUnk_08128DD4 +_080A62D0: .4byte gUnk_03000F50 +_080A62D4: .4byte 0x0000FFFC +_080A62D8: .4byte gUnk_02002A40 +_080A62DC: .4byte 0x00010780 + + thumb_func_start sub_080A62E0 +sub_080A62E0: @ 0x080A62E0 + push {r4, lr} + bl sub_080A51F4 + cmp r0, #0 + beq _080A6372 + ldr r0, _080A6310 @ =gUnk_02000080 + ldrb r3, [r0, #3] + lsls r1, r3, #3 + ldr r0, _080A6314 @ =gUnk_08128DE8 + adds r1, r1, r0 + movs r4, #1 + rsbs r4, r4, #0 + ldr r0, _080A6318 @ =gUnk_03000FF0 + ldrh r2, [r0, #2] + cmp r2, #0x20 + beq _080A634E + cmp r2, #0x20 + bgt _080A631C + cmp r2, #1 + beq _080A6326 + cmp r2, #0x10 + beq _080A6354 + b _080A635A + .align 2, 0 +_080A6310: .4byte gUnk_02000080 +_080A6314: .4byte gUnk_08128DE8 +_080A6318: .4byte gUnk_03000FF0 +_080A631C: + cmp r2, #0x40 + beq _080A6344 + cmp r2, #0x80 + beq _080A634A + b _080A635A +_080A6326: + ldr r0, _080A6340 @ =gUnk_02002A40 + lsls r2, r3 + ldr r0, [r0, #0x40] + ands r0, r2 + cmp r0, #0 + beq _080A635A + movs r0, #0x6a + bl sub_080A3268 + movs r0, #6 + bl sub_080A4E84 + b _080A635A + .align 2, 0 +_080A6340: .4byte gUnk_02002A40 +_080A6344: + ldrb r0, [r1] + lsls r0, r0, #0x1b + b _080A6358 +_080A634A: + ldrh r0, [r1] + b _080A6356 +_080A634E: + ldrb r0, [r1, #2] + lsls r0, r0, #0x1b + b _080A6358 +_080A6354: + ldrh r0, [r1, #2] +_080A6356: + lsls r0, r0, #0x16 +_080A6358: + lsrs r4, r0, #0x1b +_080A635A: + cmp r4, #0 + blt _080A6368 + ldr r0, _080A6374 @ =gUnk_02000080 + strb r4, [r0, #3] + movs r0, #0x69 + bl sub_080A3268 +_080A6368: + ldr r0, _080A6374 @ =gUnk_02000080 + ldrb r0, [r0, #3] + movs r1, #0 + bl sub_080A6FB4 +_080A6372: + pop {r4, pc} + .align 2, 0 +_080A6374: .4byte gUnk_02000080 + + thumb_func_start sub_080A6378 +sub_080A6378: @ 0x080A6378 + push {r4, r5, r6, lr} + ldr r0, _080A6420 @ =gUnk_02000080 + adds r4, r0, #0 + adds r4, #0x2c + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + movs r6, #0x20 + ands r0, r6 + cmp r0, #0 + beq _080A6392 + bl sub_080A6438 +_080A6392: + ldr r5, _080A6424 @ =gUnk_03001010 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r5, #4] + movs r0, #0 + strh r0, [r5, #6] + movs r0, #0xe0 + lsls r0, r0, #7 + strh r0, [r5, #8] + ldrb r1, [r4] + adds r0, r6, #0 + ands r0, r1 + cmp r0, #0 + bne _080A63EA + ldr r4, _080A6428 @ =gUnk_030010A0 + ldrh r1, [r4, #0x20] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #5 + movs r1, #0xf9 + lsls r1, r1, #4 + bl __divsi3 + adds r0, #0x28 + strh r0, [r5] + ldrh r0, [r4, #0x22] + lsls r0, r0, #7 + movs r1, #0xc6 + lsls r1, r1, #4 + bl __divsi3 + adds r0, #0xc + strh r0, [r5, #2] + ldr r0, _080A642C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + movs r1, #0x59 + cmp r0, #0 + beq _080A63E4 + movs r1, #0x5a +_080A63E4: + ldr r0, _080A6430 @ =0x000001FB + bl sub_080ADA14 +_080A63EA: + ldr r3, _080A6420 @ =gUnk_02000080 + ldrb r0, [r3, #3] + lsls r0, r0, #3 + ldr r1, _080A6434 @ =gUnk_08128DE8 + adds r0, r0, r1 + ldr r2, _080A6424 @ =gUnk_03001010 + ldrb r1, [r0, #6] + strh r1, [r2] + ldrb r0, [r0, #7] + strh r0, [r2, #2] + ldrb r0, [r3, #3] + lsls r2, r0, #1 + adds r2, r2, r0 + adds r2, #0x26 + adds r3, #0x2c + ldrb r1, [r3] + lsrs r1, r1, #4 + movs r0, #1 + bics r0, r1 + adds r1, r2, r0 + ldr r0, _080A6430 @ =0x000001FB + bl sub_080ADA14 + bl sub_080A6498 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A6420: .4byte gUnk_02000080 +_080A6424: .4byte gUnk_03001010 +_080A6428: .4byte gUnk_030010A0 +_080A642C: .4byte gUnk_03003F80 +_080A6430: .4byte 0x000001FB +_080A6434: .4byte gUnk_08128DE8 + + thumb_func_start sub_080A6438 +sub_080A6438: @ 0x080A6438 + push {r4, r5, r6, r7, lr} + ldr r2, _080A6484 @ =gUnk_03001010 + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r2, #4] + strh r1, [r2, #6] + strh r1, [r2, #8] + ldr r0, _080A6488 @ =gUnk_02002A40 + ldr r1, _080A648C @ =gUnk_02000080 + ldrh r0, [r0, #0x20] + ldrh r5, [r1, #0x10] + ands r5, r0 + ldr r4, _080A6490 @ =gUnk_08128F58 + movs r6, #0 + ldrb r0, [r4] + cmp r0, #0 + beq _080A6482 + adds r7, r2, #0 +_080A645E: + movs r0, #1 + lsls r0, r6 + ands r0, r5 + cmp r0, #0 + beq _080A6478 + ldrb r0, [r4, #1] + strh r0, [r7] + ldrb r0, [r4, #2] + strh r0, [r7, #2] + ldrb r1, [r4] + ldr r0, _080A6494 @ =0x000001FB + bl sub_080ADA14 +_080A6478: + adds r6, #1 + adds r4, #8 + ldrb r0, [r4] + cmp r0, #0 + bne _080A645E +_080A6482: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A6484: .4byte gUnk_03001010 +_080A6488: .4byte gUnk_02002A40 +_080A648C: .4byte gUnk_02000080 +_080A6490: .4byte gUnk_08128F58 +_080A6494: .4byte 0x000001FB + + thumb_func_start sub_080A6498 +sub_080A6498: @ 0x080A6498 + push {r4, r5, r6, r7, lr} + ldr r0, _080A64E4 @ =gUnk_03001010 + movs r2, #0 + movs r1, #0x80 + lsls r1, r1, #4 + strh r1, [r0, #4] + strh r2, [r0, #6] + strh r2, [r0, #8] + movs r4, #0 + ldr r7, _080A64E8 @ =gUnk_02002A40 + adds r6, r0, #0 + movs r5, #0x28 +_080A64B0: + movs r1, #1 + lsls r1, r4 + ldr r0, [r7, #0x40] + ands r0, r1 + cmp r0, #0 + bne _080A64D2 + lsls r1, r4, #3 + ldr r0, _080A64EC @ =gUnk_08128DE8 + adds r1, r1, r0 + ldrb r0, [r1, #6] + strh r0, [r6] + ldrb r0, [r1, #7] + strh r0, [r6, #2] + ldr r0, _080A64F0 @ =0x000001FB + adds r1, r5, #0 + bl sub_080ADA14 +_080A64D2: + adds r5, #3 + adds r4, #1 + cmp r4, #0x10 + bls _080A64B0 + ldr r0, _080A64F4 @ =gUnk_03000F50 + adds r0, #0x62 + ldr r1, _080A64F8 @ =0x00003D3F + strh r1, [r0] + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A64E4: .4byte gUnk_03001010 +_080A64E8: .4byte gUnk_02002A40 +_080A64EC: .4byte gUnk_08128DE8 +_080A64F0: .4byte 0x000001FB +_080A64F4: .4byte gUnk_03000F50 +_080A64F8: .4byte 0x00003D3F + + thumb_func_start sub_080A64FC +sub_080A64FC: @ 0x080A64FC + push {r4, lr} + bl sub_080AD90C + ldr r1, _080A652C @ =gUnk_08128E70 + ldr r4, _080A6530 @ =gUnk_02000080 + ldrb r0, [r4, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + adds r4, #0x2c + ldrb r1, [r4] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080A6522 + bl sub_080A6438 +_080A6522: + bl sub_080A6498 + bl sub_080AD918 + pop {r4, pc} + .align 2, 0 +_080A652C: .4byte gUnk_08128E70 +_080A6530: .4byte gUnk_02000080 + + thumb_func_start sub_080A6534 +sub_080A6534: @ 0x080A6534 + push {r4, lr} + bl sub_080A4D34 + movs r0, #4 + bl sub_080A4DB8 + bl sub_080A6290 + ldr r2, _080A6590 @ =gUnk_03000F50 + ldrh r1, [r2] + ldr r0, _080A6594 @ =0x0000F7FF + ands r0, r1 + movs r4, #0 + strh r0, [r2] + ldr r0, _080A6598 @ =gUnk_020176A0 + adds r0, #0xa2 + ldrh r1, [r0] + movs r0, #0 + bl sub_0801D79C + ldr r1, _080A659C @ =gUnk_08128F4C + ldr r0, _080A65A0 @ =gUnk_02032EC0 + ldrb r0, [r0, #3] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r2, [r0] + ldr r3, _080A65A4 @ =gUnk_02002A40 + ldrh r1, [r3, #0x20] + adds r0, r2, #0 + orrs r0, r1 + strh r0, [r3, #0x20] + ldr r1, _080A65A8 @ =gUnk_02000080 + ldrh r0, [r1, #0x10] + ands r2, r0 + strh r2, [r1, #0x12] + strh r4, [r1, #0x10] + movs r0, #0x3c + strh r0, [r1, #8] + movs r0, #1 + bl sub_080A7114 + movs r0, #4 + movs r1, #8 + bl sub_08050054 + pop {r4, pc} + .align 2, 0 +_080A6590: .4byte gUnk_03000F50 +_080A6594: .4byte 0x0000F7FF +_080A6598: .4byte gUnk_020176A0 +_080A659C: .4byte gUnk_08128F4C +_080A65A0: .4byte gUnk_02032EC0 +_080A65A4: .4byte gUnk_02002A40 +_080A65A8: .4byte gUnk_02000080 + + thumb_func_start sub_080A65AC +sub_080A65AC: @ 0x080A65AC + push {r4, lr} + ldr r0, _080A65E4 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A6600 + ldr r4, _080A65E8 @ =gUnk_02000080 + adds r1, r4, #0 + adds r1, #0x2c + ldrb r0, [r1] + adds r0, #1 + strb r0, [r1] + ldrh r0, [r4, #8] + cmp r0, #0 + beq _080A65EC + cmp r0, #0x1e + bne _080A65DA + ldrh r0, [r4, #0x12] + strh r0, [r4, #0x10] + movs r0, #0x20 + strb r0, [r1] + adds r0, #0xe3 + bl sub_080A3268 +_080A65DA: + ldrh r0, [r4, #8] + subs r0, #1 + strh r0, [r4, #8] + b _080A6600 + .align 2, 0 +_080A65E4: .4byte gUnk_03000FD0 +_080A65E8: .4byte gUnk_02000080 +_080A65EC: + ldr r0, _080A6604 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #1 + blt _080A6600 + cmp r0, #2 + ble _080A65FC + cmp r0, #8 + bne _080A6600 +_080A65FC: + bl sub_080A71DC +_080A6600: + pop {r4, pc} + .align 2, 0 +_080A6604: .4byte gUnk_03000FF0 + + thumb_func_start sub_080A6608 +sub_080A6608: @ 0x080A6608 + push {r4, lr} + ldr r1, _080A6640 @ =gUnk_08128E78 + ldr r4, _080A6644 @ =gUnk_02000080 + ldrb r0, [r4, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldrb r1, [r4, #3] + lsls r1, r1, #3 + ldr r0, _080A6648 @ =gUnk_08128E94 + adds r1, r1, r0 + ldr r2, _080A664C @ =gUnk_03000F50 + movs r0, #5 + ldrsb r0, [r1, r0] + rsbs r0, r0, #0 + strh r0, [r2, #0x18] + ldrb r1, [r1, #6] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0xa] + subs r0, r0, r1 + strh r0, [r2, #0x24] + bl sub_080A66D0 + pop {r4, pc} + .align 2, 0 +_080A6640: .4byte gUnk_08128E78 +_080A6644: .4byte gUnk_02000080 +_080A6648: .4byte gUnk_08128E94 +_080A664C: .4byte gUnk_03000F50 + + thumb_func_start sub_080A6650 +sub_080A6650: @ 0x080A6650 + push {lr} + ldr r0, _080A6670 @ =gUnk_08128E84 + bl sub_080A70AC + ldr r0, _080A6674 @ =gUnk_02034490 + ldrb r0, [r0, #6] + ldr r1, _080A6678 @ =gUnk_02000080 + strb r0, [r1, #3] + bl sub_080A67C4 + bl sub_080A68D4 + movs r0, #1 + bl sub_080A7114 + pop {pc} + .align 2, 0 +_080A6670: .4byte gUnk_08128E84 +_080A6674: .4byte gUnk_02034490 +_080A6678: .4byte gUnk_02000080 + + thumb_func_start sub_080A667C +sub_080A667C: @ 0x080A667C + push {lr} + ldr r2, _080A669C @ =gUnk_02000080 + ldr r0, _080A66A0 @ =gUnk_08128E80 + str r0, [r2, #0xc] + ldrb r0, [r2, #3] + lsls r0, r0, #3 + ldr r1, _080A66A4 @ =gUnk_08128E94 + adds r3, r0, r1 + ldrh r1, [r2, #0xa] + ldr r0, _080A66A8 @ =gUnk_03000FF0 + ldrh r0, [r0] + cmp r0, #0x40 + beq _080A66AC + cmp r0, #0x80 + beq _080A66B4 + b _080A66C2 + .align 2, 0 +_080A669C: .4byte gUnk_02000080 +_080A66A0: .4byte gUnk_08128E80 +_080A66A4: .4byte gUnk_08128E94 +_080A66A8: .4byte gUnk_03000FF0 +_080A66AC: + cmp r1, #0 + beq _080A66C2 + subs r1, #2 + b _080A66C2 +_080A66B4: + ldrb r0, [r3, #2] + cmp r0, r1 + bls _080A66BC + adds r1, #2 +_080A66BC: + cmp r0, r1 + bhs _080A66C2 + adds r1, r0, #0 +_080A66C2: + strh r1, [r2, #0xa] + ldrb r0, [r2, #3] + movs r1, #0 + bl sub_080A6FB4 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A66D0 +sub_080A66D0: @ 0x080A66D0 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + ldr r6, _080A677C @ =gUnk_03001010 + movs r0, #0 + strh r0, [r6, #4] + strh r0, [r6, #6] + movs r0, #0x78 + strh r0, [r6] + ldr r4, _080A6780 @ =gUnk_02000080 + ldrb r0, [r4, #3] + lsls r0, r0, #3 + ldr r1, _080A6784 @ =gUnk_08128E94 + adds r5, r0, r1 + adds r1, r4, #0 + adds r1, #0x2c + ldrb r0, [r1] + adds r2, r0, #1 + strb r2, [r1] + adds r0, r4, #0 + adds r0, #0x2b + ldrb r0, [r0] + cmp r0, #1 + beq _080A6738 + movs r0, #0x10 + ands r2, r0 + cmp r2, #0 + beq _080A6738 + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r6, #8] + ldrh r0, [r4, #0xa] + cmp r0, #0 + beq _080A6724 + movs r0, #0xc + strh r0, [r6, #2] + ldr r0, _080A6788 @ =0x000001FB + movs r1, #0x71 + bl sub_080ADA14 +_080A6724: + ldrb r0, [r5, #2] + ldrh r4, [r4, #0xa] + cmp r0, r4 + bls _080A6738 + movs r0, #0x84 + strh r0, [r6, #2] + ldr r0, _080A6788 @ =0x000001FB + movs r1, #0x72 + bl sub_080ADA14 +_080A6738: + ldrb r0, [r5, #7] + mov sl, r0 + ldrb r5, [r5, #3] + mov sb, r5 + ldr r1, _080A6780 @ =gUnk_02000080 + ldrh r0, [r1, #0xa] + mov r8, r0 + ldr r2, _080A677C @ =gUnk_03001010 + movs r0, #0 + strh r0, [r2, #4] + strh r0, [r2, #6] + movs r0, #0xc0 + lsls r0, r0, #4 + strh r0, [r2, #8] + adds r1, #0x2c + ldrb r1, [r1] + movs r0, #0x20 + ands r0, r1 + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + ldr r4, _080A678C @ =gUnk_02019EE0 + ldrh r0, [r4, #2] + cmp r0, #0 + beq _080A67BA + rsbs r5, r6, #0 + orrs r5, r6 + adds r7, r2, #0 +_080A676E: + movs r1, #0 + ldrb r0, [r4] + cmp r0, #1 + bne _080A6790 + lsrs r1, r5, #0x1f + b _080A6796 + .align 2, 0 +_080A677C: .4byte gUnk_03001010 +_080A6780: .4byte gUnk_02000080 +_080A6784: .4byte gUnk_08128E94 +_080A6788: .4byte 0x000001FB +_080A678C: .4byte gUnk_02019EE0 +_080A6790: + cmp r6, #0 + bne _080A6796 + movs r1, #1 +_080A6796: + cmp r1, #0 + beq _080A67B2 + ldrh r0, [r4, #4] + add r0, sl + strh r0, [r7] + ldrh r0, [r4, #6] + add r0, sb + mov r1, r8 + subs r0, r0, r1 + strh r0, [r7, #2] + ldrh r0, [r4, #2] + ldrb r1, [r4, #1] + bl sub_080ADA14 +_080A67B2: + adds r4, #8 + ldrh r0, [r4, #2] + cmp r0, #0 + bne _080A676E +_080A67BA: + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080A67C4 +sub_080A67C4: @ 0x080A67C4 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + adds r0, #0xba + bl sub_0801D714 + adds r5, r4, #0 + adds r5, #0x5f + cmp r4, #0xb + beq _080A67F4 + cmp r4, #0xb + bhi _080A67E0 + cmp r4, #9 + beq _080A67E6 + b _080A6822 +_080A67E0: + cmp r4, #0xe + beq _080A6802 + b _080A6822 +_080A67E6: + movs r0, #0x18 + bl GetProgressFlag + cmp r0, #0 + beq _080A6822 + movs r5, #0x70 + b _080A6822 +_080A67F4: + movs r0, #0xe + bl sub_0801E7F4 + cmp r0, #0 + beq _080A6822 + movs r5, #0x71 + b _080A6822 +_080A6802: + ldr r1, _080A68AC @ =gUnk_02032EC0 + adds r0, r1, #0 + adds r0, #0x20 + ldrb r0, [r0] + cmp r0, #8 + bne _080A6822 + adds r0, r1, #0 + adds r0, #0x21 + ldrb r0, [r0] + movs r1, #3 + bl __modsi3 + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + adds r5, r0, #0 + adds r5, #0x72 +_080A6822: + adds r0, r5, #0 + bl sub_0801D7EC + lsls r1, r4, #3 + ldr r0, _080A68B0 @ =gUnk_08128E94 + adds r4, r1, r0 + ldr r0, _080A68B4 @ =gUnk_03003DE4 + ldrb r1, [r0] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + ldr r1, _080A68B8 @ =gUnk_02017AA0 + adds r1, r0, r1 + ldr r2, _080A68BC @ =0x00001E0A + adds r0, r2, #0 + movs r2, #7 +_080A6842: + strh r0, [r1] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _080A6842 + movs r2, #8 + movs r0, #5 + ldrsb r0, [r4, r0] + ldrb r3, [r4, #4] + adds r0, r0, r3 + ldr r5, _080A68B4 @ =gUnk_03003DE4 + ldr r6, _080A68B8 @ =gUnk_02017AA0 + cmp r2, r0 + bge _080A6874 + ldr r7, _080A68C0 @ =0x00001E0B + adds r3, r7, #0 +_080A6862: + strh r3, [r1] + adds r1, #2 + adds r2, #1 + movs r0, #5 + ldrsb r0, [r4, r0] + ldrb r7, [r4, #4] + adds r0, r0, r7 + cmp r2, r0 + blt _080A6862 +_080A6874: + cmp r2, #0x9f + bgt _080A6886 + ldr r3, _080A68BC @ =0x00001E0A + adds r0, r3, #0 +_080A687C: + strh r0, [r1] + adds r1, #2 + adds r2, #1 + cmp r2, #0x9f + ble _080A687C +_080A6886: + ldrb r1, [r5] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #9 + adds r0, r0, r6 + ldr r1, _080A68C4 @ =0x0400000E + ldr r2, _080A68C8 @ =0xA2600001 + bl sub_0805622C + ldr r1, _080A68CC @ =gUnk_02000080 + ldrb r0, [r4, #2] + lsrs r0, r0, #1 + strh r0, [r1, #0xa] + ldr r0, _080A68D0 @ =gUnk_02019EE0 + movs r1, #0x80 + lsls r1, r1, #3 + bl sub_0801D630 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A68AC: .4byte gUnk_02032EC0 +_080A68B0: .4byte gUnk_08128E94 +_080A68B4: .4byte gUnk_03003DE4 +_080A68B8: .4byte gUnk_02017AA0 +_080A68BC: .4byte 0x00001E0A +_080A68C0: .4byte 0x00001E0B +_080A68C4: .4byte 0x0400000E +_080A68C8: .4byte 0xA2600001 +_080A68CC: .4byte gUnk_02000080 +_080A68D0: .4byte gUnk_02019EE0 + + thumb_func_start sub_080A68D4 +sub_080A68D4: @ 0x080A68D4 + push {r4, r5, r6, lr} + ldr r0, _080A690C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + movs r4, #0x64 + cmp r0, #0 + beq _080A68E6 + movs r4, #0x65 +_080A68E6: + ldr r1, _080A6910 @ =gUnk_030010A0 + ldrh r0, [r1, #0x20] + ldrh r1, [r1, #0x22] + ldr r2, _080A6914 @ =0x000001FB + movs r3, #0x80 + lsls r3, r3, #1 + adds r3, r4, r3 + bl sub_080A698C + bl sub_080A6F40 + adds r6, r0, #0 + ldr r0, _080A6918 @ =gUnk_02002A40 + ldrh r0, [r0, #0x20] + ands r6, r0 + ldr r4, _080A691C @ =gUnk_08128F58 + movs r5, #0 + b _080A693A + .align 2, 0 +_080A690C: .4byte gUnk_03003F80 +_080A6910: .4byte gUnk_030010A0 +_080A6914: .4byte 0x000001FB +_080A6918: .4byte gUnk_02002A40 +_080A691C: .4byte gUnk_08128F58 +_080A6920: + movs r0, #1 + lsls r0, r5 + ands r0, r6 + cmp r0, #0 + beq _080A6936 + ldrh r0, [r4, #4] + ldrh r1, [r4, #6] + ldrb r3, [r4, #3] + ldr r2, _080A6980 @ =0x000001FB + bl sub_080A698C +_080A6936: + adds r5, #1 + adds r4, #8 +_080A693A: + ldrb r0, [r4] + cmp r0, #0 + bne _080A6920 + movs r5, #0xa +_080A6942: + adds r0, r5, #0 + bl sub_0801E7F4 + cmp r0, #0 + beq _080A6976 + adds r0, r5, #0 + bl sub_0801E810 + cmp r0, #0 + bne _080A6976 + ldr r1, _080A6984 @ =gUnk_080C9CBC + lsls r0, r5, #3 + adds r0, r0, r1 + ldrb r3, [r0, #7] + ldrb r0, [r0, #4] + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080A6988 @ =gUnk_080FE320 + adds r1, r1, r0 + ldrh r0, [r1, #0xc] + ldrh r1, [r1, #0xe] + adds r3, #0x64 + ldr r2, _080A6980 @ =0x000001FB + bl sub_080A698C +_080A6976: + adds r5, #1 + cmp r5, #0x64 + bls _080A6942 + pop {r4, r5, r6, pc} + .align 2, 0 +_080A6980: .4byte 0x000001FB +_080A6984: .4byte gUnk_080C9CBC +_080A6988: .4byte gUnk_080FE320 + + thumb_func_start sub_080A698C +sub_080A698C: @ 0x080A698C + push {r4, r5, r6, lr} + adds r6, r2, #0 + adds r5, r3, #0 + bl sub_080A69E0 + adds r4, r0, #0 + cmp r4, #0 + ble _080A69D4 + ldr r2, _080A69D8 @ =gUnk_02000080 + adds r2, #0x2d + ldrb r0, [r2] + lsls r0, r0, #3 + ldr r3, _080A69DC @ =gUnk_02019EE0 + adds r0, r0, r3 + lsrs r1, r5, #8 + strb r1, [r0] + ldrb r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r3 + strb r5, [r0, #1] + ldrb r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r3 + strh r6, [r0, #2] + ldrb r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r3 + strh r4, [r0, #4] + ldrb r0, [r2] + lsls r0, r0, #3 + adds r0, r0, r3 + asrs r1, r4, #0x10 + strh r1, [r0, #6] + ldrb r0, [r2] + adds r0, #1 + strb r0, [r2] +_080A69D4: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A69D8: .4byte gUnk_02000080 +_080A69DC: .4byte gUnk_02019EE0 + + thumb_func_start sub_080A69E0 +sub_080A69E0: @ 0x080A69E0 + push {r4, r5, r6, r7, lr} + sub sp, #4 + adds r7, r0, #0 + adds r6, r1, #0 + orrs r0, r6 + cmp r0, #0 + beq _080A6A06 + adds r0, r7, #0 + adds r1, r6, #0 + bl sub_080A6A80 + adds r3, r0, #0 + cmp r3, #0 + beq _080A6A06 + ldr r0, _080A6A0C @ =gUnk_02000080 + ldrb r1, [r0, #3] + ldrb r2, [r3, #4] + cmp r1, r2 + beq _080A6A10 +_080A6A06: + movs r0, #1 + rsbs r0, r0, #0 + b _080A6A74 + .align 2, 0 +_080A6A0C: .4byte gUnk_02000080 +_080A6A10: + ldrb r1, [r0, #3] + cmp r1, #7 + beq _080A6A26 + cmp r1, #7 + bgt _080A6A20 + cmp r1, #4 + beq _080A6A26 + b _080A6A48 +_080A6A20: + cmp r1, #0xf + beq _080A6A44 + b _080A6A48 +_080A6A26: + ldrb r0, [r0, #3] + movs r2, #7 + cmp r0, #4 + bne _080A6A30 + movs r2, #9 +_080A6A30: + ldr r1, _080A6A40 @ =gUnk_0811E214 + lsls r0, r2, #2 + adds r0, r0, r1 + ldr r0, [r0] + ldrh r0, [r0, #2] + subs r6, r6, r0 + b _080A6A48 + .align 2, 0 +_080A6A40: .4byte gUnk_0811E214 +_080A6A44: + ldr r0, _080A6A78 @ =0xFFFFFEF8 + adds r7, r7, r0 +_080A6A48: + ldrb r0, [r3] + lsls r0, r0, #4 + subs r0, r7, r0 + movs r4, #0x64 + muls r0, r4, r0 + ldr r5, _080A6A7C @ =0x0000023A + adds r1, r5, #0 + str r3, [sp] + bl __divsi3 + adds r7, r0, #0 + ldr r3, [sp] + ldrb r0, [r3, #1] + lsls r0, r0, #4 + subs r0, r6, r0 + muls r0, r4, r0 + adds r1, r5, #0 + bl __divsi3 + adds r6, r0, #0 + lsls r0, r6, #0x10 + orrs r0, r7 +_080A6A74: + add sp, #4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A6A78: .4byte 0xFFFFFEF8 +_080A6A7C: .4byte 0x0000023A + + thumb_func_start sub_080A6A80 +sub_080A6A80: @ 0x080A6A80 + push {lr} + adds r3, r0, #0 + lsrs r3, r3, #4 + lsrs r1, r1, #4 + ldr r2, _080A6A8C @ =gUnk_08127F94 + b _080A6AAE + .align 2, 0 +_080A6A8C: .4byte gUnk_08127F94 +_080A6A90: + ldrb r0, [r2] + cmp r0, r3 + bhi _080A6AAC + ldrb r0, [r2, #2] + cmp r0, r3 + blo _080A6AAC + ldrb r0, [r2, #1] + cmp r0, r1 + bhi _080A6AAC + ldrb r0, [r2, #3] + cmp r0, r1 + blo _080A6AAC + adds r0, r2, #0 + b _080A6AB6 +_080A6AAC: + adds r2, #8 +_080A6AAE: + ldrb r0, [r2] + cmp r0, #0xff + bne _080A6A90 + movs r0, #0 +_080A6AB6: + pop {pc} + + thumb_func_start sub_080A6AB8 +sub_080A6AB8: @ 0x080A6AB8 + push {r4, lr} + bl sub_080AD90C + ldr r1, _080A6AF4 @ =gUnk_08128F1C + ldr r4, _080A6AF8 @ =gUnk_02000080 + ldrb r0, [r4, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldrb r1, [r4, #3] + lsls r1, r1, #3 + ldr r0, _080A6AFC @ =gUnk_08128E94 + adds r1, r1, r0 + ldr r2, _080A6B00 @ =gUnk_03000F50 + movs r0, #5 + ldrsb r0, [r1, r0] + rsbs r0, r0, #0 + strh r0, [r2, #0x18] + ldrb r1, [r1, #6] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + ldrh r0, [r4, #0xa] + subs r0, r0, r1 + strh r0, [r2, #0x24] + bl sub_080AD918 + pop {r4, pc} + .align 2, 0 +_080A6AF4: .4byte gUnk_08128F1C +_080A6AF8: .4byte gUnk_02000080 +_080A6AFC: .4byte gUnk_08128E94 +_080A6B00: .4byte gUnk_03000F50 + + thumb_func_start sub_080A6B04 +sub_080A6B04: @ 0x080A6B04 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + bl sub_080A4D34 + movs r0, #6 + bl sub_080A4DB8 + ldr r0, _080A6BF0 @ =gUnk_02022740 + ldrb r2, [r0, #3] + lsls r2, r2, #3 + ldr r0, _080A6BF4 @ =gUnk_080C9CBC + adds r2, r2, r0 + ldrb r1, [r2, #4] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A6BF8 @ =gUnk_080FE320 + adds r0, r0, r1 + ldrb r2, [r2, #7] + mov r8, r2 + ldrh r6, [r0, #0xc] + ldrh r5, [r0, #0xe] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080A6A80 + ldrb r4, [r0, #4] + ldr r7, _080A6BFC @ =gUnk_02000080 + strb r4, [r7, #3] + adds r1, r7, #0 + adds r1, #0x2b + movs r0, #1 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080A67C4 + adds r0, r4, #0 + movs r1, #2 + bl sub_080A6FB4 + ldr r4, _080A6C00 @ =0x0000475F + movs r0, #0 + adds r1, r4, #0 + bl sub_0801D79C + movs r0, #0x5f + adds r1, r4, #0 + bl sub_0801D79C + ldr r0, _080A6C04 @ =0x00005001 + ldr r1, _080A6C08 @ =gUnk_02001A40 + movs r2, #0x80 + lsls r2, r2, #5 + bl sub_0801D5EC + ldr r0, _080A6C0C @ =gUnk_03003F80 + ldr r0, [r0, #0x30] + movs r1, #8 + ands r0, r1 + movs r2, #0x64 + cmp r0, #0 + beq _080A6B84 + movs r2, #0x65 +_080A6B84: + ldr r1, _080A6C10 @ =gUnk_030010A0 + ldrh r0, [r1, #0x20] + ldrh r1, [r1, #0x22] + ldr r4, _080A6C14 @ =0x000001FB + movs r3, #0x80 + lsls r3, r3, #1 + adds r3, r2, r3 + adds r2, r4, #0 + bl sub_080A698C + mov r3, r8 + adds r3, #0x64 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r4, #0 + bl sub_080A698C + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080A69E0 + asrs r5, r0, #0x10 + ldrb r0, [r7, #3] + lsls r0, r0, #3 + ldr r1, _080A6C18 @ =gUnk_08128E94 + adds r1, r0, r1 + movs r0, #0 + strh r0, [r7, #0xa] + ldrb r0, [r1, #2] + cmp r0, #0 + beq _080A6BD4 + adds r0, r5, #0 + subs r0, #0x3c + cmp r0, #0 + ble _080A6BD4 + ldrb r1, [r1, #2] + cmp r1, r0 + bge _080A6BD2 + adds r0, r1, #0 +_080A6BD2: + strh r0, [r7, #0xa] +_080A6BD4: + ldr r1, _080A6BFC @ =gUnk_02000080 + movs r0, #0x1e + strh r0, [r1, #8] + movs r0, #1 + bl sub_080A7114 + movs r0, #4 + movs r1, #8 + bl sub_08050054 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A6BF0: .4byte gUnk_02022740 +_080A6BF4: .4byte gUnk_080C9CBC +_080A6BF8: .4byte gUnk_080FE320 +_080A6BFC: .4byte gUnk_02000080 +_080A6C00: .4byte 0x0000475F +_080A6C04: .4byte 0x00005001 +_080A6C08: .4byte gUnk_02001A40 +_080A6C0C: .4byte gUnk_03003F80 +_080A6C10: .4byte gUnk_030010A0 +_080A6C14: .4byte 0x000001FB +_080A6C18: .4byte gUnk_08128E94 + + thumb_func_start sub_080A6C1C +sub_080A6C1C: @ 0x080A6C1C + push {lr} + ldr r0, _080A6C34 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A6C6A + ldr r0, _080A6C38 @ =gUnk_02000080 + ldrh r0, [r0, #8] + cmp r0, #0 + beq _080A6C3C + cmp r0, #1 + beq _080A6C5C + b _080A6C62 + .align 2, 0 +_080A6C34: .4byte gUnk_03000FD0 +_080A6C38: .4byte gUnk_02000080 +_080A6C3C: + bl sub_080A66D0 + ldr r0, _080A6C58 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + cmp r0, #1 + blt _080A6C6A + cmp r0, #2 + ble _080A6C50 + cmp r0, #8 + bne _080A6C6A +_080A6C50: + bl sub_080A71DC + b _080A6C6A + .align 2, 0 +_080A6C58: .4byte gUnk_03000FF0 +_080A6C5C: + ldr r0, _080A6C6C @ =0x00000103 + bl sub_080A3268 +_080A6C62: + ldr r1, _080A6C70 @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] +_080A6C6A: + pop {pc} + .align 2, 0 +_080A6C6C: .4byte 0x00000103 +_080A6C70: .4byte gUnk_02000080 + + thumb_func_start sub_080A6C74 +sub_080A6C74: @ 0x080A6C74 + push {r4, lr} + bl sub_080AD90C + ldr r1, _080A6CA0 @ =gUnk_08128F24 + ldr r4, _080A6CA4 @ =gUnk_02000080 + ldrb r0, [r4, #5] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + ldrb r0, [r4] + cmp r0, #0 + beq _080A6C94 + bl sub_080A6E70 +_080A6C94: + bl sub_080A6498 + bl sub_080AD918 + pop {r4, pc} + .align 2, 0 +_080A6CA0: .4byte gUnk_08128F24 +_080A6CA4: .4byte gUnk_02000080 + + thumb_func_start sub_080A6CA8 +sub_080A6CA8: @ 0x080A6CA8 + push {lr} + bl sub_080A4D34 + movs r0, #0xd + bl sub_080A4DB8 + bl sub_080A6290 + movs r0, #0 + bl sub_080A6D74 + ldr r1, _080A6CD4 @ =gUnk_02000080 + strb r0, [r1, #3] + movs r0, #1 + bl sub_080A7114 + movs r0, #4 + movs r1, #8 + bl sub_08050054 + pop {pc} + .align 2, 0 +_080A6CD4: .4byte gUnk_02000080 + + thumb_func_start sub_080A6CD8 +sub_080A6CD8: @ 0x080A6CD8 + push {r4, lr} + ldr r0, _080A6D08 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A6D6E + ldr r1, _080A6D0C @ =gUnk_02000080 + movs r0, #1 + strb r0, [r1] + movs r4, #0 + ldr r0, _080A6D10 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + adds r2, r1, #0 + cmp r0, #0x10 + beq _080A6D34 + cmp r0, #0x10 + bgt _080A6D1A + cmp r0, #2 + beq _080A6D4C + cmp r0, #2 + bgt _080A6D14 + cmp r0, #1 + beq _080A6D38 + b _080A6D54 + .align 2, 0 +_080A6D08: .4byte gUnk_03000FD0 +_080A6D0C: .4byte gUnk_02000080 +_080A6D10: .4byte gUnk_03000FF0 +_080A6D14: + cmp r0, #8 + beq _080A6D38 + b _080A6D54 +_080A6D1A: + cmp r0, #0x40 + beq _080A6D2E + cmp r0, #0x40 + bgt _080A6D28 + cmp r0, #0x20 + beq _080A6D2E + b _080A6D54 +_080A6D28: + cmp r0, #0x80 + beq _080A6D34 + b _080A6D54 +_080A6D2E: + movs r4, #1 + rsbs r4, r4, #0 + b _080A6D58 +_080A6D34: + movs r4, #1 + b _080A6D58 +_080A6D38: + movs r0, #2 + strb r0, [r2] + bl sub_080A7114 + ldr r0, _080A6D48 @ =0x00000704 + bl sub_08056378 + b _080A6D54 + .align 2, 0 +_080A6D48: .4byte 0x00000704 +_080A6D4C: + movs r0, #3 + strb r0, [r1] + bl sub_080A7114 +_080A6D54: + cmp r4, #0 + beq _080A6D6E +_080A6D58: + adds r0, r4, #0 + bl sub_080A6D74 + ldr r1, _080A6D70 @ =gUnk_02000080 + ldrb r2, [r1, #3] + cmp r0, r2 + beq _080A6D6E + strb r0, [r1, #3] + movs r0, #0x69 + bl sub_080A3268 +_080A6D6E: + pop {r4, pc} + .align 2, 0 +_080A6D70: .4byte gUnk_02000080 + + thumb_func_start sub_080A6D74 +sub_080A6D74: @ 0x080A6D74 + push {r4, r5, lr} + adds r3, r0, #0 + ldr r0, _080A6DA4 @ =gUnk_02002A40 + ldr r0, [r0, #0x40] + lsrs r2, r0, #0x18 + ldr r0, _080A6DA8 @ =gUnk_02000080 + ldrb r1, [r0, #3] + cmp r3, #0 + bne _080A6DAC + movs r1, #0 + movs r0, #1 + ands r0, r2 + cmp r0, #0 + bne _080A6DC6 + movs r3, #1 +_080A6D92: + adds r1, #1 + cmp r1, #7 + bhi _080A6DC6 + adds r0, r3, #0 + lsls r0, r1 + ands r0, r2 + cmp r0, #0 + beq _080A6D92 + b _080A6DC6 + .align 2, 0 +_080A6DA4: .4byte gUnk_02002A40 +_080A6DA8: .4byte gUnk_02000080 +_080A6DAC: + cmp r2, #0 + beq _080A6DC6 + movs r4, #7 + movs r5, #1 +_080A6DB4: + adds r0, r1, r3 + adds r1, r0, #0 + adds r1, #8 + ands r1, r4 + adds r0, r5, #0 + lsls r0, r1 + ands r0, r2 + cmp r0, #0 + beq _080A6DB4 +_080A6DC6: + movs r0, #7 + ands r1, r0 + adds r0, r1, #0 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A6DD0 +sub_080A6DD0: @ 0x080A6DD0 + push {lr} + bl sub_08056338 + cmp r0, #0 + beq _080A6DE0 + cmp r0, #1 + beq _080A6DF0 + b _080A6DF6 +_080A6DE0: + ldr r1, _080A6DEC @ =gUnk_02000080 + movs r0, #2 + strb r0, [r1] + movs r0, #3 + b _080A6DF2 + .align 2, 0 +_080A6DEC: .4byte gUnk_02000080 +_080A6DF0: + movs r0, #1 +_080A6DF2: + bl sub_080A7114 +_080A6DF6: + pop {pc} + + thumb_func_start sub_080A6DF8 +sub_080A6DF8: @ 0x080A6DF8 + push {lr} + ldr r0, _080A6E14 @ =gUnk_02000080 + ldrb r0, [r0] + cmp r0, #2 + bne _080A6E18 + movs r0, #4 + bl sub_080A7114 + movs r0, #5 + movs r1, #8 + bl sub_08050054 + b _080A6E3A + .align 2, 0 +_080A6E14: .4byte gUnk_02000080 +_080A6E18: + bl sub_080791D0 + ldr r0, _080A6E3C @ =gLinkEntity + adds r1, r0, #0 + adds r1, #0x58 + ldrb r1, [r1] + ldrh r2, [r0, #0x12] + bl sub_080042D0 + bl sub_080A71DC + ldr r1, _080A6E40 @ =gUnk_02034490 + movs r0, #0 + strb r0, [r1] + movs r0, #0x6c + bl sub_080A3268 +_080A6E3A: + pop {pc} + .align 2, 0 +_080A6E3C: .4byte gLinkEntity +_080A6E40: .4byte gUnk_02034490 + + thumb_func_start sub_080A6E44 +sub_080A6E44: @ 0x080A6E44 + push {lr} + ldr r0, _080A6E64 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A6E60 + ldr r0, _080A6E68 @ =gUnk_02000080 + ldrb r1, [r0, #3] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #2 + ldr r1, _080A6E6C @ =gUnk_08128024 + adds r0, r0, r1 + bl sub_080A71F4 +_080A6E60: + pop {pc} + .align 2, 0 +_080A6E64: .4byte gUnk_03000FD0 +_080A6E68: .4byte gUnk_02000080 +_080A6E6C: .4byte gUnk_08128024 + + thumb_func_start sub_080A6E70 +sub_080A6E70: @ 0x080A6E70 + push {r4, r5, lr} + ldr r1, _080A6ED0 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r1, #8] + ldr r1, _080A6ED4 @ =gUnk_02000080 + adds r4, r1, #0 + adds r4, #0x2c + ldrb r0, [r4] + adds r0, #1 + strb r0, [r4] + ldrb r0, [r1, #3] + bl sub_080A6EE0 + ldrb r1, [r4] + movs r0, #0x10 + ands r0, r1 + movs r1, #0x5e + cmp r0, #0 + beq _080A6EA0 + movs r1, #0x5d +_080A6EA0: + ldr r0, _080A6ED8 @ =0x000001FB + bl sub_080ADA14 + movs r4, #0 + ldr r5, _080A6EDC @ =gUnk_02002A40 +_080A6EAA: + adds r0, r4, #0 + adds r0, #0x18 + movs r1, #1 + lsls r1, r0 + ldr r0, [r5, #0x40] + ands r0, r1 + cmp r0, #0 + beq _080A6EC8 + adds r0, r4, #0 + bl sub_080A6EE0 + ldr r0, _080A6ED8 @ =0x000001FB + movs r1, #0x5c + bl sub_080ADA14 +_080A6EC8: + adds r4, #1 + cmp r4, #7 + bls _080A6EAA + pop {r4, r5, pc} + .align 2, 0 +_080A6ED0: .4byte gUnk_03001010 +_080A6ED4: .4byte gUnk_02000080 +_080A6ED8: .4byte 0x000001FB +_080A6EDC: .4byte gUnk_02002A40 + + thumb_func_start sub_080A6EE0 +sub_080A6EE0: @ 0x080A6EE0 + push {r4, r5, r6, lr} + lsls r1, r0, #2 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080A6F34 @ =gUnk_08128024 + adds r1, r1, r0 + ldrh r3, [r1, #6] + ldrh r4, [r1, #8] + ldr r0, _080A6F38 @ =gUnk_0811E214 + ldrb r2, [r1, #0xb] + lsls r2, r2, #2 + adds r2, r2, r0 + ldrb r1, [r1, #0xc] + lsls r0, r1, #2 + adds r0, r0, r1 + lsls r0, r0, #1 + ldr r1, [r2] + adds r1, r1, r0 + ldrh r0, [r1] + adds r3, r3, r0 + ldrh r0, [r1, #2] + adds r4, r4, r0 + ldr r6, _080A6F3C @ =gUnk_03001010 + lsls r0, r3, #2 + adds r0, r0, r3 + lsls r0, r0, #5 + movs r5, #0xf9 + lsls r5, r5, #4 + adds r1, r5, #0 + bl __divsi3 + adds r0, #0x28 + strh r0, [r6] + lsls r0, r4, #2 + adds r0, r0, r4 + lsls r0, r0, #5 + adds r1, r5, #0 + bl __divsi3 + adds r0, #0xc + strh r0, [r6, #2] + pop {r4, r5, r6, pc} + .align 2, 0 +_080A6F34: .4byte gUnk_08128024 +_080A6F38: .4byte gUnk_0811E214 +_080A6F3C: .4byte gUnk_03001010 + + thumb_func_start sub_080A6F40 +sub_080A6F40: @ 0x080A6F40 + push {r4, r5, r6, lr} + movs r5, #0 + ldr r4, _080A6F4C @ =gUnk_08128F38 + movs r6, #0 + b _080A6F60 + .align 2, 0 +_080A6F4C: .4byte gUnk_08128F38 +_080A6F50: + ldrb r0, [r4] + ldrb r1, [r4, #1] + bl sub_0807CB24 + lsls r0, r5 + orrs r6, r0 + adds r5, #1 + adds r4, #2 +_080A6F60: + ldrb r0, [r4] + cmp r0, #0 + bne _080A6F50 + mvns r0, r6 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A6F6C +sub_080A6F6C: @ 0x080A6F6C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080A6FA4 @ =gUnk_02000080 + ldrh r0, [r1, #0x2e] + cmp r0, r4 + beq _080A6F9A + strh r4, [r1, #0x2e] + ldr r0, _080A6FA8 @ =gUnk_020350F0 + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0801D630 + movs r0, #0xff + ands r0, r4 + cmp r0, #0 + beq _080A6F94 + ldr r1, _080A6FAC @ =gUnk_08128FA8 + adds r0, r4, #0 + bl sub_0805F46C +_080A6F94: + ldr r1, _080A6FB0 @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] +_080A6F9A: + ldr r1, _080A6FB0 @ =gUnk_03000F50 + movs r0, #2 + strh r0, [r1, #0xc] + pop {r4, pc} + .align 2, 0 +_080A6FA4: .4byte gUnk_02000080 +_080A6FA8: .4byte gUnk_020350F0 +_080A6FAC: .4byte gUnk_08128FA8 +_080A6FB0: .4byte gUnk_03000F50 + + thumb_func_start sub_080A6FB4 +sub_080A6FB4: @ 0x080A6FB4 + push {r4, r5, lr} + adds r2, r0, #0 + movs r4, #0 + cmp r1, #1 + beq _080A6FF0 + cmp r1, #1 + blo _080A6FC8 + cmp r1, #2 + beq _080A6FD6 + b _080A6FFA +_080A6FC8: + ldr r0, _080A6FE4 @ =gUnk_02002A40 + movs r1, #1 + lsls r1, r2 + ldr r0, [r0, #0x40] + ands r0, r1 + cmp r0, #0 + beq _080A6FFA +_080A6FD6: + ldr r1, _080A6FE8 @ =gUnk_08127F94 + lsls r0, r2, #3 + adds r0, r0, r1 + ldrh r4, [r0, #6] + ldr r5, _080A6FEC @ =gUnk_08128FC0 + b _080A6FFA + .align 2, 0 +_080A6FE4: .4byte gUnk_02002A40 +_080A6FE8: .4byte gUnk_08127F94 +_080A6FEC: .4byte gUnk_08128FC0 +_080A6FF0: + ldr r1, _080A702C @ =gUnk_08128FF0 + lsls r0, r2, #1 + adds r0, r0, r1 + ldrh r4, [r0] + ldr r5, _080A7030 @ =gUnk_08128FD8 +_080A6FFA: + ldr r1, _080A7034 @ =gUnk_02000080 + ldrh r0, [r1, #0x2e] + cmp r0, r4 + beq _080A7024 + strh r4, [r1, #0x2e] + ldr r0, _080A7038 @ =gUnk_020350F0 + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0801D630 + movs r0, #0xff + ands r0, r4 + cmp r0, #0 + beq _080A701E + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0805F46C +_080A701E: + ldr r1, _080A703C @ =gUnk_03000F50 + movs r0, #1 + strh r0, [r1, #0xe] +_080A7024: + ldr r1, _080A703C @ =gUnk_03000F50 + movs r0, #2 + strh r0, [r1, #0xc] + pop {r4, r5, pc} + .align 2, 0 +_080A702C: .4byte gUnk_08128FF0 +_080A7030: .4byte gUnk_08128FD8 +_080A7034: .4byte gUnk_02000080 +_080A7038: .4byte gUnk_020350F0 +_080A703C: .4byte gUnk_03000F50 + + thumb_func_start sub_080A7040 +sub_080A7040: @ 0x080A7040 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, _080A7090 @ =gUnk_02000080 + ldrh r0, [r1, #0x2e] + cmp r0, r5 + beq _080A708C + strh r5, [r1, #0x2e] + ldr r4, _080A7094 @ =gUnk_02022130 + movs r1, #0xc0 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_0801D630 + ldr r0, _080A7098 @ =0xFFFFFE00 + adds r4, r4, r0 + ldr r1, _080A709C @ =0x0600E000 + movs r2, #0x80 + lsls r2, r2, #4 + adds r0, r4, #0 + bl sub_0801D66C + ldr r1, _080A70A0 @ =gUnk_08128D70 + lsls r0, r5, #3 + adds r4, r0, r1 + ldrb r0, [r4] + bl sub_0807CA84 + cmp r0, #0 + beq _080A7082 + ldrh r0, [r4, #6] + ldr r1, _080A70A4 @ =gUnk_08129004 + bl sub_0805F46C +_080A7082: + ldr r0, _080A70A8 @ =gUnk_03000F50 + movs r1, #3 + strh r1, [r0, #0x18] + movs r1, #1 + strh r1, [r0, #0x1a] +_080A708C: + pop {r4, r5, pc} + .align 2, 0 +_080A7090: .4byte gUnk_02000080 +_080A7094: .4byte gUnk_02022130 +_080A7098: .4byte 0xFFFFFE00 +_080A709C: .4byte 0x0600E000 +_080A70A0: .4byte gUnk_08128D70 +_080A70A4: .4byte gUnk_08129004 +_080A70A8: .4byte gUnk_03000F50 + + thumb_func_start sub_080A70AC +sub_080A70AC: @ 0x080A70AC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A7110 @ =gUnk_0200AF34 + movs r1, #0xc0 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_0801D630 + adds r2, r4, #0 + subs r2, #0x34 + movs r0, #0x7f + strb r0, [r2, #0x13] + strb r0, [r2, #0x14] + ldrb r0, [r5] + strh r0, [r2, #0x16] + movs r0, #1 + ldrsb r0, [r5, r0] + strh r0, [r2, #0x1c] + ldrb r1, [r5, #2] + subs r0, r4, #4 + strb r1, [r0] + ldrb r0, [r5, #3] + strh r0, [r2, #0x18] + movs r0, #4 + ldrsb r0, [r5, r0] + strh r0, [r2, #0x1e] + ldrb r1, [r5, #5] + subs r0, r4, #3 + strb r1, [r0] + ldrb r0, [r5, #6] + strh r0, [r2, #0x1a] + movs r0, #7 + ldrsb r0, [r5, r0] + strh r0, [r2, #0x20] + ldrb r0, [r5, #8] + subs r4, #2 + strb r0, [r4] + adds r5, #9 + movs r4, #1 + rsbs r4, r4, #0 +_080A70FC: + ldrb r0, [r5] + ldrb r1, [r5, #1] + bl sub_0801CA6C + adds r5, #2 + movs r0, #0 + ldrsb r0, [r5, r0] + cmp r0, r4 + bne _080A70FC + pop {r4, r5, pc} + .align 2, 0 +_080A7110: .4byte gUnk_0200AF34 + + thumb_func_start sub_080A7114 +sub_080A7114: @ 0x080A7114 + ldr r1, _080A7120 @ =gUnk_02000080 + movs r2, #0 + strb r0, [r1, #5] + strb r2, [r1, #6] + strb r2, [r1, #7] + bx lr + .align 2, 0 +_080A7120: .4byte gUnk_02000080 + + thumb_func_start sub_080A7124 +sub_080A7124: @ 0x080A7124 + push {lr} + ldr r0, _080A7134 @ =gUnk_02032EC0 + movs r1, #0xed + lsls r1, r1, #2 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_080A7134: .4byte gUnk_02032EC0 + + thumb_func_start sub_080A7138 +sub_080A7138: @ 0x080A7138 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r4, _080A715C @ =gUnk_02032EC0 + ldrb r0, [r4] + cmp r0, #0 + bne _080A7164 + movs r1, #0xed + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_0801D630 + strb r5, [r4, #2] + strb r6, [r4, #3] + ldr r0, _080A7160 @ =gUnk_03001000 + ldrb r0, [r0, #4] + strb r0, [r4, #7] + b _080A716C + .align 2, 0 +_080A715C: .4byte gUnk_02032EC0 +_080A7160: .4byte gUnk_03001000 +_080A7164: + strb r5, [r4, #4] + strb r6, [r4, #5] + movs r0, #1 + strb r0, [r4] +_080A716C: + ldr r1, _080A7194 @ =gUnk_02032EC0 + movs r0, #0 + strb r0, [r1, #6] + ldr r0, _080A7198 @ =0x0000FFFF + strh r0, [r1, #8] + movs r4, #0 + movs r0, #0x20 + strh r0, [r1, #0xa] + ldr r1, _080A719C @ =gUnk_03001000 + movs r0, #7 + strb r0, [r1, #4] + movs r0, #5 + movs r1, #0x20 + bl sub_08050054 + ldr r0, _080A71A0 @ =gUnk_02018EB0 + strb r4, [r0] + strb r4, [r0, #1] + pop {r4, r5, r6, pc} + .align 2, 0 +_080A7194: .4byte gUnk_02032EC0 +_080A7198: .4byte 0x0000FFFF +_080A719C: .4byte gUnk_03001000 +_080A71A0: .4byte gUnk_02018EB0 + + thumb_func_start sub_080A71A4 +sub_080A71A4: @ 0x080A71A4 + push {r4, lr} + adds r4, r0, #0 + ldr r3, _080A71B4 @ =gUnk_02032EC0 + ldrb r0, [r3] + cmp r0, #0 + bne _080A71B8 + strb r2, [r3, #0xe] + b _080A71BA + .align 2, 0 +_080A71B4: .4byte gUnk_02032EC0 +_080A71B8: + strb r2, [r3, #0xf] +_080A71BA: + adds r0, r4, #0 + bl sub_080A7138 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A71C4 +sub_080A71C4: @ 0x080A71C4 + push {r4, r5, lr} + adds r4, r2, #0 + adds r5, r3, #0 + bl sub_080A7138 + ldr r0, _080A71D8 @ =gUnk_02032EC0 + strh r4, [r0, #8] + strh r5, [r0, #0xa] + pop {r4, r5, pc} + .align 2, 0 +_080A71D8: .4byte gUnk_02032EC0 + + thumb_func_start sub_080A71DC +sub_080A71DC: @ 0x080A71DC + push {lr} + ldr r1, _080A71F0 @ =gUnk_02032EC0 + movs r0, #3 + strb r0, [r1] + movs r0, #5 + movs r1, #0x20 + bl sub_08050054 + pop {pc} + .align 2, 0 +_080A71F0: .4byte gUnk_02032EC0 + + thumb_func_start sub_080A71F4 +sub_080A71F4: @ 0x080A71F4 + push {lr} + cmp r0, #0 + beq _080A71FE + bl sub_08080840 +_080A71FE: + bl sub_0805E89C + bl sub_0805E974 + bl sub_0805E89C + ldr r0, _080A7218 @ =gUnk_03001000 + movs r2, #0 + movs r1, #1 + strb r1, [r0, #3] + strb r2, [r0, #4] + pop {pc} + .align 2, 0 +_080A7218: .4byte gUnk_03001000 + + thumb_func_start sub_080A721C +sub_080A721C: @ 0x080A721C + push {lr} + ldr r0, _080A7248 @ =gUnk_02032EC0 + ldrb r1, [r0] + adds r2, r0, #0 + cmp r1, #2 + bhi _080A7238 + ldrb r3, [r2, #4] + cmp r3, #0 + beq _080A7238 + ldrb r0, [r2, #5] + movs r1, #0 + strb r0, [r2, #3] + strb r3, [r2, #2] + strb r1, [r2, #4] +_080A7238: + ldr r0, _080A724C @ =gUnk_0812901C + ldrb r1, [r2] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A7248: .4byte gUnk_02032EC0 +_080A724C: .4byte gUnk_0812901C + + thumb_func_start sub_080A7250 +sub_080A7250: @ 0x080A7250 + push {r4, lr} + ldr r0, _080A72E8 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A72E4 + ldr r0, _080A72EC @ =gUnk_03000F50 + ldr r1, _080A72F0 @ =gUnk_03001020 + movs r2, #0x7c + bl sub_0801D66C + ldr r0, _080A72F4 @ =gUnk_020176A0 + ldr r1, _080A72F8 @ =gUnk_02024090 + movs r2, #0x80 + lsls r2, r2, #3 + bl sub_0801D66C + ldr r0, _080A72FC @ =gUnk_02024490 + ldr r4, _080A7300 @ =gUnk_02032F14 + movs r2, #0x85 + lsls r2, r2, #2 + adds r1, r4, #0 + bl sub_0801D66C + ldr r0, _080A7304 @ =gUnk_02001A00 + movs r2, #0x85 + lsls r2, r2, #2 + adds r1, r4, r2 + movs r2, #0x40 + bl sub_0801D66C + ldr r0, _080A7308 @ =gUnk_03000BF0 + adds r1, r4, #0 + subs r1, #0x38 + movs r2, #0x38 + bl sub_0801D66C + ldr r0, _080A730C @ =gUnk_03000420 + movs r2, #0x95 + lsls r2, r2, #2 + adds r1, r4, r2 + movs r2, #0x80 + lsls r2, r2, #1 + bl sub_0801D66C + ldr r0, _080A7310 @ =gUnk_02033280 + movs r2, #0xd5 + lsls r2, r2, #2 + adds r1, r4, r2 + movs r2, #0xc + bl sub_0801D66C + bl sub_0805E958 + adds r1, r4, #0 + subs r1, #0x54 + ldr r0, _080A7314 @ =gUnk_030010A0 + adds r0, #0x2f + ldrb r0, [r0] + strb r0, [r1, #0xd] + ldr r0, _080A7318 @ =gUnk_03003F80 + adds r0, #0x8b + ldrb r0, [r0] + strb r0, [r1, #0xc] + ldr r0, _080A731C @ =gUnk_02017654 + ldr r0, [r0] + str r0, [r1, #0x10] + ldr r0, _080A7320 @ =gUnk_02025EB0 + ldr r0, [r0] + str r0, [r1, #0x14] + ldr r0, _080A7324 @ =gUnk_0200B650 + ldr r0, [r0] + str r0, [r1, #0x18] + movs r0, #1 + strb r0, [r1] +_080A72E4: + pop {r4, pc} + .align 2, 0 +_080A72E8: .4byte gUnk_03000FD0 +_080A72EC: .4byte gUnk_03000F50 +_080A72F0: .4byte gUnk_03001020 +_080A72F4: .4byte gUnk_020176A0 +_080A72F8: .4byte gUnk_02024090 +_080A72FC: .4byte gUnk_02024490 +_080A7300: .4byte gUnk_02032F14 +_080A7304: .4byte gUnk_02001A00 +_080A7308: .4byte gUnk_03000BF0 +_080A730C: .4byte gUnk_03000420 +_080A7310: .4byte gUnk_02033280 +_080A7314: .4byte gUnk_030010A0 +_080A7318: .4byte gUnk_03003F80 +_080A731C: .4byte gUnk_02017654 +_080A7320: .4byte gUnk_02025EB0 +_080A7324: .4byte gUnk_0200B650 + + thumb_func_start sub_080A7328 +sub_080A7328: @ 0x080A7328 + push {r4, lr} + ldr r0, _080A7388 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080A7384 + bl sub_0805E89C + ldr r0, _080A738C @ =gUnk_02000080 + movs r1, #0x30 + bl sub_0801D630 + ldr r0, _080A7390 @ =gUnk_03000BF0 + movs r1, #0x38 + bl sub_0801D630 + ldr r0, _080A7394 @ =gUnk_03000420 + movs r1, #0x80 + lsls r1, r1, #1 + bl sub_0801D630 + ldr r4, _080A7398 @ =gUnk_02033280 + adds r0, r4, #0 + movs r1, #0xc + bl sub_0801D630 + movs r0, #8 + strb r0, [r4, #8] + movs r0, #1 + bl sub_0801DA90 + bl sub_08056418 + bl sub_080ADD30 + movs r0, #0 + bl sub_0801CFA8 + ldr r0, _080A739C @ =gUnk_02024490 + movs r2, #1 + strb r2, [r0] + ldr r1, _080A73A0 @ =gUnk_02032EC0 + movs r0, #2 + strb r0, [r1] + ldr r0, _080A73A4 @ =gUnk_030010A0 + adds r0, #0x30 + strb r2, [r0] +_080A7384: + pop {r4, pc} + .align 2, 0 +_080A7388: .4byte gUnk_03000FD0 +_080A738C: .4byte gUnk_02000080 +_080A7390: .4byte gUnk_03000BF0 +_080A7394: .4byte gUnk_03000420 +_080A7398: .4byte gUnk_02033280 +_080A739C: .4byte gUnk_02024490 +_080A73A0: .4byte gUnk_02032EC0 +_080A73A4: .4byte gUnk_030010A0 + + thumb_func_start sub_080A73A8 +sub_080A73A8: @ 0x080A73A8 + push {r4, r5, lr} + ldr r0, _080A7468 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + beq _080A73B4 + b _080A74BC +_080A73B4: + bl sub_0805E89C + bl sub_0805E974 + ldr r1, _080A746C @ =gUnk_02017654 + ldr r5, _080A7470 @ =gUnk_02032EC0 + ldr r0, [r5, #0x10] + str r0, [r1] + ldr r0, _080A7474 @ =gUnk_03003F80 + ldrb r1, [r5, #0xc] + adds r0, #0x8b + strb r1, [r0] + ldr r1, _080A7478 @ =gUnk_02025EB0 + ldr r0, [r5, #0x14] + str r0, [r1] + ldr r1, _080A747C @ =gUnk_0200B650 + ldr r0, [r5, #0x18] + str r0, [r1] + movs r1, #0xea + lsls r1, r1, #2 + adds r0, r5, r1 + ldr r1, _080A7480 @ =gUnk_02033280 + movs r2, #0xc + bl sub_0801D66C + movs r1, #0xaa + lsls r1, r1, #2 + adds r0, r5, r1 + ldr r1, _080A7484 @ =gUnk_03000420 + movs r2, #0x80 + lsls r2, r2, #1 + bl sub_0801D66C + movs r1, #0x9a + lsls r1, r1, #2 + adds r0, r5, r1 + ldr r1, _080A7488 @ =gUnk_02001A00 + movs r2, #0x40 + bl sub_0801D66C + adds r0, r5, #0 + adds r0, #0x54 + ldr r1, _080A748C @ =gUnk_02024490 + movs r2, #0x85 + lsls r2, r2, #2 + bl sub_0801D66C + adds r0, r5, #0 + adds r0, #0x1c + ldr r4, _080A7490 @ =gUnk_03000BF0 + adds r1, r4, #0 + movs r2, #0x38 + bl sub_0801D66C + ldr r0, _080A7494 @ =gUnk_03001020 + ldr r1, _080A7498 @ =gUnk_03000F50 + movs r2, #0x7c + bl sub_0801D66C + ldrb r0, [r4, #4] + bl sub_08052D58 + ldr r4, _080A749C @ =gUnk_02033A90 + strh r0, [r4, #4] + bl sub_08052E8C + ldr r1, _080A74A0 @ =0x0000085C + adds r4, r4, r1 + str r0, [r4] + ldrb r0, [r5, #6] + bl sub_080527FC + ldrb r1, [r5, #0xd] + rsbs r0, r1, #0 + orrs r0, r1 + lsrs r0, r0, #0x1f + bl sub_0801D000 + bl sub_080A74F4 + ldrh r1, [r5, #8] + ldr r0, _080A74A4 @ =0x0000FFFF + cmp r1, r0 + beq _080A74A8 + adds r0, r1, #0 + ldrh r1, [r5, #0xa] + bl sub_08050054 + b _080A74AE + .align 2, 0 +_080A7468: .4byte gUnk_03000FD0 +_080A746C: .4byte gUnk_02017654 +_080A7470: .4byte gUnk_02032EC0 +_080A7474: .4byte gUnk_03003F80 +_080A7478: .4byte gUnk_02025EB0 +_080A747C: .4byte gUnk_0200B650 +_080A7480: .4byte gUnk_02033280 +_080A7484: .4byte gUnk_03000420 +_080A7488: .4byte gUnk_02001A00 +_080A748C: .4byte gUnk_02024490 +_080A7490: .4byte gUnk_03000BF0 +_080A7494: .4byte gUnk_03001020 +_080A7498: .4byte gUnk_03000F50 +_080A749C: .4byte gUnk_02033A90 +_080A74A0: .4byte 0x0000085C +_080A74A4: .4byte 0x0000FFFF +_080A74A8: + ldrh r0, [r5, #0xa] + bl sub_080500F4 +_080A74AE: + ldr r1, _080A74C0 @ =gUnk_02032EC0 + movs r2, #0 + movs r0, #4 + strb r0, [r1] + ldr r0, _080A74C4 @ =gUnk_030010A0 + adds r0, #0x30 + strb r2, [r0] +_080A74BC: + pop {r4, r5, pc} + .align 2, 0 +_080A74C0: .4byte gUnk_02032EC0 +_080A74C4: .4byte gUnk_030010A0 + + thumb_func_start sub_080A74C8 +sub_080A74C8: @ 0x080A74C8 + push {lr} + bl sub_080A74F4 + ldr r0, _080A74E8 @ =gUnk_03000FD0 + ldrb r3, [r0] + cmp r3, #0 + bne _080A74E6 + ldr r0, _080A74EC @ =gUnk_03001000 + ldr r1, _080A74F0 @ =gUnk_02032EC0 + ldrb r2, [r1, #7] + strb r2, [r0, #4] + strb r3, [r1] + strb r3, [r1, #2] + bl sub_0805E5B4 +_080A74E6: + pop {pc} + .align 2, 0 +_080A74E8: .4byte gUnk_03000FD0 +_080A74EC: .4byte gUnk_03001000 +_080A74F0: .4byte gUnk_02032EC0 + + thumb_func_start sub_080A74F4 +sub_080A74F4: @ 0x080A74F4 + push {lr} + bl sub_0805E5A8 + ldr r1, _080A7524 @ =gUnk_03001000 + movs r0, #0 + strb r0, [r1, #0xb] + bl sub_080AD90C + bl sub_0805E5C0 + bl sub_0805E5F8 + bl sub_0801C344 + bl sub_0801C208 + bl sub_08078CB4 + bl sub_080AD9B0 + bl sub_080AD918 + pop {pc} + .align 2, 0 +_080A7524: .4byte gUnk_03001000 + + thumb_func_start sub_080A7528 +sub_080A7528: @ 0x080A7528 + push {lr} + ldr r1, _080A753C @ =gUnk_08129030 + ldr r0, _080A7540 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080A753C: .4byte gUnk_08129030 +_080A7540: .4byte gUnk_02032EC0 + + thumb_func_start sub_080A7544 +sub_080A7544: @ 0x080A7544 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080A7584 @ =gUnk_0812905C + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080A7582 + ldr r1, _080A7588 @ =gLinkEntity + adds r0, r4, #0 + bl sub_08078E84 + ldr r1, [r4, #0x48] + adds r0, r4, #0 + adds r0, #0x62 + ldrb r0, [r0] + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + ldr r1, [r4, #0x48] + adds r0, r4, #0 + adds r0, #0x63 + ldrb r0, [r0] + ldrb r2, [r1, #1] + adds r0, r0, r2 + strb r0, [r1, #1] +_080A7582: + pop {r4, pc} + .align 2, 0 +_080A7584: .4byte gUnk_0812905C +_080A7588: .4byte gLinkEntity + + thumb_func_start sub_080A758C +sub_080A758C: @ 0x080A758C + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _080A75AC + ldr r1, _080A7654 @ =gUnk_03003F80 + ldrb r0, [r1, #4] + cmp r0, #0 + bne _080A75AC + ldrb r1, [r1, #2] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080A75AC + bl sub_0805E780 +_080A75AC: + adds r0, r5, #0 + bl sub_0806FBD8 + cmp r0, #0 + bne _080A75BA + bl sub_0805E780 +_080A75BA: + adds r0, r5, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + ldr r1, _080A7658 @ =gLinkEntity + adds r0, r1, #0 + adds r0, #0x3c + ldrb r0, [r0] + adds r0, #1 + movs r2, #0x20 + adds r3, r5, #0 + adds r3, #0x3c + movs r4, #0 + orrs r0, r2 + strb r0, [r3] + adds r1, #0x3b + ldrb r0, [r1] + adds r1, r5, #0 + adds r1, #0x3b + strb r0, [r1] + ldrb r1, [r5, #0x11] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r5, #0x11] + adds r0, r5, #0 + adds r0, #0x41 + strb r4, [r0] + subs r0, #4 + strb r4, [r0] + adds r0, #5 + strb r4, [r0] + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + movs r0, #0xff + strb r0, [r5, #0x1e] + adds r0, r5, #0 + bl sub_0801766C + ldrb r0, [r5, #0xa] + cmp r0, #0 + bne _080A76BC + ldr r2, _080A7654 @ =gUnk_03003F80 + ldrb r1, [r2, #2] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080A767A + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + movs r0, #2 + strb r0, [r5, #0xb] + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + adds r0, #8 + adds r1, r5, #0 + adds r1, #0x44 + strb r0, [r1] + adds r0, r5, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #1 + beq _080A765C + cmp r0, #6 + bne _080A7664 + subs r1, #4 + movs r0, #0x1a + b _080A766A + .align 2, 0 +_080A7654: .4byte gUnk_03003F80 +_080A7658: .4byte gLinkEntity +_080A765C: + adds r1, r5, #0 + adds r1, #0x40 + movs r0, #0x18 + b _080A766A +_080A7664: + adds r1, r5, #0 + adds r1, #0x40 + movs r0, #0x19 +_080A766A: + strb r0, [r1] + ldrb r0, [r5, #0xc] + adds r0, #1 + strb r0, [r5, #0xc] + adds r0, r5, #0 + bl sub_080A7824 + b _080A7692 +_080A767A: + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1d + adds r0, #4 + adds r1, r5, #0 + adds r1, #0x44 + strb r0, [r1] + adds r0, r5, #0 + bl sub_080A76CC +_080A7692: + ldr r0, _080A76B0 @ =gUnk_03003F80 + str r5, [r0, #0x2c] + adds r0, r5, #0 + bl sub_08079BD8 + ldr r4, _080A76B4 @ =gUnk_0812906C + ldr r0, _080A76B8 @ =gUnk_08129068 + bl sub_080028F4 + lsls r0, r0, #1 + adds r0, r0, r4 + ldrh r0, [r0] + bl sub_080A3268 + b _080A76C2 + .align 2, 0 +_080A76B0: .4byte gUnk_03003F80 +_080A76B4: .4byte gUnk_0812906C +_080A76B8: .4byte gUnk_08129068 +_080A76BC: + adds r0, r5, #0 + bl sub_080A76CC +_080A76C2: + movs r0, #0x87 + lsls r0, r0, #1 + bl sub_080A3268 + pop {r4, r5, pc} + + thumb_func_start sub_080A76CC +sub_080A76CC: @ 0x080A76CC + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080A76D8 + b _080A77DC +_080A76D8: + ldr r5, _080A771C @ =gUnk_03003F80 + ldr r0, [r5, #0x2c] + cmp r0, r4 + beq _080A76E4 + bl sub_0805E780 +_080A76E4: + ldrb r0, [r5, #4] + cmp r0, #0 + bne _080A76F2 + str r0, [r5, #0x2c] + strb r0, [r5, #0x1b] + bl sub_0805E780 +_080A76F2: + ldrb r2, [r5, #0x1b] + cmp r2, #0 + beq _080A7744 + adds r1, r4, #0 + adds r1, #0x40 + movs r0, #0xd + strb r0, [r1] + movs r0, #0x40 + ands r0, r2 + cmp r0, #0 + beq _080A7728 + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #1 + beq _080A7720 + cmp r0, #6 + bne _080A7724 + movs r0, #0xa + b _080A7726 + .align 2, 0 +_080A771C: .4byte gUnk_03003F80 +_080A7720: + movs r0, #8 + b _080A7726 +_080A7724: + movs r0, #9 +_080A7726: + strb r0, [r1] +_080A7728: + ldr r0, _080A7740 @ =gLinkEntity + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080A77C4 + movs r0, #0x8b + lsls r0, r0, #1 + bl sub_080A3268 + b _080A77C4 + .align 2, 0 +_080A7740: .4byte gLinkEntity +_080A7744: + ldr r0, [r5, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x14 + ands r0, r1 + cmp r0, #0 + beq _080A776A + adds r0, r4, #0 + adds r0, #0x68 + ldrb r0, [r0] + cmp r0, #6 + bne _080A7762 + adds r1, r4, #0 + adds r1, #0x40 + movs r0, #0xc + b _080A7768 +_080A7762: + adds r1, r4, #0 + adds r1, #0x40 + movs r0, #0xb +_080A7768: + strb r0, [r1] +_080A776A: + ldr r0, _080A77D0 @ =gUnk_03003F80 + adds r0, #0x3e + ldrb r0, [r0] + movs r2, #3 + ands r2, r0 + cmp r2, #0 + beq _080A77C4 + ldr r0, _080A77D4 @ =gLinkEntity + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080A77C4 + movs r1, #0x12 + cmp r2, #1 + bne _080A778E + movs r1, #0x14 +_080A778E: + adds r0, r4, #0 + movs r2, #0 + bl CreateFX + adds r2, r0, #0 + cmp r2, #0 + beq _080A77C4 + ldrb r1, [r4, #0x1e] + lsls r1, r1, #1 + ldr r0, _080A77D8 @ =gUnk_081292E2 + adds r1, r1, r0 + movs r0, #1 + ldrsb r0, [r1, r0] + ldrh r3, [r4, #0x32] + adds r0, r0, r3 + strh r0, [r2, #0x32] + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _080A77BE + rsbs r1, r1, #0 +_080A77BE: + ldrh r0, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r2, #0x2e] +_080A77C4: + ldr r1, _080A77D4 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080A78B8 + b _080A7806 + .align 2, 0 +_080A77D0: .4byte gUnk_03003F80 +_080A77D4: .4byte gLinkEntity +_080A77D8: .4byte gUnk_081292E2 +_080A77DC: + ldr r1, _080A7810 @ =gUnk_03003F80 + ldrb r0, [r1, #4] + cmp r0, #0 + beq _080A7814 + ldr r0, [r1, #0x2c] + adds r2, r0, #0 + adds r2, #0x40 + ldrb r0, [r2] + cmp r0, #0 + beq _080A7814 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r2] + adds r0, r4, #0 + adds r0, #0x40 + strb r1, [r0] + adds r0, r4, #0 + bl sub_080A7A54 +_080A7806: + adds r0, r4, #0 + bl sub_080A7A84 + b _080A7820 + .align 2, 0 +_080A7810: .4byte gUnk_03003F80 +_080A7814: + movs r0, #0xff + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] +_080A7820: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A7824 +sub_080A7824: @ 0x080A7824 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r5, _080A7860 @ =gUnk_03003F80 + ldr r0, [r5, #0x2c] + cmp r0, r4 + beq _080A7834 + bl sub_0805E780 +_080A7834: + ldrb r0, [r5, #4] + cmp r0, #0 + beq _080A78AE + ldrb r0, [r5, #2] + cmp r0, #0 + bne _080A7846 + str r0, [r5, #0x2c] + bl sub_0805E780 +_080A7846: + ldr r2, _080A7864 @ =gLinkEntity + adds r6, r2, #0 + adds r6, #0x5a + ldrb r1, [r6] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A7868 + movs r0, #0 + str r0, [r5, #0x2c] + bl sub_0805E780 + b _080A78B4 + .align 2, 0 +_080A7860: .4byte gUnk_03003F80 +_080A7864: .4byte gLinkEntity +_080A7868: + adds r0, r4, #0 + adds r1, r2, #0 + bl sub_080A78B8 + ldrb r1, [r6] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080A7880 + movs r0, #0x77 + bl sub_080A3268 +_080A7880: + ldrb r0, [r4, #0x1e] + cmp r0, #0x8a + bls _080A788A + movs r0, #0xff + strb r0, [r4, #0x1e] +_080A788A: + ldrb r1, [r6] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080A78A4 + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + bl sub_080A7B98 + b _080A78B4 +_080A78A4: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + b _080A78B4 +_080A78AE: + str r0, [r5, #0x2c] + bl sub_0805E780 +_080A78B4: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A78B8 +sub_080A78B8: @ 0x080A78B8 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r6, r1, #0 + ldr r0, _080A78E8 @ =gUnk_03003F80 + ldrb r1, [r0, #0x1b] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + beq _080A78FC + ldrb r0, [r6, #0x1e] + subs r0, #0x6a + strb r0, [r4, #0x1e] + ldr r0, _080A78EC @ =gUnk_030010A0 + ldr r0, [r0] + movs r1, #4 + ands r0, r1 + cmp r0, #0 + beq _080A78F0 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r1, #0xb1 + b _080A78F2 + .align 2, 0 +_080A78E8: .4byte gUnk_03003F80 +_080A78EC: .4byte gUnk_030010A0 +_080A78F0: + ldrb r1, [r4, #0x1e] +_080A78F2: + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 + b _080A7912 +_080A78FC: + ldrb r0, [r6, #0x1e] + subs r0, #0x6a + ldrb r1, [r4, #0x1e] + cmp r0, r1 + beq _080A7912 + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x1e] + ldrh r2, [r4, #0x12] + adds r0, r4, #0 + bl sub_080042D0 +_080A7912: + ldr r2, _080A792C @ =gUnk_03003F80 + ldrb r1, [r2, #0x1b] + movs r0, #0x40 + ands r0, r1 + adds r7, r2, #0 + cmp r0, #0 + beq _080A7930 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + b _080A7958 + .align 2, 0 +_080A792C: .4byte gUnk_03003F80 +_080A7930: + ldrb r1, [r6, #0x14] + movs r0, #2 + ands r0, r1 + cmp r0, #0 + beq _080A7946 + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x19 + lsrs r2, r0, #0x1f + movs r0, #1 + eors r2, r0 + b _080A794C +_080A7946: + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x19 + lsrs r2, r0, #0x1f +_080A794C: + lsls r2, r2, #6 + ldrb r1, [r4, #0x18] + movs r0, #0x41 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r2 +_080A7958: + strb r0, [r4, #0x18] + adds r2, r4, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + mov r8, r2 + adds r5, r4, #0 + adds r5, #0x3d + cmp r0, #0 + beq _080A7A1C + adds r3, r6, #0 + adds r3, #0x3d + ldrb r0, [r3] + lsls r0, r0, #0x18 + cmp r0, #0 + beq _080A7980 + lsrs r0, r0, #0x18 + cmp r0, #0x81 + bne _080A79AE +_080A7980: + adds r2, r4, #0 + adds r2, #0x3d + ldrb r0, [r2] + movs r1, #0 + strb r0, [r3] + adds r5, r4, #0 + adds r5, #0x3e + ldrb r0, [r5] + adds r3, r6, #0 + adds r3, #0x3e + strb r0, [r3] + movs r3, #0x42 + adds r3, r3, r4 + mov ip, r3 + ldrb r0, [r3] + adds r3, r6, #0 + adds r3, #0x42 + strb r0, [r3] + mov r0, ip + strb r1, [r0] + strb r1, [r5] + strb r1, [r2] + adds r5, r2, #0 +_080A79AE: + ldr r0, [r7, #0x30] + movs r1, #0x80 + lsls r1, r1, #0x14 + ands r0, r1 + cmp r0, #0 + beq _080A79C4 + ldrb r1, [r7, #0x1b] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r7, #0x1b] + b _080A7A1C +_080A79C4: + ldrb r0, [r7, #0x1b] + cmp r0, #0 + beq _080A7A1C + mov r1, r8 + ldrb r0, [r1] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0x43 + beq _080A79E6 + cmp r1, #0x43 + bgt _080A79E0 + cmp r1, #0xd + beq _080A79E6 + b _080A7A08 +_080A79E0: + cmp r1, #0x44 + bne _080A7A08 + b _080A7A1C +_080A79E6: + ldrb r1, [r7, #0x1b] + movs r0, #8 + orrs r0, r1 + strb r0, [r7, #0x1b] + adds r1, r6, #0 + adds r1, #0x42 + movs r0, #2 + strb r0, [r1] + ldrb r1, [r7, #0x1b] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080A7A1C + movs r0, #0xfe + ands r0, r1 + strb r0, [r7, #0x1b] + b _080A7A1C +_080A7A08: + ldrb r0, [r7, #0x1b] + movs r1, #0xc0 + ands r1, r0 + cmp r1, #0 + bne _080A7A1C + strb r1, [r7, #0x1b] + strb r1, [r7, #4] + str r1, [r7, #0x2c] + bl sub_0805E780 +_080A7A1C: + adds r1, r5, #0 + ldrb r0, [r1] + movs r2, #0 + ldrsb r2, [r1, r2] + cmp r2, #0 + beq _080A7A36 + cmp r2, #0 + ble _080A7A32 + subs r0, #1 + strb r0, [r1] + b _080A7A36 +_080A7A32: + adds r0, #1 + strb r0, [r5] +_080A7A36: + adds r0, r4, #0 + bl sub_080A7A54 + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _080A7A4C + ldr r1, [r4, #0x48] + ldrb r0, [r1] + rsbs r0, r0, #0 + strb r0, [r1] +_080A7A4C: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080A7A54 +sub_080A7A54: @ 0x080A7A54 + ldr r1, _080A7A7C @ =gLinkEntity + ldrb r1, [r1, #0x1e] + subs r1, #0x6a + lsls r1, r1, #2 + ldr r2, _080A7A80 @ =gUnk_08129096 + adds r1, r1, r2 + ldr r3, [r0, #0x48] + ldrb r2, [r1] + strb r2, [r3] + ldr r3, [r0, #0x48] + ldrb r2, [r1, #1] + strb r2, [r3, #1] + ldr r3, [r0, #0x48] + ldrb r2, [r1, #2] + strb r2, [r3, #6] + ldr r2, [r0, #0x48] + ldrb r0, [r1, #3] + strb r0, [r2, #7] + bx lr + .align 2, 0 +_080A7A7C: .4byte gLinkEntity +_080A7A80: .4byte gUnk_08129096 + + thumb_func_start sub_080A7A84 +sub_080A7A84: @ 0x080A7A84 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r6, _080A7AE0 @ =gLinkEntity + adds r0, r6, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #0xf + ands r1, r0 + cmp r1, #0 + beq _080A7B8C + ldr r2, _080A7AE4 @ =gUnk_08129072 + subs r0, r1, #1 + lsls r0, r0, #1 + adds r1, r0, r2 + movs r3, #0 + ldrsb r3, [r1, r3] + adds r0, #1 + adds r0, r0, r2 + movs r5, #0 + ldrsb r5, [r0, r5] + ldr r2, _080A7AE8 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1b] + movs r0, #0xc0 + ands r0, r1 + adds r7, r2, #0 + cmp r0, #0 + bne _080A7AC4 + ldrb r0, [r6, #0x18] + lsls r0, r0, #0x19 + cmp r0, #0 + bge _080A7AC4 + rsbs r3, r3, #0 +_080A7AC4: + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080A7AEC + movs r0, #0x2e + ldrsh r2, [r4, r0] + adds r2, r2, r3 + movs r1, #0x32 + ldrsh r3, [r4, r1] + adds r3, r3, r5 + adds r0, r4, #0 + movs r1, #0 + bl sub_08008796 + b _080A7B8C + .align 2, 0 +_080A7AE0: .4byte gLinkEntity +_080A7AE4: .4byte gUnk_08129072 +_080A7AE8: .4byte gUnk_03003F80 +_080A7AEC: + ldr r0, [r4, #0x34] + cmp r0, #0 + bne _080A7B8C + adds r0, r7, #0 + adds r0, #0xac + ldrh r0, [r0] + movs r1, #8 + ands r1, r0 + lsls r1, r1, #0x10 + lsrs r1, r1, #0x10 + rsbs r1, r1, #0 + lsrs r1, r1, #0x1f + movs r0, #0x2e + ldrsh r2, [r4, r0] + adds r6, r3, #0 + adds r2, r2, r6 + movs r0, #0x32 + ldrsh r3, [r4, r0] + adds r3, r3, r5 + adds r0, r4, #0 + bl sub_08008796 + cmp r0, #0 + bne _080A7B8C + ldrb r2, [r7, #0x1b] + cmp r2, #0 + beq _080A7B8C + movs r0, #0xc0 + ands r0, r2 + cmp r0, #0 + bne _080A7B8C + adds r0, r4, #0 + adds r1, r6, #0 + adds r2, r5, #0 + bl sub_080002B4 + cmp r0, #0x2e + bne _080A7B4C + ldr r0, _080A7B44 @ =gLinkEntity + ldr r1, _080A7B48 @ =0x00000119 + bl sub_0800449C + b _080A7B54 + .align 2, 0 +_080A7B44: .4byte gLinkEntity +_080A7B48: .4byte 0x00000119 +_080A7B4C: + ldr r0, _080A7B90 @ =gLinkEntity + movs r1, #0x74 + bl sub_0800449C +_080A7B54: + movs r0, #0xf + movs r1, #0x1a + movs r2, #0 + bl sub_080A2960 + adds r2, r0, #0 + cmp r2, #0 + beq _080A7B8C + ldr r1, _080A7B94 @ =gUnk_0812908E + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r4, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] + ldrb r0, [r4, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r2, #0x32] + ldr r0, [r4, #0x34] + str r0, [r2, #0x34] +_080A7B8C: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A7B90: .4byte gLinkEntity +_080A7B94: .4byte gUnk_0812908E + + thumb_func_start sub_080A7B98 +sub_080A7B98: @ 0x080A7B98 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r6, r0, #0 + ldr r0, _080A7BFC @ =gUnk_03003F80 + adds r0, #0xac + ldrh r1, [r0] + movs r0, #8 + ands r0, r1 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + rsbs r0, r0, #0 + lsrs r0, r0, #0x1f + mov sl, r0 + movs r7, #0x10 + rsbs r7, r7, #0 + movs r0, #0 +_080A7BBE: + movs r5, #0x10 + rsbs r5, r5, #0 + movs r4, #0 + movs r1, #0x10 + adds r1, r1, r7 + mov sb, r1 + adds r0, #1 + mov r8, r0 +_080A7BCE: + movs r0, #0x2e + ldrsh r2, [r6, r0] + adds r2, r2, r5 + movs r1, #0x32 + ldrsh r3, [r6, r1] + adds r3, r3, r7 + adds r0, r6, #0 + mov r1, sl + bl sub_08008796 + adds r5, #0x10 + adds r4, #1 + cmp r4, #2 + bls _080A7BCE + mov r7, sb + mov r0, r8 + cmp r0, #2 + bls _080A7BBE + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A7BFC: .4byte gUnk_03003F80 + + thumb_func_start sub_080A7C00 +sub_080A7C00: @ 0x080A7C00 + push {r4, lr} + bl sub_080A7C38 + adds r4, r0, #0 + cmp r4, #0 + beq _080A7C16 + ldrb r1, [r4, #0xa] + movs r2, #0 + bl sub_080A276C + str r0, [r4, #0x50] +_080A7C16: + pop {r4, pc} + + thumb_func_start sub_080A7C18 +sub_080A7C18: @ 0x080A7C18 + push {lr} + bl sub_080A7C38 + adds r2, r0, #0 + cmp r2, #0 + beq _080A7C32 + ldr r0, _080A7C34 @ =gLinkEntity + str r0, [r2, #0x50] + ldrb r1, [r2, #0xa] + adds r0, r2, #0 + movs r2, #0 + bl sub_08078AF0 +_080A7C32: + pop {pc} + .align 2, 0 +_080A7C34: .4byte gLinkEntity + + thumb_func_start sub_080A7C38 +sub_080A7C38: @ 0x080A7C38 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r6, r1, #0 + adds r7, r2, #0 + cmp r5, #0x3f + bne _080A7C52 + ldr r0, _080A7C78 @ =gUnk_02002A40 + adds r0, #0xbb + ldrb r0, [r0] + cmp r0, #0 + beq _080A7C52 + movs r5, #0x57 + movs r6, #0 +_080A7C52: + bl sub_0805E744 + adds r4, r0, #0 + cmp r4, #0 + beq _080A7C72 + strb r5, [r4, #0xa] + strb r6, [r4, #0xb] + strb r7, [r4, #0xe] + movs r0, #0xb + strb r0, [r4, #9] + movs r0, #6 + strb r0, [r4, #8] + adds r0, r4, #0 + movs r1, #6 + bl sub_0805EA2C +_080A7C72: + adds r0, r4, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A7C78: .4byte gUnk_02002A40 + + thumb_func_start sub_080A7C7C +sub_080A7C7C: @ 0x080A7C7C + push {lr} + ldr r0, _080A7C88 @ =gUnk_02017660 + movs r1, #0x40 + bl sub_0801D630 + pop {pc} + .align 2, 0 +_080A7C88: .4byte gUnk_02017660 + + thumb_func_start sub_080A7C8C +sub_080A7C8C: @ 0x080A7C8C + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r6, r1, #0 + ldr r4, _080A7C9C @ =gUnk_02017660 + movs r2, #0 + movs r1, #0 + b _080A7CA8 + .align 2, 0 +_080A7C9C: .4byte gUnk_02017660 +_080A7CA0: + adds r1, #1 + adds r4, #8 + cmp r1, #7 + bhi _080A7CB0 +_080A7CA8: + ldrh r0, [r4, #4] + cmp r0, r5 + bne _080A7CA0 + movs r2, #1 +_080A7CB0: + lsrs r1, r6, #1 + ldrb r0, [r4, #6] + lsls r0, r0, #0x1f + lsrs r0, r0, #0x1f + cmp r1, r0 + bne _080A7CF4 + cmp r2, #0 + beq _080A7CD2 + ldrb r0, [r4, #1] + bl sub_0807CCB4 + ldrb r0, [r4, #2] + ldrb r1, [r4, #3] + movs r2, #0 + bl sub_080A7C00 + b _080A7CDC +_080A7CD2: + movs r0, #0x60 + movs r1, #0 + movs r2, #0 + bl sub_080A7C00 +_080A7CDC: + movs r0, #0x74 + adds r1, r5, #0 + adds r2, r6, #0 + bl sub_0807B7D8 + movs r0, #0 + movs r1, #0x78 + bl sub_0805E4E0 + ldr r0, _080A7CF8 @ =0x0000011B + bl sub_080A3268 +_080A7CF4: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A7CF8: .4byte 0x0000011B + + thumb_func_start sub_080A7CFC +sub_080A7CFC: @ 0x080A7CFC + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0xc0 + lsls r4, r4, #3 + movs r6, #0 + movs r0, #3 + bl sub_0804B128 + adds r1, r0, #0 + cmp r1, #0 + beq _080A7D38 +_080A7D12: + ldrh r0, [r1, #4] + cmp r0, r5 + bne _080A7D30 + ldrb r0, [r1] + cmp r0, #5 + beq _080A7D24 + cmp r0, #6 + beq _080A7D2A + b _080A7D38 +_080A7D24: + movs r6, #0 + ldrh r4, [r1, #6] + b _080A7D38 +_080A7D2A: + movs r6, #1 + ldrh r4, [r1, #6] + b _080A7D38 +_080A7D30: + adds r1, #8 + ldrh r0, [r1, #4] + cmp r0, #0 + bne _080A7D12 +_080A7D38: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080A7D44 + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080A7D44 +sub_080A7D44: @ 0x080A7D44 + push {lr} + cmp r1, #0 + beq _080A7D52 + movs r1, #0 + bl sub_08078AA8 + b _080A7D56 +_080A7D52: + bl sub_08056378 +_080A7D56: + pop {pc} + + thumb_func_start sub_080A7D58 +sub_080A7D58: @ 0x080A7D58 + push {lr} + adds r3, r0, #0 + ldrb r0, [r3, #9] + lsls r0, r0, #4 + ldr r1, _080A7D78 @ =gUnk_0813210C + adds r2, r0, r1 + ldrh r1, [r2] + ldr r0, _080A7D7C @ =0x0000FFFF + cmp r1, r0 + bne _080A7D74 + ldrb r0, [r3, #0xa] + lsls r0, r0, #4 + ldr r1, [r2, #4] + adds r2, r1, r0 +_080A7D74: + adds r0, r2, #0 + pop {pc} + .align 2, 0 +_080A7D78: .4byte gUnk_0813210C +_080A7D7C: .4byte 0x0000FFFF + + thumb_func_start sub_080A7D80 +sub_080A7D80: @ 0x080A7D80 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x10] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080A7E4A + adds r0, r4, #0 + bl sub_080A7D58 + adds r5, r0, #0 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080A7E50 + cmp r0, #0 + bne _080A7DA6 + movs r0, #0 + b _080A7E4C +_080A7DA6: + ldrb r1, [r4, #0x10] + movs r0, #1 + adds r2, r1, #0 + orrs r2, r0 + strb r2, [r4, #0x10] + ldrb r1, [r5, #0xa] + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080A7DC0 + movs r0, #0x80 + orrs r2, r0 + strb r2, [r4, #0x10] +_080A7DC0: + ldrh r0, [r5, #8] + lsls r0, r0, #0x14 + lsrs r0, r0, #0x14 + strh r0, [r4, #0x12] + ldrb r2, [r4, #0x18] + lsls r0, r2, #0x1e + cmp r0, #0 + bne _080A7DE0 + ldrb r1, [r5, #0xa] + lsls r1, r1, #0x1a + lsrs r1, r1, #0x1e + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_080A7DE0: + ldrb r1, [r5, #0xa] + lsls r1, r1, #0x1d + adds r3, r4, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1a + ldrb r2, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r1, [r5, #0xa] + lsrs r1, r1, #6 + lsls r1, r1, #4 + ldrb r2, [r4, #0x18] + movs r0, #0x31 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080A7E14 + ldrh r0, [r5, #0xc] + strh r0, [r4, #0x24] +_080A7E14: + ldrb r0, [r5, #9] + lsrs r0, r0, #4 + lsls r0, r0, #4 + movs r1, #7 + orrs r0, r1 + adds r1, r4, #0 + adds r1, #0x3c + strb r0, [r1] + ldrb r0, [r5, #0xf] + subs r1, #1 + strb r0, [r1] + ldrb r0, [r5, #0xe] + adds r1, #4 + strb r0, [r1] + ldrb r1, [r5, #0xb] + adds r0, r4, #0 + adds r0, #0x40 + strb r1, [r0] + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0xff + strb r0, [r1] + ldr r0, [r5, #4] + str r0, [r4, #0x48] + adds r0, r4, #0 + bl sub_08016A04 +_080A7E4A: + movs r0, #1 +_080A7E4C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A7E50 +sub_080A7E50: @ 0x080A7E50 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + ldrh r2, [r5] + lsls r1, r2, #0x10 + cmp r1, #0 + beq _080A7EA2 + movs r0, #0x80 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + beq _080A7E78 + ldr r0, _080A7E74 @ =0x000003FF + ands r0, r2 + adds r1, r4, #0 + adds r1, #0x60 + strh r0, [r1] + b _080A7EA2 + .align 2, 0 +_080A7E74: .4byte 0x000003FF +_080A7E78: + movs r0, #0x80 + lsls r0, r0, #7 + ands r0, r2 + cmp r0, #0 + beq _080A7E92 + lsrs r1, r1, #0x14 + lsls r1, r1, #0x18 + lsrs r1, r1, #0x18 + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE008 + b _080A7E9A +_080A7E92: + ldrh r1, [r5] + adds r0, r4, #0 + bl sub_080ADF80 +_080A7E9A: + cmp r0, #0 + bne _080A7EA2 + movs r0, #0 + b _080A7EAC +_080A7EA2: + ldrh r1, [r5, #2] + adds r0, r4, #0 + bl sub_0801D040 + movs r0, #1 +_080A7EAC: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A7EB0 +sub_080A7EB0: @ 0x080A7EB0 + push {lr} + adds r3, r0, #0 + movs r1, #0x2e + ldrsh r0, [r3, r1] + ldr r2, _080A7ED8 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + ldrh r1, [r2, #0x1e] + cmp r0, r1 + bhi _080A7ED2 + movs r1, #0x32 + ldrsh r0, [r3, r1] + ldrh r1, [r2, #8] + subs r0, r0, r1 + ldrh r2, [r2, #0x20] + cmp r0, r2 + bls _080A7EDC +_080A7ED2: + movs r0, #1 + b _080A7EDE + .align 2, 0 +_080A7ED8: .4byte gUnk_03000BF0 +_080A7EDC: + movs r0, #0 +_080A7EDE: + pop {pc} + + thumb_func_start sub_080A7EE0 +sub_080A7EE0: @ 0x080A7EE0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0805E678 + adds r4, r0, #0 + cmp r4, #0 + beq _080A7EFC + movs r0, #4 + strb r0, [r4, #8] + strb r5, [r4, #9] + adds r0, r4, #0 + movs r1, #5 + bl sub_0805EA2C +_080A7EFC: + adds r0, r4, #0 + pop {r4, r5, pc} + + thumb_func_start sub_080A7F00 +sub_080A7F00: @ 0x080A7F00 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080A7F26 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080A7F80 + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _080A7F26 + ldr r0, [r4, #0x50] + ldrb r1, [r0, #0x14] + adds r1, #0x18 + adds r0, r4, #0 + bl sub_080042AC +_080A7F26: + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _080A7F34 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080A7F38 +_080A7F34: + bl sub_0805E780 +_080A7F38: + adds r2, r4, #0 + adds r2, #0x41 + ldrb r1, [r2] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A7F56 + ldr r1, [r4, #0x4c] + ldr r0, _080A7F7C @ =gLinkEntity + cmp r1, r0 + bne _080A7F56 + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xd3 + strb r0, [r1] +_080A7F56: + movs r0, #0 + strb r0, [r2] + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + adds r0, r4, #0 + bl sub_080A7F9C + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _080A7F7A + ldrh r0, [r4, #0x32] + adds r0, #1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_080042B8 +_080A7F7A: + pop {r4, pc} + .align 2, 0 +_080A7F7C: .4byte gLinkEntity + + thumb_func_start sub_080A7F80 +sub_080A7F80: @ 0x080A7F80 + ldr r3, _080A7F98 @ =gUnk_081293B8 + ldr r2, [r0, #0x50] + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + ldrb r2, [r2, #0xa] + adds r1, r1, r2 + adds r1, r1, r3 + ldrb r1, [r1] + adds r0, #0x3f + strb r1, [r0] + bx lr + .align 2, 0 +_080A7F98: .4byte gUnk_081293B8 + + thumb_func_start sub_080A7F9C +sub_080A7F9C: @ 0x080A7F9C + push {lr} + ldr r2, _080A7FB0 @ =gUnk_081293CC + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A7FB0: .4byte gUnk_081293CC + + thumb_func_start sub_080A7FB4 +sub_080A7FB4: @ 0x080A7FB4 + ldr r1, [r0, #0x50] + ldr r3, _080A7FD4 @ =gUnk_081293E0 + ldrb r2, [r1, #0x14] + lsls r2, r2, #2 + adds r2, r2, r3 + adds r1, #0x5a + ldrb r3, [r1] + movs r1, #0xf + ands r1, r3 + ldr r2, [r2] + lsls r1, r1, #2 + adds r1, r1, r2 + subs r1, #4 + ldr r1, [r1] + str r1, [r0, #0x48] + bx lr + .align 2, 0 +_080A7FD4: .4byte gUnk_081293E0 + + thumb_func_start sub_080A7FD8 +sub_080A7FD8: @ 0x080A7FD8 + ldr r1, [r0, #0x50] + ldr r2, _080A7FE8 @ =gUnk_081293F0 + ldrb r1, [r1, #0x14] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r0, #0x48] + bx lr + .align 2, 0 +_080A7FE8: .4byte gUnk_081293F0 + + thumb_func_start sub_080A7FEC +sub_080A7FEC: @ 0x080A7FEC + push {lr} + adds r3, r0, #0 + ldr r2, [r3, #0x50] + adds r0, r2, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080A8008 + ldr r0, _080A8004 @ =gUnk_08129410 + b _080A800A + .align 2, 0 +_080A8004: .4byte gUnk_08129410 +_080A8008: + ldr r0, _080A8018 @ =gUnk_08129400 +_080A800A: + ldrb r1, [r2, #0x14] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r3, #0x48] + pop {pc} + .align 2, 0 +_080A8018: .4byte gUnk_08129400 + + thumb_func_start sub_080A801C +sub_080A801C: @ 0x080A801C + ldr r1, [r0, #0x50] + ldr r2, _080A802C @ =gUnk_08129420 + ldrb r1, [r1, #0x14] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + str r1, [r0, #0x48] + bx lr + .align 2, 0 +_080A802C: .4byte gUnk_08129420 + + thumb_func_start sub_080A8030 +sub_080A8030: @ 0x080A8030 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A8048 @ =gUnk_081295D0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A8048: .4byte gUnk_081295D0 + + thumb_func_start sub_080A804C +sub_080A804C: @ 0x080A804C + push {lr} + ldr r2, _080A8060 @ =gUnk_081295E4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A8060: .4byte gUnk_081295E4 + + thumb_func_start sub_080A8064 +sub_080A8064: @ 0x080A8064 + push {lr} + adds r1, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080A8078 + adds r0, r1, #0 + bl sub_0805E7BC + b _080A8086 +_080A8078: + adds r0, r1, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r1, #0x15] + adds r0, r1, #0 + bl sub_080A8178 +_080A8086: + pop {pc} + + thumb_func_start sub_080A8088 +sub_080A8088: @ 0x080A8088 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x30 + strb r1, [r0, #0xe] + movs r1, #0xa0 + lsls r1, r1, #8 + str r1, [r0, #0x20] + movs r1, #0 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_080A80A0 +sub_080A80A0: @ 0x080A80A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + cmp r0, #0 + beq _080A80DC + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A80C4 + adds r0, r4, #0 + bl sub_0805E7BC + b _080A80F0 +_080A80C4: + adds r0, r4, #0 + bl sub_08016AD2 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A80F0 + movs r0, #3 + strb r0, [r4, #0xc] + b _080A80F0 +_080A80DC: + ldrh r1, [r4, #0x2a] + adds r0, r4, #0 + bl sub_0800417E + adds r0, r4, #0 + bl sub_080A8178 + adds r0, r4, #0 + bl sub_08016AD2 +_080A80F0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A80F4 +sub_080A80F4: @ 0x080A80F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080A8116 + adds r0, r4, #0 + bl sub_0805E7BC +_080A8116: + pop {r4, pc} + + thumb_func_start sub_080A8118 +sub_080A8118: @ 0x080A8118 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + beq _080A813A + cmp r0, #1 + beq _080A8142 + b _080A815A +_080A813A: + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8176 +_080A8142: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x90 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, r4, #0 + bl sub_0800442E + cmp r0, #0 + bne _080A8176 +_080A815A: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A8176 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_080A8176: + pop {r4, pc} + + thumb_func_start sub_080A8178 +sub_080A8178: @ 0x080A8178 + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0x40 + strh r1, [r0, #0x24] + movs r1, #0xa0 + lsls r1, r1, #9 + str r1, [r0, #0x20] + bx lr + + thumb_func_start sub_080A8190 +sub_080A8190: @ 0x080A8190 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A81A8 @ =gUnk_0812960C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A81A8: .4byte gUnk_0812960C + + thumb_func_start sub_080A81AC +sub_080A81AC: @ 0x080A81AC + push {lr} + ldr r2, _080A81C0 @ =gUnk_08129620 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A81C0: .4byte gUnk_08129620 + + thumb_func_start sub_080A81C4 +sub_080A81C4: @ 0x080A81C4 + push {lr} + adds r1, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080A81D8 + adds r0, r1, #0 + bl sub_0805E7BC + b _080A81DE +_080A81D8: + adds r0, r1, #0 + bl sub_080A82D8 +_080A81DE: + pop {pc} + + thumb_func_start sub_080A81E0 +sub_080A81E0: @ 0x080A81E0 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x3c + strb r1, [r0, #0xe] + ldr r1, _080A81F8 @ =0x0000FFFE + strh r1, [r0, #0x36] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 +_080A81F8: .4byte 0x0000FFFE + + thumb_func_start sub_080A81FC +sub_080A81FC: @ 0x080A81FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + bne _080A8240 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A8222 + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8246 +_080A8222: + adds r0, r4, #0 + bl sub_08016AD2 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A8246 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0x90 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + b _080A8246 +_080A8240: + adds r0, r4, #0 + bl sub_080A82D8 +_080A8246: + pop {r4, pc} + + thumb_func_start sub_080A8248 +sub_080A8248: @ 0x080A8248 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080A827A + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xe0 + strh r0, [r4, #0x24] + movs r0, #0xe0 + lsls r0, r0, #8 + str r0, [r4, #0x20] +_080A827A: + pop {r4, pc} + + thumb_func_start sub_080A827C +sub_080A827C: @ 0x080A827C + push {r4, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + bne _080A82B2 + adds r0, r4, #0 + bl sub_0805E7BC +_080A82B2: + pop {r4, pc} + + thumb_func_start sub_080A82B4 +sub_080A82B4: @ 0x080A82B4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080A82D6 + adds r0, r4, #0 + bl sub_0805E7BC +_080A82D6: + pop {r4, pc} + + thumb_func_start sub_080A82D8 +sub_080A82D8: @ 0x080A82D8 + movs r1, #4 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0x80 + lsls r1, r1, #9 + str r1, [r0, #0x20] + ldrb r1, [r0, #0x15] + movs r2, #0x10 + eors r1, r2 + strb r1, [r0, #0x15] + movs r1, #0x80 + strh r1, [r0, #0x24] + bx lr + + thumb_func_start sub_080A82F8 +sub_080A82F8: @ 0x080A82F8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A8310 @ =gUnk_08129650 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A8310: .4byte gUnk_08129650 + + thumb_func_start sub_080A8314 +sub_080A8314: @ 0x080A8314 + push {lr} + ldr r2, _080A8328 @ =gUnk_08129664 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A8328: .4byte gUnk_08129664 + + thumb_func_start sub_080A832C +sub_080A832C: @ 0x080A832C + push {lr} + adds r3, r0, #0 + adds r2, r3, #0 + adds r2, #0x41 + ldrb r0, [r2] + cmp r0, #0x80 + bne _080A8358 + adds r1, r3, #0 + adds r1, #0x3d + movs r0, #0x10 + strb r0, [r1] + adds r1, #5 + movs r0, #0xc + strb r0, [r1] + adds r1, #4 + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r1] + ldr r0, [r3, #0x50] + ldrb r1, [r2] + adds r0, #0x41 + strb r1, [r0] +_080A8358: + adds r0, r3, #0 + adds r0, #0x3d + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A836A + ldr r0, [r3, #0x50] + b _080A836E +_080A836A: + ldr r0, [r3, #0x50] + rsbs r1, r1, #0 +_080A836E: + adds r0, #0x3d + strb r1, [r0] + ldr r0, [r3, #0x50] + movs r1, #0x42 + adds r1, r1, r3 + mov ip, r1 + ldrb r1, [r1] + adds r0, #0x42 + strb r1, [r0] + ldr r0, [r3, #0x50] + adds r1, r3, #0 + adds r1, #0x46 + ldrh r1, [r1] + adds r0, #0x46 + movs r2, #0 + strh r1, [r0] + ldr r0, [r3, #0x50] + adds r1, r3, #0 + adds r1, #0x3e + ldrb r1, [r1] + adds r0, #0x3e + strb r1, [r0] + mov r0, ip + strb r2, [r0] + pop {pc} + + thumb_func_start sub_080A83A0 +sub_080A83A0: @ 0x080A83A0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806FBD8 + cmp r0, #0 + beq _080A83B0 + movs r0, #1 + strb r0, [r4, #0xc] +_080A83B0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A83B4 +sub_080A83B4: @ 0x080A83B4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + cmp r5, #0 + bne _080A83C2 + bl sub_0805E780 +_080A83C2: + ldr r0, [r5, #4] + cmp r0, #0 + bne _080A83CC + bl sub_0805E780 +_080A83CC: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r0, [r0] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x18 + ldr r1, _080A8424 @ =gUnk_0812966C + adds r2, r0, r1 + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1] + adds r2, #1 + adds r0, r5, #0 + adds r0, #0x5b + ldrb r0, [r0] + cmp r0, #0x40 + bne _080A83F4 + ldr r1, [r4, #0x48] + ldrb r0, [r1] + rsbs r0, r0, #0 + strb r0, [r1] +_080A83F4: + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1, #1] + adds r2, #1 + ldr r1, [r4, #0x48] + ldrb r0, [r2] + strb r0, [r1, #6] + ldr r1, [r4, #0x48] + ldrb r0, [r2, #1] + strb r0, [r1, #7] + adds r0, r5, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _080A8428 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8438 + movs r0, #0x7f + ands r0, r1 + b _080A8436 + .align 2, 0 +_080A8424: .4byte gUnk_0812966C +_080A8428: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A8438 + movs r0, #0x80 + orrs r0, r1 +_080A8436: + strb r0, [r4, #0x10] +_080A8438: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A843C +sub_080A843C: @ 0x080A843C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A8454 @ =gUnk_081296F0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A8454: .4byte gUnk_081296F0 + + thumb_func_start sub_080A8458 +sub_080A8458: @ 0x080A8458 + push {lr} + ldr r2, _080A846C @ =gUnk_08129704 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A846C: .4byte gUnk_08129704 + + thumb_func_start sub_080A8470 +sub_080A8470: @ 0x080A8470 + push {r4, lr} + adds r4, r0, #0 + adds r2, r4, #0 + adds r2, #0x41 + ldrb r0, [r2] + cmp r0, #0x80 + bne _080A8496 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0x68 + bne _080A848E + movs r0, #0x86 + bl sub_08004488 +_080A848E: + adds r0, r4, #0 + bl sub_0805E7BC + b _080A84C6 +_080A8496: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + adds r0, #4 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + ldrb r0, [r2] + adds r0, #0x7e + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #1 + bhi _080A84B8 + adds r0, r4, #0 + bl sub_080A8680 + b _080A84C6 +_080A84B8: + adds r0, r4, #0 + movs r1, #0x19 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080A86A0 +_080A84C6: + pop {r4, pc} + + thumb_func_start sub_080A84C8 +sub_080A84C8: @ 0x080A84C8 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x30 + strb r0, [r4, #0xe] + strb r1, [r4, #0xf] + ldrh r0, [r4, #0x36] + subs r0, #4 + strh r0, [r4, #0x36] + movs r0, #0x15 + bl GetProgressFlag + cmp r0, #0 + bne _080A84F0 + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x68 + strb r0, [r1] +_080A84F0: + ldr r0, _080A8500 @ =0x0000018D + bl sub_08004488 + adds r0, r4, #0 + movs r1, #0x18 + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_080A8500: .4byte 0x0000018D + + thumb_func_start sub_080A8504 +sub_080A8504: @ 0x080A8504 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + cmp r0, #0 + beq _080A853C + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A8524 + bl sub_0805E780 +_080A8524: + adds r0, r4, #0 + bl sub_08016AD2 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A8558 + movs r0, #4 + strb r0, [r4, #0xc] + b _080A8558 +_080A853C: + ldrh r1, [r4, #0x2a] + adds r0, r4, #0 + bl sub_0800417E + adds r0, r4, #0 + bl sub_08016AD2 + adds r0, r4, #0 + movs r1, #0x19 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080A86A0 +_080A8558: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080A85B6 + ldr r5, [r4, #0x50] + ldr r0, [r5, #4] + cmp r0, #0 + beq _080A85B6 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_080177A0 + cmp r0, #0 + beq _080A85B6 + adds r0, r4, #0 + adds r0, #0x3d + movs r3, #0 + movs r2, #0x10 + strb r2, [r0] + ldrb r0, [r4, #0x15] + rsbs r0, r0, #0 + adds r1, r4, #0 + adds r1, #0x3e + strb r0, [r1] + adds r1, #3 + movs r0, #0x80 + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x42 + movs r1, #0xc + strb r1, [r0] + adds r0, #4 + strh r3, [r0] + adds r0, r5, #0 + adds r0, #0x3d + strb r2, [r0] + ldrb r0, [r4, #0x15] + adds r2, r5, #0 + adds r2, #0x3e + strb r0, [r2] + adds r2, #3 + movs r0, #0xc2 + strb r0, [r2] + adds r0, r5, #0 + adds r0, #0x42 + strb r1, [r0] + adds r0, #4 + strh r3, [r0] +_080A85B6: + pop {r4, r5, pc} + + thumb_func_start sub_080A85B8 +sub_080A85B8: @ 0x080A85B8 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + cmp r0, #0 + beq _080A85F2 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A85D8 + bl sub_0805E780 +_080A85D8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A860E + movs r0, #1 + strb r0, [r4, #0xc] + ldrb r0, [r4, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + b _080A860E +_080A85F2: + ldrh r1, [r4, #0x2a] + adds r0, r4, #0 + bl sub_0800417E + adds r0, r4, #0 + bl sub_08016AD2 + adds r0, r4, #0 + movs r1, #0x19 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080A86A0 +_080A860E: + pop {r4, pc} + + thumb_func_start sub_080A8610 +sub_080A8610: @ 0x080A8610 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8628 + bl sub_0805E780 +_080A8628: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A862C +sub_080A862C: @ 0x080A862C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_080044EC + cmp r0, #0 + beq _080A864E + cmp r0, #1 + beq _080A8654 + b _080A8662 +_080A864E: + bl sub_0805E780 + b _080A867E +_080A8654: + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + movs r0, #0x90 + lsls r0, r0, #1 + strh r0, [r4, #0x24] +_080A8662: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A867E + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x1e + lsrs r1, r1, #0x1e + movs r0, #1 + eors r1, r0 + subs r0, #5 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] +_080A867E: + pop {r4, pc} + + thumb_func_start sub_080A8680 +sub_080A8680: @ 0x080A8680 + push {lr} + movs r1, #2 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #3 + strb r1, [r0, #0xe] + movs r1, #1 + strb r1, [r0, #0xf] + movs r0, #0x8c + lsls r0, r0, #1 + bl sub_08004488 + pop {pc} + + thumb_func_start sub_080A86A0 +sub_080A86A0: @ 0x080A86A0 + push {lr} + movs r3, #0 + movs r1, #3 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + strh r3, [r0, #0x24] + movs r0, #0xc7 + lsls r0, r0, #1 + bl sub_08004488 + pop {pc} + + thumb_func_start sub_080A86BC +sub_080A86BC: @ 0x080A86BC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A86D4 @ =gUnk_08129718 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A86D4: .4byte gUnk_08129718 + + thumb_func_start sub_080A86D8 +sub_080A86D8: @ 0x080A86D8 + push {lr} + ldr r2, _080A86EC @ =gUnk_0812972C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A86EC: .4byte gUnk_0812972C + + thumb_func_start sub_080A86F0 +sub_080A86F0: @ 0x080A86F0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x50] + cmp r1, #0 + bne _080A8700 + bl sub_0805E780 + b _080A876E +_080A8700: + adds r5, r1, #0 + adds r5, #0x83 + ldrb r1, [r5] + movs r3, #0x3f + adds r0, r3, #0 + ands r0, r1 + cmp r0, #3 + bne _080A8768 + ldr r0, _080A875C @ =gUnk_03003F80 + ldrb r0, [r0, #0xf] + cmp r0, #0 + beq _080A876E + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _080A8760 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + movs r6, #0x32 + ldrsh r1, [r4, r6] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + ldr r1, _080A8764 @ =gLinkEntity + adds r1, #0x38 + ldrb r1, [r1] + bl sub_080002E0 + cmp r0, #0 + bne _080A876E + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080A876E + ldrb r1, [r5] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5] + bl sub_0805E780 + b _080A876E + .align 2, 0 +_080A875C: .4byte gUnk_03003F80 +_080A8760: .4byte gUnk_03000BF0 +_080A8764: .4byte gLinkEntity +_080A8768: + adds r0, r4, #0 + bl sub_0805E7BC +_080A876E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080A8770 +sub_080A8770: @ 0x080A8770 + movs r1, #1 + strb r1, [r0, #0xc] + adds r3, r0, #0 + adds r3, #0x3c + ldrb r2, [r3] + movs r1, #0x10 + orrs r1, r2 + strb r1, [r3] + ldr r1, _080A8788 @ =gUnk_08129734 + str r1, [r0, #0x48] + bx lr + .align 2, 0 +_080A8788: .4byte gUnk_08129734 + + thumb_func_start sub_080A878C +sub_080A878C: @ 0x080A878C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x50] + cmp r4, #0 + bne _080A879A + bl sub_0805E780 +_080A879A: + ldr r0, [r4, #4] + cmp r0, #0 + bne _080A87A4 + bl sub_0805E780 +_080A87A4: + adds r0, r4, #0 + adds r0, #0x83 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #3 + beq _080A87B6 + bl sub_0805E780 +_080A87B6: + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + ldrh r0, [r5, #0x36] + adds r0, #2 + strh r0, [r5, #0x36] + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A87C8 +sub_080A87C8: @ 0x080A87C8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A87E0 @ =gUnk_08129740 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A87E0: .4byte gUnk_08129740 + + thumb_func_start sub_080A87E4 +sub_080A87E4: @ 0x080A87E4 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _080A8804 + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _080A87F8 + bl sub_0805E780 +_080A87F8: + ldr r0, [r4, #0x54] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080A8804 + bl sub_0805E780 +_080A8804: + ldr r0, _080A8818 @ =gUnk_08129754 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A8818: .4byte gUnk_08129754 + + thumb_func_start sub_080A881C +sub_080A881C: @ 0x080A881C + push {lr} + adds r1, r0, #0 + adds r2, r1, #0 + adds r2, #0x46 + movs r0, #0 + strh r0, [r2] + ldrb r2, [r1, #0xa] + cmp r2, #0 + bne _080A8854 + ldr r0, [r1, #0x50] + str r2, [r0, #0x54] + adds r0, r1, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080A884A + ldr r0, _080A8850 @ =gUnk_03003F80 + movs r1, #0xf0 + strb r1, [r0, #0xf] + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 +_080A884A: + bl sub_0805E780 + b _080A8866 + .align 2, 0 +_080A8850: .4byte gUnk_03003F80 +_080A8854: + ldrb r0, [r1, #0xc] + cmp r0, #1 + bhi _080A8866 + movs r0, #2 + strb r0, [r1, #0xc] + ldr r0, [r1, #0x50] + adds r0, #0x83 + movs r1, #0xc0 + strb r1, [r0] +_080A8866: + pop {pc} + + thumb_func_start sub_080A8868 +sub_080A8868: @ 0x080A8868 + push {r4, lr} + adds r3, r0, #0 + movs r4, #0 + movs r0, #1 + strb r0, [r3, #0xc] + strb r4, [r3, #0xd] + ldrb r1, [r3, #0x18] + subs r0, #0x32 + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r3, #0x18] + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [r3, #0x20] + ldr r0, _080A88A4 @ =gUnk_08129764 + str r0, [r3, #0x48] + adds r2, r3, #0 + adds r2, #0x3c + ldrb r0, [r2] + orrs r1, r0 + strb r1, [r2] + ldrb r0, [r3, #0xa] + cmp r0, #1 + beq _080A88B8 + cmp r0, #1 + bgt _080A88A8 + cmp r0, #0 + beq _080A88AE + b _080A88C6 + .align 2, 0 +_080A88A4: .4byte gUnk_08129764 +_080A88A8: + cmp r0, #2 + beq _080A88BE + b _080A88C6 +_080A88AE: + adds r0, r3, #0 + movs r1, #0 + bl sub_08004260 + b _080A88C6 +_080A88B8: + strb r4, [r3, #0xe] + strb r4, [r3, #0xf] + b _080A88C6 +_080A88BE: + adds r0, r3, #0 + movs r1, #5 + bl sub_08004260 +_080A88C6: + pop {r4, pc} + + thumb_func_start sub_080A88C8 +sub_080A88C8: @ 0x080A88C8 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, [r4, #0x50] + cmp r6, #0 + bne _080A88D6 + movs r0, #2 + strb r0, [r4, #0xc] +_080A88D6: + ldr r0, [r6, #4] + cmp r0, #0 + bne _080A88E0 + movs r0, #2 + strb r0, [r4, #0xc] +_080A88E0: + ldr r3, _080A88FC @ =0xFFFF0000 + adds r0, r6, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldrb r5, [r4, #0xa] + cmp r5, #1 + beq _080A890E + cmp r5, #1 + bgt _080A8900 + cmp r5, #0 + beq _080A8906 + b _080A8982 + .align 2, 0 +_080A88FC: .4byte 0xFFFF0000 +_080A8900: + cmp r5, #2 + beq _080A8962 + b _080A8982 +_080A8906: + ldrh r0, [r4, #0x36] + adds r0, #0x10 + strh r0, [r4, #0x36] + b _080A8982 +_080A890E: + ldrh r0, [r4, #0x36] + adds r0, #0xe + strh r0, [r4, #0x36] + ldr r0, [r4, #0x54] + bl sub_08078954 + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 + ldrb r0, [r4, #0xe] + adds r1, r0, #1 + strb r1, [r4, #0xe] + lsls r0, r1, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xf + bls _080A8982 + ldr r2, [r4, #0x54] + ldrb r0, [r2, #0xe] + cmp r0, #0 + bne _080A8982 + movs r3, #2 + ands r1, r3 + cmp r1, #0 + beq _080A8946 + ldrb r0, [r2, #0xf] + adds r0, #1 + strb r0, [r2, #0xf] +_080A8946: + ldr r0, [r4, #0x54] + ldrb r1, [r0, #0xf] + cmp r1, #0x1f + bhi _080A8982 + movs r0, #3 + ands r0, r1 + cmp r0, #3 + bne _080A8982 + adds r1, r6, #0 + adds r1, #0x83 + movs r0, #0xc0 + strb r0, [r1] + strb r3, [r4, #0xc] + b _080A8982 +_080A8962: + ldrh r0, [r4, #0x36] + adds r0, #0xe + strh r0, [r4, #0x36] + ldr r1, _080A8984 @ =gLinkEntity + adds r0, r4, #0 + movs r2, #0xe + movs r3, #0xe + bl sub_080041A0 + cmp r0, #0 + beq _080A8982 + strb r5, [r4, #0xc] + adds r1, r6, #0 + adds r1, #0x83 + movs r0, #0xc0 + strb r0, [r1] +_080A8982: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A8984: .4byte gLinkEntity + + thumb_func_start sub_080A8988 +sub_080A8988: @ 0x080A8988 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xa] + cmp r0, #1 + bne _080A89B4 + ldr r4, [r5, #0x54] + cmp r4, #0 + bne _080A899C + bl sub_0805E780 +_080A899C: + ldr r0, [r4, #4] + cmp r0, #0 + bne _080A89A6 + bl sub_0805E780 +_080A89A6: + adds r0, r4, #0 + bl sub_08078954 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 +_080A89B4: + movs r1, #0xa0 + lsls r1, r1, #6 + adds r0, r5, #0 + bl sub_080044EC + cmp r0, #1 + bne _080A8A44 + adds r0, r5, #0 + bl sub_080043E8 + cmp r0, #0 + beq _080A8A00 + cmp r0, #2 + beq _080A89E0 + cmp r0, #2 + bhi _080A89DA + cmp r0, #1 + beq _080A89E6 + b _080A89FC +_080A89DA: + cmp r0, #3 + beq _080A89F2 + b _080A89FC +_080A89E0: + adds r0, r5, #0 + movs r1, #0xb + b _080A89EA +_080A89E6: + adds r0, r5, #0 + movs r1, #0 +_080A89EA: + movs r2, #0 + bl CreateFX + b _080A89FC +_080A89F2: + adds r0, r5, #0 + movs r1, #0xc + movs r2, #0 + bl CreateFX +_080A89FC: + bl sub_0805E780 +_080A8A00: + ldrb r0, [r5, #0xa] + cmp r0, #1 + beq _080A8A3E + cmp r0, #1 + bgt _080A8A10 + cmp r0, #0 + beq _080A8A16 + b _080A8A44 +_080A8A10: + cmp r0, #2 + beq _080A8A2A + b _080A8A44 +_080A8A16: + adds r0, r5, #0 + movs r1, #1 + bl sub_08004260 + movs r0, #0x84 + bl sub_08004488 + movs r0, #3 + strb r0, [r5, #0xc] + b _080A8A44 +_080A8A2A: + adds r0, r5, #0 + movs r1, #5 + movs r2, #0x80 + bl CreateFX + adds r4, r0, #0 + cmp r4, #0 + beq _080A8A3E + movs r0, #0 + str r0, [r4, #0x50] +_080A8A3E: + adds r0, r5, #0 + bl sub_0805E7BC +_080A8A44: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A8A48 +sub_080A8A48: @ 0x080A8A48 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8A64 + adds r0, r4, #0 + bl sub_0805E7BC +_080A8A64: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A8A68 +sub_080A8A68: @ 0x080A8A68 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800279C + cmp r0, #0 + beq _080A8A78 + bl sub_0805E780 +_080A8A78: + ldr r0, _080A8A8C @ =gUnk_0812979C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A8A8C: .4byte gUnk_0812979C + + thumb_func_start sub_080A8A90 +sub_080A8A90: @ 0x080A8A90 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _080A8AAA + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x15] + lsrs r1, r1, #3 + adds r0, r2, #0 + bl sub_08004260 + b _080A8AC2 +_080A8AAA: + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x15] + lsrs r1, r1, #3 + movs r0, #4 + orrs r1, r0 + adds r0, r2, #0 + bl sub_08004260 + ldr r0, _080A8AC4 @ =0x0000015F + bl sub_08004488 +_080A8AC2: + pop {pc} + .align 2, 0 +_080A8AC4: .4byte 0x0000015F + + thumb_func_start sub_080A8AC8 +sub_080A8AC8: @ 0x080A8AC8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + cmp r5, #0 + bne _080A8AD8 + bl sub_0805E7BC + b _080A8B34 +_080A8AD8: + ldr r0, [r5, #4] + cmp r0, #0 + bne _080A8AE6 + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8B34 +_080A8AE6: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080A8B2E + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r0, [r5, #0x15] + adds r2, r0, #4 + movs r0, #0x18 + ands r2, r0 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080A8B1A + movs r0, #0 + strb r2, [r4, #0x15] + lsrs r1, r2, #2 + strb r1, [r4, #0x14] + strb r0, [r4, #0xe] + lsrs r1, r2, #3 + adds r0, r4, #0 + bl sub_08004260 + b _080A8B2E +_080A8B1A: + lsrs r0, r2, #2 + ldrb r1, [r4, #0x14] + cmp r0, r1 + beq _080A8B2E + strb r2, [r4, #0x15] + strb r0, [r4, #0x14] + lsrs r1, r2, #3 + adds r0, r4, #0 + bl sub_08004260 +_080A8B2E: + adds r0, r4, #0 + bl sub_08004274 +_080A8B34: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A8B38 +sub_080A8B38: @ 0x080A8B38 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + adds r2, r0, #0 + cmp r2, #0 + beq _080A8B66 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A8B5E + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8B74 +_080A8B5E: + adds r0, r4, #0 + bl sub_08016AD2 + b _080A8B74 +_080A8B66: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + strh r2, [r4, #0x24] +_080A8B74: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A8B78 +sub_080A8B78: @ 0x080A8B78 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8B94 + adds r0, r4, #0 + bl sub_0805E7BC +_080A8B94: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A8B98 +sub_080A8B98: @ 0x080A8B98 + push {r4, lr} + adds r4, r0, #0 + bl sub_0800279C + cmp r0, #0 + beq _080A8BA8 + bl sub_0805E780 +_080A8BA8: + ldr r0, _080A8BBC @ =gUnk_0812982C + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A8BBC: .4byte gUnk_0812982C + + thumb_func_start sub_080A8BC0 +sub_080A8BC0: @ 0x080A8BC0 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _080A8BDA + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x15] + lsrs r1, r1, #3 + adds r0, r2, #0 + bl sub_08004260 + b _080A8BF4 +_080A8BDA: + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x15] + lsrs r1, r1, #3 + movs r0, #4 + orrs r1, r0 + adds r0, r2, #0 + bl sub_08004260 + movs r0, #0xaf + lsls r0, r0, #1 + bl sub_08004488 +_080A8BF4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A8BF8 +sub_080A8BF8: @ 0x080A8BF8 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + cmp r5, #0 + bne _080A8C08 + bl sub_0805E7BC + b _080A8C48 +_080A8C08: + ldr r0, [r5, #4] + cmp r0, #0 + bne _080A8C16 + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8C48 +_080A8C16: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080A8C42 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080A8C42 + ldrb r0, [r5, #0x15] + movs r1, #0x18 + ands r1, r0 + movs r0, #0 + strb r1, [r4, #0x15] + strb r0, [r4, #0xe] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 +_080A8C42: + adds r0, r4, #0 + bl sub_08004274 +_080A8C48: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A8C4C +sub_080A8C4C: @ 0x080A8C4C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + adds r2, r0, #0 + cmp r2, #0 + beq _080A8C7A + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A8C72 + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8C88 +_080A8C72: + adds r0, r4, #0 + bl sub_08016AD2 + b _080A8C88 +_080A8C7A: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + strh r2, [r4, #0x24] +_080A8C88: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A8C8C +sub_080A8C8C: @ 0x080A8C8C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8CA8 + adds r0, r4, #0 + bl sub_0805E7BC +_080A8CA8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A8CAC +sub_080A8CAC: @ 0x080A8CAC + push {r4, lr} + adds r4, r0, #0 + bl sub_0800279C + cmp r0, #0 + beq _080A8CBC + bl sub_0805E780 +_080A8CBC: + ldr r0, _080A8CD0 @ =gUnk_081298B8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A8CD0: .4byte gUnk_081298B8 + + thumb_func_start sub_080A8CD4 +sub_080A8CD4: @ 0x080A8CD4 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _080A8CEE + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x15] + lsrs r1, r1, #3 + adds r0, r2, #0 + bl sub_08004260 + b _080A8D08 +_080A8CEE: + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x15] + lsrs r1, r1, #3 + movs r0, #4 + orrs r1, r0 + adds r0, r2, #0 + bl sub_08004260 + movs r0, #0xb0 + lsls r0, r0, #1 + bl sub_08004488 +_080A8D08: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A8D0C +sub_080A8D0C: @ 0x080A8D0C + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + cmp r5, #0 + bne _080A8D1C + bl sub_0805E7BC + b _080A8D5C +_080A8D1C: + ldr r0, [r5, #4] + cmp r0, #0 + bne _080A8D2A + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8D5C +_080A8D2A: + ldrb r0, [r4, #0x18] + lsls r0, r0, #0x1e + lsrs r0, r0, #0x1e + cmp r0, #1 + bne _080A8D56 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080A8D56 + ldrb r0, [r5, #0x15] + movs r1, #0x18 + ands r1, r0 + movs r0, #0 + strb r1, [r4, #0x15] + strb r0, [r4, #0xe] + lsrs r1, r1, #3 + adds r0, r4, #0 + bl sub_08004260 +_080A8D56: + adds r0, r4, #0 + bl sub_08004274 +_080A8D5C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080A8D60 +sub_080A8D60: @ 0x080A8D60 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + adds r2, r0, #0 + cmp r2, #0 + beq _080A8D8E + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A8D86 + adds r0, r4, #0 + bl sub_0805E7BC + b _080A8D9C +_080A8D86: + adds r0, r4, #0 + bl sub_08016AD2 + b _080A8D9C +_080A8D8E: + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + strh r2, [r4, #0x24] +_080A8D9C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A8DA0 +sub_080A8DA0: @ 0x080A8DA0 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8DBC + adds r0, r4, #0 + bl sub_0805E7BC +_080A8DBC: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A8DC0 +sub_080A8DC0: @ 0x080A8DC0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A8DD8 @ =gUnk_08129954 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A8DD8: .4byte gUnk_08129954 + + thumb_func_start sub_080A8DDC +sub_080A8DDC: @ 0x080A8DDC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #3 + beq _080A8E12 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A8E12 + movs r2, #0x7f + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0x1e + beq _080A8E12 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + adds r0, r2, #0 + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #0x53 + bl sub_08004260 +_080A8E12: + ldr r0, _080A8E24 @ =gUnk_08129968 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A8E24: .4byte gUnk_08129968 + + thumb_func_start sub_080A8E28 +sub_080A8E28: @ 0x080A8E28 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r0, #1 + strb r0, [r5, #0xc] + ldr r0, _080A8E80 @ =0xFFFF0000 + str r0, [r5, #0x20] + ldrb r0, [r5, #0xa] + cmp r0, #3 + beq _080A8E6E + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FA24 + movs r1, #0x80 + lsls r1, r1, #5 + ldrb r2, [r5, #0x15] + adds r0, r5, #0 + bl sub_0806F5BC + ldr r0, [r5, #0x50] + ldr r2, [r5, #0x54] + ldr r1, [r0, #0x30] + ldr r0, [r2, #0x30] + subs r1, r1, r0 + str r1, [r5, #0x34] + ldr r0, [r5, #0x30] + subs r0, r0, r1 + str r0, [r5, #0x30] + adds r0, r5, #0 + movs r1, #0x51 + bl sub_08004260 + ldr r0, _080A8E84 @ =0x000001B5 + bl sub_080A3268 +_080A8E6E: + ldrb r4, [r5, #0xa] + cmp r4, #2 + beq _080A8EF2 + cmp r4, #2 + ble _080A8E88 + cmp r4, #3 + beq _080A8F02 + b _080A8FAE + .align 2, 0 +_080A8E80: .4byte 0xFFFF0000 +_080A8E84: .4byte 0x000001B5 +_080A8E88: + cmp r4, #0 + bge _080A8E8E + b _080A8FAE +_080A8E8E: + ldr r0, _080A8EC0 @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r3, #0x32 + ldrsh r2, [r0, r3] + adds r0, r5, #0 + bl sub_080041DC + adds r4, r0, #0 + ldrb r6, [r5, #0xa] + cmp r6, #1 + bne _080A8ECE + bl sub_08000E50 + adds r2, r0, #0 + ldr r0, _080A8EC4 @ =0x000001FF + ands r2, r0 + ldr r0, _080A8EC8 @ =gUnk_030010A0 + ldr r0, [r0] + ands r0, r6 + cmp r0, #0 + bne _080A8ECC + adds r4, r4, r2 + b _080A8ECE + .align 2, 0 +_080A8EC0: .4byte gLinkEntity +_080A8EC4: .4byte 0x000001FF +_080A8EC8: .4byte gUnk_030010A0 +_080A8ECC: + subs r4, r4, r2 +_080A8ECE: + cmp r4, #0x1f + bgt _080A8ED6 + movs r4, #0x20 + b _080A8EE0 +_080A8ED6: + movs r0, #0x80 + lsls r0, r0, #3 + cmp r4, r0 + ble _080A8EE0 + adds r4, r0, #0 +_080A8EE0: + lsls r1, r4, #8 + ldr r0, [r5, #0x34] + bl __divsi3 + lsls r0, r0, #0xd + str r0, [r5, #0x20] + movs r0, #0x1e + strb r0, [r5, #0xf] + b _080A8FAE +_080A8EF2: + ldr r0, [r5, #0x34] + movs r1, #0xc0 + lsls r1, r1, #9 + bl __divsi3 + lsls r0, r0, #0xc + str r0, [r5, #0x20] + b _080A8FAE +_080A8F02: + ldr r0, _080A8F64 @ =0xFF600000 + str r0, [r5, #0x34] + bl sub_08000E50 + ands r4, r0 + lsls r2, r4, #1 + ldr r1, _080A8F68 @ =gUnk_08129978 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r5, #0x2e] + adds r0, r0, r3 + strh r0, [r5, #0x2e] + adds r0, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r5, #0x32] + adds r0, r0, r1 + strh r0, [r5, #0x32] + movs r0, #2 + ands r2, r0 + cmp r2, #0 + beq _080A8F74 + bl sub_08000E50 + ldr r2, _080A8F6C @ =gUnk_08129988 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r2, [r5, #0x2e] + adds r0, r0, r2 + strh r0, [r5, #0x2e] + bl sub_08000E50 + ldr r2, _080A8F70 @ =gUnk_08129980 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r3, [r5, #0x32] + adds r0, r0, r3 + b _080A8F9E + .align 2, 0 +_080A8F64: .4byte 0xFF600000 +_080A8F68: .4byte gUnk_08129978 +_080A8F6C: .4byte gUnk_08129988 +_080A8F70: .4byte gUnk_08129980 +_080A8F74: + bl sub_08000E50 + ldr r2, _080A8FB0 @ =gUnk_08129980 + movs r1, #7 + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r1, [r5, #0x2e] + adds r0, r0, r1 + strh r0, [r5, #0x2e] + bl sub_08000E50 + ldr r2, _080A8FB4 @ =gUnk_08129988 + movs r1, #0xf + ands r1, r0 + adds r1, r1, r2 + movs r0, #0 + ldrsb r0, [r1, r0] + ldrh r2, [r5, #0x32] + adds r0, r0, r2 +_080A8F9E: + strh r0, [r5, #0x32] + adds r0, r5, #0 + bl sub_08004168 + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 +_080A8FAE: + pop {r4, r5, r6, pc} + .align 2, 0 +_080A8FB0: .4byte gUnk_08129980 +_080A8FB4: .4byte gUnk_08129988 + + thumb_func_start sub_080A8FB8 +sub_080A8FB8: @ 0x080A8FB8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #3 + bne _080A8FE8 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080A9054 + adds r0, r4, #0 + movs r1, #7 + bl sub_08008790 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + bl sub_0805E780 + b _080A9054 +_080A8FE8: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + ldrb r0, [r4, #0xa] + cmp r0, #2 + beq _080A901C + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080A901C + movs r0, #0x1e + strb r0, [r4, #0xf] + ldr r1, _080A9048 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_080A901C: + adds r0, r4, #0 + movs r1, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080A9054 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080A90D8 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bne _080A904C + movs r0, #0xf + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x54 + bl sub_08004260 + b _080A9054 + .align 2, 0 +_080A9048: .4byte gLinkEntity +_080A904C: + adds r0, r4, #0 + movs r1, #0x52 + bl sub_08004260 +_080A9054: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9058 +sub_080A9058: @ 0x080A9058 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bne _080A9098 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080A908A + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + movs r0, #3 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0x55 + bl sub_08004260 + b _080A90BA +_080A908A: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_080A90D8 + b _080A90BA +_080A9098: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A90BA + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #0x53 + bl sub_08004260 +_080A90BA: + pop {r4, pc} + + thumb_func_start sub_080A90BC +sub_080A90BC: @ 0x080A90BC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A90D4 + bl sub_0805E780 +_080A90D4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A90D8 +sub_080A90D8: @ 0x080A90D8 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + movs r0, #0x74 + adds r0, r0, r5 + mov ip, r0 + ldrh r3, [r0] + movs r1, #0x2e + ldrsh r0, [r5, r1] + ldr r7, _080A9154 @ =gUnk_03000BF0 + ldrh r1, [r7, #6] + subs r0, r0, r1 + asrs r4, r0, #4 + movs r6, #0x3f + adds r2, r4, #0 + ands r2, r6 + movs r1, #0x32 + ldrsh r0, [r5, r1] + ldrh r1, [r7, #8] + subs r0, r0, r1 + asrs r1, r0, #4 + adds r0, r1, #0 + ands r0, r6 + lsls r0, r0, #6 + orrs r2, r0 + cmp r3, r2 + beq _080A9152 + movs r0, #0x3f + ands r4, r0 + ands r1, r0 + lsls r0, r1, #6 + orrs r4, r0 + mov r2, ip + strh r4, [r2] + adds r0, r5, #0 + bl sub_080002A0 + cmp r0, #0x13 + beq _080A9128 + cmp r0, #0x34 + bne _080A9152 +_080A9128: + movs r0, #0xd3 + lsls r0, r0, #2 + movs r3, #0x2e + ldrsh r1, [r5, r3] + ldrh r2, [r7, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + movs r3, #0x32 + ldrsh r2, [r5, r3] + ldrh r3, [r7, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r6 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 +_080A9152: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080A9154: .4byte gUnk_03000BF0 + + thumb_func_start sub_080A9158 +sub_080A9158: @ 0x080A9158 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xc] + cmp r0, #0 + bne _080A9166 + movs r0, #1 + strb r0, [r5, #0xc] +_080A9166: + ldr r4, [r5, #0x50] + cmp r4, #0 + beq _080A917C + adds r0, r4, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _080A917C + ldr r0, [r4, #4] + cmp r0, #0 + bne _080A91A4 +_080A917C: + adds r0, r5, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A9198 + ldr r1, [r5, #0x4c] + ldr r0, _080A91A0 @ =gLinkEntity + cmp r1, r0 + bne _080A9198 + adds r0, r5, #0 + bl sub_0803C0AC +_080A9198: + adds r0, r5, #0 + bl sub_0805E7BC + b _080A91D8 + .align 2, 0 +_080A91A0: .4byte gLinkEntity +_080A91A4: + ldr r1, _080A91DC @ =gUnk_08129998 + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r5, #0x48] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + beq _080A91D8 + adds r1, r5, #0 + adds r1, #0x3d + ldrb r2, [r1] + movs r0, #0 + ldrsb r0, [r1, r0] + cmp r0, #0 + bne _080A91D8 + movs r0, #0xff + strb r0, [r1] +_080A91D8: + pop {r4, r5, pc} + .align 2, 0 +_080A91DC: .4byte gUnk_08129998 + + thumb_func_start sub_080A91E0 +sub_080A91E0: @ 0x080A91E0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080A9288 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080A9204 + movs r0, #1 + strb r0, [r4, #0xc] + bl sub_08000E50 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_080A9204: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080A921C + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _080A9218 + movs r0, #0xff + strb r0, [r1, #0xa] +_080A9218: + bl sub_0805E780 +_080A921C: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080A9230 + subs r0, #1 + strb r0, [r4, #0xf] + b _080A92F6 +_080A9230: + adds r0, r4, #0 + bl sub_080644C8 + cmp r0, #0 + beq _080A92F6 + ldrb r1, [r4, #0xe] + adds r0, r1, #1 + strb r0, [r4, #0xe] + movs r0, #3 + ands r0, r1 + cmp r0, #0 + bne _080A92F6 + movs r0, #0xc + bl sub_080A7EE0 + adds r5, r0, #0 + cmp r5, #0 + beq _080A92F6 + movs r0, #1 + strb r0, [r5, #0xa] + ldr r0, [r4, #0x50] + adds r0, #0x3e + ldrb r1, [r0] + ldr r3, _080A9284 @ =gUnk_081299C8 + ldrb r0, [r4, #0xe] + lsrs r0, r0, #2 + movs r2, #7 + ands r0, r2 + adds r0, r0, r3 + lsls r1, r1, #3 + ldrb r0, [r0] + adds r1, r1, r0 + movs r0, #0x1f + ands r1, r0 + strb r1, [r5, #0x15] + ldr r0, [r4, #0x50] + str r0, [r5, #0x50] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + b _080A92F6 + .align 2, 0 +_080A9284: .4byte gUnk_081299C8 +_080A9288: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080A92B0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x12 + strb r0, [r4, #0xe] + ldrb r1, [r4, #0x18] + subs r0, #0x16 + ands r0, r1 + strb r0, [r4, #0x18] + movs r0, #0x80 + lsls r0, r0, #4 + strh r0, [r4, #0x24] + ldr r0, _080A92F8 @ =gUnk_080FD1E4 + str r0, [r4, #0x48] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_080A92B0: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080A92C8 + ldr r1, [r4, #0x50] + cmp r1, #0 + beq _080A92C4 + movs r0, #0xff + strb r0, [r1, #0xa] +_080A92C4: + bl sub_0805E780 +_080A92C8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A92D8 + bl sub_0805E780 +_080A92D8: + adds r0, r4, #0 + bl sub_0806F69C + ldr r0, _080A92FC @ =gUnk_02027EB4 + movs r2, #0x2e + ldrsh r1, [r4, r2] + movs r3, #0x32 + ldrsh r2, [r4, r3] + movs r3, #2 + bl sub_080AE4CC + cmp r0, #0 + beq _080A92F6 + bl sub_0805E780 +_080A92F6: + pop {r4, r5, pc} + .align 2, 0 +_080A92F8: .4byte gUnk_080FD1E4 +_080A92FC: .4byte gUnk_02027EB4 + + thumb_func_start sub_080A9300 +sub_080A9300: @ 0x080A9300 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A9318 @ =gUnk_081299D0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A9318: .4byte gUnk_081299D0 + + thumb_func_start sub_080A931C +sub_080A931C: @ 0x080A931C + push {lr} + ldr r2, _080A9330 @ =gUnk_081299E4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A9330: .4byte gUnk_081299E4 + + thumb_func_start sub_080A9334 +sub_080A9334: @ 0x080A9334 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A936C + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + beq _080A9368 + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + adds r0, r4, #0 + bl sub_080A9488 + adds r0, r4, #0 + adds r0, #0x42 + movs r1, #0 + strb r1, [r0] + subs r0, #5 + strb r1, [r0] + b _080A936C +_080A9368: + bl sub_0805E780 +_080A936C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9370 +sub_080A9370: @ 0x080A9370 + push {r4, lr} + movs r4, #0 + movs r3, #1 + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r2, [r0, #0x18] + subs r1, #5 + ands r1, r2 + orrs r1, r3 + strb r1, [r0, #0x18] + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + movs r1, #0x6a + strb r1, [r0, #0xe] + strb r4, [r0, #0xf] + movs r1, #0xa0 + lsls r1, r1, #4 + str r1, [r0, #0x20] + ldrb r1, [r0, #0xa] + bl sub_080A94C0 + pop {r4, pc} + + thumb_func_start sub_080A93A0 +sub_080A93A0: @ 0x080A93A0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + cmp r5, #0 + beq _080A93B0 + ldr r0, [r5, #4] + cmp r0, #0 + bne _080A93B4 +_080A93B0: + bl sub_0805E780 +_080A93B4: + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080A93BE + bl sub_0805E780 +_080A93BE: + ldrb r0, [r5, #0xf] + cmp r0, #0 + beq _080A93DA + movs r2, #0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r4, #0x10] + str r2, [r5, #0x54] + movs r0, #0xfc + bl sub_080A3268 +_080A93DA: + pop {r4, r5, pc} + + thumb_func_start sub_080A93DC +sub_080A93DC: @ 0x080A93DC + push {r4, lr} + adds r4, r0, #0 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080A9414 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0x20 + strb r0, [r4, #0xe] + adds r0, r4, #0 + adds r0, #0x58 + ldrb r1, [r0] + adds r1, #2 + adds r0, r4, #0 + bl sub_08004260 + movs r0, #0xc5 + lsls r0, r0, #1 + bl sub_08004488 + adds r0, r4, #0 + bl sub_0806F69C + b _080A9424 +_080A9414: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A9424 + bl sub_0805E780 +_080A9424: + adds r0, r4, #0 + bl sub_080AF090 + pop {r4, pc} + + thumb_func_start sub_080A942C +sub_080A942C: @ 0x080A942C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A9440 + bl sub_0805E780 +_080A9440: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080A9448 +sub_080A9448: @ 0x080A9448 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xa0 + lsls r1, r1, #6 + bl sub_08003FC4 + cmp r0, #0 + bne _080A9464 + adds r0, r4, #0 + bl sub_080A29BC + bl sub_0805E780 + b _080A9486 +_080A9464: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A9486 + movs r0, #2 + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x14] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0x14] + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080A94C0 +_080A9486: + pop {r4, pc} + + thumb_func_start sub_080A9488 +sub_080A9488: @ 0x080A9488 + push {r4, lr} + adds r4, r0, #0 + movs r0, #4 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #2 + strb r0, [r4, #0xe] + movs r0, #0xc0 + lsls r0, r0, #9 + str r0, [r4, #0x20] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r1, [r0] + movs r0, #0x18 + ands r0, r1 + lsrs r0, r0, #3 + strb r0, [r4, #0x14] + movs r0, #0x74 + bl sub_08004488 + ldrb r1, [r4, #0x14] + adds r0, r4, #0 + bl sub_080A94C0 + pop {r4, pc} + + thumb_func_start sub_080A94C0 +sub_080A94C0: @ 0x080A94C0 + push {r4, lr} + lsls r1, r1, #3 + ldr r2, _080A94FC @ =gUnk_081299F8 + adds r1, r1, r2 + ldrb r3, [r1] + movs r2, #1 + ands r3, r2 + lsls r3, r3, #6 + ldrb r4, [r0, #0x18] + movs r2, #0x41 + rsbs r2, r2, #0 + ands r2, r4 + orrs r2, r3 + strb r2, [r0, #0x18] + ldrb r3, [r1, #1] + lsls r3, r3, #7 + movs r4, #0x7f + ands r2, r4 + orrs r2, r3 + strb r2, [r0, #0x18] + ldrb r2, [r1, #2] + adds r3, r0, #0 + adds r3, #0x58 + strb r2, [r3] + ldr r1, [r1, #4] + str r1, [r0, #0x48] + ldrb r1, [r3] + bl sub_08004260 + pop {r4, pc} + .align 2, 0 +_080A94FC: .4byte gUnk_081299F8 + + thumb_func_start sub_080A9500 +sub_080A9500: @ 0x080A9500 + push {lr} + ldr r2, _080A9514 @ =gUnk_08129A64 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A9514: .4byte gUnk_08129A64 + + thumb_func_start sub_080A9518 +sub_080A9518: @ 0x080A9518 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0xa + strb r1, [r0, #0xe] + ldrh r1, [r0, #0x36] + subs r1, #2 + strh r1, [r0, #0x36] + ldrh r1, [r0, #0x32] + adds r1, #2 + strh r1, [r0, #0x32] + movs r1, #0 + bl sub_08004260 + ldr r0, _080A953C @ =0x00000149 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_080A953C: .4byte 0x00000149 + + thumb_func_start sub_080A9540 +sub_080A9540: @ 0x080A9540 + push {r4, lr} + adds r3, r0, #0 + ldrb r0, [r3, #0xe] + subs r0, #1 + strb r0, [r3, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A9578 + movs r0, #2 + strb r0, [r3, #0xc] + ldrb r1, [r3, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r3, #0x10] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldrh r0, [r3, #0x32] + adds r0, #6 + strh r0, [r3, #0x32] + adds r0, r3, #0 + movs r1, #1 + bl sub_08004260 + b _080A95B6 +_080A9578: + ldrh r1, [r3, #0x36] + movs r2, #0x36 + ldrsh r0, [r3, r2] + cmp r0, #0 + beq _080A9586 + adds r0, r1, #1 + strh r0, [r3, #0x36] +_080A9586: + ldrb r1, [r3, #0x15] + lsls r1, r1, #1 + ldr r0, _080A95B8 @ =gUnk_080C9160 + adds r1, r1, r0 + movs r4, #0 + ldrsh r2, [r1, r4] + movs r4, #0x24 + ldrsh r0, [r3, r4] + muls r2, r0, r2 + ldr r0, [r3, #0x2c] + adds r0, r0, r2 + str r0, [r3, #0x2c] + adds r1, #0x80 + movs r0, #0 + ldrsh r1, [r1, r0] + movs r2, #0x24 + ldrsh r0, [r3, r2] + muls r1, r0, r1 + ldr r0, [r3, #0x30] + subs r0, r0, r1 + str r0, [r3, #0x30] + adds r0, r3, #0 + bl sub_08004274 +_080A95B6: + pop {r4, pc} + .align 2, 0 +_080A95B8: .4byte gUnk_080C9160 + + thumb_func_start sub_080A95BC +sub_080A95BC: @ 0x080A95BC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A95D8 + adds r0, r4, #0 + bl sub_0805E7BC +_080A95D8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A95DC +sub_080A95DC: @ 0x080A95DC + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A95F4 @ =gUnk_08129ABC + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A95F4: .4byte gUnk_08129ABC + + thumb_func_start sub_080A95F8 +sub_080A95F8: @ 0x080A95F8 + push {lr} + ldr r2, _080A960C @ =gUnk_08129AD0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A960C: .4byte gUnk_08129AD0 + + thumb_func_start sub_080A9610 +sub_080A9610: @ 0x080A9610 + push {r4, r5, lr} + adds r4, r0, #0 + movs r5, #1 + strb r5, [r4, #0xc] + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _080A9660 + cmp r0, #1 + bgt _080A9628 + cmp r0, #0 + beq _080A9632 + b _080A9756 +_080A9628: + cmp r0, #2 + beq _080A96D0 + cmp r0, #3 + beq _080A9718 + b _080A9756 +_080A9632: + movs r1, #0x90 + lsls r1, r1, #7 + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + strb r1, [r4, #0xe] + ldrb r0, [r4, #0x15] + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x78 + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1] + adds r0, r4, #0 + movs r1, #0 + bl sub_080042AC + b _080A9756 +_080A9660: + ldrb r0, [r4, #0x19] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #6 + orrs r0, r1 + strb r0, [r2] + bl sub_08000E50 + ldr r2, _080A96C8 @ =0x000001FF + adds r1, r2, #0 + ands r0, r1 + adds r2, #1 + adds r1, r2, #0 + adds r0, r0, r1 + strh r0, [r4, #0x24] + bl sub_08000E50 + ldr r1, _080A96CC @ =0x00001FFF + ands r1, r0 + movs r0, #0xc0 + lsls r0, r0, #9 + adds r1, r1, r0 + str r1, [r4, #0x20] + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + subs r0, #4 + ldrb r1, [r4, #0x15] + subs r1, r1, r0 + strb r1, [r4, #0x15] + movs r0, #0x96 + lsls r0, r0, #2 + str r0, [r4, #0x78] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + adds r0, r4, #0 + movs r1, #4 + bl sub_08004260 + b _080A9756 + .align 2, 0 +_080A96C8: .4byte 0x000001FF +_080A96CC: .4byte 0x00001FFF +_080A96D0: + bl sub_08000E50 + ands r0, r5 + cmp r0, #0 + beq _080A96EA + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + ldrb r1, [r4, #0x15] + adds r0, r0, r1 + strb r0, [r4, #0x15] + b _080A96F8 +_080A96EA: + bl sub_08000E50 + movs r1, #7 + ands r0, r1 + ldrb r1, [r4, #0x15] + subs r1, r1, r0 + strb r1, [r4, #0x15] +_080A96F8: + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + movs r0, #0x30 + strb r0, [r4, #0xe] + movs r1, #0xa0 + lsls r1, r1, #7 + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + adds r0, r4, #0 + movs r1, #5 + bl sub_08004260 + b _080A9756 +_080A9718: + ldr r0, _080A9760 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FA24 + ldr r0, _080A9764 @ =0xFF600000 + str r0, [r4, #0x34] + ldrh r0, [r4, #0x2e] + adds r0, #0x60 + strh r0, [r4, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, #0x40 + strh r0, [r4, #0x32] + bl sub_08000E50 + movs r1, #0xc0 + bl __modsi3 + ldrh r1, [r4, #0x2e] + subs r1, r1, r0 + strh r1, [r4, #0x2e] + bl sub_08000E50 + movs r1, #0x7f + ands r1, r0 + ldrh r0, [r4, #0x32] + subs r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_080A9756: + ldr r0, _080A9768 @ =0x000001B5 + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_080A9760: .4byte gLinkEntity +_080A9764: .4byte 0xFF600000 +_080A9768: .4byte 0x000001B5 + + thumb_func_start sub_080A976C +sub_080A976C: @ 0x080A976C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + bne _080A9778 + b _080A9908 +_080A9778: + cmp r0, #1 + bgt _080A9782 + cmp r0, #0 + beq _080A9790 + b _080A99EE +_080A9782: + cmp r0, #2 + bne _080A9788 + b _080A99A0 +_080A9788: + cmp r0, #3 + bne _080A978E + b _080A99D2 +_080A978E: + b _080A99EE +_080A9790: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #2 + bne _080A979C + bl sub_0805E780 +_080A979C: + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080A97E0 + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A97E0 + movs r5, #0x7f + adds r0, r5, #0 + ands r0, r1 + cmp r0, #0 + bne _080A97C0 + adds r0, r4, #0 + bl sub_080A99F0 +_080A97C0: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + lsls r0, r0, #3 + strb r0, [r4, #0x15] + movs r1, #0 + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + movs r0, #1 + strb r0, [r4, #0xb] + strb r1, [r4, #0xe] + ldrb r1, [r4, #0x10] + adds r0, r5, #0 + ands r0, r1 + strb r0, [r4, #0x10] +_080A97E0: + ldr r1, [r4, #0x50] + adds r0, r4, #0 + movs r2, #0x40 + bl sub_0806FC80 + cmp r0, #0 + beq _080A9848 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080A9804 + ldrb r0, [r4, #0x15] + movs r1, #0x80 + eors r0, r1 + strb r0, [r4, #0x15] + movs r0, #0x80 + lsls r0, r0, #3 + strh r0, [r4, #0x24] + b _080A9848 +_080A9804: + ldr r1, [r4, #0x50] + adds r1, #0x45 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + ldr r0, [r4, #0x50] + adds r0, #0x3d + movs r1, #0x1e + strb r1, [r0] + ldr r1, [r4, #0x50] + adds r0, r1, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + beq _080A983C + adds r1, #0x42 + movs r0, #0x18 + strb r0, [r1] + ldr r0, [r4, #0x50] + adds r0, #0x46 + movs r1, #0x80 + lsls r1, r1, #2 + strh r1, [r0] + ldr r1, [r4, #0x50] + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + adds r1, #0x3e + strb r0, [r1] +_080A983C: + ldr r0, _080A98B8 @ =0x00000127 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_080A99F0 +_080A9848: + adds r0, r4, #0 + bl sub_080042B8 + adds r5, r4, #0 + adds r5, #0x78 + ldrh r0, [r5] + subs r0, #1 + strh r0, [r5] + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + movs r0, #0xee + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080A9882 + ldrb r0, [r4, #0x15] + rsbs r0, r0, #0 + strb r0, [r4, #0x15] +_080A9882: + ldrh r1, [r4, #0x2a] + movs r0, #0xee + ands r0, r1 + cmp r0, #0 + beq _080A989A + ldrb r0, [r4, #0x15] + rsbs r0, r0, #0 + movs r2, #0x80 + rsbs r2, r2, #0 + adds r1, r2, #0 + eors r0, r1 + strb r0, [r4, #0x15] +_080A989A: + ldrb r0, [r4, #0x15] + ldrb r1, [r4, #0xf] + cmp r0, r1 + bne _080A98A4 + b _080A99EE +_080A98A4: + movs r0, #0xb2 + lsls r0, r0, #1 + bl sub_080A3268 + ldrh r0, [r5] + cmp r0, #0 + bne _080A98BC + movs r0, #4 + b _080A98C0 + .align 2, 0 +_080A98B8: .4byte 0x00000127 +_080A98BC: + ldrb r0, [r4, #0xe] + adds r0, #1 +_080A98C0: + strb r0, [r4, #0xe] + ldrb r0, [r4, #0x15] + strb r0, [r4, #0xf] + ldrb r0, [r4, #0xe] + cmp r0, #1 + bhi _080A98CE + b _080A99EE +_080A98CE: + movs r5, #0 +_080A98D0: + adds r0, r4, #0 + movs r1, #0xf + movs r2, #1 + bl sub_0804A98C + adds r1, r0, #0 + str r1, [r4, #0x54] + cmp r1, #0 + beq _080A98FC + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + ldr r1, [r4, #0x54] + ldr r0, _080A9904 @ =gUnk_08129ADC + adds r0, r5, r0 + ldrb r0, [r0] + ldrb r2, [r4, #0x15] + adds r0, r0, r2 + strb r0, [r1, #0x15] + ldr r1, [r4, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 +_080A98FC: + adds r5, #1 + cmp r5, #2 + bls _080A98D0 + b _080A9998 + .align 2, 0 +_080A9904: .4byte gUnk_08129ADC +_080A9908: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #2 + bne _080A9916 + adds r0, r4, #0 + bl sub_080A99F0 +_080A9916: + adds r0, r4, #0 + bl sub_08004274 + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _080A9950 + ldrb r1, [r4, #0x15] + lsrs r1, r1, #3 + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE58C + ldrh r0, [r4, #0x2a] + cmp r0, #0 + bne _080A994A + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + b _080A9950 +_080A994A: + adds r0, r4, #0 + bl sub_080A99F0 +_080A9950: + ldr r2, [r4, #0x78] + cmp r2, #0x1d + bhi _080A9978 + movs r0, #7 + ands r0, r2 + cmp r0, #0 + beq _080A996E + ldrb r0, [r4, #0x18] + movs r1, #4 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x18] + b _080A9978 +_080A996E: + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] +_080A9978: + subs r1, r2, #1 + str r1, [r4, #0x78] + movs r0, #1 + rsbs r0, r0, #0 + cmp r1, r0 + bne _080A998A + adds r0, r4, #0 + bl sub_080A99F0 +_080A998A: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A99EE +_080A9998: + adds r0, r4, #0 + bl sub_080A99F0 + b _080A99EE +_080A99A0: + adds r0, r4, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + beq _080A99C2 + movs r2, #0x24 + ldrsh r1, [r4, r2] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + bl sub_0806F62C + b _080A99EE +_080A99C2: + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _080A99CC + movs r0, #1 + strb r0, [r1, #0xe] +_080A99CC: + bl sub_0805E780 + b _080A99EE +_080A99D2: + movs r1, #0xc0 + lsls r1, r1, #5 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080A99EE + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080A99EE: + pop {r4, r5, pc} + + thumb_func_start sub_080A99F0 +sub_080A99F0: @ 0x080A99F0 + push {lr} + movs r1, #4 + movs r2, #0 + bl CreateFX + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080A9A00 +sub_080A9A00: @ 0x080A9A00 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A9A18 @ =gUnk_08129AE0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A9A18: .4byte gUnk_08129AE0 + + thumb_func_start sub_080A9A1C +sub_080A9A1C: @ 0x080A9A1C + push {lr} + ldr r2, _080A9A30 @ =gUnk_08129AF8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A9A30: .4byte gUnk_08129AF8 + + thumb_func_start sub_080A9A34 +sub_080A9A34: @ 0x080A9A34 + push {lr} + adds r2, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x9d + bne _080A9A62 + movs r0, #3 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r2, #0x20] + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r2] +_080A9A62: + pop {pc} + + thumb_func_start sub_080A9A64 +sub_080A9A64: @ 0x080A9A64 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #2 + bhi _080A9A7E + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + bne _080A9A7E + adds r0, r4, #0 + bl sub_080A9BA8 +_080A9A7E: + ldr r0, _080A9A90 @ =gUnk_08129B08 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A9A90: .4byte gUnk_08129B08 + + thumb_func_start sub_080A9A94 +sub_080A9A94: @ 0x080A9A94 + movs r1, #2 + strb r1, [r0, #0xd] + ldr r1, _080A9AA0 @ =0x0000FFFE + strh r1, [r0, #0x36] + bx lr + .align 2, 0 +_080A9AA0: .4byte 0x0000FFFE + + thumb_func_start sub_080A9AA4 +sub_080A9AA4: @ 0x080A9AA4 + push {lr} + bl sub_0806F4E8 + pop {pc} + + thumb_func_start sub_080A9AAC +sub_080A9AAC: @ 0x080A9AAC + push {lr} + bl sub_0806F3E4 + pop {pc} + + thumb_func_start sub_080A9AB4 +sub_080A9AB4: @ 0x080A9AB4 + ldrb r2, [r0, #0x10] + movs r1, #0x7f + ands r1, r2 + strb r1, [r0, #0x10] + bx lr + .align 2, 0 + + thumb_func_start nullsub_128 +nullsub_128: @ 0x080A9AC0 + bx lr + .align 2, 0 + + thumb_func_start sub_080A9AC4 +sub_080A9AC4: @ 0x080A9AC4 + push {lr} + bl sub_080A9BA8 + pop {pc} + + thumb_func_start sub_080A9ACC +sub_080A9ACC: @ 0x080A9ACC + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xb] + cmp r0, #1 + beq _080A9AE0 + cmp r0, #2 + beq _080A9AEE + movs r0, #1 + strb r0, [r2, #0xc] + b _080A9B0A +_080A9AE0: + movs r0, #2 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r2, #0x10] + b _080A9B0A +_080A9AEE: + movs r0, #3 + strb r0, [r2, #0xc] + movs r0, #0xa8 + lsls r0, r0, #0xa + str r0, [r2, #0x20] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + movs r0, #0x39 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #8 + orrs r0, r1 + strb r0, [r3] +_080A9B0A: + movs r0, #2 + strb r0, [r2, #0x1c] + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _080A9B1E + adds r0, r2, #0 + movs r1, #5 + bl sub_08004260 + b _080A9B22 +_080A9B1E: + movs r0, #0 + strb r0, [r2, #0x1e] +_080A9B22: + pop {pc} + + thumb_func_start sub_080A9B24 +sub_080A9B24: @ 0x080A9B24 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080A9B36 + adds r0, r4, #0 + bl sub_080A9BA8 +_080A9B36: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #0xb + bne _080A9B46 + adds r0, r4, #0 + bl sub_080A9BD0 + b _080A9B50 +_080A9B46: + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + bl sub_080A9C34 +_080A9B50: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9B54 +sub_080A9B54: @ 0x080A9B54 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080A9B66 + adds r0, r4, #0 + bl sub_080A9BA8 +_080A9B66: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #9 + bne _080A9B76 + adds r0, r4, #0 + bl sub_080A9C34 + b _080A9B7C +_080A9B76: + adds r0, r4, #0 + bl sub_080A9C50 +_080A9B7C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9B80 +sub_080A9B80: @ 0x080A9B80 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x20] + cmp r0, #0 + bge _080A9B92 + ldrb r0, [r4, #0x18] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r4, #0x18] +_080A9B92: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080A9BA6 + adds r0, r4, #0 + bl sub_080A9BA8 +_080A9BA6: + pop {r4, pc} + + thumb_func_start sub_080A9BA8 +sub_080A9BA8: @ 0x080A9BA8 + push {lr} + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + cmp r0, #0 + bne _080A9BBE + adds r0, r1, #0 + movs r1, #5 + movs r2, #0 + bl CreateFX + b _080A9BC8 +_080A9BBE: + adds r0, r1, #0 + movs r1, #0x3c + movs r2, #0 + bl CreateFX +_080A9BC8: + bl sub_0805E780 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080A9BD0 +sub_080A9BD0: @ 0x080A9BD0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, [r5, #0x50] + ldrb r0, [r1, #0x14] + cmp r0, #1 + beq _080A9BF8 + cmp r0, #1 + bgt _080A9BE6 + cmp r0, #0 + beq _080A9BF0 + b _080A9C06 +_080A9BE6: + cmp r0, #2 + beq _080A9C00 + cmp r0, #3 + beq _080A9BF8 + b _080A9C06 +_080A9BF0: + ldrb r0, [r1, #0x1e] + adds r2, r0, #0 + subs r2, #0x39 + b _080A9C06 +_080A9BF8: + ldrb r0, [r1, #0x1e] + adds r2, r0, #0 + subs r2, #0x3d + b _080A9C06 +_080A9C00: + ldrb r0, [r1, #0x1e] + adds r2, r0, #0 + subs r2, #0x41 +_080A9C06: + ldrb r0, [r1, #0x14] + lsls r0, r0, #2 + adds r0, r2, r0 + lsls r4, r0, #1 + adds r4, r4, r0 + ldr r0, _080A9C30 @ =gUnk_08129B20 + adds r4, r4, r0 + movs r2, #0 + ldrsb r2, [r4, r2] + movs r3, #1 + ldrsb r3, [r4, r3] + adds r0, r1, #0 + adds r1, r5, #0 + bl sub_0806FA90 + movs r0, #2 + ldrsb r0, [r4, r0] + ldrh r1, [r5, #0x36] + adds r0, r0, r1 + strh r0, [r5, #0x36] + pop {r4, r5, pc} + .align 2, 0 +_080A9C30: .4byte gUnk_08129B20 + + thumb_func_start sub_080A9C34 +sub_080A9C34: @ 0x080A9C34 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806FA90 + adds r4, #0x63 + ldrb r0, [r4] + subs r0, #0xe + strb r0, [r4] + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9C50 +sub_080A9C50: @ 0x080A9C50 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r1, [r5, #0x50] + ldrb r0, [r1, #0x14] + cmp r0, #1 + beq _080A9C78 + cmp r0, #1 + bgt _080A9C66 + cmp r0, #0 + beq _080A9C70 + b _080A9C86 +_080A9C66: + cmp r0, #2 + beq _080A9C80 + cmp r0, #3 + beq _080A9C78 + b _080A9C86 +_080A9C70: + ldrb r0, [r1, #0x1e] + adds r4, r0, #0 + subs r4, #0x27 + b _080A9C86 +_080A9C78: + ldrb r0, [r1, #0x1e] + adds r4, r0, #0 + subs r4, #0x2d + b _080A9C86 +_080A9C80: + ldrb r0, [r1, #0x1e] + adds r4, r0, #0 + subs r4, #0x33 +_080A9C86: + adds r0, r1, #0 + adds r1, r5, #0 + movs r2, #0 + movs r3, #1 + bl sub_0806FA90 + adds r0, r5, #0 + adds r0, #0x63 + ldr r1, _080A9CA4 @ =gUnk_08129B50 + adds r1, r4, r1 + ldrb r1, [r1] + ldrb r2, [r0] + adds r1, r1, r2 + strb r1, [r0] + pop {r4, r5, pc} + .align 2, 0 +_080A9CA4: .4byte gUnk_08129B50 + + thumb_func_start sub_080A9CA8 +sub_080A9CA8: @ 0x080A9CA8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080A9CB8 + bl sub_0805E780 +_080A9CB8: + ldr r4, _080A9CD0 @ =gUnk_08129B58 + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A9CD0: .4byte gUnk_08129B58 + + thumb_func_start sub_080A9CD4 +sub_080A9CD4: @ 0x080A9CD4 + push {lr} + ldr r2, _080A9CE8 @ =gUnk_08129B70 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A9CE8: .4byte gUnk_08129B70 + + thumb_func_start nullsub_539 +nullsub_539: @ 0x080A9CEC + bx lr + .align 2, 0 + + thumb_func_start sub_080A9CF0 +sub_080A9CF0: @ 0x080A9CF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + bne _080A9D0A + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080A9D0A: + ldr r0, _080A9D1C @ =gUnk_08129B78 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A9D1C: .4byte gUnk_08129B78 + + thumb_func_start sub_080A9D20 +sub_080A9D20: @ 0x080A9D20 + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start nullsub_540 +nullsub_540: @ 0x080A9D28 + bx lr + .align 2, 0 + + thumb_func_start sub_080A9D2C +sub_080A9D2C: @ 0x080A9D2C + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _080A9D64 + adds r0, r4, #0 + adds r0, #0x3f + ldrb r0, [r0] + cmp r0, #0xa6 + bne _080A9D56 + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + ldr r0, _080A9D68 @ =gLinkEntity + movs r1, #0x7a + bl sub_0800449C + bl sub_08079D84 +_080A9D56: + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080A9D64: + pop {r4, pc} + .align 2, 0 +_080A9D68: .4byte gLinkEntity + + thumb_func_start sub_080A9D6C +sub_080A9D6C: @ 0x080A9D6C + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + ldr r1, [r0, #0x50] + ldrb r1, [r1, #0x14] + strb r1, [r0, #0x14] + ldrb r1, [r0, #0x14] + bl sub_080042AC + pop {pc} + + thumb_func_start sub_080A9D80 +sub_080A9D80: @ 0x080A9D80 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r3, _080A9D9C @ =0xFFFF0000 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + ldr r0, _080A9DA0 @ =0x0000FFFE + strh r0, [r4, #0x36] + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + .align 2, 0 +_080A9D9C: .4byte 0xFFFF0000 +_080A9DA0: .4byte 0x0000FFFE + + thumb_func_start sub_080A9DA4 +sub_080A9DA4: @ 0x080A9DA4 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080A9DBC @ =gUnk_08129BEC + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A9DBC: .4byte gUnk_08129BEC + + thumb_func_start sub_080A9DC0 +sub_080A9DC0: @ 0x080A9DC0 + push {lr} + ldr r2, _080A9DD4 @ =gUnk_08129C00 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080A9DD4: .4byte gUnk_08129C00 + + thumb_func_start sub_080A9DD8 +sub_080A9DD8: @ 0x080A9DD8 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + beq _080A9DEE + adds r0, r4, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x80 + bne _080A9DF2 +_080A9DEE: + bl sub_0805E780 +_080A9DF2: + adds r0, r4, #0 + bl sub_080A9DC0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9DFC +sub_080A9DFC: @ 0x080A9DFC + push {lr} + movs r2, #1 + strb r2, [r0, #0xc] + movs r1, #0xb4 + strb r1, [r0, #0xe] + adds r1, r0, #0 + adds r1, #0x45 + strb r2, [r1] + movs r1, #0 + bl sub_08004260 + pop {pc} + + thumb_func_start sub_080A9E14 +sub_080A9E14: @ 0x080A9E14 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + bne _080A9E34 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A9E42 +_080A9E34: + adds r0, r4, #0 + movs r1, #0x4f + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080A9E42: + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080A9E50 + bl sub_0805E780 +_080A9E50: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9E54 +sub_080A9E54: @ 0x080A9E54 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x54] + cmp r0, #0 + bne _080A9E60 + ldr r0, [r5, #0x50] +_080A9E60: + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + bne _080A9E78 + ldrb r1, [r5, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080A9E78 + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] +_080A9E78: + ldr r4, _080A9E90 @ =gUnk_08129C7C + adds r0, r5, #0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080A9E90: .4byte gUnk_08129C7C + + thumb_func_start sub_080A9E94 +sub_080A9E94: @ 0x080A9E94 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #2 + bhi _080A9EA4 + adds r0, r4, #0 + bl sub_080AA1D8 +_080A9EA4: + ldr r0, _080A9EB8 @ =gUnk_08129C90 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080A9EB8: .4byte gUnk_08129C90 + + thumb_func_start sub_080A9EBC +sub_080A9EBC: @ 0x080A9EBC + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080A9F4E + ldrb r0, [r4, #0xc] + cmp r0, #3 + beq _080A9EF2 + cmp r0, #4 + bne _080A9F18 + movs r0, #0 + strb r0, [r4, #0xf] + subs r0, #2 + bl sub_080526A0 + adds r0, r4, #0 + bl sub_080AF090 + adds r0, r4, #0 + bl sub_080042B8 + adds r5, r4, #0 + adds r5, #0x42 + b _080A9F4A +_080A9EF2: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + adds r5, r4, #0 + adds r5, #0x42 + cmp r0, #0 + beq _080A9F4A + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #2 + strb r0, [r1] + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + bl sub_080AA270 + movs r0, #0x20 + strb r0, [r4, #0xf] + b _080A9F4A +_080A9F18: + ldr r3, [r4, #0x50] + adds r0, r4, #0 + adds r0, #0x3d + ldrb r0, [r0] + adds r1, r3, #0 + adds r1, #0x3d + strb r0, [r1] + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + adds r1, #1 + strb r0, [r1] + adds r2, r4, #0 + adds r2, #0x42 + ldrb r1, [r2] + adds r0, r3, #0 + adds r0, #0x42 + strb r1, [r0] + ldrb r0, [r4, #0xc] + adds r5, r2, #0 + cmp r0, #1 + bne _080A9F4A + adds r0, r4, #0 + bl sub_080AA320 +_080A9F4A: + movs r0, #0 + strb r0, [r5] +_080A9F4E: + pop {r4, r5, pc} + + thumb_func_start sub_080A9F50 +sub_080A9F50: @ 0x080A9F50 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + adds r0, #0x80 + movs r2, #0 + strh r1, [r0] + movs r0, #0xff + strb r0, [r4, #0x14] + adds r0, r4, #0 + adds r0, #0x82 + strb r2, [r0] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #4 + orrs r0, r1 + strb r0, [r2] + ldr r1, [r4, #0x50] + adds r0, r4, #0 + bl sub_0806FAD8 + adds r0, r4, #0 + bl sub_080AA270 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080A9F90 +sub_080A9F90: @ 0x080A9F90 + push {r4, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x80 + ldrh r0, [r1] + cmp r0, #0 + beq _080A9FA4 + subs r0, #1 + strh r0, [r1] + b _080A9FC8 +_080A9FA4: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080A9FB8 + adds r0, r4, #0 + bl sub_080AA270 + b _080A9FC8 +_080A9FB8: + adds r0, r4, #0 + bl sub_080AA2E0 + cmp r0, #0 + beq _080A9FC8 + adds r0, r4, #0 + bl sub_080AA320 +_080A9FC8: + adds r0, r4, #0 + bl sub_080042B8 + pop {r4, pc} + + thumb_func_start sub_080A9FD0 +sub_080A9FD0: @ 0x080A9FD0 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080042B8 + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x40 + ands r0, r1 + cmp r0, #0 + beq _080A9FF2 + movs r0, #0xbf + ands r0, r1 + strb r0, [r2] + ldr r0, _080AA038 @ =0x0000015D + bl sub_08004488 +_080A9FF2: + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _080AA03C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r5, #0 + adds r4, #0x78 + strh r1, [r4] + ldrh r0, [r4] + adds r5, #0x38 + ldrb r1, [r5] + bl sub_080002B0 + movs r1, #0x80 + lsls r1, r1, #7 + cmp r0, r1 + bne _080AA034 + ldr r0, _080AA040 @ =0x00004005 + ldrh r1, [r4] + ldrb r2, [r5] + bl sub_0800015E +_080AA034: + pop {r4, r5, pc} + .align 2, 0 +_080AA038: .4byte 0x0000015D +_080AA03C: .4byte gUnk_03000BF0 +_080AA040: .4byte 0x00004005 + + thumb_func_start sub_080AA044 +sub_080AA044: @ 0x080AA044 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x54] + cmp r5, #0 + bne _080AA052 + bl sub_0805E780 +_080AA052: + ldr r0, [r5, #4] + cmp r0, #0 + bne _080AA05E + bl sub_0805E780 + b _080AA0A2 +_080AA05E: + ldrh r0, [r5, #0x12] + ldrb r1, [r5, #0x1e] + bl sub_080700C8 + adds r3, r0, #0 + ldrb r1, [r5, #0x14] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080AA08C + movs r2, #0 + ldrsb r2, [r3, r2] + rsbs r2, r2, #0 + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 + b _080AA0A2 +_080AA08C: + movs r2, #0 + ldrsb r2, [r3, r2] + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA48 +_080AA0A2: + adds r0, r5, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + bne _080AA108 + ldrb r0, [r4, #0xf] + cmp r0, #0 + beq _080AA0B8 + subs r0, #1 + strb r0, [r4, #0xf] + b _080AA108 +_080AA0B8: + adds r0, r4, #0 + bl sub_080042B8 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AA108 + movs r0, #4 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x82 + movs r0, #3 + strb r0, [r1] + movs r0, #0x40 + strb r0, [r4, #0xf] + ldrb r0, [r5, #0x14] + lsls r1, r0, #2 + strb r1, [r4, #0x15] + lsls r0, r0, #0x1a + lsrs r0, r0, #0x1a + strb r0, [r4, #0x14] + ldr r0, _080AA10C @ =gUnk_080FD150 + str r0, [r4, #0x48] + bl sub_08052660 + cmp r0, #0 + beq _080AA100 + ldrb r0, [r4, #0x1b] + movs r1, #0x3f + ands r1, r0 + movs r0, #0x40 + orrs r1, r0 + strb r1, [r4, #0x1b] +_080AA100: + adds r0, r4, #0 + movs r1, #0 + bl sub_080AA3E0 +_080AA108: + pop {r4, r5, pc} + .align 2, 0 +_080AA10C: .4byte gUnk_080FD150 + + thumb_func_start sub_080AA110 +sub_080AA110: @ 0x080AA110 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldr r7, [r6, #0x54] + cmp r7, #0 + beq _080AA1B6 + ldr r0, [r7, #4] + cmp r0, #0 + bne _080AA128 + str r0, [r6, #0x54] +_080AA128: + ldrb r0, [r6, #0xf] + adds r5, r0, #0 + cmp r5, #0 + beq _080AA136 + subs r0, #1 + strb r0, [r6, #0xf] + b _080AA1C4 +_080AA136: + adds r0, r6, #0 + bl sub_080AA374 + cmp r0, #0 + beq _080AA1C4 + adds r0, r7, #0 + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080AA14E + bl sub_0805E780 +_080AA14E: + movs r0, #0xf2 + bl sub_08004488 + movs r4, #1 + strb r4, [r6, #0xc] + movs r0, #0xff + strb r0, [r6, #0x14] + adds r0, r6, #0 + adds r0, #0x82 + strb r5, [r0] + strb r5, [r6, #0xe] + subs r0, #2 + movs r1, #0 + mov sb, r1 + movs r1, #0x20 + mov r8, r1 + mov r1, r8 + strh r1, [r0] + ldrb r1, [r6, #0x1b] + movs r0, #0x3f + ands r0, r1 + movs r1, #0x80 + orrs r0, r1 + strb r0, [r6, #0x1b] + ldr r0, [r6, #0x54] + str r0, [r6, #0x50] + str r5, [r6, #0x54] + adds r0, r6, #0 + bl sub_080AA270 + ldr r7, [r6, #0x50] + strb r4, [r7, #0xc] + ldrb r0, [r7, #0x14] + lsls r0, r0, #2 + strb r0, [r7, #0x15] + strh r5, [r7, #0x24] + adds r0, r7, #0 + adds r0, #0x82 + strb r4, [r0] + mov r0, sb + strb r0, [r7, #0xe] + movs r0, #0x78 + strb r0, [r7, #0xf] + adds r0, r7, #0 + adds r0, #0x80 + mov r1, r8 + strh r1, [r0] + adds r0, r7, #0 + movs r1, #1 + bl sub_080AA3E0 + b _080AA1C4 +_080AA1B6: + adds r0, r6, #0 + bl sub_080040A8 + cmp r0, #0 + bne _080AA1C4 + bl sub_0805E780 +_080AA1C4: + adds r0, r6, #0 + bl sub_0806F69C + adds r0, r6, #0 + bl sub_080042B8 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080AA1D8 +sub_080AA1D8: @ 0x080AA1D8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x50] + cmp r4, #0 + beq _080AA268 + ldr r0, [r4, #4] + cmp r0, #0 + bne _080AA1EC + bl sub_0805E780 +_080AA1EC: + ldrb r1, [r4, #0x1e] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080AA26C + ldrh r0, [r4, #0x12] + ldrb r1, [r4, #0x1e] + bl sub_080700C8 + adds r3, r0, #0 + ldrb r1, [r4, #0x14] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080AA224 + movs r2, #0 + ldrsb r2, [r3, r2] + rsbs r2, r2, #0 + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 + b _080AA23A +_080AA224: + movs r2, #0 + ldrsb r2, [r3, r2] + lsls r2, r2, #0x10 + ldrb r3, [r3, #1] + lsls r3, r3, #0x18 + asrs r3, r3, #0x18 + lsls r3, r3, #0x10 + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA48 +_080AA23A: + adds r0, r4, #0 + adds r0, #0x43 + ldrb r0, [r0] + cmp r0, #0 + beq _080AA256 + ldrb r1, [r5, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AA26C + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + b _080AA26C +_080AA256: + ldrb r1, [r5, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AA26C + movs r0, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + b _080AA26C +_080AA268: + bl sub_0805E780 +_080AA26C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AA270 +sub_080AA270: @ 0x080AA270 + push {r4, r5, r6, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x50] + bl sub_08000E50 + ldr r1, _080AA2A4 @ =gUnk_08129CA4 + movs r6, #7 + ands r0, r6 + adds r0, r0, r1 + ldrb r0, [r0] + strb r0, [r5, #0xf] + ldrb r4, [r4, #0x14] + ldrb r0, [r5, #0x14] + cmp r0, #0xff + bne _080AA2AC + strb r4, [r5, #0x14] + ldr r0, _080AA2A8 @ =gUnk_08129CF4 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r5, #0x48] + adds r0, r5, #0 + movs r1, #0 + bl sub_080AA3E0 + b _080AA2D6 + .align 2, 0 +_080AA2A4: .4byte gUnk_08129CA4 +_080AA2A8: .4byte gUnk_08129CF4 +_080AA2AC: + bl sub_08000E50 + ldr r1, _080AA2D8 @ =gUnk_08129CAC + ands r0, r6 + adds r0, r0, r1 + ldrb r0, [r0] + adds r4, r0, r4 + ands r4, r6 + ldrb r0, [r5, #0x14] + cmp r4, r0 + beq _080AA2D6 + strb r4, [r5, #0x14] + ldr r0, _080AA2DC @ =gUnk_08129CF4 + lsls r1, r4, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r5, #0x48] + adds r0, r5, #0 + movs r1, #0 + bl sub_080AA3E0 +_080AA2D6: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AA2D8: .4byte gUnk_08129CAC +_080AA2DC: .4byte gUnk_08129CF4 + + thumb_func_start sub_080AA2E0 +sub_080AA2E0: @ 0x080AA2E0 + push {r4, r5, lr} + adds r5, r0, #0 + movs r0, #0 + bl sub_08049DF4 + adds r4, r0, #0 + cmp r4, #0 + beq _080AA31C + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080045C4 + ldrb r1, [r5, #0x14] + lsls r1, r1, #2 + adds r0, #4 + movs r2, #0x1c + ands r0, r2 + adds r1, #4 + ands r1, r2 + cmp r0, r1 + bne _080AA31C + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0x40 + bl sub_08049F1C + cmp r0, #0 + beq _080AA31C + movs r0, #1 + b _080AA31E +_080AA31C: + movs r0, #0 +_080AA31E: + pop {r4, r5, pc} + + thumb_func_start sub_080AA320 +sub_080AA320: @ 0x080AA320 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, [r5, #0x50] + movs r2, #0 + movs r1, #2 + strb r1, [r5, #0xc] + adds r3, r5, #0 + adds r3, #0x82 + movs r0, #1 + strb r0, [r3] + strb r2, [r5, #0xf] + strb r1, [r4, #0xc] + movs r0, #0x30 + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x80 + movs r0, #0x50 + strh r0, [r1] + strh r2, [r4, #0x24] + adds r0, r4, #0 + movs r1, #0 + bl sub_08049F84 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0x15] + adds r0, #4 + movs r1, #0x1c + ands r0, r1 + lsrs r1, r0, #2 + strb r1, [r5, #0x14] + movs r1, #0x18 + ands r0, r1 + lsrs r0, r0, #2 + strb r0, [r4, #0x14] + adds r0, r4, #0 + movs r1, #1 + bl sub_080AA3E0 + adds r0, r5, #0 + bl sub_080AA1D8 + pop {r4, r5, pc} + + thumb_func_start sub_080AA374 +sub_080AA374: @ 0x080AA374 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r0, #0 + mov r8, r0 + ldr r5, [r6, #0x54] + cmp r5, #0 + beq _080AA3D8 + ldr r0, [r5, #4] + cmp r0, #0 + beq _080AA3D8 + ldrb r4, [r5, #0x14] + ldr r0, _080AA3CC @ =gUnk_08129D14 + adds r4, r4, r0 + movs r2, #0 + ldrsb r2, [r4, r2] + movs r3, #1 + ldrsb r3, [r4, r3] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_0806F824 + adds r7, r0, #0 + movs r0, #0x2e + ldrsh r1, [r5, r0] + movs r0, #0 + ldrsb r0, [r4, r0] + adds r1, r1, r0 + movs r0, #0x32 + ldrsh r2, [r5, r0] + movs r0, #1 + ldrsb r0, [r4, r0] + adds r2, r2, r0 + adds r0, r6, #0 + movs r3, #8 + bl sub_0806FCB8 + cmp r0, #0 + beq _080AA3D0 + movs r0, #1 + mov r8, r0 + b _080AA3D8 + .align 2, 0 +_080AA3CC: .4byte gUnk_08129D14 +_080AA3D0: + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_08004596 +_080AA3D8: + mov r0, r8 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080AA3E0 +sub_080AA3E0: @ 0x080AA3E0 + push {lr} + adds r3, r0, #0 + ldrb r2, [r3, #0x14] + adds r0, #0x82 + ldrb r0, [r0] + lsls r0, r0, #3 + orrs r2, r0 + cmp r1, #0 + beq _080AA3F4 + lsrs r2, r2, #1 +_080AA3F4: + adds r0, r3, #0 + adds r1, r2, #0 + bl sub_080042AC + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AA400 +sub_080AA400: @ 0x080AA400 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080AA418 @ =gUnk_08129FB8 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080AA418: .4byte gUnk_08129FB8 + + thumb_func_start sub_080AA41C +sub_080AA41C: @ 0x080AA41C + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + cmp r0, #0 + bne _080AA44C + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0xa] + strb r1, [r2, #0x1e] + strb r0, [r2, #0x1c] + adds r0, r2, #0 + adds r0, #0x86 + ldrh r0, [r0] + strh r0, [r2, #0x24] + lsls r1, r1, #0x18 + cmp r1, #0 + bne _080AA446 + adds r0, r2, #0 + bl sub_080AA494 + b _080AA44C +_080AA446: + adds r0, r2, #0 + bl sub_080AA534 +_080AA44C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AA450 +sub_080AA450: @ 0x080AA450 + push {lr} + adds r1, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x96 + bne _080AA462 + adds r0, r1, #0 + bl sub_080AA464 +_080AA462: + pop {pc} + + thumb_func_start sub_080AA464 +sub_080AA464: @ 0x080AA464 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AA474 + adds r0, r4, #0 + bl sub_080AA544 +_080AA474: + movs r0, #0x21 + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _080AA48A + adds r0, r4, #0 + bl sub_0806FA24 +_080AA48A: + adds r0, r4, #0 + bl sub_0805E7BC + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AA494 +sub_080AA494: @ 0x080AA494 + push {r4, r5, r6, lr} + adds r5, r0, #0 + movs r4, #0 + bl sub_080002A0 + adds r2, r0, #0 + ldr r1, _080AA4A4 @ =gUnk_08129FD0 + b _080AA4AA + .align 2, 0 +_080AA4A4: .4byte gUnk_08129FD0 +_080AA4A8: + adds r4, #1 +_080AA4AA: + ldrh r0, [r1] + cmp r0, #0 + beq _080AA4B6 + adds r1, #2 + cmp r0, r2 + bne _080AA4A8 +_080AA4B6: + ldrh r0, [r5, #0x24] + bl sub_0807CBE4 + cmp r0, #0 + beq _080AA4EE + cmp r4, #4 + bne _080AA4EA + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _080AA52C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r6, #0x32 + ldrsh r0, [r5, r6] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + bl sub_080AA654 +_080AA4EA: + bl sub_0805E780 +_080AA4EE: + strb r4, [r5, #0xb] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #7 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080AA530 @ =0x00004068 + movs r2, #0x2e + ldrsh r1, [r5, r2] + ldr r3, _080AA52C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r5, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r2, r5, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_080AA52C: .4byte gUnk_03000BF0 +_080AA530: .4byte 0x00004068 + + thumb_func_start sub_080AA534 +sub_080AA534: @ 0x080AA534 + push {lr} + adds r2, r0, #0 + adds r2, #0x38 + movs r1, #3 + strb r1, [r2] + bl sub_08016A04 + pop {pc} + + thumb_func_start sub_080AA544 +sub_080AA544: @ 0x080AA544 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r6, r0, #0 + ldrb r0, [r6, #0xb] + cmp r0, #8 + bhi _080AA618 + ldr r0, _080AA5E8 @ =gUnk_08129FF8 + mov sb, r0 + movs r1, #0x2e + ldrsh r2, [r6, r1] + ldr r1, _080AA5EC @ =gUnk_03000BF0 + ldrh r0, [r1, #6] + subs r2, r2, r0 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + movs r4, #0x32 + ldrsh r0, [r6, r4] + ldrh r1, [r1, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r2, r0 + ldrb r0, [r6, #0xb] + add r0, sb + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r7, r2, r0 + movs r4, #0 + movs r5, #0 + movs r0, #0x38 + adds r0, r0, r6 + mov r8, r0 +_080AA58E: + mov r1, sb + adds r0, r1, r4 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + subs r0, r7, r0 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r2, r8 + ldrb r1, [r2] + bl sub_080002C8 + cmp r0, #0x3e + bne _080AA5AC + adds r5, #1 +_080AA5AC: + adds r4, #1 + cmp r4, #8 + bls _080AA58E + cmp r5, #8 + bne _080AA5F4 + movs r4, #0 + ldr r5, _080AA5F0 @ =gUnk_08129FD0 +_080AA5BA: + ldrh r0, [r5] + mov r3, sb + adds r1, r3, r4 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r1, r7, r1 + mov r3, r8 + ldrb r2, [r3] + bl sub_0807B7D8 + adds r5, #2 + adds r4, #1 + cmp r4, #8 + bls _080AA5BA + adds r0, r6, #0 + adds r1, r7, #0 + bl sub_080AA654 + ldrh r0, [r6, #0x24] + bl sub_0807CCC8 + b _080AA648 + .align 2, 0 +_080AA5E8: .4byte gUnk_08129FF8 +_080AA5EC: .4byte gUnk_03000BF0 +_080AA5F0: .4byte gUnk_08129FD0 +_080AA5F4: + ldr r2, _080AA614 @ =gUnk_08129FE4 + ldrb r1, [r6, #0xb] + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + add r1, sb + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + subs r1, r7, r1 + mov r4, r8 + ldrb r2, [r4] + bl sub_0807B7D8 + b _080AA648 + .align 2, 0 +_080AA614: .4byte gUnk_08129FE4 +_080AA618: + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldr r2, _080AA650 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r4, #0x32 + ldrsh r1, [r6, r4] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r1, r6, #0 + adds r1, #0x38 + ldrb r1, [r1] + bl sub_0807BA8C + ldrh r0, [r6, #0x24] + bl sub_0807CCC8 +_080AA648: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AA650: .4byte gUnk_03000BF0 + + thumb_func_start sub_080AA654 +sub_080AA654: @ 0x080AA654 + push {r4, r5, lr} + adds r4, r0, #0 + adds r5, r1, #0 + adds r4, #0x68 + ldr r0, _080AA688 @ =gUnk_0812A004 + adds r1, r4, #0 + movs r2, #0x10 + bl sub_0801D66C + movs r1, #0x3f + adds r0, r5, #0 + ands r0, r1 + lsls r0, r0, #4 + adds r0, #8 + strh r0, [r4, #8] + movs r0, #0xfc + lsls r0, r0, #4 + ands r0, r5 + lsrs r0, r0, #2 + adds r0, #8 + strh r0, [r4, #0xa] + adds r0, r4, #0 + bl sub_0804ADF8 + pop {r4, r5, pc} + .align 2, 0 +_080AA688: .4byte gUnk_0812A004 + + thumb_func_start sub_080AA68C +sub_080AA68C: @ 0x080AA68C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080AA6A4 @ =gUnk_0812A014 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080AA6A4: .4byte gUnk_0812A014 + + thumb_func_start sub_080AA6A8 +sub_080AA6A8: @ 0x080AA6A8 + push {lr} + ldr r2, _080AA6BC @ =gUnk_0812A02C + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080AA6BC: .4byte gUnk_0812A02C + + thumb_func_start sub_080AA6C0 +sub_080AA6C0: @ 0x080AA6C0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + cmp r0, #0x87 + bne _080AA774 + movs r6, #3 + movs r0, #3 + strb r0, [r4, #0xc] + movs r5, #0x5a + strb r5, [r4, #0xe] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r1, [r4, #0xa] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_080042AC + movs r0, #0x2a + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _080AA72A + strb r5, [r3, #0xb] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + ldr r1, _080AA770 @ =gUnk_0812A03C + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r2, #0x39 + strb r0, [r2] + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r3, #0 + adds r1, #0x63 + strb r0, [r1] + str r4, [r3, #0x50] +_080AA72A: + movs r0, #0x2a + movs r1, #3 + movs r2, #0 + bl sub_080A2960 + adds r3, r0, #0 + cmp r3, #0 + beq _080AA784 + strb r5, [r3, #0xb] + adds r2, r3, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r6 + strb r0, [r2] + ldr r1, _080AA770 @ =gUnk_0812A03C + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, #2 + adds r0, r0, r1 + ldrb r0, [r0] + adds r2, #0x39 + strb r0, [r2] + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, #3 + adds r0, r0, r1 + ldrb r0, [r0] + adds r1, r3, #0 + adds r1, #0x63 + strb r0, [r1] + str r4, [r3, #0x50] + b _080AA784 + .align 2, 0 +_080AA770: .4byte gUnk_0812A03C +_080AA774: + ldrb r1, [r4, #0xa] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_080042AC + ldr r0, _080AA788 @ =0x00000101 + bl sub_08004488 +_080AA784: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AA788: .4byte 0x00000101 + + thumb_func_start sub_080AA78C +sub_080AA78C: @ 0x080AA78C + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + cmp r0, #0 + bne _080AA7DA + ldr r0, _080AA7C8 @ =gLinkEntity + ldrb r0, [r0, #0x14] + lsrs r2, r0, #1 + ldrb r0, [r4, #0xa] + cmp r2, r0 + beq _080AA7CC + adds r3, r4, #0 + adds r3, #0x3a + ldrb r0, [r3] + movs r1, #0xfb + ands r1, r0 + strb r1, [r3] + movs r0, #2 + eors r2, r0 + ldrb r0, [r4, #0xa] + cmp r2, r0 + bne _080AA832 + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0xe2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_080AA6C0 + b _080AA832 + .align 2, 0 +_080AA7C8: .4byte gLinkEntity +_080AA7CC: + movs r0, #1 + strb r0, [r4, #0xd] + adds r1, r2, #0 + adds r1, #8 + adds r0, r4, #0 + bl sub_080042AC +_080AA7DA: + adds r0, r4, #0 + bl sub_0806F520 + cmp r0, #0 + beq _080AA812 + adds r0, r4, #0 + bl sub_080042B8 + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080AA806 + movs r0, #0xef + ands r0, r1 + strb r0, [r5] + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_08004488 +_080AA806: + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AA832 + b _080AA820 +_080AA812: + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080AA828 +_080AA820: + adds r0, r4, #0 + bl sub_080AAAA8 + b _080AA832 +_080AA828: + ldrb r1, [r4, #0xa] + adds r1, #0x10 + adds r0, r4, #0 + bl sub_080042AC +_080AA832: + pop {r4, r5, pc} + + thumb_func_start sub_080AA834 +sub_080AA834: @ 0x080AA834 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CBE4 + cmp r0, #0 + beq _080AA848 + bl sub_0805E780 +_080AA848: + movs r2, #0 + movs r0, #1 + strb r0, [r4, #0xc] + strb r0, [r4, #0x1c] + strb r0, [r4, #0x16] + ldr r1, _080AA874 @ =gUnk_0812A04C + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x48] + adds r0, r4, #0 + adds r0, #0x84 + strb r2, [r0] + ldrb r1, [r4, #0xa] + adds r0, r4, #0 + bl sub_080042AC + adds r0, r4, #0 + bl sub_080AAA68 + pop {r4, pc} + .align 2, 0 +_080AA874: .4byte gUnk_0812A04C + + thumb_func_start sub_080AA878 +sub_080AA878: @ 0x080AA878 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AA88E + adds r0, r4, #0 + bl sub_080042B8 +_080AA88E: + adds r0, r4, #0 + bl sub_080AA9E0 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AA898 +sub_080AA898: @ 0x080AA898 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806FBB4 + ldr r1, _080AA8B4 @ =gUnk_0812A05C + ldrb r0, [r4, #0xd] + subs r0, #5 + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080AA8B4: .4byte gUnk_0812A05C + + thumb_func_start sub_080AA8B8 +sub_080AA8B8: @ 0x080AA8B8 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r7, _080AA99C @ =gLinkEntity + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #0 + bne _080AA920 + ldrb r0, [r4, #0xa] + lsls r2, r0, #1 + ldrb r0, [r7, #0x14] + cmp r2, r0 + bne _080AA90A + ldr r1, _080AA9A0 @ =gUnk_0812A064 + adds r0, r2, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r4, #0x2e] + adds r0, r0, r3 + lsls r0, r0, #0x10 + lsrs r6, r0, #0x10 + adds r0, r2, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + lsls r0, r0, #0x10 + lsrs r5, r0, #0x10 + adds r0, r7, #0 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r6, #0 + adds r1, r5, #0 + bl sub_080002D4 + cmp r0, #0 + bne _080AA90A + strh r6, [r7, #0x2e] + strh r5, [r7, #0x32] +_080AA90A: + adds r1, r4, #0 + adds r1, #0x84 + movs r0, #1 + strb r0, [r1] + movs r0, #2 + strb r0, [r4, #0xf] + ldrb r1, [r4, #0xa] + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC +_080AA920: + ldrb r0, [r7, #0x14] + lsrs r0, r0, #1 + ldrb r2, [r4, #0xa] + cmp r0, r2 + bne _080AA99A + ldr r1, _080AA9A4 @ =gUnk_03003F80 + adds r0, r1, #0 + adds r0, #0xa8 + ldrb r0, [r0] + cmp r0, #0x1a + bne _080AA99A + ldrb r1, [r1, #5] + movs r2, #2 + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080AA99A + ldr r0, _080AA99C @ =gLinkEntity + adds r0, #0x5a + ldrb r1, [r0] + adds r0, r2, #0 + ands r0, r1 + cmp r0, #0 + beq _080AA99A + adds r5, r4, #0 + adds r5, #0x5a + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AA99A + adds r0, r4, #0 + bl sub_080042B8 + ldrb r1, [r5] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080AA99A + ldr r1, _080AA9A8 @ =gUnk_0812A06C + ldrb r0, [r7, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r7, #0x2e] + adds r0, r0, r3 + strh r0, [r7, #0x2e] + ldrb r0, [r7, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r7, #0x32] + adds r0, r0, r1 + strh r0, [r7, #0x32] + movs r0, #0x80 + lsls r0, r0, #1 + bl sub_08004488 +_080AA99A: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AA99C: .4byte gLinkEntity +_080AA9A0: .4byte gUnk_0812A064 +_080AA9A4: .4byte gUnk_03003F80 +_080AA9A8: .4byte gUnk_0812A06C + + thumb_func_start sub_080AA9AC +sub_080AA9AC: @ 0x080AA9AC + push {lr} + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + adds r1, r0, #0 + adds r1, #0x84 + strb r2, [r1] + ldrb r1, [r0, #0xa] + adds r1, #0xc + bl sub_080042AC + pop {pc} + + thumb_func_start sub_080AA9C4 +sub_080AA9C4: @ 0x080AA9C4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AA9DE + adds r0, r4, #0 + bl sub_080AAAA8 +_080AA9DE: + pop {r4, pc} + + thumb_func_start sub_080AA9E0 +sub_080AA9E0: @ 0x080AA9E0 + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r1, [r5, #0xa] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080AAA00 + ldr r0, _080AA9FC @ =gLinkEntity + movs r2, #0x2e + ldrsh r1, [r0, r2] + movs r2, #0x2e + ldrsh r0, [r5, r2] + b _080AAA0A + .align 2, 0 +_080AA9FC: .4byte gLinkEntity +_080AAA00: + ldr r0, _080AAA24 @ =gLinkEntity + movs r2, #0x32 + ldrsh r1, [r0, r2] + movs r2, #0x32 + ldrsh r0, [r5, r2] +_080AAA0A: + subs r4, r1, r0 + ldrb r2, [r5, #0xa] + lsls r1, r2, #2 + ldr r0, _080AAA28 @ =gUnk_0812A074 + adds r3, r1, r0 + cmp r2, #2 + bgt _080AAA2C + cmp r2, #1 + bge _080AAA36 + cmp r2, #0 + beq _080AAA30 + b _080AAA40 + .align 2, 0 +_080AAA24: .4byte gLinkEntity +_080AAA28: .4byte gUnk_0812A074 +_080AAA2C: + cmp r2, #3 + bne _080AAA40 +_080AAA30: + cmp r4, #4 + ble _080AAA40 + b _080AAA3E +_080AAA36: + movs r0, #4 + rsbs r0, r0, #0 + cmp r4, r0 + bge _080AAA40 +_080AAA3E: + adds r3, #2 +_080AAA40: + ldrb r0, [r3] + adds r4, r5, #0 + adds r4, #0x29 + movs r1, #7 + ands r1, r0 + ldrb r2, [r4] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4] + ldrb r0, [r3, #1] + strb r0, [r5, #0x15] + ldrb r0, [r3] + cmp r0, #5 + bne _080AAA66 + adds r0, r5, #0 + bl sub_08078930 +_080AAA66: + pop {r4, r5, pc} + + thumb_func_start sub_080AAA68 +sub_080AAA68: @ 0x080AAA68 + push {r4, r5, r6, lr} + ldr r2, _080AAAA0 @ =gUnk_0812A084 + ldrb r1, [r0, #0xa] + lsls r1, r1, #1 + adds r1, r1, r2 + ldrh r5, [r1] + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r3, _080AAAA4 @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + subs r1, r1, r2 + asrs r1, r1, #4 + movs r4, #0x3f + ands r1, r4 + movs r6, #0x32 + ldrsh r2, [r0, r6] + ldrh r3, [r3, #8] + subs r2, r2, r3 + asrs r2, r2, #4 + ands r2, r4 + lsls r2, r2, #6 + orrs r1, r2 + adds r0, #0x38 + ldrb r2, [r0] + adds r0, r5, #0 + bl sub_0800015E + pop {r4, r5, r6, pc} + .align 2, 0 +_080AAAA0: .4byte gUnk_0812A084 +_080AAAA4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080AAAA8 +sub_080AAAA8: @ 0x080AAAA8 + push {r4, r5, lr} + adds r4, r0, #0 + adds r0, #0x86 + ldrh r0, [r0] + bl sub_0807CCC8 + movs r1, #0x2e + ldrsh r0, [r4, r1] + ldr r2, _080AAAE4 @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r0, r0, r1 + asrs r0, r0, #4 + movs r3, #0x3f + ands r0, r3 + movs r5, #0x32 + ldrsh r1, [r4, r5] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r0, r1 + adds r4, #0x38 + ldrb r1, [r4] + bl sub_0807BA8C + bl sub_0805E780 + pop {r4, r5, pc} + .align 2, 0 +_080AAAE4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080AAAE8 +sub_080AAAE8: @ 0x080AAAE8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080AAB00 @ =gUnk_0812A3C0 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080AAB00: .4byte gUnk_0812A3C0 + + thumb_func_start sub_080AAB04 +sub_080AAB04: @ 0x080AAB04 + push {lr} + ldr r2, _080AAB18 @ =gUnk_0812A3D4 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080AAB18: .4byte gUnk_0812A3D4 + + thumb_func_start sub_080AAB1C +sub_080AAB1C: @ 0x080AAB1C + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080AAB24 +sub_080AAB24: @ 0x080AAB24 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x1e + strb r1, [r0, #0xe] + movs r1, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AAB38 +sub_080AAB38: @ 0x080AAB38 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + cmp r0, #0 + beq _080AAB4C + subs r0, #1 + strb r0, [r4, #0xe] + b _080AAB62 +_080AAB4C: + adds r0, r4, #0 + bl sub_080AF090 + cmp r0, #0 + bne _080AAB5E + adds r0, r4, #0 + bl sub_0806F69C + b _080AAB62 +_080AAB5E: + movs r0, #2 + strb r0, [r4, #0xc] +_080AAB62: + pop {r4, pc} + + thumb_func_start sub_080AAB64 +sub_080AAB64: @ 0x080AAB64 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080AAB7C + bl sub_0805E780 +_080AAB7C: + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080AAB8A + bl sub_0805E780 +_080AAB8A: + pop {r4, pc} + + thumb_func_start sub_080AAB8C +sub_080AAB8C: @ 0x080AAB8C + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080AABA2 + movs r0, #1 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 +_080AABA2: + adds r0, r4, #0 + bl sub_080AABB0 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + + thumb_func_start sub_080AABB0 +sub_080AABB0: @ 0x080AABB0 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA24 + ldrb r1, [r5, #0x14] + lsls r1, r1, #1 + ldr r0, _080AABEC @ =gUnk_080C9160 + adds r1, r1, r0 + ldrb r2, [r4, #0xe] + lsls r2, r2, #8 + movs r3, #0 + ldrsh r0, [r1, r3] + adds r3, r0, #0 + muls r3, r2, r3 + ldr r0, [r4, #0x2c] + adds r0, r0, r3 + str r0, [r4, #0x2c] + adds r1, #0x80 + movs r3, #0 + ldrsh r0, [r1, r3] + adds r1, r0, #0 + muls r1, r2, r1 + ldr r0, [r4, #0x30] + subs r0, r0, r1 + str r0, [r4, #0x30] + pop {r4, r5, pc} + .align 2, 0 +_080AABEC: .4byte gUnk_080C9160 + + thumb_func_start sub_080AABF0 +sub_080AABF0: @ 0x080AABF0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080AAC08 @ =gUnk_0812A418 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080AAC08: .4byte gUnk_0812A418 + + thumb_func_start sub_080AAC0C +sub_080AAC0C: @ 0x080AAC0C + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080AAC40 @ =gUnk_0812A430 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080AAC3C + adds r1, r4, #0 + adds r1, #0x84 + ldrh r0, [r1] + subs r0, #1 + strh r0, [r1] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AAC3C + subs r1, #0x3f + movs r0, #0 + strb r0, [r1] +_080AAC3C: + pop {r4, pc} + .align 2, 0 +_080AAC40: .4byte gUnk_0812A430 + + thumb_func_start sub_080AAC44 +sub_080AAC44: @ 0x080AAC44 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AACCA + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080AACBC + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _080AACA0 + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AAC84 + ldr r0, _080AAC80 @ =gLinkEntity + adds r1, r4, #0 + bl sub_0806FAB0 + b _080AAC8C + .align 2, 0 +_080AAC80: .4byte gLinkEntity +_080AAC84: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FAB0 +_080AAC8C: + bl sub_08077B2C + ldr r2, _080AACB4 @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0x1a] + ldrb r1, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] +_080AACA0: + ldr r0, _080AACB8 @ =gLinkEntity + adds r0, #0x45 + ldrb r1, [r0] + cmp r1, #0 + bne _080AACCA + adds r0, r4, #0 + adds r0, #0x45 + strb r1, [r0] + b _080AACCA + .align 2, 0 +_080AACB4: .4byte gUnk_03003F80 +_080AACB8: .4byte gLinkEntity +_080AACBC: + ldr r0, _080AACDC @ =0x00000119 + bl sub_080A3268 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 +_080AACCA: + adds r1, r4, #0 + adds r1, #0x42 + ldrb r0, [r1] + cmp r0, #0 + beq _080AACD8 + movs r0, #0 + strb r0, [r1] +_080AACD8: + pop {r4, pc} + .align 2, 0 +_080AACDC: .4byte 0x00000119 + + thumb_func_start sub_080AACE0 +sub_080AACE0: @ 0x080AACE0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080AACF4 + ldrb r0, [r4, #0xb] + cmp r0, #0 + beq _080AACF4 + bl sub_0805E780 +_080AACF4: + ldrb r1, [r4, #0x18] + lsls r0, r1, #0x1e + lsrs r2, r0, #0x1e + adds r5, r4, #0 + adds r5, #0x86 + cmp r2, #1 + bne _080AAD16 + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x18] + strb r2, [r5] + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX +_080AAD16: + ldr r2, [r4, #0x50] + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080AAD4A + adds r1, r2, #0 + adds r1, #0x74 + movs r0, #3 + strb r0, [r1] + adds r1, #0xc + adds r0, r4, #0 + adds r0, #0x81 + ldrb r0, [r0] + lsrs r0, r0, #1 + ldrb r2, [r1] + adds r0, r0, r2 + strb r0, [r1] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #8 + bls _080AAD42 + movs r0, #8 + b _080AAD56 +_080AAD42: + cmp r0, #0 + bne _080AAD58 + movs r0, #1 + b _080AAD56 +_080AAD4A: + adds r1, r2, #0 + adds r1, #0x84 + movs r0, #0 + strb r0, [r1] + subs r1, #0x45 + movs r0, #0x2b +_080AAD56: + strb r0, [r1] +_080AAD58: + ldrb r0, [r5] + cmp r0, #0 + bne _080AAD68 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX +_080AAD68: + bl sub_0805E780 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AAD70 +sub_080AAD70: @ 0x080AAD70 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + bne _080AAD82 + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] +_080AAD82: + ldr r0, _080AAD94 @ =gUnk_0812A440 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080AAD94: .4byte gUnk_0812A440 + + thumb_func_start sub_080AAD98 +sub_080AAD98: @ 0x080AAD98 + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start nullsub_541 +nullsub_541: @ 0x080AADA0 + bx lr + .align 2, 0 + + thumb_func_start sub_080AADA4 +sub_080AADA4: @ 0x080AADA4 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _080AADB8 + adds r1, r4, #0 + adds r1, #0x45 + movs r0, #0 + strb r0, [r1] +_080AADB8: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AADBC +sub_080AADBC: @ 0x080AADBC + push {r4, r5, lr} + adds r5, r0, #0 + ldrb r0, [r5, #0xb] + cmp r0, #0 + bne _080AADCC + movs r0, #1 + strb r0, [r5, #0xc] + b _080AADE0 +_080AADCC: + movs r0, #3 + strb r0, [r5, #0xc] + adds r1, r5, #0 + adds r1, #0x3f + movs r0, #0x2c + strb r0, [r1] + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAB0 +_080AADE0: + ldrb r1, [r5, #0xa] + cmp r1, #0 + bne _080AAE64 + strb r1, [r5, #0xe] + movs r3, #4 + movs r0, #4 + strb r0, [r5, #0xf] + adds r0, r5, #0 + adds r0, #0x80 + strb r1, [r0] + adds r0, #1 + strb r1, [r0] + adds r1, r5, #0 + adds r1, #0x45 + movs r0, #0x10 + strb r0, [r1] + ldrh r0, [r5, #0x36] + adds r0, #4 + movs r4, #0 + strh r0, [r5, #0x36] + ldrb r2, [r5, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r2 + movs r2, #0x40 + orrs r0, r2 + strb r0, [r5, #0x1b] + ldrb r0, [r5, #0x19] + ands r1, r0 + orrs r1, r2 + strb r1, [r5, #0x19] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r2] + ldr r1, _080AAE60 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] + adds r0, r5, #0 + adds r0, #0x86 + strb r4, [r0] + adds r1, r5, #0 + adds r1, #0x84 + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1] + movs r0, #0x18 + bl sub_080A7EE0 + adds r1, r0, #0 + cmp r1, #0 + beq _080AAE7C + movs r0, #1 + strb r0, [r1, #0xa] + ldrb r0, [r5, #0xb] + strb r0, [r1, #0xb] + str r5, [r1, #0x50] + b _080AAE7C + .align 2, 0 +_080AAE60: .4byte gLinkEntity +_080AAE64: + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FAB0 + ldrb r1, [r5, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r5, #0x10] + ldr r0, [r5, #0x50] + adds r1, r5, #0 + bl sub_0806FA24 +_080AAE7C: + ldrb r1, [r5, #0xa] + adds r0, r5, #0 + bl sub_08004260 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AAE88 +sub_080AAE88: @ 0x080AAE88 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #1 + beq _080AAED0 + cmp r0, #1 + bgt _080AAE9C + cmp r0, #0 + beq _080AAEA2 + b _080AAEF6 +_080AAE9C: + cmp r0, #2 + beq _080AAEE0 + b _080AAEF6 +_080AAEA2: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AAEC2 + movs r0, #4 + strb r0, [r4, #0xf] + ldr r1, _080AAECC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_080AAEC2: + adds r0, r4, #0 + bl sub_0806F69C + b _080AAEF6 + .align 2, 0 +_080AAECC: .4byte gLinkEntity +_080AAED0: + ldr r0, [r4, #0x50] + cmp r0, #0 + beq _080AAEDC + ldr r0, [r0, #4] + cmp r0, #0 + bne _080AAEE0 +_080AAEDC: + bl sub_0805E780 +_080AAEE0: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _080AAEEE + bl sub_0805E780 +_080AAEEE: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 +_080AAEF6: + adds r0, r4, #0 + bl sub_080AB034 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AAF00 +sub_080AAF00: @ 0x080AAF00 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AAF74 + adds r0, r4, #0 + bl sub_080AB034 + pop {r4, pc} + + thumb_func_start sub_080AAF10 +sub_080AAF10: @ 0x080AAF10 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA24 + adds r0, r4, #0 + bl sub_080AB034 + ldr r3, [r4, #0x50] + ldrb r1, [r3, #0x18] + lsls r1, r1, #0x1e + lsrs r1, r1, #0x1e + ldrb r2, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080AAF48 + adds r0, r3, #0 + adds r0, #0x45 + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x45 + strb r0, [r1] +_080AAF48: + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xc] + cmp r0, #2 + bne _080AAF60 + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AAF70 + movs r0, #0x7f + ands r0, r1 + b _080AAF6E +_080AAF60: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AAF70 + movs r0, #0x80 + orrs r0, r1 +_080AAF6E: + strb r0, [r4, #0x10] +_080AAF70: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AAF74 +sub_080AAF74: @ 0x080AAF74 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_0807953C + cmp r0, #0 + beq _080AAF94 + bl sub_08000E50 + adds r3, r5, #0 + adds r3, #0x80 + ldrb r1, [r3] + adds r1, #1 + movs r2, #1 + ands r0, r2 + adds r1, r1, r0 + strb r1, [r3] +_080AAF94: + ldrb r0, [r5, #0xe] + adds r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0x3c + bne _080AAFCC + movs r0, #0x1e + strb r0, [r5, #0xe] + ldr r4, _080AAFFC @ =gLinkEntity + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #8 + strb r0, [r1] + subs r0, #0xc + bl sub_080526A0 + adds r0, r4, #0 + movs r1, #0x7a + bl sub_0800449C + adds r4, #0x45 + ldrb r1, [r4] + cmp r1, #0 + bne _080AAFCC + adds r0, r5, #0 + adds r0, #0x45 + strb r1, [r0] +_080AAFCC: + adds r1, r5, #0 + adds r1, #0x80 + ldrb r0, [r1] + cmp r0, #0x30 + bhi _080AAFE0 + adds r0, r5, #0 + adds r0, #0x81 + ldrb r0, [r0] + cmp r0, #0x10 + bne _080AB004 +_080AAFE0: + movs r2, #0 + movs r0, #1 + strb r0, [r5, #0xc] + strb r2, [r1] + ldr r0, _080AAFFC @ =gLinkEntity + adds r0, #0x3d + movs r1, #0xf0 + strb r1, [r0] + ldr r0, _080AB000 @ =gUnk_03003F80 + strb r2, [r0, #0x1a] + adds r0, r5, #0 + adds r0, #0x45 + strb r2, [r0] + b _080AB028 + .align 2, 0 +_080AAFFC: .4byte gLinkEntity +_080AB000: .4byte gUnk_03003F80 +_080AB004: + bl sub_08077B2C + ldr r2, _080AB02C @ =gUnk_03003F80 + ldrb r1, [r2, #0x1a] + movs r0, #0x80 + orrs r1, r0 + strb r1, [r2, #0x1a] + ldrb r1, [r2, #0xa] + orrs r0, r1 + strb r0, [r2, #0xa] + ldr r4, _080AB030 @ =gLinkEntity + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + ldrh r0, [r4, #0x36] + subs r0, #4 + strh r0, [r5, #0x36] +_080AB028: + pop {r4, r5, pc} + .align 2, 0 +_080AB02C: .4byte gUnk_03003F80 +_080AB030: .4byte gLinkEntity + + thumb_func_start sub_080AB034 +sub_080AB034: @ 0x080AB034 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5b + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + ldr r1, _080AB058 @ =0x00000139 + cmp r0, #0 + beq _080AB04E + movs r1, #0 +_080AB04E: + adds r0, r4, #0 + bl sub_0801D2B4 + pop {r4, pc} + .align 2, 0 +_080AB058: .4byte 0x00000139 + + thumb_func_start sub_080AB05C +sub_080AB05C: @ 0x080AB05C + push {lr} + ldr r2, _080AB070 @ =gUnk_0812A494 + ldrb r1, [r0, #0xa] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080AB070: .4byte gUnk_0812A494 + + thumb_func_start sub_080AB074 +sub_080AB074: @ 0x080AB074 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x50] + ldr r0, [r5, #4] + cmp r0, #0 + bne _080AB084 + bl sub_0805E780 +_080AB084: + ldrb r6, [r4, #0xc] + cmp r6, #0 + bne _080AB0AA + adds r0, r4, #0 + bl sub_080AB12C + cmp r0, #0 + beq _080AB124 + movs r0, #1 + strb r0, [r4, #0xc] + strb r6, [r4, #0x1e] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #9 + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] +_080AB0AA: + ldr r0, [r4, #0x50] + adds r7, r5, #0 + adds r7, #0x7f + movs r3, #0 + ldrsb r3, [r7, r3] + rsbs r3, r3, #0 + subs r3, #0xa + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA90 + ldr r3, _080AB128 @ =gUnk_080C9160 + adds r2, r5, #0 + adds r2, #0x7c + ldrb r0, [r2] + lsls r0, r0, #1 + adds r0, r0, r3 + movs r6, #0 + ldrsh r1, [r0, r6] + adds r6, r5, #0 + adds r6, #0x7e + ldrb r0, [r6] + lsls r0, r0, #8 + muls r1, r0, r1 + ldr r0, [r4, #0x2c] + adds r0, r0, r1 + str r0, [r4, #0x2c] + ldrb r0, [r2] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r2, #0 + ldrsh r1, [r0, r2] + ldrb r0, [r6] + lsls r0, r0, #8 + muls r1, r0, r1 + ldr r0, [r4, #0x30] + subs r0, r0, r1 + str r0, [r4, #0x30] + movs r0, #0 + ldrsb r0, [r7, r0] + ldrh r6, [r4, #0x36] + adds r0, r0, r6 + strh r0, [r4, #0x36] + adds r0, r5, #0 + adds r0, #0x7b + ldrb r0, [r0] + cmp r0, #0 + beq _080AB124 + movs r0, #0x19 + bl sub_080A7EE0 + adds r5, r0, #0 + cmp r5, #0 + beq _080AB124 + movs r0, #4 + strb r0, [r5, #0xa] + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA6C +_080AB124: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AB128: .4byte gUnk_080C9160 + + thumb_func_start sub_080AB12C +sub_080AB12C: @ 0x080AB12C + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080AB168 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x44 + bhi _080AB16C + movs r0, #0x19 + bl sub_080A7EE0 + adds r1, r0, #0 + movs r0, #1 + strb r0, [r1, #0xa] + str r4, [r1, #0x50] + movs r0, #0x19 + bl sub_080A7EE0 + adds r1, r0, #0 + movs r0, #2 + strb r0, [r1, #0xa] + str r4, [r1, #0x50] + movs r0, #0x19 + bl sub_080A7EE0 + adds r1, r0, #0 + movs r0, #3 + strb r0, [r1, #0xa] + str r4, [r1, #0x50] + movs r0, #1 + b _080AB16E + .align 2, 0 +_080AB168: .4byte gUnk_03003DBC +_080AB16C: + movs r0, #0 +_080AB16E: + pop {r4, pc} + + thumb_func_start sub_080AB170 +sub_080AB170: @ 0x080AB170 + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldr r6, [r4, #0x50] + ldr r0, [r6, #4] + cmp r0, #0 + bne _080AB180 + bl sub_0805E780 +_080AB180: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080AB1AA + movs r0, #1 + strb r0, [r4, #0xc] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + subs r0, #0x3a + ands r0, r1 + strb r0, [r2] + movs r0, #5 + strb r0, [r4, #0x1e] + ldrb r1, [r2] + subs r0, #0xd + ands r0, r1 + movs r1, #3 + orrs r0, r1 + strb r0, [r2] + ldr r0, _080AB1C8 @ =gUnk_080FD460 + str r0, [r4, #0x48] +_080AB1AA: + ldr r5, [r6, #0x50] + adds r0, r4, #0 + adds r0, #0x7c + adds r2, r5, #0 + adds r2, #0x7c + ldrb r1, [r0] + adds r3, r0, #0 + ldrb r2, [r2] + cmp r1, r2 + beq _080AB1CC + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 + b _080AB1D2 + .align 2, 0 +_080AB1C8: .4byte gUnk_080FD460 +_080AB1CC: + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 +_080AB1D2: + strb r0, [r4, #0x10] + adds r0, r5, #0 + adds r0, #0x7c + ldrb r0, [r0] + strb r0, [r3] + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080AB208 + movs r0, #0x1f + ands r0, r1 + ldr r1, _080AB204 @ =gUnk_0812A4A8 + adds r0, r0, r1 + movs r2, #0 + ldrsb r2, [r0, r2] + movs r3, #1 + ldrsb r3, [r0, r3] + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_0806FA90 + b _080AB216 + .align 2, 0 +_080AB204: .4byte gUnk_0812A4A8 +_080AB208: + movs r3, #0xa + rsbs r3, r3, #0 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA90 +_080AB216: + movs r1, #0x2e + ldrsh r0, [r6, r1] + movs r2, #0x2e + ldrsh r1, [r4, r2] + subs r0, r0, r1 + ldrb r2, [r4, #0xa] + muls r0, r2, r0 + adds r3, r2, #0 + cmp r0, #0 + bge _080AB22C + adds r0, #3 +_080AB22C: + asrs r0, r0, #2 + ldrh r5, [r4, #0x2e] + adds r0, r0, r5 + strh r0, [r4, #0x2e] + movs r1, #0x32 + ldrsh r0, [r6, r1] + movs r5, #0x32 + ldrsh r1, [r4, r5] + subs r0, r0, r1 + muls r0, r3, r0 + cmp r0, #0 + bge _080AB246 + adds r0, #3 +_080AB246: + asrs r0, r0, #2 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + movs r3, #0x36 + ldrsh r0, [r6, r3] + movs r5, #0x36 + ldrsh r1, [r4, r5] + subs r0, r0, r1 + muls r0, r2, r0 + cmp r0, #0 + bge _080AB260 + adds r0, #3 +_080AB260: + asrs r0, r0, #2 + ldrh r1, [r4, #0x36] + adds r0, r0, r1 + strh r0, [r4, #0x36] + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080AB26C +sub_080AB26C: @ 0x080AB26C + push {lr} + adds r2, r0, #0 + ldrb r1, [r2, #0xc] + cmp r1, #0 + bne _080AB28C + movs r0, #1 + strb r0, [r2, #0xc] + movs r0, #5 + strb r0, [r2, #0xe] + strb r1, [r2, #0x1e] + adds r3, r2, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0x3e + ands r0, r1 + strb r0, [r3] +_080AB28C: + ldrb r0, [r2, #0xe] + subs r0, #1 + strb r0, [r2, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AB29E + bl sub_0805E780 + b _080AB2A4 +_080AB29E: + ldrb r0, [r2, #0x1e] + adds r0, #1 + strb r0, [r2, #0x1e] +_080AB2A4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AB2A8 +sub_080AB2A8: @ 0x080AB2A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080AB2C0 @ =gUnk_0812A4C8 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080AB2C0: .4byte gUnk_0812A4C8 + + thumb_func_start sub_080AB2C4 +sub_080AB2C4: @ 0x080AB2C4 + push {lr} + ldr r2, _080AB2D8 @ =gUnk_0812A4DC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080AB2D8: .4byte gUnk_0812A4DC + + thumb_func_start sub_080AB2DC +sub_080AB2DC: @ 0x080AB2DC + push {r4, r5, lr} + adds r2, r0, #0 + adds r5, r2, #0 + adds r5, #0x41 + ldrb r1, [r5] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AB314 + movs r0, #3 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r4, #0x7f + adds r0, r4, #0 + ands r0, r1 + strb r0, [r2, #0x10] + adds r0, r2, #0 + movs r1, #0x53 + bl sub_08004260 + ldrb r0, [r5] + ands r4, r0 + cmp r4, #0 + bne _080AB314 + movs r0, #4 + rsbs r0, r0, #0 + bl sub_080526A0 +_080AB314: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AB318 +sub_080AB318: @ 0x080AB318 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r6, r0, #0 + movs r4, #1 + movs r0, #1 + mov r8, r0 + mov r1, r8 + strb r1, [r6, #0xc] + ldr r0, _080AB3D8 @ =0xFFFF0000 + str r0, [r6, #0x20] + movs r2, #0x2e + ldrsh r1, [r6, r2] + ldr r2, _080AB3DC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r5, #0x32 + ldrsh r0, [r6, r5] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r6, #0 + adds r0, #0x76 + strh r1, [r0] + ldr r0, [r6, #0x50] + adds r1, r6, #0 + bl sub_0806FA24 + movs r1, #0x80 + lsls r1, r1, #5 + ldrb r2, [r6, #0x15] + adds r0, r6, #0 + bl sub_0806F5BC + adds r2, r6, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r4 + strb r0, [r2] + ldr r0, [r6, #0x50] + ldr r0, [r0, #0x34] + str r0, [r6, #0x34] + adds r0, r6, #0 + movs r1, #0x51 + bl sub_08004260 + ldr r0, _080AB3E0 @ =0x000001B5 + bl sub_080A3268 + adds r0, r6, #0 + bl sub_080AB4F8 + movs r1, #0x2e + ldrsh r2, [r6, r1] + movs r1, #0 + ldrsb r1, [r0, r1] + adds r5, r2, r1 + movs r2, #0x32 + ldrsh r1, [r6, r2] + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + adds r7, r1, r0 + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_080041DC + adds r4, r0, #0 + bl sub_08000E50 + adds r1, r0, #0 + ldr r0, _080AB3E4 @ =0x000001FF + ands r1, r0 + ldr r0, _080AB3E8 @ =gUnk_030010A0 + ldr r0, [r0] + mov r2, r8 + ands r0, r2 + cmp r0, #0 + beq _080AB3EC + adds r4, r4, r1 + movs r0, #0x80 + lsls r0, r0, #3 + cmp r4, r0 + ble _080AB3F4 + adds r4, r0, #0 + b _080AB3F4 + .align 2, 0 +_080AB3D8: .4byte 0xFFFF0000 +_080AB3DC: .4byte gUnk_03000BF0 +_080AB3E0: .4byte 0x000001B5 +_080AB3E4: .4byte 0x000001FF +_080AB3E8: .4byte gUnk_030010A0 +_080AB3EC: + subs r4, r4, r1 + cmp r4, #0x1f + bgt _080AB3F4 + movs r4, #0x20 +_080AB3F4: + lsls r1, r4, #8 + ldr r0, [r6, #0x34] + bl __divsi3 + lsls r0, r0, #0xd + str r0, [r6, #0x20] + adds r0, r6, #0 + adds r1, r5, #0 + adds r2, r7, #0 + bl sub_080045B4 + strb r0, [r6, #0x15] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AB414 +sub_080AB414: @ 0x080AB414 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + movs r1, #0 + bl sub_08003FC4 + cmp r0, #0 + bne _080AB446 + movs r0, #2 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xe] + adds r0, r4, #0 + movs r1, #0x54 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080AB4A4 + b _080AB458 +_080AB446: + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xe0 + bls _080AB458 + bl sub_0805E780 +_080AB458: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AB45C +sub_080AB45C: @ 0x080AB45C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AB486 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r0, r4, #0 + movs r1, #0x53 + bl sub_08004260 +_080AB486: + pop {r4, pc} + + thumb_func_start sub_080AB488 +sub_080AB488: @ 0x080AB488 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AB4A0 + bl sub_0805E780 +_080AB4A0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AB4A4 +sub_080AB4A4: @ 0x080AB4A4 + push {r4, r5, r6, r7, lr} + adds r6, r0, #0 + adds r7, r6, #0 + adds r7, #0x76 + ldrh r4, [r7] + movs r1, #0x2e + ldrsh r0, [r6, r1] + ldr r3, _080AB4F4 @ =gUnk_03000BF0 + ldrh r1, [r3, #6] + subs r0, r0, r1 + asrs r5, r0, #4 + movs r2, #0x3f + ands r5, r2 + movs r1, #0x32 + ldrsh r0, [r6, r1] + ldrh r1, [r3, #8] + subs r0, r0, r1 + asrs r0, r0, #4 + ands r0, r2 + lsls r0, r0, #6 + orrs r5, r0 + cmp r4, r5 + beq _080AB4F2 + strh r5, [r7] + adds r0, r6, #0 + bl sub_080002A0 + cmp r0, #0x13 + beq _080AB4E2 + cmp r0, #0x34 + bne _080AB4F2 +_080AB4E2: + movs r0, #0xd3 + lsls r0, r0, #2 + ldrh r1, [r7] + adds r2, r6, #0 + adds r2, #0x38 + ldrb r2, [r2] + bl sub_0807B7D8 +_080AB4F2: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AB4F4: .4byte gUnk_03000BF0 + + thumb_func_start sub_080AB4F8 +sub_080AB4F8: @ 0x080AB4F8 + adds r1, r0, #0 + ldrb r0, [r1, #0xa] + lsls r0, r0, #5 + ldrb r1, [r1, #0xf] + lsls r1, r1, #1 + orrs r0, r1 + ldr r1, _080AB50C @ =gUnk_0812A4EC + adds r0, r0, r1 + bx lr + .align 2, 0 +_080AB50C: .4byte gUnk_0812A4EC + + thumb_func_start sub_080AB510 +sub_080AB510: @ 0x080AB510 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080AB528 @ =gUnk_0812A58C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080AB528: .4byte gUnk_0812A58C + + thumb_func_start sub_080AB52C +sub_080AB52C: @ 0x080AB52C + push {lr} + ldr r2, _080AB540 @ =gUnk_0812A5A0 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080AB540: .4byte gUnk_0812A5A0 + + thumb_func_start sub_080AB544 +sub_080AB544: @ 0x080AB544 + push {lr} + adds r2, r0, #0 + adds r0, #0x3d + movs r1, #0 + ldrsb r1, [r0, r1] + movs r0, #4 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080AB57C + movs r1, #2 + movs r0, #2 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x3e + ldrb r0, [r0] + strb r0, [r2, #0x15] + ldrb r0, [r2, #0xa] + eors r1, r0 + lsls r1, r1, #3 + ldrb r0, [r2, #0x15] + subs r0, r0, r1 + adds r0, #1 + cmp r0, #2 + bhi _080AB576 + strb r1, [r2, #0x15] +_080AB576: + movs r0, #0xa0 + lsls r0, r0, #2 + strh r0, [r2, #0x24] +_080AB57C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AB580 +sub_080AB580: @ 0x080AB580 + push {lr} + movs r1, #1 + strb r1, [r0, #0xc] + ldrb r1, [r0, #0xa] + lsls r1, r1, #3 + strb r1, [r0, #0x15] + ldr r1, _080AB598 @ =0x0000FFFC + strh r1, [r0, #0x36] + ldrb r1, [r0, #0xa] + bl sub_08004260 + pop {pc} + .align 2, 0 +_080AB598: .4byte 0x0000FFFC + + thumb_func_start sub_080AB59C +sub_080AB59C: @ 0x080AB59C + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + cmp r0, #0 + bne _080AB5BC + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080AB5BC: + adds r0, r4, #0 + bl sub_080AB5F4 + pop {r4, pc} + + thumb_func_start sub_080AB5C4 +sub_080AB5C4: @ 0x080AB5C4 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080AF090 + adds r0, r4, #0 + bl sub_080AB634 + cmp r0, #0 + bne _080AB5F0 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080AB5F0 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080AB5F0: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AB5F4 +sub_080AB5F4: @ 0x080AB5F4 + push {r4, lr} + adds r4, r0, #0 + bl sub_080043E8 + cmp r0, #2 + beq _080AB61A + cmp r0, #2 + bhi _080AB60A + cmp r0, #1 + beq _080AB610 + b _080AB62E +_080AB60A: + cmp r0, #3 + beq _080AB624 + b _080AB62E +_080AB610: + adds r0, r4, #0 + bl sub_080043B4 + movs r0, #1 + b _080AB630 +_080AB61A: + adds r0, r4, #0 + bl sub_080043A8 + movs r0, #1 + b _080AB630 +_080AB624: + adds r0, r4, #0 + bl sub_080043AC + movs r0, #1 + b _080AB630 +_080AB62E: + movs r0, #0 +_080AB630: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AB634 +sub_080AB634: @ 0x080AB634 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r0, [r6, #0x50] + movs r5, #0 + adds r4, r0, #0 + adds r4, #0x20 +_080AB640: + ldr r1, [r4] + cmp r1, #0 + beq _080AB684 + adds r0, r6, #0 + bl sub_080177A0 + cmp r0, #0 + beq _080AB684 + ldr r1, [r4] + ldrb r0, [r1, #0xc] + cmp r0, #2 + bhi _080AB67A + movs r0, #3 + strb r0, [r1, #0xc] + ldr r1, [r4] + movs r0, #0x1e + strb r0, [r1, #0xe] + ldr r2, [r4] + ldrb r0, [r2, #0x18] + movs r3, #4 + rsbs r3, r3, #0 + adds r1, r3, #0 + ands r0, r1 + strb r0, [r2, #0x18] + ldr r0, [r4] + movs r1, #0x45 + movs r2, #0 + bl CreateFX +_080AB67A: + adds r0, r6, #0 + bl sub_0805E7BC + movs r0, #1 + b _080AB68E +_080AB684: + adds r4, #4 + adds r5, #1 + cmp r5, #3 + bls _080AB640 + movs r0, #0 +_080AB68E: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080AB690 +sub_080AB690: @ 0x080AB690 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0x18] + lsls r0, r0, #0x1e + cmp r0, #0 + bne _080AB6A2 + bl sub_0805E780 +_080AB6A2: + ldr r0, _080AB6B4 @ =gUnk_0812A5E8 + ldrb r1, [r4, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080AB6B4: .4byte gUnk_0812A5E8 + + thumb_func_start sub_080AB6B8 +sub_080AB6B8: @ 0x080AB6B8 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x50] + ldr r0, [r0, #0x2c] + str r0, [r2, #0x74] + ldrb r0, [r2, #0xa] + cmp r0, #0 + bne _080AB6E8 + movs r0, #1 + strb r0, [r2, #0xc] + ldrb r1, [r2, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r2, #0x10] + ldr r0, _080AB6E4 @ =gUnk_0812A614 + str r0, [r2, #0x48] + adds r0, r2, #0 + movs r1, #0 + bl sub_08004260 + b _080AB6F8 + .align 2, 0 +_080AB6E4: .4byte gUnk_0812A614 +_080AB6E8: + movs r0, #2 + strb r0, [r2, #0xc] + movs r0, #4 + strb r0, [r2, #0xf] + ldrb r1, [r2, #0xe] + adds r0, r2, #0 + bl sub_08004260 +_080AB6F8: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AB6FC +sub_080AB6FC: @ 0x080AB6FC + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080AB724 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080AB758 +_080AB724: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AB728 +sub_080AB728: @ 0x080AB728 + push {r4, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r2, [r4, #0x50] + ldr r1, [r2, #0x2c] + ldr r0, [r4, #0x74] + subs r1, r1, r0 + ldr r0, [r4, #0x2c] + adds r0, r0, r1 + str r0, [r4, #0x2c] + ldr r0, [r2, #0x2c] + str r0, [r4, #0x74] + adds r0, r4, #0 + bl sub_080AB888 + ldr r0, [r4, #0x50] + ldrb r0, [r0, #0xf] + cmp r0, #0 + bne _080AB754 + bl sub_0805E780 +_080AB754: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AB758 +sub_080AB758: @ 0x080AB758 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + sub sp, #4 + adds r5, r0, #0 + movs r6, #6 + movs r7, #0 + movs r4, #0 + movs r0, #0x32 + ldrsh r2, [r5, r0] + ldr r1, _080AB818 @ =gUnk_03000BF0 + ldrh r0, [r1, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + mov r8, r1 + cmp r2, r0 + bhi _080AB7B4 + movs r3, #7 +_080AB77E: + adds r0, r4, #0 + ands r0, r3 + cmp r0, #7 + bne _080AB798 + adds r0, r5, #0 + movs r1, #4 + adds r2, r6, #0 + str r3, [sp] + bl sub_080AB844 + adds r6, #0x3e + adds r7, #0x3e + ldr r3, [sp] +_080AB798: + adds r4, #1 + ands r4, r3 + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r0, r0, r7 + lsls r1, r4, #3 + adds r2, r0, r1 + ldr r0, _080AB818 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + bls _080AB77E +_080AB7B4: + movs r4, #0 + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r2, r0, r7 + mov r1, r8 + ldrh r0, [r1, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + bhi _080AB802 + movs r3, #3 +_080AB7CC: + adds r0, r4, #0 + ands r0, r3 + cmp r0, #3 + bne _080AB7E6 + adds r0, r5, #0 + movs r1, #3 + adds r2, r6, #0 + str r3, [sp] + bl sub_080AB844 + adds r6, #0x1e + adds r7, #0x1e + ldr r3, [sp] +_080AB7E6: + adds r4, #1 + ands r4, r3 + movs r1, #0x32 + ldrsh r0, [r5, r1] + adds r0, r0, r7 + lsls r1, r4, #3 + adds r2, r0, r1 + ldr r0, _080AB818 @ =gUnk_03000BF0 + ldrh r0, [r0, #8] + adds r0, #0xd4 + lsls r0, r0, #0x10 + lsrs r0, r0, #0x10 + cmp r2, r0 + bls _080AB7CC +_080AB802: + movs r0, #2 + ands r0, r4 + cmp r0, #0 + beq _080AB81C + adds r0, r5, #0 + movs r1, #2 + adds r2, r6, #0 + bl sub_080AB844 + adds r6, #0xe + b _080AB830 + .align 2, 0 +_080AB818: .4byte gUnk_03000BF0 +_080AB81C: + movs r0, #1 + ands r4, r0 + cmp r4, #0 + beq _080AB830 + adds r0, r5, #0 + movs r1, #1 + adds r2, r6, #0 + bl sub_080AB844 + adds r6, #6 +_080AB830: + adds r0, r5, #0 + movs r1, #6 + adds r2, r6, #0 + bl sub_080AB844 + add sp, #4 + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AB844 +sub_080AB844: @ 0x080AB844 + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r7, r1, #0 + adds r6, r2, #0 + movs r0, #0x1c + bl sub_080A7EE0 + adds r4, r0, #0 + cmp r4, #0 + beq _080AB880 + movs r0, #1 + strb r0, [r4, #0xa] + strb r7, [r4, #0xe] + ldr r0, [r5, #0x50] + str r0, [r4, #0x50] + lsls r3, r6, #0x10 + adds r0, r5, #0 + adds r1, r4, #0 + movs r2, #0 + bl sub_0806FA48 + cmp r7, #1 + beq _080AB87C + ldr r0, _080AB878 @ =gUnk_0812A61C + b _080AB87E + .align 2, 0 +_080AB878: .4byte gUnk_0812A61C +_080AB87C: + ldr r0, _080AB884 @ =gUnk_0812A614 +_080AB87E: + str r0, [r4, #0x48] +_080AB880: + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AB884: .4byte gUnk_0812A614 + + thumb_func_start sub_080AB888 +sub_080AB888: @ 0x080AB888 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xf] + subs r0, #1 + strb r0, [r2, #0xf] + movs r3, #0 + ldrb r0, [r2, #0xe] + cmp r0, #3 + beq _080AB8A4 + cmp r0, #3 + ble _080AB8B6 + cmp r0, #4 + beq _080AB8A6 + b _080AB8B6 +_080AB8A4: + movs r3, #1 +_080AB8A6: + ldr r0, _080AB8C4 @ =gUnk_0812A5F4 + ldrb r1, [r2, #0xf] + lsls r1, r1, #1 + adds r1, r1, r3 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r2, #0x48] +_080AB8B6: + ldrb r0, [r2, #0xf] + cmp r0, #0 + bne _080AB8C0 + movs r0, #4 + strb r0, [r2, #0xf] +_080AB8C0: + pop {pc} + .align 2, 0 +_080AB8C4: .4byte gUnk_0812A5F4 + + thumb_func_start sub_080AB8C8 +sub_080AB8C8: @ 0x080AB8C8 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080AB8E4 @ =gUnk_0812A6B4 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r0, r4, #0 + bl sub_080AB9DC + pop {r4, pc} + .align 2, 0 +_080AB8E4: .4byte gUnk_0812A6B4 + + thumb_func_start sub_080AB8E8 +sub_080AB8E8: @ 0x080AB8E8 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + adds r0, #1 + movs r1, #0 + strb r0, [r4, #0xc] + movs r0, #0xa0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + str r1, [r4, #0x34] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AB90E + bl sub_08000E50 + movs r1, #0x18 + ands r0, r1 + strb r0, [r4, #0x15] + str r4, [r4, #0x50] +_080AB90E: + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldrb r0, [r4, #0xa] + cmp r0, #3 + bhi _080AB936 + movs r0, #0x1d + bl sub_080A7EE0 + adds r1, r0, #0 + ldrb r0, [r4, #0xa] + adds r0, #1 + strb r0, [r1, #0xa] + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + str r4, [r1, #0x54] + adds r0, r4, #0 + bl sub_0806FA24 +_080AB936: + adds r1, r4, #0 + adds r1, #0x68 + movs r2, #7 +_080AB93C: + ldrh r0, [r4, #0x2e] + strh r0, [r1] + adds r1, #2 + ldrh r0, [r4, #0x32] + strh r0, [r1] + adds r1, #2 + subs r2, #1 + cmp r2, #0 + bge _080AB93C + pop {r4, pc} + + thumb_func_start sub_080AB950 +sub_080AB950: @ 0x080AB950 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AB99C + adds r0, r4, #0 + bl sub_080AEF88 + ldrb r0, [r4, #0x15] + lsrs r0, r0, #3 + ldr r1, _080AB994 @ =gUnk_0812A6C4 + lsls r5, r0, #1 + adds r1, r5, r1 + ldrh r1, [r1] + ldrh r0, [r4, #0x2a] + ands r0, r1 + cmp r0, #0 + bne _080AB980 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AB9FC + cmp r0, #0 + beq _080AB9D4 +_080AB980: + bl sub_08000E50 + ldr r2, _080AB998 @ =gUnk_0812A6BC + movs r1, #1 + ands r1, r0 + adds r1, r1, r5 + adds r1, r1, r2 + ldrb r0, [r1] + strb r0, [r4, #0x15] + b _080AB9D4 + .align 2, 0 +_080AB994: .4byte gUnk_0812A6C4 +_080AB998: .4byte gUnk_0812A6BC +_080AB99C: + ldr r0, [r4, #0x50] + cmp r0, #0 + bne _080AB9A6 + bl sub_0805E780 +_080AB9A6: + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080AB9B2 + bl sub_0805E780 +_080AB9B2: + ldr r1, [r4, #0x54] + cmp r1, #0 + beq _080AB9D0 + ldr r0, [r1, #4] + cmp r0, #0 + beq _080AB9D0 + adds r0, r1, #0 + adds r0, #0x68 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + adds r0, r1, #0 + adds r0, #0x6a + ldrh r0, [r0] + strh r0, [r4, #0x32] + b _080AB9D4 +_080AB9D0: + bl sub_0805E780 +_080AB9D4: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, pc} + + thumb_func_start sub_080AB9DC +sub_080AB9DC: @ 0x080AB9DC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x6c + adds r1, r4, #0 + adds r1, #0x68 + movs r2, #0x1c + bl sub_0801D66C + ldrh r1, [r4, #0x2e] + adds r0, r4, #0 + adds r0, #0x84 + strh r1, [r0] + ldrh r1, [r4, #0x32] + adds r0, #2 + strh r1, [r0] + pop {r4, pc} + + thumb_func_start sub_080AB9FC +sub_080AB9FC: @ 0x080AB9FC + push {r4, r5, r6, r7, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_0808094C + movs r1, #0x2e + ldrsh r3, [r5, r1] + ldr r2, _080ABA4C @ =gUnk_03000BF0 + ldrh r1, [r2, #6] + subs r3, r3, r1 + asrs r3, r3, #4 + movs r6, #0x3f + ands r3, r6 + movs r7, #0x32 + ldrsh r1, [r5, r7] + ldrh r2, [r2, #8] + subs r1, r1, r2 + asrs r1, r1, #4 + ands r1, r6 + lsls r1, r1, #6 + orrs r3, r1 + ldr r1, _080ABA50 @ =gUnk_080B4488 + lsrs r4, r4, #3 + lsls r4, r4, #1 + adds r4, r4, r1 + movs r2, #0 + ldrsh r1, [r4, r2] + adds r3, r3, r1 + ldr r7, _080ABA54 @ =0x00002004 + adds r0, r0, r7 + adds r0, r0, r3 + ldrb r0, [r0] + cmp r0, #0x1f + bls _080ABA58 + cmp r0, #0x3f + bhi _080ABA58 + movs r0, #1 + b _080ABA5A + .align 2, 0 +_080ABA4C: .4byte gUnk_03000BF0 +_080ABA50: .4byte gUnk_080B4488 +_080ABA54: .4byte 0x00002004 +_080ABA58: + movs r0, #0 +_080ABA5A: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080ABA5C +sub_080ABA5C: @ 0x080ABA5C + push {lr} + ldr r2, _080ABA70 @ =gUnk_0812A6CC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080ABA70: .4byte gUnk_0812A6CC + + thumb_func_start sub_080ABA74 +sub_080ABA74: @ 0x080ABA74 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xc] + adds r0, #1 + strb r0, [r2, #0xc] + adds r0, r2, #0 + adds r0, #0x86 + ldrh r0, [r0] + strh r0, [r2, #0x24] + ldrh r1, [r2, #0x2e] + adds r0, r2, #0 + adds r0, #0x68 + strh r1, [r0] + ldrh r0, [r2, #0x32] + adds r1, r2, #0 + adds r1, #0x6a + strh r0, [r1] + adds r0, r2, #0 + adds r0, #0x84 + ldrh r1, [r0] + subs r0, #0x18 + strh r1, [r0] + ldrb r0, [r2, #0xa] + cmp r0, #6 + bhi _080ABAAA + movs r0, #0 + b _080ABAAC +_080ABAAA: + movs r0, #1 +_080ABAAC: + strb r0, [r2, #0xb] + ldr r0, _080ABAC8 @ =gUnk_0812A6D4 + ldrb r1, [r2, #0xa] + adds r0, r1, r0 + ldrb r3, [r0] + ldrb r0, [r2, #0xb] + cmp r0, #0 + bne _080ABACC + movs r0, #8 + strb r0, [r2, #0x15] + ldrh r0, [r2, #0x32] + adds r0, r0, r3 + strh r0, [r2, #0x32] + b _080ABAD6 + .align 2, 0 +_080ABAC8: .4byte gUnk_0812A6D4 +_080ABACC: + movs r0, #0x10 + strb r0, [r2, #0x15] + ldrh r0, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r2, #0x2e] +_080ABAD6: + adds r0, r2, #0 + bl sub_08004260 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080ABAE0 +sub_080ABAE0: @ 0x080ABAE0 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_080AF090 + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080ABAFE + movs r1, #0x2e + ldrsh r0, [r4, r1] + adds r1, r4, #0 + adds r1, #0x68 + movs r2, #0 + ldrsh r1, [r1, r2] + subs r3, r0, r1 + b _080ABB0C +_080ABAFE: + movs r0, #0x32 + ldrsh r1, [r4, r0] + adds r0, r4, #0 + adds r0, #0x6a + movs r2, #0 + ldrsh r0, [r0, r2] + subs r3, r1, r0 +_080ABB0C: + adds r0, r4, #0 + adds r0, #0x6c + movs r1, #0 + ldrsh r2, [r0, r1] + adds r6, r0, #0 + cmp r2, #0 + bge _080ABB1E + rsbs r3, r3, #0 + rsbs r2, r2, #0 +_080ABB1E: + lsls r1, r3, #0x10 + lsls r0, r2, #0x10 + cmp r1, r0 + bls _080ABB84 + ldrb r0, [r4, #0x15] + movs r1, #0x10 + eors r0, r1 + strb r0, [r4, #0x15] + ldrb r0, [r4, #0xb] + adds r5, r0, #0 + cmp r5, #0 + bne _080ABB4E + adds r0, r4, #0 + adds r0, #0x68 + ldrh r0, [r0] + strh r0, [r4, #0x2e] + ldrb r2, [r4, #0x18] + lsls r1, r2, #0x19 + lsrs r1, r1, #0x1f + movs r0, #1 + eors r1, r0 + lsls r1, r1, #6 + subs r0, #0x42 + b _080ABB62 +_080ABB4E: + adds r0, r4, #0 + adds r0, #0x6a + ldrh r0, [r0] + strh r0, [r4, #0x32] + ldrb r2, [r4, #0x18] + lsrs r1, r2, #7 + movs r0, #1 + eors r1, r0 + lsls r1, r1, #7 + movs r0, #0x7f +_080ABB62: + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x18] + cmp r3, #0 + ble _080ABB84 + lsls r0, r5, #0x18 + cmp r0, #0 + bne _080ABB7C + ldrh r0, [r6] + ldrh r2, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r4, #0x2e] + b _080ABB84 +_080ABB7C: + ldrh r0, [r6] + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] +_080ABB84: + adds r0, r4, #0 + bl sub_08004274 + pop {r4, r5, r6, pc} + + thumb_func_start sub_080ABB8C +sub_080ABB8C: @ 0x080ABB8C + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080ABBA4 @ =gUnk_0812A7D4 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080ABBA4: .4byte gUnk_0812A7D4 + + thumb_func_start sub_080ABBA8 +sub_080ABBA8: @ 0x080ABBA8 + push {lr} + adds r2, r0, #0 + ldrb r0, [r2, #0xa] + cmp r0, #1 + beq _080ABBC4 + cmp r0, #1 + bgt _080ABBDC + cmp r0, #0 + bne _080ABBDC + ldr r0, _080ABBC0 @ =gUnk_0812A7EC + b _080ABBC6 + .align 2, 0 +_080ABBC0: .4byte gUnk_0812A7EC +_080ABBC4: + ldr r0, _080ABBD8 @ =gUnk_0812A7F8 +_080ABBC6: + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 + b _080ABBEC + .align 2, 0 +_080ABBD8: .4byte gUnk_0812A7F8 +_080ABBDC: + ldr r0, _080ABBF0 @ =gUnk_0812A800 + ldrb r1, [r2, #0xc] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r2, #0 + bl _call_via_r1 +_080ABBEC: + pop {pc} + .align 2, 0 +_080ABBF0: .4byte gUnk_0812A800 + + thumb_func_start sub_080ABBF4 +sub_080ABBF4: @ 0x080ABBF4 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080ABC52 + ldrb r0, [r4, #0xa] + cmp r0, #0 + blt _080ABC52 + cmp r0, #1 + ble _080ABC3E + cmp r0, #2 + bne _080ABC52 + movs r0, #0x3f + ands r0, r1 + cmp r0, #3 + beq _080ABC32 + cmp r0, #3 + bgt _080ABC24 + cmp r0, #0 + beq _080ABC2A + b _080ABC52 +_080ABC24: + cmp r0, #0x14 + beq _080ABC32 + b _080ABC52 +_080ABC2A: + movs r0, #4 + rsbs r0, r0, #0 + bl sub_080526A0 +_080ABC32: + adds r0, r4, #0 + bl sub_080A29BC + bl sub_0805E780 + b _080ABC52 +_080ABC3E: + movs r0, #0x3f + ands r0, r1 + cmp r0, #0 + bne _080ABC52 + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + bl sub_0805E780 +_080ABC52: + pop {r4, pc} + + thumb_func_start sub_080ABC54 +sub_080ABC54: @ 0x080ABC54 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F520 + cmp r0, #0 + bne _080ABC6E + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080ABC6E: + ldr r0, _080ABC80 @ =gUnk_0812A808 + ldrb r1, [r4, #0xd] + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r1, [r1] + adds r0, r4, #0 + bl _call_via_r1 + pop {r4, pc} + .align 2, 0 +_080ABC80: .4byte gUnk_0812A808 + + thumb_func_start sub_080ABC84 +sub_080ABC84: @ 0x080ABC84 + movs r1, #2 + strb r1, [r0, #0xd] + bx lr + .align 2, 0 + + thumb_func_start nullsub_542 +nullsub_542: @ 0x080ABC8C + bx lr + .align 2, 0 + + thumb_func_start sub_080ABC90 +sub_080ABC90: @ 0x080ABC90 + push {r4, lr} + adds r4, r0, #0 + bl sub_0806F3E4 + cmp r0, #0 + beq _080ABCBE + movs r0, #2 + rsbs r0, r0, #0 + bl sub_080526A0 + ldr r0, _080ABCC0 @ =gLinkEntity + movs r1, #0x7a + bl sub_0800449C + bl sub_08079D84 + adds r0, r4, #0 + movs r1, #2 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080ABCBE: + pop {r4, pc} + .align 2, 0 +_080ABCC0: .4byte gLinkEntity + + thumb_func_start sub_080ABCC4 +sub_080ABCC4: @ 0x080ABCC4 + push {r4, r5, lr} + adds r5, r0, #0 + movs r4, #0 + movs r0, #1 + strb r0, [r5, #0xc] + bl sub_08000E50 + movs r1, #0x3f + ands r0, r1 + adds r0, #0x30 + strb r0, [r5, #0xe] + strb r4, [r5, #0xf] + bl sub_08000E50 + movs r1, #0x1f + ands r0, r1 + strb r0, [r5, #0x15] + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _080ABD3C @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r0, r5, #0 + adds r0, #0x74 + strh r1, [r0] + ldrh r0, [r0] + movs r1, #2 + bl sub_080002B0 + adds r1, r5, #0 + adds r1, #0x76 + strh r0, [r1] + adds r2, r5, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r2] + adds r0, r5, #0 + movs r1, #0 + bl sub_08004260 + ldr r0, _080ABD40 @ =0x0000014B + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_080ABD3C: .4byte gUnk_03000BF0 +_080ABD40: .4byte 0x0000014B + + thumb_func_start sub_080ABD44 +sub_080ABD44: @ 0x080ABD44 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080ABD60 + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_080ABD60: + adds r0, r4, #0 + bl sub_080AF090 + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ABD70 +sub_080ABD70: @ 0x080ABD70 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_08004274 + adds r2, r5, #0 + adds r2, #0x5a + ldrb r1, [r2] + movs r0, #0x10 + ands r0, r1 + cmp r0, #0 + beq _080ABDEE + movs r0, #0xef + ands r0, r1 + movs r1, #0 + strb r0, [r2] + strh r1, [r5, #0x24] + movs r0, #0x2e + ldrsh r1, [r5, r0] + ldr r2, _080ABDDC @ =gUnk_03000BF0 + ldrh r0, [r2, #6] + subs r1, r1, r0 + asrs r1, r1, #4 + movs r3, #0x3f + ands r1, r3 + movs r4, #0x32 + ldrsh r0, [r5, r4] + ldrh r2, [r2, #8] + subs r0, r0, r2 + asrs r0, r0, #4 + ands r0, r3 + lsls r0, r0, #6 + orrs r1, r0 + adds r4, r5, #0 + adds r4, #0x74 + strh r1, [r4] + ldrh r0, [r4] + movs r1, #2 + bl sub_080002B0 + adds r1, r5, #0 + adds r1, #0x76 + strh r0, [r1] + ldrh r1, [r1] + cmp r1, #0x13 + beq _080ABDE4 + ldr r0, _080ABDE0 @ =0x00000315 + cmp r1, r0 + bne _080ABDEE + ldrh r1, [r4] + movs r0, #0x6e + movs r2, #2 + bl sub_0807B314 + b _080ABDEE + .align 2, 0 +_080ABDDC: .4byte gUnk_03000BF0 +_080ABDE0: .4byte 0x00000315 +_080ABDE4: + ldrh r1, [r4] + movs r0, #0x6d + movs r2, #2 + bl sub_0807B314 +_080ABDEE: + adds r0, r5, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080ABE00 + bl sub_0805E780 +_080ABE00: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080ABE04 +sub_080ABE04: @ 0x080ABE04 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #0xff + ands r5, r0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080ABE48 @ =0xFFFF0000 + str r0, [r4, #0x20] + ldrh r0, [r4, #0x36] + subs r0, #0xa0 + strh r0, [r4, #0x36] + ldr r3, _080ABE4C @ =gUnk_03000BF0 + ldrh r2, [r3, #6] + ldr r1, _080ABE50 @ =0x00007FF0 + adds r0, r1, #0 + ands r0, r2 + movs r2, #8 + orrs r0, r2 + strh r0, [r4, #0x2e] + ldrh r0, [r3, #8] + ands r1, r0 + orrs r1, r2 + strh r1, [r4, #0x32] + movs r0, #0x2e + ldrsh r1, [r4, r0] + movs r0, #0x10 + ands r0, r5 + cmp r0, #0 + beq _080ABE54 + adds r1, #0x10 + b _080ABE56 + .align 2, 0 +_080ABE48: .4byte 0xFFFF0000 +_080ABE4C: .4byte gUnk_03000BF0 +_080ABE50: .4byte 0x00007FF0 +_080ABE54: + adds r1, #0xc0 +_080ABE56: + movs r0, #0xe0 + ands r0, r5 + lsrs r0, r0, #1 + adds r0, r1, r0 + strh r0, [r4, #0x2e] + movs r0, #0xf + ands r5, r0 + lsls r0, r5, #4 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r4, #0x32] + adds r0, r4, #0 + bl sub_08004168 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldr r0, _080ABE84 @ =0x0000012D + bl sub_080A3268 + pop {r4, r5, pc} + .align 2, 0 +_080ABE84: .4byte 0x0000012D + + thumb_func_start sub_080ABE88 +sub_080ABE88: @ 0x080ABE88 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0xc0 + lsls r1, r1, #5 + bl sub_08003FC4 + cmp r0, #0 + bne _080ABEA6 + adds r0, r4, #0 + movs r1, #4 + movs r2, #0 + bl CreateFX + bl sub_0805E780 +_080ABEA6: + pop {r4, pc} + + thumb_func_start sub_080ABEA8 +sub_080ABEA8: @ 0x080ABEA8 + push {r4, lr} + adds r4, r0, #0 + movs r2, #1 + strb r2, [r4, #0xc] + movs r0, #0x60 + strb r0, [r4, #0xe] + adds r3, r4, #0 + adds r3, #0x29 + ldrb r1, [r3] + subs r0, #0x68 + ands r0, r1 + movs r1, #2 + orrs r0, r1 + strb r0, [r3] + strb r2, [r4, #0x1c] + ldrb r0, [r4, #0xb] + cmp r0, #0 + bne _080ABEDA + bl sub_08000E50 + movs r1, #0xf + ands r0, r1 + lsls r0, r0, #1 + strb r0, [r4, #0x15] + b _080ABEEC +_080ABEDA: + adds r0, r4, #0 + movs r1, #0 + bl sub_08049F84 + strb r0, [r4, #0x15] + ldr r1, _080ABEFC @ =0x0000013F + adds r0, r4, #0 + bl sub_0801D2B4 +_080ABEEC: + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldr r0, _080ABF00 @ =0x00000193 + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_080ABEFC: .4byte 0x0000013F +_080ABF00: .4byte 0x00000193 + + thumb_func_start sub_080ABF04 +sub_080ABF04: @ 0x080ABF04 + push {r4, lr} + adds r4, r0, #0 + bl sub_080040A8 + cmp r0, #0 + bne _080ABF14 + bl sub_0805E780 +_080ABF14: + adds r0, r4, #0 + bl sub_0806F69C + adds r0, r4, #0 + bl sub_08004274 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ABF24 +sub_080ABF24: @ 0x080ABF24 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080ABF3C @ =gUnk_0812A84C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080ABF3C: .4byte gUnk_0812A84C + + thumb_func_start sub_080ABF40 +sub_080ABF40: @ 0x080ABF40 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080ABF66 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r1, _080ABFA0 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + ldr r0, _080ABFA4 @ =0x00000199 + bl sub_080A3268 +_080ABF66: + ldrh r2, [r4, #0x36] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080ABF78 + adds r0, r2, #2 + strh r0, [r4, #0x36] +_080ABF78: + adds r0, r4, #0 + bl sub_080AF090 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080ABF88 + bl sub_0805E780 +_080ABF88: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080ABF9C + bl sub_0805E780 +_080ABF9C: + pop {r4, pc} + .align 2, 0 +_080ABFA0: .4byte gLinkEntity +_080ABFA4: .4byte 0x00000199 + + thumb_func_start sub_080ABFA8 +sub_080ABFA8: @ 0x080ABFA8 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080ABFB0 +sub_080ABFB0: @ 0x080ABFB0 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080ABFC8 @ =gUnk_0812A954 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080ABFC8: .4byte gUnk_0812A954 + + thumb_func_start sub_080ABFCC +sub_080ABFCC: @ 0x080ABFCC + push {lr} + ldr r2, _080ABFE0 @ =gUnk_0812A968 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080ABFE0: .4byte gUnk_0812A968 + + thumb_func_start sub_080ABFE4 +sub_080ABFE4: @ 0x080ABFE4 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080ABFEC +sub_080ABFEC: @ 0x080ABFEC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xa] + adds r1, #1 + bl sub_08004260 + ldrb r1, [r4, #0xa] + cmp r1, #0 + beq _080AC030 + cmp r1, #1 + beq _080AC048 + movs r1, #0 + movs r0, #2 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + movs r0, #0xff + strb r0, [r4, #0xf] + ldr r1, _080AC028 @ =gUnk_0812A97C + ldrb r0, [r4, #0xb] + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + strh r0, [r4, #0x24] + adds r1, r4, #0 + adds r1, #0x44 + movs r0, #0x88 + strb r0, [r1] + ldr r0, _080AC02C @ =0x00000193 + b _080AC06A + .align 2, 0 +_080AC028: .4byte gUnk_0812A97C +_080AC02C: .4byte 0x00000193 +_080AC030: + movs r0, #1 + strb r0, [r4, #0xc] + strb r1, [r4, #0xe] + movs r0, #7 + strb r0, [r4, #0xf] + adds r1, r4, #0 + adds r1, #0x85 + movs r0, #0x18 + strb r0, [r1] + subs r1, #0x41 + movs r0, #0x88 + b _080AC058 +_080AC048: + strb r1, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x85 + movs r0, #0x18 +_080AC058: + strb r0, [r1] + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + ldrh r0, [r4, #0x36] + subs r0, #0x14 + strh r0, [r4, #0x36] + ldr r0, _080AC070 @ =0x00000149 +_080AC06A: + bl sub_080A3268 + pop {r4, pc} + .align 2, 0 +_080AC070: .4byte 0x00000149 + + thumb_func_start sub_080AC074 +sub_080AC074: @ 0x080AC074 + push {r4, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080AC084 + bl sub_0805E780 +_080AC084: + ldr r0, [r4, #0x50] + adds r1, r4, #0 + bl sub_0806FA6C + ldrh r0, [r4, #0x36] + subs r0, #0x14 + strh r0, [r4, #0x36] + adds r1, r4, #0 + adds r1, #0x85 + ldrb r0, [r1] + cmp r0, #0 + beq _080AC0B2 + subs r0, #1 + strb r0, [r1] + movs r1, #0xff + ands r0, r1 + movs r1, #7 + ands r0, r1 + cmp r0, #0 + bne _080AC0B2 + ldr r0, _080AC0E8 @ =0x00000149 + bl sub_080A3268 +_080AC0B2: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080AC0FE + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AC0F0 + movs r0, #2 + strb r0, [r4, #0xc] + ldr r1, _080AC0EC @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + strb r0, [r4, #0x15] + movs r0, #0xc0 + lsls r0, r0, #1 + strh r0, [r4, #0x24] + adds r0, #0x13 + bl sub_080A3268 + b _080AC0F8 + .align 2, 0 +_080AC0E8: .4byte 0x00000149 +_080AC0EC: .4byte gLinkEntity +_080AC0F0: + movs r0, #3 + strb r0, [r4, #0xc] + movs r0, #0x10 + strb r0, [r4, #0xe] +_080AC0F8: + ldrh r0, [r4, #0x36] + subs r0, #0x28 + strh r0, [r4, #0x36] +_080AC0FE: + pop {r4, pc} + + thumb_func_start sub_080AC100 +sub_080AC100: @ 0x080AC100 + push {r4, lr} + adds r4, r0, #0 + ldrh r2, [r4, #0x36] + movs r0, #0x36 + ldrsh r1, [r4, r0] + movs r0, #6 + rsbs r0, r0, #0 + cmp r1, r0 + bge _080AC116 + adds r0, r2, #3 + strh r0, [r4, #0x36] +_080AC116: + adds r0, r4, #0 + bl sub_080AF090 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080AC126 + bl sub_0805E780 +_080AC126: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080AC13A + bl sub_0805E780 +_080AC13A: + ldrb r0, [r4, #0xe] + cmp r0, #0x1d + bhi _080AC160 + adds r0, #1 + strb r0, [r4, #0xe] + movs r1, #0xff + ands r0, r1 + ldrb r1, [r4, #0xf] + ands r0, r1 + cmp r0, #0 + bne _080AC160 + ldr r1, _080AC164 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + adds r0, r4, #0 + bl sub_08004596 +_080AC160: + pop {r4, pc} + .align 2, 0 +_080AC164: .4byte gLinkEntity + + thumb_func_start sub_080AC168 +sub_080AC168: @ 0x080AC168 + push {r4, r5, r6, lr} + adds r4, r0, #0 + bl sub_08004274 + ldr r0, [r4, #0x34] + ldr r1, _080AC1C0 @ =0xFFFF8000 + adds r0, r0, r1 + str r0, [r4, #0x34] + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r6, r0, #0x18 + cmp r6, #0 + bne _080AC1F8 + movs r0, #4 + strb r0, [r4, #0xc] + strb r0, [r4, #0xe] + bl sub_08000E50 + adds r5, r0, #0 + movs r0, #7 + ands r5, r0 + ldr r0, _080AC1C4 @ =gUnk_0812A982 + adds r0, r5, r0 + ldrb r0, [r0] + strb r0, [r4, #0xf] + ldr r1, _080AC1C8 @ =gLinkEntity + adds r0, r4, #0 + bl sub_080045C4 + adds r1, r0, #0 + ldr r0, [r4, #0x50] + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #3 + bne _080AC1D0 + ldr r0, _080AC1CC @ =gUnk_0812A98A + adds r0, r5, r0 + ldrb r0, [r0] + subs r1, r1, r0 + strb r6, [r4, #0xb] + b _080AC1F2 + .align 2, 0 +_080AC1C0: .4byte 0xFFFF8000 +_080AC1C4: .4byte gUnk_0812A982 +_080AC1C8: .4byte gLinkEntity +_080AC1CC: .4byte gUnk_0812A98A +_080AC1D0: + cmp r0, #2 + bne _080AC1E4 + ldr r0, _080AC1E0 @ =gUnk_0812A98A + adds r0, r5, r0 + ldrb r0, [r0] + subs r1, r1, r0 + movs r0, #1 + b _080AC1F0 + .align 2, 0 +_080AC1E0: .4byte gUnk_0812A98A +_080AC1E4: + ldr r0, _080AC1FC @ =gUnk_0812A98A + adds r0, r5, r0 + ldrb r0, [r0] + lsrs r0, r0, #1 + subs r1, r1, r0 + movs r0, #2 +_080AC1F0: + strb r0, [r4, #0xb] +_080AC1F2: + movs r0, #0x1f + ands r1, r0 + strb r1, [r4, #0x15] +_080AC1F8: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AC1FC: .4byte gUnk_0812A98A + + thumb_func_start sub_080AC200 +sub_080AC200: @ 0x080AC200 + push {r4, r5, lr} + adds r4, r0, #0 + bl sub_08004274 + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + movs r5, #0xff + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC270 + movs r0, #0x10 + strb r0, [r4, #0xe] + movs r0, #0x21 + bl sub_080A7EE0 + adds r1, r0, #0 + cmp r1, #0 + beq _080AC23C + movs r0, #2 + strb r0, [r1, #0xa] + ldrb r0, [r4, #0xb] + strb r0, [r1, #0xb] + ldrb r0, [r4, #0x15] + strb r0, [r1, #0x15] + ldr r0, [r4, #0x50] + str r0, [r1, #0x50] + adds r0, r4, #0 + bl sub_0806FA24 +_080AC23C: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + ands r0, r5 + cmp r0, #0 + bne _080AC24C + bl sub_0805E780 +_080AC24C: + ldr r0, [r4, #0x50] + adds r0, #0x84 + ldrb r0, [r0] + cmp r0, #3 + bne _080AC25C + ldrb r0, [r4, #0x15] + adds r0, #3 + b _080AC26A +_080AC25C: + cmp r0, #2 + bne _080AC266 + ldrb r0, [r4, #0x15] + adds r0, #3 + b _080AC26A +_080AC266: + ldrb r0, [r4, #0x15] + adds r0, #2 +_080AC26A: + movs r1, #0x1f + ands r0, r1 + strb r0, [r4, #0x15] +_080AC270: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AC274 +sub_080AC274: @ 0x080AC274 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r0, [r4, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080AC284 + bl sub_0805E780 +_080AC284: + ldr r1, _080AC2BC @ =gUnk_0812A994 + ldrb r0, [r4, #0xb] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AC2C0 + ldrb r0, [r4, #0x1b] + movs r1, #0xc0 + orrs r0, r1 + strb r0, [r4, #0x1b] + ldrb r0, [r4, #0x19] + orrs r0, r1 + strb r0, [r4, #0x19] + adds r2, r4, #0 + adds r2, #0x29 + ldrb r1, [r2] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + b _080AC324 + .align 2, 0 +_080AC2BC: .4byte gUnk_0812A994 +_080AC2C0: + ldr r5, [r4, #0x50] + ldrb r2, [r5, #0x1b] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r4, #0x1b] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r4, #0x1b] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r4, #0x19] + ands r1, r2 + orrs r1, r0 + strb r1, [r4, #0x19] + adds r0, r5, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + lsrs r1, r1, #0x1d + subs r1, #2 + adds r3, r4, #0 + adds r3, #0x29 + movs r0, #7 + ands r1, r0 + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] + ldrb r0, [r5, #0x19] + lsrs r0, r0, #6 + cmp r0, #3 + bne _080AC31C + adds r0, r5, #0 + adds r0, #0x7c + ldrb r0, [r0] + cmp r0, #0 + bne _080AC31C + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + b _080AC322 +_080AC31C: + ldrb r1, [r4, #0x10] + movs r0, #0x80 + orrs r0, r1 +_080AC322: + strb r0, [r4, #0x10] +_080AC324: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AC328 +sub_080AC328: @ 0x080AC328 + push {lr} + ldr r2, _080AC33C @ =gUnk_0812A9A8 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080AC33C: .4byte gUnk_0812A9A8 + + thumb_func_start sub_080AC340 +sub_080AC340: @ 0x080AC340 + push {r4, r5, lr} + adds r5, r0, #0 + bl sub_080AC5E4 + cmp r0, #0 + beq _080AC380 + movs r2, #1 + movs r4, #1 + strb r4, [r5, #0xc] + movs r0, #0xc + strb r0, [r5, #0x1e] + ldrb r1, [r5, #0x18] + subs r0, #0x10 + ands r0, r1 + orrs r0, r2 + strb r0, [r5, #0x18] + bl sub_08000E50 + ldr r1, _080AC384 @ =gUnk_0812A9B4 + ands r0, r4 + lsls r0, r0, #1 + adds r0, r0, r1 + ldrh r0, [r0] + adds r1, r5, #0 + adds r1, #0x7a + strh r0, [r1] + subs r1, #0x42 + movs r0, #2 + strb r0, [r1] + adds r0, r5, #0 + bl sub_080AC388 +_080AC380: + pop {r4, r5, pc} + .align 2, 0 +_080AC384: .4byte gUnk_0812A9B4 + + thumb_func_start sub_080AC388 +sub_080AC388: @ 0x080AC388 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + adds r5, r0, #0 + ldr r1, _080AC3E4 @ =gUnk_0812A9B8 + ldrb r0, [r5, #0xa] + adds r0, r0, r1 + ldrb r3, [r0] + ldr r0, [r5, #0x50] + mov sl, r0 + ldrb r0, [r0, #0x14] + movs r1, #0x80 + mov sb, r1 + mov r1, sb + eors r1, r0 + adds r6, r5, #0 + adds r6, #0x7c + ldrh r4, [r6] + lsrs r0, r4, #8 + subs r1, r1, r0 + adds r2, r5, #0 + adds r2, #0x7a + ldrh r7, [r2] + mov ip, r7 + movs r7, #0 + ldrsh r0, [r2, r7] + cmp r0, #0 + bge _080AC404 + subs r0, r1, r3 + movs r7, #0xff + mov r8, r7 + ands r0, r7 + cmp r0, #0x7f + bhi _080AC3E8 + movs r1, #0 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + strh r0, [r2] + mov r2, sl + ldrb r0, [r2, #0x14] + mov r7, sb + eors r0, r7 + subs r0, r0, r3 + b _080AC422 + .align 2, 0 +_080AC3E4: .4byte gUnk_0812A9B8 +_080AC3E8: + mov r2, ip + adds r0, r4, r2 + strh r0, [r6] + adds r0, r1, r3 + mov r7, r8 + ands r0, r7 + cmp r0, #0x80 + bls _080AC45A + mov r1, sl + ldrb r0, [r1, #0x14] + mov r2, sb + eors r0, r2 + adds r0, r0, r3 + b _080AC44E +_080AC404: + adds r0, r1, r3 + movs r7, #0xff + mov r8, r7 + ands r0, r7 + cmp r0, #0x80 + bls _080AC432 + movs r1, #0 + ldrsh r0, [r2, r1] + rsbs r0, r0, #0 + strh r0, [r2] + mov r2, sl + ldrb r0, [r2, #0x14] + mov r7, sb + eors r0, r7 + adds r0, r0, r3 +_080AC422: + movs r1, #0xff + ands r0, r1 + lsls r0, r0, #8 + strh r0, [r6] + adds r0, r5, #0 + bl sub_080AC884 + b _080AC45A +_080AC432: + mov r2, ip + adds r0, r4, r2 + strh r0, [r6] + subs r0, r1, r3 + mov r7, r8 + ands r0, r7 + subs r0, #1 + cmp r0, #0x7e + bhi _080AC45A + mov r1, sl + ldrb r0, [r1, #0x14] + mov r2, sb + eors r0, r2 + subs r0, r0, r3 +_080AC44E: + movs r1, #0xff + ands r0, r1 + lsls r0, r0, #8 + movs r1, #0x80 + orrs r0, r1 + strh r0, [r6] +_080AC45A: + adds r0, r5, #0 + adds r0, #0x7c + ldrh r0, [r0] + lsrs r0, r0, #8 + strb r0, [r5, #0x15] + adds r0, r5, #0 + bl sub_080AC6F0 + adds r0, r5, #0 + bl sub_080AC760 + adds r0, r5, #0 + bl sub_080AC7C4 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080AC480 +sub_080AC480: @ 0x080AC480 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0xe] + cmp r1, #0 + beq _080AC4BE + ldr r0, [r4, #0x50] + adds r0, #0x45 + ldrb r0, [r0] + cmp r0, #0 + bne _080AC4A2 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x1d + strb r0, [r1] + b _080AC50A +_080AC4A2: + subs r0, r1, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC50A + adds r0, r4, #0 + adds r0, #0x3f + movs r1, #0x1c + strb r1, [r0] + movs r0, #0x8b + lsls r0, r0, #1 + bl sub_080A3268 + b _080AC50A +_080AC4BE: + ldrb r0, [r4, #0xf] + subs r0, #1 + strb r0, [r4, #0xf] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC4D6 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x3f + movs r0, #0x1d + strb r0, [r1] +_080AC4D6: + adds r1, r4, #0 + adds r1, #0x7c + ldrh r2, [r1] + adds r0, r4, #0 + adds r0, #0x7a + movs r3, #0 + ldrsh r0, [r0, r3] + cmp r0, #0 + ble _080AC4EE + movs r3, #0xc0 + lsls r3, r3, #2 + b _080AC4F0 +_080AC4EE: + ldr r3, _080AC50C @ =0xFFFFFD00 +_080AC4F0: + adds r0, r2, r3 + strh r0, [r1] + lsrs r0, r0, #8 + strb r0, [r4, #0x15] + adds r0, r4, #0 + bl sub_080AC6F0 + adds r0, r4, #0 + bl sub_080AC760 + adds r0, r4, #0 + bl sub_080AC7C4 +_080AC50A: + pop {r4, pc} + .align 2, 0 +_080AC50C: .4byte 0xFFFFFD00 + + thumb_func_start sub_080AC510 +sub_080AC510: @ 0x080AC510 + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080AC556 + movs r3, #1 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r2, _080AC558 @ =gUnk_0812A9BA + ldrb r1, [r4, #0xa] + lsls r0, r1, #1 + adds r0, r0, r1 + ldrb r1, [r4, #0xb] + adds r0, r0, r1 + subs r0, #1 + adds r0, r0, r2 + ldrb r0, [r0] + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + orrs r0, r3 + strb r0, [r4, #0x18] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldrh r1, [r4, #0xa] + movs r0, #0xc0 + lsls r0, r0, #2 + cmp r1, r0 + bne _080AC556 + ldr r0, _080AC55C @ =gUnk_080FD458 + str r0, [r4, #0x48] +_080AC556: + pop {r4, pc} + .align 2, 0 +_080AC558: .4byte gUnk_0812A9BA +_080AC55C: .4byte gUnk_080FD458 + + thumb_func_start sub_080AC560 +sub_080AC560: @ 0x080AC560 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x54] + ldr r0, [r5, #4] + cmp r0, #0 + bne _080AC570 + bl sub_0805E780 +_080AC570: + ldrb r0, [r4, #0xc] + cmp r0, #0 + bne _080AC5A6 + movs r0, #1 + strb r0, [r4, #0xc] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080AC590 + ldr r0, _080AC58C @ =gUnk_080FD168 + b _080AC592 + .align 2, 0 +_080AC58C: .4byte gUnk_080FD168 +_080AC590: + ldr r0, _080AC5DC @ =gUnk_080FD448 +_080AC592: + str r0, [r4, #0x48] + movs r0, #0xff + strb r0, [r4, #0x1e] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] +_080AC5A6: + adds r0, r4, #0 + adds r0, #0x79 + ldrb r2, [r0] + lsls r2, r2, #8 + ldr r3, _080AC5E0 @ =gUnk_080C9160 + ldrb r0, [r5, #0x15] + lsls r0, r0, #1 + adds r0, r0, r3 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r2, r1 + ldr r0, [r5, #0x2c] + adds r0, r0, r1 + str r0, [r4, #0x2c] + ldrb r0, [r5, #0x15] + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r3 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r2, r1 + ldr r0, [r5, #0x30] + subs r0, r0, r1 + str r0, [r4, #0x30] + pop {r4, r5, pc} + .align 2, 0 +_080AC5DC: .4byte gUnk_080FD448 +_080AC5E0: .4byte gUnk_080C9160 + + thumb_func_start sub_080AC5E4 +sub_080AC5E4: @ 0x080AC5E4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r5, r0, #0 + ldrb r4, [r5, #0xa] + cmp r4, #0 + bne _080AC668 + ldr r0, _080AC664 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x43 + bhi _080AC670 + adds r1, r5, #0 + adds r1, #0x79 + movs r0, #0x11 + strb r0, [r1] + movs r0, #0x22 + bl sub_080A7EE0 + adds r6, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r6, #0xa] + movs r0, #1 + strb r0, [r6, #0xb] + ldr r0, [r5, #0x50] + str r0, [r6, #0x50] + adds r1, r6, #0 + adds r1, #0x79 + movs r0, #0x12 + strb r0, [r1] + str r6, [r5, #0x54] + movs r0, #0x22 + bl sub_080A7EE0 + adds r7, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r7, #0xa] + movs r0, #2 + strb r0, [r7, #0xb] + ldr r0, [r5, #0x50] + str r0, [r7, #0x50] + adds r0, r7, #0 + adds r0, #0x79 + movs r1, #0x14 + mov r8, r1 + mov r1, r8 + strb r1, [r0] + str r7, [r6, #0x54] + movs r0, #0x22 + bl sub_080A7EE0 + ldrb r1, [r5, #0xa] + strb r1, [r0, #0xa] + movs r1, #3 + strb r1, [r0, #0xb] + ldr r1, [r5, #0x50] + str r1, [r0, #0x50] + str r4, [r0, #0x54] + adds r1, r0, #0 + adds r1, #0x79 + strb r4, [r1] + str r0, [r7, #0x54] + b _080AC6C8 + .align 2, 0 +_080AC664: .4byte gUnk_03003DBC +_080AC668: + ldr r0, _080AC674 @ =gUnk_03003DBC + ldrb r0, [r0] + cmp r0, #0x44 + bls _080AC678 +_080AC670: + movs r0, #0 + b _080AC6E8 + .align 2, 0 +_080AC674: .4byte gUnk_03003DBC +_080AC678: + adds r1, r5, #0 + adds r1, #0x79 + movs r0, #0 + mov sb, r0 + movs r0, #0xf + strb r0, [r1] + movs r0, #0x22 + bl sub_080A7EE0 + adds r6, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r6, #0xa] + movs r0, #1 + strb r0, [r6, #0xb] + ldr r0, [r5, #0x50] + str r0, [r6, #0x50] + adds r0, r6, #0 + adds r0, #0x79 + movs r1, #0x10 + mov r8, r1 + mov r1, r8 + strb r1, [r0] + str r6, [r5, #0x54] + movs r0, #0x22 + bl sub_080A7EE0 + adds r7, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r7, #0xa] + movs r0, #2 + strb r0, [r7, #0xb] + ldr r0, [r5, #0x50] + str r0, [r7, #0x50] + mov r0, sb + str r0, [r7, #0x54] + adds r1, r7, #0 + adds r1, #0x79 + movs r0, #0x20 + strb r0, [r1] + str r7, [r6, #0x54] +_080AC6C8: + movs r0, #0x22 + bl sub_080A7EE0 + adds r6, r0, #0 + ldrb r0, [r5, #0xa] + strb r0, [r6, #0xa] + movs r0, #4 + strb r0, [r6, #0xb] + ldr r0, [r5, #0x50] + str r0, [r6, #0x50] + str r5, [r6, #0x54] + adds r0, r6, #0 + adds r0, #0x79 + mov r1, r8 + strb r1, [r0] + movs r0, #1 +_080AC6E8: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080AC6F0 +sub_080AC6F0: @ 0x080AC6F0 + push {r4, r5, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0x15] + movs r2, #0x1f + ands r2, r0 + lsrs r0, r0, #5 + lsls r1, r0, #1 + adds r3, r1, r0 + ldr r1, _080AC724 @ =gUnk_0812A9C0 + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + subs r0, r0, r3 + adds r5, r1, #0 + cmp r0, #3 + bhi _080AC73A + cmp r0, #1 + beq _080AC72E + cmp r0, #1 + blo _080AC728 + cmp r0, #2 + beq _080AC732 + cmp r2, #0x19 + bhi _080AC75C + b _080AC73A + .align 2, 0 +_080AC724: .4byte gUnk_0812A9C0 +_080AC728: + cmp r2, #6 + bls _080AC75C + b _080AC73A +_080AC72E: + subs r0, r2, #5 + b _080AC736 +_080AC732: + adds r0, r2, #0 + subs r0, #0xf +_080AC736: + cmp r0, #0xc + bls _080AC75C +_080AC73A: + adds r0, r3, #3 + cmp r2, #0x1a + bhi _080AC74E + adds r0, r3, #2 + cmp r2, #0x10 + bhi _080AC74E + adds r0, r3, #0 + cmp r2, #5 + bls _080AC74E + adds r0, #1 +_080AC74E: + movs r1, #0x18 + bl __modsi3 + strb r0, [r4, #0x14] + adds r0, r0, r5 + ldrb r0, [r0] + strb r0, [r4, #0x1e] +_080AC75C: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AC760 +sub_080AC760: @ 0x080AC760 + push {r4, r5, r6, lr} + adds r6, r0, #0 + ldr r4, [r6, #0x54] + ldrb r0, [r4, #0x15] + ldrb r3, [r6, #0x15] + subs r2, r0, r3 + movs r1, #0xff + ands r2, r1 + adds r0, r2, #0 + adds r0, #8 + ands r0, r1 + cmp r0, #0x10 + ble _080AC78A + cmp r2, #0x80 + ble _080AC784 + adds r0, r3, #0 + subs r0, #8 + b _080AC788 +_080AC784: + adds r0, r3, #0 + adds r0, #8 +_080AC788: + strb r0, [r4, #0x15] +_080AC78A: + ldr r5, [r4, #0x54] + ldr r0, [r5, #0x54] + cmp r0, #0 + bne _080AC79C + ldr r0, [r6, #0x50] + ldrb r0, [r0, #0x14] + movs r1, #0x80 + eors r0, r1 + b _080AC7BE +_080AC79C: + ldrb r0, [r5, #0x15] + ldrb r3, [r4, #0x15] + subs r2, r0, r3 + movs r1, #0xff + ands r2, r1 + adds r0, r2, #0 + adds r0, #8 + ands r0, r1 + cmp r0, #0x10 + ble _080AC7C0 + cmp r2, #0x80 + ble _080AC7BA + adds r0, r3, #0 + subs r0, #8 + b _080AC7BE +_080AC7BA: + adds r0, r3, #0 + adds r0, #8 +_080AC7BE: + strb r0, [r5, #0x15] +_080AC7C0: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080AC7C4 +sub_080AC7C4: @ 0x080AC7C4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + ldr r0, [r4, #0x54] + mov r8, r0 + ldr r7, [r0, #0x54] + ldr r5, [r7, #0x54] + cmp r5, #0 + beq _080AC7E4 + ldr r0, [r4, #0x50] + adds r1, r5, #0 + bl sub_0806FA24 + b _080AC7E6 +_080AC7E4: + ldr r5, [r4, #0x50] +_080AC7E6: + adds r0, r7, #0 + adds r0, #0x79 + ldrb r2, [r0] + lsls r2, r2, #8 + ldr r3, _080AC880 @ =gUnk_080C9160 + mov sb, r3 + ldrb r1, [r7, #0x15] + lsls r0, r1, #1 + add r0, sb + movs r3, #0 + ldrsh r0, [r0, r3] + adds r6, r0, #0 + muls r6, r2, r6 + adds r1, #0x40 + lsls r1, r1, #1 + add r1, sb + movs r3, #0 + ldrsh r0, [r1, r3] + muls r0, r2, r0 + rsbs r3, r0, #0 + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_0806FA48 + mov r0, r8 + adds r0, #0x79 + ldrb r2, [r0] + lsls r2, r2, #8 + mov r0, r8 + ldrb r1, [r0, #0x15] + lsls r0, r1, #1 + add r0, sb + movs r3, #0 + ldrsh r0, [r0, r3] + adds r6, r0, #0 + muls r6, r2, r6 + adds r1, #0x40 + lsls r1, r1, #1 + add r1, sb + movs r3, #0 + ldrsh r0, [r1, r3] + muls r0, r2, r0 + rsbs r3, r0, #0 + adds r0, r7, #0 + mov r1, r8 + adds r2, r6, #0 + bl sub_0806FA48 + adds r0, r4, #0 + adds r0, #0x79 + ldrb r2, [r0] + lsls r2, r2, #8 + ldrb r1, [r4, #0x15] + lsls r0, r1, #1 + add r0, sb + movs r3, #0 + ldrsh r0, [r0, r3] + adds r6, r0, #0 + muls r6, r2, r6 + adds r1, #0x40 + lsls r1, r1, #1 + add r1, sb + movs r3, #0 + ldrsh r0, [r1, r3] + muls r0, r2, r0 + rsbs r3, r0, #0 + mov r0, r8 + adds r1, r4, #0 + adds r2, r6, #0 + bl sub_0806FA48 + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AC880: .4byte gUnk_080C9160 + + thumb_func_start sub_080AC884 +sub_080AC884: @ 0x080AC884 + push {lr} + adds r1, r0, #0 + ldr r0, [r1, #0x50] + adds r2, r0, #0 + adds r2, #0x72 + ldrh r0, [r2] + cmp r0, #0 + beq _080AC8A4 + movs r0, #0 + strh r0, [r2] + movs r0, #2 + strb r0, [r1, #0xc] + movs r0, #0x3c + strb r0, [r1, #0xe] + movs r0, #0x56 + strb r0, [r1, #0xf] +_080AC8A4: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AC8A8 +sub_080AC8A8: @ 0x080AC8A8 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080AC8C0 @ =gUnk_0812A9D8 + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080AC8C0: .4byte gUnk_0812A9D8 + + thumb_func_start sub_080AC8C4 +sub_080AC8C4: @ 0x080AC8C4 + push {lr} + ldr r2, _080AC8D8 @ =gUnk_0812A9EC + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080AC8D8: .4byte gUnk_0812A9EC + + thumb_func_start sub_080AC8DC +sub_080AC8DC: @ 0x080AC8DC + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0 + blt _080AC8FE + cmp r1, #3 + ble _080AC8F8 + cmp r1, #0x1f + bgt _080AC8FE + cmp r1, #0x1e + blt _080AC8FE +_080AC8F8: + bl sub_0805E780 + b _080AC920 +_080AC8FE: + ldrb r0, [r4, #0xc] + cmp r0, #3 + beq _080AC920 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_080AC920: + adds r0, r4, #0 + bl sub_080AC8C4 + pop {r4, pc} + + thumb_func_start sub_080AC928 +sub_080AC928: @ 0x080AC928 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0x3c + strb r0, [r4, #0xe] + adds r1, r4, #0 + adds r1, #0x38 + movs r0, #2 + strb r0, [r1] + adds r0, r4, #0 + bl sub_08016A04 + adds r0, r4, #0 + movs r1, #0 + bl sub_08004260 + adds r0, r4, #0 + bl sub_080AC954 + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AC954 +sub_080AC954: @ 0x080AC954 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r0, [r5, #0x50] + ldr r0, [r0, #4] + cmp r0, #0 + bne _080AC964 + bl sub_0805E780 +_080AC964: + ldr r0, [r5, #0x50] + ldrb r3, [r0, #0x14] + ldr r4, _080AC9C4 @ =gUnk_080C9160 + lsls r1, r3, #1 + adds r1, r1, r4 + movs r2, #0 + ldrsh r1, [r1, r2] + lsls r2, r1, #2 + adds r2, r2, r1 + lsls r2, r2, #0xb + adds r3, #0x40 + lsls r3, r3, #1 + adds r3, r3, r4 + movs r4, #0 + ldrsh r1, [r3, r4] + lsls r3, r1, #2 + adds r3, r3, r1 + lsls r3, r3, #0xb + rsbs r3, r3, #0 + adds r1, r5, #0 + bl sub_0806FA48 + adds r0, r5, #0 + bl sub_08004274 + ldrb r0, [r5, #0xe] + subs r0, #1 + strb r0, [r5, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AC9C0 + movs r0, #2 + strb r0, [r5, #0xc] + ldrb r0, [r5, #0x10] + movs r1, #0x80 + orrs r0, r1 + strb r0, [r5, #0x10] + ldr r1, _080AC9C8 @ =gLinkEntity + adds r0, r5, #0 + bl sub_080045C4 + strb r0, [r5, #0x15] + movs r0, #0x97 + lsls r0, r0, #1 + bl sub_080A3268 +_080AC9C0: + pop {r4, r5, pc} + .align 2, 0 +_080AC9C4: .4byte gUnk_080C9160 +_080AC9C8: .4byte gLinkEntity + + thumb_func_start sub_080AC9CC +sub_080AC9CC: @ 0x080AC9CC + push {r4, lr} + adds r4, r0, #0 + bl sub_080AF090 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080AC9E8 + bl sub_0805E780 +_080AC9E8: + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080ACA10 + movs r0, #3 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + ldrh r0, [r4, #0x24] + lsls r0, r0, #0x10 + asrs r0, r0, #0x11 + strh r0, [r4, #0x24] + adds r0, r4, #0 + movs r1, #1 + bl sub_08004260 +_080ACA10: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ACA14 +sub_080ACA14: @ 0x080ACA14 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AF090 + adds r0, r4, #0 + bl sub_08004274 + adds r4, #0x5a + ldrb r1, [r4] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080ACA32 + bl sub_0805E780 +_080ACA32: + pop {r4, pc} + + thumb_func_start sub_080ACA34 +sub_080ACA34: @ 0x080ACA34 + push {r4, r5, lr} + adds r5, r0, #0 + ldr r4, _080ACA4C @ =gUnk_0812AA5C + bl sub_0800279C + lsls r0, r0, #2 + adds r0, r0, r4 + ldr r1, [r0] + adds r0, r5, #0 + bl _call_via_r1 + pop {r4, r5, pc} + .align 2, 0 +_080ACA4C: .4byte gUnk_0812AA5C + + thumb_func_start sub_080ACA50 +sub_080ACA50: @ 0x080ACA50 + push {lr} + ldr r2, _080ACA64 @ =gUnk_0812AA74 + ldrb r1, [r0, #0xc] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080ACA64: .4byte gUnk_0812AA74 + + thumb_func_start sub_080ACA68 +sub_080ACA68: @ 0x080ACA68 + push {r4, lr} + adds r4, r0, #0 + adds r0, #0x41 + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + cmp r1, #0xc + bgt _080ACA82 + cmp r1, #0xa + bge _080ACA86 + cmp r1, #6 + beq _080ACA86 + b _080ACAC0 +_080ACA82: + cmp r1, #0x1a + bne _080ACAC0 +_080ACA86: + movs r0, #2 + strb r0, [r4, #0xc] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r1, #0x80 + lsls r1, r1, #1 + adds r0, r1, #0 + ldrh r1, [r4, #0x24] + adds r0, r0, r1 + strh r0, [r4, #0x24] + ldr r0, [r4, #0x4c] + str r0, [r4, #0x54] + adds r0, r4, #0 + bl sub_080ACB40 + cmp r0, #0 + beq _080ACAB0 + movs r0, #0 + b _080ACAB6 +_080ACAB0: + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] +_080ACAB6: + strb r0, [r4, #0x15] + movs r0, #0xd8 + bl sub_080A3268 + b _080ACAC4 +_080ACAC0: + bl sub_0805E780 +_080ACAC4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ACAC8 +sub_080ACAC8: @ 0x080ACAC8 + push {lr} + movs r2, #0 + movs r1, #1 + strb r1, [r0, #0xc] + movs r1, #0x10 + strb r1, [r0, #0x15] + ldr r1, _080ACAE8 @ =0x0000FFFC + strh r1, [r0, #0x36] + str r2, [r0, #0x54] + movs r1, #7 + bl sub_08004260 + ldr r0, _080ACAEC @ =0x00000199 + bl sub_080A3268 + pop {pc} + .align 2, 0 +_080ACAE8: .4byte 0x0000FFFC +_080ACAEC: .4byte 0x00000199 + + thumb_func_start sub_080ACAF0 +sub_080ACAF0: @ 0x080ACAF0 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AF090 + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080ACB0C + bl sub_0805E780 +_080ACB0C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ACB10 +sub_080ACB10: @ 0x080ACB10 + push {r4, lr} + adds r4, r0, #0 + bl sub_080AF090 + ldrh r0, [r4, #0x2a] + cmp r0, #0 + beq _080ACB22 + bl sub_0805E780 +_080ACB22: + adds r0, r4, #0 + bl sub_08004274 + adds r0, r4, #0 + bl sub_080ACB90 + adds r0, r4, #0 + bl sub_080A7EB0 + cmp r0, #0 + beq _080ACB3C + bl sub_0805E780 +_080ACB3C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ACB40 +sub_080ACB40: @ 0x080ACB40 + push {lr} + adds r2, r0, #0 + ldr r0, [r2, #0x50] + ldr r1, [r0, #0x50] + ldr r3, [r2, #0x54] + ldr r0, [r1, #0x64] + ldr r0, [r0, #0x1c] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB5A + ldr r0, [r0, #0x54] + cmp r3, r0 + beq _080ACB86 +_080ACB5A: + ldr r1, [r1, #0x64] + ldr r0, [r1, #0x20] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB6A + ldr r0, [r0, #0x54] + cmp r3, r0 + beq _080ACB86 +_080ACB6A: + ldr r0, [r1, #0x24] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB78 + ldr r0, [r0, #0x54] + cmp r3, r0 + beq _080ACB86 +_080ACB78: + ldr r0, [r1, #0x28] + ldr r0, [r0, #0x54] + cmp r0, r2 + beq _080ACB8A + ldr r0, [r0, #0x54] + cmp r3, r0 + bne _080ACB8A +_080ACB86: + movs r0, #0 + b _080ACB8C +_080ACB8A: + movs r0, #1 +_080ACB8C: + pop {pc} + .align 2, 0 + + thumb_func_start sub_080ACB90 +sub_080ACB90: @ 0x080ACB90 + push {r4, lr} + adds r2, r0, #0 + ldr r3, [r2, #0x50] + movs r0, #0x2e + ldrsh r1, [r2, r0] + movs r4, #0x2e + ldrsh r0, [r3, r4] + cmp r1, r0 + bne _080ACBC6 + movs r0, #0x32 + ldrsh r1, [r2, r0] + movs r4, #0x32 + ldrsh r0, [r3, r4] + cmp r1, r0 + bgt _080ACBC6 + movs r0, #1 + strb r0, [r3, #0xf] + adds r0, r2, #0 + movs r1, #0x1f + movs r2, #0x40 + bl CreateFX + ldr r0, _080ACBC8 @ =0x00000119 + bl sub_08004488 + bl sub_0805E780 +_080ACBC6: + pop {r4, pc} + .align 2, 0 +_080ACBC8: .4byte 0x00000119 + + thumb_func_start sub_080ACBCC +sub_080ACBCC: @ 0x080ACBCC + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080ACBFC @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0x7f + ands r0, r1 + cmp r0, #1 + beq _080ACBE0 + bl sub_0805E780 +_080ACBE0: + ldr r1, _080ACC00 @ =gUnk_0812AA80 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + adds r1, r4, #0 + adds r1, #0x3d + movs r0, #0 + strb r0, [r1] + pop {r4, pc} + .align 2, 0 +_080ACBFC: .4byte gUnk_03003F80 +_080ACC00: .4byte gUnk_0812AA80 + + thumb_func_start sub_080ACC04 +sub_080ACC04: @ 0x080ACC04 + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080ACC54 @ =gLinkEntity + adds r0, #0x3b + ldrb r0, [r0] + adds r1, r4, #0 + adds r1, #0x3b + strb r0, [r1] + ldrb r0, [r4, #0x14] + lsls r0, r0, #2 + strb r0, [r4, #0x15] + movs r0, #0x80 + lsls r0, r0, #2 + strh r0, [r4, #0x24] + ldrb r1, [r4, #0x10] + movs r0, #0xa0 + orrs r0, r1 + strb r0, [r4, #0x10] + adds r1, r4, #0 + adds r1, #0x3c + movs r0, #2 + strb r0, [r1] + ldr r1, _080ACC58 @ =gUnk_0812AAD8 + ldrb r0, [r4, #0xa] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + str r0, [r4, #0x48] + movs r0, #0x10 + str r0, [r4, #0x70] + adds r0, r4, #0 + bl sub_080ACDB0 + adds r0, r4, #0 + bl sub_0801766C + pop {r4, pc} + .align 2, 0 +_080ACC54: .4byte gLinkEntity +_080ACC58: .4byte gUnk_0812AAD8 + + thumb_func_start sub_080ACC5C +sub_080ACC5C: @ 0x080ACC5C + push {r4, lr} + adds r4, r0, #0 + bl sub_080ACDB0 + cmp r0, #0 + bne _080ACC74 + adds r0, r4, #0 + bl sub_080ACC78 + adds r0, r4, #0 + bl sub_080ACECC +_080ACC74: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ACC78 +sub_080ACC78: @ 0x080ACC78 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r2, [r4, #0xa] + ldr r0, _080ACD20 @ =gUnk_030010A0 + ldr r0, [r0] + adds r0, r2, r0 + movs r1, #1 + ands r0, r1 + cmp r0, #0 + beq _080ACCF8 + ldr r0, _080ACD24 @ =gUnk_0812AAAC + lsls r1, r2, #2 + adds r1, r1, r0 + ldr r7, [r1] + ldr r0, [r4, #0x74] + adds r0, r7, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + cmp r0, #0 + bne _080ACCA4 + str r0, [r4, #0x74] +_080ACCA4: + ldr r0, [r4, #0x74] + adds r0, r7, r0 + movs r2, #0 + ldrsb r2, [r0, r2] + movs r3, #1 + ldrsb r3, [r0, r3] + adds r0, r4, #0 + movs r1, #0xe + bl sub_08008782 + adds r5, r0, #0 + cmp r5, #0 + beq _080ACCF2 + ldrb r1, [r5, #5] + ldrb r2, [r5, #2] + movs r0, #0x11 + bl sub_080A2960 + adds r6, r0, #0 + cmp r6, #0 + beq _080ACCF2 + ldrb r0, [r5, #3] + strb r0, [r6, #0xe] + ldr r0, [r4, #0x74] + adds r0, r7, r0 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x2e] + adds r0, r0, r1 + strh r0, [r6, #0x2e] + ldr r0, [r4, #0x74] + adds r0, r0, r7 + ldrb r0, [r0, #1] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r4, #0x32] + adds r0, r0, r1 + strh r0, [r6, #0x32] +_080ACCF2: + ldr r0, [r4, #0x74] + adds r0, #2 + str r0, [r4, #0x74] +_080ACCF8: + ldr r2, [r4, #0x54] + cmp r2, #0 + bne _080ACD08 + ldr r0, [r4, #0x70] + cmp r0, #2 + bls _080ACD08 + movs r0, #1 + str r0, [r4, #0x70] +_080ACD08: + ldr r0, [r4, #0x70] + subs r0, #1 + str r0, [r4, #0x70] + movs r1, #1 + rsbs r1, r1, #0 + cmp r0, r1 + bne _080ACDAE + cmp r2, #0 + bne _080ACD28 + movs r0, #2 + b _080ACD32 + .align 2, 0 +_080ACD20: .4byte gUnk_030010A0 +_080ACD24: .4byte gUnk_0812AAAC +_080ACD28: + ldr r0, _080ACD74 @ =gUnk_0812AABC + ldrb r1, [r4, #0xa] + adds r1, r1, r0 + movs r0, #0 + ldrsb r0, [r1, r0] +_080ACD32: + str r0, [r4, #0x70] + movs r0, #0x17 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r6, r0, #0 + cmp r6, #0 + beq _080ACDAE + bl sub_08000E50 + adds r2, r0, #0 + movs r0, #0xf + ands r2, r0 + ldr r3, [r4, #0x48] + ldrb r1, [r3, #6] + cmp r1, r2 + bge _080ACD58 + adds r2, r1, #0 +_080ACD58: + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080ACD62 + rsbs r2, r2, #0 +_080ACD62: + ldrb r0, [r4, #0x14] + lsrs r0, r0, #1 + cmp r0, #1 + beq _080ACD9C + cmp r0, #1 + bgt _080ACD78 + cmp r0, #0 + beq _080ACD82 + b _080ACDAE + .align 2, 0 +_080ACD74: .4byte gUnk_0812AABC +_080ACD78: + cmp r0, #2 + beq _080ACD8C + cmp r0, #3 + beq _080ACDA2 + b _080ACDAE +_080ACD82: + ldrb r0, [r3, #7] + ldrh r1, [r4, #0x32] + subs r1, r1, r0 + strh r1, [r6, #0x32] + b _080ACD94 +_080ACD8C: + ldrh r0, [r4, #0x32] + ldrb r3, [r3, #7] + adds r0, r0, r3 + strh r0, [r6, #0x32] +_080ACD94: + ldrh r0, [r4, #0x2e] + adds r0, r0, r2 + strh r0, [r6, #0x2e] + b _080ACDAE +_080ACD9C: + ldrh r0, [r4, #0x2e] + adds r0, r0, r1 + b _080ACDA6 +_080ACDA2: + ldrh r0, [r4, #0x2e] + subs r0, r0, r1 +_080ACDA6: + strh r0, [r6, #0x2e] + ldrh r0, [r4, #0x32] + adds r0, r0, r2 + strh r0, [r6, #0x32] +_080ACDAE: + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080ACDB0 +sub_080ACDB0: @ 0x080ACDB0 + push {r4, r5, r6, r7, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + bne _080ACDE8 + ldr r2, _080ACDE0 @ =gLinkEntity + ldr r1, _080ACDE4 @ =gUnk_08126EE4 + ldrb r0, [r4, #0x14] + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r2, #0x2e] + adds r0, r0, r3 + strh r0, [r4, #0x2e] + ldrb r0, [r4, #0x14] + adds r0, #1 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r2, [r2, #0x32] + adds r0, r0, r2 + b _080ACEB4 + .align 2, 0 +_080ACDE0: .4byte gLinkEntity +_080ACDE4: .4byte gUnk_08126EE4 +_080ACDE8: + ldrb r2, [r4, #0x14] + movs r0, #2 + ands r0, r2 + cmp r0, #0 + beq _080ACE48 + ldr r0, [r4, #0x50] + ldrh r1, [r0, #0x32] + subs r1, #3 + strh r1, [r4, #0x32] + movs r1, #4 + ands r1, r2 + adds r3, r0, #0 + cmp r1, #0 + beq _080ACE20 + movs r0, #0x2e + ldrsh r7, [r3, r0] + movs r0, #0x2e + ldrsh r6, [r4, r0] + ldr r1, _080ACE1C @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r0, r2, r1 + ldrb r0, [r0] + rsbs r5, r0, #0 + adds r0, r1, #0 + b _080ACE30 + .align 2, 0 +_080ACE1C: .4byte gUnk_0812AAE8 +_080ACE20: + movs r0, #0x2e + ldrsh r6, [r3, r0] + movs r0, #0x2e + ldrsh r7, [r4, r0] + ldr r0, _080ACE44 @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r1, r2, r0 + ldrb r5, [r1] +_080ACE30: + subs r1, r7, r6 + str r1, [r4, #0x78] + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r1 + bhi _080ACE90 + ldrh r0, [r3, #0x2e] + adds r0, r0, r5 + strh r0, [r4, #0x2e] + b _080ACEB6 + .align 2, 0 +_080ACE44: .4byte gUnk_0812AAE8 +_080ACE48: + ldr r1, [r4, #0x50] + ldrh r0, [r1, #0x2e] + strh r0, [r4, #0x2e] + movs r0, #4 + ands r0, r2 + adds r3, r1, #0 + cmp r0, #0 + beq _080ACE70 + movs r0, #0x32 + ldrsh r6, [r3, r0] + movs r0, #0x32 + ldrsh r7, [r4, r0] + ldr r0, _080ACE6C @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r1, r2, r0 + ldrb r5, [r1] + b _080ACE84 + .align 2, 0 +_080ACE6C: .4byte gUnk_0812AAE8 +_080ACE70: + movs r0, #0x32 + ldrsh r7, [r3, r0] + movs r0, #0x32 + ldrsh r6, [r4, r0] + ldr r1, _080ACEAC @ =gUnk_0812AAE8 + ldrb r2, [r4, #0xa] + adds r0, r2, r1 + ldrb r0, [r0] + rsbs r5, r0, #0 + adds r0, r1, #0 +_080ACE84: + subs r1, r7, r6 + str r1, [r4, #0x78] + adds r0, r2, r0 + ldrb r0, [r0] + cmp r0, r1 + bls _080ACEB0 +_080ACE90: + subs r0, r0, r1 + lsls r1, r0, #8 + strh r1, [r4, #0x24] + lsls r0, r0, #0x18 + asrs r0, r0, #0x10 + movs r1, #0x80 + lsls r1, r1, #2 + cmp r0, r1 + ble _080ACEA4 + strh r1, [r4, #0x24] +_080ACEA4: + adds r0, r4, #0 + bl sub_080AEFB4 + b _080ACEB6 + .align 2, 0 +_080ACEAC: .4byte gUnk_0812AAE8 +_080ACEB0: + ldrh r0, [r3, #0x32] + adds r0, r0, r5 +_080ACEB4: + strh r0, [r4, #0x32] +_080ACEB6: + ldr r0, _080ACEC8 @ =gLinkEntity + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + movs r0, #0 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080ACEC8: .4byte gLinkEntity + + thumb_func_start sub_080ACECC +sub_080ACECC: @ 0x080ACECC + push {r4, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xa] + cmp r0, #2 + bhi _080ACF0C + ldr r0, [r4, #0x54] + cmp r0, #0 + bne _080ACF0C + ldr r2, [r4, #0x78] + cmp r2, #0 + blt _080ACF0C + ldr r0, _080ACF10 @ =gUnk_0812AAE8 + ldrb r1, [r4, #0xa] + adds r0, r1, r0 + ldrb r0, [r0] + cmp r0, r2 + bhi _080ACF0C + adds r1, #1 + movs r0, #0x10 + movs r2, #0 + movs r3, #0 + bl sub_08077CB8 + adds r1, r0, #0 + cmp r1, #0 + beq _080ACF0C + str r4, [r1, #0x50] + str r1, [r4, #0x54] + ldrh r0, [r4, #0x2e] + strh r0, [r1, #0x2e] + ldrh r0, [r4, #0x32] + strh r0, [r1, #0x32] +_080ACF0C: + pop {r4, pc} + .align 2, 0 +_080ACF10: .4byte gUnk_0812AAE8 + + thumb_func_start sub_080ACF14 +sub_080ACF14: @ 0x080ACF14 + push {lr} + ldr r2, _080ACF28 @ =gUnk_081320A8 + ldrb r1, [r0, #0xd] + lsls r1, r1, #2 + adds r1, r1, r2 + ldr r1, [r1] + bl _call_via_r1 + pop {pc} + .align 2, 0 +_080ACF28: .4byte gUnk_081320A8 + + thumb_func_start sub_080ACF2C +sub_080ACF2C: @ 0x080ACF2C + push {r4, r5, r6, lr} + adds r4, r0, #0 + ldrb r0, [r4, #0xd] + adds r0, #1 + strb r0, [r4, #0xd] + ldr r0, _080ACF60 @ =gUnk_081320E4 + str r0, [r4, #0x48] + ldr r5, [r4, #0x54] + adds r6, r5, #0 + cmp r5, #0 + beq _080ACF64 + ldr r0, [r5, #0x2c] + str r0, [r4, #0x2c] + ldr r0, [r5, #0x30] + str r0, [r4, #0x30] + ldr r0, [r5, #0x34] + str r0, [r4, #0x34] + adds r0, r5, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r4, #0 + adds r0, #0x38 + strb r1, [r0] + ldrb r0, [r5, #0x16] + strb r0, [r4, #0x16] + b _080ACFB6 + .align 2, 0 +_080ACF60: .4byte gUnk_081320E4 +_080ACF64: + adds r5, r4, #0 + str r4, [r4, #0x54] + movs r0, #2 + strb r0, [r4, #0xc] + ldr r3, _080ACFC8 @ =gUnk_081320B8 + ldrb r0, [r4, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #1] + movs r0, #0xf + ands r1, r0 + ldrb r2, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r4, #0x1a] + ldrb r1, [r4, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r4, #0x18] + strb r6, [r4, #0x16] + ldrb r0, [r4, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0, #2] + adds r0, r4, #0 + adds r0, #0x60 + strh r1, [r0] + ldrb r0, [r4, #0xf] + lsls r0, r0, #2 + adds r0, r0, r3 + ldrb r1, [r0] + adds r0, r4, #0 + bl sub_08004260 + bl sub_08078D60 +_080ACFB6: + ldrb r1, [r5, #8] + adds r0, r4, #0 + adds r0, #0x6c + strh r1, [r0] + ldrb r1, [r5, #9] + adds r0, #2 + strh r1, [r0] + pop {r4, r5, r6, pc} + .align 2, 0 +_080ACFC8: .4byte gUnk_081320B8 + + thumb_func_start sub_080ACFCC +sub_080ACFCC: @ 0x080ACFCC + push {r4, lr} + adds r4, r0, #0 + ldr r1, [r4, #0x54] + adds r0, #0x6c + ldrh r0, [r0] + ldrb r2, [r1, #8] + cmp r0, r2 + beq _080ACFE8 + adds r0, r4, #0 + adds r0, #0x6e + ldrh r0, [r0] + ldrb r2, [r1, #9] + cmp r0, r2 + bne _080AD034 +_080ACFE8: + ldrb r0, [r1, #0xc] + cmp r0, #2 + beq _080ACFF8 + bl sub_08079184 + bl sub_0805E780 + b _080AD03C +_080ACFF8: + ldr r0, _080AD02C @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + beq _080AD00E + ldr r0, _080AD030 @ =gLinkEntity + adds r0, #0x79 + ldrb r1, [r0] + movs r0, #0x7f + ands r0, r1 + cmp r0, #0 + beq _080AD03C +_080AD00E: + adds r0, r4, #0 + bl sub_080AD27C + ldrb r0, [r4, #0xd] + adds r0, #1 + movs r2, #0 + strb r0, [r4, #0xd] + ldrb r1, [r4, #0x10] + movs r0, #0x7f + ands r0, r1 + strb r0, [r4, #0x10] + movs r0, #0xff + strb r0, [r4, #0x15] + str r2, [r4, #0x20] + b _080AD03C + .align 2, 0 +_080AD02C: .4byte gUnk_03003F80 +_080AD030: .4byte gLinkEntity +_080AD034: + bl sub_08079184 + bl sub_0805E780 +_080AD03C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AD040 +sub_080AD040: @ 0x080AD040 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r5, [r4, #0x54] + ldrb r0, [r5, #0xc] + cmp r0, #2 + beq _080AD050 + bl sub_0805E780 +_080AD050: + adds r0, r4, #0 + adds r0, #0x41 + ldrb r1, [r0] + movs r3, #0x80 + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080AD064 + movs r0, #0 + str r0, [r4, #0x34] +_080AD064: + movs r1, #0x24 + ldrsh r0, [r4, r1] + cmp r0, #0 + bne _080AD06E + b _080AD220 +_080AD06E: + adds r2, r4, #0 + adds r2, #0x42 + ldrb r1, [r2] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080AD088 + adds r0, r4, #0 + adds r0, #0x3e + ldrb r0, [r0] + movs r1, #0 + strb r0, [r4, #0x15] + strb r1, [r2] +_080AD088: + ldr r2, _080AD0B0 @ =gUnk_081320C4 + ldrb r0, [r4, #0x15] + lsrs r0, r0, #2 + adds r1, r0, r2 + ldrb r1, [r1] + lsls r1, r1, #0x18 + asrs r1, r1, #0x18 + adds r0, #1 + adds r0, r0, r2 + movs r2, #0 + ldrsb r2, [r0, r2] + adds r0, r4, #0 + bl sub_080002B4 + cmp r0, #0x74 + bne _080AD0B4 + adds r0, r4, #0 + bl sub_0806F69C + b _080AD0C8 + .align 2, 0 +_080AD0B0: .4byte gUnk_081320C4 +_080AD0B4: + adds r0, r4, #0 + bl sub_080002D0 + cmp r0, #0x24 + beq _080AD0C8 + cmp r0, #0x26 + beq _080AD0C8 + adds r0, r4, #0 + bl sub_080AF00C +_080AD0C8: + movs r1, #0x80 + lsls r1, r1, #6 + adds r0, r4, #0 + bl sub_08003FC4 + cmp r0, #0 + beq _080AD0D8 + b _080AD202 +_080AD0D8: + ldr r0, [r4, #0x20] + str r0, [r5, #0x20] + ldr r0, [r4, #0x2c] + str r0, [r5, #0x2c] + ldr r0, [r4, #0x30] + str r0, [r5, #0x30] + ldr r0, [r4, #0x34] + str r0, [r5, #0x34] + adds r0, r4, #0 + bl sub_080002B8 + cmp r0, #0x11 + bhi _080AD0FC + cmp r0, #0x10 + bhs _080AD104 + cmp r0, #0xd + beq _080AD104 + b _080AD14E +_080AD0FC: + cmp r0, #0x13 + beq _080AD104 + cmp r0, #0x5a + bne _080AD14E +_080AD104: + cmp r5, r4 + bne _080AD146 + cmp r0, #0x11 + bhi _080AD116 + cmp r0, #0x10 + bhs _080AD12C + cmp r0, #0xd + beq _080AD120 + b _080AD142 +_080AD116: + cmp r0, #0x13 + beq _080AD138 + cmp r0, #0x5a + beq _080AD126 + b _080AD142 +_080AD120: + adds r0, r4, #0 + movs r1, #0 + b _080AD130 +_080AD126: + adds r0, r4, #0 + movs r1, #0xc + b _080AD130 +_080AD12C: + adds r0, r4, #0 + movs r1, #0xb +_080AD130: + movs r2, #0 + bl CreateFX + b _080AD142 +_080AD138: + adds r0, r4, #0 + movs r1, #0x52 + movs r2, #0 + bl CreateFX +_080AD142: + movs r0, #4 + b _080AD148 +_080AD146: + movs r0, #3 +_080AD148: + strb r0, [r5, #0xd] + bl sub_0805E780 +_080AD14E: + ldr r0, [r4, #0x54] + cmp r0, r4 + bne _080AD178 + ldrb r0, [r4, #0xb] + cmp r0, #0xff + beq _080AD1DA + cmp r0, #0xf + bne _080AD16A + ldrb r1, [r4, #0xe] + adds r0, r4, #0 + movs r2, #0x80 + bl CreateFX + b _080AD1DA +_080AD16A: + ldrb r1, [r4, #0xb] + ldrb r2, [r4, #0xe] + adds r0, r4, #0 + movs r3, #0 + bl sub_080A2988 + b _080AD1DA +_080AD178: + ldrb r0, [r4, #0xe] + cmp r0, #0 + bne _080AD188 + adds r0, r5, #0 + bl sub_080AD32C + cmp r0, #0 + beq _080AD1E0 +_080AD188: + ldrb r0, [r4, #0xe] + cmp r0, #1 + bne _080AD196 + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_080A3268 +_080AD196: + adds r0, r4, #0 + bl sub_08016A04 + movs r0, #3 + strb r0, [r5, #0xd] + ldrb r2, [r4, #0x19] + lsrs r2, r2, #6 + lsls r2, r2, #6 + ldrb r3, [r5, #0x19] + movs r1, #0x3f + adds r0, r1, #0 + ands r0, r3 + orrs r0, r2 + strb r0, [r5, #0x19] + ldrb r0, [r4, #0x1b] + lsrs r0, r0, #6 + lsls r0, r0, #6 + ldrb r2, [r5, #0x1b] + ands r1, r2 + orrs r1, r0 + strb r1, [r5, #0x1b] + adds r0, r4, #0 + adds r0, #0x29 + ldrb r1, [r0] + lsls r1, r1, #0x1d + adds r3, r5, #0 + adds r3, #0x29 + lsrs r1, r1, #0x1d + ldrb r2, [r3] + movs r0, #8 + rsbs r0, r0, #0 + ands r0, r2 + orrs r0, r1 + strb r0, [r3] +_080AD1DA: + bl sub_0805E780 + b _080AD26E +_080AD1E0: + movs r0, #0x82 + lsls r0, r0, #1 + bl sub_080A3268 + ldrb r0, [r4, #0xe] + adds r0, #1 + strb r0, [r4, #0xe] + movs r0, #0x80 + lsls r0, r0, #9 + str r0, [r4, #0x20] + movs r1, #0x24 + ldrsh r0, [r4, r1] + lsrs r1, r0, #0x1f + adds r0, r0, r1 + asrs r0, r0, #1 + strh r0, [r4, #0x24] + b _080AD26E +_080AD202: + adds r0, r4, #0 + bl sub_0800451C + adds r0, r4, #0 + bl sub_0806F8DC + adds r0, r4, #0 + adds r1, r5, #0 + bl sub_0806FA24 + ldr r0, [r4, #0x20] + str r0, [r5, #0x20] + ldrb r0, [r4, #0x15] + strb r0, [r5, #0x15] + b _080AD26E +_080AD220: + ldr r1, _080AD240 @ =gLinkEntity + adds r0, r1, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r5, #1 + ands r5, r0 + cmp r5, #0 + beq _080AD244 + movs r0, #0x79 + bl sub_080A3268 + adds r0, r4, #0 + bl sub_080AD27C + b _080AD26E + .align 2, 0 +_080AD240: .4byte gLinkEntity +_080AD244: + ldr r0, _080AD270 @ =gUnk_03003F80 + ldrb r0, [r0, #5] + cmp r0, #0 + beq _080AD25A + adds r0, r1, #0 + adds r0, #0x79 + ldrb r1, [r0] + adds r0, r3, #0 + ands r0, r1 + cmp r0, #0 + beq _080AD26E +_080AD25A: + adds r0, r4, #0 + bl sub_080AD27C + ldrb r0, [r4, #0x10] + movs r1, #0x7f + ands r1, r0 + strb r1, [r4, #0x10] + movs r0, #0xff + strb r0, [r4, #0x15] + str r5, [r4, #0x20] +_080AD26E: + pop {r4, r5, pc} + .align 2, 0 +_080AD270: .4byte gUnk_03003F80 + + thumb_func_start sub_080AD274 +sub_080AD274: @ 0x080AD274 + push {lr} + bl sub_0805E780 + pop {pc} + + thumb_func_start sub_080AD27C +sub_080AD27C: @ 0x080AD27C + push {r4, r5, lr} + adds r3, r0, #0 + ldr r4, [r3, #0x54] + ldr r1, _080AD2AC @ =gLinkEntity + movs r0, #0 + str r0, [r1, #0x74] + adds r0, r3, #0 + adds r0, #0x6c + ldrh r0, [r0] + adds r5, r1, #0 + ldrb r1, [r4, #8] + cmp r0, r1 + bne _080AD320 + adds r0, r3, #0 + adds r0, #0x6e + ldrh r0, [r0] + ldrb r1, [r4, #9] + cmp r0, r1 + bne _080AD320 + cmp r4, r3 + beq _080AD2B0 + movs r0, #2 + strb r0, [r4, #0xd] + b _080AD2C2 + .align 2, 0 +_080AD2AC: .4byte gLinkEntity +_080AD2B0: + adds r2, r3, #0 + adds r2, #0x29 + ldrb r0, [r2] + movs r1, #0x39 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #0x18 + orrs r1, r0 + strb r1, [r2] +_080AD2C2: + ldr r0, [r4, #0x48] + str r0, [r3, #0x48] + ldrb r1, [r3, #0x16] + lsrs r1, r1, #4 + ldr r2, _080AD318 @ =gUnk_081320CC + lsls r0, r1, #1 + adds r0, r0, r2 + ldrh r0, [r0] + strh r0, [r3, #0x24] + ldr r0, _080AD31C @ =gUnk_081320D4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldr r0, [r1] + str r0, [r3, #0x20] + ldrh r0, [r4, #0x36] + adds r0, #8 + strh r0, [r4, #0x36] + strh r0, [r3, #0x36] + adds r0, r4, #0 + adds r0, #0x38 + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x38 + strb r1, [r0] + ldrh r0, [r5, #0x32] + strh r0, [r3, #0x32] + ldrh r0, [r5, #0x2e] + strh r0, [r3, #0x2e] + adds r0, r5, #0 + adds r0, #0x3c + ldrb r1, [r0] + adds r0, r3, #0 + adds r0, #0x3c + strb r1, [r0] + ldrb r1, [r3, #0x10] + movs r0, #0x80 + orrs r0, r1 + strb r0, [r3, #0x10] + adds r0, r3, #0 + bl sub_0801766C + b _080AD328 + .align 2, 0 +_080AD318: .4byte gUnk_081320CC +_080AD31C: .4byte gUnk_081320D4 +_080AD320: + bl sub_08079184 + bl sub_0805E780 +_080AD328: + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AD32C +sub_080AD32C: @ 0x080AD32C + push {lr} + adds r2, r0, #0 + movs r3, #0 + ldrb r1, [r2, #0x16] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x10 + beq _080AD34C + ldrb r0, [r2, #8] + cmp r0, #6 + bne _080AD34E + ldrb r0, [r2, #9] + cmp r0, #5 + beq _080AD34C + cmp r0, #0x7d + bne _080AD34E +_080AD34C: + movs r3, #1 +_080AD34E: + adds r0, r3, #0 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AD354 +sub_080AD354: @ 0x080AD354 + push {lr} + ldr r1, _080AD374 @ =gUnk_02032EC0 + strb r0, [r1, #2] + ldr r1, _080AD378 @ =gUnk_03001000 + movs r0, #2 + strb r0, [r1, #3] + ldr r0, _080AD37C @ =gUnk_02000080 + movs r1, #0x30 + bl sub_0801D630 + movs r0, #7 + movs r1, #8 + bl sub_08050054 + pop {pc} + .align 2, 0 +_080AD374: .4byte gUnk_02032EC0 +_080AD378: .4byte gUnk_03001000 +_080AD37C: .4byte gUnk_02000080 + + thumb_func_start sub_080AD380 +sub_080AD380: @ 0x080AD380 + push {r4, lr} + bl sub_080AD90C + ldr r4, _080AD398 @ =gUnk_03001000 + ldrb r0, [r4, #3] + cmp r0, #1 + beq _080AD3BC + cmp r0, #1 + bgt _080AD39C + cmp r0, #0 + beq _080AD3A2 + b _080AD3EA + .align 2, 0 +_080AD398: .4byte gUnk_03001000 +_080AD39C: + cmp r0, #2 + beq _080AD3D8 + b _080AD3EA +_080AD3A2: + bl sub_08056418 + ldr r0, _080AD3B8 @ =gUnk_02032EC0 + movs r1, #0xed + lsls r1, r1, #2 + bl sub_0801D630 + movs r0, #0 + bl sub_080AD354 + b _080AD3EA + .align 2, 0 +_080AD3B8: .4byte gUnk_02032EC0 +_080AD3BC: + ldr r1, _080AD3D0 @ =gUnk_081320F0 + ldr r0, _080AD3D4 @ =gUnk_02032EC0 + ldrb r0, [r0, #2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + b _080AD3EA + .align 2, 0 +_080AD3D0: .4byte gUnk_081320F0 +_080AD3D4: .4byte gUnk_02032EC0 +_080AD3D8: + ldr r0, _080AD3F0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD3EE + movs r0, #1 + bl sub_0801DA90 + movs r0, #1 + strb r0, [r4, #3] +_080AD3EA: + bl sub_080AD918 +_080AD3EE: + pop {r4, pc} + .align 2, 0 +_080AD3F0: .4byte gUnk_03000FD0 + + thumb_func_start sub_080AD3F4 +sub_080AD3F4: @ 0x080AD3F4 + push {r4, r5, lr} + bl sub_080AD84C + adds r1, r0, #0 + ldr r4, _080AD450 @ =gUnk_02000080 + ldrb r0, [r4, #5] + cmp r0, #0 + bne _080AD458 + movs r0, #1 + bl sub_0801DA90 + movs r5, #1 + strb r5, [r4, #5] + movs r0, #0x78 + strh r0, [r4, #8] + movs r0, #0x10 + bl sub_0801D7EC + movs r0, #1 + bl sub_0801D7EC + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + movs r1, #2 + cmp r0, #0 + bne _080AD42C + movs r1, #1 +_080AD42C: + adds r0, r1, #0 + bl sub_0801D714 + ldr r0, _080AD454 @ =gUnk_03000F50 + ldrh r1, [r0] + movs r3, #0x80 + lsls r3, r3, #3 + adds r2, r3, #0 + orrs r1, r2 + strh r1, [r0] + strh r5, [r0, #0x1a] + movs r0, #6 + movs r1, #8 + bl sub_08050054 + movs r1, #0 + b _080AD45E + .align 2, 0 +_080AD450: .4byte gUnk_02000080 +_080AD454: .4byte gUnk_03000F50 +_080AD458: + cmp r1, #1 + bne _080AD45E + movs r1, #2 +_080AD45E: + cmp r1, #2 + bne _080AD46C + ldr r1, _080AD470 @ =gUnk_02000010 + movs r0, #1 + strb r0, [r1, #5] + bl sub_080AD354 +_080AD46C: + pop {r4, r5, pc} + .align 2, 0 +_080AD470: .4byte gUnk_02000010 + + thumb_func_start sub_080AD474 +sub_080AD474: @ 0x080AD474 + push {r4, r5, r6, lr} + ldr r5, _080AD490 @ =gUnk_02000080 + ldrb r0, [r5, #0x12] + adds r0, #1 + strb r0, [r5, #0x12] + ldrb r0, [r5, #5] + cmp r0, #1 + bne _080AD486 + b _080AD588 +_080AD486: + cmp r0, #1 + bgt _080AD494 + cmp r0, #0 + beq _080AD49C + b _080AD5C8 + .align 2, 0 +_080AD490: .4byte gUnk_02000080 +_080AD494: + cmp r0, #2 + bne _080AD49A + b _080AD5AA +_080AD49A: + b _080AD5C8 +_080AD49C: + movs r4, #1 + strb r4, [r5, #5] + strb r0, [r5, #6] + movs r6, #0 + movs r0, #0x1e + strh r0, [r5, #8] + movs r0, #7 + strb r0, [r5, #4] + bl sub_0805E60C + movs r0, #0 + bl sub_0801CFA8 + bl sub_080ADD30 + ldr r0, _080AD50C @ =gUnk_02024490 + strb r4, [r0] + movs r0, #2 + bl sub_0801D7EC + movs r4, #0x80 + lsls r4, r4, #0x12 + ldrb r0, [r4, #7] + movs r1, #4 + cmp r0, #0 + bne _080AD4D2 + movs r1, #3 +_080AD4D2: + adds r0, r1, #0 + bl sub_0801D714 + ldrb r0, [r4, #7] + cmp r0, #0 + bne _080AD524 + ldr r2, _080AD510 @ =gUnk_03000F50 + adds r1, r2, #0 + adds r1, #0x66 + ldr r0, _080AD514 @ =0x00000844 + strh r0, [r1] + adds r1, #2 + adds r0, #0xc5 + strh r0, [r1] + ldr r0, _080AD518 @ =0x00001C09 + strh r0, [r2, #0x14] + adds r0, #0xf9 + strh r0, [r2, #0x20] + ldr r0, _080AD51C @ =0x00001E03 + strh r0, [r2, #0x2c] + ldrh r0, [r2] + movs r3, #0xf0 + lsls r3, r3, #5 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + ldr r0, _080AD520 @ =0x0000FF60 + strh r0, [r2, #0x18] + b _080AD55A + .align 2, 0 +_080AD50C: .4byte gUnk_02024490 +_080AD510: .4byte gUnk_03000F50 +_080AD514: .4byte 0x00000844 +_080AD518: .4byte 0x00001C09 +_080AD51C: .4byte 0x00001E03 +_080AD520: .4byte 0x0000FF60 +_080AD524: + ldr r2, _080AD570 @ =gUnk_03000F50 + adds r1, r2, #0 + adds r1, #0x66 + ldr r0, _080AD574 @ =0x00000241 + strh r0, [r1] + adds r1, #2 + ldr r0, _080AD578 @ =0x00000909 + strh r0, [r1] + ldr r0, _080AD57C @ =0x00001D02 + strh r0, [r2, #8] + ldr r0, _080AD580 @ =0x00001E03 + strh r0, [r2, #0x14] + ldr r0, _080AD584 @ =0x00007C89 + strh r0, [r2, #0x20] + ldrh r0, [r2] + movs r1, #1 + orrs r0, r1 + orrs r0, r6 + movs r3, #0x98 + lsls r3, r3, #5 + adds r1, r3, #0 + orrs r0, r1 + strh r0, [r2] + movs r0, #0x10 + str r0, [r5, #0x2c] + bl sub_080AD670 +_080AD55A: + bl sub_080A3210 + movs r0, #3 + bl sub_080A3268 + movs r0, #6 + movs r1, #8 + bl sub_08050054 + b _080AD610 + .align 2, 0 +_080AD570: .4byte gUnk_03000F50 +_080AD574: .4byte 0x00000241 +_080AD578: .4byte 0x00000909 +_080AD57C: .4byte 0x00001D02 +_080AD580: .4byte 0x00001E03 +_080AD584: .4byte 0x00007C89 +_080AD588: + ldr r0, _080AD5A0 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD632 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r0, [r0, #7] + cmp r0, #0 + bne _080AD5A4 + bl sub_080AD6AC + b _080AD610 + .align 2, 0 +_080AD5A0: .4byte gUnk_03000FD0 +_080AD5A4: + bl sub_080AD76C + b _080AD610 +_080AD5AA: + ldrh r0, [r5, #8] + subs r0, #1 + strh r0, [r5, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AD5C2 + movs r0, #0xe1 + lsls r0, r0, #4 + strh r0, [r5, #8] + ldrb r0, [r5, #5] + adds r0, #1 + strb r0, [r5, #5] +_080AD5C2: + bl sub_080AD644 + b _080AD610 +_080AD5C8: + bl sub_080AD84C + adds r4, r0, #0 + cmp r4, #0 + beq _080AD5EC + cmp r4, #2 + bne _080AD5DE + movs r0, #0x6a + bl sub_080A3268 + b _080AD5E0 +_080AD5DE: + movs r4, #0 +_080AD5E0: + adds r0, r4, #0 + bl sub_080AD354 + ldr r0, _080AD634 @ =0x80080000 + bl sub_080A3268 +_080AD5EC: + bl sub_080AD644 + ldr r0, _080AD638 @ =gUnk_02000080 + ldrh r1, [r0, #8] + movs r0, #0x20 + ands r0, r1 + cmp r0, #0 + bne _080AD610 + ldr r1, _080AD63C @ =gUnk_03001010 + movs r0, #0xe0 + lsls r0, r0, #8 + strh r0, [r1, #8] + movs r0, #0x84 + strh r0, [r1, #2] + ldr r0, _080AD640 @ =0x000001FF + movs r1, #0 + bl sub_080ADA14 +_080AD610: + ldr r2, _080AD638 @ =gUnk_02000080 + movs r0, #0x80 + lsls r0, r0, #0x12 + ldrb r1, [r0, #7] + ldrb r0, [r2, #4] + cmp r0, r1 + beq _080AD626 + strb r1, [r2, #4] + movs r0, #3 + bl sub_0801D7EC +_080AD626: + bl sub_080AD89C + bl sub_0805E5C0 + bl sub_080AD9B0 +_080AD632: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AD634: .4byte 0x80080000 +_080AD638: .4byte gUnk_02000080 +_080AD63C: .4byte gUnk_03001010 +_080AD640: .4byte 0x000001FF + + thumb_func_start sub_080AD644 +sub_080AD644: @ 0x080AD644 + push {lr} + ldr r1, _080AD664 @ =gUnk_03001010 + movs r0, #0 + strh r0, [r1, #4] + strh r0, [r1, #6] + ldr r0, _080AD668 @ =0x0000E020 + strh r0, [r1, #8] + movs r0, #0x78 + strh r0, [r1] + movs r0, #0x98 + strh r0, [r1, #2] + ldr r0, _080AD66C @ =0x000001FF + movs r1, #1 + bl sub_080ADA14 + pop {pc} + .align 2, 0 +_080AD664: .4byte gUnk_03001010 +_080AD668: .4byte 0x0000E020 +_080AD66C: .4byte 0x000001FF + + thumb_func_start sub_080AD670 +sub_080AD670: @ 0x080AD670 + push {lr} + sub sp, #0x14 + movs r0, #0x80 + lsls r0, r0, #8 + str r0, [sp, #4] + str r0, [sp] + mov r1, sp + movs r2, #0 + movs r0, #0x78 + strh r0, [r1, #8] + movs r0, #0x48 + strh r0, [r1, #0xa] + mov r0, sp + strh r2, [r0, #0x10] + mov r2, sp + ldr r0, _080AD6A4 @ =gUnk_02000080 + ldr r0, [r0, #0x2c] + strh r0, [r1, #0xc] + strh r0, [r2, #0xe] + ldr r1, _080AD6A8 @ =gUnk_03000F88 + mov r0, sp + movs r2, #1 + bl BgAffineSet + add sp, #0x14 + pop {pc} + .align 2, 0 +_080AD6A4: .4byte gUnk_02000080 +_080AD6A8: .4byte gUnk_03000F88 + + thumb_func_start sub_080AD6AC +sub_080AD6AC: @ 0x080AD6AC + push {r4, r5, r6, lr} + ldr r4, _080AD6C0 @ =gUnk_02000080 + ldrb r0, [r4, #6] + cmp r0, #1 + beq _080AD724 + cmp r0, #1 + bgt _080AD6C4 + cmp r0, #0 + beq _080AD6CA + b _080AD76A + .align 2, 0 +_080AD6C0: .4byte gUnk_02000080 +_080AD6C4: + cmp r0, #2 + beq _080AD758 + b _080AD76A +_080AD6CA: + ldr r6, _080AD718 @ =gUnk_03000FD0 + ldrb r5, [r6] + cmp r5, #0 + bne _080AD76A + ldrb r1, [r4, #0x12] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + bne _080AD6E4 + ldr r1, _080AD71C @ =gUnk_03000F50 + ldrh r0, [r1, #0x18] + adds r0, #1 + strh r0, [r1, #0x18] +_080AD6E4: + bl sub_080AD84C + cmp r0, #2 + beq _080AD6F4 + ldr r0, _080AD71C @ =gUnk_03000F50 + ldrh r0, [r0, #0x18] + cmp r0, #0 + bne _080AD76A +_080AD6F4: + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + ldr r1, _080AD71C @ =gUnk_03000F50 + strh r5, [r1, #0x18] + ldr r0, _080AD720 @ =0x00000C09 + strh r0, [r1, #0x14] + movs r0, #0x40 + str r0, [r6, #4] + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0xf8 + bl sub_080A3268 + b _080AD76A + .align 2, 0 +_080AD718: .4byte gUnk_03000FD0 +_080AD71C: .4byte gUnk_03000F50 +_080AD720: .4byte 0x00000C09 +_080AD724: + ldr r1, _080AD754 @ =gUnk_03000FD0 + ldrb r5, [r1] + cmp r5, #0 + bne _080AD76A + movs r0, #1 + rsbs r0, r0, #0 + str r0, [r1, #4] + ldrb r0, [r4, #6] + adds r0, #1 + strb r0, [r4, #6] + movs r0, #0x5a + strh r0, [r4, #8] + movs r0, #0xb4 + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + adds r1, r0, #0 + cmp r1, #0 + beq _080AD76A + strh r5, [r1, #0x2e] + movs r0, #0x48 + strh r0, [r1, #0x32] + b _080AD76A + .align 2, 0 +_080AD754: .4byte gUnk_03000FD0 +_080AD758: + bl sub_080AD84C + cmp r0, #0 + beq _080AD76A + ldrb r0, [r4, #5] + adds r0, #1 + strb r0, [r4, #5] + movs r0, #0x3c + strh r0, [r4, #8] +_080AD76A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080AD76C +sub_080AD76C: @ 0x080AD76C + push {lr} + ldr r1, _080AD780 @ =gUnk_02000080 + ldrb r0, [r1, #6] + cmp r0, #1 + beq _080AD7B4 + cmp r0, #1 + bgt _080AD784 + cmp r0, #0 + beq _080AD78A + b _080AD80E + .align 2, 0 +_080AD780: .4byte gUnk_02000080 +_080AD784: + cmp r0, #2 + beq _080AD7DC + b _080AD80E +_080AD78A: + ldr r0, _080AD7AC @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD82A + movs r0, #1 + strb r0, [r1, #6] + ldr r2, _080AD7B0 @ =gUnk_03000F50 + ldrh r1, [r2] + movs r3, #0x80 + lsls r3, r3, #3 + adds r0, r3, #0 + orrs r0, r1 + strh r0, [r2] + movs r0, #0xf6 + bl sub_080A3268 + b _080AD82A + .align 2, 0 +_080AD7AC: .4byte gUnk_03000FD0 +_080AD7B0: .4byte gUnk_03000F50 +_080AD7B4: + ldr r0, [r1, #0x2c] + adds r0, #0x10 + str r0, [r1, #0x2c] + movs r2, #0x80 + lsls r2, r2, #1 + cmp r0, r2 + ble _080AD7D6 + str r2, [r1, #0x2c] + movs r0, #0x28 + strh r0, [r1, #8] + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 +_080AD7D6: + bl sub_080AD670 + b _080AD82A +_080AD7DC: + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AD82A + movs r0, #0x96 + lsls r0, r0, #1 + strh r0, [r1, #8] + ldrb r0, [r1, #6] + adds r0, #1 + strb r0, [r1, #6] + movs r0, #0xbd + movs r1, #0 + movs r2, #0 + bl sub_080A2960 + movs r0, #6 + movs r1, #0x10 + bl sub_08050054 + movs r0, #0xf8 + bl sub_080A3268 + b _080AD82A +_080AD80E: + ldr r0, _080AD82C @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD82A + bl sub_080AD84C + cmp r0, #0 + beq _080AD82A + ldr r0, _080AD830 @ =gUnk_02000080 + ldrb r1, [r0, #5] + adds r1, #1 + strb r1, [r0, #5] + movs r1, #0x3c + strh r1, [r0, #8] +_080AD82A: + pop {pc} + .align 2, 0 +_080AD82C: .4byte gUnk_03000FD0 +_080AD830: .4byte gUnk_02000080 + + thumb_func_start sub_080AD834 +sub_080AD834: @ 0x080AD834 + push {lr} + ldr r0, _080AD848 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD844 + movs r0, #1 + bl sub_08056010 +_080AD844: + pop {pc} + .align 2, 0 +_080AD848: .4byte gUnk_03000FD0 + + thumb_func_start sub_080AD84C +sub_080AD84C: @ 0x080AD84C + push {lr} + ldr r0, _080AD864 @ =gUnk_03000FD0 + ldrb r0, [r0] + cmp r0, #0 + bne _080AD894 + ldr r0, _080AD868 @ =gUnk_02000010 + ldrb r0, [r0, #5] + cmp r0, #0 + bne _080AD86C + movs r2, #0 + b _080AD874 + .align 2, 0 +_080AD864: .4byte gUnk_03000FD0 +_080AD868: .4byte gUnk_02000010 +_080AD86C: + ldr r0, _080AD888 @ =gUnk_03000FF0 + ldrh r0, [r0, #2] + movs r2, #9 + ands r2, r0 +_080AD874: + ldr r1, _080AD88C @ =gUnk_02000080 + ldrh r0, [r1, #8] + subs r0, #1 + strh r0, [r1, #8] + lsls r0, r0, #0x10 + cmp r0, #0 + bne _080AD890 + movs r0, #1 + b _080AD89A + .align 2, 0 +_080AD888: .4byte gUnk_03000FF0 +_080AD88C: .4byte gUnk_02000080 +_080AD890: + cmp r2, #0 + bne _080AD898 +_080AD894: + movs r0, #0 + b _080AD89A +_080AD898: + movs r0, #2 +_080AD89A: + pop {pc} + + thumb_func_start sub_080AD89C +sub_080AD89C: @ 0x080AD89C + push {r4, lr} + ldr r4, _080AD8E4 @ =gUnk_02000080 + ldrb r1, [r4, #0x12] + movs r0, #7 + ands r0, r1 + cmp r0, #0 + bne _080AD8BC + ldrb r0, [r4, #0x10] + adds r0, #1 + movs r1, #3 + ands r0, r1 + strb r0, [r4, #0x10] + ldrb r0, [r4, #0x10] + adds r0, #5 + bl sub_0801D714 +_080AD8BC: + ldrb r1, [r4, #0x12] + movs r0, #0x1f + ands r0, r1 + cmp r0, #0 + bne _080AD8E0 + ldrb r0, [r4, #0x11] + adds r0, #1 + movs r1, #7 + ands r0, r1 + strb r0, [r4, #0x11] + ldr r1, _080AD8E8 @ =gUnk_03000F50 + ldr r2, _080AD8EC @ =gUnk_081320FC + ldrb r0, [r4, #0x11] + lsls r0, r0, #1 + adds r0, r0, r2 + ldrh r0, [r0] + adds r1, #0x68 + strh r0, [r1] +_080AD8E0: + pop {r4, pc} + .align 2, 0 +_080AD8E4: .4byte gUnk_02000080 +_080AD8E8: .4byte gUnk_03000F50 +_080AD8EC: .4byte gUnk_081320FC + + thumb_func_start sub_080AD8F0 +sub_080AD8F0: @ 0x080AD8F0 + ldr r2, _080AD908 @ =gUnk_082F3D74 + lsls r0, r0, #2 + adds r0, r0, r2 + ldr r0, [r0] + lsls r1, r1, #2 + adds r0, r0, r2 + adds r1, r1, r0 + ldr r0, [r1] + adds r2, r0, r2 + adds r0, r2, #0 + bx lr + .align 2, 0 +_080AD908: .4byte gUnk_082F3D74 + + thumb_func_start sub_080AD90C +sub_080AD90C: @ 0x080AD90C + ldr r1, _080AD914 @ =gUnk_03000000 + movs r0, #0 + strb r0, [r1, #3] + bx lr + .align 2, 0 +_080AD914: .4byte gUnk_03000000 + + thumb_func_start sub_080AD918 +sub_080AD918: @ 0x080AD918 + push {r4, lr} + ldr r1, _080AD948 @ =gUnk_03001000 + ldrb r0, [r1, #0xb] + adds r2, r0, #0 + cmp r2, #0 + bne _080AD958 + ldr r1, _080AD94C @ =gUnk_03000000 + movs r3, #0xa4 + lsls r3, r3, #3 + adds r0, r1, r3 + strb r2, [r0] + ldr r3, _080AD950 @ =0x00000664 + adds r0, r1, r3 + strb r2, [r0] + movs r3, #0xf5 + lsls r3, r3, #3 + adds r0, r1, r3 + strb r2, [r0] + ldr r3, _080AD954 @ =0x000008EC + adds r0, r1, r3 + strb r2, [r0] + adds r4, r1, #0 + b _080AD95E + .align 2, 0 +_080AD948: .4byte gUnk_03001000 +_080AD94C: .4byte gUnk_03000000 +_080AD950: .4byte 0x00000664 +_080AD954: .4byte 0x000008EC +_080AD958: + subs r0, #1 + strb r0, [r1, #0xb] + ldr r4, _080AD9A8 @ =gUnk_03000000 +_080AD95E: + ldrb r1, [r4, #3] + movs r0, #0x80 + subs r2, r0, r1 + cmp r2, #0 + ble _080AD980 + lsls r1, r1, #3 + adds r0, r4, #0 + adds r0, #0x20 + adds r1, r1, r0 + movs r3, #0xa8 + lsls r3, r3, #2 + adds r0, r3, #0 +_080AD976: + strh r0, [r1] + adds r1, #8 + subs r2, #1 + cmp r2, #0 + bne _080AD976 +_080AD980: + adds r1, r4, #0 + ldr r0, _080AD9AC @ =0x00000427 + adds r2, r1, r0 + ldrb r0, [r2] + cmp r0, #0 + beq _080AD9A0 + movs r0, #0 + strb r0, [r2] + movs r2, #0x84 + lsls r2, r2, #3 + adds r0, r1, r2 + adds r1, #0x26 + movs r2, #0x20 + movs r3, #8 + bl ObjAffineSet +_080AD9A0: + movs r0, #1 + strb r0, [r4] + pop {r4, pc} + .align 2, 0 +_080AD9A8: .4byte gUnk_03000000 +_080AD9AC: .4byte 0x00000427 + + thumb_func_start sub_080AD9B0 +sub_080AD9B0: @ 0x080AD9B0 + push {lr} + ldr r2, _080AD9F4 @ =gUnk_03000000 + ldr r0, _080AD9F8 @ =gUnk_030010A0 + adds r0, #0x2f + ldrb r0, [r0] + movs r1, #0 + cmp r0, #0 + beq _080AD9C2 + movs r1, #0xf +_080AD9C2: + strb r1, [r2, #0xe] + ldr r1, _080AD9FC @ =gUnk_03000BF0 + adds r0, r1, #0 + adds r0, #0x24 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r3, [r1, #0xa] + adds r0, r0, r3 + strh r0, [r2, #4] + adds r0, r1, #0 + adds r0, #0x25 + ldrb r0, [r0] + lsls r0, r0, #0x18 + asrs r0, r0, #0x18 + ldrh r1, [r1, #0xc] + adds r0, r0, r1 + strh r0, [r2, #6] + ldrb r0, [r2, #1] + adds r0, #1 + strb r0, [r2, #1] + ldr r0, _080ADA00 @ =gUnk_03006164 + bl _call_via_r0 + pop {pc} + .align 2, 0 +_080AD9F4: .4byte gUnk_03000000 +_080AD9F8: .4byte gUnk_030010A0 +_080AD9FC: .4byte gUnk_03000BF0 +_080ADA00: .4byte gUnk_03006164 + + thumb_func_start sub_080ADA04 +sub_080ADA04: @ 0x080ADA04 + push {lr} + ldr r2, _080ADA10 @ =gUnk_0300659C + bl _call_via_r2 + pop {pc} + .align 2, 0 +_080ADA10: .4byte gUnk_0300659C + + thumb_func_start sub_080ADA14 +sub_080ADA14: @ 0x080ADA14 + push {r4, lr} + adds r3, r0, #0 + adds r2, r1, #0 + ldr r4, _080ADA28 @ =gUnk_03006580 + ldr r0, _080ADA2C @ =gUnk_03001010 + adds r1, r3, #0 + bl _call_via_r4 + pop {r4, pc} + .align 2, 0 +_080ADA28: .4byte gUnk_03006580 +_080ADA2C: .4byte gUnk_03001010 + + thumb_func_start sub_080ADA30 +sub_080ADA30: @ 0x080ADA30 + push {r4, lr} + adds r4, r0, #0 + ldr r1, _080ADA60 @ =gUnk_03003F80 + ldr r0, [r1, #0x2c] + cmp r0, r4 + bne _080ADA42 + ldrb r0, [r1, #0x1c] + cmp r0, #0 + bne _080ADA46 +_080ADA42: + bl sub_0805E780 +_080ADA46: + ldr r1, _080ADA64 @ =gUnk_08132700 + ldrb r0, [r4, #0xc] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r1, [r0] + adds r0, r4, #0 + bl _call_via_r1 + ldr r1, _080ADA68 @ =gLinkEntity + adds r0, r4, #0 + bl sub_08078E84 + pop {r4, pc} + .align 2, 0 +_080ADA60: .4byte gUnk_03003F80 +_080ADA64: .4byte gUnk_08132700 +_080ADA68: .4byte gLinkEntity + + thumb_func_start sub_080ADA6C +sub_080ADA6C: @ 0x080ADA6C + push {r4, lr} + adds r4, r0, #0 + movs r0, #1 + strb r0, [r4, #0xc] + movs r0, #0xf + strb r0, [r4, #0xf] + ldr r0, _080ADAA4 @ =gUnk_08132B28 + str r0, [r4, #0x48] + movs r1, #3 + strb r1, [r0, #4] + strb r1, [r0, #3] + movs r1, #6 + strb r1, [r0, #5] + strb r1, [r0, #2] + adds r0, r4, #0 + bl sub_080ADC84 + adds r0, r4, #0 + movs r1, #1 + movs r2, #3 + bl sub_080AE008 + ldrb r1, [r4, #0x14] + lsrs r1, r1, #1 + adds r0, r4, #0 + bl sub_080042AC + pop {r4, pc} + .align 2, 0 +_080ADAA4: .4byte gUnk_08132B28 + + thumb_func_start sub_080ADAA8 +sub_080ADAA8: @ 0x080ADAA8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080ADC84 + adds r0, r4, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080ADACC + movs r0, #2 + strb r0, [r4, #0xc] + adds r0, r4, #0 + movs r1, #0 + bl sub_080ADCA0 + b _080ADAD2 +_080ADACC: + adds r0, r4, #0 + bl sub_080042B8 +_080ADAD2: + pop {r4, pc} + + thumb_func_start sub_080ADAD4 +sub_080ADAD4: @ 0x080ADAD4 + push {r4, r5, lr} + adds r4, r0, #0 + ldr r3, _080ADAF4 @ =gUnk_03003F80 + ldrb r1, [r3, #0x1c] + adds r0, r1, #0 + cmp r0, #3 + bne _080ADAFC + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080ADAF8 @ =gLinkEntity + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + adds r1, #8 + b _080ADB0C + .align 2, 0 +_080ADAF4: .4byte gUnk_03003F80 +_080ADAF8: .4byte gLinkEntity +_080ADAFC: + cmp r0, #6 + bne _080ADB18 + movs r0, #4 + strb r0, [r4, #0xc] + ldr r0, _080ADB14 @ =gLinkEntity + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + adds r1, #4 +_080ADB0C: + adds r0, r4, #0 + bl sub_080042AC + b _080ADC08 + .align 2, 0 +_080ADB14: .4byte gLinkEntity +_080ADB18: + movs r5, #0 + ldrb r0, [r4, #0xa] + cmp r0, #0 + beq _080ADB58 + cmp r0, #1 + bne _080ADB36 + adds r0, r4, #0 + movs r1, #4 + bl sub_080ADCA0 + movs r0, #0x18 + strb r0, [r4, #0xe] + movs r0, #2 + strb r0, [r4, #0xa] + b _080ADBE0 +_080ADB36: + adds r0, r4, #0 + movs r1, #1 + bl sub_080ADCDC + ldrb r0, [r4, #0xe] + subs r0, #1 + strb r0, [r4, #0xe] + lsls r0, r0, #0x18 + lsrs r0, r0, #0x18 + cmp r0, #0xff + bne _080ADBE0 + adds r0, r4, #0 + movs r1, #0 + bl sub_080ADCA0 + strb r5, [r4, #0xa] + b _080ADBE0 +_080ADB58: + movs r0, #0xf + ands r0, r1 + cmp r0, #7 + bne _080ADB68 + adds r1, r4, #0 + adds r1, #0x59 + movs r0, #0x7f + strb r0, [r1] +_080ADB68: + ldrb r0, [r3, #0x1d] + cmp r0, #2 + beq _080ADB94 + cmp r0, #2 + bgt _080ADB78 + cmp r0, #1 + beq _080ADBB0 + b _080ADBCA +_080ADB78: + cmp r0, #3 + bne _080ADBCA + adds r0, r4, #0 + movs r1, #3 + bl sub_080ADCDC + ldrb r1, [r4, #0x1a] + movs r0, #0x10 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r4, #0x1a] + movs r2, #3 + movs r5, #0xe9 + b _080ADBCA +_080ADB94: + adds r0, r4, #0 + movs r1, #2 + bl sub_080ADCDC + ldrb r0, [r4, #0x1a] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #4 + orrs r1, r0 + strb r1, [r4, #0x1a] + movs r2, #2 + movs r5, #0xe8 + b _080ADBCA +_080ADBB0: + adds r0, r4, #0 + movs r1, #1 + bl sub_080ADCDC + ldrb r0, [r4, #0x1a] + movs r1, #0x10 + rsbs r1, r1, #0 + ands r1, r0 + movs r0, #1 + orrs r1, r0 + strb r1, [r4, #0x1a] + movs r2, #1 + movs r5, #0xe7 +_080ADBCA: + ldr r0, _080ADC0C @ =gUnk_03003F80 + ldrb r1, [r0, #0x1c] + movs r0, #0xf + ands r0, r1 + cmp r0, #7 + bne _080ADBDA + movs r5, #0xee + movs r2, #1 +_080ADBDA: + ldrb r0, [r4, #0xf] + subs r0, r0, r2 + strb r0, [r4, #0xf] +_080ADBE0: + movs r0, #0xf + ldrsb r0, [r4, r0] + cmp r0, #0 + bge _080ADBF6 + cmp r5, #0 + beq _080ADBF2 + adds r0, r5, #0 + bl sub_080A3268 +_080ADBF2: + movs r0, #0xf + strb r0, [r4, #0xf] +_080ADBF6: + ldr r2, _080ADC10 @ =gLinkEntity + adds r0, r2, #0 + adds r0, #0x5a + ldrb r0, [r0] + movs r1, #0x7f + ands r1, r0 + ldrb r0, [r2, #0x1e] + subs r0, r0, r1 + strb r0, [r4, #0x1e] +_080ADC08: + pop {r4, r5, pc} + .align 2, 0 +_080ADC0C: .4byte gUnk_03003F80 +_080ADC10: .4byte gLinkEntity + + thumb_func_start sub_080ADC14 +sub_080ADC14: @ 0x080ADC14 + push {r4, lr} + adds r4, r0, #0 + ldr r0, _080ADC40 @ =gUnk_03003F80 + ldrb r0, [r0, #0x1c] + movs r1, #0xf + ands r1, r0 + cmp r1, #1 + beq _080ADC48 + cmp r1, #6 + bne _080ADC56 + ldrb r0, [r4, #0xc] + adds r0, #1 + strb r0, [r4, #0xc] + ldr r0, _080ADC44 @ =gLinkEntity + ldrb r1, [r0, #0x14] + lsrs r1, r1, #1 + adds r1, #4 + adds r0, r4, #0 + bl sub_080042AC + b _080ADC5C + .align 2, 0 +_080ADC40: .4byte gUnk_03003F80 +_080ADC44: .4byte gLinkEntity +_080ADC48: + adds r0, r4, #0 + movs r1, #0 + bl sub_080ADCA0 + movs r0, #2 + strb r0, [r4, #0xc] + b _080ADC5C +_080ADC56: + adds r0, r4, #0 + bl sub_080042B8 +_080ADC5C: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080ADC60 +sub_080ADC60: @ 0x080ADC60 + push {lr} + adds r2, r0, #0 + adds r0, #0x5a + ldrb r1, [r0] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + beq _080ADC7C + ldrb r1, [r2, #0x18] + movs r0, #4 + rsbs r0, r0, #0 + ands r0, r1 + strb r0, [r2, #0x18] + b _080ADC82 +_080ADC7C: + adds r0, r2, #0 + bl sub_080042B8 +_080ADC82: + pop {pc} + + thumb_func_start sub_080ADC84 +sub_080ADC84: @ 0x080ADC84 + ldr r1, _080ADC9C @ =gLinkEntity + ldrb r1, [r1, #0x18] + movs r2, #0x40 + ands r2, r1 + ldrb r3, [r0, #0x18] + movs r1, #0x41 + rsbs r1, r1, #0 + ands r1, r3 + orrs r1, r2 + strb r1, [r0, #0x18] + bx lr + .align 2, 0 +_080ADC9C: .4byte gLinkEntity + + thumb_func_start sub_080ADCA0 +sub_080ADCA0: @ 0x080ADCA0 + push {r4, lr} + ldr r3, _080ADCD4 @ =gUnk_08132714 + ldr r2, _080ADCD8 @ =gLinkEntity + ldrb r2, [r2, #0x14] + lsrs r2, r2, #1 + adds r1, r1, r2 + lsls r1, r1, #2 + adds r1, r1, r3 + ldr r2, [r1] + str r2, [r0, #0x5c] + ldrb r1, [r2] + adds r3, r0, #0 + adds r3, #0x58 + strb r1, [r3] + adds r1, r2, #1 + str r1, [r0, #0x5c] + ldrb r2, [r2, #1] + movs r4, #0x59 + strb r2, [r4, r0] + adds r1, #1 + str r1, [r0, #0x5c] + ldrb r1, [r3] + ldrh r2, [r0, #0x12] + bl sub_080042D0 + pop {r4, pc} + .align 2, 0 +_080ADCD4: .4byte gUnk_08132714 +_080ADCD8: .4byte gLinkEntity + + thumb_func_start sub_080ADCDC +sub_080ADCDC: @ 0x080ADCDC + push {r4, r5, lr} + adds r3, r0, #0 + movs r0, #0x59 + adds r0, r0, r3 + mov ip, r0 + ldrb r0, [r0] + subs r0, r0, r1 + mov r1, ip + strb r0, [r1] + lsls r0, r0, #0x18 + cmp r0, #0 + bgt _080ADD2E + ldr r1, [r3, #0x5c] + ldrb r0, [r1] + cmp r0, #0xff + bne _080ADD06 + adds r0, r1, #1 + str r0, [r3, #0x5c] + ldrb r1, [r1, #1] + subs r0, r0, r1 + str r0, [r3, #0x5c] +_080ADD06: + ldr r1, [r3, #0x5c] + ldrb r0, [r1] + adds r2, r3, #0 + adds r2, #0x58 + strb r0, [r2] + adds r1, #1 + str r1, [r3, #0x5c] + ldrb r0, [r1] + mov r4, ip + ldrb r4, [r4] + adds r0, r0, r4 + mov r5, ip + strb r0, [r5] + adds r1, #1 + str r1, [r3, #0x5c] + ldrb r1, [r2] + ldrh r2, [r3, #0x12] + adds r0, r3, #0 + bl sub_080042D0 +_080ADD2E: + pop {r4, r5, pc} + + thumb_func_start sub_080ADD30 +sub_080ADD30: @ 0x080ADD30 + push {r4, r5, r6, lr} + ldr r4, _080ADD6C @ =gUnk_02024490 + movs r1, #0x85 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_0801D630 + movs r5, #0 + adds r4, #4 + movs r0, #0x10 + rsbs r0, r0, #0 + adds r6, r0, #0 +_080ADD48: + adds r0, r5, #0 + movs r1, #0 + movs r2, #1 + bl sub_080AE104 + ldrb r0, [r4] + ands r0, r6 + movs r1, #6 + orrs r0, r1 + strb r0, [r4] + movs r0, #0x80 + strb r0, [r4, #2] + adds r4, #0xc + adds r5, #1 + cmp r5, #3 + bls _080ADD48 + pop {r4, r5, r6, pc} + .align 2, 0 +_080ADD6C: .4byte gUnk_02024490 + + thumb_func_start sub_080ADD70 +sub_080ADD70: @ 0x080ADD70 + push {r4, r5, lr} + ldr r1, _080ADD88 @ =gUnk_02024490 + ldrb r0, [r1] + cmp r0, #0 + beq _080ADDD6 + ldrb r0, [r1, #3] + cmp r0, #0 + beq _080ADD8C + bl sub_080ADE24 + b _080ADDD6 + .align 2, 0 +_080ADD88: .4byte gUnk_02024490 +_080ADD8C: + movs r4, #0 + movs r5, #0 +_080ADD90: + ldr r0, _080ADDB0 @ =gUnk_02024494 + adds r2, r5, r0 + ldrb r1, [r2] + lsls r0, r1, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #2 + bne _080ADDB4 + movs r3, #0x10 + rsbs r3, r3, #0 + adds r0, r3, #0 + ands r0, r1 + movs r1, #1 + orrs r0, r1 + strb r0, [r2] + b _080ADDCE + .align 2, 0 +_080ADDB0: .4byte gUnk_02024494 +_080ADDB4: + cmp r0, #2 + blt _080ADDCE + cmp r0, #6 + bgt _080ADDCE + cmp r0, #4 + blt _080ADDCE + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0x30 + bne _080ADDCE + adds r0, r4, #0 + bl sub_080ADE74 +_080ADDCE: + adds r5, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080ADD90 +_080ADDD6: + pop {r4, r5, pc} + + thumb_func_start sub_080ADDD8 +sub_080ADDD8: @ 0x080ADDD8 + push {lr} + adds r2, r1, #0 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080ADDFC @ =gUnk_02024494 + adds r3, r1, r0 + ldr r0, _080ADE00 @ =0x00FFFFFC + ands r0, r2 + ldr r1, _080ADE04 @ =gUnk_085A2E80 + adds r0, r0, r1 + str r0, [r3, #8] + movs r0, #1 + ands r0, r2 + cmp r0, #0 + beq _080ADE0C + ldr r0, _080ADE08 @ =0x0000FFFF + b _080ADE14 + .align 2, 0 +_080ADDFC: .4byte gUnk_02024494 +_080ADE00: .4byte 0x00FFFFFC +_080ADE04: .4byte gUnk_085A2E80 +_080ADE08: .4byte 0x0000FFFF +_080ADE0C: + movs r0, #0xfe + lsls r0, r0, #0x17 + ands r0, r2 + lsrs r0, r0, #0x14 +_080ADE14: + strh r0, [r3, #6] + ldrb r0, [r3] + movs r1, #0xf + ands r1, r0 + movs r0, #0x30 + orrs r1, r0 + strb r1, [r3] + pop {pc} + + thumb_func_start sub_080ADE24 +sub_080ADE24: @ 0x080ADE24 + push {r4, r5, lr} + ldr r1, _080ADE50 @ =gUnk_02024490 + movs r0, #1 + strb r0, [r1, #3] + movs r4, #0 + movs r5, #0 +_080ADE30: + ldr r0, _080ADE54 @ =gUnk_02024494 + adds r1, r5, r0 + ldrb r0, [r1] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #3 + beq _080ADE60 + cmp r0, #3 + blt _080ADE58 + cmp r0, #6 + bgt _080ADE58 + adds r0, r4, #0 + bl sub_080ADE74 + b _080ADE60 + .align 2, 0 +_080ADE50: .4byte gUnk_02024490 +_080ADE54: .4byte gUnk_02024494 +_080ADE58: + adds r0, r1, #0 + movs r1, #0xc + bl sub_0801D630 +_080ADE60: + adds r5, #0xc + adds r4, #1 + cmp r4, #0x2b + bls _080ADE30 + movs r1, #0 + ldr r0, _080ADE70 @ =gUnk_02024490 + strb r1, [r0, #3] + pop {r4, r5, pc} + .align 2, 0 +_080ADE70: .4byte gUnk_02024490 + + thumb_func_start sub_080ADE74 +sub_080ADE74: @ 0x080ADE74 + push {r4, r5, r6, lr} + adds r2, r0, #0 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080ADF00 @ =gUnk_02024494 + adds r3, r0, r1 + ldrb r1, [r3] + movs r0, #0xf0 + ands r0, r1 + cmp r0, #0 + beq _080ADF7C + movs r0, #0xf + ands r0, r1 + movs r1, #0x10 + orrs r0, r1 + strb r0, [r3] + ldrh r1, [r3, #6] + ldr r0, _080ADF04 @ =0x0000FFFF + cmp r1, r0 + beq _080ADF18 + ldrb r0, [r3, #3] + cmp r0, #0 + beq _080ADF18 + lsls r0, r0, #6 + ldr r1, _080ADF08 @ =gUnk_020000C0 + adds r4, r0, r1 + movs r5, #4 + movs r6, #9 + rsbs r6, r6, #0 +_080ADEB0: + ldrb r1, [r4] + movs r0, #4 + ands r0, r1 + cmp r0, #0 + beq _080ADEF6 + ldr r0, _080ADF0C @ =gUnk_02024490 + ldrb r0, [r0, #3] + cmp r0, #0 + bne _080ADECA + movs r0, #8 + ands r0, r1 + cmp r0, #0 + beq _080ADEF6 +_080ADECA: + adds r0, r6, #0 + ands r0, r1 + strb r0, [r4] + ldrb r0, [r4, #9] + lsls r2, r0, #5 + cmp r2, #0 + beq _080ADEF6 + ldrh r0, [r4, #0xa] + lsls r0, r0, #5 + ldr r3, _080ADF10 @ =0x06010000 + adds r1, r0, r3 + ldr r3, _080ADF14 @ =0x040000D4 + ldr r0, [r4, #0xc] + str r0, [r3] + str r1, [r3, #4] + adds r0, r2, #0 + asrs r0, r0, #2 + movs r1, #0x84 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r3, #8] + ldr r0, [r3, #8] +_080ADEF6: + adds r4, #0x10 + subs r5, #1 + cmp r5, #0 + bgt _080ADEB0 + b _080ADF7C + .align 2, 0 +_080ADF00: .4byte gUnk_02024494 +_080ADF04: .4byte 0x0000FFFF +_080ADF08: .4byte gUnk_020000C0 +_080ADF0C: .4byte gUnk_02024490 +_080ADF10: .4byte 0x06010000 +_080ADF14: .4byte 0x040000D4 +_080ADF18: + lsls r0, r2, #9 + ldr r2, _080ADF4C @ =0x06012800 + adds r1, r0, r2 + ldrh r2, [r3, #6] + cmp r2, #0 + beq _080ADF58 + ldr r0, _080ADF50 @ =0x0000FFFF + cmp r2, r0 + beq _080ADF62 + ldr r2, _080ADF54 @ =0x040000D4 + ldr r0, [r3, #8] + str r0, [r2] + str r1, [r2, #4] + ldrh r0, [r3, #6] + lsls r0, r0, #3 + movs r1, #0x84 + lsls r1, r1, #0x18 + orrs r0, r1 + str r0, [r2, #8] + ldr r0, [r2, #8] + ldrh r2, [r3, #6] + subs r2, #0x10 + cmp r2, #0 + ble _080ADF7C + b _080ADF70 + .align 2, 0 +_080ADF4C: .4byte 0x06012800 +_080ADF50: .4byte 0x0000FFFF +_080ADF54: .4byte 0x040000D4 +_080ADF58: + ldrb r1, [r3] + movs r0, #0xf + ands r0, r1 + strb r0, [r3] + b _080ADF7C +_080ADF62: + ldrb r0, [r3, #3] + cmp r0, #0 + bne _080ADF7C + ldr r0, [r3, #8] + bl LZ77UnCompVram + b _080ADF7C +_080ADF70: + adds r3, #0xc + movs r0, #0 + strh r0, [r3, #6] + subs r2, #0x10 + cmp r2, #0 + bgt _080ADF70 +_080ADF7C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080ADF80 +sub_080ADF80: @ 0x080ADF80 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + mov r8, r0 + adds r7, r1, #0 + cmp r7, #0 + beq _080ADFFC + movs r5, #4 + ldr r0, _080ADFD4 @ =gUnk_02024490 + adds r0, #0x30 +_080ADF94: + ldrh r1, [r0, #8] + cmp r7, r1 + beq _080ADFF2 + adds r0, #0xc + adds r5, #1 + cmp r5, #0x2b + bls _080ADF94 + ldr r0, _080ADFD8 @ =gUnk_08132B30 + lsls r4, r7, #2 + adds r0, r4, r0 + ldr r0, [r0] + movs r1, #0xfe + lsls r1, r1, #0x17 + ands r0, r1 + lsrs r6, r0, #0x18 + adds r0, r6, #0 + bl sub_080AE174 + adds r5, r0, #0 + cmp r5, #0 + bne _080ADFDC + bl sub_080AE1D8 + adds r0, r6, #0 + bl sub_080AE174 + adds r5, r0, #0 + cmp r5, #0 + bne _080ADFDC + movs r0, #0 + b _080ADFFE + .align 2, 0 +_080ADFD4: .4byte gUnk_02024490 +_080ADFD8: .4byte gUnk_08132B30 +_080ADFDC: + adds r0, r5, #0 + adds r1, r7, #0 + adds r2, r6, #0 + bl sub_080AE104 + ldr r0, _080AE004 @ =gUnk_08132B30 + adds r0, r4, r0 + ldr r1, [r0] + adds r0, r5, #0 + bl sub_080ADDD8 +_080ADFF2: + adds r0, r5, #0 + mov r1, r8 + movs r2, #4 + bl sub_080AE0C8 +_080ADFFC: + movs r0, #1 +_080ADFFE: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AE004: .4byte gUnk_08132B30 + + thumb_func_start sub_080AE008 +sub_080AE008: @ 0x080AE008 + push {r4, r5, r6, lr} + adds r6, r0, #0 + adds r5, r1, #0 + adds r4, r2, #0 + cmp r4, #0 + bne _080AE030 + adds r0, r5, #0 + bl sub_080AE174 + adds r4, r0, #0 + cmp r4, #0 + bne _080AE030 + bl sub_080AE1D8 + adds r0, r5, #0 + bl sub_080AE174 + adds r4, r0, #0 + cmp r4, #0 + beq _080AE058 +_080AE030: + ldr r0, _080AE064 @ =gUnk_02024490 + lsls r1, r4, #1 + adds r1, r1, r4 + lsls r1, r1, #2 + adds r1, r1, r0 + ldrb r0, [r1, #4] + lsls r0, r0, #0x1c + lsrs r2, r0, #0x1c + cmp r2, #6 + beq _080AE050 + adds r0, r4, #0 + movs r1, #0 + adds r2, r5, #0 + bl sub_080AE104 + movs r2, #5 +_080AE050: + adds r0, r4, #0 + adds r1, r6, #0 + bl sub_080AE0C8 +_080AE058: + adds r0, r4, #0 + cmp r0, #0 + beq _080AE060 + movs r0, #1 +_080AE060: + pop {r4, r5, r6, pc} + .align 2, 0 +_080AE064: .4byte gUnk_02024490 + + thumb_func_start sub_080AE068 +sub_080AE068: @ 0x080AE068 + push {r4, r5, lr} + adds r0, #0x26 + ldrb r2, [r0] + movs r1, #0 + strb r1, [r0] + cmp r2, #0 + beq _080AE0C2 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + ldr r1, _080AE0C4 @ =gUnk_02024494 + adds r3, r0, r1 + ldrb r0, [r3] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #5 + bgt _080AE0C2 + cmp r0, #4 + blt _080AE0C2 + ldrb r0, [r3, #2] + cmp r0, #0 + beq _080AE0C2 + subs r0, #1 + strb r0, [r3, #2] + lsls r0, r0, #0x18 + cmp r0, #0 + bne _080AE0C2 + ldrb r2, [r3, #1] + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + ble _080AE0C2 + movs r5, #0x10 + rsbs r5, r5, #0 + movs r4, #1 +_080AE0AE: + ldrb r0, [r3] + adds r1, r5, #0 + ands r1, r0 + orrs r1, r4 + strb r1, [r3] + adds r3, #0xc + adds r0, r2, #0 + subs r2, #1 + cmp r0, #0 + bgt _080AE0AE +_080AE0C2: + pop {r4, r5, pc} + .align 2, 0 +_080AE0C4: .4byte gUnk_02024494 + + thumb_func_start sub_080AE0C8 +sub_080AE0C8: @ 0x080AE0C8 + push {r4, lr} + adds r4, r2, #0 + lsls r2, r0, #4 + movs r3, #0xa0 + lsls r3, r3, #1 + adds r2, r2, r3 + adds r3, r1, #0 + adds r3, #0x60 + strh r2, [r3] + adds r1, #0x26 + strb r0, [r1] + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + ldr r0, _080AE100 @ =gUnk_02024494 + adds r1, r1, r0 + ldrb r2, [r1, #2] + movs r0, #2 + ldrsb r0, [r1, r0] + cmp r0, #0 + blt _080AE0F6 + adds r0, r2, #1 + strb r0, [r1, #2] +_080AE0F6: + adds r0, r1, #0 + adds r1, r4, #0 + bl sub_080AE134 + pop {r4, pc} + .align 2, 0 +_080AE100: .4byte gUnk_02024494 + + thumb_func_start sub_080AE104 +sub_080AE104: @ 0x080AE104 + push {r4, r5, r6, lr} + adds r6, r1, #0 + adds r5, r2, #0 + lsls r4, r0, #1 + adds r4, r4, r0 + lsls r4, r4, #2 + ldr r0, _080AE130 @ =gUnk_02024494 + adds r4, r4, r0 + lsls r1, r5, #1 + adds r1, r1, r5 + lsls r1, r1, #2 + adds r0, r4, #0 + bl sub_0801D630 + strb r5, [r4, #1] + strh r6, [r4, #4] + adds r0, r4, #0 + movs r1, #4 + bl sub_080AE134 + pop {r4, r5, r6, pc} + .align 2, 0 +_080AE130: .4byte gUnk_02024494 + + thumb_func_start sub_080AE134 +sub_080AE134: @ 0x080AE134 + push {r4, r5, r6, lr} + adds r3, r0, #0 + adds r4, r1, #0 + movs r6, #0xf + adds r0, r4, #0 + ands r0, r6 + ldrb r2, [r3] + movs r5, #0x10 + rsbs r5, r5, #0 + adds r1, r5, #0 + ands r1, r2 + orrs r1, r0 + strb r1, [r3] + ldrb r2, [r3, #1] + cmp r4, #6 + beq _080AE156 + movs r4, #3 +_080AE156: + subs r2, #1 + cmp r2, #0 + ble _080AE170 + ands r4, r6 +_080AE15E: + adds r3, #0xc + ldrb r1, [r3] + adds r0, r5, #0 + ands r0, r1 + orrs r0, r4 + strb r0, [r3] + subs r2, #1 + cmp r2, #0 + bgt _080AE15E +_080AE170: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080AE174 +sub_080AE174: @ 0x080AE174 + push {r4, lr} + adds r4, r0, #0 + movs r1, #0 + movs r2, #4 + ldr r0, _080AE194 @ =gUnk_02024490 + adds r3, r0, #0 + adds r3, #0x30 +_080AE182: + ldrb r0, [r3, #4] + lsls r0, r0, #0x1c + cmp r0, #0 + bne _080AE198 + adds r1, #1 + cmp r4, r1 + bhi _080AE19A + b _080AE1BC + .align 2, 0 +_080AE194: .4byte gUnk_02024490 +_080AE198: + movs r1, #0 +_080AE19A: + adds r3, #0xc + adds r2, #1 + cmp r2, #0x2b + bls _080AE182 + movs r1, #0 + movs r2, #4 + ldr r0, _080AE1C4 @ =gUnk_02024490 + adds r3, r0, #0 + adds r3, #0x30 +_080AE1AC: + ldrb r0, [r3, #4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 + bhi _080AE1C8 + adds r1, #1 + cmp r4, r1 + bhi _080AE1CA +_080AE1BC: + subs r0, r2, r1 + adds r0, #1 + b _080AE1D4 + .align 2, 0 +_080AE1C4: .4byte gUnk_02024490 +_080AE1C8: + movs r1, #0 +_080AE1CA: + adds r3, #0xc + adds r2, #1 + cmp r2, #0x2b + bls _080AE1AC + movs r0, #0 +_080AE1D4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AE1D8 +sub_080AE1D8: @ 0x080AE1D8 + push {r4, r5, lr} + ldr r0, _080AE1E8 @ =gUnk_02024490 + ldrb r0, [r0] + cmp r0, #0 + beq _080AE216 + movs r5, #4 + b _080AE20A + .align 2, 0 +_080AE1E8: .4byte gUnk_02024490 +_080AE1EC: + bl sub_080AE3B8 + adds r4, r0, #0 + cmp r4, r5 + bhi _080AE208 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080AE218 + adds r0, r5, #0 + adds r1, r4, #0 + bl sub_080AE324 + adds r5, r4, #0 +_080AE208: + adds r5, #1 +_080AE20A: + adds r0, r5, #0 + bl sub_080AE384 + adds r5, r0, #0 + cmp r5, #0 + bne _080AE1EC +_080AE216: + pop {r4, r5, pc} + + thumb_func_start sub_080AE218 +sub_080AE218: @ 0x080AE218 + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + mov sl, r0 + mov r8, r1 + lsls r0, r1, #4 + movs r1, #0xa0 + lsls r1, r1, #1 + adds r0, r0, r1 + mov ip, r0 + mov r2, sl + lsls r0, r2, #4 + adds r3, r0, r1 + ldr r1, _080AE30C @ =gUnk_02024490 + lsls r0, r2, #1 + add r0, sl + lsls r0, r0, #2 + adds r0, r0, r1 + ldrb r0, [r0, #5] + lsls r0, r0, #4 + adds r7, r3, r0 + movs r4, #0 + ldr r6, _080AE310 @ =gUnk_020000C0 + mov sb, r6 + ldr r0, _080AE314 @ =gLinkEntity + adds r2, r0, #0 + adds r2, #0x26 + adds r5, r0, #0 +_080AE254: + ldr r0, [r5, #4] + cmp r0, #0 + beq _080AE276 + ldrb r0, [r2] + cmp sl, r0 + bne _080AE264 + mov r1, r8 + strb r1, [r2] +_080AE264: + ldrh r0, [r2, #0x3a] + cmp r3, r0 + bhi _080AE276 + cmp r7, r0 + bls _080AE276 + subs r0, r0, r3 + mov r6, ip + adds r1, r0, r6 + strh r1, [r2, #0x3a] +_080AE276: + adds r2, #0x88 + adds r5, #0x88 + adds r4, #1 + cmp r4, #0x4f + bls _080AE254 + movs r0, #0 +_080AE282: + movs r4, #0 + adds r1, r0, #1 + mov r8, r1 + lsls r5, r0, #6 +_080AE28A: + lsls r0, r4, #4 + add r0, sb + adds r2, r5, r0 + ldrb r1, [r2] + movs r0, #1 + ands r0, r1 + cmp r0, #0 + beq _080AE2B4 + movs r0, #2 + ands r0, r1 + cmp r0, #0 + bne _080AE2B4 + ldrh r1, [r2, #0xa] + cmp r3, r1 + bhi _080AE2B4 + cmp r7, r1 + bls _080AE2B4 + subs r0, r1, r3 + mov r6, ip + adds r1, r0, r6 + strh r1, [r2, #0xa] +_080AE2B4: + adds r4, #1 + cmp r4, #3 + bls _080AE28A + mov r0, r8 + cmp r0, #0x2f + bls _080AE282 + movs r4, #0 + ldr r0, _080AE318 @ =0xFFFFFC00 + mov sl, r0 + ldr r5, _080AE31C @ =gUnk_03000000 + adds r5, #0x24 + ldr r1, _080AE320 @ =0x000003FF + mov sb, r1 + movs r2, #1 + mov r8, r2 +_080AE2D2: + ldrh r2, [r5] + lsls r0, r2, #0x16 + lsrs r1, r0, #0x16 + cmp r3, r1 + bhi _080AE2F8 + cmp r7, r1 + bls _080AE2F8 + subs r0, r1, r3 + mov r6, ip + adds r1, r0, r6 + mov r0, sb + ands r1, r0 + mov r0, sl + ands r0, r2 + orrs r0, r1 + strh r0, [r5] + mov r2, r8 + ldr r1, _080AE31C @ =gUnk_03000000 + strb r2, [r1] +_080AE2F8: + adds r5, #8 + adds r4, #1 + cmp r4, #0x7f + bls _080AE2D2 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AE30C: .4byte gUnk_02024490 +_080AE310: .4byte gUnk_020000C0 +_080AE314: .4byte gLinkEntity +_080AE318: .4byte 0xFFFFFC00 +_080AE31C: .4byte gUnk_03000000 +_080AE320: .4byte 0x000003FF + + thumb_func_start sub_080AE324 +sub_080AE324: @ 0x080AE324 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r3, r1, #0 + ldr r2, _080AE380 @ =gUnk_02024490 + lsls r1, r0, #1 + adds r1, r1, r0 + lsls r1, r1, #2 + adds r5, r1, r2 + ldrb r4, [r5, #5] + subs r4, #1 + movs r0, #1 + rsbs r0, r0, #0 + cmp r4, r0 + beq _080AE372 + lsls r0, r3, #1 + adds r0, r0, r3 + lsls r0, r0, #2 + adds r0, r0, r2 + mov r8, r0 + adds r0, r1, #4 + adds r6, r0, r2 +_080AE350: + mov r0, r8 + adds r0, #4 + adds r1, r5, #4 + ldm r1!, {r2, r3, r7} + stm r0!, {r2, r3, r7} + adds r0, r6, #0 + movs r1, #0xc + bl sub_0801D630 + adds r6, #0xc + adds r5, #0xc + movs r0, #0xc + add r8, r0 + subs r4, #1 + subs r0, #0xd + cmp r4, r0 + bne _080AE350 +_080AE372: + ldr r1, _080AE380 @ =gUnk_02024490 + movs r0, #1 + strb r0, [r1, #3] + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + .align 2, 0 +_080AE380: .4byte gUnk_02024490 + + thumb_func_start sub_080AE384 +sub_080AE384: @ 0x080AE384 + push {lr} + adds r2, r0, #0 + cmp r2, #0x2a + bhi _080AE3B4 + ldr r1, _080AE3A8 @ =gUnk_02024490 + lsls r0, r2, #1 + adds r0, r0, r2 + lsls r0, r0, #2 + adds r1, r0, r1 +_080AE396: + ldrb r0, [r1, #4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #5 + bgt _080AE3AC + cmp r0, #4 + blt _080AE3AC + adds r0, r2, #0 + b _080AE3B6 + .align 2, 0 +_080AE3A8: .4byte gUnk_02024490 +_080AE3AC: + adds r1, #0xc + adds r2, #1 + cmp r2, #0x2a + bls _080AE396 +_080AE3B4: + movs r0, #0 +_080AE3B6: + pop {pc} + + thumb_func_start sub_080AE3B8 +sub_080AE3B8: @ 0x080AE3B8 + push {lr} + movs r1, #4 + ldr r0, _080AE3D4 @ =gUnk_02024490 + adds r2, r0, #0 + adds r2, #0x30 +_080AE3C2: + ldrb r0, [r2, #4] + lsls r0, r0, #0x1c + lsrs r0, r0, #0x1c + cmp r0, #1 + bgt _080AE3D8 + cmp r0, #0 + blt _080AE3D8 + adds r0, r1, #0 + b _080AE3E2 + .align 2, 0 +_080AE3D4: .4byte gUnk_02024490 +_080AE3D8: + adds r2, #0xc + adds r1, #1 + cmp r1, #0x2b + bls _080AE3C2 + movs r0, #0 +_080AE3E2: + pop {pc} + + thumb_func_start sub_080AE3E4 +sub_080AE3E4: @ 0x080AE3E4 + movs r0, #0 + bx lr + + thumb_func_start sub_080AE3E8 +sub_080AE3E8: @ 0x080AE3E8 + movs r0, #1 + bx lr + + thumb_func_start sub_080AE3EC +sub_080AE3EC: @ 0x080AE3EC + adds r2, r0, #0 + ldr r0, _080AE404 @ =gUnk_08133918 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE404: .4byte gUnk_08133918 + + thumb_func_start sub_080AE408 +sub_080AE408: @ 0x080AE408 + adds r2, r0, #0 + ldr r0, _080AE420 @ =gUnk_08133938 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE420: .4byte gUnk_08133938 + + thumb_func_start sub_080AE424 +sub_080AE424: @ 0x080AE424 + adds r2, r0, #0 + ldr r0, _080AE43C @ =gUnk_08133958 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE43C: .4byte gUnk_08133958 + + thumb_func_start sub_080AE440 +sub_080AE440: @ 0x080AE440 + adds r2, r0, #0 + ldr r0, _080AE458 @ =gUnk_08133978 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE458: .4byte gUnk_08133978 + + thumb_func_start sub_080AE45C +sub_080AE45C: @ 0x080AE45C + adds r2, r0, #0 + ldr r0, _080AE474 @ =gUnk_08133998 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE474: .4byte gUnk_08133998 + + thumb_func_start sub_080AE478 +sub_080AE478: @ 0x080AE478 + adds r2, r0, #0 + ldr r0, _080AE490 @ =gUnk_081339B8 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE490: .4byte gUnk_081339B8 + + thumb_func_start sub_080AE494 +sub_080AE494: @ 0x080AE494 + adds r2, r0, #0 + ldr r0, _080AE4AC @ =gUnk_081339D8 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE4AC: .4byte gUnk_081339D8 + + thumb_func_start sub_080AE4B0 +sub_080AE4B0: @ 0x080AE4B0 + adds r2, r0, #0 + ldr r0, _080AE4C8 @ =gUnk_081339F8 + movs r3, #0xf + ands r1, r3 + lsls r1, r1, #1 + adds r1, r1, r0 + ldrh r0, [r1] + ands r2, r3 + asrs r0, r2 + movs r1, #1 + ands r0, r1 + bx lr + .align 2, 0 +_080AE4C8: .4byte gUnk_081339F8 + + thumb_func_start sub_080AE4CC +sub_080AE4CC: @ 0x080AE4CC + push {r4, r5, r6, lr} + adds r6, r1, #0 + adds r5, r2, #0 + adds r4, r3, #0 + ldr r1, _080AE4FC @ =gUnk_03000BF0 + ldrh r2, [r1, #6] + subs r2, r6, r2 + asrs r2, r2, #4 + movs r3, #0x3f + ands r2, r3 + ldrh r1, [r1, #8] + subs r1, r5, r1 + asrs r1, r1, #4 + ands r1, r3 + lsls r1, r1, #6 + orrs r2, r1 + adds r0, r0, r2 + ldrb r3, [r0] + cmp r3, #0 + bne _080AE500 + cmp r4, #4 + beq _080AE588 + b _080AE516 + .align 2, 0 +_080AE4FC: .4byte gUnk_03000BF0 +_080AE500: + cmp r3, #0xf + bhi _080AE53E + ldr r2, _080AE51C @ =gUnk_08133A40 + lsls r1, r4, #1 + adds r0, r3, #1 + lsrs r0, r0, #4 + adds r1, r1, r0 + adds r1, r1, r2 + ldrb r0, [r1] + cmp r0, #0 + bne _080AE520 +_080AE516: + movs r0, #0 + b _080AE58A + .align 2, 0 +_080AE51C: .4byte gUnk_08133A40 +_080AE520: + cmp r0, #1 + beq _080AE588 + movs r0, #8 + ands r5, r0 + cmp r5, #0 + bne _080AE52E + lsrs r3, r3, #2 +_080AE52E: + ands r6, r0 + cmp r6, #0 + bne _080AE536 + lsrs r3, r3, #1 +_080AE536: + movs r0, #1 + ands r3, r0 + adds r0, r3, #0 + b _080AE58A +_080AE53E: + cmp r3, #0xff + bne _080AE558 + ldr r1, _080AE550 @ =gUnk_08133A18 + ldr r0, _080AE554 @ =gUnk_08133A5A + adds r0, r4, r0 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r1 + b _080AE572 + .align 2, 0 +_080AE550: .4byte gUnk_08133A18 +_080AE554: .4byte gUnk_08133A5A +_080AE558: + cmp r3, #0x6f + bhi _080AE588 + ldr r2, _080AE580 @ =gUnk_08133A18 + ldr r1, _080AE584 @ =gUnk_08133A67 + lsls r0, r4, #1 + adds r0, r0, r4 + lsls r0, r0, #5 + adds r0, r0, r3 + subs r0, #0x10 + adds r0, r0, r1 + ldrb r0, [r0] + lsls r0, r0, #2 + adds r0, r0, r2 +_080AE572: + ldr r2, [r0] + adds r0, r6, #0 + adds r1, r5, #0 + bl _call_via_r2 + b _080AE58A + .align 2, 0 +_080AE580: .4byte gUnk_08133A18 +_080AE584: .4byte gUnk_08133A67 +_080AE588: + movs r0, #1 +_080AE58A: + pop {r4, r5, r6, pc} + + thumb_func_start sub_080AE58C +sub_080AE58C: @ 0x080AE58C + push {r4, r5, r6, r7, lr} + mov r7, sl + mov r6, sb + mov r5, r8 + push {r5, r6, r7} + sub sp, #0x18 + str r0, [sp] + str r1, [sp, #4] + adds r4, r2, #0 + adds r0, #0x38 + ldrb r0, [r0] + bl sub_0808094C + ldr r1, _080AE624 @ =0x00002004 + adds r5, r0, r1 + ldr r2, [sp] + ldr r2, [r2, #0x48] + str r2, [sp, #8] + ldr r0, [sp] + movs r2, #0x2e + ldrsh r1, [r0, r2] + ldr r2, [sp, #8] + movs r0, #0 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + str r1, [sp, #0xc] + ldr r0, [sp] + movs r2, #0x32 + ldrsh r1, [r0, r2] + ldr r2, [sp, #8] + movs r0, #1 + ldrsb r0, [r2, r0] + adds r1, r1, r0 + mov sl, r1 + ldrb r0, [r2, #2] + mov sb, r0 + ldrb r1, [r2, #3] + mov r8, r1 + movs r0, #0xf + ldr r2, [sp, #4] + ands r0, r2 + cmp r0, #0 + beq _080AE65C + cmp r2, #0xf + bhi _080AE628 + ldr r7, [sp, #0xc] + add r7, sb + adds r0, r5, #0 + adds r1, r7, #0 + mov r2, sl + adds r3, r4, #0 + bl sub_080AE4CC + adds r6, r0, #0 + lsls r6, r6, #1 + mov r2, sl + add r2, r8 + adds r0, r5, #0 + adds r1, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + mov r0, sl + mov r1, r8 + subs r2, r0, r1 + adds r0, r5, #0 + adds r1, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #6 + b _080AE6D2 + .align 2, 0 +_080AE624: .4byte 0x00002004 +_080AE628: + ldr r2, [sp, #0xc] + mov r0, sb + subs r7, r2, r0 + adds r0, r5, #0 + adds r1, r7, #0 + mov r2, sl + adds r3, r4, #0 + bl sub_080AE4CC + adds r6, r0, #0 + lsls r6, r6, #1 + mov r2, sl + add r2, r8 + adds r0, r5, #0 + adds r1, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + mov r1, sl + mov r0, r8 + subs r2, r1, r0 + adds r0, r5, #0 + adds r1, r7, #0 + b _080AE6C8 +_080AE65C: + ldr r7, [sp, #0xc] + add r7, sb + adds r0, r5, #0 + adds r1, r7, #0 + mov r2, sl + adds r3, r4, #0 + bl sub_080AE4CC + adds r6, r0, #0 + lsls r6, r6, #1 + mov r1, sl + add r1, r8 + str r1, [sp, #0x10] + adds r0, r5, #0 + adds r1, r7, #0 + ldr r2, [sp, #0x10] + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + mov r2, sl + mov r0, r8 + subs r2, r2, r0 + mov r8, r2 + adds r0, r5, #0 + adds r1, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #2 + ldr r1, [sp, #0xc] + mov r2, sb + subs r7, r1, r2 + adds r0, r5, #0 + adds r1, r7, #0 + mov r2, sl + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + adds r0, r5, #0 + adds r1, r7, #0 + ldr r2, [sp, #0x10] + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + adds r0, r5, #0 + adds r1, r7, #0 + mov r2, r8 +_080AE6C8: + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #2 +_080AE6D2: + ldr r0, [sp, #8] + ldrb r0, [r0, #4] + mov sb, r0 + ldr r1, [sp, #8] + ldrb r1, [r1, #5] + mov r8, r1 + ldr r2, [sp, #4] + subs r2, #8 + str r2, [sp, #4] + movs r0, #0xf + ands r0, r2 + cmp r0, #0 + beq _080AE760 + cmp r2, #0xf + bhi _080AE72C + mov r7, sl + add r7, r8 + adds r0, r5, #0 + ldr r1, [sp, #0xc] + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + ldr r1, [sp, #0xc] + add r1, sb + adds r0, r5, #0 + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + ldr r0, [sp, #0xc] + mov r2, sb + subs r1, r0, r2 + adds r0, r5, #0 + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #5 + b _080AE7D6 +_080AE72C: + mov r0, sl + mov r1, r8 + subs r7, r0, r1 + lsls r6, r6, #4 + adds r0, r5, #0 + ldr r1, [sp, #0xc] + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + ldr r1, [sp, #0xc] + add r1, sb + adds r0, r5, #0 + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + ldr r2, [sp, #0xc] + mov r0, sb + subs r1, r2, r0 + adds r0, r5, #0 + b _080AE7CA +_080AE760: + mov r7, sl + add r7, r8 + adds r0, r5, #0 + ldr r1, [sp, #0xc] + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + ldr r1, [sp, #0xc] + add r1, sb + str r1, [sp, #0x14] + adds r0, r5, #0 + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + ldr r2, [sp, #0xc] + mov r0, sb + subs r2, r2, r0 + mov sb, r2 + adds r0, r5, #0 + mov r1, sb + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #2 + mov r1, sl + mov r2, r8 + subs r7, r1, r2 + adds r0, r5, #0 + ldr r1, [sp, #0xc] + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + adds r0, r5, #0 + ldr r1, [sp, #0x14] + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 + adds r0, r5, #0 + mov r1, sb +_080AE7CA: + adds r2, r7, #0 + adds r3, r4, #0 + bl sub_080AE4CC + orrs r6, r0 + lsls r6, r6, #1 +_080AE7D6: + ldr r0, [sp] + strh r6, [r0, #0x2a] + add sp, #0x18 + pop {r3, r4, r5} + mov r8, r3 + mov sb, r4 + mov sl, r5 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AE7E8 +sub_080AE7E8: @ 0x080AE7E8 + push {r4, r5, lr} + ldr r5, _080AE7FC @ =gUnk_08133F48 + lsls r4, r2, #2 + adds r4, r4, r5 + lsls r2, r2, #3 + ldr r4, [r4] + bl _call_via_r4 + pop {r4, r5, pc} + .align 2, 0 +_080AE7FC: .4byte gUnk_08133F48 + + thumb_func_start sub_080AE800 +sub_080AE800: @ 0x080AE800 + push {r4, r5, r6, r7, lr} + mov r7, r8 + push {r7} + adds r4, r0, #0 + adds r5, r1, #0 + adds r2, r3, #0 + movs r6, #0 + mov r8, r6 + ldrh r1, [r4, #0x2a] + movs r7, #0xe + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + beq _080AE89C + cmp r0, #2 + bne _080AE85C + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + bne _080AE8AE + lsls r6, r5, #8 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #4 + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _080AE8AE + ldr r0, _080AE858 @ =gUnk_080C9160 + adds r0, #0x80 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov r8, r1 + ldr r0, [r4, #0x30] + subs r0, r0, r1 + b _080AE8AC + .align 2, 0 +_080AE858: .4byte gUnk_080C9160 +_080AE85C: + cmp r0, #4 + bne _080AE8AE + movs r0, #0xe0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080AE8AE + lsls r6, r5, #8 + ldr r0, [r4, #0x2c] + subs r0, r0, r6 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #0x1c + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + adds r0, r7, #0 + ands r0, r1 + cmp r0, #0 + bne _080AE8AE + ldr r0, _080AE898 @ =gUnk_080C9160 + adds r0, #0x80 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov r8, r1 + ldr r0, [r4, #0x30] + subs r0, r0, r1 + b _080AE8AC + .align 2, 0 +_080AE898: .4byte gUnk_080C9160 +_080AE89C: + ldr r0, _080AE8C4 @ =gUnk_080C9160 + adds r0, #0x80 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x30] + subs r0, r0, r6 +_080AE8AC: + str r0, [r4, #0x30] +_080AE8AE: + ldr r1, _080AE8C8 @ =0x00003333 + adds r0, r6, r1 + ldr r1, _080AE8CC @ =0x00006665 + cmp r0, r1 + bhi _080AE8D0 + ldr r0, _080AE8C8 @ =0x00003333 + add r0, r8 + cmp r0, r1 + bhi _080AE8D0 + movs r0, #0 + b _080AE8D2 + .align 2, 0 +_080AE8C4: .4byte gUnk_080C9160 +_080AE8C8: .4byte 0x00003333 +_080AE8CC: .4byte 0x00006665 +_080AE8D0: + movs r0, #1 +_080AE8D2: + pop {r3} + mov r8, r3 + pop {r4, r5, r6, r7, pc} + + thumb_func_start sub_080AE8D8 +sub_080AE8D8: @ 0x080AE8D8 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + mov r8, r2 + mov sb, r3 + movs r7, #0 + movs r6, #0 + ldrh r0, [r4, #0x2a] + movs r1, #0xe + ands r1, r0 + mov ip, r1 + movs r2, #0xe0 + lsls r2, r2, #8 + ands r2, r0 + adds r3, r2, #0 + cmp r1, #0 + beq _080AE904 + cmp r2, #0 + bne _080AE99E +_080AE904: + orrs r1, r2 + cmp r1, #0 + bne _080AE928 + ldr r1, _080AE924 @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r7, r0, #0 + muls r7, r5, r7 + ldr r0, [r4, #0x30] + subs r0, r0, r7 + str r0, [r4, #0x30] + b _080AE98A + .align 2, 0 +_080AE924: .4byte gUnk_080C9160 +_080AE928: + mov r2, ip + cmp r2, #2 + bne _080AE942 + lsls r7, r5, #8 + ldr r0, [r4, #0x2c] + adds r0, r0, r7 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #4 + mov r2, sb + bl sub_080AE58C + b _080AE95C +_080AE942: + movs r0, #0x80 + lsls r0, r0, #7 + cmp r3, r0 + bne _080AE95C + lsls r7, r5, #8 + ldr r0, [r4, #0x30] + subs r0, r0, r7 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #4 + mov r2, sb + bl sub_080AE58C +_080AE95C: + ldrh r2, [r4, #0x2a] + movs r0, #0xe + ands r0, r2 + cmp r0, #0 + bne _080AE97E + ldr r1, _080AE9B4 @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x30] + subs r0, r0, r6 + str r0, [r4, #0x30] +_080AE97E: + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + bne _080AE99E + ldr r1, _080AE9B4 @ =gUnk_080C9160 +_080AE98A: + mov r2, r8 + lsls r0, r2, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 + str r0, [r4, #0x2c] +_080AE99E: + ldr r2, _080AE9B8 @ =0x00003333 + adds r0, r7, r2 + ldr r1, _080AE9BC @ =0x00006665 + cmp r0, r1 + bhi _080AE9C0 + ldr r2, _080AE9B8 @ =0x00003333 + adds r0, r6, r2 + cmp r0, r1 + bhi _080AE9C0 + movs r0, #0 + b _080AE9C2 + .align 2, 0 +_080AE9B4: .4byte gUnk_080C9160 +_080AE9B8: .4byte 0x00003333 +_080AE9BC: .4byte 0x00006665 +_080AE9C0: + movs r0, #1 +_080AE9C2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AE9CC +sub_080AE9CC: @ 0x080AE9CC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + movs r6, #0 + mov sb, r6 + ldrh r2, [r4, #0x2a] + movs r0, #0xe0 + lsls r0, r0, #8 + mov r8, r0 + mov r1, r8 + ands r1, r2 + cmp r1, #0 + beq _080AEA7C + movs r0, #0x80 + lsls r0, r0, #6 + cmp r1, r0 + bne _080AEA34 + movs r0, #0xe0 + ands r0, r2 + cmp r0, #0 + bne _080AEA90 + lsls r6, r5, #8 + ldr r0, [r4, #0x30] + adds r0, r0, r6 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #0xc + adds r2, r3, #0 + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + bne _080AEA90 + ldr r1, _080AEA30 @ =gUnk_080C9160 + lsls r0, r7, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov sb, r1 + ldr r0, [r4, #0x2c] + add r0, sb + b _080AEA8E + .align 2, 0 +_080AEA30: .4byte gUnk_080C9160 +_080AEA34: + movs r0, #0x80 + lsls r0, r0, #7 + cmp r1, r0 + bne _080AEA90 + movs r0, #0xe + ands r0, r2 + cmp r0, #0 + bne _080AEA90 + lsls r6, r5, #8 + ldr r0, [r4, #0x30] + subs r0, r0, r6 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #4 + adds r2, r3, #0 + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + bne _080AEA90 + ldr r1, _080AEA78 @ =gUnk_080C9160 + lsls r0, r7, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov sb, r1 + ldr r0, [r4, #0x2c] + add r0, sb + b _080AEA8E + .align 2, 0 +_080AEA78: .4byte gUnk_080C9160 +_080AEA7C: + ldr r1, _080AEAA8 @ =gUnk_080C9160 + lsls r0, r7, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 +_080AEA8E: + str r0, [r4, #0x2c] +_080AEA90: + ldr r1, _080AEAAC @ =0x00003333 + adds r0, r6, r1 + ldr r1, _080AEAB0 @ =0x00006665 + cmp r0, r1 + bhi _080AEAB4 + ldr r0, _080AEAAC @ =0x00003333 + add r0, sb + cmp r0, r1 + bhi _080AEAB4 + movs r0, #0 + b _080AEAB6 + .align 2, 0 +_080AEAA8: .4byte gUnk_080C9160 +_080AEAAC: .4byte 0x00003333 +_080AEAB0: .4byte 0x00006665 +_080AEAB4: + movs r0, #1 +_080AEAB6: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AEAC0 +sub_080AEAC0: @ 0x080AEAC0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + mov r8, r2 + mov sb, r3 + movs r7, #0 + movs r6, #0 + ldrh r0, [r4, #0x2a] + movs r1, #0xe0 + ands r1, r0 + mov ip, r1 + movs r2, #0xe0 + lsls r2, r2, #8 + ands r2, r0 + adds r3, r2, #0 + cmp r1, #0 + beq _080AEAEC + cmp r2, #0 + bne _080AEB86 +_080AEAEC: + orrs r1, r2 + cmp r1, #0 + bne _080AEB10 + ldr r1, _080AEB0C @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r7, r0, #0 + muls r7, r5, r7 + ldr r0, [r4, #0x30] + subs r0, r0, r7 + str r0, [r4, #0x30] + b _080AEB72 + .align 2, 0 +_080AEB0C: .4byte gUnk_080C9160 +_080AEB10: + mov r2, ip + cmp r2, #0x20 + bne _080AEB2A + lsls r7, r5, #8 + ldr r0, [r4, #0x2c] + adds r0, r0, r7 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #0xc + mov r2, sb + bl sub_080AE58C + b _080AEB44 +_080AEB2A: + movs r0, #0x80 + lsls r0, r0, #6 + cmp r3, r0 + bne _080AEB44 + lsls r7, r5, #8 + ldr r0, [r4, #0x30] + adds r0, r0, r7 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #0xc + mov r2, sb + bl sub_080AE58C +_080AEB44: + ldrh r2, [r4, #0x2a] + movs r0, #0xe0 + ands r0, r2 + cmp r0, #0 + bne _080AEB66 + ldr r1, _080AEB9C @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x30] + subs r0, r0, r6 + str r0, [r4, #0x30] +_080AEB66: + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r2 + cmp r0, #0 + bne _080AEB86 + ldr r1, _080AEB9C @ =gUnk_080C9160 +_080AEB72: + mov r2, r8 + lsls r0, r2, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 + str r0, [r4, #0x2c] +_080AEB86: + ldr r2, _080AEBA0 @ =0x00003333 + adds r0, r7, r2 + ldr r1, _080AEBA4 @ =0x00006665 + cmp r0, r1 + bhi _080AEBA8 + ldr r2, _080AEBA0 @ =0x00003333 + adds r0, r6, r2 + cmp r0, r1 + bhi _080AEBA8 + movs r0, #0 + b _080AEBAA + .align 2, 0 +_080AEB9C: .4byte gUnk_080C9160 +_080AEBA0: .4byte 0x00003333 +_080AEBA4: .4byte 0x00006665 +_080AEBA8: + movs r0, #1 +_080AEBAA: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AEBB4 +sub_080AEBB4: @ 0x080AEBB4 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + adds r2, r3, #0 + movs r6, #0 + mov sb, r6 + ldrh r1, [r4, #0x2a] + movs r0, #0xe0 + mov r8, r0 + ands r0, r1 + cmp r0, #0 + beq _080AEC64 + cmp r0, #0x20 + bne _080AEC1C + movs r0, #0xe0 + lsls r0, r0, #8 + ands r0, r1 + cmp r0, #0 + bne _080AEC7C + lsls r6, r5, #8 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #0xc + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + bne _080AEC7C + ldr r1, _080AEC18 @ =gUnk_080C9160 + adds r0, r7, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov sb, r1 + ldr r0, [r4, #0x30] + subs r0, r0, r1 + b _080AEC7A + .align 2, 0 +_080AEC18: .4byte gUnk_080C9160 +_080AEC1C: + cmp r0, #0x40 + bne _080AEC7C + movs r0, #0xe0 + lsls r0, r0, #4 + ands r0, r1 + cmp r0, #0 + bne _080AEC7C + lsls r6, r5, #8 + ldr r0, [r4, #0x2c] + subs r0, r0, r6 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #0x14 + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + bne _080AEC7C + ldr r1, _080AEC60 @ =gUnk_080C9160 + adds r0, r7, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov sb, r1 + ldr r0, [r4, #0x30] + subs r0, r0, r1 + b _080AEC7A + .align 2, 0 +_080AEC60: .4byte gUnk_080C9160 +_080AEC64: + ldr r1, _080AEC94 @ =gUnk_080C9160 + adds r0, r7, #0 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x30] + subs r0, r0, r6 +_080AEC7A: + str r0, [r4, #0x30] +_080AEC7C: + ldr r1, _080AEC98 @ =0x00003333 + adds r0, r6, r1 + ldr r1, _080AEC9C @ =0x00006665 + cmp r0, r1 + bhi _080AECA0 + ldr r0, _080AEC98 @ =0x00003333 + add r0, sb + cmp r0, r1 + bhi _080AECA0 + movs r0, #0 + b _080AECA2 + .align 2, 0 +_080AEC94: .4byte gUnk_080C9160 +_080AEC98: .4byte 0x00003333 +_080AEC9C: .4byte 0x00006665 +_080AECA0: + movs r0, #1 +_080AECA2: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AECAC +sub_080AECAC: @ 0x080AECAC + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + mov r8, r2 + mov sb, r3 + movs r7, #0 + movs r6, #0 + ldrh r0, [r4, #0x2a] + movs r1, #0xe0 + ands r1, r0 + mov ip, r1 + movs r2, #0xe0 + lsls r2, r2, #4 + ands r2, r0 + adds r3, r2, #0 + cmp r1, #0 + beq _080AECD8 + cmp r2, #0 + bne _080AED72 +_080AECD8: + orrs r1, r2 + cmp r1, #0 + bne _080AECFC + ldr r1, _080AECF8 @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r7, r0, #0 + muls r7, r5, r7 + ldr r0, [r4, #0x30] + subs r0, r0, r7 + str r0, [r4, #0x30] + b _080AED5E + .align 2, 0 +_080AECF8: .4byte gUnk_080C9160 +_080AECFC: + mov r2, ip + cmp r2, #0x40 + bne _080AED16 + lsls r7, r5, #8 + ldr r0, [r4, #0x2c] + subs r0, r0, r7 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #0x14 + mov r2, sb + bl sub_080AE58C + b _080AED30 +_080AED16: + movs r0, #0x80 + lsls r0, r0, #2 + cmp r3, r0 + bne _080AED30 + lsls r7, r5, #8 + ldr r0, [r4, #0x30] + adds r0, r0, r7 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #0x14 + mov r2, sb + bl sub_080AE58C +_080AED30: + ldrh r2, [r4, #0x2a] + movs r0, #0xe0 + ands r0, r2 + cmp r0, #0 + bne _080AED52 + ldr r1, _080AED88 @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x30] + subs r0, r0, r6 + str r0, [r4, #0x30] +_080AED52: + movs r0, #0xe0 + lsls r0, r0, #4 + ands r0, r2 + cmp r0, #0 + bne _080AED72 + ldr r1, _080AED88 @ =gUnk_080C9160 +_080AED5E: + mov r2, r8 + lsls r0, r2, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 + str r0, [r4, #0x2c] +_080AED72: + ldr r2, _080AED8C @ =0x00003333 + adds r0, r7, r2 + ldr r1, _080AED90 @ =0x00006665 + cmp r0, r1 + bhi _080AED94 + ldr r2, _080AED8C @ =0x00003333 + adds r0, r6, r2 + cmp r0, r1 + bhi _080AED94 + movs r0, #0 + b _080AED96 + .align 2, 0 +_080AED88: .4byte gUnk_080C9160 +_080AED8C: .4byte 0x00003333 +_080AED90: .4byte 0x00006665 +_080AED94: + movs r0, #1 +_080AED96: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AEDA0 +sub_080AEDA0: @ 0x080AEDA0 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + adds r7, r2, #0 + movs r6, #0 + mov sb, r6 + ldrh r2, [r4, #0x2a] + movs r0, #0xe0 + lsls r0, r0, #4 + mov r8, r0 + mov r1, r8 + ands r1, r2 + cmp r1, #0 + beq _080AEE50 + movs r0, #0x80 + lsls r0, r0, #2 + cmp r1, r0 + bne _080AEE08 + movs r0, #0xe0 + ands r0, r2 + cmp r0, #0 + bne _080AEE64 + lsls r6, r5, #8 + ldr r0, [r4, #0x30] + adds r0, r0, r6 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #0x1c + adds r2, r3, #0 + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + bne _080AEE64 + ldr r1, _080AEE04 @ =gUnk_080C9160 + lsls r0, r7, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov sb, r1 + ldr r0, [r4, #0x2c] + add r0, sb + b _080AEE62 + .align 2, 0 +_080AEE04: .4byte gUnk_080C9160 +_080AEE08: + movs r0, #0x80 + lsls r0, r0, #3 + cmp r1, r0 + bne _080AEE64 + movs r0, #0xe + ands r0, r2 + cmp r0, #0 + bne _080AEE64 + lsls r6, r5, #8 + ldr r0, [r4, #0x30] + subs r0, r0, r6 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #0x1c + adds r2, r3, #0 + bl sub_080AE58C + ldrh r1, [r4, #0x2a] + mov r0, r8 + ands r0, r1 + cmp r0, #0 + bne _080AEE64 + ldr r1, _080AEE4C @ =gUnk_080C9160 + lsls r0, r7, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r1, r0, #0 + muls r1, r5, r1 + mov sb, r1 + ldr r0, [r4, #0x2c] + add r0, sb + b _080AEE62 + .align 2, 0 +_080AEE4C: .4byte gUnk_080C9160 +_080AEE50: + ldr r1, _080AEE7C @ =gUnk_080C9160 + lsls r0, r7, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 +_080AEE62: + str r0, [r4, #0x2c] +_080AEE64: + ldr r1, _080AEE80 @ =0x00003333 + adds r0, r6, r1 + ldr r1, _080AEE84 @ =0x00006665 + cmp r0, r1 + bhi _080AEE88 + ldr r0, _080AEE80 @ =0x00003333 + add r0, sb + cmp r0, r1 + bhi _080AEE88 + movs r0, #0 + b _080AEE8A + .align 2, 0 +_080AEE7C: .4byte gUnk_080C9160 +_080AEE80: .4byte 0x00003333 +_080AEE84: .4byte 0x00006665 +_080AEE88: + movs r0, #1 +_080AEE8A: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AEE94 +sub_080AEE94: @ 0x080AEE94 + push {r4, r5, r6, r7, lr} + mov r7, sb + mov r6, r8 + push {r6, r7} + adds r4, r0, #0 + adds r5, r1, #0 + mov r8, r2 + mov sb, r3 + movs r7, #0 + movs r6, #0 + ldrh r0, [r4, #0x2a] + movs r1, #0xe + ands r1, r0 + mov ip, r1 + movs r2, #0xe0 + lsls r2, r2, #4 + ands r2, r0 + adds r3, r2, #0 + cmp r1, #0 + beq _080AEEC0 + cmp r2, #0 + bne _080AEF5A +_080AEEC0: + orrs r1, r2 + cmp r1, #0 + bne _080AEEE4 + ldr r1, _080AEEE0 @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r2, #0 + ldrsh r0, [r0, r2] + adds r7, r0, #0 + muls r7, r5, r7 + ldr r0, [r4, #0x30] + subs r0, r0, r7 + str r0, [r4, #0x30] + b _080AEF46 + .align 2, 0 +_080AEEE0: .4byte gUnk_080C9160 +_080AEEE4: + mov r2, ip + cmp r2, #4 + bne _080AEEFE + lsls r7, r5, #8 + ldr r0, [r4, #0x2c] + subs r0, r0, r7 + str r0, [r4, #0x2c] + adds r0, r4, #0 + movs r1, #0x1c + mov r2, sb + bl sub_080AE58C + b _080AEF18 +_080AEEFE: + movs r0, #0x80 + lsls r0, r0, #3 + cmp r3, r0 + bne _080AEF18 + lsls r7, r5, #8 + ldr r0, [r4, #0x30] + subs r0, r0, r7 + str r0, [r4, #0x30] + adds r0, r4, #0 + movs r1, #0x1c + mov r2, sb + bl sub_080AE58C +_080AEF18: + ldrh r2, [r4, #0x2a] + movs r0, #0xe + ands r0, r2 + cmp r0, #0 + bne _080AEF3A + ldr r1, _080AEF70 @ =gUnk_080C9160 + mov r0, r8 + adds r0, #0x40 + lsls r0, r0, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x30] + subs r0, r0, r6 + str r0, [r4, #0x30] +_080AEF3A: + movs r0, #0xe0 + lsls r0, r0, #4 + ands r0, r2 + cmp r0, #0 + bne _080AEF5A + ldr r1, _080AEF70 @ =gUnk_080C9160 +_080AEF46: + mov r2, r8 + lsls r0, r2, #1 + adds r0, r0, r1 + movs r1, #0 + ldrsh r0, [r0, r1] + adds r6, r0, #0 + muls r6, r5, r6 + ldr r0, [r4, #0x2c] + adds r0, r0, r6 + str r0, [r4, #0x2c] +_080AEF5A: + ldr r2, _080AEF74 @ =0x00003333 + adds r0, r7, r2 + ldr r1, _080AEF78 @ =0x00006665 + cmp r0, r1 + bhi _080AEF7C + ldr r2, _080AEF74 @ =0x00003333 + adds r0, r6, r2 + cmp r0, r1 + bhi _080AEF7C + movs r0, #0 + b _080AEF7E + .align 2, 0 +_080AEF70: .4byte gUnk_080C9160 +_080AEF74: .4byte 0x00003333 +_080AEF78: .4byte 0x00006665 +_080AEF7C: + movs r0, #1 +_080AEF7E: + pop {r3, r4} + mov r8, r3 + mov sb, r4 + pop {r4, r5, r6, r7, pc} + .align 2, 0 + + thumb_func_start sub_080AEF88 +sub_080AEF88: @ 0x080AEF88 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AEFB0 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #0 + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #0 + bl sub_080AE7E8 + b _080AEFB2 +_080AEFB0: + movs r0, #0 +_080AEFB2: + pop {r4, pc} + + thumb_func_start sub_080AEFB4 +sub_080AEFB4: @ 0x080AEFB4 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AEFDC + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #1 + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #1 + bl sub_080AE7E8 + b _080AEFDE +_080AEFDC: + movs r0, #0 +_080AEFDE: + pop {r4, pc} + + thumb_func_start sub_080AEFE0 +sub_080AEFE0: @ 0x080AEFE0 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AF008 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #2 + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #2 + bl sub_080AE7E8 + b _080AF00A +_080AF008: + movs r0, #0 +_080AF00A: + pop {r4, pc} + + thumb_func_start sub_080AF00C +sub_080AF00C: @ 0x080AF00C + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AF034 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #0xa + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #0xa + bl sub_080AE7E8 + b _080AF036 +_080AF034: + movs r0, #0 +_080AF036: + pop {r4, pc} + + thumb_func_start sub_080AF038 +sub_080AF038: @ 0x080AF038 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AF060 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #0xc + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #0xc + bl sub_080AE7E8 + b _080AF062 +_080AF060: + movs r0, #0 +_080AF062: + pop {r4, pc} + + thumb_func_start sub_080AF064 +sub_080AF064: @ 0x080AF064 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + movs r0, #0x80 + ands r0, r4 + cmp r0, #0 + bne _080AF08A + adds r0, r5, #0 + movs r2, #0 + bl sub_080AE58C + adds r0, r5, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #0 + bl sub_080AE7E8 + b _080AF08C +_080AF08A: + movs r0, #0 +_080AF08C: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080AF090 +sub_080AF090: @ 0x080AF090 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AF0C2 + adds r0, r4, #0 + bl sub_080AF0C8 + cmp r0, #0 + bne _080AF0C2 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #3 + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #3 + bl sub_080AE7E8 + b _080AF0C4 +_080AF0C2: + movs r0, #0 +_080AF0C4: + pop {r4, pc} + .align 2, 0 + + thumb_func_start sub_080AF0C8 +sub_080AF0C8: @ 0x080AF0C8 + push {r4, lr} + adds r4, r0, #0 + bl sub_080002A0 + cmp r0, #0x88 + beq _080AF10A + cmp r0, #0x88 + bhi _080AF0DE + cmp r0, #0x87 + beq _080AF0E8 + b _080AF130 +_080AF0DE: + cmp r0, #0x89 + beq _080AF11A + cmp r0, #0x8a + beq _080AF0F8 + b _080AF130 +_080AF0E8: + ldrb r0, [r4, #0x15] + adds r0, #7 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xf + bgt _080AF130 + movs r0, #0xe + b _080AF12A +_080AF0F8: + ldrb r0, [r4, #0x15] + subs r0, #1 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xf + bgt _080AF130 + movs r0, #0xe0 + lsls r0, r0, #8 + b _080AF12A +_080AF10A: + ldrb r0, [r4, #0x15] + subs r0, #9 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xf + bgt _080AF130 + movs r0, #0xe0 + b _080AF12A +_080AF11A: + ldrb r0, [r4, #0x15] + subs r0, #0x11 + movs r1, #0x1f + ands r0, r1 + cmp r0, #0xf + bgt _080AF130 + movs r0, #0xe0 + lsls r0, r0, #4 +_080AF12A: + strh r0, [r4, #0x2a] + movs r0, #1 + b _080AF132 +_080AF130: + movs r0, #0 +_080AF132: + pop {r4, pc} + + thumb_func_start sub_080AF134 +sub_080AF134: @ 0x080AF134 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AF15C + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #4 + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #4 + bl sub_080AE7E8 + b _080AF15E +_080AF15C: + movs r0, #0 +_080AF15E: + pop {r4, pc} + + thumb_func_start sub_080AF160 +sub_080AF160: @ 0x080AF160 + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AF188 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #5 + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #5 + bl sub_080AE7E8 + b _080AF18A +_080AF188: + movs r0, #0 +_080AF18A: + pop {r4, pc} + + thumb_func_start sub_080AF18C +sub_080AF18C: @ 0x080AF18C + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x42 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r5, r4, #0 + adds r5, #0x3e + ldrb r1, [r5] + adds r0, r4, #0 + movs r2, #2 + bl sub_080AE58C + adds r0, r4, #0 + adds r0, #0x46 + ldrh r1, [r0] + ldrb r2, [r5] + adds r0, r4, #0 + movs r3, #2 + bl sub_080AE7E8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AF1BC +sub_080AF1BC: @ 0x080AF1BC + push {r4, r5, lr} + adds r4, r0, #0 + adds r1, r4, #0 + adds r1, #0x42 + ldrb r0, [r1] + subs r0, #1 + strb r0, [r1] + adds r5, r4, #0 + adds r5, #0x3e + ldrb r1, [r5] + adds r0, r4, #0 + movs r2, #1 + bl sub_080AE58C + adds r0, r4, #0 + adds r0, #0x46 + ldrh r1, [r0] + ldrb r2, [r5] + adds r0, r4, #0 + movs r3, #1 + bl sub_080AE7E8 + pop {r4, r5, pc} + .align 2, 0 + + thumb_func_start sub_080AF1EC +sub_080AF1EC: @ 0x080AF1EC + push {r4, lr} + adds r4, r0, #0 + ldrb r1, [r4, #0x15] + movs r0, #0x80 + ands r0, r1 + cmp r0, #0 + bne _080AF214 + ldrb r1, [r4, #0x15] + adds r0, r4, #0 + movs r2, #6 + bl sub_080AE58C + movs r0, #0x24 + ldrsh r1, [r4, r0] + ldrb r2, [r4, #0x15] + adds r0, r4, #0 + movs r3, #6 + bl sub_080AE7E8 + b _080AF216 +_080AF214: + movs r0, #0 +_080AF216: + pop {r4, pc} + + thumb_func_start sub_080AF218 +sub_080AF218: @ 0x080AF218 + push {r4, r5, r6, lr} + adds r5, r0, #0 + adds r4, r1, #0 + adds r6, r2, #0 + movs r0, #0x80 + ands r0, r4 + cmp r0, #0 + bne _080AF23E + adds r0, r5, #0 + movs r2, #6 + bl sub_080AE58C + adds r0, r5, #0 + adds r1, r6, #0 + adds r2, r4, #0 + movs r3, #6 + bl sub_080AE7E8 + b _080AF240 +_080AF23E: + movs r0, #0 +_080AF240: + pop {r4, r5, r6, pc} + .align 2, 0 + + thumb_func_start sub_080AF244 +sub_080AF244: @ 0x080AF244 + push {lr} + movs r3, #2 + bl sub_080AE7E8 + pop {pc} + .align 2, 0 + + thumb_func_start sub_080AF250 +sub_080AF250: @ 0x080AF250 + push {r4, lr} + adds r4, r0, #0 + bl sub_08052E8C + adds r1, r0, #0 + ldr r0, _080AF26C @ =gUnk_02033A90 + ldr r2, _080AF270 @ =0x0000085C + adds r0, r0, r2 + str r1, [r0] + cmp r4, #0 + beq _080AF278 + ldr r0, _080AF274 @ =gUnk_08135190 + b _080AF27A + .align 2, 0 +_080AF26C: .4byte gUnk_02033A90 +_080AF270: .4byte 0x0000085C +_080AF274: .4byte gUnk_08135190 +_080AF278: + ldr r0, _080AF280 @ =gUnk_08135168 +_080AF27A: + str r0, [r1, #0x18] + pop {r4, pc} + .align 2, 0 +_080AF280: .4byte gUnk_08135168 + + thumb_func_start sub_080AF284 +sub_080AF284: @ 0x080AF284 + push {lr} + ldr r0, _080AF2AC @ =gUnk_03000BF0 + ldrh r1, [r0, #0x20] + subs r1, #0x50 + movs r0, #0x78 + movs r2, #0x78 + movs r3, #0x50 + bl sub_0800293E + cmp r0, #0 + beq _080AF2BC + bl sub_08052E8C + ldr r1, _080AF2B0 @ =gUnk_02033A90 + ldr r2, _080AF2B4 @ =0x0000085C + adds r1, r1, r2 + str r0, [r1] + ldr r1, _080AF2B8 @ =gUnk_08135048 + b _080AF2D4 + .align 2, 0 +_080AF2AC: .4byte gUnk_03000BF0 +_080AF2B0: .4byte gUnk_02033A90 +_080AF2B4: .4byte 0x0000085C +_080AF2B8: .4byte gUnk_08135048 +_080AF2BC: + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + beq _080AF2D6 + bl sub_08052E8C + ldr r1, _080AF2D8 @ =gUnk_02033A90 + ldr r2, _080AF2DC @ =0x0000085C + adds r1, r1, r2 + str r0, [r1] + ldr r1, _080AF2E0 @ =gUnk_08134FBC +_080AF2D4: + str r1, [r0, #0x18] +_080AF2D6: + pop {pc} + .align 2, 0 +_080AF2D8: .4byte gUnk_02033A90 +_080AF2DC: .4byte 0x0000085C +_080AF2E0: .4byte gUnk_08134FBC + + thumb_func_start sub_080AF2E4 +sub_080AF2E4: @ 0x080AF2E4 + push {lr} + movs r0, #6 + bl sub_0807CA84 + cmp r0, #0 + beq _080AF300 + bl sub_08052E8C + ldr r1, _080AF304 @ =gUnk_02033A90 + ldr r2, _080AF308 @ =0x0000085C + adds r1, r1, r2 + str r0, [r1] + ldr r1, _080AF30C @ =gUnk_0813A76C + str r1, [r0, #0x18] +_080AF300: + pop {pc} + .align 2, 0 +_080AF304: .4byte gUnk_02033A90 +_080AF308: .4byte 0x0000085C +_080AF30C: .4byte gUnk_0813A76C diff --git a/asm/createFx.s b/asm/createFx.s new file mode 100644 index 00000000..6c2b7289 --- /dev/null +++ b/asm/createFx.s @@ -0,0 +1,13 @@ + .include "asm/macros.inc" + .text + .syntax unified + + thumb_func_start CreateFX +CreateFX: @ 0x080A29AC + push {r4, lr} + adds r4, r1, #0 + adds r3, r2, #0 + movs r1, #0xf + adds r2, r4, #0 + bl sub_080A2988 + pop {r4, pc} \ No newline at end of file diff --git a/asm/mainLoop.s b/asm/mainLoop.s new file mode 100644 index 00000000..79d78bfc --- /dev/null +++ b/asm/mainLoop.s @@ -0,0 +1,170 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start MainLoop +MainLoop: @ 0x08055E6C + push {r4, r5, r6, lr} + bl sub_08055F70 + bl sub_080A3204 + bl sub_0805616C + bl sub_0807CE90 + bl sub_080560B8 + bl sub_08056208 + ldr r1, _08055EEC @ =gUnk_02000010 + movs r0, #0xc1 + strb r0, [r1, #4] + bl sub_0804FFE4 + ldr r1, _08055EF0 @ =0x040000D4 + movs r0, #0xa0 + lsls r0, r0, #0x13 + str r0, [r1] + ldr r0, _08055EF4 @ =gUnk_020176A0 + str r0, [r1, #4] + ldr r0, _08055EF8 @ =0x84000080 + str r0, [r1, #8] + ldr r0, [r1, #8] + movs r0, #1 + bl sub_0804FF84 + bl sub_08056418 + bl sub_080ADD30 + ldr r1, _08055EFC @ =gUnk_03001150 + ldr r0, _08055F00 @ =0x01234567 + str r0, [r1] + ldr r4, _08055F04 @ =gUnk_03001000 + adds r0, r4, #0 + movs r1, #0x10 + bl sub_0801D630 + movs r0, #0 + bl sub_08056010 + adds r6, r4, #0 +_08055EC8: + bl ReadKeyInput + bl sub_08055FF4 + cmp r0, #0 + beq _08055ED8 + bl sub_080560A8 +_08055ED8: + ldrb r0, [r6, #1] + ldr r1, _08055F04 @ =gUnk_03001000 + cmp r0, #0 + beq _08055F08 + cmp r0, #1 + bne _08055F08 + bl sub_08056260 + b _08055F64 + .align 2, 0 +_08055EEC: .4byte gUnk_02000010 +_08055EF0: .4byte 0x040000D4 +_08055EF4: .4byte gUnk_020176A0 +_08055EF8: .4byte 0x84000080 +_08055EFC: .4byte gUnk_03001150 +_08055F00: .4byte 0x01234567 +_08055F04: .4byte gUnk_03001000 +_08055F08: + ldrb r0, [r1, #8] + cmp r0, #0 + beq _08055F22 + ldr r4, _08055F34 @ =gUnk_03001000 + movs r5, #0xff +_08055F12: + bl VBlankIntrWait + ldrb r0, [r4, #8] + subs r0, #1 + strb r0, [r4, #8] + ands r0, r5 + cmp r0, #0 + bne _08055F12 +_08055F22: + ldr r1, _08055F34 @ =gUnk_03001000 + ldrb r0, [r1, #9] + cmp r0, #0 + beq _08055F44 + subs r0, #1 + strb r0, [r1, #9] + ldrb r4, [r1, #0xa] + b _08055F3C + .align 2, 0 +_08055F34: .4byte gUnk_03001000 +_08055F38: + bl VBlankIntrWait +_08055F3C: + adds r0, r4, #0 + subs r4, #1 + cmp r0, #0 + bgt _08055F38 +_08055F44: + ldrh r0, [r6, #0xc] + adds r0, #1 + strh r0, [r6, #0xc] + ldr r1, _08055F6C @ =gUnk_08100CBC + ldrb r0, [r6, #2] + lsls r0, r0, #2 + adds r0, r0, r1 + ldr r0, [r0] + bl _call_via_r0 + bl sub_08056458 + bl sub_08050154 + bl sub_080A3480 +_08055F64: + bl sub_08016E78 + b _08055EC8 + .align 2, 0 +_08055F6C: .4byte gUnk_08100CBC + + thumb_func_start sub_08055F70 +sub_08055F70: @ 0x08055F70 + push {lr} + bl sub_08056020 + movs r0, #0xfe + bl RegisterRamReset + movs r1, #0xa0 + lsls r1, r1, #0x13 + ldr r2, _08055FC8 @ =0x00007FFF + adds r0, r2, #0 + strh r0, [r1] + ldr r1, _08055FCC @ =0x04000204 + ldr r2, _08055FD0 @ =0x00004014 + adds r0, r2, #0 + strh r0, [r1] + ldr r2, _08055FD4 @ =0x0003FFD0 + ldr r0, _08055FD8 @ =gUnk_02000030 + adds r1, r2, #0 + bl sub_0801D630 + ldr r0, _08055FDC @ =gUnk_080B2CD8 + ldr r3, _08055FE0 @ =sub_080B197C + subs r2, r0, r3 + cmp r2, #0 + beq _08055FAA + ldr r1, _08055FE4 @ =gUnk_030056F0 + adds r0, r3, #0 + bl sub_0801D66C +_08055FAA: + ldr r0, _08055FE8 @ =gUnk_080B2CD8 + ldr r3, _08055FEC @ =gUnk_080B2CD8 + subs r2, r0, r3 + cmp r2, #0 + beq _08055FBC + ldr r1, _08055FF0 @ =gUnk_02038560 + adds r0, r3, #0 + bl sub_0801D66C +_08055FBC: + movs r0, #0 + bl sub_0801DA90 + bl sub_08016B34 + pop {pc} + .align 2, 0 +_08055FC8: .4byte 0x00007FFF +_08055FCC: .4byte 0x04000204 +_08055FD0: .4byte 0x00004014 +_08055FD4: .4byte 0x0003FFD0 +_08055FD8: .4byte gUnk_02000030 +_08055FDC: .4byte gUnk_080B2CD8 +_08055FE0: .4byte sub_080B197C +_08055FE4: .4byte gUnk_030056F0 +_08055FE8: .4byte gUnk_080B2CD8 +_08055FEC: .4byte gUnk_080B2CD8 +_08055FF0: .4byte gUnk_02038560 diff --git a/asm/readKeyInput.s b/asm/readKeyInput.s new file mode 100644 index 00000000..eca09890 --- /dev/null +++ b/asm/readKeyInput.s @@ -0,0 +1,21 @@ + .include "asm/macros.inc" + .include "constants/constants.inc" + + .syntax unified + + .text + + thumb_func_start ReadKeyInput +ReadKeyInput: @ 0x0801D6C0 + push {lr} + ldr r0, _0801D6D4 @ =0x04000130 + ldrh r0, [r0] + ldr r1, _0801D6D8 @ =0x000003FF + bics r1, r0 + ldr r0, _0801D6DC @ =gUnk_03000FF0 + bl sub_0801D6E0 + pop {pc} + .align 2, 0 +_0801D6D4: .4byte 0x04000130 +_0801D6D8: .4byte 0x000003FF +_0801D6DC: .4byte gUnk_03000FF0 diff --git a/include/New Text Document.txt b/include/New Text Document.txt new file mode 100644 index 00000000..9b77f912 --- /dev/null +++ b/include/New Text Document.txt @@ -0,0 +1 @@ +void LoadRoom(void); \ No newline at end of file diff --git a/include/entity.h b/include/entity.h new file mode 100644 index 00000000..83d86165 --- /dev/null +++ b/include/entity.h @@ -0,0 +1,93 @@ +struct Entity { + void *field_0x0; + struct Entity * field_0x4; + u8 type; + u8 subtype; + u8 parameter1; + u8 parameter2; + u8 action; + u8 previousActionFlag; + u8 parameter3; + u8 field_0xf; + u8 flags; + u8 scriptedScene; + s16 spriteTileSize; + u8 animationState; + u8 direction; + u8 possibleBool; + u8 field_0x17; + u8 shadowSize; + u8 spriteOrder; + u8 palette; + u8 spriteOrientation[3]; + u16 spritePointer; + uint field_0x20; + s16 nonPlanarMovement; + u8 spriteAnimation[3]; + u8 ticks; + u16 collisions; + s16 xPosSubPixel; + s16 xPos; + s16 yPosSubPixel; + s16 yPos; + u8 field_0x34; + u8 field_0x35; + s16 height; + u8 collisionLayer; + u8 field_0x39; + u8 field_0x3a; + u8 flags2; + u8 field_0x3c; + u8 field_0x3d; + u8 field_0x3e; + u8 damageType; + u8 field_0x40; + u8 bitfield; + u8 field_0x42; + u8 field_0x43; + u8 field_0x44; + u8 currentHealth; + s16 field_0x46; + void * boundingBox; + u8 field_0x4c; + u8 field_0x4d; + u8 field_0x4e; + u8 field_0x4f; + void * spritePtr; + struct Entity * attachedEntity; + u8 field_0x58; + u8 field_0x59; + u8 frames; + u8 spriteOrientation2; + u8 field_0x5c; + u8 field_0x5d; + u8 field_0x5e; + u8 field_0x5f; + u16 spriteVramOffset; + u8 spriteRenderPositionOffset; + u8 field_0x63; + u8 * field_0x64; + struct Entity * otherEntity; + u8 field_0x6c; + u8 field_0x6d; + u8 field_0x6e; + u8 field_0x6f; + u8 field_0x70; + u8 field_0x71; + u8 field_0x72; + u8 field_0x73; + struct Entity * heldObjectPtr; + u8 field_0x78; + u8 field_0x79; + u8 field_0x7a; + u8 field_0x7b; + u8 field_0x7c; + u8 field_0x7d; + u8 field_0x7e; + u8 field_0x7f; + u8 field_0x80; + u8 field_0x81; + u8 field_0x82; + u8 field_0x83; + int * field_0x84; +}; \ No newline at end of file diff --git a/src/loadRoom.c b/src/loadRoom.c new file mode 100644 index 00000000..63721fcd --- /dev/null +++ b/src/loadRoom.c @@ -0,0 +1,32 @@ +#include "global.h" +/* called when loading any room */ + + extern void sub_0804ADDC(); + extern s32 GetProgressFlag(u32 flag); + extern s32* sub_0804B128(u8 unk); + extern void sub_0804B058(s32 *unk); + extern void sub_0804B1AC(); + extern void sub_0801AC98(); + +void LoadRoom(void) + +{ + + s32 iVar1; + s32 *dat; + + sub_0804B128(1); + sub_0804ADDC(); + sub_0804B128(0); + sub_0804ADDC(); + + iVar1 = GetProgressFlag(21); + if (iVar1 != 0) { + dat = sub_0804B128(2); + sub_0804B058(dat); + } + sub_0804B128(3); + sub_0804B1AC(); + sub_0801AC98(); + return; +} \ No newline at end of file