.include "asm/macros.inc" .include "constants/constants.inc" .syntax unified .text 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 @ =gRoomControls 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 PlaySFX 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 gRoomControls _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 PositionRelative 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 @ =gRoomControls 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 UnfreezeTime 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 CreateObject 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 gRoomControls _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 CreateBird CreateBird: @ 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 CreateObject 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 CreateObject adds r4, r0, #0 cmp r4, #0 beq _0809D77C ldr r1, _0809D774 @ =gRoomControls 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 CreateObject 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 gRoomControls _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 Random 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 UpdateSpriteOrderAndFlip 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 UpdateSpriteOrderAndFlip ldr r1, [r6] cmp r1, #0 beq _0809D8AC adds r0, r5, #0 bl _call_via_r1 _0809D8AC: movs r0, #0x6e bl PlaySFX _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 @ =gLinkState 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 gLinkState _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 PlaySFX 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 @ =gRoomControls 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 gRoomControls 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 UpdateSpriteOrderAndFlip 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 PositionRelative _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 PlaySFX 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 UpdateSpriteOrderAndFlip _0809DC54: movs r0, #0x6e bl PlaySFX _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 UpdateSpriteOrderAndFlip 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 PlaySFX _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 PlaySFX _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 PlaySFX _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 @ =gRoomControls 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 gRoomControls 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 @ =gRoomControls 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 UpdateSpriteOrderAndFlip 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 CreateObject 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 PositionRelative 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 gRoomControls _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 PlaySFX ldr r5, [r4, #0x54] cmp r5, #0 beq _0809DF98 ldrb r1, [r4, #0xb] adds r1, #2 movs r0, #0x96 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0809DF52 adds r0, r5, #0 bl CopyPosition _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 PlaySFX ldr r0, _0809DF90 @ =0x000001F3 bl PlaySFX 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 PlaySFX _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 Random 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 CreateObject 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 CopyPosition 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 PlaySFX 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 PlaySFX 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 @ =gLinkState movs r0, #0x80 lsls r0, r0, #1 strh r0, [r1, #8] pop {r4, pc} .align 2, 0 _0809E230: .4byte gLinkEntity _0809E234: .4byte gLinkState 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 @ =gRoomControls 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 gRoomControls _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 CreateObject adds r4, r0, #0 adds r0, r6, #0 adds r1, r4, #0 bl CopyPosition adds r5, #1 movs r0, #0x9a movs r1, #0xff adds r2, r5, #0 bl CreateObject adds r4, r0, #0 movs r3, #0x80 lsls r3, r3, #9 adds r0, r6, #0 adds r1, r4, #0 movs r2, #0 bl PositionRelative 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 CreateObject adds r4, r0, #0 adds r0, r6, #0 adds r1, r4, #0 bl CopyPosition b _0809E5C4 .align 2, 0 _0809E5A0: .4byte gUnk_03003DBC _0809E5A4: adds r2, r5, #1 movs r0, #0x9a movs r1, #0xff bl CreateObject 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 CopyPosition _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 @ =gRoomControls 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 gRoomControls _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 PositionRelative 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 UpdateSpriteOrderAndFlip 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 PlaySFX 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 UpdateSpriteOrderAndFlip _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 @ =gRoomControls 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 gRoomControls 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 @ =gRoomControls 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 gRoomControls 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 UpdateSpriteOrderAndFlip 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 @ =gRoomControls 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 gRoomControls 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 UpdateSpriteOrderAndFlip 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 @ =gRoomControls 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 UpdateSpriteOrderAndFlip movs r0, #0x9e movs r1, #1 movs r2, #0 bl CreateObject adds r1, r0, #0 cmp r1, #0 beq _0809ED14 str r1, [r6, #0x54] adds r0, r6, #0 bl CopyPosition b _0809ED14 .align 2, 0 _0809ECF4: .4byte gUnk_080FD168 _0809ECF8: .4byte gRoomControls _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 UpdateSpriteOrderAndFlip _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 CreateObject 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 PositionRelative _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 @ =gRoomControls 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 gRoomControls 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 PositionRelative 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 @ =gRoomControls 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 gRoomControls 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 Random 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 PlaySFX 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 PlaySFX _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 Random 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 @ =gRoomControls 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 gRoomControls _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 PlaySFX movs r1, #0x2e ldrsh r0, [r4, r1] ldr r2, _0809F58C @ =gRoomControls 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 gRoomControls _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 PlaySFX movs r0, #0x24 bl sub_0807CD04 ldr r0, _0809F5D8 @ =gUnk_080DD750 bl LoadRoomEntityList 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 @ =gRoomControls str r4, [r0, #0x30] _0809F614: pop {r4, pc} .align 2, 0 _0809F618: .4byte gRoomControls thumb_func_start sub_0809F61C sub_0809F61C: @ 0x0809F61C push {r4, r5, lr} adds r4, r0, #0 ldr r5, _0809F678 @ =gRoomControls 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 PlaySFX 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 gRoomControls _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 @ =gRoomControls ldr r0, _0809F6C8 @ =gLinkEntity str r0, [r1, #0x30] movs r0, #0x73 bl PlaySFX _0809F6C0: pop {pc} .align 2, 0 _0809F6C4: .4byte gRoomControls _0809F6C8: .4byte gLinkEntity thumb_func_start sub_0809F6CC sub_0809F6CC: @ 0x0809F6CC push {lr} adds r2, r0, #0 ldr r0, _0809F6F8 @ =gRoomControls 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 @ =gLinkState adds r0, #0x8b movs r1, #1 strb r1, [r0] bl sub_0805E780 _0809F6F4: pop {pc} .align 2, 0 _0809F6F8: .4byte gRoomControls _0809F6FC: .4byte gLinkState 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 Random 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 Random 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 CreateObject adds r4, r0, #0 cmp r4, #0 beq _0809F7B6 adds r0, r5, #0 adds r1, r4, #0 bl sub_0806FA30 bl Random 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 Random 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 PlaySFX _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 UpdateSpriteOrderAndFlip 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 CopyPosition 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 @ =gLinkState 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 gLinkState _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 @ =gLinkState 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 gLinkState _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 Random 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 CopyPosition 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 CopyPosition 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 PlaySFX 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 PlaySFX 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 PlaySFX _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 @ =gRoomControls 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 gRoomControls 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 CopyPosition ldr r2, _080A01BC @ =gLinkState 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 gLinkState 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 @ =gLCDControls 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 @ =gLCDControls 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 CreateObjectWithParent 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 gLCDControls _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 @ =gLCDControls 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 DoFade movs r0, #0xf8 bl PlaySFX movs r0, #0xa4 lsls r0, r0, #1 bl PlaySFX movs r0, #5 bl PlaySFX ldr r0, _080A0348 @ =0x80110000 bl PlaySFX _080A0342: pop {r4, pc} .align 2, 0 _080A0344: .4byte gLCDControls _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 TextboxNoOverlap _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 @ =gTextBox ldrb r1, [r0] movs r0, #0x7f ands r0, r1 cmp r0, #0 bne _080A041A movs r0, #0x5a bl sub_0805E510 ldr r0, _080A0420 @ =gLinkState 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 gTextBox _080A0420: .4byte gLinkState 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 PlaySFX _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 @ =gLCDControls adds r0, #0x68 strh r4, [r0] pop {r4, r5, pc} .align 2, 0 _080A054C: .4byte 0x0000FFFF _080A0550: .4byte gLCDControls 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 UpdateSpriteOrderAndFlip _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 PositionRelative b _080A0666 _080A065E: ldr r0, [r4, #0x50] adds r1, r4, #0 bl CopyPosition _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 @ =gRoomControls 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 gRoomControls 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 PlaySFX _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 UpdateSpriteOrderAndFlip 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 PlaySFX _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 @ =gRoomControls 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 gRoomControls 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 PlaySFX _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 CreateObject adds r4, r0, #0 cmp r4, #0 beq _080A0C40 adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition 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 CreateObject adds r4, r0, #0 cmp r4, #0 beq _080A0C92 adds r0, r5, #0 adds r1, r4, #0 bl CopyPosition 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 CreateObject 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 CreateObject 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 Random 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 Random 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 @ =gRoomControls str r1, [r0, #0x30] ldr r0, _080A0E4C @ =gLinkEntity ldr r3, _080A0E50 @ =0xFFD80000 movs r2, #0 bl PositionRelative pop {pc} .align 2, 0 _080A0E48: .4byte gRoomControls _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 @ =gRoomControls 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 gRoomControls _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 PlaySFX 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 PlaySFX 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 PlaySFX 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 @ =gRoomControls 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 gRoomControls _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 PlaySFX 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 @ =gLinkState adds r0, #0x8b strb r1, [r0] bl UnfreezeTime _080A11BA: pop {r4, pc} .align 2, 0 _080A11BC: .4byte gLinkState 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 @ =gRoomControls 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 PlaySFX ldr r3, [sp] b _080A132E .align 2, 0 _080A12F8: .4byte gRoomControls _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 @ =gLinkState 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 PlaySFX bl sub_08050384 b _080A1376 .align 2, 0 _080A136C: .4byte gLinkState _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 TextboxTryNoOverlap movs r0, #1 b _080A13E0 .align 2, 0 _080A13D4: .4byte 0x0000300C _080A13D8: ldr r0, _080A13E4 @ =0x00003005 bl TextboxTryNoOverlap 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 ModRupees ldr r0, _080A14A0 @ =0x00003007 adds r1, r5, #0 bl TextboxNoOverlap ldr r1, _080A14A4 @ =gTextBox 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 gTextBox 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 CreateObject 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 @ =gRoomControls 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 gRoomControls _080A15BC: movs r0, #0 ldrsh r1, [r5, r0] subs r1, #1 movs r0, #0x41 bl CreateEnemy 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 TextboxTryNoOverlap ldr r4, _080A1640 @ =gTextBox 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 gTextBox _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 CreateEnemy adds r1, r0, #0 str r7, [r1, #0x64] str r1, [r7, #4] movs r0, #0x5d movs r1, #0 bl CreateEnemy adds r1, r0, #0 ldr r4, _080A182C @ =gRoomControls 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 CreateEnemy 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 @ =gLCDControls 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 @ =gLinkState 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 PlaySFX 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 gRoomControls _080A1830: .4byte gLCDControls _080A1834: .4byte 0x00001E07 _080A1838: .4byte gUnk_030010A0 _080A183C: .4byte gLinkState _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 @ =gLinkState ldr r1, _080A1898 @ =gRoomControls 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 gLinkState _080A1898: .4byte gRoomControls 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 PlaySFX movs r0, #0x96 movs r1, #1 bl sub_08080964 _080A18E6: ldr r2, _080A1904 @ =gLinkState ldr r1, _080A1908 @ =gRoomControls 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 gLinkState _080A1908: .4byte gRoomControls 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 @ =gLinkState ldr r1, _080A1978 @ =gRoomControls 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 gLinkState _080A1978: .4byte gRoomControls _080A197C: ldr r1, _080A198C @ =gLinkState 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 gLinkState 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 PlaySFX movs r0, #0x96 movs r1, #1 bl sub_08080964 _080A19D6: ldr r2, _080A19F4 @ =gLinkState ldr r1, _080A19F8 @ =gRoomControls 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 gLinkState _080A19F8: .4byte gRoomControls 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 @ =gLinkState ldr r1, _080A1A68 @ =gRoomControls 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 gLinkState _080A1A68: .4byte gRoomControls _080A1A6C: ldr r1, _080A1A7C @ =gLinkState 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 gLinkState 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 PlaySFX movs r0, #0x96 movs r1, #1 bl sub_08080964 _080A1AC0: ldr r2, _080A1AE0 @ =gLinkState ldr r1, _080A1AE4 @ =gRoomControls 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 gLinkState _080A1AE4: .4byte gRoomControls 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 @ =gLinkState ldr r1, _080A1B48 @ =gRoomControls 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 gLinkState _080A1B48: .4byte gRoomControls 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 PlaySFX 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 @ =gLinkState ldr r0, [r2, #0x30] ldr r1, _080A1BFC @ =0xFFFDFFFF ands r0, r1 str r0, [r2, #0x30] adds r0, r3, #0 adds r1, r4, #0 bl CopyPosition ldr r0, _080A1C00 @ =gRoomControls str r4, [r0, #0x30] movs r0, #2 bl sub_08078A90 _080A1BD0: ldr r2, _080A1BF8 @ =gLinkState ldr r1, _080A1C00 @ =gRoomControls 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 gLinkState _080A1BFC: .4byte 0xFFFDFFFF _080A1C00: .4byte gRoomControls 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 DoFade 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 PlaySFX movs r0, #0xb4 lsls r0, r0, #2 movs r1, #2 bl sub_08080964 b _080A1C9A _080A1C8A: movs r0, #0x94 lsls r0, r0, #1 bl PlaySFX 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 @ =gLCDControls 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 gLCDControls 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 Random ldr r3, _080A1ECC @ =gRoomControls 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 UpdateSpriteOrderAndFlip _080A1ECA: pop {r4, r5, pc} .align 2, 0 _080A1ECC: .4byte gRoomControls 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 @ =gRoomControls 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 CreateEnemy 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 gRoomControls _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 CreateObject 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 Random ldr r3, _080A209C @ =gRoomControls 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 UpdateSpriteOrderAndFlip _080A2066: adds r4, r5, #0 adds r4, #0x7b ldrb r0, [r4] cmp r0, #0 beq _080A20B4 ldr r0, _080A20A0 @ =gLinkEntity ldr r2, _080A209C @ =gRoomControls 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 gRoomControls _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 @ =gLinkState 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 gLinkState _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 PlaySFX 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 @ =gRoomControls 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 gRoomControls _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 @ =gLCDControls 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 @ =gRoomControls 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 gLCDControls _080A2258: .4byte gRoomControls 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 CreateObject 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 CreateObject movs r0, #0xbd movs r1, #4 movs r2, #0 bl CreateObject _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 Random 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 Random 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 PositionRelative 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 CreateObjectWithParent 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 CreateObjectWithParent 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 UnfreezeTime 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 @ =gLinkState 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 gLinkState _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 @ =gTextBox 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 @ =gLinkState 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 gTextBox _080A2768: .4byte gLinkState 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 CopyPosition 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 @ =gLinkState 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 gLinkState